# 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 ```python 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 ```