EfdClient

class lsst_efd_client.EfdClient(efd_name, db_name='efd', port='443', internal_scale='tai', creds_service='https://roundtable.lsst.codes/segwarides/', client=None)

Bases: object

Class 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).

internal_scale : str, optional

Time scale to use when converting times to internal formats (‘tai’ by default).

path_to_creds : str, optional

Absolute path to use when reading credentials from disk (‘~/.lsst/notebook_auth.yaml’ 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.

Attributes Summary

deployment
influx_client The aioinflux.client.InfluxDBClient used for queries.
subclasses

Methods 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])
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.InfluxDBClient used 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 : str or list

Name of field(s) to query.

start : astropy.time.Time

Start time of the time range, if is_window is specified, this will be the midpoint of the range.

end : astropy.time.Time or astropy.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 is False).

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.

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.

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.

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.

get_topics()

Query the list of possible topics.

Returns:
results : list

List of valid topics in the database.

classmethod list_efd_names(creds_service='https://roundtable.lsst.codes/segwarides/')
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 : str or list

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_window is specified, this will be the midpoint of the range.

end : astropy.time.Time or astropy.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 is False).

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.DataFrame containing the results of the query.

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 : str or list

Name of field(s) to query.

start : astropy.time.Time

Start time of the time range, if is_window is specified, this will be the midpoint of the range.

end : astropy.time.Time or astropy.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 is False).

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.DataFrame containing the results of the query.

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 : str or list

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.DataFrame containing teh results of the query.