# 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.convertToUnixTimestamp(input, unit='ns')
- Time.convertToString(input, unit='ns')
- Time.convertToDatetime(input, unit='ns')
- Time.convertToPandasTimestamp(input, unit='ns')
```python
from lhcsmapi.Time import Time
stringDate = "2018-05-01 00:00:00"
Time.convertToUnixTimestamp(stringDate, unit = "ns")
>>> 1525125600000000000
```
```python
from lhcsmapi.Time import Time
from datetime import datetime
dateTime = datetime(2017, 7, 2, 1, 23, 27, 0)
Time.convertToString(stringDate, unit = "ns")
>>> '2017-07-02 01:23:27'
```
```python
from lhcsmapi.Time import Time
stringDate = "2019-01-02 23:59:11"
Time.convertToDatetime(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.convertToPandasTimestamp(stringDate, unit = "ns")
>>> Timestamp('2019-07-10 10:23:27.013000+0200', tz='Europe/Zurich')
```
- Time.getQueryPeriodInUnixTime()
```python
from lhcsmapi.Time import Time
startTimeData = 1426220459491000000
endTimeData = 1426220479491000000
Time.getQueryPeriodInUnixTime(startTimeData, endTimeData, None, tz='Europe/Zurich')
>>> (1426220459491000000, 1426220479491000000)
```
```python
from lhcsmapi.Time import Time
startTimeData = 1426220459491000000
durationData = [(20, 's')]
Time.getQueryPeriodInUnixTime(startTimeData, None, durationData, tz='Europe/Zurich')
>>> (1426220459491000000, 1426220479491000000)
```
```python
from lhcsmapi.Time import Time
startTimeData = 1426220469491000000
durationData = [(10, 's'), (10, 's')]
Time.getQueryPeriodInUnixTime(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.metadata.Metadata 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.findEvents(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.findEvents(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
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
PyPI 官网下载 | lhcsmapi-1.1.211.tar.gz (180个子文件)
setup.cfg 38B
RB_QH_2013_1_1-6-0-0_Timestamp_features.csv 1.51MB
nQPS_RB_busBarProtectionDetails.csv 102KB
RB_LayoutDetails.csv 81KB
nQPS_RQ_busBarProtectionDetails.csv 70KB
RB_MagnetHistory.csv 60KB
RQ_LayoutDetails.csv 45KB
RB_MagnetCellQpscrateSector.csv 38KB
ReferenceDischarges.csv 36KB
RB_CrateToDiodeMap.csv 30KB
IPQ_DfbInfo.csv 25KB
RQ_MagnetToCrateMap.csv 25KB
RQ_CrateToDiodeMap.csv 25KB
RB_CrateToMagnetAndVoltageFeelerMap.csv 25KB
RB_MagnetToCrateAndVoltageFeelerMap.csv 24KB
IPQ_LayoutDetails.csv 21KB
RQ_CrateToVoltageFeelerMap.csv 19KB
RQ_MagnetHistory.csv 15KB
IPQ_MagnetHistory.csv 4KB
RQ_DfbInfo.csv 3KB
IPD_DfbInfo.csv 3KB
RB_DfbInfo.csv 3KB
IT_DfbInfo.csv 3KB
IT_LayoutDetails.csv 3KB
IPD_LayoutDetails.csv 3KB
refTemperatureEE.csv 1KB
IT_MagnetHistory.csv 1KB
rbReference_PNO_b2.csv 1KB
beam_mode.csv 627B
IPD_MagnetHistory.csv 617B
RB_EE_Info.csv 557B
RQ_EE_Info.csv 511B
MANIFEST.in 359B
MetadataExample.ipynb 3KB
IPQ4_METADATA.json 49KB
IPQ2_METADATA.json 45KB
RQ_METADATA.json 25KB
RB_METADATA.json 17KB
IPQ8_METADATA.json 13KB
IPD2_B1B2_METADATA.json 12KB
IT_METADATA.json 11KB
IPD2_METADATA.json 7KB
600A_METADATA.json 4KB
README.md 10KB
PKG-INFO 13KB
PKG-INFO 13KB
test_SignalMetadata.py 59KB
test_QuenchHeaterAnalysis.py 34KB
test_MappingMetadata.py 30KB
test_Time.py 29KB
test_DiodeLeadResistanceAnalysis.py 26KB
Time.py 19KB
test_Signal.py 18KB
SignalMetadata.py 16KB
Signal.py 16KB
RbQuery.py 15KB
PmDbRequest.py 12KB
dashboard.py 11KB
QuenchHeaterAnalysis.py 10KB
test_CalsDbSignal.py 9KB
SignalAnalysis.py 9KB
CalsDbSignal.py 9KB
DiodeLeadResistancePlot.py 8KB
PmDbSignal.py 8KB
InfluxDbSignal.py 8KB
QuenchHeaterBrowser.py 7KB
DiodeLeadResistanceAnalysis.py 7KB
SignalMetadataBrowserModule.py 7KB
test_SignalUtilities.py 7KB
MappingMetadata.py 7KB
EnergyExtractionAnalysis.py 7KB
EnergyExtractionPlot.py 7KB
ExpSignalAnalysis.py 6KB
SignalPreviewModule.py 6KB
test_PmDbRequest.py 6KB
DiodeLeadResistanceQuery.py 5KB
filterToolbox.py 5KB
QhDisplayModuleMediator.py 5KB
NqdsQuery.py 5KB
QuerySaveToCsvModule.py 5KB
test_PmDbSignal.py 5KB
IqdsAnalysis.py 4KB
QuerySaveBaseModule.py 4KB
FgcPmSearchModuleMediator.py 4KB
PowerConverterPlot.py 3KB
EnergyExtractionQuery.py 3KB
SignalProcessing.py 3KB
FgcPmSearchBaseModule.py 3KB
BusbarResistanceAnalysis.py 3KB
QhBrowserBaseModule.py 3KB
editDF.py 3KB
QuenchHeaterQuery.py 3KB
IqdsPlot.py 3KB
StartEndTimeModule.py 3KB
PowerConverterQuery.py 3KB
PowerConverterAnalysis.py 2KB
BusbarResistanceQuery.py 2KB
DateTimeBaseModule.py 2KB
test_ExponentialSignalAnalysis.py 2KB
SignalUtilities.py 2KB
共 180 条
- 1
- 2
资源评论
挣扎的蓝藻
- 粉丝: 13w+
- 资源: 15万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功