astrodatadownloader: rework getStarObservations function for fewer server requests
This commit is contained in:
@@ -1,19 +1,32 @@
|
|||||||
from astroquery.mast import Observations
|
from astroquery.mast import Observations
|
||||||
|
import numpy as np
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
def getStarObservations(starName: str, sequences: list[int]) -> str:
|
class ObservationSource(Enum):
|
||||||
|
KEPLER = 1
|
||||||
|
K2 = 2
|
||||||
|
TESS = 3
|
||||||
|
|
||||||
|
def getStarObservations(starName: str, sources: list[ObservationSource], sequences: list[list[int]] = []) -> str:
|
||||||
obs = Observations.query_object(objectname=starName, radius="0 deg")
|
obs = Observations.query_object(objectname=starName, radius="0 deg")
|
||||||
|
|
||||||
|
obsWantedFilter = obs["dataproduct_type"] == "timeseries"
|
||||||
|
|
||||||
if(len(sequences) > 1):
|
if(len(sequences) > 1):
|
||||||
obsWantedFilter = ((obs['dataproduct_type'] == 'timeseries') &
|
obsWantedFilter &= ((obs['sequence_number'] >= max(sequences)) &
|
||||||
(obs['obs_collection'] == 'TESS') &
|
|
||||||
(obs['sequence_number'] >= max(sequences)) &
|
|
||||||
(obs['sequence_number'] <= min(sequences)))
|
(obs['sequence_number'] <= min(sequences)))
|
||||||
elif(len(sequences) == 1):
|
elif(len(sequences) == 1):
|
||||||
obsWantedFilter = ((obs['dataproduct_type'] == 'timeseries') &
|
obsWantedFilter &= (obs['sequence_number'] == sequences[0])
|
||||||
(obs['obs_collection'] == 'TESS') &
|
|
||||||
(obs['sequence_number'] == sequences[0]))
|
obsSourceFilter = np.ma.MaskedArray(data=np.full(obsWantedFilter.shape, False),
|
||||||
else:
|
mask=False, fill_value=True)
|
||||||
obsWantedFilter = ((obs['dataproduct_type'] == 'timeseries') &
|
if(ObservationSource.KEPLER in sources):
|
||||||
(obs['obs_collection'] == 'TESS'))
|
obsSourceFilter |= (obs['obs_collection'] == "Kepler")
|
||||||
|
if(ObservationSource.K2 in sources):
|
||||||
|
obsSourceFilter |= (obs['obs_collection'] == "K2")
|
||||||
|
if(ObservationSource.TESS in sources):
|
||||||
|
obsSourceFilter |= (obs['obs_collection'] == "TESS")
|
||||||
|
|
||||||
|
obsWantedFilter &= obsSourceFilter
|
||||||
|
|
||||||
return obs[obsWantedFilter]
|
return obs[obsWantedFilter]
|
||||||
Reference in New Issue
Block a user