|
|
import os
|
|
|
import PythonProviders
|
|
|
import pysciqlopcore
|
|
|
import numpy as np
|
|
|
import pandas as pds
|
|
|
import requests
|
|
|
from datetime import datetime, timedelta, timezone
|
|
|
from spwc.cdaweb import cdaweb
|
|
|
|
|
|
cd = cdaweb()
|
|
|
|
|
|
def cda_get_sample(metadata, start,stop):
|
|
|
ts_type = pysciqlopcore.ScalarTimeSerie
|
|
|
default_ctor_args = 1
|
|
|
try:
|
|
|
variable_id = None
|
|
|
dataset_id = None
|
|
|
drop_cols = []
|
|
|
for key,value in metadata:
|
|
|
if key == 'VAR_ID':
|
|
|
variable_id = value
|
|
|
elif key == 'DATASET_ID':
|
|
|
dataset_id = value
|
|
|
elif key == 'drop_col':
|
|
|
drop_cols.append(value)
|
|
|
elif key == 'type':
|
|
|
if value == 'vector':
|
|
|
ts_type = pysciqlopcore.VectorTimeSerie
|
|
|
elif value == 'multicomponent':
|
|
|
ts_type = pysciqlopcore.MultiComponentTimeSerie
|
|
|
default_ctor_args = (0,2)
|
|
|
tstart=datetime.fromtimestamp(start, tz=timezone.utc)
|
|
|
tend=datetime.fromtimestamp(stop, tz=timezone.utc)
|
|
|
df = cd.get_variable(dataset=dataset_id,variable=variable_id,tstart=tstart,tend=tend)
|
|
|
if len(df):
|
|
|
df = df.drop(columns = drop_cols)
|
|
|
t = np.array([d.timestamp() for d in df.index])
|
|
|
values = df.values
|
|
|
return ts_type(t,values)
|
|
|
except Exception as e:
|
|
|
print(traceback.format_exc())
|
|
|
print("Error in cdaweb.py ",str(e))
|
|
|
return ts_type(default_ctor_args)
|
|
|
|
|
|
|
|
|
products = [
|
|
|
("/CDA/Themis/ThA/tha_fgl_gsm", [], [("type","vector"), ('drop_col','UT__sec'), ("DATASET_ID","THA_L2_FGM"), ("VAR_ID","tha_fgl_gsm")]),
|
|
|
("/CDA/Themis/ThB/thb_fgl_gsm", [], [("type","vector"), ('drop_col','UT__sec'), ("DATASET_ID","THB_L2_FGM"), ("VAR_ID","thb_fgl_gsm")]),
|
|
|
|
|
|
]
|
|
|
|
|
|
PythonProviders.register_product(products, cda_get_sample)
|
|
|
|
|
|
|
|
|
|