为大型强子对撞机信号监测项目提供的带有信号访问和处理api的软件包。

lhcsmapi的Python项目详细描述


大型强子对撞机信号监测api包

这是一个带有api的包,用于lhc信号监测项目的信号访问和处理。

先决条件

为了使用api,必须将python包安装程序安装为

pipinstall--userlhcsmapi

https://pypi.org/project/lhcsmapi/查看最新版本

api依赖于必须以类似方式安装的外部python包。软件包列表存储在<;u>;requirements.txt<;/u>;文件中。

api的文档存储在http://cern.ch/lhc-sm-api。下面是代码结构的摘录和最常用函数的片段。

项目结构

  • 卡尔
    • calsdbsignal.py
    • detectbmodepattern.py
  • 星号
    • dbsignal.py
    • signal.py
    • 信号电气.py
    • 信号处理.py
    • signalutilities.py
  • 流入
    • infloxdbsignal.py
  • 死后
    • pmdbsignal.py
    • pmdbrequest.py
  • 元数据
    • metadata.py
    • qpsmetadata.json
    • fgcmetadata.json
    • ipqd2metadata.json
    • ipqd4metadata.json
    • ipqd8metadata.json
    • qpsmetadata.json
    • rbmetadata.json
    • rqmetadata.json
  • time.py
  • timer.py

时间

时间类封装提供了一组用于在各种时间格式之间转换的方法。此外,它还为给定时段之间的天数提供生成器。主要方法有:

  • time.convertToUnix时间戳(输入,单位='ns')
  • time.converttostring(输入,单位='ns')
  • time.convertToDateTime(输入,单位='ns')
  • time.converttopandastimestamp(输入,单位='ns')
fromlhcsmapi.TimeimportTimestringDate="2018-05-01 00:00:00"Time.convertToUnixTimestamp(stringDate,unit="ns")>>>1525125600000000000
fromlhcsmapi.TimeimportTimefromdatetimeimportdatetimedateTime=datetime(2017,7,2,1,23,27,0)Time.convertToString(stringDate,unit="ns")>>>'2017-07-02 01:23:27'
fromlhcsmapi.TimeimportTimestringDate="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:00STD>)
fromlhcsmapi.TimeimportTimestringDate="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.getQueryPeriodUnixtTime()
fromlhcsmapi.TimeimportTimestartTimeData=1426220459491000000endTimeData=1426220479491000000Time.getQueryPeriodInUnixTime(startTimeData,endTimeData,None,tz='Europe/Zurich')>>>(1426220459491000000,1426220479491000000)
fromlhcsmapi.TimeimportTimestartTimeData=1426220459491000000durationData=[(20,'s')]Time.getQueryPeriodInUnixTime(startTimeData,None,durationData,tz='Europe/Zurich')>>>(1426220459491000000,1426220479491000000)
fromlhcsmapi.TimeimportTimestartTimeData=1426220469491000000durationData=[(10,'s'),(10,'s')]Time.getQueryPeriodInUnixTime(startTimeData,None,durationData,tz='Europe/Zurich')>>>(1426220459491000000,1426220479491000000)
  • time.daterange(开始日期,结束日期)
fromlhcsmapi.TimeimportTimefromdatetimeimportdatestartDate=date(2014,1,1)endDate=date(2014,1,3)forsingleDateinTime.daterange(startDate,endDate):print(singleDate)>>>2014-01-01>>>2014-01-02
fromdatetimeimportdatestartDate=date(2014,1,5)endDate=date(2014,1,3)forsingleDateinTime.daterange(startDate,endDate):print(singleDate)>>>

元数据

元数据类存储有关信号和电路名称的信息。

fromlhcsmapi.metadata.MetadataimportMetadatamagnetType="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类封装pm数据库查询,以简化给定时间段内pm事件的查询创建和浏览。

  • 预期成功响应
fromsource.post_mortem.PmDbRequestimportPmDbRequestsource="*"system="QPS"className="DQAMCNMB_PMHSU"selectedDayTimeStamp=1426201200000000000eventDurationSeconds=24*60*60PmDbRequest.findEvents(source,system,className,eventTime=selectedDayTimeStamp,duration=[(eventDurationSeconds,'s')])>>>[('B20L5',1426220469491000000),>>>...
  • 预期失败响应:
fromsource.post_mortem.PmDbRequestimportPmDbRequestsource="*"system="QPS"className="DQAMCNMB_PMHSU"selectedDayTimeStamp=1426201200000000000eventDurationSeconds=1PmDbRequest.findEvents(source,system,className,eventTime=selectedDayTimeStamp,duration=[(eventDurationSeconds,'s')])>>>UserWarning:QueryingPostMortemfailedusingthefollowingquery:http://pm-api-pro/v2/pmdata/header/within/duration?system=QPS&className=DQAMCNMB_PMHSU&source=*&fromTimestampInNanos=1426201200000000000&durationInNanos=1000000000returnednodatasoanemptystringisbeingreturned

信号

signal类封装使用信号数据库的行为。它提供了用于访问事后分析、cals和infloxdbapi的读写方法。

  • CALS成功响应
fromlhcsmapi.dbsignal.SignalimportSignalimportpytimberldb=pytimber.LoggingDB()arcCurrentName="RPTE.UA47.RB.A45:I_MEAS"startTime=1426220459491000000endTime=1426220479491000000I_MEAS=Signal().read('cals',name=arcCurrentName,startTime=startTime,endTime=endTime,ldb=ldb)print(I_MEAS.head())>>>RPTE.UA47.RB.A45:I_MEAS>>>1.426220e+0910071.5>>>1.426220e+0910076.5>>>1.426220e+0910081.5>>>1.426220e+0910086.5>>>1.426220e+0910091.5
fromlhcsmapi.dbsignal.SignalimportSignalimportpytimberldb=pytimber.LoggingDB()arcCurrentName="RPTE.UA47.RB.A45:I_MEAS"startTime=1426220459491000000duration=[(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+0910071.5>>>1.426220e+0910076.5>>>1.426220e+0910081.5>>>1.426220e+0910086.5>>>1.426220e+0910091.5
fromlhcsmapi.dbsignal.SignalimportSignalimportpytimberldb=pytimber.LoggingDB()arcCurrentName="RPTE.UA47.RB.A45:I_MEAS"startTime=1426220469491000000duration=[(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+0910071.5>>>1.426220e+0910076.5>>>1.426220e+0910081.5>>>1.426220e+0910086.5>>>1.426220e+0910091.5
  • CALS失败响应
fromlhcsmapi.dbsignal.SignalimportSignalimportpytimberldb=pytimber.LoggingDB()arcCurrentName="RPTE.UA47.RB.A45:I_MEAS"startTime=1426220469491000000duration=[(10,'s'),(10,'s')]I_MEAS=Signal().read('cals',name=arcCurrentName,startTime=startTime,duration=duration)print(I_MEAS.head())>>>Exception:Youhavetoprovideainstanceofpytimber.LoggingDBviatheldbkeyword
fromlhcsmapi.dbsignal.SignalimportSignalimportpytimberldb=pytimber.LoggingDB()arcCurrentName="RPTE.UA47.RB.A45:I_MEA"startTime=1426220469491000000duration=[(10,'s'),(10,'s')]I_MEAS=Signal().read('cals',name=arcCurrentName,startTime=startTime,duration=duration,ldb=ldb)print(I_MEAS.head())>>>WARNING:pytimber.pytimber:Novariablesfound.>>>EmptyDataFrame>>>Columns:[]>>>Index:[]>>>UserWarning:QueryingCALSwiththeparametersname:RPTE.UA47.RB.A45:I_MEA,starttime:1426220459.4910002andendtime:1426220479.4910002returnednodata.>>>AnemptyDataFramewasreturned.>>>___________________________________________________________________________________>>>ReproducetheerrorusingtherawpytimberAPI:>>>importpytimber>>>ldb=pytimber.LoggingDB()>>>ldb.get(RPTE.UA47.RB.A45:I_MEA,1426220459.4910002,1426220479.49100
  • PM成功响应
fromlhcsmapi.dbsignal.SignalimportSignalsystem="QPS"className="DQAMCNMB_PMHSU"magnet="B20L5"signalName="I_HDS_4"timestamp=1426220469491000000I_HDS_4=Signal().read('pm',system=system,className=className,source=magnet,signalName=signalName,eventTime=timestamp)print(I_HDS_4.head())>>>I_HDS_4>>>14262204694910208320.089648>>>14262204694910260400.091555>>>14262204694910312480.091555>>>14262204694910364560.093463>>>14262204694910416640.091555
  • PM故障响应
fromlhcsmapi.dbsignal.SignalimportSignalsystem="QPS"className="DQAMCNMB_PMHSU"magnet="B20L5"signalName="I_HDS_4"timestamp=1426220469491000000I_HDS_4=Signal().read('pm',system=system,className=className,source=magnet,signalName=signalName,eventTime=timestamp)print(I_HDS_4.head())>>>QueryingPostMortemfailedusingthefollowingquery:>>>http://pm-api-pro/v2/pmdata/signal?system=QPS&className=DQAMCNMB_PMHS&source=B20L5&timestampInNanos=1426220469491000000&signal=I_HDS_4

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
从FXML转换为JAVA时,不会加载javafx映像   泛型Java模板调用运行时推断   javascript为什么我的活动没有响应我在样式文件中所做的更改?   如何在HttpClient(java、apache)中自动重定向   java CSV到H2字符编码不匹配   在Java中使用BorderLayout按比例调整用户界面大小   Java中的重定向异常   java RecyclerView搜索过滤器仅过滤一个值   java标准api multiselect与count和distinct不起作用   java为什么我在Solr上做的每一个查询都会占用我10s MB的堆内存?   java如何使用方法解决:锁定帐户三次后?   java如何实现睡眠以显示图像的幻灯片   在Java中,按对象参数对映射<对象,列表<对象>>进行排序   java无法从密钥库读取密钥   java试图将水平recycleview嵌套到垂直recycleview中   认识C++对Web应用开发的重要性   使用共享对象实例化多个Runnable的java含义?   javabeans何时使用JavaBean?