Loading pysen/inout/reader.py +12 −5 Original line number Diff line number Diff line Loading @@ -776,20 +776,27 @@ def read_transmission(filename): #transtab = { '"' : None, # '\n': None, } with open(filename, mode='r', encoding='ascii') as _fdesc: lines = _fdesc.readlines() header = remove_chars(lines[1], delchars='"\n') lines = iter(_fdesc.readlines()) prevline = None while True: line = next(lines) if line.startswith('"detector.sum'): break; prevline = line header = remove_chars(prevline, delchars='"\n') result['header'] = header header = header.split(',') result['proposal' ] = header[0] result['sample' ] = header[1].split()[-1] result['wavelength'] = _evaluate(header[2].split()[-1]) thead = remove_chars(lines[2], delchars='"\n').split() tdata = remove_chars(lines[3], delchars='"\n').split() thead = remove_chars(line, delchars='"\n').split() tdata = remove_chars(next(lines), delchars='"\n').split() for k,v in zip(thead, tdata): result[k] = _evaluate(v) tmpkey = None tmparr = [] for line in lines[4:]: for line in lines: line = remove_chars(line, delchars='"\n').strip() if not line: continue Loading pysen/plot/__init__.py +2 −1 Original line number Diff line number Diff line Loading @@ -3,7 +3,8 @@ plotting subpackage """ from .plotutil import get_nsubplots # NOQA from .qplot import ( plot_coverage, plot_curscan, # NOQA plot_diffrun , plot_transmission) # NOQA plot_diffrun , plot_transmission, # NOQA plot_datreat) # NOQA from .echo import plot_single_echo, echo_plot, atari_plot # NOQA from .histplotlib import plot_var, plot_sc # NOQA from .nseplotlib import ( plot_atari, plot_echo, # NOQA Loading pysen/plot/nseplot.py +57 −39 Original line number Diff line number Diff line Loading @@ -12,9 +12,8 @@ from pysen import version, setup_logger from pysen.config import DEFAULT_ACCELERATOR_POWER from pysen.inout import convert_to_hdf from pysen.plot import ( plot_echo, plot_atari, plot_map, plot_xyz, plot_magnetic_fields, plot_diffrun, plot_transmission ) plot_xyz, plot_magnetic_fields, plot_diffrun, plot_transmission, plot_datreat) #from pysen.plot.cmdline import NsePlotApp def action_default(filenames, **kwargs): Loading Loading @@ -77,7 +76,7 @@ def action_diffrun(filenames, **kwargs): def action_transmission(filenames, **kwargs): "action for transmission" savefig = kwargs.pop('savefig') spectrum_only = kwargs.pop('spectrum_only') spectrum_only = kwargs.get('spectrum_only') #log = kwargs.pop('log') to_show = True ax1 = None Loading @@ -96,8 +95,17 @@ def action_transmission(filenames, **kwargs): to_show = True return to_show #def action_qtau(, **kwargs): def action_datreat(filenames, **kwargs): "action for datreat" savefig = kwargs.pop('savefig') #log = kwargs.pop('log') _, axis = plt.subplots(figsize=(8,8)) plot_datreat(axis, filenames, **kwargs) if savefig: plt.savefig(savefig) else: to_show = True return to_show Loading Loading @@ -131,6 +139,12 @@ def arguments_vertscale(pars): pars.add_argument('--normalize', '-n' , dest='normalize', action='store_true', help='normalize results') def add_subparser(name, parent, sub, helpmsg=None, filearg=None): parser_name = sub.add_parser(name, help=helpmsg, parents=[parent]) if filearg: parser_name.add_argument('file', metavar='filename', help='file to process', nargs=filearg) return parser_name.add_argument_group() def main(): "the main" Loading @@ -140,7 +154,7 @@ def main(): parser_top.set_defaults(loglevel=1, outdir='.') parser_top.add_argument('--version', '-V', action='version', version='%(prog)s pysen={version}'.format(version=version(full=True))) subparsers = parser_top.add_subparsers(dest='what', required=True, help='what to plot') subparsers = parser_top.add_subparsers(dest='plot', required=True, help='what to plot') # common arguments parser = argparse.ArgumentParser(add_help=False) Loading @@ -152,27 +166,23 @@ def main(): center_only=False, whole_detector=False, map_type='all', phase0=None, incoherent=False, max_chi2=1e3) parser.add_argument('file', metavar='filename', help='file to process', nargs='+') parser.add_argument('--save-figure', '-S', dest='savefig', # version option parser.add_argument('--version', '-V', action='version', version='%(prog)s pysen={version}'.format(version=version(full=True))) # parser.add_argument('--save-figure', '-S', dest='savefig', metavar='file', help='save figure to a file (do not show)') parser.add_argument('--save-file', '-s', dest='savefile', parser.add_argument('--save-file', '-s', dest='savefile', metavar='file', help='save data to a csv file') # mutually exclusive [ -v | -q ] group_vrb = parser.add_mutually_exclusive_group() group_vrb.add_argument('--verbose', '-v', dest='loglevel', action='count', help='verbose output') group_vrb.add_argument('--quiet', '-q', dest='loglevel', action='store_const', const=0, help='verbose output') # version option parser.add_argument('--version', '-V', action='version', version='%(prog)s pysen={version}'.format(version=version(full=True))) const=0, help='suppres output') # echo plot parser_echo = subparsers.add_parser('echo', help='plot echo (.echo or .h5 files)', parents=[parser]) grp_echo = parser_echo.add_argument_group('echo plot options') grp_echo.add_argument('--tau', '-t', dest='tau', type=int, help='set tau to display (default=%(default)s)') grp_echo=add_subparser('echo', parser, subparsers, helpmsg='plot echo (.echo or .h5 files)', filearg='+') grp_echo.add_argument('--center-only' , '-C', dest='center_only', action='store_true', help='show only center patch') grp_echo.add_argument('--only-echo', dest='only_echo', action='store_true', Loading @@ -187,8 +197,7 @@ def main(): grp_echo.add_argument('--resolution', '-R', dest='resolution_plot', action='store_true', help='TBD') # atari plot parser_atari = subparsers.add_parser('atari', help='atari plot (.echo or .h5 files)', parents=[parser]) grp_atari = parser_atari.add_argument_group('atari plot options') grp_atari=add_subparser('atari', parser, subparsers, helpmsg='atari plot (.echo or .h5 files)', filearg='+') grp_atari.add_argument('--tau', '-t', dest='tau', type=int, help='set tau to display (default=%(default)s)') arguments_selection(grp_atari) Loading @@ -201,9 +210,7 @@ def main(): help='set inital phase for echo fitting (default=%(default)s)') # xyz plot parser_xyz = subparsers.add_parser('xyz', help='plot xyz analysis (.dat or .h5 files)', parents=[parser]) grp_xyz= parser_xyz.add_argument_group('xyz analysis plot options') grp_xyz=add_subparser('xyz', parser, subparsers, helpmsg='plot xyz analysis (.dat or .h5 files)', filearg='+') grp_xyz.set_defaults(overwrite=False, qmin=0, qmax=np.inf, deltaq=0.001) arguments_selection(grp_xyz) arguments_vertscale(grp_xyz) Loading @@ -214,8 +221,7 @@ def main(): grp_xyz.add_argument('--delta-q', dest='deltaq', type=float, help='q histogram bin witdth') # diffraction plot parser_diffrun = subparsers.add_parser('diffrun', help='plot diffraction scan', parents=[parser]) grp_diffrun= parser_diffrun.add_argument_group('diffraction scan plot options') grp_diffrun=add_subparser('diffrun', parser, subparsers, helpmsg='plot diffraction scan(s)', filearg='+') grp_diffrun.set_defaults(selection=None, power=DEFAULT_ACCELERATOR_POWER) grp_diffrun.add_argument('--up', '-u', dest='selection', action='append_const', const='up', help="plot 'up' counts") Loading @@ -239,8 +245,7 @@ def main(): help="use attenuation table") # transmission plot parser_trans = subparsers.add_parser('transmission', help='plot transmission data', parents=[parser]) grp_trans= parser_trans.add_argument_group('transmission plot options') grp_trans=add_subparser('transmission', parser, subparsers, helpmsg='plot transmission data', filearg='+') grp_trans.set_defaults(log_scale=False, spectrum_only=False, pos='p2') grp_trans.add_argument('--pos' , '-p', dest='pos' , help='set instrument position: p1, p2, p3 or p4 (default %(default)s)') Loading @@ -254,9 +259,16 @@ def main(): grp_trans.add_argument('--echodet', '-e', dest='echodet', action='store_true', help='report transmission for echodet 1/T') # datreat plot grp_dtr=add_subparser('datreat', parser, subparsers, helpmsg='plot datreat files (.dtr or .dat)', filearg='+') grp_dtr.add_argument('--logt', dest='logt', action='store_true', help='set log scale for tau') grp_dtr.add_argument('--logs', dest='logs', action='store_true', help='set log scale for S(Q,tau)') grp_dtr.add_argument('--prune', dest='prune', action='store_true', help='prune data') # map plot parser_map = subparsers.add_parser('maps', help='plot maps (.echo or .h5 files)', parents=[parser]) grp_map = parser_map.add_argument_group('map plot options') grp_map=add_subparser('maps', parser, subparsers, helpmsg='plot echo maps (.echo or .h5)', filearg='+') grp_map.add_argument('--tau', '-t', dest='tau', type=int, help='set tau to display (default=%(default)s)') grp_map.add_argument('--map-type', dest='map_type', choices=['all', 'up', 'down'], Loading @@ -264,8 +276,7 @@ def main(): grp_map.add_argument('--num-pix', '-N', dest='npix', type=int, help='set pixel binning (default=%(default)s)') # magnetic field parser_bfield = subparsers.add_parser('bfield', help='plot magnetic fields (.echo or .h5 files)', parents=[parser]) grp_bfield = parser_bfield.add_argument_group('magnetic field plot options') grp_bfield=add_subparser('bfield', parser, subparsers, helpmsg='plot magnetic fields (.echo or .h5)', filearg='+') grp_bfield.add_argument('--tau', '-t', dest='tau', type=int, help='set tau to display (default=%(default)s)') grp_bfield.add_argument('--max-chi2', dest='max_chi2', type=float, default=1e-2, Loading @@ -273,31 +284,38 @@ def main(): grp_bfield.add_argument('--axis', dest='axis', type=int, default=-1, help='set axis to plot (default=%(default)s)') # qtau plot #grp_qtau=add_subparser('qtau', parser, subparsers, helpmsg='plot q-tau coverage', filearg='?') # phase table #grp_ptab=add_subparser('phase_table', parser, subparsers, helpmsg='make phase table from echo files (.echo or .h5)', filearg='+') # =================================== args = parser_top.parse_args() log = setup_logger(args.loglevel) log.debug('program arguments %s', args) #if not args.what: #if not args.plot # NsePlotApp().cmdloop() # return plt.rcParams.update({'figure.max_open_warning': 0}) if args.savefig: plt.switch_backend('Agg') kwargs = vars(args) if args.what in ('echo', 'atari', 'maps', 'bfield'): plot_action = dict(echo=plot_echo, atari=plot_atari, maps=plot_map, bfield=plot_magnetic_fields).get(args.what) if args.plot in ('echo', 'atari', 'maps', 'bfield'): plot_action = dict(echo=plot_echo, atari=plot_atari, maps=plot_map, bfield=plot_magnetic_fields).get(args.plot) to_show = action_default(args.file, action=plot_action, log=log, **kwargs) if args.what in ('xyz', ): if args.plot in ('xyz', ): to_show = action_xyz(args.file, log=log, **kwargs) if args.what in ('diffrun', ): if args.plot in ('diffrun', ): to_show = action_diffrun(args.file, log=log, **kwargs) if args.what in ('transmission', ): if args.plot in ('transmission', ): to_show = action_transmission(args.file, log=log, **kwargs) if args.plot in ('datreat', ): to_show = action_datreat(args.file, log=log, **kwargs) if to_show: plt.show() Loading pysen/plot/qplot.py +65 −1 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ import time import os import logging import collections import itertools import numpy as np from matplotlib import cm Loading @@ -18,7 +19,7 @@ from scipy.spatial import ConvexHull from .. import ANGSTROM from ..config import PCHARGE_PER_SECOND, wavelength_bandwitdh from ..inout import read_datfile, read_diffrun, read_transmission from ..inout import read_datfile, read_diffrun, read_transmission, read_datreat COLOR_MAP = { 0: None, Loading Loading @@ -482,3 +483,66 @@ def plot_transmission(ax0, ax1, filenames, **kwargs): ax1.set_ylabel('T0/Tsam') ax1.grid(True) return def _prune_data(data, min_points=3, min_taus=3, max_err=1.0): """ Prune/cleanup DrSPINE reduced data """ if len(data)<=0: return None data = data.T data = data[data[:,5]>min_points] # at least min_points contributing points data = data[data[:,4]>0] # var(tau) data = data[data[:,3]>0] # var(sqt) data = data[data[:,2]>0] # err(sqt) data = data[data[:,1]>0] # require positive resultant sqt # data = data[data[:,2]/data[:,1]<max_err] # if len(data[:,4])<min_taus: # at least min_taus "good" taus return None return data.T def plot_datreat(axis, filenames, **kwargs): "plot datreat-type file (DrSPINE output)" markers = itertools.cycle('^vso+*.') styles = itertools.cycle(['--',':','-.' ]) idx = kwargs.pop('index', None) prune = kwargs.pop('prune', None) logt = kwargs.pop('logt', None) logs = kwargs.pop('logs', None) # for filename in filenames: if not os.path.exists(filename): continue data = read_datreat(filename) marker = next(markers) linestyle = next(styles) for j, (m, d) in enumerate(data): if idx is not None and j not in idx: continue if prune: d = _prune_data(d) if d is None: continue try: q = m['q'] tau = d[0] sqt = d[1] serr = d[2] label="q=%.3f (%s[%s])" % (q, os.path.basename(filename), j) axis.errorbar(tau, sqt, yerr=serr, ls=linestyle, marker=marker, label=label) except Exception as _exc: print(j, _exc) if logt: axis.set_xscale('log') if logs: axis.set_yscale('log') axis.grid(True) axis.legend(loc='best') pysen/revision.py +3 −3 Original line number Diff line number Diff line Loading @@ -2,9 +2,9 @@ PySEN revision module """ import sys __version__ = "0.72" __release__ = "dev4" __date__ = "Aug 3, 2022" __version__ = "0.73" __release__ = "dev1" __date__ = "Aug 8, 2022" def version(full=False): "get pysen version number" Loading Loading
pysen/inout/reader.py +12 −5 Original line number Diff line number Diff line Loading @@ -776,20 +776,27 @@ def read_transmission(filename): #transtab = { '"' : None, # '\n': None, } with open(filename, mode='r', encoding='ascii') as _fdesc: lines = _fdesc.readlines() header = remove_chars(lines[1], delchars='"\n') lines = iter(_fdesc.readlines()) prevline = None while True: line = next(lines) if line.startswith('"detector.sum'): break; prevline = line header = remove_chars(prevline, delchars='"\n') result['header'] = header header = header.split(',') result['proposal' ] = header[0] result['sample' ] = header[1].split()[-1] result['wavelength'] = _evaluate(header[2].split()[-1]) thead = remove_chars(lines[2], delchars='"\n').split() tdata = remove_chars(lines[3], delchars='"\n').split() thead = remove_chars(line, delchars='"\n').split() tdata = remove_chars(next(lines), delchars='"\n').split() for k,v in zip(thead, tdata): result[k] = _evaluate(v) tmpkey = None tmparr = [] for line in lines[4:]: for line in lines: line = remove_chars(line, delchars='"\n').strip() if not line: continue Loading
pysen/plot/__init__.py +2 −1 Original line number Diff line number Diff line Loading @@ -3,7 +3,8 @@ plotting subpackage """ from .plotutil import get_nsubplots # NOQA from .qplot import ( plot_coverage, plot_curscan, # NOQA plot_diffrun , plot_transmission) # NOQA plot_diffrun , plot_transmission, # NOQA plot_datreat) # NOQA from .echo import plot_single_echo, echo_plot, atari_plot # NOQA from .histplotlib import plot_var, plot_sc # NOQA from .nseplotlib import ( plot_atari, plot_echo, # NOQA Loading
pysen/plot/nseplot.py +57 −39 Original line number Diff line number Diff line Loading @@ -12,9 +12,8 @@ from pysen import version, setup_logger from pysen.config import DEFAULT_ACCELERATOR_POWER from pysen.inout import convert_to_hdf from pysen.plot import ( plot_echo, plot_atari, plot_map, plot_xyz, plot_magnetic_fields, plot_diffrun, plot_transmission ) plot_xyz, plot_magnetic_fields, plot_diffrun, plot_transmission, plot_datreat) #from pysen.plot.cmdline import NsePlotApp def action_default(filenames, **kwargs): Loading Loading @@ -77,7 +76,7 @@ def action_diffrun(filenames, **kwargs): def action_transmission(filenames, **kwargs): "action for transmission" savefig = kwargs.pop('savefig') spectrum_only = kwargs.pop('spectrum_only') spectrum_only = kwargs.get('spectrum_only') #log = kwargs.pop('log') to_show = True ax1 = None Loading @@ -96,8 +95,17 @@ def action_transmission(filenames, **kwargs): to_show = True return to_show #def action_qtau(, **kwargs): def action_datreat(filenames, **kwargs): "action for datreat" savefig = kwargs.pop('savefig') #log = kwargs.pop('log') _, axis = plt.subplots(figsize=(8,8)) plot_datreat(axis, filenames, **kwargs) if savefig: plt.savefig(savefig) else: to_show = True return to_show Loading Loading @@ -131,6 +139,12 @@ def arguments_vertscale(pars): pars.add_argument('--normalize', '-n' , dest='normalize', action='store_true', help='normalize results') def add_subparser(name, parent, sub, helpmsg=None, filearg=None): parser_name = sub.add_parser(name, help=helpmsg, parents=[parent]) if filearg: parser_name.add_argument('file', metavar='filename', help='file to process', nargs=filearg) return parser_name.add_argument_group() def main(): "the main" Loading @@ -140,7 +154,7 @@ def main(): parser_top.set_defaults(loglevel=1, outdir='.') parser_top.add_argument('--version', '-V', action='version', version='%(prog)s pysen={version}'.format(version=version(full=True))) subparsers = parser_top.add_subparsers(dest='what', required=True, help='what to plot') subparsers = parser_top.add_subparsers(dest='plot', required=True, help='what to plot') # common arguments parser = argparse.ArgumentParser(add_help=False) Loading @@ -152,27 +166,23 @@ def main(): center_only=False, whole_detector=False, map_type='all', phase0=None, incoherent=False, max_chi2=1e3) parser.add_argument('file', metavar='filename', help='file to process', nargs='+') parser.add_argument('--save-figure', '-S', dest='savefig', # version option parser.add_argument('--version', '-V', action='version', version='%(prog)s pysen={version}'.format(version=version(full=True))) # parser.add_argument('--save-figure', '-S', dest='savefig', metavar='file', help='save figure to a file (do not show)') parser.add_argument('--save-file', '-s', dest='savefile', parser.add_argument('--save-file', '-s', dest='savefile', metavar='file', help='save data to a csv file') # mutually exclusive [ -v | -q ] group_vrb = parser.add_mutually_exclusive_group() group_vrb.add_argument('--verbose', '-v', dest='loglevel', action='count', help='verbose output') group_vrb.add_argument('--quiet', '-q', dest='loglevel', action='store_const', const=0, help='verbose output') # version option parser.add_argument('--version', '-V', action='version', version='%(prog)s pysen={version}'.format(version=version(full=True))) const=0, help='suppres output') # echo plot parser_echo = subparsers.add_parser('echo', help='plot echo (.echo or .h5 files)', parents=[parser]) grp_echo = parser_echo.add_argument_group('echo plot options') grp_echo.add_argument('--tau', '-t', dest='tau', type=int, help='set tau to display (default=%(default)s)') grp_echo=add_subparser('echo', parser, subparsers, helpmsg='plot echo (.echo or .h5 files)', filearg='+') grp_echo.add_argument('--center-only' , '-C', dest='center_only', action='store_true', help='show only center patch') grp_echo.add_argument('--only-echo', dest='only_echo', action='store_true', Loading @@ -187,8 +197,7 @@ def main(): grp_echo.add_argument('--resolution', '-R', dest='resolution_plot', action='store_true', help='TBD') # atari plot parser_atari = subparsers.add_parser('atari', help='atari plot (.echo or .h5 files)', parents=[parser]) grp_atari = parser_atari.add_argument_group('atari plot options') grp_atari=add_subparser('atari', parser, subparsers, helpmsg='atari plot (.echo or .h5 files)', filearg='+') grp_atari.add_argument('--tau', '-t', dest='tau', type=int, help='set tau to display (default=%(default)s)') arguments_selection(grp_atari) Loading @@ -201,9 +210,7 @@ def main(): help='set inital phase for echo fitting (default=%(default)s)') # xyz plot parser_xyz = subparsers.add_parser('xyz', help='plot xyz analysis (.dat or .h5 files)', parents=[parser]) grp_xyz= parser_xyz.add_argument_group('xyz analysis plot options') grp_xyz=add_subparser('xyz', parser, subparsers, helpmsg='plot xyz analysis (.dat or .h5 files)', filearg='+') grp_xyz.set_defaults(overwrite=False, qmin=0, qmax=np.inf, deltaq=0.001) arguments_selection(grp_xyz) arguments_vertscale(grp_xyz) Loading @@ -214,8 +221,7 @@ def main(): grp_xyz.add_argument('--delta-q', dest='deltaq', type=float, help='q histogram bin witdth') # diffraction plot parser_diffrun = subparsers.add_parser('diffrun', help='plot diffraction scan', parents=[parser]) grp_diffrun= parser_diffrun.add_argument_group('diffraction scan plot options') grp_diffrun=add_subparser('diffrun', parser, subparsers, helpmsg='plot diffraction scan(s)', filearg='+') grp_diffrun.set_defaults(selection=None, power=DEFAULT_ACCELERATOR_POWER) grp_diffrun.add_argument('--up', '-u', dest='selection', action='append_const', const='up', help="plot 'up' counts") Loading @@ -239,8 +245,7 @@ def main(): help="use attenuation table") # transmission plot parser_trans = subparsers.add_parser('transmission', help='plot transmission data', parents=[parser]) grp_trans= parser_trans.add_argument_group('transmission plot options') grp_trans=add_subparser('transmission', parser, subparsers, helpmsg='plot transmission data', filearg='+') grp_trans.set_defaults(log_scale=False, spectrum_only=False, pos='p2') grp_trans.add_argument('--pos' , '-p', dest='pos' , help='set instrument position: p1, p2, p3 or p4 (default %(default)s)') Loading @@ -254,9 +259,16 @@ def main(): grp_trans.add_argument('--echodet', '-e', dest='echodet', action='store_true', help='report transmission for echodet 1/T') # datreat plot grp_dtr=add_subparser('datreat', parser, subparsers, helpmsg='plot datreat files (.dtr or .dat)', filearg='+') grp_dtr.add_argument('--logt', dest='logt', action='store_true', help='set log scale for tau') grp_dtr.add_argument('--logs', dest='logs', action='store_true', help='set log scale for S(Q,tau)') grp_dtr.add_argument('--prune', dest='prune', action='store_true', help='prune data') # map plot parser_map = subparsers.add_parser('maps', help='plot maps (.echo or .h5 files)', parents=[parser]) grp_map = parser_map.add_argument_group('map plot options') grp_map=add_subparser('maps', parser, subparsers, helpmsg='plot echo maps (.echo or .h5)', filearg='+') grp_map.add_argument('--tau', '-t', dest='tau', type=int, help='set tau to display (default=%(default)s)') grp_map.add_argument('--map-type', dest='map_type', choices=['all', 'up', 'down'], Loading @@ -264,8 +276,7 @@ def main(): grp_map.add_argument('--num-pix', '-N', dest='npix', type=int, help='set pixel binning (default=%(default)s)') # magnetic field parser_bfield = subparsers.add_parser('bfield', help='plot magnetic fields (.echo or .h5 files)', parents=[parser]) grp_bfield = parser_bfield.add_argument_group('magnetic field plot options') grp_bfield=add_subparser('bfield', parser, subparsers, helpmsg='plot magnetic fields (.echo or .h5)', filearg='+') grp_bfield.add_argument('--tau', '-t', dest='tau', type=int, help='set tau to display (default=%(default)s)') grp_bfield.add_argument('--max-chi2', dest='max_chi2', type=float, default=1e-2, Loading @@ -273,31 +284,38 @@ def main(): grp_bfield.add_argument('--axis', dest='axis', type=int, default=-1, help='set axis to plot (default=%(default)s)') # qtau plot #grp_qtau=add_subparser('qtau', parser, subparsers, helpmsg='plot q-tau coverage', filearg='?') # phase table #grp_ptab=add_subparser('phase_table', parser, subparsers, helpmsg='make phase table from echo files (.echo or .h5)', filearg='+') # =================================== args = parser_top.parse_args() log = setup_logger(args.loglevel) log.debug('program arguments %s', args) #if not args.what: #if not args.plot # NsePlotApp().cmdloop() # return plt.rcParams.update({'figure.max_open_warning': 0}) if args.savefig: plt.switch_backend('Agg') kwargs = vars(args) if args.what in ('echo', 'atari', 'maps', 'bfield'): plot_action = dict(echo=plot_echo, atari=plot_atari, maps=plot_map, bfield=plot_magnetic_fields).get(args.what) if args.plot in ('echo', 'atari', 'maps', 'bfield'): plot_action = dict(echo=plot_echo, atari=plot_atari, maps=plot_map, bfield=plot_magnetic_fields).get(args.plot) to_show = action_default(args.file, action=plot_action, log=log, **kwargs) if args.what in ('xyz', ): if args.plot in ('xyz', ): to_show = action_xyz(args.file, log=log, **kwargs) if args.what in ('diffrun', ): if args.plot in ('diffrun', ): to_show = action_diffrun(args.file, log=log, **kwargs) if args.what in ('transmission', ): if args.plot in ('transmission', ): to_show = action_transmission(args.file, log=log, **kwargs) if args.plot in ('datreat', ): to_show = action_datreat(args.file, log=log, **kwargs) if to_show: plt.show() Loading
pysen/plot/qplot.py +65 −1 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ import time import os import logging import collections import itertools import numpy as np from matplotlib import cm Loading @@ -18,7 +19,7 @@ from scipy.spatial import ConvexHull from .. import ANGSTROM from ..config import PCHARGE_PER_SECOND, wavelength_bandwitdh from ..inout import read_datfile, read_diffrun, read_transmission from ..inout import read_datfile, read_diffrun, read_transmission, read_datreat COLOR_MAP = { 0: None, Loading Loading @@ -482,3 +483,66 @@ def plot_transmission(ax0, ax1, filenames, **kwargs): ax1.set_ylabel('T0/Tsam') ax1.grid(True) return def _prune_data(data, min_points=3, min_taus=3, max_err=1.0): """ Prune/cleanup DrSPINE reduced data """ if len(data)<=0: return None data = data.T data = data[data[:,5]>min_points] # at least min_points contributing points data = data[data[:,4]>0] # var(tau) data = data[data[:,3]>0] # var(sqt) data = data[data[:,2]>0] # err(sqt) data = data[data[:,1]>0] # require positive resultant sqt # data = data[data[:,2]/data[:,1]<max_err] # if len(data[:,4])<min_taus: # at least min_taus "good" taus return None return data.T def plot_datreat(axis, filenames, **kwargs): "plot datreat-type file (DrSPINE output)" markers = itertools.cycle('^vso+*.') styles = itertools.cycle(['--',':','-.' ]) idx = kwargs.pop('index', None) prune = kwargs.pop('prune', None) logt = kwargs.pop('logt', None) logs = kwargs.pop('logs', None) # for filename in filenames: if not os.path.exists(filename): continue data = read_datreat(filename) marker = next(markers) linestyle = next(styles) for j, (m, d) in enumerate(data): if idx is not None and j not in idx: continue if prune: d = _prune_data(d) if d is None: continue try: q = m['q'] tau = d[0] sqt = d[1] serr = d[2] label="q=%.3f (%s[%s])" % (q, os.path.basename(filename), j) axis.errorbar(tau, sqt, yerr=serr, ls=linestyle, marker=marker, label=label) except Exception as _exc: print(j, _exc) if logt: axis.set_xscale('log') if logs: axis.set_yscale('log') axis.grid(True) axis.legend(loc='best')
pysen/revision.py +3 −3 Original line number Diff line number Diff line Loading @@ -2,9 +2,9 @@ PySEN revision module """ import sys __version__ = "0.72" __release__ = "dev4" __date__ = "Aug 3, 2022" __version__ = "0.73" __release__ = "dev1" __date__ = "Aug 8, 2022" def version(full=False): "get pysen version number" Loading