Module labcom.SamplePlot3

retrieveのサンプル(計測データ)スクリプト

データを取り出し、グラフ表示する。

$ python SamplePlot3.py [options] diag shot subshot channel [nsum] or $ SamplePlot3.py [options] diag shot subshot channel [nsum]

[ source code ]

import sys import numpy as np import labcom from labcom.Retriever import Retriever,RetrieveError

if name == 'main' : import matplotlib.pyplot as plt import optparse parser = optparse.OptionParser(usage='%prog [options] diag shot subshot channel [nsum]', version=version) gopt = optparse.OptionGroup(parser,'Range options','(Only one can be used from below.)') gopt.add_option('–et', action='store', dest='range_et', metavar='RANGE', help='range by experiment time') gopt.add_option('–tt', action='store', dest='range_tt', metavar='RANGE', help='range by relative time from trigger') gopt.add_option('–ss', action='store', dest='range_ss', metavar='RANGE', help='range by sample number') gopt.add_option('–frame', action='store', dest='range_fr', metavar='RANGE', help='range by frame number for PHA') g2opt = optparse.OptionGroup(parser,'Direct options','for direct connection.') g2opt.add_option('–host', action='store', dest='host_opt',help='Connection destination host name') g2opt.add_option('–path', action='store', dest='path_opt',help='Connection destination path name')

parser.add_option('--raw', action="store_true", dest="raw_mode", default=False, help="don't voltage convert")
parser.add_option_group(gopt)
parser.add_option_group(g2opt)

argopt, arg_remainder = parser.parse_args()
argvs= arg_remainder
argc = len(argvs)

if( argc < 4 ) :
    parser.print_help()
    sys.exit(0)

if( argc > 4 ) :
    nsum = int(argvs[4])
else :
    nsum = 0

range_type = Retriever.RANGE_NOSET
range_str = None
if None != argopt.range_et :
    if range_type == Retriever.RANGE_NOSET :
        range_str = argopt.range_et
        range_type = Retriever.RANGE_EXP
    else :
        range_type = None
if None != argopt.range_tt :
    if range_type == Retriever.RANGE_NOSET :
        range_str = argopt.range_tt
        range_type = Retriever.RANGE_TRIG
    else :
        range_type = None
if None != argopt.range_ss :
    if range_type == Retriever.RANGE_NOSET :
        range_str = argopt.range_ss
        range_type = Retriever.RANGE_SAMPLES
    else :
        range_type = None
if None != argopt.range_fr :
    if range_type == Retriever.RANGE_NOSET :
        range_str = argopt.range_fr
        range_type = Retriever.RANGE_FRAMES
    else :
        range_type = None

if( range_type == None ) :
    parser.print_help()
    sys.exit(0)

host_opt = argopt.host_opt
path_opt = argopt.path_opt
if None != argopt.host_opt :
    if None == argopt.path_opt :
        path_opt = 'ShotDataFS'

print('SamplePlot3.py START')
print(Retriever.version())
try:
    p = Retriever(0, host_opt, path_opt, 0)
    if( argopt.raw_mode ) :
        p.raw_mode=1
    x = p.get(argvs[0], int(argvs[1]), int(argvs[2]), int(argvs[3]), range_type, range_str)
    arc= x
    py= arc.val()
    ary_len = len(py)
    print(py.dtype)
    print(py.ndim)
    print(py.shape)
    print(arc.parameters)

    if arc.num_times() != ary_len :
        print('It's different from the number of sample and times.')
        sys.exit(0)

    if 0 == nsum :
        if ( 1000000 < ary_len ) :  
            nsum = 100
        elif ( 100000 < ary_len ) :  
            nsum = 10
        else :  
            nsum = 1

    print('nsum : ',nsum)

    if 1 == nsum :
        px = arc.time()
    else :
        base = np.ones(nsum)/float(nsum)
        px = np.convolve(arc.time(), base, 'valid')
        py = np.convolve(py, base, 'valid')

    plt.plot(px, py)
    plt.show()
except RetrieveError as e:
    print('Retrieve Error : ', e.msg,' (',e.func,':',e.code,')')

print('SamplePlot3.py END')