Mercurial > repos > mzhuang > chess_preprocessor
comparison preprocess_dexela_h5_galaxy.py @ 0:4d2a2268a17a draft
"planemo upload"
| author | mzhuang |
|---|---|
| date | Thu, 23 Sep 2021 21:00:48 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:4d2a2268a17a |
|---|---|
| 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 |
