| 0 | 1 import argparse | 
|  | 2 import glob | 
|  | 3 import os | 
|  | 4 | 
|  | 5 import numpy as np | 
|  | 6 | 
|  | 7 import time | 
|  | 8 from datetime import datetime | 
|  | 9 | 
|  | 10 from hexrd.imageseries import omega | 
|  | 11 import pp_dexela | 
|  | 12 #from IPython import embed | 
|  | 13 | 
|  | 14 # ============================================================================= | 
|  | 15 # USER INPUT | 
|  | 16 # ============================================================================= | 
|  | 17 | 
|  | 18 # panel keys to MATCH INSTRUMENT FILE | 
|  | 19 panel_keys = ['FF1', 'FF2'] | 
|  | 20 panel_opts = dict.fromkeys(panel_keys) | 
|  | 21 | 
|  | 22 # !!!: hard coded options for each dexela for April 2017 | 
|  | 23 panel_opts['FF1'] = [('add-row', 1944), ('add-column', 1296),('flip', 'v'), ] | 
|  | 24 panel_opts['FF2'] = [('add-row', 1944), ('add-column', 1296),('flip', 'h'), ] | 
|  | 25 | 
|  | 26 # ==================== End Inputs (should not need to alter below this line) | 
|  | 27 | 
|  | 28 | 
|  | 29 | 
|  | 30 def process_dexelas(file_names, samp_name, scan_number, | 
|  | 31                     ostart, ostep, num_frames, | 
|  | 32                     panel_opts, threshold): | 
|  | 33     """ | 
|  | 34     wrapper for F2 dexela setup | 
|  | 35     """ | 
|  | 36     ostop = ostart + num_frames*ostep | 
|  | 37     omw = omega.OmegaWedges(num_frames) | 
|  | 38     omw.addwedge(ostart, ostop, num_frames) | 
|  | 39 | 
|  | 40     for file_name in file_names: | 
|  | 41         for key in panel_keys: | 
|  | 42             if key.lower() in file_name: | 
|  | 43                 ppd = pp_dexela.PP_Dexela( | 
|  | 44                     file_name, | 
|  | 45                     omw, | 
|  | 46                     panel_opts[key], | 
|  | 47                     panel_id=key, | 
|  | 48                     frame_start=fstart) | 
|  | 49 #                embed() | 
|  | 50 #                ppd=add_missing_pixel_gap(ppd) | 
|  | 51 | 
|  | 52                 #output_name = samp_name + '_' + \ | 
|  | 53                 #    str(scan_number) + '_' + \ | 
|  | 54                 output_name = file_name.split('/')[-4] + '_' + \ | 
|  | 55                     file_name.split('/')[-3]+ '_' + \ | 
|  | 56                     file_name.split('/')[-1].split('.')[0] | 
|  | 57                 ppd.save_processed(output_name, threshold) | 
|  | 58                 head_tail = os.path.split(file_name) | 
|  | 59                 if head_tail[0] is not None: | 
|  | 60                     os.system('cp -p ' + './' + output_name + '* ' + head_tail[0] + ' 2>/dev/null') | 
|  | 61 if __name__ == '__main__': | 
|  | 62     # | 
|  | 63     #  Run preprocessor | 
|  | 64     # | 
|  | 65 | 
|  | 66     parser = argparse.ArgumentParser( | 
|  | 67         description="pre-process double Dexela images from F2") | 
|  | 68 | 
|  | 69     parser.add_argument('file_name', | 
|  | 70                         help="raw data path on chess daq", type=str) | 
|  | 71 | 
|  | 72     #parser.add_argument('base_dir', | 
|  | 73     #                    help="raw data path on chess daq", type=str) | 
|  | 74     #parser.add_argument('expt_name', | 
|  | 75     #                    help="experiment name", type=str) | 
|  | 76     #parser.add_argument('samp_name', | 
|  | 77     #                    help="sample name", type=str) | 
|  | 78     #parser.add_argument('scan_number', | 
|  | 79     #                    help="ff scan number", type=int) | 
|  | 80 | 
|  | 81     parser.add_argument('-n', '--num-frames', | 
|  | 82                         help="number of frames to read", | 
|  | 83                         type=int, default=1441) | 
|  | 84     parser.add_argument('-s', '--start-frame', | 
|  | 85                         help="index of first data frame", | 
|  | 86                         type=int, default=4) | 
|  | 87     parser.add_argument('-t', '--threshold', | 
|  | 88                         help="threshold for frame caches", | 
|  | 89                         type=int, default=50) | 
|  | 90     parser.add_argument('-o', '--ome-start', | 
|  | 91                         help="start omega", | 
|  | 92                         type=float, default=0.) | 
|  | 93 #    parser.add_argument('-d', '--ome-delta', | 
|  | 94 #                        help="delta omega", | 
|  | 95 #                        type=float, default=0.2498265093684941) | 
|  | 96 | 
|  | 97     parser.add_argument('-e', '--ome-end', | 
|  | 98                         help="end omega", | 
|  | 99                         type=float, default=360.) | 
|  | 100 | 
|  | 101 | 
|  | 102     args = parser.parse_args() | 
|  | 103 | 
|  | 104     print(args.file_name) | 
|  | 105     # strip args | 
|  | 106     file_name = args.file_name | 
|  | 107     #data_dir = args.base_dir | 
|  | 108     #expt_name = args.expt_name | 
|  | 109     #samp_name = args.samp_name | 
|  | 110     #scan_number = args.scan_number | 
|  | 111     samp_name = file_name.split('/')[-4] | 
|  | 112     scan_number = file_name.split('/')[-3] | 
|  | 113     num_frames = args.num_frames | 
|  | 114     fstart = args.start_frame | 
|  | 115     threshold = args.threshold | 
|  | 116     ostart = args.ome_start | 
|  | 117     oend = args.ome_end | 
|  | 118     ostep = (oend-ostart)/float(num_frames) | 
|  | 119 | 
|  | 120     print("== Running preprocessor .... processing " + file_name + " ==") | 
|  | 121     now = datetime.now() | 
|  | 122     print(now.strftime("%m/%d/%Y %H:%M:%S")) | 
|  | 123 | 
|  | 124     #file_names = glob.glob( | 
|  | 125     #    os.path.join( | 
|  | 126     #        data_dir, | 
|  | 127     #        expt_name, | 
|  | 128     #        samp_name, | 
|  | 129     #        str(scan_number), | 
|  | 130     #        'ff', | 
|  | 131     #        '*.h5') | 
|  | 132     #) | 
|  | 133     file_names = [file_name] | 
|  | 134     #path = os.path.join(data_dir, expt_name, samp_name, str(scan_number), 'ff', '*.h5') | 
|  | 135     #print("Preprocessor: after getting file_names ...." + path) | 
|  | 136     for f in file_names: | 
|  | 137         print(f) | 
|  | 138 | 
|  | 139     check_files_exist = [os.path.exists(file_name) for file_name in file_names] | 
|  | 140     if not np.all(check_files_exist): | 
|  | 141         raise RuntimeError("files don't exist!") | 
|  | 142 | 
|  | 143     process_dexelas(file_names, samp_name, scan_number, | 
|  | 144                     ostart, ostep, num_frames, | 
|  | 145                     panel_opts, threshold) | 
|  | 146     now = datetime.now() | 
|  | 147     print(now.strftime("%m/%d/%Y %H:%M:%S")) | 
|  | 148     print("== End of processing " + file_name + " ==") | 
|  | 149     print("                                   ") | 
|  | 150     print("                                   ") | 
|  | 151 |