# 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
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
共62个文件
py:40个
json:8个
csv:6个
资源分类:Python库 所属语言:Python 资源全名:lhcsmapi-1.1.23.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源推荐
资源详情
资源评论
收起资源包目录
lhcsmapi-1.1.23.tar.gz (62个子文件)
lhcsmapi-1.1.23
MANIFEST.in 880B
PKG-INFO 13KB
lhcsmapi.egg-info
PKG-INFO 13KB
SOURCES.txt 2KB
top_level.txt 14B
dependency_links.txt 1B
test
test_reference
__init__.py 0B
test_Reference.py 562B
__init__.py 0B
test_Time.py 27KB
test_signal
test_DbSignal.py 2KB
test_SignalUtilities.py 7KB
test_CalsSignal.py 8KB
__init__.py 0B
test_PmSignal.py 4KB
test_Signal.py 18KB
test_metadata
__init__.py 0B
test_Metadata.py 15KB
test_post_mortem
test_PmQuery.py 6KB
__init__.py 0B
setup.cfg 38B
setup.py 718B
README.md 10KB
lhcsmapi
Time.py 18KB
cals
CalsDbSignal.py 8KB
__init__.py 0B
DetectBmodePattern.py 2KB
influx
__init__.py 0B
InfluxDbSignal.py 9KB
Timer.py 761B
metadata
RqfMetadata.json 5KB
Ipqd8Metadata.json 2KB
Ipqd2Metadata.json 2KB
RqdMetadata.json 4KB
qps_crate
CrateToMagnetAndVoltageFeelerMap.csv 22KB
MagnetToCrateAndVoltageFeelerMap.csv 22KB
__init__.py 0B
Ipqd4Metadata.json 2KB
busbar
nQPS_RQ_busBarProtectionDetails.csv 53KB
nQPS_RB_busBarProtectionDetails.csv 76KB
600AMetadata.json 8KB
RbMetadata.json 16KB
Metadata.py 6KB
beam_mode
beam_mode.csv 627B
__init__.py 0B
Ipd2Metadata.json 486B
dbsignal
DbSignal.py 1KB
ExponentialSignalAnalysis.py 4KB
SignalUtilities.py 2KB
Signal.py 16KB
__init__.py 0B
SignalAnalysis.py 10KB
SignalProcessing.py 3KB
SignalElectrical.py 1KB
__init__.py 18B
reference
Reference.py 295B
__init__.py 0B
quench_heaters
__init__.py 0B
ReferenceDischarges.csv 40KB
post_mortem
PmDbSignal.py 7KB
__init__.py 0B
PmDbRequest.py 11KB
共 62 条
- 1
资源评论
挣扎的蓝藻
- 粉丝: 13w+
- 资源: 15万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 使用ASP.NET Core和Entity Framework Core来构建一个基本的进销存系统.rar
- 深度学习经典数据集+FER2013面部表情识别+附带使用方法的python代码
- Python中,要实现连接多个相机并识别多个二维码.rar
- 使用FFT算法对一个信号进行分析.rar
- 171cms游戏应用下载系统源码.zip
- 基于jsp+servlet+mysql蛋糕甜品店购物网站源码+数据库(期末大作业).zip
- Java项目:在线蛋糕商城系统(java+jsp+mysql)源码+数据库+期末大作业.zip
- ZapyaClient10_7-1.apk
- 织梦cms站长导航网站源码.zip
- 基于SSM+MySQL的网络投票调查问卷系统源码+数据库(java期末大作业).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功