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

nseplot options cleanup

parent 2af21203
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -2,9 +2,9 @@
PySEN revision module
"""
import sys
__version__  = "0.7.5"
__version__  = "0.7.6"
__release__  = "dev1"
__date__     = "Feb 14, 2019"
__date__     = "Feb 15, 2019"
#
VERSION  = __version__
RELEASE  = __release__
@@ -26,10 +26,14 @@ CREDITS = []

def version(full=False):
    "get pysen version number"
    if __release__ == 'release':
        ver = "%s" % __version__
    else:
        ver = "%s.%s" % (__version__, __release__)
    if full:
        py_ver = " Python %s.%s" % (sys.version_info.major, sys.version_info.minor)
        return "%s-%s (%s) %s" % (__version__, __release__, __date__, py_ver)
    return "%s-%s" % (__version__, __release__)
        ver = "%s (%s) %s" % (ver, __date__, py_ver)
    return ver


# EOF
+69 −30
Original line number Diff line number Diff line
@@ -219,7 +219,7 @@ def echo_plot(hdfile, iecho=0, **kwargs):
    #
    center_only = kwargs.pop('center_only', False)
    #
    npix    = kwargs.pop('npix', 2)      # pix
    npix    = kwargs.pop('npix', 4)      # pix
    #
    tbin1   = kwargs.pop('tbin1',0)      # TOF bins
    tbin2   = kwargs.pop('tbin2',None)
@@ -248,10 +248,12 @@ def echo_plot(hdfile, iecho=0, **kwargs):
    nph     = n_idx['dn']

    if  center_only:
        ntaus = 1
        ntaus = 0
        for echo in list(hdfile['/data'].values()):
            if not iecho or echo.attrs['id'] == iecho:
                ntaus = ntaus + 1
        if ntaus>1:
            ntaus = ntaus + 1 # resolution curve
        nxtau, nytau = get_nsubplots(ntaus)
        fig0 = plt.figure(figsize=(8,8))
        fig0.suptitle(r'%s | %s' % (sample, base))
@@ -396,12 +398,11 @@ def echo_plot(hdfile, iecho=0, **kwargs):
        fig.suptitle(r'%s | %s | $\lambda$=%.2g$\AA$ $Q$=%.3f$\AA^{-1}$ $\tau$=%.3gns' %
                     (sample, base, lam0/ANGSTROM, q0,tau0))

    if center_only:
    if center_only and ntaus>1:
        #   figr = plt.figure(figsize=(8,8))
        #      figr.suptitle(r'%s | %s' % (sample, base))
        ax = fig0.add_subplot(nxtau,nytau,ntaus)
        res = np.asarray(resolution)
        print(res)
        ax.plot(res[:,0],res[:,1], '.--')
        ax.set_xscale('log')
        ax.set_yscale('log')
@@ -409,27 +410,46 @@ def echo_plot(hdfile, iecho=0, **kwargs):
        ax.grid(True)


def setup_logger(loglevel):
    "setup logger"
    #normalize loglevel 0=ERR, 1=WARN, 2=INFO, 3=DEBUG
    loglvldict= {
                    0: logging.ERROR,
                    1: logging.WARNING,
                    2: logging.INFO,
                    3: logging.DEBUG,
                }
    if  loglevel<0:
        loglevel=0
    elif loglevel>3:
        loglevel=3
    loglevel = loglvldict.get(loglevel, logging.INFO)
    #print(loglevel)

    if loglevel==logging.INFO:
        log_format=r'%(message)s'
    else:
        log_format=r'%(levelname)s: %(funcName)s: %(message)s'
    logging.basicConfig(level=loglevel, format=log_format)
    return logging.getLogger()

def main():
    "the main"
    import argparse

    plot_action = dict(echo=echo_plot,atari=atari_plot, bfield=magnetic_fields_plot)
    description = "SNS NSE plotting tool"

    parser = argparse.ArgumentParser(description='echo plot')
    parser.set_defaults(loglevel=logging.INFO, outdir='.', plot='echo',
                        tbin1=0, tbin2=None, tau=0)
    parser.add_argument('file', metavar='filename', help='file to process', nargs='+')
    parser.add_argument('--plot',   '-p', dest='plot', choices=['echo', 'atari', 'bfield'])
    parser.add_argument('--atari',  dest='plot', action='store_const', const='atari')
    parser.add_argument('--bfield', dest='plot', action='store_const', const='bfield')
    parser.add_argument('--echo' ,  dest='plot', action='store_const', const='echo')

    grp_echo = parser.add_argument_group('echo', 'echo plotting')
    grp_echo.add_argument('--center-only', '-C', dest='center_only', action='store_true',
                          default=False, help='show only center patch')
    grp_echo.add_argument('--only-echo', dest='only_echo', action='store_true',
                          default=False, help='show only echo (no up/down)')
    parser_top  = argparse.ArgumentParser(description=description)
    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')

    # common arguments
    parser = argparse.ArgumentParser(add_help=False)
    parser.set_defaults(loglevel=1, outdir='.', tbin1=0, tbin2=None, tau=0,
                        npix=4, center_only=False, max_chi2=1e3)
    parser.add_argument('file', metavar='filename', help='file to process', nargs='+')
    parser.add_argument('--tau', '-t',  dest='tau', type=int,
                        help='set tau to display (default=%(default)s)')
    parser.add_argument('--t1' , '-b',  dest='tbin1', type=int,
@@ -438,21 +458,40 @@ def main():
                        help='set max TOF bin (default=%(default)s)')
    parser.add_argument('--save-file', '-s', dest='savefile',
                        help='save figure to a file (do not show)')
    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')
    # 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)))
    args = parser.parse_args()

    if args.loglevel>=logging.INFO:
        log_format=r'%(message)s'
    else:
        log_format=r'%(levelname)s: %(funcName)s: %(message)s'
    # echo plot
    parser_echo = subparsers.add_parser('echo', help='plot echo', parents=[parser])
    grp_echo = parser_echo.add_argument_group('echo plot options')
    grp_echo.add_argument('--num-pix', '-N', dest='npix', type=int,
                          help='set pixel binning (default=%(default)s)')
    grp_echo.add_argument('--center-only', '-C', dest='center_only', action='store_true',
                          help='show only center patch')

    # atari plot
    parser_atari  = subparsers.add_parser('atari',  help='atari plot', parents=[parser])
    grp_atari = parser_atari.add_argument_group('atari plot options')
    grp_atari.add_argument('--only-echo', dest='only_echo', action='store_true',
                           help='show only echo (no up/down)')

    # magnetic field
    parser_bfield = subparsers.add_parser('bfield', help='plot magnetic fields', parents=[parser])
    grp_bfield = parser_bfield.add_argument_group('magnetic field plot options')
    grp_bfield.add_argument('--max-chi2', dest='max_chi2', type=float, default=1e-2,
                            help='set max chi-square (default=%(default)s)')

    args = parser_top.parse_args()

    logging.basicConfig(level=args.loglevel, format=log_format)
    log = logging.getLogger()
    log = setup_logger(args.loglevel)
    log.debug('program arguments %s', args)

    if args.savefile:
        plt.switch_backend('Agg')
@@ -466,7 +505,7 @@ def main():
        else:
            hfile = filename
        with h5py.File(hfile, 'r') as hdf5file:
            plot_action[args.plot](hdf5file, iecho=args.tau, **kwargs)
            plot_action[args.what](hdf5file, iecho=args.tau, **kwargs)
        if args.savefile:
            plt.savefig(basename+'-'+args.savefile)
    if not args.savefile: