EXONYX / app /engine /knowledge.py
Aditya-Jadhav150
Deploy clean EXONYX Backend
8f0e1cb
Raw
History Blame Contribute Delete
1.65 kB
import requests
def fetch_knowledge_context(target_name: str) -> dict:
"""
Fetch external context for a target from the NASA Exoplanet Archive.
Uses the TAP service to query the Planetary Systems (ps) table.
"""
base_url = "https://exoplanetarchive.ipac.caltech.edu/TAP/sync"
# Strip common prefixes like 'Kepler-' or 'K2-' if we just want the number,
# but the archive usually accepts "Kepler-10" directly in hostname or pl_name.
# We will search if the target is known as a host star.
query = f"SELECT pl_name, discoverymethod, disc_year, pl_rade, pl_orbper FROM ps WHERE hostname = '{target_name}'"
params = {
"query": query,
"format": "json"
}
try:
response = requests.get(base_url, params=params, timeout=5)
if response.status_code == 200:
data = response.json()
if len(data) > 0:
return {
"known_system": True,
"planet_count": len(data),
"planets": data,
"message": f"Target is a known host to {len(data)} exoplanet(s)."
}
else:
return {
"known_system": False,
"planet_count": 0,
"planets": [],
"message": "No confirmed planets found in NASA Exoplanet Archive for this host."
}
except Exception as e:
pass
return {
"known_system": False,
"planet_count": 0,
"planets": [],
"message": "Could not connect to Knowledge Engine."
}