The following slides present how to use pyarchappl Python package to work with Archiver Appliance web service, along with a practical use case, which shows how to extract the machine settings from the recorded data, based on the machine performance trends with timestamps, which could also be visualized with the data.
Furthermore, it also shows how to interface the high-level application so-called Settings Manager, by exporting the extracted settings data into a data file and loading into, as such, other operations could be well performed in the context of Settings Manager.
Tong Zhang zhangt@frib.msu.edu
Last updated: 2020-12-02
pip install pyarchappl
import archappl
print(archappl.__doc__)
print("Version: ", archappl.__version__)
print("Author : ", archappl.__author__)
archappl: Python interface of Archiver Appliance. Version: 0.9.2 Author : Tong Zhang <zhangt@frib.msu.edu>
from archappl.contrib import get_dataset
get_dataset?
Signature: get_dataset(element_list, field_list, from_time, to_time, **kws)
Docstring:
Pull data from Archiver Appliance, with a given list of devices and dynamic fields,
within defined time slot.
Parameters
----------
element_list : list
A list of high-level device element objects.
field_list : list
A list of field names should applied to all elements, otherwise skip invalid field which
does not belong to some element.
from_time : str
A string of start time of the data in ISO8601 format.
to_time : str
A string of end time of the data in ISO8601 format.
Keyword Arguments
-----------------
client : ArchiverDataClient
ArchiverDataClient instance, default is FRIBArchiverDataClient.
resample : str
The offset string or object representing target conversion, e.g. resample with 1 second
offset could be defined as '1S'.
verbose : int
Verbosity level of the log output, default is 0, no output, 1, output progress, 2 output
progress with description.
handle : str
PV handle for field list, by default is 'readback', other options: 'setpoint'.
Returns
-------
r : dataframe
Pandas dataframe with datetime as the index, and device PV names as columns
See Also
--------
get_dataset
phantasy.CaElement, phantasy.CaField
archappl.dformat
Examples
--------
>>> from archappl.client import ArchiverDataClient
>>> data_client = ArchiverDataClient()
>>> data_client.url = "http://127.0.0.1:17665"
>>>
>>> from phantasy import MachinePortal
>>> mp = MachinePortal("FRIB_VA", "LS1FS1")
>>> bpms = mp.get_elements(type="BPM")
>>> from archappl import dformat
>>> t0 = dformat(2020, 11, 16, 15, 10)
>>> t1 = dformat(2020, 11, 16, 16, 17)
>>> field_list = ['X', 'Y']
>>> data_set = get_dataset_with_devices(bpms, field_list, t0, t1,
resample="1S", verbose=2,
client=data_client)
from archappl.contrib import get_dataset_at_time
get_dataset_at_time?
Signature: get_dataset_at_time(element_list, field_list, at_time, **kws)
Docstring:
Pull data from Archiver Appliance, with a given list of devices and dynamic fields at a
specified time.
Parameters
----------
element_list : list
A list of high-level device element objects.
field_list : list
A list of field names should applied to all elements, otherwise skip invalid field which
does not belong to some element.
at_time : str
A string of time of the data in ISO8601 format.
Keyword Arguments
-----------------
client : ArchiverDataClient
ArchiverDataClient instance, default is FRIBArchiverDataClient.
handle : str
PV handle for field list, by default is 'readback', other options: 'setpoint'.
tz : str
Name of timezone for the returned index, default is local zone.
Returns
-------
r : dataframe
Pandas dataframe.
from archappl import dformat
dformat?
dformat is convenient function provided by pyarchappl, which can correctly handle the datetime, by default the time is localized at time zone of 'America/New_York'.
Signature: dformat(*args, **kws)
Docstring:
Return ISO8601 format of date time.
Input up to 7 arguments as year, month, day, hour, minute, second,
millisecond, it is recommended always input year, month, day, hour,
minute, second and millisecond as 0 if not input.
The data client is the client that send request to and receive response from Archiver Appliance.
In this notebook, all the data are retrieved from a local hosted Archiver Appliance, for FRIB FTC, just use FRIBArchiverDataClient.
from archappl.client import ArchiverDataClient
data_client = ArchiverDataClient()
data_client.url = "http://127.0.0.1:17665" # local hosted Archiver Appliance
# For FRIB FTC working environment, use FRIBArchiverDataClient
from archappl.client import FRIBArchiverDataClient
In this notebook, archived data are from virtual accelerator, trajectory correction with ORM app is used to change the machine status, changes are recorded by Archiver Appliance.
For FRIB FTC, set machine and segment with 'FRIB' and 'LINAC'.
The data integration with FRIB high-level physics controls is achieved via phantasy, for those phantasy is not available, other generic data structure is returned.
from phantasy import MachinePortal
mp = MachinePortal(machine="FRIB_VA", segment="LS1FS1")
# get all the BPMs and Correctors
bpms = mp.get_elements(type="BPM")
hcors = mp.get_elements(type='HCOR')
vcors = mp.get_elements(type='VCOR')
[09:29:44.484] INFO: phantasy.library.operation.core: Load new machine: 'FRIB_VA', segment: 'LS1FS1' [09:29:44.488] INFO: phantasy.library.parser.config: Importing FRIB_VA from /home/tong/Dropbox/phantasy-project/phantasy-machines/FRIB_VA [09:29:44.492] INFO: phantasy.library.parser.config: Loading machine configuration from /home/tong/Dropbox/phantasy-project/phantasy-machines/FRIB_VA/phantasy.ini [09:29:44.494] INFO: phantasy.library.operation.lattice: Loading segment: 'LS1FS1' [09:29:44.499] WARNING: phantasy.library.operation.lattice: Default UNICORN policy will be applied. [09:29:44.501] WARNING: phantasy.library.operation.lattice: Default device polarity will be applied. [09:29:44.503] INFO: phantasy.library.operation.lattice: Loading PV data from CSV/SQLite: /home/tong/Dropbox/phantasy-project/phantasy-machines/FRIB_VA/ls1fs1/channels.csv [09:29:44.505] INFO: phantasy.library.pv.datasource: Set source to be CSV table: channels.csv. [09:29:44.595] INFO: phantasy.library.operation.lattice: Model data directory: /home/tong/phantasy_data/20201202/model_data/data_092944 [09:29:44.600] INFO: phantasy.library.operation.lattice: Found 1725 PVs in 'LS1FS1'. [09:29:44.931] INFO: phantasy.library.operation.lattice: 'LS1FS1' has 417 elements
# Only choose the devices that are controllable
lat = mp.work_lattice_conf
non_diag_devices = [i for i in lat if not i.is_diag()]
non_diag_devices
[LS1_CA01:CAV1_D1127 [CAV] @ sb=0.218087, LS1_CA01:SOL1_D1132 [SOL] @ sb=0.685364, LS1_CA01:DCV_D1132 [VCOR] @ sb=0.785365, LS1_CA01:DCH_D1132 [HCOR] @ sb=0.785365, LS1_CA01:CAV2_D1136 [CAV] @ sb=1.059770, LS1_CA01:CAV3_D1142 [CAV] @ sb=1.693326, LS1_CA01:SOL2_D1146 [SOL] @ sb=2.160603, LS1_CA01:DCV_D1146 [VCOR] @ sb=2.260604, LS1_CA01:DCH_D1146 [HCOR] @ sb=2.260604, LS1_CA01:CAV4_D1150 [CAV] @ sb=2.535008, LS1_CA02:CAV1_D1161 [CAV] @ sb=3.591182, LS1_CA02:SOL1_D1165 [SOL] @ sb=4.058459, LS1_CA02:DCV_D1165 [VCOR] @ sb=4.158460, LS1_CA02:DCH_D1165 [HCOR] @ sb=4.158460, LS1_CA02:CAV2_D1169 [CAV] @ sb=4.432864, LS1_CA02:CAV3_D1176 [CAV] @ sb=5.066420, LS1_CA02:SOL2_D1180 [SOL] @ sb=5.533698, LS1_CA02:DCV_D1180 [VCOR] @ sb=5.633699, LS1_CA02:DCH_D1180 [HCOR] @ sb=5.633699, LS1_CA02:CAV4_D1184 [CAV] @ sb=5.908104, LS1_CA03:CAV1_D1195 [CAV] @ sb=6.964276, LS1_CA03:SOL1_D1199 [SOL] @ sb=7.431554, LS1_CA03:DCV_D1199 [VCOR] @ sb=7.531555, LS1_CA03:DCH_D1199 [HCOR] @ sb=7.531555, LS1_CA03:CAV2_D1203 [CAV] @ sb=7.805960, LS1_CA03:CAV3_D1209 [CAV] @ sb=8.439516, LS1_CA03:SOL2_D1214 [SOL] @ sb=8.906794, LS1_CA03:DCV_D1214 [VCOR] @ sb=9.006794, LS1_CA03:DCH_D1214 [HCOR] @ sb=9.006794, LS1_CA03:CAV4_D1218 [CAV] @ sb=9.281199, LS1_CB01:CAV1_D1229 [CAV] @ sb=10.366596, LS1_CB01:SOL1_D1235 [SOL] @ sb=10.894208, LS1_CB01:DCV_D1235 [VCOR] @ sb=11.144208, LS1_CB01:DCH_D1235 [HCOR] @ sb=11.144208, LS1_CB01:CAV2_D1241 [CAV] @ sb=11.568946, LS1_CB01:CAV3_D1245 [CAV] @ sb=11.966634, LS1_CB01:CAV4_D1249 [CAV] @ sb=12.364322, LS1_CB01:SOL2_D1255 [SOL] @ sb=12.891934, LS1_CB01:DCV_D1255 [VCOR] @ sb=13.141934, LS1_CB01:DCH_D1255 [HCOR] @ sb=13.141934, LS1_CB01:CAV5_D1261 [CAV] @ sb=13.566672, LS1_CB01:CAV6_D1265 [CAV] @ sb=13.964360, LS1_CB01:CAV7_D1269 [CAV] @ sb=14.362048, LS1_CB01:SOL3_D1275 [SOL] @ sb=14.889660, LS1_CB01:DCV_D1275 [VCOR] @ sb=15.139660, LS1_CB01:DCH_D1275 [HCOR] @ sb=15.139660, LS1_CB01:CAV8_D1281 [CAV] @ sb=15.564398, LS1_CB02:CAV1_D1293 [CAV] @ sb=16.739021, LS1_CB02:SOL1_D1299 [SOL] @ sb=17.266632, LS1_CB02:DCV_D1299 [VCOR] @ sb=17.516632, LS1_CB02:DCH_D1299 [HCOR] @ sb=17.516632, LS1_CB02:CAV2_D1305 [CAV] @ sb=17.941371, LS1_CB02:CAV3_D1309 [CAV] @ sb=18.339059, LS1_CB02:CAV4_D1313 [CAV] @ sb=18.736747, LS1_CB02:SOL2_D1319 [SOL] @ sb=19.264358, LS1_CB02:DCV_D1319 [VCOR] @ sb=19.514358, LS1_CB02:DCH_D1319 [HCOR] @ sb=19.514358, LS1_CB02:CAV5_D1325 [CAV] @ sb=19.939097, LS1_CB02:CAV6_D1329 [CAV] @ sb=20.336785, LS1_CB02:CAV7_D1333 [CAV] @ sb=20.734473, LS1_CB02:SOL3_D1339 [SOL] @ sb=21.262084, LS1_CB02:DCV_D1339 [VCOR] @ sb=21.512084, LS1_CB02:DCH_D1339 [HCOR] @ sb=21.512084, LS1_CB02:CAV8_D1345 [CAV] @ sb=21.936823, LS1_CB03:CAV1_D1356 [CAV] @ sb=23.111446, LS1_CB03:SOL1_D1363 [SOL] @ sb=23.639057, LS1_CB03:DCV_D1363 [VCOR] @ sb=23.889057, LS1_CB03:DCH_D1363 [HCOR] @ sb=23.889057, LS1_CB03:CAV2_D1368 [CAV] @ sb=24.313795, LS1_CB03:CAV3_D1372 [CAV] @ sb=24.711483, LS1_CB03:CAV4_D1376 [CAV] @ sb=25.109171, LS1_CB03:SOL2_D1383 [SOL] @ sb=25.636783, LS1_CB03:DCV_D1383 [VCOR] @ sb=25.886783, LS1_CB03:DCH_D1383 [HCOR] @ sb=25.886783, LS1_CB03:CAV5_D1388 [CAV] @ sb=26.311521, LS1_CB03:CAV6_D1392 [CAV] @ sb=26.709209, LS1_CB03:CAV7_D1396 [CAV] @ sb=27.106897, LS1_CB03:SOL3_D1403 [SOL] @ sb=27.634509, LS1_CB03:DCV_D1403 [VCOR] @ sb=27.884509, LS1_CB03:DCH_D1403 [HCOR] @ sb=27.884509, LS1_CB03:CAV8_D1408 [CAV] @ sb=28.309247, LS1_CB04:CAV1_D1420 [CAV] @ sb=29.483870, LS1_CB04:SOL1_D1426 [SOL] @ sb=30.011481, LS1_CB04:DCV_D1426 [VCOR] @ sb=30.261481, LS1_CB04:DCH_D1426 [HCOR] @ sb=30.261481, LS1_CB04:CAV2_D1432 [CAV] @ sb=30.686220, LS1_CB04:CAV3_D1436 [CAV] @ sb=31.083908, LS1_CB04:CAV4_D1440 [CAV] @ sb=31.481596, LS1_CB04:SOL2_D1446 [SOL] @ sb=32.009207, LS1_CB04:DCV_D1446 [VCOR] @ sb=32.259207, LS1_CB04:DCH_D1446 [HCOR] @ sb=32.259207, LS1_CB04:CAV5_D1452 [CAV] @ sb=32.683946, LS1_CB04:CAV6_D1456 [CAV] @ sb=33.081634, LS1_CB04:CAV7_D1460 [CAV] @ sb=33.479322, LS1_CB04:SOL3_D1466 [SOL] @ sb=34.006933, LS1_CB04:DCV_D1466 [VCOR] @ sb=34.256933, LS1_CB04:DCH_D1466 [HCOR] @ sb=34.256933, LS1_CB04:CAV8_D1472 [CAV] @ sb=34.681672, LS1_CB05:CAV1_D1484 [CAV] @ sb=35.856295, LS1_CB05:SOL1_D1490 [SOL] @ sb=36.383906, LS1_CB05:DCV_D1490 [VCOR] @ sb=36.633906, LS1_CB05:DCH_D1490 [HCOR] @ sb=36.633906, LS1_CB05:CAV2_D1496 [CAV] @ sb=37.058644, LS1_CB05:CAV3_D1500 [CAV] @ sb=37.456332, LS1_CB05:CAV4_D1504 [CAV] @ sb=37.854020, LS1_CB05:SOL2_D1510 [SOL] @ sb=38.381632, LS1_CB05:DCV_D1510 [VCOR] @ sb=38.631632, LS1_CB05:DCH_D1510 [HCOR] @ sb=38.631632, LS1_CB05:CAV5_D1516 [CAV] @ sb=39.056370, LS1_CB05:CAV6_D1520 [CAV] @ sb=39.454058, LS1_CB05:CAV7_D1524 [CAV] @ sb=39.851746, LS1_CB05:SOL3_D1530 [SOL] @ sb=40.379358, LS1_CB05:DCV_D1530 [VCOR] @ sb=40.629358, LS1_CB05:DCH_D1530 [HCOR] @ sb=40.629358, LS1_CB05:CAV8_D1536 [CAV] @ sb=41.054096, LS1_CB06:CAV1_D1548 [CAV] @ sb=42.228719, LS1_CB06:SOL1_D1554 [SOL] @ sb=42.756330, LS1_CB06:DCV_D1554 [VCOR] @ sb=43.006330, LS1_CB06:DCH_D1554 [HCOR] @ sb=43.006330, LS1_CB06:CAV2_D1560 [CAV] @ sb=43.431069, LS1_CB06:CAV3_D1564 [CAV] @ sb=43.828757, LS1_CB06:CAV4_D1567 [CAV] @ sb=44.226445, LS1_CB06:SOL2_D1574 [SOL] @ sb=44.754056, LS1_CB06:DCV_D1574 [VCOR] @ sb=45.004056, LS1_CB06:DCH_D1574 [HCOR] @ sb=45.004056, LS1_CB06:CAV5_D1580 [CAV] @ sb=45.428795, LS1_CB06:CAV6_D1583 [CAV] @ sb=45.826483, LS1_CB06:CAV7_D1587 [CAV] @ sb=46.224171, LS1_CB06:SOL3_D1594 [SOL] @ sb=46.751782, LS1_CB06:DCV_D1594 [VCOR] @ sb=47.001782, LS1_CB06:DCH_D1594 [HCOR] @ sb=47.001782, LS1_CB06:CAV8_D1599 [CAV] @ sb=47.426521, LS1_CB07:CAV1_D1611 [CAV] @ sb=48.601144, LS1_CB07:SOL1_D1618 [SOL] @ sb=49.128755, LS1_CB07:DCV_D1618 [VCOR] @ sb=49.378755, LS1_CB07:DCH_D1618 [HCOR] @ sb=49.378755, LS1_CB07:CAV2_D1623 [CAV] @ sb=49.803493, LS1_CB07:CAV3_D1627 [CAV] @ sb=50.201181, LS1_CB07:CAV4_D1631 [CAV] @ sb=50.598869, LS1_CB07:SOL2_D1637 [SOL] @ sb=51.126481, LS1_CB07:DCV_D1637 [VCOR] @ sb=51.376481, LS1_CB07:DCH_D1637 [HCOR] @ sb=51.376481, LS1_CB07:CAV5_D1643 [CAV] @ sb=51.801219, LS1_CB07:CAV6_D1647 [CAV] @ sb=52.198907, LS1_CB07:CAV7_D1651 [CAV] @ sb=52.596595, LS1_CB07:SOL3_D1657 [SOL] @ sb=53.124207, LS1_CB07:DCV_D1657 [VCOR] @ sb=53.374207, LS1_CB07:DCH_D1657 [HCOR] @ sb=53.374207, LS1_CB07:CAV8_D1663 [CAV] @ sb=53.798945, LS1_CB08:CAV1_D1675 [CAV] @ sb=54.973568, LS1_CB08:SOL1_D1681 [SOL] @ sb=55.501179, LS1_CB08:DCV_D1681 [VCOR] @ sb=55.751179, LS1_CB08:DCH_D1681 [HCOR] @ sb=55.751179, LS1_CB08:CAV2_D1687 [CAV] @ sb=56.175918, LS1_CB08:CAV3_D1691 [CAV] @ sb=56.573606, LS1_CB08:CAV4_D1695 [CAV] @ sb=56.971294, LS1_CB08:SOL2_D1701 [SOL] @ sb=57.498905, LS1_CB08:DCV_D1701 [VCOR] @ sb=57.748905, LS1_CB08:DCH_D1701 [HCOR] @ sb=57.748905, LS1_CB08:CAV5_D1707 [CAV] @ sb=58.173644, LS1_CB08:CAV6_D1711 [CAV] @ sb=58.571332, LS1_CB08:CAV7_D1715 [CAV] @ sb=58.969020, LS1_CB08:SOL3_D1721 [SOL] @ sb=59.496631, LS1_CB08:DCV_D1721 [VCOR] @ sb=59.746631, LS1_CB08:DCH_D1721 [HCOR] @ sb=59.746631, LS1_CB08:CAV8_D1727 [CAV] @ sb=60.171370, LS1_CB09:CAV1_D1739 [CAV] @ sb=61.345993, LS1_CB09:SOL1_D1745 [SOL] @ sb=61.873604, LS1_CB09:DCV_D1745 [VCOR] @ sb=62.123604, LS1_CB09:DCH_D1745 [HCOR] @ sb=62.123604, LS1_CB09:CAV2_D1751 [CAV] @ sb=62.548343, LS1_CB09:CAV3_D1755 [CAV] @ sb=62.946031, LS1_CB09:CAV4_D1759 [CAV] @ sb=63.343719, LS1_CB09:SOL2_D1765 [SOL] @ sb=63.871330, LS1_CB09:DCV_D1765 [VCOR] @ sb=64.121330, LS1_CB09:DCH_D1765 [HCOR] @ sb=64.121330, LS1_CB09:CAV5_D1771 [CAV] @ sb=64.546068, LS1_CB09:CAV6_D1775 [CAV] @ sb=64.943756, LS1_CB09:CAV7_D1779 [CAV] @ sb=65.341444, LS1_CB09:SOL3_D1785 [SOL] @ sb=65.869056, LS1_CB09:DCV_D1785 [VCOR] @ sb=66.119056, LS1_CB09:DCH_D1785 [HCOR] @ sb=66.119056, LS1_CB09:CAV8_D1791 [CAV] @ sb=66.543794, LS1_CB10:CAV1_D1802 [CAV] @ sb=67.718417, LS1_CB10:SOL1_D1809 [SOL] @ sb=68.246029, LS1_CB10:DCV_D1809 [VCOR] @ sb=68.496029, LS1_CB10:DCH_D1809 [HCOR] @ sb=68.496029, LS1_CB10:CAV2_D1814 [CAV] @ sb=68.920767, LS1_CB10:CAV3_D1818 [CAV] @ sb=69.318455, LS1_CB10:CAV4_D1822 [CAV] @ sb=69.716143, LS1_CB10:SOL2_D1829 [SOL] @ sb=70.243754, LS1_CB10:DCV_D1829 [VCOR] @ sb=70.493754, LS1_CB10:DCH_D1829 [HCOR] @ sb=70.493754, LS1_CB10:CAV5_D1834 [CAV] @ sb=70.918493, LS1_CB10:CAV6_D1838 [CAV] @ sb=71.316181, LS1_CB10:CAV7_D1842 [CAV] @ sb=71.713869, LS1_CB10:SOL3_D1849 [SOL] @ sb=72.241480, LS1_CB10:DCV_D1849 [VCOR] @ sb=72.491480, LS1_CB10:DCH_D1849 [HCOR] @ sb=72.491480, LS1_CB10:CAV8_D1854 [CAV] @ sb=72.916219, LS1_CB11:CAV1_D1866 [CAV] @ sb=74.090842, LS1_CB11:SOL1_D1872 [SOL] @ sb=74.618453, LS1_CB11:DCV_D1872 [VCOR] @ sb=74.868453, LS1_CB11:DCH_D1872 [HCOR] @ sb=74.868453, LS1_CB11:CAV2_D1878 [CAV] @ sb=75.293192, LS1_CB11:CAV3_D1882 [CAV] @ sb=75.690880, LS1_CB11:CAV4_D1886 [CAV] @ sb=76.088568, LS1_CB11:SOL2_D1892 [SOL] @ sb=76.616179, LS1_CB11:DCV_D1892 [VCOR] @ sb=76.866179, LS1_CB11:DCH_D1892 [HCOR] @ sb=76.866179, LS1_CB11:CAV5_D1898 [CAV] @ sb=77.290917, LS1_CB11:CAV6_D1902 [CAV] @ sb=77.688605, LS1_CB11:CAV7_D1906 [CAV] @ sb=78.086293, LS1_CB11:SOL3_D1912 [SOL] @ sb=78.613905, LS1_CB11:DCV_D1912 [VCOR] @ sb=78.863905, LS1_CB11:DCH_D1912 [HCOR] @ sb=78.863905, LS1_CB11:CAV8_D1918 [CAV] @ sb=79.288643, LS1_BTS:DCV_D1937 [VCOR] @ sb=81.365954, LS1_BTS:DCH_D1937 [HCOR] @ sb=81.365954, LS1_BTS:QH_D1942 [QUAD] @ sb=81.715954, LS1_BTS:QV_D1950 [QUAD] @ sb=82.465954, LS1_BTS:DCV_D1964 [VCOR] @ sb=84.013954, LS1_BTS:DCH_D1964 [HCOR] @ sb=84.013954, LS1_BTS:QH_D1969 [QUAD] @ sb=84.363954, LS1_BTS:QV_D1976 [QUAD] @ sb=85.113954, LS1_BTS:DCV_D1997 [VCOR] @ sb=87.348954, LS1_BTS:DCH_D1997 [HCOR] @ sb=87.348954, LS1_BTS:QH_D2002 [QUAD] @ sb=87.698954, LS1_BTS:QV_D2013 [QUAD] @ sb=88.835166, LS1_BTS:DCV_D2024 [VCOR] @ sb=90.055166, LS1_BTS:DCH_D2024 [HCOR] @ sb=90.055166, LS1_BTS:QH_D2029 [QUAD] @ sb=90.405166, LS1_BTS:QV_D2042 [QUAD] @ sb=91.741378, LS1_BTS:DCV_D2061 [VCOR] @ sb=93.710487, LS1_BTS:DCH_D2061 [HCOR] @ sb=93.710487, LS1_BTS:QV_D2066 [QUAD] @ sb=94.060487, LS1_BTS:QH_D2073 [QUAD] @ sb=94.810487, LS1_CH01:CAV1_D2085 [CAV] @ sb=96.007467, LS1_CH01:CAV2_D2089 [CAV] @ sb=96.405155, LS1_CH01:CAV3_D2096 [CAV] @ sb=97.100345, LS1_CH01:CAV4_D2100 [CAV] @ sb=97.498033, LS1_BTS:DCV_D2114 [VCOR] @ sb=98.985556, LS1_BTS:DCH_D2114 [HCOR] @ sb=98.985556, LS1_BTS:QV_D2118 [QUAD] @ sb=99.335556, LS1_BTS:QH_D2126 [QUAD] @ sb=100.085556, FS1_CH01:CAV1_D2137 [CAV] @ sb=101.212819, FS1_CH01:CAV2_D2141 [CAV] @ sb=101.610507, FS1_CH01:CAV3_D2148 [CAV] @ sb=102.305697, FS1_CH01:CAV4_D2152 [CAV] @ sb=102.703385, FS1_CSS:DH_D2163 [BEND] @ sb=103.798309, FS1_CSS:DH_D2169 [BEND] @ sb=104.348309, FS1_CSS:DH_D2174 [BEND] @ sb=104.898309, FS1_CSS:DH_D2180 [BEND] @ sb=105.448309, FS1_CSS:DCV_D2189 [VCOR] @ sb=106.573309, FS1_CSS:DCH_D2189 [HCOR] @ sb=106.573309, FS1_CSS:QH_D2194 [QUAD] @ sb=106.923309, FS1_CSS:QV_D2202 [QUAD] @ sb=107.711159, FS1_CSS:DCV_D2210 [VCOR] @ sb=108.611159, FS1_CSS:DCH_D2210 [HCOR] @ sb=108.611159, FS1_CSS:QH_D2215 [QUAD] @ sb=108.961159, FS1_CSS:QV_D2220 [QUAD] @ sb=109.461159, FS1_CSS:QV_D2254 [QUAD] @ sb=112.861159, FS1_CSS:DCV_D2257 [VCOR] @ sb=113.303665, FS1_CSS:DCH_D2257 [HCOR] @ sb=113.303665, FS1_CSS:QH_D2260 [QUAD] @ sb=113.511159, FS1_CSS:QV_D2272 [QUAD] @ sb=114.711159, FS1_CSS:DCV_D2276 [VCOR] @ sb=115.199815, FS1_CSS:DCH_D2276 [HCOR] @ sb=115.199815, FS1_CSS:QH_D2280 [QUAD] @ sb=115.499009, FS1_CSS:DH_D2290 [BEND] @ sb=116.514603, FS1_CSS:DH_D2296 [BEND] @ sb=117.064603, FS1_CSS:DH_D2302 [BEND] @ sb=117.714603, FS1_CSS:DH_D2308 [BEND] @ sb=118.264603, FS1_MGB01:CAV_D2320 [CAV] @ sb=119.483733, FS1_MGB01:CAV_D2323 [CAV] @ sb=119.802058, FS1_MGB01:CAV_D2327 [CAV] @ sb=120.120384, FS1_MGB01:CAV_D2325 [CAV] @ sb=120.120384, FS1_MGB01:CAV_D2330 [CAV] @ sb=120.438709, FS1_CSS:DCV_D2351 [VCOR] @ sb=122.726306, FS1_CSS:DCH_D2351 [HCOR] @ sb=122.726306, FS1_CSS:QH_D2356 [QUAD] @ sb=123.076306, FS1_CSS:QH_D2362 [QUAD] @ sb=123.701306, FS1_CSS:DCV_D2367 [VCOR] @ sb=124.351306, FS1_CSS:DCH_D2367 [HCOR] @ sb=124.351306, FS1_CSS:QV_D2372 [QUAD] @ sb=124.701306, FS1_CSS:QH_D2377 [QUAD] @ sb=125.201306, FS1_CSS:DCV_D2381 [VCOR] @ sb=125.696306, FS1_CSS:DCH_D2381 [HCOR] @ sb=125.696306, FS1_BBS:DH_D2394 [BEND] @ sb=126.486180, FS1_BBS:DCV_D2412 [VCOR] @ sb=128.836833, FS1_BBS:DCH_D2412 [HCOR] @ sb=128.836833, FS1_BBS:QH_D2416 [QUAD] @ sb=129.086833, FS1_BBS:S_D2419 [SEXT] @ sb=129.476833, FS1_BBS:QV_D2424 [QUAD] @ sb=129.936833, FS1_BBS:DH_D2435 [BEND] @ sb=130.590056, FS1_BBS:DH_D2453 [BEND] @ sb=132.400708, FS1_BBS:QV_D2463 [QUAD] @ sb=133.844584, FS1_BBS:S_D2469 [SEXT] @ sb=134.404584, FS1_BBS:QH_D2472 [QUAD] @ sb=134.694584, FS1_BBS:DCV_D2476 [VCOR] @ sb=135.194584, FS1_BBS:DCH_D2476 [HCOR] @ sb=135.194584, FS1_BBS:DH_D2494 [BEND] @ sb=136.504584, FS1_BMS:DCV_D2507 [VCOR] @ sb=138.335237, FS1_BMS:DCH_D2507 [HCOR] @ sb=138.335237, FS1_BMS:QV_D2511 [QUAD] @ sb=138.580237, FS1_BMS:QH_D2515 [QUAD] @ sb=139.030237, FS1_BMS:DCV_D2534 [VCOR] @ sb=141.005237, FS1_BMS:DCH_D2534 [HCOR] @ sb=141.005237, FS1_BMS:QV_D2539 [QUAD] @ sb=141.355237, FS1_BMS:QH_D2563 [QUAD] @ sb=143.805237, FS1_BMS:DCV_D2584 [VCOR] @ sb=146.052835, FS1_BMS:DCH_D2584 [HCOR] @ sb=146.052835, FS1_BMS:QV_D2590 [QUAD] @ sb=146.453642, FS1_BMS:QH_D2597 [QUAD] @ sb=147.203642, FS1_MGB02:CAV_D2606 [CAV] @ sb=148.088649, FS1_MGB02:CAV_D2609 [CAV] @ sb=148.406974, FS1_MGB02:CAV_D2613 [CAV] @ sb=148.725300, FS1_MGB02:CAV_D2616 [CAV] @ sb=149.043625, FS1_BMS:DCV_D2640 [VCOR] @ sb=151.672285, FS1_BMS:DCH_D2640 [HCOR] @ sb=151.672285, FS1_BMS:QH_D2645 [QUAD] @ sb=152.022285, FS1_BMS:QV_D2654 [QUAD] @ sb=152.894690, FS1_BMS:DCV_D2662 [VCOR] @ sb=153.794690, FS1_BMS:DCH_D2662 [HCOR] @ sb=153.794690, FS1_BMS:QH_D2666 [QUAD] @ sb=154.144690, FS1_BMS:QH_D2679 [QUAD] @ sb=155.444690, FS1_BMS:DCV_D2688 [VCOR] @ sb=156.435283, FS1_BMS:DCH_D2688 [HCOR] @ sb=156.435283, FS1_BMS:QV_D2693 [QUAD] @ sb=156.843690, FS1_BMS:QH_D2698 [QUAD] @ sb=157.343690]
Retrieve data in a time range defined by from one time to another time, the time should be formated as ISO-8601 format, pyarchappl correctly handles the daylight saving time zone, e.g. in America/New_York zone.
By default, the input tuple of time to function dformat is localized at America/New_York.
# Define the time range from 2020-11-16, 15:10 to 2020-11-16, 16:17, EST
t0 = dformat(2020, 11, 16, 15, 10)
t1 = dformat(2020, 11, 16, 16, 17)
# The output t0 and t1 is converted to UTC time zone, which is 5 hours ahead of EST now.
print(t0)
print(t1)
2020-11-16T20:10:00.000Z 2020-11-16T21:17:00.000Z
Additionally, do:
Which could be achieved by setting the parameters of function _getdataset().
data_set = get_dataset(bpms, ['X', 'Y'], t0, t1,
resample="1S", verbose=1, client=data_client)
# set verbose > 0 will display a progress bar for the retrieval, in this case, totally made 150 requests.
[2020-12-02T09:29:53.118138] Fetched all, time cost: 8.2 seconds.
data_set.info()
<class 'pandas.core.frame.DataFrame'> DatetimeIndex: 4020 entries, 2020-11-16 15:10:00-05:00 to 2020-11-16 16:16:59-05:00 Freq: S Columns: 150 entries, VA:LS1_CA01:BPM_D1129:X_RD to VA:FS1_BMS:BPM_D2702:Y_RD dtypes: float64(150) memory usage: 4.6 MB
data_set.describe()
VA:LS1_CA01:BPM_D1129:X_RD | VA:LS1_CA01:BPM_D1129:Y_RD | VA:LS1_CA01:BPM_D1144:X_RD | VA:LS1_CA01:BPM_D1144:Y_RD | VA:LS1_WA01:BPM_D1155:X_RD | VA:LS1_WA01:BPM_D1155:Y_RD | VA:LS1_CA02:BPM_D1163:X_RD | VA:LS1_CA02:BPM_D1163:Y_RD | VA:LS1_CA02:BPM_D1177:X_RD | VA:LS1_CA02:BPM_D1177:Y_RD | ... | VA:FS1_BMS:BPM_D2587:X_RD | VA:FS1_BMS:BPM_D2587:Y_RD | VA:FS1_BMS:BPM_D2600:X_RD | VA:FS1_BMS:BPM_D2600:Y_RD | VA:FS1_BMS:BPM_D2665:X_RD | VA:FS1_BMS:BPM_D2665:Y_RD | VA:FS1_BMS:BPM_D2690:X_RD | VA:FS1_BMS:BPM_D2690:Y_RD | VA:FS1_BMS:BPM_D2702:X_RD | VA:FS1_BMS:BPM_D2702:Y_RD | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
count | 4.020000e+03 | 4.020000e+03 | 4.020000e+03 | 4020.000000 | 4020.000000 | 4020.000000 | 4020.000000 | 4020.000000 | 4020.000000 | 4020.000000 | ... | 4020.000000 | 4020.000000 | 4020.000000 | 4020.000000 | 4020.000000 | 4020.000000 | 4020.000000 | 4020.000000 | 4020.000000 | 4020.000000 |
mean | 5.318739e-06 | -7.408959e-06 | -1.179285e-04 | -0.000336 | -0.000958 | -0.000963 | -0.001801 | -0.002056 | 0.000712 | 0.000353 | ... | -0.000329 | -0.008596 | -0.004140 | -0.005371 | -0.005903 | -0.002286 | 0.000666 | 0.000194 | 0.002451 | 0.002098 |
std | 2.496021e-09 | 1.772378e-07 | 4.913073e-07 | 0.000001 | 0.001051 | 0.001018 | 0.002396 | 0.002345 | 0.000726 | 0.000698 | ... | 0.001118 | 0.007362 | 0.005924 | 0.004485 | 0.006434 | 0.000838 | 0.001859 | 0.000911 | 0.003520 | 0.001108 |
min | 5.314098e-06 | -7.742169e-06 | -1.190655e-04 | -0.000340 | -0.002377 | -0.002340 | -0.005043 | -0.005230 | 0.000008 | -0.000221 | ... | -0.014774 | -0.020388 | -0.034180 | -0.012603 | -0.015101 | -0.005383 | -0.001147 | -0.001378 | -0.000427 | -0.000011 |
25% | 5.316601e-06 | -7.560853e-06 | -1.183103e-04 | -0.000337 | -0.002369 | -0.002329 | -0.005016 | -0.005201 | 0.000203 | -0.000215 | ... | -0.001634 | -0.017976 | -0.011855 | -0.011067 | -0.014445 | -0.002700 | -0.000863 | -0.000598 | -0.000246 | 0.001670 |
50% | 5.318709e-06 | -7.408243e-06 | -1.179311e-04 | -0.000336 | -0.000170 | -0.000230 | -0.000006 | -0.000367 | 0.000206 | -0.000106 | ... | 0.000332 | -0.003966 | 0.000205 | -0.002593 | -0.001339 | -0.002630 | -0.000490 | -0.000308 | -0.000133 | 0.001716 |
75% | 5.320892e-06 | -7.257442e-06 | -1.175302e-04 | -0.000335 | -0.000168 | -0.000228 | -0.000001 | -0.000363 | 0.001661 | 0.001283 | ... | 0.000596 | -0.003794 | 0.000389 | -0.002487 | -0.001272 | -0.002299 | 0.002913 | 0.001306 | 0.007041 | 0.003281 |
max | 5.323512e-06 | -7.084694e-06 | -1.167591e-04 | -0.000333 | -0.000087 | -0.000059 | 0.000065 | 0.000028 | 0.001790 | 0.001299 | ... | 0.000806 | 0.000108 | 0.000703 | 0.000063 | 0.000039 | 0.000017 | 0.020418 | 0.001960 | 0.019851 | 0.004013 |
8 rows × 150 columns
data_set.head(2)
VA:LS1_CA01:BPM_D1129:X_RD | VA:LS1_CA01:BPM_D1129:Y_RD | VA:LS1_CA01:BPM_D1144:X_RD | VA:LS1_CA01:BPM_D1144:Y_RD | VA:LS1_WA01:BPM_D1155:X_RD | VA:LS1_WA01:BPM_D1155:Y_RD | VA:LS1_CA02:BPM_D1163:X_RD | VA:LS1_CA02:BPM_D1163:Y_RD | VA:LS1_CA02:BPM_D1177:X_RD | VA:LS1_CA02:BPM_D1177:Y_RD | ... | VA:FS1_BMS:BPM_D2587:X_RD | VA:FS1_BMS:BPM_D2587:Y_RD | VA:FS1_BMS:BPM_D2600:X_RD | VA:FS1_BMS:BPM_D2600:Y_RD | VA:FS1_BMS:BPM_D2665:X_RD | VA:FS1_BMS:BPM_D2665:Y_RD | VA:FS1_BMS:BPM_D2690:X_RD | VA:FS1_BMS:BPM_D2690:Y_RD | VA:FS1_BMS:BPM_D2702:X_RD | VA:FS1_BMS:BPM_D2702:Y_RD | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
time | |||||||||||||||||||||
2020-11-16 15:10:00-05:00 | 0.000005 | -0.000008 | -0.000118 | -0.000336 | -0.000087 | -0.000095 | -2.884984e-07 | -0.000364 | 0.0002 | -0.000218 | ... | 0.000679 | -0.003908 | 0.000518 | -0.002564 | -0.001352 | -0.002718 | -0.000976 | -0.000615 | -0.000319 | 0.001734 |
2020-11-16 15:10:01-05:00 | 0.000005 | -0.000008 | -0.000118 | -0.000336 | -0.000087 | -0.000095 | -2.884984e-07 | -0.000364 | 0.0002 | -0.000218 | ... | 0.000679 | -0.003908 | 0.000518 | -0.002564 | -0.001352 | -0.002718 | -0.000976 | -0.000615 | -0.000319 | 0.001734 |
2 rows × 150 columns
data_set.tail(2)
VA:LS1_CA01:BPM_D1129:X_RD | VA:LS1_CA01:BPM_D1129:Y_RD | VA:LS1_CA01:BPM_D1144:X_RD | VA:LS1_CA01:BPM_D1144:Y_RD | VA:LS1_WA01:BPM_D1155:X_RD | VA:LS1_WA01:BPM_D1155:Y_RD | VA:LS1_CA02:BPM_D1163:X_RD | VA:LS1_CA02:BPM_D1163:Y_RD | VA:LS1_CA02:BPM_D1177:X_RD | VA:LS1_CA02:BPM_D1177:Y_RD | ... | VA:FS1_BMS:BPM_D2587:X_RD | VA:FS1_BMS:BPM_D2587:Y_RD | VA:FS1_BMS:BPM_D2600:X_RD | VA:FS1_BMS:BPM_D2600:Y_RD | VA:FS1_BMS:BPM_D2665:X_RD | VA:FS1_BMS:BPM_D2665:Y_RD | VA:FS1_BMS:BPM_D2690:X_RD | VA:FS1_BMS:BPM_D2690:Y_RD | VA:FS1_BMS:BPM_D2702:X_RD | VA:FS1_BMS:BPM_D2702:Y_RD | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
time | |||||||||||||||||||||
2020-11-16 16:16:58-05:00 | 0.000005 | -0.000007 | -0.000118 | -0.000337 | -0.000143 | -0.000062 | 0.000056 | 0.000021 | 0.000013 | -0.000005 | ... | 0.000008 | 0.000068 | 0.000012 | 0.000041 | -8.031803e-08 | -0.000006 | -0.00002 | -0.000011 | 0.000006 | -0.000005 |
2020-11-16 16:16:59-05:00 | 0.000005 | -0.000007 | -0.000118 | -0.000337 | -0.000143 | -0.000062 | 0.000056 | 0.000021 | 0.000013 | -0.000005 | ... | 0.000008 | 0.000068 | 0.000012 | 0.000041 | -8.031803e-08 | -0.000006 | -0.00002 | -0.000011 | 0.000006 | -0.000005 |
2 rows × 150 columns
data_set_x = data_set.iloc[:, 0::2]
data_set_y = data_set.iloc[:, 1::2]
data_set_x.head(2)
VA:LS1_CA01:BPM_D1129:X_RD | VA:LS1_CA01:BPM_D1144:X_RD | VA:LS1_WA01:BPM_D1155:X_RD | VA:LS1_CA02:BPM_D1163:X_RD | VA:LS1_CA02:BPM_D1177:X_RD | VA:LS1_WA02:BPM_D1188:X_RD | VA:LS1_CA03:BPM_D1196:X_RD | VA:LS1_CA03:BPM_D1211:X_RD | VA:LS1_WA03:BPM_D1222:X_RD | VA:LS1_CB01:BPM_D1231:X_RD | ... | VA:FS1_CSS:BPM_D2383:X_RD | VA:FS1_BBS:BPM_D2421:X_RD | VA:FS1_BBS:BPM_D2466:X_RD | VA:FS1_BMS:BPM_D2502:X_RD | VA:FS1_BMS:BPM_D2537:X_RD | VA:FS1_BMS:BPM_D2587:X_RD | VA:FS1_BMS:BPM_D2600:X_RD | VA:FS1_BMS:BPM_D2665:X_RD | VA:FS1_BMS:BPM_D2690:X_RD | VA:FS1_BMS:BPM_D2702:X_RD | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
time | |||||||||||||||||||||
2020-11-16 15:10:00-05:00 | 0.000005 | -0.000118 | -0.000087 | -2.884984e-07 | 0.0002 | 0.000083 | 0.000225 | -0.00003 | 0.000003 | -0.000097 | ... | -0.001219 | -0.002086 | -0.004205 | 0.00147 | 0.001525 | 0.000679 | 0.000518 | -0.001352 | -0.000976 | -0.000319 |
2020-11-16 15:10:01-05:00 | 0.000005 | -0.000118 | -0.000087 | -2.884984e-07 | 0.0002 | 0.000083 | 0.000225 | -0.00003 | 0.000003 | -0.000097 | ... | -0.001219 | -0.002086 | -0.004205 | 0.00147 | 0.001525 | 0.000679 | 0.000518 | -0.001352 | -0.000976 | -0.000319 |
2 rows × 75 columns
# x readings
heatmap(data_set_x, cmap='bwr')
<matplotlib.axes._subplots.AxesSubplot at 0x7fe1da016670>
# y readings
heatmap(data_set_y, cmap='bwr')
<matplotlib.axes._subplots.AxesSubplot at 0x7fe1d8587550>
(When the trajectory correction was performed)
stdx_series = data_set_x.std(axis=1) * 1e3 # m --> mm
stdy_series = data_set_y.std(axis=1) * 1e3 # m --> mm
plt.plot(stdx_series, label='$\sigma_x$', lw=2)
plt.plot(stdy_series, label='$\sigma_y$', lw=2)
plt.xlabel('Time in UTC', fontsize=14)
plt.ylabel('Trajectory Deviation [mm]', fontsize=14)
plt.grid()
plt.legend()
<matplotlib.legend.Legend at 0x7fe1d9da6ee0>
t_min_x = stdx_series.idxmin()
t_min_y = stdy_series.idxmin()
x_min = stdx_series.min()
y_min = stdy_series.min()
print(f"Sigma x reaches min at: {t_min_x}, of value: {x_min:.3f} [mm]")
print(f"Sigma y reaches min at: {t_min_y}, of value: {y_min:.3f} [mm]")
Sigma x reaches min at: 2020-11-16 15:49:06-05:00, of value: 0.024 [mm] Sigma y reaches min at: 2020-11-16 15:49:13-05:00, of value: 0.043 [mm]
Signature: get_dataset_at_time(element_list, field_list, at_time, **kws)
Docstring:
Pull data from Archiver Appliance, with a given list of devices and dynamic fields at a
specified time.
Parameters
----------
element_list : list
A list of high-level device element objects.
field_list : list
A list of field names should applied to all elements, otherwise skip invalid field which
does not belong to some element.
at_time : str
A string of time of the data in ISO8601 format.
Keyword Arguments
-----------------
client : ArchiverDataClient
ArchiverDataClient instance, default is FRIBArchiverDataClient.
handle : str
PV handle for field list, by default is 'readback', other options: 'setpoint'.
tz : str
Name of timezone for the returned index, default is local zone.
Returns
-------
r : dataframe
Pandas dataframe.
# 2020-11-16 15:49:13-05:00
t = dformat(2020, 11, 16, 15, 49, 13)
df = get_dataset_at_time(non_diag_devices, ['I', 'AMP', 'PHA'],
t, handle='setpoint',
client=data_client,
tz='America/New_York')
df
Name | Field | Type | Pos | Setpoint | time | |
---|---|---|---|---|---|---|
0 | LS1_CA01:DCV_D1132 | I | VCOR | 0.785365 | 1.455600e-04 | 2020-11-16 14:20:57.045000-05:00 |
1 | LS1_CA01:DCH_D1132 | I | HCOR | 0.785365 | 2.150000e-06 | 2020-11-16 14:20:56.940000-05:00 |
2 | LS1_CA01:DCV_D1146 | I | VCOR | 2.260604 | 1.834400e-04 | 2020-11-16 15:48:49.753000-05:00 |
3 | LS1_CA01:DCH_D1146 | I | HCOR | 2.260604 | -3.482000e-05 | 2020-11-16 15:48:49.750000-05:00 |
4 | LS1_CA02:DCV_D1165 | I | VCOR | 4.158460 | 1.690400e-04 | 2020-11-16 15:48:49.764000-05:00 |
... | ... | ... | ... | ... | ... | ... |
113 | FS1_BMS:DCH_D2584 | I | HCOR | 146.052835 | -1.300000e-07 | 2020-11-16 15:48:50.019000-05:00 |
114 | FS1_BMS:DCV_D2640 | I | VCOR | 151.672285 | 7.689300e-04 | 2020-11-16 15:48:50.026000-05:00 |
115 | FS1_BMS:DCH_D2640 | I | HCOR | 151.672285 | 2.198000e-05 | 2020-11-16 15:48:50.025000-05:00 |
116 | FS1_BMS:DCV_D2662 | I | VCOR | 153.794690 | -4.819400e-04 | 2020-11-16 15:48:50.031000-05:00 |
117 | FS1_BMS:DCH_D2662 | I | HCOR | 153.794690 | -2.711000e-05 | 2020-11-16 15:48:50.029000-05:00 |
118 rows × 6 columns
from archappl.contrib.data import export_as_settings_manager_datafile
Signature: export_as_settings_manager_datafile(df, filepath, **kws)
Docstring:
Export dataframe as the datafile for Settings Manager.
Parameters
----------
df : dataframe
Data of device settings.
filepath : str
Full path of exported data file.
Keyword Arguments
-----------------
note : str
Note string.
tags : str
Tags string.
machine : str
Name of machine, default is 'FRIB'.
segment : str
Name of segment, default is 'LINAC'.
export_as_settings_manager_datafile(df, f'settings_at_{t}.csv', note='Settings pulled from archiver',
machine='FRIB_VA', segment='LS1FS1')
!cat settings_at_2020-11-16T20\:49\:13.000Z.csv
# timestamp: 1605559639.725576 # datetime: 2020-11-16T15:47:19.725576 # note: Settings pulled from archiver # filepath: settings_at_2020-11-16T20:49:13.000Z.csv # user: tong # ion_name: # ion_number: # ion_mass: # ion_charge: # machine: FRIB_VA # segment: LS1FS1 # tags: # app: Settings Manager # version: 5.0 Name,Field,Type,Pos,Setpoint,Readback,Last Setpoint,Tolerance,Writable LS1_CA01:DCV_D1132,I,VCOR,0.7853645,0.00014556,nan,nan,0.1,True LS1_CA01:DCH_D1132,I,HCOR,0.7853645,2.15e-06,nan,nan,0.1,True LS1_CA01:DCV_D1146,I,VCOR,2.2606035,0.00018344,nan,nan,0.1,True LS1_CA01:DCH_D1146,I,HCOR,2.2606035,-3.482e-05,nan,nan,0.1,True LS1_CA02:DCV_D1165,I,VCOR,4.1584595,0.00016904,nan,nan,0.1,True LS1_CA02:DCH_D1165,I,HCOR,4.1584595,-0.00012577,nan,nan,0.1,True LS1_CA02:DCV_D1180,I,VCOR,5.6336985,0.00014821,nan,nan,0.1,True LS1_CA02:DCH_D1180,I,HCOR,5.6336985,5.185e-05,nan,nan,0.1,True LS1_CA03:DCV_D1199,I,VCOR,7.5315545,0.00013771,nan,nan,0.1,True LS1_CA03:DCH_D1199,I,HCOR,7.5315545,2.356e-05,nan,nan,0.1,True LS1_CA03:DCV_D1214,I,VCOR,9.0067935,0.00021266,nan,nan,0.1,True LS1_CA03:DCH_D1214,I,HCOR,9.0067935,-3.084e-05,nan,nan,0.1,True LS1_CB01:DCV_D1235,I,VCOR,11.14420784,0.00085521,nan,nan,0.1,True LS1_CB01:DCH_D1235,I,HCOR,11.14420784,2.514e-05,nan,nan,0.1,True LS1_CB01:DCV_D1255,I,VCOR,13.14193368,0.00080906,nan,nan,0.1,True LS1_CB01:DCH_D1255,I,HCOR,13.14193368,3.316e-05,nan,nan,0.1,True LS1_CB01:DCV_D1275,I,VCOR,15.13965952,0.00075353,nan,nan,0.1,True LS1_CB01:DCH_D1275,I,HCOR,15.13965952,-3.677e-05,nan,nan,0.1,True LS1_CB02:DCV_D1299,I,VCOR,17.51663236,0.00061836,nan,nan,0.1,True LS1_CB02:DCH_D1299,I,HCOR,17.51663236,3.682e-05,nan,nan,0.1,True LS1_CB02:DCV_D1319,I,VCOR,19.5143582,0.0004911,nan,nan,0.1,True LS1_CB02:DCH_D1319,I,HCOR,19.5143582,1.759e-05,nan,nan,0.1,True LS1_CB02:DCV_D1339,I,VCOR,21.51208404,0.00049448,nan,nan,0.1,True LS1_CB02:DCH_D1339,I,HCOR,21.51208404,-4.45e-06,nan,nan,0.1,True LS1_CB03:DCV_D1363,I,VCOR,23.88905688,0.00039428,nan,nan,0.1,True LS1_CB03:DCH_D1363,I,HCOR,23.88905688,2.663e-05,nan,nan,0.1,True LS1_CB03:DCV_D1383,I,VCOR,25.88678272,0.00033497,nan,nan,0.1,True LS1_CB03:DCH_D1383,I,HCOR,25.88678272,2.014e-05,nan,nan,0.1,True LS1_CB03:DCV_D1403,I,VCOR,27.88450856,0.00036422,nan,nan,0.1,True LS1_CB03:DCH_D1403,I,HCOR,27.88450856,3.4e-07,nan,nan,0.1,True LS1_CB04:DCV_D1426,I,VCOR,30.2614814,0.00029213,nan,nan,0.1,True LS1_CB04:DCH_D1426,I,HCOR,30.2614814,2.186e-05,nan,nan,0.1,True LS1_CB04:DCV_D1446,I,VCOR,32.25920724,0.00026242,nan,nan,0.1,True LS1_CB04:DCH_D1446,I,HCOR,32.25920724,2.022e-05,nan,nan,0.1,True LS1_CB04:DCV_D1466,I,VCOR,34.25693308,0.00029325,nan,nan,0.1,True LS1_CB04:DCH_D1466,I,HCOR,34.25693308,1.74e-06,nan,nan,0.1,True LS1_CB05:DCV_D1490,I,VCOR,36.63390592,0.00022976,nan,nan,0.1,True LS1_CB05:DCH_D1490,I,HCOR,36.63390592,1.95e-05,nan,nan,0.1,True LS1_CB05:DCV_D1510,I,VCOR,38.63163176,0.00021353,nan,nan,0.1,True LS1_CB05:DCH_D1510,I,HCOR,38.63163176,1.9e-05,nan,nan,0.1,True LS1_CB05:DCV_D1530,I,VCOR,40.6293576,0.00024265,nan,nan,0.1,True LS1_CB05:DCH_D1530,I,HCOR,40.6293576,2.86e-06,nan,nan,0.1,True LS1_CB06:DCV_D1554,I,VCOR,43.00633044,0.00018918,nan,nan,0.1,True LS1_CB06:DCH_D1554,I,HCOR,43.00633044,1.82e-05,nan,nan,0.1,True LS1_CB06:DCV_D1574,I,VCOR,45.00405628,0.00018111,nan,nan,0.1,True LS1_CB06:DCH_D1574,I,HCOR,45.00405628,1.712e-05,nan,nan,0.1,True LS1_CB06:DCV_D1594,I,VCOR,47.00178212,0.00021416,nan,nan,0.1,True LS1_CB06:DCH_D1594,I,HCOR,47.00178212,3.88e-06,nan,nan,0.1,True LS1_CB07:DCV_D1618,I,VCOR,49.37875496,0.00016468,nan,nan,0.1,True LS1_CB07:DCH_D1618,I,HCOR,49.37875496,1.538e-05,nan,nan,0.1,True LS1_CB07:DCV_D1637,I,VCOR,51.3764808,0.00016049,nan,nan,0.1,True LS1_CB07:DCH_D1637,I,HCOR,51.3764808,1.766e-05,nan,nan,0.1,True LS1_CB07:DCV_D1657,I,VCOR,53.37420664,0.00019645,nan,nan,0.1,True LS1_CB07:DCH_D1657,I,HCOR,53.37420664,2.36e-06,nan,nan,0.1,True LS1_CB08:DCV_D1681,I,VCOR,55.75117948,0.00014625,nan,nan,0.1,True LS1_CB08:DCH_D1681,I,HCOR,55.75117948,1.503e-05,nan,nan,0.1,True LS1_CB08:DCV_D1701,I,VCOR,57.74890532,0.00014546,nan,nan,0.1,True LS1_CB08:DCH_D1701,I,HCOR,57.74890532,1.666e-05,nan,nan,0.1,True LS1_CB08:DCV_D1721,I,VCOR,59.74663116,0.00017756,nan,nan,0.1,True LS1_CB08:DCH_D1721,I,HCOR,59.74663116,3.44e-06,nan,nan,0.1,True LS1_CB09:DCV_D1745,I,VCOR,62.123604,0.00013135,nan,nan,0.1,True LS1_CB09:DCH_D1745,I,HCOR,62.123604,1.341e-05,nan,nan,0.1,True LS1_CB09:DCV_D1765,I,VCOR,64.12132984,0.00013235,nan,nan,0.1,True LS1_CB09:DCH_D1765,I,HCOR,64.12132984,1.604e-05,nan,nan,0.1,True LS1_CB09:DCV_D1785,I,VCOR,66.11905568,0.00016133,nan,nan,0.1,True LS1_CB09:DCH_D1785,I,HCOR,66.11905568,3.43e-06,nan,nan,0.1,True LS1_CB10:DCV_D1809,I,VCOR,68.49602852,0.00011953,nan,nan,0.1,True LS1_CB10:DCH_D1809,I,HCOR,68.49602852,1.207e-05,nan,nan,0.1,True LS1_CB10:DCV_D1829,I,VCOR,70.49375436,0.0001209,nan,nan,0.1,True LS1_CB10:DCH_D1829,I,HCOR,70.49375436,1.502e-05,nan,nan,0.1,True LS1_CB10:DCV_D1849,I,VCOR,72.4914802,0.00015105,nan,nan,0.1,True LS1_CB10:DCH_D1849,I,HCOR,72.4914802,3.19e-06,nan,nan,0.1,True LS1_CB11:DCV_D1872,I,VCOR,74.86845304,0.0001088,nan,nan,0.1,True LS1_CB11:DCH_D1872,I,HCOR,74.86845304,1.274e-05,nan,nan,0.1,True LS1_CB11:DCV_D1892,I,VCOR,76.86617888,0.00011545,nan,nan,0.1,True LS1_CB11:DCH_D1892,I,HCOR,76.86617888,9.95e-06,nan,nan,0.1,True LS1_CB11:DCV_D1912,I,VCOR,78.86390472,0.00012897,nan,nan,0.1,True LS1_CB11:DCH_D1912,I,HCOR,78.86390472,1.334e-05,nan,nan,0.1,True LS1_BTS:DCV_D1937,I,VCOR,81.36595376,-3.87e-06,nan,nan,0.1,True LS1_BTS:DCH_D1937,I,HCOR,81.36595376,-2.093e-05,nan,nan,0.1,True LS1_BTS:DCV_D1964,I,VCOR,84.01395376,-1.254e-05,nan,nan,0.1,True LS1_BTS:DCH_D1964,I,HCOR,84.01395376,1.742e-05,nan,nan,0.1,True LS1_BTS:DCV_D1997,I,VCOR,87.34895376,1e-08,nan,nan,0.1,True LS1_BTS:DCH_D1997,I,HCOR,87.34895376,-1.4e-07,nan,nan,0.1,True LS1_BTS:DCV_D2024,I,VCOR,90.05516576,1.6e-07,nan,nan,0.1,True LS1_BTS:DCH_D2024,I,HCOR,90.05516576,-9e-08,nan,nan,0.1,True LS1_BTS:DCV_D2061,I,VCOR,93.71048676,6.136e-05,nan,nan,0.1,True LS1_BTS:DCH_D2061,I,HCOR,93.71048676,6e-08,nan,nan,0.1,True LS1_BTS:DCV_D2114,I,VCOR,98.98555576,0.00010865,nan,nan,0.1,True LS1_BTS:DCH_D2114,I,HCOR,98.98555576,-5.9e-07,nan,nan,0.1,True FS1_CSS:DCV_D2189,I,VCOR,106.57330876,0.00057446,nan,nan,0.1,True FS1_CSS:DCH_D2189,I,HCOR,106.57330876,1.23e-06,nan,nan,0.1,True FS1_CSS:DCV_D2210,I,VCOR,108.61115876,-0.00059569,nan,nan,0.1,True FS1_CSS:DCH_D2210,I,HCOR,108.61115876,-8.3e-07,nan,nan,0.1,True FS1_CSS:DCV_D2257,I,VCOR,113.30366476,2.3e-07,nan,nan,0.1,True FS1_CSS:DCH_D2257,I,HCOR,113.30366476,7e-08,nan,nan,0.1,True FS1_CSS:DCV_D2276,I,VCOR,115.19981476,-2.8e-07,nan,nan,0.1,True FS1_CSS:DCH_D2276,I,HCOR,115.19981476,5e-08,nan,nan,0.1,True FS1_CSS:DCV_D2351,I,VCOR,122.72630576,0.00113443,nan,nan,0.1,True FS1_CSS:DCH_D2351,I,HCOR,122.72630576,3.399e-05,nan,nan,0.1,True FS1_CSS:DCV_D2367,I,VCOR,124.35130576,-0.00032726,nan,nan,0.1,True FS1_CSS:DCH_D2367,I,HCOR,124.35130576,-0.00022171,nan,nan,0.1,True FS1_CSS:DCV_D2381,I,VCOR,125.69630576,7e-07,nan,nan,0.1,True FS1_CSS:DCH_D2381,I,HCOR,125.69630576,0.0008024,nan,nan,0.1,True FS1_BBS:DCV_D2412,I,VCOR,128.836832826,-5.3e-07,nan,nan,0.1,True FS1_BBS:DCH_D2412,I,HCOR,128.836832826,0.00328714,nan,nan,0.1,True FS1_BBS:DCV_D2476,I,VCOR,135.19458396,-3.8e-07,nan,nan,0.1,True FS1_BBS:DCH_D2476,I,HCOR,135.19458396,0.0032,nan,nan,0.1,True FS1_BMS:DCV_D2507,I,VCOR,138.335236526,2.5e-07,nan,nan,0.1,True FS1_BMS:DCH_D2507,I,HCOR,138.335236526,0.00095394,nan,nan,0.1,True FS1_BMS:DCV_D2534,I,VCOR,141.005236526,7e-07,nan,nan,0.1,True FS1_BMS:DCH_D2534,I,HCOR,141.005236526,-0.00023002,nan,nan,0.1,True FS1_BMS:DCV_D2584,I,VCOR,146.052834626,-4.8e-07,nan,nan,0.1,True FS1_BMS:DCH_D2584,I,HCOR,146.052834626,-1.3e-07,nan,nan,0.1,True FS1_BMS:DCV_D2640,I,VCOR,151.672284626,0.00076893,nan,nan,0.1,True FS1_BMS:DCH_D2640,I,HCOR,151.672284626,2.198e-05,nan,nan,0.1,True FS1_BMS:DCV_D2662,I,VCOR,153.794689726,-0.00048194,nan,nan,0.1,True FS1_BMS:DCH_D2662,I,HCOR,153.794689726,-2.711e-05,nan,nan,0.1,True
BPM readings from 2020-10-13, 16:00:00 DST to 20:00:00 DST, when trajectory correction with ORM was performing.
from archappl.contrib import read_csv
data = read_csv('/home/tong/Downloads/bpm_data.csv')
data_x = data.iloc[:, 0::2]
data_y = data.iloc[:, 1::2]
data.info()
<class 'pandas.core.frame.DataFrame'> DatetimeIndex: 14400 entries, 2020-10-13 16:00:00-04:00 to 2020-10-13 19:59:59-04:00 Columns: 150 entries, FE_MEBT:BPM_D1056:XPOS_RD to FS1_BMS:BPM_D2690:YPOS_RD dtypes: float64(150) memory usage: 16.6 MB
# x
heatmap(data_x, cmap='bwr', vmin=-15, vmax=15)
<matplotlib.axes._subplots.AxesSubplot at 0x7fe1c8434e50>
# y
heatmap(data_y, cmap='bwr', vmin=-15, vmax=15)
<matplotlib.axes._subplots.AxesSubplot at 0x7fe1c83aa400>
plt.plot(data_x.std(axis=1), label='$\sigma_x$', lw=2)
plt.plot(data_y.std(axis=1), label='$\sigma_y$', lw=2)
plt.xlabel('Time in UTC', fontsize=14)
plt.ylabel('Trajectory Deviation [mm]', fontsize=14)
plt.grid()
plt.legend()
<matplotlib.legend.Legend at 0x7fe1c8275d60>