Mercurial > repos > mzhuang > chess_preprocessor
diff preprocess_dexela_h5_galaxy.py @ 0:4d2a2268a17a draft
"planemo upload"
author | mzhuang |
---|---|
date | Thu, 23 Sep 2021 21:00:48 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/preprocess_dexela_h5_galaxy.py Thu Sep 23 21:00:48 2021 +0000 @@ -0,0 +1,151 @@ +import argparse +import glob +import os + +import numpy as np + +import time +from datetime import datetime + +from hexrd.imageseries import omega +import pp_dexela +#from IPython import embed + +# ============================================================================= +# USER INPUT +# ============================================================================= + +# panel keys to MATCH INSTRUMENT FILE +panel_keys = ['FF1', 'FF2'] +panel_opts = dict.fromkeys(panel_keys) + +# !!!: hard coded options for each dexela for April 2017 +panel_opts['FF1'] = [('add-row', 1944), ('add-column', 1296),('flip', 'v'), ] +panel_opts['FF2'] = [('add-row', 1944), ('add-column', 1296),('flip', 'h'), ] + +# ==================== End Inputs (should not need to alter below this line) + + + +def process_dexelas(file_names, samp_name, scan_number, + ostart, ostep, num_frames, + panel_opts, threshold): + """ + wrapper for F2 dexela setup + """ + ostop = ostart + num_frames*ostep + omw = omega.OmegaWedges(num_frames) + omw.addwedge(ostart, ostop, num_frames) + + for file_name in file_names: + for key in panel_keys: + if key.lower() in file_name: + ppd = pp_dexela.PP_Dexela( + file_name, + omw, + panel_opts[key], + panel_id=key, + frame_start=fstart) +# embed() +# ppd=add_missing_pixel_gap(ppd) + + #output_name = samp_name + '_' + \ + # str(scan_number) + '_' + \ + output_name = file_name.split('/')[-4] + '_' + \ + file_name.split('/')[-3]+ '_' + \ + file_name.split('/')[-1].split('.')[0] + ppd.save_processed(output_name, threshold) + head_tail = os.path.split(file_name) + if head_tail[0] is not None: + os.system('cp -p ' + './' + output_name + '* ' + head_tail[0] + ' 2>/dev/null') +if __name__ == '__main__': + # + # Run preprocessor + # + + parser = argparse.ArgumentParser( + description="pre-process double Dexela images from F2") + + parser.add_argument('file_name', + help="raw data path on chess daq", type=str) + + #parser.add_argument('base_dir', + # help="raw data path on chess daq", type=str) + #parser.add_argument('expt_name', + # help="experiment name", type=str) + #parser.add_argument('samp_name', + # help="sample name", type=str) + #parser.add_argument('scan_number', + # help="ff scan number", type=int) + + parser.add_argument('-n', '--num-frames', + help="number of frames to read", + type=int, default=1441) + parser.add_argument('-s', '--start-frame', + help="index of first data frame", + type=int, default=4) + parser.add_argument('-t', '--threshold', + help="threshold for frame caches", + type=int, default=50) + parser.add_argument('-o', '--ome-start', + help="start omega", + type=float, default=0.) +# parser.add_argument('-d', '--ome-delta', +# help="delta omega", +# type=float, default=0.2498265093684941) + + parser.add_argument('-e', '--ome-end', + help="end omega", + type=float, default=360.) + + + args = parser.parse_args() + + print(args.file_name) + # strip args + file_name = args.file_name + #data_dir = args.base_dir + #expt_name = args.expt_name + #samp_name = args.samp_name + #scan_number = args.scan_number + samp_name = file_name.split('/')[-4] + scan_number = file_name.split('/')[-3] + num_frames = args.num_frames + fstart = args.start_frame + threshold = args.threshold + ostart = args.ome_start + oend = args.ome_end + ostep = (oend-ostart)/float(num_frames) + + print("== Running preprocessor .... processing " + file_name + " ==") + now = datetime.now() + print(now.strftime("%m/%d/%Y %H:%M:%S")) + + #file_names = glob.glob( + # os.path.join( + # data_dir, + # expt_name, + # samp_name, + # str(scan_number), + # 'ff', + # '*.h5') + #) + file_names = [file_name] + #path = os.path.join(data_dir, expt_name, samp_name, str(scan_number), 'ff', '*.h5') + #print("Preprocessor: after getting file_names ...." + path) + for f in file_names: + print(f) + + check_files_exist = [os.path.exists(file_name) for file_name in file_names] + if not np.all(check_files_exist): + raise RuntimeError("files don't exist!") + + process_dexelas(file_names, samp_name, scan_number, + ostart, ostep, num_frames, + panel_opts, threshold) + now = datetime.now() + print(now.strftime("%m/%d/%Y %H:%M:%S")) + print("== End of processing " + file_name + " ==") + print(" ") + print(" ") +