Tags =
[
"ip", "bt", "polaris_den_v09", "axuv_ca_01", "axuv_tor05_01", "axuv_tor07_01", "axuv_tor14_01", "vs_c3_aa001",
"vs_ha_aa001", "vs_ha_aa005", "sxr_cb_024", "sxr_cc_049", "vl", "exsad1", "exsad2", "exsad4", "exsad5", "exsad7", "exsad8", "exsad10", "hxm2d", "hxm3d",
"hxm5d", "Iohp", "Ivfp", "Ihfp", "MA_HFS02_R01", "MA_HFS08_R01", "MA_HFS11_R01", "MA_HFS17_R03", "MA_POL_CA01T", "MA_POL_CA01N", "MA_TOR1_R01", "MA_TOR1_R09"
]
其中,axuv_tor07_01、axuv_tor14_01诊断有信号是反的(但波形正常),所以调用数据时,要由负变正。

其中,
Shot : 炮号
DownTime : 电流下降时间,包括破裂炮等离子体电流猝灭时间和正常炮等离子体电流下降时间。0,表示此炮ip电流不可用。
其他诊断Tag :,标签仅True、False两类。True,表示此炮对应的此诊断信号可用;False,表示此炮对应的此诊断信号不可用。
调用: from DDB.Service import Query
db = Query()
作用: 返回输入炮的信息
输入: 炮号
输出: 字典,此炮信息
使用:
>>> shot_info = db.tag(1066648)
{'shot': 1066648, 'ip': True, 'IsDisrupt': False, 'DownTime': 0.5923408076837159, 'bt': True, ... 'MA_TOR1_R09': True}
作用: 返回数据库中记录的归一化参数、诊断采样率、滤波低通上限。

输入:
tags,诊断列表,返回列表中包含的诊断的参数。不输入时,默认为数据库中全部诊断。
items,参数名列表,返回列表中包含的参数名的参数。不输入时,默认为数据库中全部参数名的参数。
输出: 字典,各诊断的参数
使用:
>>> parm = db.get_parameter(tags=[r"\ip", r"\bt"], items=["max", "min"])
{'ip': {'max': 225.0, 'min': 0.0}, 'bt': {'max': 2.0, 'min': 0.0}}
返回给定炮号列表里满足条件的炮
输入:
shotlist,给定炮号列表。不输入时,默认为数据库中全部炮
filter,筛选条件
输出: 列表,满足条件的炮号
使用:
>>> my_query = {'IsDisrupt': True, 'IpFlat':{'<span data-formula="gt':50}}
>>> db.query(my_query)
[1046770, 1046794, 1046795, 1046806, 1046800 1046858, . . . , 1049184, 1050467, 1052286, 1050560, 1052295]
注意: 筛选条件filter的格式要求是MongoDB数据查询格式。使用时,对非专业人士不太友好。因此写了query_valid和query_range简化。
作用: 针对数据库中储存信息为True/False的Tag,返回符合条件的炮。
输入:
shotlist,给定炮号列表。不输入时,默认为数据库中全部炮
tag_true,条件,Tag列表。返回的炮必须满足tag_true内的tag都是True
tag_false,条件,Tag列表。返回的炮必须满足tag_false内的tag都是False
输出: 列表,满足条件的炮号
使用:
作用: 针对数据库中储存信息为数值的Tag,返回符合条件的炮。
输入:
taglist, 储存信息为数值的Tag列表。
shotlist,给定炮号列表。不输入时,默认为数据库中全部炮。
lower,数值下限列表,“>=”。
upper,数值上限列表,“<=”。
输出: 列表,满足条件的炮号
使用:
作用: 统计并显示各给定诊断在给定炮号列表中可用炮的数量;最后统计并显示在给定炮号列表中,所有给定诊断信号都可用的炮的数量,及其中正常炮和破裂炮的个数。返回诊断都可用炮的列表。
输入:
shotlist,给定炮号列表。
taglist,给定诊断列表
needND,bool值。默认为False,仅返回诊断都可用炮的列表;True,返回 诊断都可用炮的列表、正常炮的列表、破裂炮的列表。(needND,need normal shots and disrupt shots)
show,bool值。默认为True,显示各给定诊断在给定炮号列表中可用炮的数量、所有给定诊断信号都可用的炮的数量及其中正常炮和破裂炮的个数。False,不显示。
输出:
needND=False时,返回诊断都可用炮的列表;
needND=True时,返回诊断都可用炮的列表、正常炮的列表、破裂炮的列表。
使用:

将炮的数据以hdf5文件保存到本地,储存形式:

其中,data group储存此炮各诊断的数据;meta group储存此炮信息,如等离子体下降时间 DownTime、平顶电流大小 IpFlat,以及data中已经下载好的各诊断信号是否可用(如 \ip : True 表示ip信号可用; \bt : False 表示bt信号不可用)。
接口:
save(data=None, time=None, shot=None, tag=None)
其中,shot,炮号;tag,诊断名;data,数据序列;time,时间序列。
使用:
>>> from DDB.Data import Exporter
>>> exporter = Exporter(root_path='D:\J-TEXT')
>>> data = [0.1, 0.5, 0.3, 0.4, 0.2]
>>> time = [0, 0.1, 0.2, 0.3, 0.4]
>>> exporter.save(data, time, 1051234, '\ip')
注意: 使用者不需要管meta group,meta group中的炮信息会在程序运行时自动从数据库中下载。
调用: from DDB.Data import Reader
reader = Reader(root_path='D:\J-TEXT')
作用: 返回data或meta里的全部tag,查看hdf5文件内部情况。
输入:
shot,炮号
type,选择group。默认"data",可选["data",”meta“]
输出: 返回data或meta里的全部tag
使用:
>>> query = reader.tags(1066648, type="data")
['\bt', '\ip']
作用: 读取指定炮号的指定tag的数据。
输入:
shot,炮号
tag,诊断名
type,选择group。默认"data",可选["data",”meta“]
输出:
type="data"时,返回data group内指定诊断的数据元组 ,(data, time)。
type="meta"时,返回meta group内指定诊断的信息值。
使用:
作用: 读取指定炮号的给定tag列表中所有tag的数据。 返回字典
输入:
shot,炮号
tags,诊断列表
type,选择group。默认"data",可选["data",”meta“]
输出:
type="data"时,返回data group内给定tag列表中所有tag的数据 。返回元组的字典,{tag : (data, time)}。
type="meta"时,返回meta group内给定tag列表中所有tag的信息值。返回字典,{tag : value}。
使用:
作用: 部分诊断信号是正常的,但由于某种原因导致记录波形反向。此函数扫描已下载的HDF5文件中的各诊断信号,将反向的诊断信号校正并储存。注意: 此函数仅用于非周期信号。
输入:
tags,需要校正的诊断列表。
shotlist,给定炮区间
type,将信号的幅值都校正为同一符号,可选["+",”-“]。默认type="+",将信号的幅值都校正为正;type="-" 时,将信号的幅值都校正为负。
path,给定的文件保存路径。默认为None,将文件保存在原来的地方;当输入路径时,将文件保存在给定路径。
输出:
校正后的文件。
使用:
>>> shotlist = [i for i in range(1064000, 1066648)]
>>> reader.correct([r"\ip", r"\bt"], shotlist, type="+") " aria-hidden="true">gt':50}}
>>> db.query(my_query)
[1046770, 1046794, 1046795, 1046806, 1046800 1046858, . . . , 1049184, 1050467, 1052286, 1050560, 1052295]
注意: 筛选条件filter的格式要求是MongoDB数据查询格式。使用时,对非专业人士不太友好。因此写了query_valid和query_range简化。
作用: 针对数据库中储存信息为True/False的Tag,返回符合条件的炮。
输入:
shotlist,给定炮号列表。不输入时,默认为数据库中全部炮
tag_true,条件,Tag列表。返回的炮必须满足tag_true内的tag都是True
tag_false,条件,Tag列表。返回的炮必须满足tag_false内的tag都是False
输出: 列表,满足条件的炮号
使用:
作用: 针对数据库中储存信息为数值的Tag,返回符合条件的炮。
输入:
taglist, 储存信息为数值的Tag列表。
shotlist,给定炮号列表。不输入时,默认为数据库中全部炮。
lower,数值下限列表,“>=”。
upper,数值上限列表,“<=”。
输出: 列表,满足条件的炮号
使用:
作用: 统计并显示各给定诊断在给定炮号列表中可用炮的数量;最后统计并显示在给定炮号列表中,所有给定诊断信号都可用的炮的数量,及其中正常炮和破裂炮的个数。返回诊断都可用炮的列表。
输入:
shotlist,给定炮号列表。
taglist,给定诊断列表
needND,bool值。默认为False,仅返回诊断都可用炮的列表;True,返回 诊断都可用炮的列表、正常炮的列表、破裂炮的列表。(needND,need normal shots and disrupt shots)
show,bool值。默认为True,显示各给定诊断在给定炮号列表中可用炮的数量、所有给定诊断信号都可用的炮的数量及其中正常炮和破裂炮的个数。False,不显示。
输出:
needND=False时,返回诊断都可用炮的列表;
needND=True时,返回诊断都可用炮的列表、正常炮的列表、破裂炮的列表。
使用:

将炮的数据以hdf5文件保存到本地,储存形式:

其中,data group储存此炮各诊断的数据;meta group储存此炮信息,如等离子体下降时间 DownTime、平顶电流大小 IpFlat,以及data中已经下载好的各诊断信号是否可用(如 \ip : True 表示ip信号可用; \bt : False 表示bt信号不可用)。
接口:
save(data=None, time=None, shot=None, tag=None)
其中,shot,炮号;tag,诊断名;data,数据序列;time,时间序列。
使用:
>>> from DDB.Data import Exporter
>>> exporter = Exporter(root_path='D:\J-TEXT')
>>> data = [0.1, 0.5, 0.3, 0.4, 0.2]
>>> time = [0, 0.1, 0.2, 0.3, 0.4]
>>> exporter.save(data, time, 1051234, '\ip')
注意: 使用者不需要管meta group,meta group中的炮信息会在程序运行时自动从数据库中下载。
调用: from DDB.Data import Reader
reader = Reader(root_path='D:\J-TEXT')
作用: 返回data或meta里的全部tag,查看hdf5文件内部情况。
输入:
shot,炮号
type,选择group。默认"data",可选["data",”meta“]
输出: 返回data或meta里的全部tag
使用:
>>> query = reader.tags(1066648, type="data")
['\bt', '\ip']
作用: 读取指定炮号的指定tag的数据。
输入:
shot,炮号
tag,诊断名
type,选择group。默认"data",可选["data",”meta“]
输出:
type="data"时,返回data group内指定诊断的数据元组 ,(data, time)。
type="meta"时,返回meta group内指定诊断的信息值。
使用:
作用: 读取指定炮号的给定tag列表中所有tag的数据。 返回字典
输入:
shot,炮号
tags,诊断列表
type,选择group。默认"data",可选["data",”meta“]
输出:
type="data"时,返回data group内给定tag列表中所有tag的数据 。返回元组的字典,{tag : (data, time)}。
type="meta"时,返回meta group内给定tag列表中所有tag的信息值。返回字典,{tag : value}。
使用:
作用: 部分诊断信号是正常的,但由于某种原因导致记录波形反向。此函数扫描已下载的HDF5文件中的各诊断信号,将反向的诊断信号校正并储存。注意: 此函数仅用于非周期信号。
输入:
tags,需要校正的诊断列表。
shotlist,给定炮区间
type,将信号的幅值都校正为同一符号,可选["+",”-“]。默认type="+",将信号的幅值都校正为正;type="-" 时,将信号的幅值都校正为负。
path,给定的文件保存路径。默认为None,将文件保存在原来的地方;当输入路径时,将文件保存在给定路径。
输出:
校正后的文件。
使用:
>>> shotlist = [i for i in range(1064000, 1066648)]
>>> reader.correct([r"\ip", r"\bt"], shotlist, type="+")
本文章使用limfx的vsocde插件快速发布