Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.

ArchiveExtractor

This module brings some functions to extract data from HDB/TDB.

Quick example

Usage example, with an ipython prompt

In [1]: import ArchiveExtractor as AE

In [2]: # Looking for an attribute in HDB
   ...: AE.findattr("ans/dg/*dcct*")
Out[2]: 
['ANS/DG/DCCT-CTRL/State',
 'ANS/DG/DCCT-CTRL/Status',
 'ANS/DG/DCCT-CTRL/current',
 'ANS/DG/DCCT-CTRL/dose',
 'ANS/DG/DCCT-CTRL/lifeTime',
 'ANS/DG/DCCT-CTRL/lifeTimeErr']

In [3]: # Get data between two dates, this return a pandas.Dataframe object
   ...: AE.extract('ANS/DG/DCCT-CTRL/current', '2021-12-13', '2021-12-13-12:00')
INFO:Perform ExtractBetweenDates (ans/dg/dcct-ctrl/current, 2021-12-13 00:00:00, 2021-12-13 12:00:00)
Out[3]: 
2021-12-13 00:00:00    450.993568
2021-12-13 00:00:01    450.981979
2021-12-13 00:00:02    450.971455
2021-12-13 00:00:03    450.950542
2021-12-13 00:00:04    450.939951
                          ...    
2021-12-13 11:59:56     15.004553
2021-12-13 11:59:57     15.004243
2021-12-13 11:59:58     15.004942
2021-12-13 11:59:59     15.004878
2021-12-13 12:00:00     15.005410
Length: 42725, dtype: float64

Main function help

Signature: AE.extract(attr, date1, date2=None, method='nearest', db='H')
Docstring:
Access function to perform extraction between date1 and date2.
Can extract one or several attributes.
date1 and date2 can be both exact date, or one of two can be a time interval that will be taken relative to the other.


Parameters:
-----------
attr: string, list, dict
    Attribute(s) to extract.
    If string, extract the given attribute, returning a pandas.Series.
    If list, extract attributes and return a list of pandas.Series.
    If a dict, extract attributes and return a dict of pandas.Series with same keys.

date1, date2: string, datetime.datetime, datetime.timedelta, None
    Exact date, or duration relative to date2.
    If string, it will be parsed.
    A start date can be given with string format '%Y-%m-%d-%H:%M:%S' or less precise (ie '2021-02', '2022-11-03' '2022-05-10-21:00'.i..).
    A duration can be given with string format 'Xu' where X is a number and u is a unit in ('m':minutes, 'h':hours, 'd':days, 'M':months)
    A datetime.datetime object or datetime.timedelta object will be used as is.
    date2 can be None. In that case it is replaced by the current time.

method: str
    Method of extraction
        'nearest': Retrieve nearest value of date1, date2 is ignored.
        'between': Retrive data between date1 and date2.

db: str
    Which database to look in, 'H' or 'T'.

For developpers

Contribute

There is a simple test directory with only a manual test scipt. Please run and check it before proposing merge.