EfdClient¶
-
class
lsst_efd_client.EfdClient(efd_name, db_name='efd', port='443', creds_service='https://roundtable.lsst.codes/segwarides/', client=None, convert_influx_index=False)¶ Bases:
objectClass to handle connections and basic queries
Parameters: - efd_name :
str Name of the EFD instance for which to retrieve credentials.
- db_name :
str, optional Name of the database within influxDB to query (‘efd’ by default).
- port :
str, optional Port to use when querying the database (‘443’ by default).
- creds_service :
str, optional URL to the service to retrieve credentials (
https://roundtable.lsst.codes/segwarides/by default).- client :
object, optional An instance of a class that ducktypes as
aioinflux.InfluxDBClient. The intent is to be able to substitute a mocked client for testing.- convert_influx_index :
bool, optional Convert influxDB time index from TAI to UTC? This is for using legacy instances that may still have timestamps stored internally as TAI. Modern instances all store index timestamps as UTC natively. Default is
False, don’t translate from TAI to UTC.
Attributes Summary
deploymentinflux_clientThe aioinflux.client.InfluxDBClientused for queries.subclassesMethods Summary
build_time_range_query(topic_name, fields, …)Build a query based on a time range. from_name(efd_name, *args, **kwargs)Construct a client for the specific named subclass. get_fields(topic_name)Query the list of field names for a topic. get_schema(topic)Givent a topic, get a list of dictionaries describing the fields get_topics()Query the list of possible topics. list_efd_names([creds_service])List all valid names for EFD deployments available. select_packed_time_series(topic_name, …[, …])Select fields that are time samples and unpack them into a dataframe. select_time_series(topic_name, fields, …)Select a time series for a set of topics in a single subsystem select_top_n(topic_name, fields, num[, …])Select the most recent N samples from a set of topics in a single subsystem. Attributes Documentation
-
deployment= ''¶
-
influx_client= None¶ The
aioinflux.client.InfluxDBClientused for queries.This should be used to execute queries not wrapped by this class.
-
subclasses= {}¶
Methods Documentation
-
build_time_range_query(topic_name, fields, start, end, is_window=False, index=None)¶ Build a query based on a time range.
Parameters: - topic_name :
str Name of topic for which to build a query.
- fields :
strorlist Name of field(s) to query.
- start :
astropy.time.Time Start time of the time range, if
is_windowis specified, this will be the midpoint of the range.- end :
astropy.time.Timeorastropy.time.TimeDelta End time of the range either as an absolute time or a time offset from the start time.
- is_window :
bool, optional If set and the end time is specified as a
TimeDelta, compute a range centered on the start time (default isFalse).- index :
int, optional For indexed topics set this to the index of the topic to query (default is
None).
Returns: - query :
str A string containing the constructed query statement.
- topic_name :
-
from_name(efd_name, *args, **kwargs)¶ Construct a client for the specific named subclass.
Parameters: - efd_name :
str Name of the EFD instance for which to construct a client.
- *args
Extra arguments to pass to the subclass constructor.
- **kwargs
Extra keyword arguments to pass to the subclass constructor.
Raises: - NotImpementedError
Raised if there is no subclass corresponding to the name.
- efd_name :
-
get_fields(topic_name)¶ Query the list of field names for a topic.
Parameters: - topic_name :
str Name of topic to query for field names.
Returns: - results :
list List of field names in specified topic.
- topic_name :
-
get_schema(topic)¶ Givent a topic, get a list of dictionaries describing the fields
Parameters: - topic :
str The name of the topic to query. A full list of valid topic names can be obtained using
get_schema_topics.
Returns: - result :
Pandas.DataFrame A dataframe with the schema information for the topic. One row per field.
- topic :
-
get_topics()¶ Query the list of possible topics.
Returns: - results :
list List of valid topics in the database.
- results :
-
classmethod
list_efd_names(creds_service='https://roundtable.lsst.codes/segwarides/')¶ List all valid names for EFD deployments available.
Parameters: - creds_service :
str, optional
Returns: - creds_service :
-
select_packed_time_series(topic_name, base_fields, start, end, is_window=False, index=None, ref_timestamp_col='cRIO_timestamp')¶ Select fields that are time samples and unpack them into a dataframe.
Parameters: - topic_name :
str Name of topic to query.
- base_fields :
strorlist Base field name(s) that will be expanded to query all vector entries.
- start :
astropy.time.Time Start time of the time range, if
is_windowis specified, this will be the midpoint of the range.- end :
astropy.time.Timeorastropy.time.TimeDelta End time of the range either as an absolute time or a time offset from the start time.
- is_window :
bool, optional If set and the end time is specified as a
TimeDelta, compute a range centered on the start time (default isFalse).- index :
int, optional For indexed topics set this to the index of the topic to query (default is
False).- ref_timestamp_col :
str, optional Name of the field name to use to assign timestamps to unpacked vector fields (default is ‘cRIO_timestamp’).
Returns: - result :
pandas.DataFrame A
pandas.DataFramecontaining the results of the query.
- topic_name :
-
select_time_series(topic_name, fields, start, end, is_window=False, index=None)¶ Select a time series for a set of topics in a single subsystem
Parameters: - topic_name :
str Name of topic to query.
- fields :
strorlist Name of field(s) to query.
- start :
astropy.time.Time Start time of the time range, if
is_windowis specified, this will be the midpoint of the range.- end :
astropy.time.Timeorastropy.time.TimeDelta End time of the range either as an absolute time or a time offset from the start time.
- is_window :
bool, optional If set and the end time is specified as a
TimeDelta, compute a range centered on the start time (default isFalse).- index :
int, optional For indexed topics set this to the index of the topic to query (default is
None).
Returns: - result :
pandas.DataFrame A
pandas.DataFramecontaining the results of the query.
- topic_name :
-
select_top_n(topic_name, fields, num, time_cut=None, index=None)¶ Select the most recent N samples from a set of topics in a single subsystem. This method does not guarantee sort direction of the returned rows.
Parameters: - topic_name :
str Name of topic to query.
- fields :
strorlist Name of field(s) to query.
- num :
int Number of rows to return.
- time_cut :
astropy.time.Time, optional Use a time cut instead of the most recent entry. (default is
None)- index :
int, optional For indexed topics set this to the index of the topic to query (default is
None)
Returns: - result :
pandas.DataFrame A
pandas.DataFramecontaining teh results of the query.
- topic_name :
- efd_name :