Skip to content
Snippets Groups Projects
Commit e8c1c5df authored by Cain, Payton David's avatar Cain, Payton David Committed by Jeremy M Fee
Browse files

Add webservice support

parent e40e7b31
No related branches found
No related tags found
No related merge requests found
......@@ -36,6 +36,7 @@ ELEMENTS = [
id="UK3", abbreviation="T-Fluxgate", name="Fluxgate Temperature", units="°C"
),
Element(id="UK4", abbreviation="T-Outside", name="Outside Temperature", units="°C"),
Element(id="DDT", abbreviation="DbDt", name="Time Derivative", units="1/s"),
]
ELEMENT_INDEX = {e.id: e for e in ELEMENTS}
......@@ -5,6 +5,7 @@ from fastapi import APIRouter, Depends, Query
from obspy import UTCDateTime, Stream
from starlette.responses import Response
from ...algorithm.DbDtAlgorithm import DbDtAlgorithm
from ... import TimeseriesFactory, TimeseriesUtility
from ...edge import EdgeFactory
from ...iaga2002 import IAGA2002Writer
......@@ -64,16 +65,43 @@ def get_timeseries(data_factory: TimeseriesFactory, query: DataApiQuery) -> Stre
data_factory: where to read data
query: parameters for the data to read
"""
# gather non-dbdt elements first
base_elements = [element for element in query.elements if element[1::] != "_DDT"]
# gather interval
interval = TimeseriesUtility.get_interval_from_delta(query.sampling_period)
# get data
timeseries = data_factory.get_timeseries(
base_timeseries = data_factory.get_timeseries(
starttime=query.starttime,
endtime=query.endtime,
observatory=query.id,
channels=query.elements,
channels=base_elements,
type=query.data_type,
interval=TimeseriesUtility.get_interval_from_delta(query.sampling_period),
interval=interval,
)
return timeseries
if "*_DDT" in query.elements:
dbdt_elements = [
element[0:1] for element in query.elements if element[1::] == "_DDT"
]
timeseries = data_factory.get_timeseries(
starttime=query.starttime,
endtime=query.endtime,
observatory=query.id,
channels=dbdt_elements,
type=query.data_type,
interval=interval,
)
dbdt_timeseries = DbDtAlgorithm(
inchannels=dbdt_elements, outchannels=dbdt_elements + "_DDT"
).process(timeseries)
base_timeseries += (trace for trace in dbdt_timeseries)
return base_timeseries
router = APIRouter()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment