def make_crystal(fnam): from crappy_crystals import symmetry_operations import disorder # read the h5 file kwargs = read_input_output_h5(fnam) config = kwargs['config_file'] if 'solid_unit_retrieved' in kwargs.keys(): print '\nsolid_unit = solid_unit_retrieved' solid_unit = kwargs['solid_unit_retrieved'] elif 'solid_unit_init' in kwargs.keys(): print '\nsolid_unit = solid_unit_init' solid_unit = kwargs['solid_unit_init'] elif 'solid_unit' in kwargs.keys(): print '\nsolid_unit = solid_unit' solid_unit = kwargs['solid_unit'] if config['crystal']['space_group'] == 'P1': sym_ops = symmetry_operations sym_ops_obj = sym_ops.P1(config['crystal']['unit_cell'], config['detector']['shape']) elif config['crystal']['space_group'] == 'P212121': sym_ops = symmetry_operations sym_ops_obj = sym_ops.P212121(config['crystal']['unit_cell'], config['detector']['shape']) Solid_unit = np.fft.fftn(solid_unit, config['detector']['shape']) solid_unit_expanded = np.fft.ifftn(Solid_unit) modes = sym_ops_obj.solid_syms_Fourier(Solid_unit) #N = config['disorder']['n'] #exp = disorder.make_exp(config['disorder']['sigma'], config['detector']['shape']) lattice = sym_ops.lattice(config['crystal']['unit_cell'], config['detector']['shape']) #diff = N * exp * np.abs(lattice * np.sum(modes, axis=0)**2) #diff += (1. - exp) * np.sum(np.abs(modes)**2, axis=0) fourier_space_crystal = np.sum(modes, axis=0) * lattice real_space_crystal = np.fft.ifftn(fourier_space_crystal) real_space_crystal = np.fft.fftshift(real_space_crystal) return real_space_crystal
def parse_cmdline_args(): import argparse import os parser = argparse.ArgumentParser(prog = 'display.py', description='display the contents of output.h5 in a GUI') parser.add_argument('path', type=str, \ help="path to output.h5 file") parser.add_argument('-i', '--isosurface', action='store_true', \ help="display the crystal in the field of view as an iso surface") args = parser.parse_args() # check that args.ini exists if not os.path.exists(args.path): raise NameError('output h5 file does not exist: ' + args.path) return args if __name__ == '__main__': args = parse_cmdline_args() if args.isosurface : show_crystal(args.path) else : # read the h5 file kwargs = read_input_output_h5(args.path) signal.signal(signal.SIGINT, signal.SIG_DFL) # allow Control-C #app = QtGui.QApplication(sys.argv) ex = Application(fnam = args.path, **kwargs)