Commit fe26b770 authored by Zolnierczuk, Piotr's avatar Zolnierczuk, Piotr
Browse files

added autoconversion to HDF

parent 75728282
Loading
Loading
Loading
Loading
+43 −6
Original line number Diff line number Diff line
#!/usr/bin/env python
"ATARI Plot"

from   os.path import basename, splitext
import os.path 
import logging

import numpy as np
import h5py
import matplotlib.pyplot as plt


from pysen import ANGSTROM, NANOSECOND
from pysen import ANGSTROM, NANOSECOND, version
from pysen.io import read_echo, HdfConverter
from pysen.atarilib import fit_echo_current, Spectrum

def echo_convert(filename):
    schema=None
    compression='gzip'
    mode='w'
    outdir='.'
    log = logging.getLogger()
    outfile, _ = os.path.splitext(os.path.basename(filename))
    outfile = os.path.join(outdir, outfile + ".h5")
    converter = HdfConverter(outfile, mode=mode, version=version())
    log.debug('converting echo %s => %s', filename, outfile)
    data = read_echo(filename)
    converter.write(data, compression=compression, schema=schema)
    log.info('written HDF5 file %s', outfile)
    return outfile

def echo_plot(hdfile, iecho=0, **kwargs):
    "echo plot"
@@ -29,7 +45,7 @@ def echo_plot(hdfile, iecho=0, **kwargs):
    ypix1   = kwargs.pop('ypix1', 10)
    ypix2   = kwargs.pop('ypix2', 22)

    base    = splitext(basename(hdfile.filename))[0]
    base    = os.path.splitext(os.path.basename(hdfile.filename))[0]
    comment = hdfile.attrs['master_comment']
    comment = comment.decode("utf-8")

@@ -149,7 +165,7 @@ def echo_plot(hdfile, iecho=0, **kwargs):
                #    plt.text(0.01, 1.01, r'$R(Q,t)$=%.3g' % R, transform=ax.transAxes)
                #ax.axhline(np.average(up))
                #ax.axhline(np.average(dn))
        #plt.xlabel(r'phase current [A]')
        #plt.xlabel(r'ephase current [A]')

        #plt.legend(loc='best')
        #plt.grid(True)
@@ -161,7 +177,8 @@ def main():
    "the main"
    import argparse

    parser = argparse.ArgumentParser(description='atari plot')
    parser = argparse.ArgumentParser(description='echo plot')
    parser.set_defaults(loglevel=logging.INFO)
    parser.add_argument('file', metavar='filename', help='file to process', nargs='+')
    parser.add_argument('--echo',  '-e',  dest='echo', type=int,   default=None,
                        help='set echo to display (default=%(default)s)')
@@ -169,12 +186,32 @@ def main():
                        help='set min TOF bin (default=%(default)s)')
    parser.add_argument('--t2',  '-T',  dest='tbin2', type=int,   default=None,
                        help='set max TOF bin (default=%(default)s)')
    parser.add_argument('--verbose', '-v', dest='loglevel', action='store_const',
                        const=logging.DEBUG,  help='verbose output')
    parser.add_argument('--quiet', '-q', dest='loglevel', action='store_const',
                        const=logging.WARNING,  help='verbose output')
    parser.add_argument('--version', action='version',
                        version='%(prog)s pysen={version}'.format(version=version(full=True)))
    
    parser.add_argument('--only-echo', '-N', dest='only_echo', action='store_true',   default=False,
                        help='show only echo (no up/down)')
    args = parser.parse_args()

    if args.loglevel>=logging.INFO:
        log_format=r'%(message)s'
    else:
        log_format=r'%(levelname)s: %(funcName)s: %(message)s'

    logging.basicConfig(level=args.loglevel, format=log_format)
    log = logging.getLogger()

    kwargs = vars(args)
    for filename in args.file:
        basename , ext = os.path.splitext(os.path.basename(filename))
        if ext==".echo":
            log.info('converting %s to HDF', basename)
            outfile = echo_convert(filename)
            filename = outfile
        with h5py.File(filename, 'r') as hdf5file:
            echo_plot(hdf5file, iecho=args.echo, **kwargs)
    plt.show()