Buscar datos de unión de compuestos en bindingDB.

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}")





Última modificación: