为大型强子对撞机信号监测项目提供的带有信号访问和处理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第三方库


热门话题
安卓软件包与java代码中的类型冲突   谷歌应用引擎Java还是Python?   如何将java bean传递到jsp页面,以便jqQrid使用json显示?   在编译kotlin代码时,kotlin编译器如何处理java代码?   java不准确地更改JTextPane中的文本颜色   反应式编程AWS SDK v2 SdkAsyncHttpClient使用Java 11 Java实现。网http HttpClient sendAsync   在Spring AMQP中,java根据队列的消费者计数来消费队列   java在ArrayList的add()方法中创建新对象会导致内存泄漏。我能做什么不同的事?   未将java BufferedReader特定行追加到字符串   用于聊天程序格式化的java JavaFX 2文本区   java如何从netbeans项目生成exexutable文件?   swing如何在Java中使用JButton操作调整JWindow的宽度和高度?   java有没有办法在spring boot中使用jasypt aes加密和解密?   java通过使用泛型如何将映射作为集合传递给方法?   java如何替换不推荐使用的构造函数DynamoDBMapperFieldModel