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
|