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

added xyz analysis to nseplot

parent 7f194315
Loading
Loading
Loading
Loading
+80 −67
Original line number Diff line number Diff line
@@ -4,15 +4,18 @@
import os.path
import argparse

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

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_magnetic_fields,
from pysen.plot   import ( plot_echo, plot_atari, plot_map, 
                           plot_xyz,
                           plot_magnetic_fields,
                           plot_diffrun, plot_transmission )
from pysen.plot.cmdline import NsePlotApp
#from pysen.plot.cmdline import NsePlotApp

def action_default(filenames, **kwargs):
    "default action for echo, atari, etc"
@@ -39,6 +42,26 @@ def action_default(filenames, **kwargs):
            print(exc)
    return to_show

def action_xyz(filenames, **kwargs):
    "default action for xyz"
    outdir  = kwargs.pop('outdir')
    savefig = kwargs.pop('savefig')
    overwrite = kwargs.pop('overwrite')
    log = kwargs.pop('log')
    hfiles = []
    for filename in filenames:
        _ , ext = os.path.splitext(os.path.basename(filename))
        if ext==".dat":
            hfiles.append(convert_to_hdf(filename, outdir, data_type='magnetic', overwrite=overwrite))
        else:
            hfiles.append(filename)
    plot_xyz(*hfiles, **kwargs)

    if not savefig:
        to_show = True
    return to_show


def action_diffrun(filenames, **kwargs):
    "action for diffrun"
    savefig = kwargs.pop('savefig')
@@ -97,25 +120,35 @@ def arguments_selection(pars, pix=True, tof=True):
        pars.add_argument('--whole-detector', '-W', dest='whole_detector', action='store_true',
                          help='show sum over entire detector area')

def arguments_vertscale(pars):
    """vertical scale arguments"""
    pars.add_argument('--vmin' , dest='vmin', type=int,
                        help='set min vertical scale (default=%(default)s)')
    pars.add_argument('--vmax' , dest='vmax', type=int,
                        help='set max vertical scale (default=%(default)s)')
    pars.add_argument('--logz' , dest='logz', action='store_true',
                           help='detector image log vertical scale')
    pars.add_argument('--normalize', '-n' , dest='normalize', action='store_true',
                           help='normalize results')

def main():
    "the main"

    plot_action = dict(echo=plot_echo, atari=plot_atari, maps=plot_map, bfield=plot_magnetic_fields, diffrun=plot_diffrun)
    description = "SNS NSE plotting tool"

    parser_top  = argparse.ArgumentParser(description=description)
    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=False, help='what to plot')
    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,
                        vmin=0, vmax=None, logz=False,
    parser.set_defaults(loglevel=1, outdir='.', 
                        tau=0, npix=0,
                        absy=0, normalize=False,
                        tbin1=0, tbin2=None,
                        xpix1=10,xpix2=22,ypix1=10,ypix2=22,
                        vmin=0, vmax=None, logz=False, normalize=False, absy=0, 
                        center_only=False, whole_detector=False,
                        map_type='all', phase0=None,
                        incoherent=False, max_chi2=1e3)
@@ -151,20 +184,6 @@ def main():
    grp_echo.add_argument('--num-pix', '-N', dest='npix', metavar='N', type=int,
                          help='set pixel binning (default=%(default)s)')
    arguments_selection(grp_echo)
    #grp_echo.add_argument('--t1' , '-b',  dest='tbin1', type=int,
    #                      help='set min TOF bin (default=%(default)s)')
    #grp_echo.add_argument('--t2' , '-B',  dest='tbin2', type=int,
    #                      help='set max TOF bin (default=%(default)s)')
    #grp_echo.add_argument('--x1' , dest='xpix1', type=int,
    #                      help='set min X pix (default=%(default)s)')
    #grp_echo.add_argument('--x2' , dest='xpix2', type=int,
    #                      help='set max X pix (default=%(default)s)')
    #grp_echo.add_argument('--y1' , dest='ypix1', type=int,
    #                      help='set min Y pix (default=%(default)s)')
    #grp_echo.add_argument('--y2' , dest='ypix2', type=int,
    #                      help='set max Y pix (default=%(default)s)')
    #grp_echo.add_argument('--whole-detector', '-W', dest='whole_detector', action='store_true',
    #                      help='show sum over entire detector area')
    grp_echo.add_argument('--resolution', '-R', dest='resolution_plot', action='store_true',
                          help='TBD')
    # atari plot
@@ -172,55 +191,28 @@ def main():
    grp_atari = parser_atari.add_argument_group('atari plot options')
    grp_atari.add_argument('--tau', '-t',  dest='tau', type=int,
                          help='set tau to display (default=%(default)s)')
    arguments_selection(grp_atari)
    arguments_vertscale(grp_atari)
    grp_atari.add_argument('--only-echo', dest='only_echo', action='store_true',
                           help='show only echo (no up/down)')
    grp_atari.add_argument('--incoherent', '-I', dest='incoherent', action='store_true',
                          help='treat data as from incoherent scatterer')
    arguments_selection(grp_atari)
    #grp_atari.add_argument('--t1' , '-b',  dest='tbin1', type=int,
    #                       help='set min TOF bin (default=%(default)s)')
    #grp_atari.add_argument('--t2' , '-B',  dest='tbin2', type=int,
    #                       help='set max TOF bin (default=%(default)s)')
    #grp_atari.add_argument('--x1' , dest='xpix1', type=int,
    #                       help='set min X pix (default=%(default)s)')
    #grp_atari.add_argument('--x2' , dest='xpix2', type=int,
    #                       help='set max X pix (default=%(default)s)')
    #grp_atari.add_argument('--y1' , dest='ypix1', type=int,
    #                       help='set min Y pix (default=%(default)s)')
    #grp_atari.add_argument('--y2' , dest='ypix2', type=int,
    #                       help='set max Y pix (default=%(default)s)')
    #grp_atari.add_argument('--whole-detector', '-W', dest='whole_detector', action='store_true',
    #                       help='select the entire detector area')
    grp_atari.add_argument('--vmin' , dest='vmin', type=float,
                           help='detector image min vertical scale (default=%(default)s) ')
    grp_atari.add_argument('--vmax' , dest='vmax', type=float,
                           help='detector image max vertical scale (default=%(default)s)')
    grp_atari.add_argument('--logz' , dest='logz', action='store_true',
                           help='detector image log vertical scale')
    grp_atari.add_argument('--normalize', '-n' , dest='normalize', action='store_true',
                            help='normalize results to proton charge')
    grp_atari.add_argument('--phase0' , dest='phase0', type=float,
                           help='set inital phase for echo fitting (default=%(default)s)')

    # 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_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'],
                         help='(default: %(default)s)')
    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_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,
                            help='set max chi-square (default=%(default)s)')
    grp_bfield.add_argument('--axis', dest='axis', type=int, default=-1,
                            help='set axis to plot  (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.set_defaults(overwrite=False, qmin=0, qmax=np.inf, deltaq=0.001)
    arguments_selection(grp_xyz)
    arguments_vertscale(grp_xyz)
    grp_xyz.add_argument('--qmin', dest='qmin', type=float,
                           help='qmin (default=%(default)s)')
    grp_xyz.add_argument('--qmax', dest='qmax', type=float,
                           help='qmax (default=%(default)s)')
    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')
@@ -262,14 +254,33 @@ def main():
    grp_trans.add_argument('--echodet', '-e', dest='echodet', action='store_true',
                        help='report transmission for echodet 1/T')

    # 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_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'],
                         help='(default: %(default)s)')
    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_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,
                            help='set max chi-square (default=%(default)s)')
    grp_bfield.add_argument('--axis', dest='axis', type=int, default=-1,
                            help='set axis to plot  (default=%(default)s)')

    # ===================================
    args = parser_top.parse_args()
    log = setup_logger(args.loglevel)
    log.debug('program arguments %s', args)

    if not args.what:
        NsePlotApp().cmdloop()
        return
    #if not args.what:
    #    NsePlotApp().cmdloop()
    #    return
        

    plt.rcParams.update({'figure.max_open_warning': 0})
@@ -278,9 +289,11 @@ def main():

    kwargs = vars(args)

    plot_action = dict(echo=plot_echo, atari=plot_atari, maps=plot_map, bfield=plot_magnetic_fields, diffrun=plot_diffrun)
    if args.what in ('echo', 'atari', 'maps', 'bfield'):
        to_show = action_default(args.file, action=plot_action[args.what], log=log, **kwargs)
        plot_action = dict(echo=plot_echo, atari=plot_atari, maps=plot_map, bfield=plot_magnetic_fields).get(args.what)
        to_show = action_default(args.file, action=plot_action, log=log, **kwargs)
    if args.what in ('xyz', ):
        to_show = action_xyz(args.file, log=log, **kwargs)
    if args.what in ('diffrun', ):
        to_show = action_diffrun(args.file, log=log, **kwargs)
    if args.what in ('transmission', ):

pysen/plot/xyz_analysis.py

deleted100755 → 0
+0 −81
Original line number Diff line number Diff line
#!/usr/bin/env python
"xyz analysis script"

import os.path
import argparse

import numpy as np
import matplotlib.pyplot as plt

from pysen       import version
from pysen.inout import convert_to_hdf
from pysen.plot  import plot_xyz

def main():
    "the main"

    description = "SNS-NSE xyz analysis tool"
    parser = argparse.ArgumentParser(description=description)
    parser.set_defaults(outdir='.', overwrite=False,
                        tbin1=0, tbin2=None, normalize=False,
                        xpix1=10,xpix2=22,ypix1=10,ypix2=22,
                        vmin=0, vmax=None, logz=False,
                        qmin=0, qmax=np.inf, deltaq=0.001)
    parser.add_argument('--version', '-V', action='version',
                        version='%(prog)s pysen={version}'.format(version=version(full=True)))
    parser.add_argument('file', metavar='filename', help='file to process', nargs='+')
    parser.add_argument('--save-figure', '-S', dest='savefig',
                        help='save figure to a file (do not show)')
    parser.add_argument('--save-file', '-s', dest='savefile',
                        help='save data to a csv file')
    parser.add_argument('--t1' , '-b',  dest='tbin1', type=int,
                        help='set min TOF bin (default=%(default)s)')
    parser.add_argument('--t2' , '-B',  dest='tbin2', type=int,
                        help='set max TOF bin (default=%(default)s)')
    parser.add_argument('--x1' , dest='xpix1', type=int,
                        help='set min X pix (default=%(default)s)')
    parser.add_argument('--x2' , dest='xpix2', type=int,
                        help='set max X pix (default=%(default)s)')
    parser.add_argument('--y1' , dest='ypix1', type=int,
                        help='set min Y pix (default=%(default)s)')
    parser.add_argument('--y2' , dest='ypix2', type=int,
                        help='set max Y pix (default=%(default)s)')
    parser.add_argument('--whole-detector', '-W', dest='whole_detector', action='store_true',
                          help='select the entire detector area')
    parser.add_argument('--qmin', dest='qmin', type=float,
                           help='qmin (default=%(default)s)')
    parser.add_argument('--qmax', dest='qmax', type=float,
                           help='qmax (default=%(default)s)')
    parser.add_argument('--vmin' , dest='vmin', type=int,
                        help='set min vertical scale (default=%(default)s)')
    parser.add_argument('--vmax' , dest='vmax', type=int,
                        help='set max vertical scale (default=%(default)s)')
    parser.add_argument('--logz' , dest='logz', action='store_true',
                           help='detector image log vertical scale')
    parser.add_argument('--normalize', '-n' , dest='normalize', action='store_true',
                           help='normalize results to proton charge')
    parser.add_argument('--delta-q', dest='deltaq', type=float,
                           help='q histogram bin witdth')

    args = parser.parse_args()

    plt.rcParams.update({'figure.max_open_warning': 0})


    if args.savefig:
        plt.switch_backend('Agg')
    hfiles = []
    for filename in args.file:
        _ , ext = os.path.splitext(os.path.basename(filename))
        if ext==".dat":
            hfiles.append(convert_to_hdf(filename, args.outdir, data_type='magnetic', overwrite=args.overwrite))
        else:
            hfiles.append(filename)
    kwargs  = vars(args)
    plot_xyz(*hfiles, **kwargs)

    if not args.savefig:
        plt.show()

if __name__ == "__main__":
    main()
+1 −1
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ PySEN revision module
"""
import sys
__version__  = "0.72"
__release__  = "dev3"
__release__  = "dev4"
__date__     = "Aug 3, 2022"

def version(full=False):
+2 −3
Original line number Diff line number Diff line
@@ -24,13 +24,12 @@ setup(
        'console_scripts': [
            'convert2hdf      = pysen.inout.convert2hdf:main',
            'make_phase_table = pysen.plot.make_phase_table:main',
            'xyz_analysis     = pysen.plot.xyz_analysis:main',
            'nseplot          = pysen.plot.nseplot:main',
        ]
      },
      scripts       = [
        'scripts/plot_diffrun.py',
        'scripts/plot_transmission.py',
        #'scripts/plot_diffrun.py',
        #'scripts/plot_transmission.py',
        # to move
        'scripts/plot_dtrfile.py',
        'scripts/qtau.py',