Spaces:
Sleeping
Sleeping
File size: 2,823 Bytes
9bee6a4 117cd77 9bee6a4 117cd77 9bee6a4 117cd77 9bee6a4 117cd77 ef76eaa 117cd77 ef76eaa 117cd77 ef76eaa 117cd77 ef76eaa 117cd77 ef76eaa 117cd77 ef76eaa 117cd77 ef76eaa 117cd77 ef76eaa 117cd77 9bee6a4 117cd77 ef76eaa 117cd77 ef76eaa 117cd77 ef76eaa 117cd77 ef76eaa 117cd77 9bee6a4 ef76eaa 117cd77 ef76eaa 117cd77 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# genesis/api_clients/ncbi_api.py
import os
import requests
from urllib.parse import urlencode
NCBI_API_KEY = os.getenv("NCBI_API_KEY")
NCBI_BASE_URL = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/"
if not NCBI_API_KEY:
raise ValueError("Missing NCBI_API_KEY in environment variables")
def _ncbi_request(endpoint: str, params: dict):
"""
Generic helper for calling NCBI E-Utilities API.
"""
params["api_key"] = NCBI_API_KEY
url = f"{NCBI_BASE_URL}{endpoint}?{urlencode(params)}"
res = requests.get(url)
res.raise_for_status()
return res.text
def search_pubmed(query: str, max_results: int = 10):
"""
Search PubMed articles via NCBI.
"""
params = {"db": "pubmed", "term": query, "retmax": max_results, "retmode": "json"}
res = requests.get(f"{NCBI_BASE_URL}esearch.fcgi", params=params)
res.raise_for_status()
ids = res.json().get("esearchresult", {}).get("idlist", [])
return ids
def fetch_pubmed_details(pubmed_ids: list):
"""
Fetch PubMed details given a list of IDs.
"""
if not pubmed_ids:
return []
params = {
"db": "pubmed",
"id": ",".join(pubmed_ids),
"retmode": "xml"
}
res = requests.get(f"{NCBI_BASE_URL}efetch.fcgi", params=params)
res.raise_for_status()
return res.text # XML response
def search_gene(query: str):
"""
Search for a gene in NCBI Gene database.
"""
params = {"db": "gene", "term": query, "retmode": "json", "retmax": 5}
res = requests.get(f"{NCBI_BASE_URL}esearch.fcgi", params=params)
res.raise_for_status()
return res.json()
def fetch_gene_summary(gene_id: str):
"""
Get detailed gene summary from NCBI.
"""
params = {"db": "gene", "id": gene_id, "retmode": "json"}
res = requests.get(f"{NCBI_BASE_URL}esummary.fcgi", params=params)
res.raise_for_status()
return res.json()
def search_protein(query: str):
"""
Search proteins in NCBI Protein database.
"""
params = {"db": "protein", "term": query, "retmode": "json", "retmax": 5}
res = requests.get(f"{NCBI_BASE_URL}esearch.fcgi", params=params)
res.raise_for_status()
return res.json()
def search_pubchem_compound(query: str):
"""
Search compounds in PubChem via NCBI.
"""
params = {"db": "pccompound", "term": query, "retmode": "json", "retmax": 5}
res = requests.get(f"{NCBI_BASE_URL}esearch.fcgi", params=params)
res.raise_for_status()
return res.json()
def search_clinical_trials(query: str):
"""
Search clinical trials in ClinicalTrials.gov via NCBI.
"""
params = {"db": "clinicaltrials", "term": query, "retmode": "json", "retmax": 5}
res = requests.get(f"{NCBI_BASE_URL}esearch.fcgi", params=params)
res.raise_for_status()
return res.json()
|