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

added new (now default) xyz plot

parent 491e3506
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ import numpy as np
import matplotlib.pyplot as plt

from pysen.inout.scans import XYZScan
from pysen.plot.xyzplotlib import xyz_decomposition, plot_xyz_nexus
from pysen.plot.xyzplotlib import plot_xyz_nexus

def plot_xyz(filename, **kwargs):
    scan = XYZScan()
@@ -90,7 +90,7 @@ def main():
    kwargs = vars(args)
    filenames = kwargs.pop('filename')
    for file_name in filenames:
        plot_xyz(file_name, **kwargs)
        plot_xyz_nexus(file_name, **kwargs)

    if args.show:
        plt.show()
+1 −1
Original line number Diff line number Diff line
@@ -9,4 +9,4 @@ 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
                           plot_magnetic_fields, plot_map)           # NOQA
from .xyzplotlib  import plot_xyz                                    # NOQA
from .xyzplotlib  import plot_xyz, plot_xyz_nexus                    # NOQA
+36 −7
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ from pysen.config import INST_POSITIONS, INST_MODES, DEFAULT_ACCELERATOR_POWER,
from pysen.inout  import convert_to_hdf
from pysen.echo   import get_symmetry_phase, make_phase_table
from pysen.plot   import ( plot_echo, plot_atari, plot_map,
                           plot_xyz, plot_magnetic_fields,
                           plot_xyz, plot_xyz_nexus, plot_magnetic_fields,
                           plot_coverage,
                           plot_diffrun, plot_transmission, plot_datreat,
                           get_colormap)
@@ -48,8 +48,8 @@ action_atari = functools.partial(action_default, action=plot_atari)
action_maps   = functools.partial(action_default, action=plot_map)
action_bfield = functools.partial(action_default, action=plot_magnetic_fields)

def action_xyz(filenames, **kwargs):
    "default action for xyz"
def action_old_xyz(filenames, **kwargs):
    "default action for old xyz plot"
    outdir    = kwargs.pop('outdir')
    overwrite = kwargs.pop('overwrite')
    savefig   = kwargs.pop('savefig')
@@ -66,6 +66,16 @@ def action_xyz(filenames, **kwargs):
    if savefig:
        plt.savefig(savefig)

def action_xyz(filenames, **kwargs):
    "default action for xyz (new)"
    _outdir    = kwargs.pop('outdir')
    _overwrite = kwargs.pop('overwrite')
    savefig   = kwargs.pop('savefig')
    for filename in filenames:
        plot_xyz_nexus(filename, **kwargs)
        if savefig:
            plt.savefig(savefig)


def action_diffrun(filenames, **kwargs):
    "action for diffrun"
@@ -354,9 +364,9 @@ def add_atari_options(subparser, parents=None):
    pars.add_argument('--phase0' , dest='phase0', type=float,
                      help='set inital phase for echo fitting (default=%(default)s)')

def add_xyz_options(subparser, parents=None):
def add_old_xyz_options(subparser, parents=None):
    "xyz options"
    pars = subparser.add_parser('xyz', parents=parents,
    pars = subparser.add_parser('old_xyz', parents=parents,
                      help='xyz plot (.dat or .h5 files)',
                      description='create xyz analysis plot')
    pars.set_defaults(overwrite=False, qmin=0, qmax=np.inf, deltaq=0.005, details=False)
@@ -370,6 +380,22 @@ def add_xyz_options(subparser, parents=None):
    pars.add_argument('--details', dest='details', action='store_true',
                      help='print more details of xyz analysis')

def add_xyz_options(subparser, parents=None):
    "xyz options"
    pars = subparser.add_parser('xyz', parents=parents,
                      help='xyz plot .nxs.h5 file(s)',
                      description='create xyz analysis plot')
    pars.set_defaults(overwrite=False, qmin=0, qmax=np.inf, deltaq=0.005, details=False)
    pars.add_argument('file', metavar='filename', help='file to process', nargs='+')
#    pars.add_argument('--qmin', dest='qmin', type=float,
#                      help='qmin (default=%(default)s)')
#    pars.add_argument('--qmax', dest='qmax', type=float,
#                      help='qmax (default=%(default)s)')
#    pars.add_argument('--delta-q', dest='deltaq', type=float,
#                      help='q histogram bin witdth')
#    pars.add_argument('--details', dest='details', action='store_true',
#                      help='print more details of xyz analysis')

def add_diffrun_options(subparser, parents=None):
    "diffrun options"
    pars = subparser.add_parser('diffrun', parents=parents,
@@ -543,7 +569,7 @@ def main():
    add_echo_options(subparsers, parents=[pars_com, pars_tof, pars_pix])
    # atari plot
    add_atari_options(subparsers, parents=[pars_com, pars_tof, pars_pix, pars_zsc])
    # xyz plot
    # xyz plot (new)
    add_xyz_options  (subparsers, parents=[pars_com, pars_tof, pars_pix, pars_zsc])
    # diffrun plot
    add_diffrun_options(subparsers, parents=[pars_com, pars_tof])
@@ -559,6 +585,8 @@ def main():
    add_qtau_options(subparsers, parents=[pars_com,])
    # phase table
    add_ptab_options(subparsers, parents=[pars_com,pars_tof, pars_pix])
    # xyz2 plot (old)
    add_old_xyz_options  (subparsers, parents=[pars_com, pars_tof, pars_pix, pars_zsc])

    # ===================================
    args = parser.parse_args()
@@ -578,7 +606,8 @@ def main():
                    transmission=action_transmission, tr=action_transmission,
                    datreat=action_datreat, dtr=action_datreat,
                    qtau=action_qtau, qt=action_qtau,
                    phase_table=action_phase_table, pt=action_phase_table).get(args.command, None)
                    phase_table=action_phase_table, pt=action_phase_table,
                    old_xyz=action_old_xyz).get(args.command, None)
    if action is None:
        raise RuntimeError('no action specified for %s' % args.command)

+36 −8
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ import matplotlib.pyplot as plt
from   matplotlib import colors

from .. import config, get_q, ANGSTROM
from ..inout.scans import XYZScan
from .plotutil import norm_pix, get_pix


@@ -23,23 +24,18 @@ def xyz_decomposition(xyzdata, errors=False):
    th six keys: {x,y,z}_{up,dn}"""

    res = {}

    # sum of x, y and z  measurements
    sX  = xyzdata['x_up'] + xyzdata['x_dn']
    sY  = xyzdata['y_up'] + xyzdata['y_dn']
    sZ  = xyzdata['z_up'] + xyzdata['z_dn']
    #



    # diff up-down for x, y and z measurements
    dX  = xyzdata['x_up'] - xyzdata['x_dn']
    dY  = xyzdata['y_up'] - xyzdata['y_dn']
    dZ  = xyzdata['z_up'] - xyzdata['z_dn']
    
    # sum of all up
    sUP     =    xyzdata['z_up'] + xyzdata['x_up'] + xyzdata['y_up']
    sDN     =    xyzdata['z_dn'] + xyzdata['x_dn'] + xyzdata['y_dn']

    # "magnetic" sum of up/down
    sM_UP  = +2*xyzdata['z_up'] - xyzdata['x_up'] - xyzdata['y_up']
    sM_DN  = -2*xyzdata['z_dn'] + xyzdata['x_dn'] + xyzdata['y_dn']
@@ -419,7 +415,7 @@ def plot_xyz_single_nexus(data, info, fig, axes, **kwargs):
    data['selection_counts'] = cnts.sum()


def plot_xyz_nexus(data, info, **kwargs):
def plot_xyz_nexus_data(data, info, **kwargs):
    "plot xyz"
    #normalize = kwargs.pop('normalize', False)
    #savefile  = kwargs.pop('savefile' , None)
@@ -452,4 +448,36 @@ def plot_xyz_nexus(data, info, **kwargs):
    #    self.xyz_analysis()
    #except KeyError as e:
    #    self.log.info("%s: key %s missing", self.info['base'], e)

def plot_xyz_nexus(filename, **kwargs):
    "plot NeXus NSE XYZ scan file"
    scan = XYZScan()
    scan.read_nexus(filename, **kwargs)

    plot_xyz_nexus_data(scan.data, scan.info, **kwargs)

    log = logging.getLogger()

    rates = {}
    base  = scan.info['base']
    for key, data in scan.data.items():
        rates[key]=0.0
        if data['pcharge']>0:
            counts = data['selection_counts']
            scale  = data['pcharge']/1e12
            rates[key]        = counts/scale
            rates[key+'_sig'] = np.sqrt(counts)/scale
            log.info("%s: %-6.6s = (%9.1f +/- %9.1f) counts/C", base, key.upper(), rates[key], rates[key+'_sig'])
        #
    res = xyz_decomposition(rates, errors=True)
    #
    stot = res['sum_ave']
    log.info("%s:", base)
    for key in ('n_coh', 'i_inc', 'm_mag'):
        log.info("%s: %-6.6s = (%9.1f +/- %9.1f) counts/C  (%5.2f +/- %4.2f)%%",
            base, key.upper(), res[key], res[key+'_sig'], res[key]/stot*100, res[key+'_sig']/stot*100)
    for key in ('m_up/2', 'm_dn/2',):
        log.info("%s: %-6.6s = (%9.1f +/- %9.1f) counts/C",
            base, key.upper(), res[key], res[key+'_sig'])
    log.info("%s: TOT    = %9.1f counts/C", base, stot)
#EOF