Source code for xrdtools.tools.clt

from __future__ import unicode_literals, print_function, division, absolute_import

import sys
from argparse import ArgumentParser

import numpy as np
import xrdtools


[docs]def xrdml(): """Command line tool to export measurement data from xrdml files. Allowed keyword arguments: -------------------------- -o, --output : str Choices: 'stdout', 'txt' [default: 'txt'] --delimiter : str Default: '\t' --fmt : str Default: '%.18e' """ parser = ArgumentParser('Export measurement data for xrdml files.') parser.add_argument('filenames', metavar='filenames', type=str, nargs='+', help='filenames for which to export the data') parser.add_argument('-o', '--output', metavar='output', choices=['stdout', 'txt'], default='txt', help='the format to which the data should be exported') parser.add_argument('--delimiter', metavar='delimiter', type=str, default='\t', help='define a delimiter') parser.add_argument('--fmt', metavar='fmt', type=str, default='%.18e', help='define the output format') args = parser.parse_args() for filename in args.filenames: data = xrdtools.read_xrdml(filename) output = np.array([]) labels = [] if data['measType'] == 'Scan': output = np.vstack([data['x'], data['data']]) labels = [data.get('xlabel', ''), 'Intensity'] elif data['measType'] == 'Area measurement': output = np.vstack([data['2Theta'].ravel(), data['Omega'].ravel(), data['data'].ravel()]) labels = [data.get('xlabel', ''), data.get('ylabel', ''), 'Intensity'] else: print('Measurement type is not supported.') continue if args.output == 'txt': file_out = filename.replace('.xrdml', '.txt') elif args.output == 'stdout': file_out = sys.stdout delimiter = args.delimiter.decode('string-escape') fmt = args.fmt np.savetxt(file_out, output.T, fmt=fmt, delimiter=delimiter, header=delimiter.join(labels))