Buscar datos de unión de compuestos en bindingDB usando los códigos UNIPROT de las proteínas que nos interesen y con afinidad menor de 10,000 nM.
import requestsimport csv# URL de la API de BindingDBurl = "https://bindingdb.org/axis2/services/BDBService/getLigandsByUniprots?uniprot=P17763,P27909,P33478,P07564,P14337,P14340,P29990,P29991,P27915,Q5UB51,Q6YMS3,Q6YMS4,Q99D35,P09866,Q2YHF0,Q2YHF2,Q58HT7,Q5UCB8&cutoff=10000&response=application/json"output_file = r"D:\aaa\ligands_bindingdb-DENV-1-2-3-4.txt"# Realizar la solicitud HTTP GETresponse = requests.get(url)# Verificar si la solicitud fue exitosaif response.status_code == 200: try: # Parsear la respuesta JSON data = response.json() affinities = data.get("getLigandsByUniprotsResponse", {}).get("affinities", []) if affinities: # Definir las columnas de salida columns = ["query", "monomerid", "smile", "affinity_type", "affinity", "pmid", "doi"] # Escribir los datos en un archivo TSV with open(output_file, "w", newline="", encoding="utf-8") as file: writer = csv.DictWriter(file, fieldnames=columns, delimiter="\t") writer.writeheader() writer.writerows(affinities) print(f"Datos guardados en el archivo: {output_file}") else: print("No se encontraron datos en el campo 'affinities'.") except ValueError as e: print("Error al procesar la respuesta JSON:", e)else: print(f"Error al acceder a la URL. Código de estado: {response.status_code}")