Source code for astroquery.solarsystem.neodys.core
from . import conf
from astroquery.query import BaseQuery
__all__ = ['NEODyS', 'NEODySClass']
[docs]
class NEODySClass(BaseQuery):
NEODYS_URL = conf.server
TIMEOUT = conf.timeout
[docs]
def query_object(self, object_id, *, orbital_element_type="eq", epoch_near_present=0):
"""
Parameters
----------
object_id : str
Name of objects to be searched in NEODyS website
orbital_element_type : str
Sets coordinate system for results.
eq - Equinoctial
ke - Keplerian
Defaults to Equinoctial which is given in higher
precision.
epoch_near_present : bool
Sets the epoch to near present day. Otherwise
defaults to near middle of the arc.
Returns
-------
Returns a dictionary with the following entries:
KEP : float array
The state vector in Keplerian elements.
Units in au and deg.
EQU : float array
The state vector in Equinoctial elements.
COV : float array
The covariance matrix.
COR : float array
The correlation matrix for Keplerian.
MJD : str array
The Mean Julian date, and the time scale
used.
MAG : float array
The absolute magnitude (H) and slope
parameter (G)
Raises
------
ValueError
If input parameters are invalid.
RuntimeError
If connection to website fails.
"""
COV = []
COR = []
if orbital_element_type != 'ke' and orbital_element_type != 'eq':
raise ValueError("OrbitElementType must be ke or eq")
object_url = f'{self.NEODYS_URL}/{object_id}.{orbital_element_type}{epoch_near_present}'
response = self._request('GET', object_url, timeout=self.TIMEOUT)
response.raise_for_status()
ascii_text = (response.text).split('\n')
results = {}
for line in ascii_text:
if 'KEP' in line:
results["Keplerian State Vector"] = [float(x) for x in line.split()[1:]]
if 'EQU' in line:
results["Equinoctial State Vector"] = [float(x) for x in line.split()[1:]]
if 'MJD' in line:
results["Mean Julian Date"] = line.split()[1:]
if 'MAG' in line:
results["Magnitude"] = [float(x) for x in line.split()[1:]]
if 'COV' in line:
COV.extend([float(x) for x in line.split()[1:]])
if 'COR' in line:
COR.extend([float(x) for x in line.split()[1:]])
results["Covariance Matrix"] = COV
results["Keplerian Correlation Matrix"] = COR
results["URL"] = object_url
return results
NEODyS = NEODySClass()