Skip to content
Snippets Groups Projects
Romain Broucquart's avatar
BRONES Romain authored
* typo naming...
4c8410df
History

pySoleilControl

Useful python tools for SOLEIL control system.

The ultimate aim is to provide tools that can be used in a shell prompt, ipython prompt or in python applications (such as GUI).

Under construction, the first brick is a module to retrieve data from the Tango Archiver.

ArchiveExtractor

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

Usage example, with an ipython prompt

In [1]: import pySoleilControl.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.ExtrBetweenDates('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

In [4]: # Get min, max and mean with a 10 minute window
   ...: d=AE.ExtrBetweenDates_MinMaxMean('ANS/DG/DCCT-CTRL/current', '2021-12-13', '2021-12-13-12:00', timeInterval='10m')

In [5]: d
Out[5]: 
                            Min        Mean         Max
2021-12-13 00:05:00  449.762286  450.619654  451.617095
2021-12-13 00:15:00  449.761171  450.676306  451.595391
2021-12-13 00:25:00  449.764910  450.684333  451.606520
2021-12-13 00:35:00  449.766284  450.688881  451.655843
2021-12-13 00:45:00  449.766808  450.716444  451.678886
...                         ...         ...         ...
2021-12-13 11:15:00   15.435944   15.495834   15.552427
2021-12-13 11:25:00   15.325022   15.383286   15.437459
2021-12-13 11:35:00   15.214556   15.270340   15.326395
2021-12-13 11:45:00   15.106309   15.163566   15.219333
2021-12-13 11:55:00   15.003812   15.056515   15.110022

[72 rows x 3 columns]


In [6]: # Activate inline matplotlib
   ...: %matplotlib
Using matplotlib backend: TkAgg

In [6]: # Simply plot
   ...: d.plot()

In [7]: # ipython prompt supports autocompletion. The doc of function can be quickly read by adding a '?'
    ...: AE.ExtrBetweenDates?
Signature: AE.ExtrBetweenDates(attribute, dateStart, dateStop=None, db='H')
Docstring:
Query attribute data from an archiver database, get all points between dates.
Use ExtractBetweenDates.

Parameters
----------
attribute : String
    Name of the attribute. Full Tango name i.e. "test/dg/panda/current".

dateStart : datetime.datetime, string
    Start date for extraction. If string, it will be parsed.
    Example of string format %Y-%m-%d-%H:%M:%S or less precise.

dateStop : datetime.datetime, string, None
    Stop date for extraction.
    If string, it will be parsed.
    Example of string format %Y-%m-%d-%H:%M:%S or less precise.
    If None, it takes the current date and time.
    Default is None (now).

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

Exceptions
----------
ValueError
    The attribute is not found in the database.

Returns
-------
[date, value] : array
    date : numpy.ndarray of datetime.datime objects
        Dates of the values
    value : numpy.ndarray
        Archived values
File:      ~/GrpDiagnostics/RBT/pySoleilControl/ArchiveExtractor.py
Type:      function