13
13
14
14
from astroquery .esa .neocc import lists , tabs
15
15
16
- __all__ = ['neocc' , 'ESAneoccClass ' ]
16
+ __all__ = ['neocc' , 'NEOCCClass ' ]
17
17
18
18
19
19
@async_to_sync
20
- class ESAneoccClass (BaseQuery ):
20
+ class NEOCCClass (BaseQuery ):
21
21
"""
22
22
Class to init ESA NEOCC Python interface library
23
23
"""
@@ -130,7 +130,9 @@ def query_list(list_name):
130
130
return neocc_list
131
131
132
132
@staticmethod
133
- def query_object (name , tab , ** kwargs ):
133
+ def query_object (name , tab , * ,
134
+ orbital_elements = None , orbit_epoch = None ,
135
+ observatory = None , start = None , stop = None , step = None , step_unit = None ):
134
136
"""Get requested object data from ESA NEOCC.
135
137
136
138
Parameters
@@ -141,22 +143,27 @@ def query_object(name, tab, **kwargs):
141
143
Name of the request tab. Valid names are: summary,
142
144
orbit_properties, physical_properties, observations,
143
145
ephemerides, close_approaches and impacts.
144
- **kwargs : str
145
- Tabs orbit_properties and ephemerides tabs required additional
146
- arguments to work:
147
-
148
- * *orbit_properties*: the required additional arguments are:
149
-
150
- * *orbital_elements* : str (keplerian or equinoctial)
151
- * *orbit_epoch* : str (present or middle)
152
-
153
- * *ephemerides*: the required additional arguments are:
154
-
155
- * *observatory* : str (observatory code, e.g. '500', 'J04', etc.)
156
- * *start* : str (start date in YYYY-MM-DD HH:MM)
157
- * *stop* : str (end date in YYYY-MM-DD HH:MM)
158
- * *step* : str (time step, e.g. '2', '15', etc.)
159
- * *step_unit* : str (e.g. 'days', 'minutes', etc.)
146
+ orbital_elements : str
147
+ Additional required argument for "orbit_properties" table.
148
+ Valid arguments are: keplerian, equinoctial
149
+ orbit_epoch : str
150
+ Additional required argument for "orbit_properties" table.
151
+ Valid arguments are: present, middle
152
+ observatory : str
153
+ Additional required argument for "ephemerides" table.
154
+ Observatory code, e.g. '500', 'J04', etc.
155
+ start : str
156
+ Additional required argument for "ephemerides" table.
157
+ Start date in YYYY-MM-DD HH:MM
158
+ stop : str
159
+ Additional required argument for "ephemerides" table.
160
+ End date in YYYY-MM-DD HH:MM
161
+ step : str
162
+ Additional required argument for "ephemerides" table.
163
+ Time step, e.g. '2', '15', etc.
164
+ step_unit : str
165
+ Additional required argument for "ephemerides" table.
166
+ Unit for time step e.g. 'days', 'minutes', etc.
160
167
161
168
Returns
162
169
-------
@@ -387,22 +394,14 @@ def query_object(name, tab, **kwargs):
387
394
388
395
# Orbit properties
389
396
elif tab == 'orbit_properties' :
390
- # Raise error if no elements are provided
391
- if 'orbital_elements' not in kwargs :
392
- raise KeyError ('Please specify type of orbital_elements: '
393
- 'keplerian or equinoctial '
394
- '(e.g., orbital_elements="keplerian")' )
395
-
396
- # Raise error if no epoch is provided
397
- if 'orbit_epoch' not in kwargs :
398
- raise KeyError ('Please specify type of orbit_epoch: '
399
- 'present or middle '
400
- '(e.g., orbit_epoch="middle")' )
397
+
398
+ # Raise error if elements or epoch are not provided
399
+ if not all ([orbital_elements , orbit_epoch ]):
400
+ raise KeyError (("orbital_elements and orbit_epoch must be specified"
401
+ "for an orbit_properties query." ))
401
402
402
403
# Get URL to obtain the data from NEOCC
403
- url = tabs .get_object_url (name , tab ,
404
- orbital_elements = kwargs ['orbital_elements' ],
405
- orbit_epoch = kwargs ['orbit_epoch' ])
404
+ url = tabs .get_object_url (name , tab , orbital_elements = orbital_elements , orbit_epoch = orbit_epoch )
406
405
407
406
# Request data two times if the first attempt fails
408
407
try :
@@ -423,21 +422,13 @@ def query_object(name, tab, **kwargs):
423
422
424
423
# Ephemerides
425
424
elif tab == 'ephemerides' :
426
- # Create dictionary for kwargs
427
- args_dict = {'observatory' : 'observatory (e.g., observatory="500")' ,
428
- 'start' : 'start date (e.g., start="2021-05-17 00:00")' ,
429
- 'stop' : 'end date (e.g., stop="2021-05-18 00:00")' ,
430
- 'step' : 'time step (e.g., step="1")' ,
431
- 'step_unit' : 'step unit (e.g., step_unit="days")' }
432
-
433
- # Check if any kwargs is missing
434
- for element in args_dict :
435
- if element not in kwargs :
436
- raise KeyError (f'Please specify { args_dict [element ]} for ephemerides.' )
437
-
438
- resp_str = tabs .get_ephemerides_data (name , observatory = kwargs ['observatory' ],
439
- start = kwargs ['start' ], stop = kwargs ['stop' ],
440
- step = kwargs ['step' ], step_unit = kwargs ['step_unit' ])
425
+
426
+ if not all ([observatory , start , stop , step , step_unit ]):
427
+ raise KeyError (("Ephemerides queries require the following arguments:"
428
+ "observatory, start, stop, step, and step_unit" ))
429
+
430
+ resp_str = tabs .get_ephemerides_data (name , observatory = observatory , start = start , stop = stop ,
431
+ step = step , step_unit = step_unit )
441
432
neocc_obj = tabs .parse_ephemerides (resp_str )
442
433
443
434
elif tab == 'summary' :
@@ -450,4 +441,4 @@ def query_object(name, tab, **kwargs):
450
441
return neocc_obj
451
442
452
443
453
- neocc = ESAneoccClass ()
444
+ neocc = NEOCCClass ()
0 commit comments