Commit 5af40a98 authored by Zolnierczuk, Piotr's avatar Zolnierczuk, Piotr
Browse files

merged nxs2echo and convert2hdf

parent a4bfc251
Loading
Loading
Loading
Loading
+49 −0
Original line number Diff line number Diff line
#!/usr/bin/env python
""" a script to convert .echo files to .hfd5 format
""" scripts to convert .echo files to/from .hfd5 format
"""
import argparse

@@ -7,27 +7,43 @@ from pysen import version, setup_logger
from pysen.inout  import convert_files

def main():
    "the main"
    parser = argparse.ArgumentParser(description='convert echo file into HDF5')
    parser.set_defaults(loglevel=1, compression='gzip', out='.', convert='echo', overwrite=False)
    "run function for the connverters"
    description="<unknown>"
    #
    description='convert NeXus file to old TACO format (or old .echo file to .h5)'
    parser = argparse.ArgumentParser(description=description)
    parser.set_defaults(loglevel=1, out='.', converter='to_taco')
    parser.add_argument('filename', metavar='file', nargs='+', help='filenames to process')
    parser.add_argument('--outdir', '-o', dest='out',
                        help='set output directory (default %(default)s)')
    parser.add_argument('--force','-f', dest='overwrite', action='store_true',
                        help='force conversion, i.e. overwrite existing HDF files')
    parser.add_argument('--no-compression', '-C', dest='compression', action='store_const',
                        const=None, help='turn off gzip compression')
    parser.add_argument('--from-taco', '-e', dest='converter', action='store_const',
                           const='from_taco',  help='convert from TACO .echo  to .h5')
    parser.add_argument('--verbose', '-v', dest='loglevel', action='count',
                           help='verbose output')
    parser.add_argument('--quiet', '-q', dest='loglevel', action='store_const',
                           const=0,  help='verbose output')
    parser.add_argument('--version', action='version',
                        version='%(prog)s pysen={version}'.format(version=version(full=True)))
    # nexus to TACO
    parser.add_argument('--npix', '-P', type=int, dest='npix', default=32,
                            help='set number of detector pixels (default %(default)s)')
    parser.add_argument('--ntof', '-T', type=int, dest='ntof', default=42,
                            help='set number of tof channels (default %(default)s)')
    parser.add_argument('--step', '-S', type=float, dest='step', default=None,
                            help='set precession phase step (default: find it from the NeXus file)')
    # .echo to .h5 options
    parser.add_argument('--force','-f', dest='overwrite', action='store_true', default=False,
                            help='force conversion, i.e. overwrite existing HDF files')
    parser.add_argument('--no-compression', '-C', dest='compression', action='store_const', default='gzip',
                            const=None, help='turn off gzip compression')

    kwargs = vars(parser.parse_args())
    loglevel  = kwargs.pop('loglevel')
    filenames = kwargs.pop('filename')
    outdir    = kwargs.pop('out')
    setup_logger(loglevel)
    convert_files(filenames, outdir, **kwargs)

    args = parser.parse_args()
    setup_logger(args.loglevel)
    convert_files(args.filename, args.out, compression=args.compression,
                    overwrite=args.overwrite, converter='from_taco')

if __name__ == "__main__":
    main()
+7 −6
Original line number Diff line number Diff line
@@ -247,7 +247,6 @@ def convert_to_hdf(filename, outdir, **kwargs):
WriterClassType = { 'application/nexus-nse-echo'         : EchoWriter,
                    'application/nexus-nse-diffraction'  : DiffractionWriter,
                    'application/nexus-nse-transmission' : TransmissionWriter }

def convert_to_taco(filename, outdir, **kwargs):
    """convert *.nxs.h5 file into old TACO style
    echo, translation,diffrun dat file
@@ -255,24 +254,26 @@ def convert_to_taco(filename, outdir, **kwargs):
    file_type = get_nsefiletype(filename)
    writer_class = WriterClassType.get(file_type, None)
    if not isinstance(writer_class, type):
        raise RuntimeError("file {filename} unknown file type {file_type}")
        raise RuntimeError(f"Unknown file type {file_type}")
    writer = writer_class()
    if not writer.read_nexus(filename, **kwargs):
        return None
    res = writer.save(outdir=outdir)
    return res

ConverterType  = { 'to_taco'   : convert_to_taco,
                   'from_taco' : convert_to_hdf}

def convert_files(filenames, outdir, **kwargs):
    """convert *.nxs.h5 file to/from old TACO style files"""
    log = logging.getLogger()
    converter = { 'to_taco'   : convert_to_taco,
                  'from_taco' : convert_to_hdf}.get(kwargs.pop('converter', 'from_taco'))
    converter = ConverterType.get(kwargs.pop('converter', 'from_taco'))
    for filename in filenames:
        try:
            basename = os.path.basename(filename)
            outfile = converter(filename, outdir, **kwargs)
            log.info('converted %s to %s', basename, outfile)
        except RuntimeError as exc:
            log.warning("error converting %s: %s", basename, exc)
            log.warning("error converting %s: (%s)", basename, exc)
        except OSError as exc:
            log.warning("error converting %s: %s", basename, exc.strerror)
            log.warning("error converting %s: (%s)", basename, exc.strerror)

pysen/inout/nxs2echo.py

deleted100755 → 0
+0 −38
Original line number Diff line number Diff line
#!/usr/bin/env python
"""Simple nexus to echo converter
Piotr Zolnierczuk, zolnierczukp AT ornl.gov
Oak Ridge National Lab, 2024
"""
import argparse

from pysen import version, setup_logger
from pysen.inout import convert_files

def main():
    "the main"
    parser = argparse.ArgumentParser(description='convert nxs.h5 files to old TACO format')
    parser.set_defaults(ntof=42, npix=32, step=None, outdir='.', loglevel=1)
    parser.add_argument('filename', metavar='file', nargs='+', help='filenames to process')
    parser.add_argument('--outdir', '-o', dest='out',
                        help='set output directory (default %(default)s)')
    parser.add_argument('--npix', '-P', type=int, dest='npix',
                        help='set number of detector pixels (default %(default)s)')
    parser.add_argument('--ntof', '-T', type=int, dest='ntof',
                        help='set number of tof channels (default %(default)s)')
    parser.add_argument('--step', '-S', type=float, dest='step',
                        help='set precession phase step (default: find it from the NeXus file)')
    parser.add_argument('--verbose', '-v', dest='loglevel', action='count',
                           help='verbose output')
    parser.add_argument('--quiet', '-q', dest='loglevel', action='store_const',
                           const=0,  help='verbose output')
    parser.add_argument('--version', action='version',
                        version='%(prog)s pysen={version}'.format(version=version(full=True)))

    args = parser.parse_args()
    setup_logger(args.loglevel)
    convert_files(args.filename, args.out, npix=args.npix, ntof=args.ntof, step=args.step,
                  converter='to_taco')

if __name__ == "__main__":
    main()
#EOF
+2 −2
Original line number Diff line number Diff line
@@ -3,8 +3,8 @@ PySEN revision module
"""
import sys
__version__  = "2.1"
__release__  = "a1"
__date__     = "Feb 27, 2025"
__release__  = "a2"
__date__     = "Mar 24, 2025"

def version(full=False):
    "get pysen version number"
+5 −3
Original line number Diff line number Diff line
@@ -41,12 +41,14 @@ setup(
      package_dir   = { 'pysen': 'pysen' } ,
      entry_points={
        'console_scripts': [
            'convert2hdf      = pysen.inout.convert2hdf:main',
            'nxs2echo         = pysen.inout.nxs2echo:main',
            'nseplot          = pysen.plot.nseplot:main',
            'nxs2echo         = pysen.inout.converters:main',
            #
            'nsefilemon       = pysen.ui.filemon:main',
            'nsesimecho       = pysen.ui.pysimecho:main',
        ]
        ],
        #'gui_scripts': [
        #]
      },
      scripts       = [
        'scripts/pysen_completion',
Loading