Exemplo n.º 1
0
#!/usr/bin/env python
import numpy as np
import argparse
import sys
import os
import logging
from py_src import read_config
from py_src import py_utils

if __name__ == "__main__":
    logging.basicConfig(filename="recon.log", level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
    parser      = py_utils.my_argparser(description="make detector")
    args        = parser.special_parse_args()

    det_file    = os.path.join(args.main_dir, read_config.get_filename(args.config_file, 'make_detector', "out_detector_file"))
    to_write    = py_utils.check_to_overwrite(det_file)
    logging.info("\n\nStarting make_detector....")
    logging.info(' '.join(sys.argv))

    if to_write:
        timer       = py_utils.my_timer()
        pm          = read_config.get_detector_config(args.config_file, show=args.vb)
        q_pm        = read_config.compute_q_params(pm['detd'], pm['dets_x'], pm['dets_y'], pm['pixsize'], pm['wavelength'], pm['ewald_rad'], show=args.vb)
        timer.reset_and_report("Reading experiment parameters") if args.vb else timer.reset()

        fov_len     = 2 * int(np.ceil(q_pm['fov_in_A']/q_pm['half_p_res']/2.)) + 3
        det_cen_x   = pm['detc_x']
        det_cen_y   = pm['detc_y']
        qscaling    = 1. / pm['wavelength'] / q_pm['q_sep']
        (x, y)      = np.mgrid[0:pm['dets_x'], 0:pm['dets_y']]
        (x, y)      = (x.flatten()-det_cen_x, y.flatten()-det_cen_y)
Exemplo n.º 2
0
'''

import os
import numpy as np
import h5py
import sys
import logging
#Add utils directory to pythonpath
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
from py_src import py_utils
from py_src import writeemc
from py_src import read_config

if __name__ == '__main__':
    logging.basicConfig(filename='recon.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
    parser = py_utils.my_argparser(description='cheetahtodet')
    parser.add_argument('h5_name', help='HDF5 file to convert to detector format')
    parser.add_argument('-M', '--mask', help='Path to detector style mask (0:good, 1:no_orient, 2:bad) in h5 file')
    parser.add_argument('--mask_dset', help='Data set in mask file. Default: /data/data', default='data/data')
    args = parser.special_parse_args()

    logging.info('Starting cheetahtodet...')
    logging.info(' '.join(sys.argv))
    pm = read_config.get_detector_config(args.config_file, show=args.vb)
    q_pm = read_config.compute_q_params(pm['detd'], pm['dets_x'], pm['dets_y'], pm['pixsize'], pm['wavelength'], pm['ewald_rad'], show=args.vb)
    output_folder = read_config.get_filename(args.config_file, 'emc', 'output_folder')

    # Cheetah geometry files have coordinates in m
    with h5py.File(args.h5_name, 'r') as f:
        x = f['x'][:].flatten() * 1.e3
        y = f['y'][:].flatten() * 1.e3
Exemplo n.º 3
0
import logging
#Add utils directory to pythonpath
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
from py_src import py_utils
from py_src import writeemc
from py_src import read_config

try:
    import psana
except ImportError:
    sys.stderr.write('This utility needs PSANA to run. Unable to import psana module\n')
    sys.exit(1)

if __name__ == '__main__':
    logging.basicConfig(filename='recon.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
    parser = py_utils.my_argparser(description='PSANA to det')
    parser.add_argument('exp_string', help='PSANA experiment string')
    parser.add_argument('det_name', help='Detector name (either source string or alias)')
    args = parser.special_parse_args()

    logging.info('Starting psanatodet...')
    logging.info(' '.join(sys.argv))
    pm = read_config.get_detector_config(args.config_file, show=args.vb)
    q_pm = read_config.compute_q_params(pm['detd'], pm['dets_x'], pm['dets_y'], pm['pixsize'], pm['wavelength'], pm['ewald_rad'], show=args.vb)
    output_folder = read_config.get_filename(args.config_file, 'emc', 'output_folder')

    ds = psana.DataSource(args.exp_string + ':idx')
    run = ds.runs().next()
    times = run.times()
    evt = run.event(times[0])
    det = psana.Detector(args.det_name)
Exemplo n.º 4
0
#!/usr/bin/env python
import numpy as np
import argparse
import sys
import os
import logging
from py_src import read_config
from py_src import process_pdb
from py_src import py_utils

if __name__ == "__main__":
    # logging config must occur before my_argparser, because latter already starts logging
    logging.basicConfig(filename="recon.log", level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
    parser      = py_utils.my_argparser(description="make electron density")
    args        = parser.special_parse_args()
    logging.info("\n\nStarting.... make_densities")
    logging.info(' '.join(sys.argv))

    try:
        pdb_file    = os.path.join(args.main_dir, read_config.get_filename(args.config_file, 'make_densities', "in_pdb_file"))
        pdb_code    = None
    except read_config.ConfigParser.NoOptionError:
        pdb_code    = read_config.get_filename(args.config_file, 'make_densities', 'pdb_code')
        pdb_file    = 'aux/%s.pdb' % pdb_code.upper()
    aux_dir     = os.path.join(args.main_dir, read_config.get_filename(args.config_file, 'make_densities', "scatt_dir"))
    den_file    = os.path.join(args.main_dir, read_config.get_filename(args.config_file, 'make_densities', "out_density_file"))
    to_write    = py_utils.check_to_overwrite(den_file)

    if to_write:
        timer       = py_utils.my_timer()
        pm          = read_config.get_detector_config(args.config_file, show=args.vb)
Exemplo n.º 5
0
#!/usr/bin/env python
import numpy as np
import argparse
import sys
import os
import logging
from py_src import read_config
from py_src import py_utils

if __name__ == "__main__":
    logging.basicConfig(filename="recon.log",
                        level=logging.INFO,
                        format='%(asctime)s - %(levelname)s -%(message)s')
    parser = py_utils.my_argparser(description="make intensities")
    args = parser.special_parse_args()

    den_file = os.path.join(
        args.main_dir,
        read_config.get_filename(args.config_file, 'make_intensities',
                                 "in_density_file"))
    intens_file = os.path.join(
        args.main_dir,
        read_config.get_filename(args.config_file, 'make_intensities',
                                 "out_intensity_file"))
    to_write = py_utils.check_to_overwrite(intens_file)
    logging.info("Starting.... make_intensities")
    logging.info(' '.join(sys.argv))

    if to_write:
        timer = py_utils.my_timer()
        pm = read_config.get_detector_config(args.config_file, show=args.vb)
Exemplo n.º 6
0
        num = int(self.numstr.get()) - 1
        if num > -1:
            self.numstr.set(str(num))
            self.plot_frame()

    def rand_frame(self, event=None):
        num = np.random.randint(0, self.num_frames)
        self.numstr.set(str(num))
        self.plot_frame()

    def quit(self, event=None):
        self.master.quit()


if __name__ == '__main__':
    parser = py_utils.my_argparser(
        description='Utility for viewing frames of the emc file (list)')
    parser.add_argument('--cmap', help='Matplotlib color map (default: jet)')
    parser.add_argument('--mask',
                        help='Name of mask file of type uint8 (default: None)')
    args = parser.special_parse_args()

    try:
        pfile = read_config.get_filename(args.config_file, 'emc',
                                         'in_photons_file')
        print 'Using in_photons_file: %s' % pfile
        photons_list = [pfile]
    except ConfigParser.NoOptionError:
        plist = read_config.get_filename(args.config_file, 'emc',
                                         'in_photons_list')
        print 'Using in_photons_list: %s' % plist
        with open(plist, 'r') as f:
Exemplo n.º 7
0
'''

import os
import numpy as np
import h5py
import sys
import logging
#Add utils directory to pythonpath
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
from py_src import py_utils
from py_src import writeemc
from py_src import read_config

if __name__ == '__main__':
    logging.basicConfig(filename='recon.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
    parser      = py_utils.my_argparser(description='condortoemc')
    parser.add_argument('condor_fname', help='Condor CXI file to convert to emc format')
    parser.add_argument('-o', '--output', help='Output folder, read from config file by default', type=str, default=None) 
    parser.add_argument('-l', '--list', help='condor_fname is list of condor CXI files rather than a single one', action='store_true', default=False)
    args        = parser.special_parse_args()

    logging.info('Starting condortoemc...')
    logging.info(' '.join(sys.argv))
    print args.config_file
    pm          = read_config.get_detector_config(args.config_file, show=args.vb)
    if args.output is None:
        output_folder = read_config.get_filename(args.config_file, 'emc', 'output_folder')
    else:
        output_folder = args.output

    if not os.path.isfile(args.condor_fname):
Exemplo n.º 8
0
from py_src import py_utils
from py_src import writeemc
from py_src import read_config

try:
    import psana
except ImportError:
    sys.stderr.write(
        'This utility needs PSANA to run. Unable to import psana module\n')
    sys.exit(1)

if __name__ == '__main__':
    logging.basicConfig(filename='recon.log',
                        level=logging.INFO,
                        format='%(asctime)s - %(levelname)s - %(message)s')
    parser = py_utils.my_argparser(description='PSANA to det')
    parser.add_argument('exp_string', help='PSANA experiment string')
    parser.add_argument('det_name',
                        help='Detector name (either source string or alias)')
    args = parser.special_parse_args()

    logging.info('Starting psanatodet...')
    logging.info(' '.join(sys.argv))
    pm = read_config.get_detector_config(args.config_file, show=args.vb)
    q_pm = read_config.compute_q_params(pm['detd'],
                                        pm['dets_x'],
                                        pm['dets_y'],
                                        pm['pixsize'],
                                        pm['wavelength'],
                                        pm['ewald_rad'],
                                        show=args.vb)
Exemplo n.º 9
0
import logging
#Add utils directory to pythonpath
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
from py_src import py_utils
from py_src import writeemc
from py_src import read_config

try:
    import condor
except ImportError:
    sys.stderr.write('This utility needs CONDOR to run. Unable to import condor module\n')
    sys.exit(1)

if __name__ == '__main__':
    logging.basicConfig(filename='recon.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
    parser = py_utils.my_argparser(description='CONDOR to det')
    parser.add_argument('filename', help='CONDOR file', type=str)
    args = parser.special_parse_args()

    logging.info('Starting condortodet...')
    logging.info(' '.join(sys.argv))
    pm = read_config.get_detector_config(args.config_file, show=args.vb)
    output_folder = read_config.get_filename(args.config_file, 'emc', 'output_folder')

    with h5py.File(args.filename,'r') as f:
        condor_dets_x  = f['detector']['nx'][0]
        condor_dets_y  = f['detector']['ny'][0]
        condor_detc_x  = f['detector']['cx'][0]
        condor_detc_y  = f['detector']['cy'][0]
        condor_detd    = f['detector']['distance'][0] # in units of m
        condor_pixsize = f['detector']['pixel_size'][0] # in units of m
Exemplo n.º 10
0
def bin_image(array, binning):
    '''
    Convenience function to bin 2D array by some bin factor
    The binning must divide the array shape
    '''
    s = array.shape
    out = array.reshape(s[0] / binning, binning, s[1] / binning,
                        binning).sum(axis=(1, 3))
    return out


if __name__ == '__main__':
    logging.basicConfig(filename='recon.log',
                        level=logging.INFO,
                        format='%(asctime)s - %(levelname)s - %(message)s')
    parser = py_utils.my_argparser(description='h5toemc')
    parser.add_argument('h5_name', help='HDF5 file to convert to emc format')
    parser.add_argument('-d',
                        '--dset_name',
                        help='Name of HDF5 dataset containing photon data',
                        default=None)
    parser.add_argument(
        '-s',
        '--sel_file',
        help=
        'Path to text file containing indices of frames\nor a set of 0 or 1 values. Default: Do all',
        default=None)
    parser.add_argument(
        '-S',
        '--sel_dset',
        help='Same as --sel_file, but pointing to the name of an HDF5 dataset',
Exemplo n.º 11
0
from py_src import py_utils
from py_src import writeemc
from py_src import read_config

try:
    import condor
except ImportError:
    sys.stderr.write(
        'This utility needs CONDOR to run. Unable to import condor module\n')
    sys.exit(1)

if __name__ == '__main__':
    logging.basicConfig(filename='recon.log',
                        level=logging.INFO,
                        format='%(asctime)s - %(levelname)s - %(message)s')
    parser = py_utils.my_argparser(description='CONDOR to det')
    parser.add_argument('filename', help='CONDOR file', type=str)
    args = parser.special_parse_args()

    logging.info('Starting condortodet...')
    logging.info(' '.join(sys.argv))
    pm = read_config.get_detector_config(args.config_file, show=args.vb)
    output_folder = read_config.get_filename(args.config_file, 'emc',
                                             'output_folder')

    with h5py.File(args.filename, 'r') as f:
        condor_dets_x = f['detector']['nx'][0]
        condor_dets_y = f['detector']['ny'][0]
        condor_detc_x = f['detector']['cx'][0]
        condor_detc_y = f['detector']['cy'][0]
        condor_detd = f['detector']['distance'][0]  # in units of m
Exemplo n.º 12
0
'''

import os
import numpy as np
import h5py
import sys
import logging
#Add utils directory to pythonpath
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
from py_src import py_utils
from py_src import writeemc
from py_src import read_config

if __name__ == '__main__':
    logging.basicConfig(filename='recon.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
    parser = py_utils.my_argparser(description='cheetahtodet')
    parser.add_argument('h5_name', help='HDF5 file to convert to detector format')
    parser.add_argument('-M', '--mask', help='Path to detector style mask (0:good, 1:no_orient, 2:bad) in h5 file')
    parser.add_argument('--mask_dset', help='Data set in mask file. Default: /data/data', default='data/data')
    parser.add_argument('--dragonfly_mask', help='Whether mask has Dragonfly style values or not. (Default: false)', default=False, action='store_true')
    args = parser.special_parse_args()

    logging.info('Starting cheetahtodet...')
    logging.info(' '.join(sys.argv))
    pm = read_config.get_detector_config(args.config_file, show=args.vb)
    q_pm = read_config.compute_q_params(pm['detd'], pm['dets_x'], pm['dets_y'], pm['pixsize'], pm['wavelength'], pm['ewald_rad'], show=args.vb)
    output_folder = read_config.get_filename(args.config_file, 'emc', 'output_folder')

    # Cheetah geometry files have coordinates in m
    with h5py.File(args.h5_name, 'r') as f:
        x = f['x'][:].flatten() * 1.e3
Exemplo n.º 13
0
        if self.classes.unsaved:
            result = QtWidgets.QMessageBox.question(
                self, 'Warning', 'Unsaved changes to class list. Save?',
                QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No
                | QtWidgets.QMessageBox.Cancel, QtWidgets.QMessageBox.Cancel)
            if result == QtWidgets.QMessageBox.Yes:
                self.classes.save()
                event.accept()
            elif result == QtWidgets.QMessageBox.No:
                event.accept()
            else:
                event.ignore()


if __name__ == '__main__':
    parser = py_utils.my_argparser(description='Data classifier')
    parser.add_argument('--cmap',
                        help='Matplotlib color map (default: CMRmap)')
    parser.add_argument(
        '-M',
        '--mask',
        help='Whether to zero out masked pixels (default False)',
        action='store_true',
        default=False)
    parser.add_argument('-C',
                        '--class_fname',
                        help='File containing classes for each frame',
                        default='my_classes.dat')
    args = parser.special_parse_args()

    app = QtWidgets.QApplication(sys.argv)
Exemplo n.º 14
0
        num_frames = 1

    return ind, num_frames

def bin_image(array, binning):
    '''
    Convenience function to bin 2D array by some bin factor
    The binning must divide the array shape
    '''
    s = array.shape
    out = array.reshape(s[0]/binning, binning, s[1]/binning, binning).sum(axis=(1,3))
    return out

if __name__ == '__main__':
    logging.basicConfig(filename='recon.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
    parser = py_utils.my_argparser(description='h5toemc')
    parser.add_argument('h5_name', help='HDF5 file to convert to emc format')
    parser.add_argument('-d', '--dset_name', help='Name of HDF5 dataset containing photon data', default=None)
    parser.add_argument('-s', '--sel_file', help='Path to text file containing indices of frames\nor a set of 0 or 1 values. Default: Do all', default=None)
    parser.add_argument('-S', '--sel_dset', help='Same as --sel_file, but pointing to the name of an HDF5 dataset', default=None)
    parser.add_argument('-l', '--list', help='h5_name is list of h5 files rather than a single one', action='store_true', default=False)
    parser.add_argument('-o', '--out_fname', help='Output filename if different from calculated name', default=None)
    args = parser.special_parse_args()

    logging.info('Starting h5toemc....')
    logging.info(' '.join(sys.argv))
    pm = read_config.get_detector_config(args.config_file, show=args.vb)
    output_folder = read_config.get_filename(args.config_file, 'emc', 'output_folder')
    curr_num_data = 0

    if not os.path.isfile(args.h5_name):
Exemplo n.º 15
0
#!/usr/bin/env python

import numpy as np
import sys
import os
import ConfigParser
from py_src import py_utils
from py_src import read_config

if __name__ == "__main__":
    # Read detector and photons file from config
    parser = py_utils.my_argparser(description="Generate virtual powder pattern")
    args = parser.special_parse_args()

    try:
        photons_list = [read_config.get_filename(args.config_file, 'emc', "in_photons_file")]
    except ConfigParser.NoOptionError:
        with open(read_config.get_param(args.config_file, 'emc', "in_photons_list"), 'r') as f:
            photons_list = map(lambda x: x.rstrip(), f.readlines())
    
    pm          = read_config.get_detector_config(args.config_file, show=args.vb)
    
    x, y = np.indices((pm['dets_x'], pm['dets_y']))
    x = x.flatten()
    y = y.flatten()
    powder = np.zeros((x.max()+1,y.max()+1))

    # For each emc file, read data and add to powder
    for photons_file in photons_list:
        # Read photon data
        with open(photons_file, 'rb') as f: