# LHC Signal Monitoring API Package
<img src = "https://gitlab.cern.ch/LHCData/lhc-sm-api/raw/master/figures/logo.png" width=25%>
This is a package with an API for signal access and processing for the LHC Signal Monitoring project.
## Prerequisites
In order to use the API has to be installed with a python package installer as
```python
pip install --user lhcsmapi
```
Check the latest version at <a href="https://pypi.org/project/lhcsmapi/">https://pypi.org/project/lhcsmapi/</a>
The API relies on external python packages which have to be installed in a similar manner. The list of packages is stored in the <u><i>requirements.txt</i></u> file.
The documentation for the API is stored at <a href="http://cern.ch/lhc-sm-api">http://cern.ch/lhc-sm-api</a>. Below please find an excerpt of the code structure and snippets of the most frequently used functions.
## Project structure
- cals
- CalsDbSignal.py
- DetectBmodePattern.py
- dbsignal
- DbSignal.py
- Signal.py
- SignalElectrical.py
- SignalProcessing.py
- SignalUtilities.py
- influx
- InfluxDbSignal.py
- post_mortem
- PmDbSignal.py
- PmDbRequest.py
- metadata
- Metadata.py
- QpsMetadata.json
- FgcMetadata.json
- Ipqd2Metadata.json
- Ipqd4Metadata.json
- Ipqd8Metadata.json
- QpsMetadata.json
- RbMetadata.json
- RqMetadata.json
- Time.py
- Timer.py
## Time
Time class encapsulates provides a set of methods for conversion between various time formats. In addition it provides a generator for days between given periods. Main methods are:
- Time.to_unix_timestamp(input, unit='ns')
- Time.to_string(input, unit='ns')
- Time.to_datetime(input, unit='ns')
- Time.to_pandas_timestamp(input, unit='ns')
```python
from lhcsmapi.Time import Time
stringDate = "2018-05-01 00:00:00"
Time.to_unix_timestamp(stringDate, unit = "ns")
>>> 1525125600000000000
```
```python
from lhcsmapi.Time import Time
from datetime import datetime
dateTime = datetime(2017, 7, 2, 1, 23, 27, 0)
Time.to_string(stringDate, unit = "ns")
>>> '2017-07-02 01:23:27'
```
```python
from lhcsmapi.Time import Time
stringDate = "2019-01-02 23:59:11"
Time.to_datetime(stringDate, unit = "ns")
>>> datetime.datetime(2019, 1, 2, 23, 59, 11, tzinfo=<DstTzInfo 'Europe/Zurich' CET+1:00:00 STD>)
```
```python
from lhcsmapi.Time import Time
stringDate = "2019-07-10 10:23:27.013"
Time.to_pandas_timestamp(stringDate, unit = "ns")
>>> Timestamp('2019-07-10 10:23:27.013000+0200', tz='Europe/Zurich')
```
- Time.get_query_period_in_unix_time()
```python
from lhcsmapi.Time import Time
startTimeData = 1426220459491000000
endTimeData = 1426220479491000000
Time.get_query_period_in_unix_time(startTimeData, endTimeData, None, tz='Europe/Zurich')
>>> (1426220459491000000, 1426220479491000000)
```
```python
from lhcsmapi.Time import Time
startTimeData = 1426220459491000000
durationData = [(20, 's')]
Time.get_query_period_in_unix_time(startTimeData, None, durationData, tz='Europe/Zurich')
>>> (1426220459491000000, 1426220479491000000)
```
```python
from lhcsmapi.Time import Time
startTimeData = 1426220469491000000
durationData = [(10, 's'), (10, 's')]
Time.get_query_period_in_unix_time(startTimeData, None, durationData, tz='Europe/Zurich')
>>> (1426220459491000000, 1426220479491000000)
```
- Time.daterange(startDate, endDate)
```python
from lhcsmapi.Time import Time
from datetime import date
startDate = date(2014, 1, 1)
endDate = date(2014, 1, 3)
for singleDate in Time.daterange(startDate, endDate):
print(singleDate)
>>> 2014-01-01
>>> 2014-01-02
```
```python
from datetime import date
startDate = date(2014, 1, 5)
endDate = date(2014, 1, 3)
for singleDate in Time.daterange(startDate, endDate):
print(singleDate)
>>>
```
## Metadata
Metadata class stores information about signal and circuit names.
```python
from lhcsmapi import Metadata
magnetType = "MB"
circuitType = "RB"
component = "QPS"
magnetTypeToSignalMetadata = Metadata.getMetadata(component, magnetType)
magnetTypeToSignalMetadata[magnetType]
>>> {'className': 'DQAMCNMB_PMHSU',
>>> 'sourcePrefix': 'MB_',
>>> 'system': 'QPS',
>>> 'source': '*',
>>> 'magnetNameRegExp': '[ABC]{1}\\d+[LR]{1}[1-8]{1}',
>>> 'uNames': ['U_HDS_1', 'U_HDS_2', 'U_HDS_3', 'U_HDS_4'],
>>> 'iNames': ['I_HDS_1', 'I_HDS_2', 'I_HDS_3', 'I_HDS_4'],
>>> 'rNames': ['R_HDS_1', 'R_HDS_2', 'R_HDS_3', 'R_HDS_4'],
>>> 'dRNames': ['dR_HDS_1', 'dR_HDS_2', 'dR_HDS_3', 'dR_HDS_4'],
>>> 'filterNames': ['U_HDS_1',
>>> 'U_HDS_2',
>>> 'U_HDS_3',
>>> 'U_HDS_4',
>>> 'I_HDS_1',
>>> 'I_HDS_2',
>>> 'I_HDS_3',
>>> 'I_HDS_4'],
>>> 'uNamesCals': ['MB.{}:U_HDS_1',
>>> 'MB.{}:U_HDS_2',
>>> 'MB.{}:U_HDS_3',
>>> 'MB.{}:U_HDS_4'],
>>>'iNamesCals': ['MB.{}:I_HDS_1',
>>> 'MB.{}:I_HDS_2',
>>> 'MB.{}:I_HDS_3',
>>> 'MB.{}:I_HDS_4']}
```
## PmDbQuery
PmDbRequest class encapsulates PM database queries in order to simplify the query creation as well as browsing of PM events for a given period.
- Expected Success Response
```python
from source.post_mortem.PmDbRequest import PmDbRequest
source = "*"
system = "QPS"
className = "DQAMCNMB_PMHSU"
selectedDayTimeStamp = 1426201200000000000
eventDurationSeconds = 24*60*60
PmDbRequest.find_events(source, system, className,
eventTime = selectedDayTimeStamp, duration = [(eventDurationSeconds, 's')])
>>> [('B20L5', 1426220469491000000),
>>> ...
```
- Expected Fail Response::
```python
from source.post_mortem.PmDbRequest import PmDbRequest
source = "*"
system = "QPS"
className = "DQAMCNMB_PMHSU"
selectedDayTimeStamp = 1426201200000000000
eventDurationSeconds = 1
PmDbRequest.find_events(source, system, className,
eventTime = selectedDayTimeStamp, duration = [(eventDurationSeconds, 's')])
>>> UserWarning: Querying Post Mortem failed using the following query:
http://pm-api-pro/v2/pmdata/header/within/duration?system=QPS&className=DQAMCNMB_PMHSU&source=*&fromTimestampInNanos=1426201200000000000&durationInNanos=1000000000 returned no data so an empty string is being returned
```
## Signal
Signal class encapsulates behavior for working with signal databases. It provides read and write methods for accessing Post Mortem, CALS and InfluxDB APIs.
<img src = "https://gitlab.cern.ch/LHCData/lhc-sm-api/raw/master/figures/signal.png" width=100%>
- CALS Success Response
```python
from lhcsmapi.dbsignal.Signal import Signal
import pytimber
ldb = pytimber.LoggingDB()
arcCurrentName = "RPTE.UA47.RB.A45:I_MEAS"
startTime = 1426220459491000000
endTime = 1426220479491000000
I_MEAS = Signal().read('cals', name=arcCurrentName, startTime = startTime, endTime = endTime, ldb = ldb)
print(I_MEAS.head())
>>> RPTE.UA47.RB.A45:I_MEAS
>>> 1.426220e+09 10071.5
>>> 1.426220e+09 10076.5
>>> 1.426220e+09 10081.5
>>> 1.426220e+09 10086.5
>>> 1.426220e+09 10091.5
```
```python
from lhcsmapi.dbsignal.Signal import Signal
import pytimber
ldb = pytimber.LoggingDB()
arcCurrentName = "RPTE.UA47.RB.A45:I_MEAS"
startTime = 1426220459491000000
duration = [(20, 's')]
I_MEAS = Signal().read('cals', name=arcCurrentName, startTime = startTime, duration = duration, ldb = ldb)
print(I_MEAS.head())
>>> RPTE.UA47.RB.A45:I_MEAS
>>> 1.426220e+09 10071.5
>>> 1.426220e+09 10076.5
>>> 1.426220e+09 10081.5
>>> 1.426220e+09 10086.5
>>> 1.426220e+09 10091.5
```
```python
from lhcsmapi.dbsignal.Signal import Signal
import pytimber
ldb = pytimber.LoggingDB()
arcCurrentName = "RPTE.UA47.RB.A45:I_MEAS"
startTime = 1426220469491000000
duration = [(10, 's'), (10, 's')]
I_MEAS = Signal().read('cals', name=arcCurrentName, startTime = startTime, duration = duration, ldb = ldb)
print(I_MEAS.head())
>>> RPTE.UA47.RB.A45:I_MEAS
>>> 1.426220e+09 10071.5
>>> 1.426220e+09 10076.5
>>> 1.426220e+09 10081.5
>>> 1.426220e+09 10086.5
>>> 1.42622
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
PyPI 官网下载 | lhcsmapi-1.2.92.tar.gz (206个子文件)
setup.cfg 38B
RB_QH_2013_1_1-6-0-0_Timestamp_features.csv 1.51MB
600A_LayoutDetails.csv 476KB
600A_MagnetHistory.csv 474KB
60A-120A_LayoutDetails.csv 168KB
nQPS_RB_busBarProtectionDetails.csv 102KB
600A_DfbInfo.csv 89KB
RB_LayoutDetails.csv 81KB
nQPS_RQ_busBarProtectionDetails.csv 70KB
60A-120A_MagnetHistory.csv 64KB
RB_MagnetHistory.csv 60KB
RQ_LayoutDetails.csv 45KB
RB_MagnetCellQpscrateSector.csv 38KB
ReferenceDischarges.csv 36KB
RQ_MagnetCellQpscrateSector.csv 31KB
RB_CrateToDiodeMap.csv 30KB
RB_CrateToMagnetAndVoltageFeelerMap.csv 26KB
IPQ_DfbInfo.csv 25KB
RQ_MagnetToCrateMap.csv 25KB
RQ_CrateToDiodeMap.csv 25KB
RB_MagnetToCrateAndVoltageFeelerMap.csv 24KB
IPQ_LayoutDetails.csv 21KB
RQ_CrateToVoltageFeelerMap.csv 19KB
RQ_MagnetHistory.csv 15KB
600A_EE.csv 5KB
IPQ_MagnetHistory.csv 4KB
IPD_DfbInfo.csv 3KB
IT_DfbInfo.csv 3KB
IT_LayoutDetails.csv 3KB
IPD_LayoutDetails.csv 3KB
RQ_Reference_PNO_b3.csv 2KB
refTemperatureEE.csv 1KB
IT_MagnetHistory.csv 1KB
RB_Reference_PNO_b2.csv 1KB
beam_mode.csv 627B
IPD_MagnetHistory.csv 617B
acceptanceLimits.csv 502B
OperationPeriods.csv 436B
scalarParametersEE_before_2018_01_01.csv 140B
scalarParametersEE_after_2018_01_01.csv 140B
scalarParametersLEADS.csv 32B
scalarParametersPC.csv 26B
MANIFEST.in 394B
MetadataExample.ipynb 3KB
600A_METADATA.json 211KB
60A_METADATA.json 203KB
80-120A_METADATA.json 101KB
IPQ4_METADATA.json 49KB
IPQ2_METADATA.json 45KB
RQ_METADATA.json 27KB
RB_METADATA.json 19KB
IPQ8_METADATA.json 13KB
IPD2_B1B2_METADATA.json 12KB
IT_METADATA.json 11KB
IPD2_METADATA.json 7KB
README.md 10KB
PKG-INFO 13KB
PKG-INFO 13KB
test_SignalMetadata.py 76KB
test_QuenchHeaterAnalysis.py 33KB
test_MappingMetadata.py 31KB
test_Time.py 29KB
test_DiodeLeadResistanceAnalysis.py 26KB
Time.py 19KB
test_Signal.py 18KB
QueryBuilder.py 18KB
SignalMetadata.py 18KB
Signal.py 16KB
RbQuery.py 16KB
PmDbRequest.py 12KB
dashboard.py 11KB
BusbarResistanceAnalysis.py 11KB
QuenchHeaterAnalysis.py 10KB
SignalAnalysis.py 9KB
test_CalsDbSignal.py 9KB
MappingMetadata.py 8KB
CalsDbSignal.py 8KB
InfluxDbSignal.py 8KB
BusbarResistanceQuery.py 8KB
PmDbSignal.py 8KB
DiodeLeadResistancePlot.py 8KB
QuenchHeaterBrowser.py 7KB
DiodeLeadResistanceAnalysis.py 7KB
SignalMetadataBrowserModule.py 7KB
test_SignalUtilities.py 7KB
ExpSignalAnalysis.py 7KB
EnergyExtractionPlot.py 6KB
NxcalsDbSignal.py 6KB
SignalPreviewModule.py 6KB
test_PmDbRequest.py 6KB
DiodeLeadResistanceQuery.py 5KB
filterToolbox.py 5KB
QhDisplayModuleMediator.py 5KB
EnergyExtractionAnalysis.py 5KB
QuerySaveToCsvModule.py 5KB
FgcPmSearchBaseModule.py 5KB
AssertionBuilder.py 5KB
IqdsAnalysis.py 4KB
test_PmDbSignal.py 4KB
EnergyExtractionQuery.py 4KB
共 206 条
- 1
- 2
- 3
资源评论
挣扎的蓝藻
- 粉丝: 13w+
- 资源: 15万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功