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 requests
import csv
# URL de la API de BindingDB
url = "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 GET
response = requests.get(url)
# Verificar si la solicitud fue exitosa
if 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}")