1 #pragma rtGlobals=1// Use modern global access method. 2 #pragma IgorVersion = 6.1 3 #pragma ModuleName = PearlOtfImport 39 if (strlen(pathname) <= 0)
41 pathname =
"otf_load_itx" 43 string filelist = IndexedFile($pathname, -1,
".itx")
44 filelist = ListMatch(filelist,
"otf*.itx",
";")
45 variable nfile = ItemsInList(filelist,
";")
47 for (ifile = 0; ifile < nfile; ifile += 1)
48 filename = StringFromList(ifile, filelist,
";")
62 if (strlen(pathname) <= 0)
64 pathname =
"otf_load_itx" 66 string filelist = IndexedFile($pathname, -1,
".itx")
67 filelist = ListMatch(filelist, matchstr,
";")
68 variable nfile = ItemsInList(filelist,
";")
70 for (ifile = 0; ifile < nfile; ifile += 1)
71 filename = StringFromList(ifile, filelist,
";")
84 dfref savedf = GetDataFolderDFR()
87 newdatafolder /s/o otf_load_itx_temp
88 if (strlen(pathname) > 0)
89 LoadWave /O/P=$pathname/Q/T filename
91 LoadWave /O/Q/T filename
95 foldername = ParseFilePath(3, s_filename,
"/", 0, 0)
96 foldername = foldername[0,16]
97 foldername = CleanupName(foldername, 0)
99 renamedatafolder root:otf_load_itx_temp, $foldername
100 printf
"loaded otf data from file %s into folder %s\r", s_filename, foldername
119 string prefix, sdate, stime
122 src_folder = GetDataFolder(0, df)
123 sscanf src_folder,
"%[^_]_%[0-9]_%[0-9]", prefix, sdate, stime
125 if (strlen(sdate) > 0)
128 if (strlen(stime) > 0)
131 dst_folder = StringByKey(
"destfolder", sdata)
133 src_name = StringByKey(
"xwavematch", sdata)
134 src_name = WaveList(src_name,
"",
"")
135 if (ItemsInList(src_name) >= 1)
136 src_name = StringFromList(0, src_name)
137 dst_name = dst_folder + src_name + df_id
139 duplicate $src_name, $dst_name
142 src_name = StringByKey(
"ywavematch", sdata)
143 src_name = WaveList(src_name,
"",
"")
144 if (ItemsInList(src_name) >= 1)
145 src_name = StringFromList(0, src_name)
146 dst_name = dst_folder + src_name + df_id
148 duplicate $src_name, $dst_name
159 return gather_batch(
"otf*", ywavematch, xwavematch, destfolder)
162 variable
gather_batch(
string foldermatch,
string ywavematch,
string xwavematch,
string destfolder){
170 dfref savedf = GetDataFolderDFR()
171 newdatafolder /o/s $destfolder
172 destfolder = GetDataFolder(1)
174 string iteratordata =
"" 175 iteratordata = ReplaceStringByKey(
"xwavematch", iteratordata, xwavematch)
176 iteratordata = ReplaceStringByKey(
"ywavematch", iteratordata, ywavematch)
177 iteratordata = ReplaceStringByKey(
"destfolder", iteratordata, destfolder)
190 string pattern = StringByKey(
"pattern", sdata)
191 variable unique_index = NumberByKey(
"unique_index", sdata)
192 string new_suffix = StringByKey(
"new_suffix", sdata)
196 string sprefix, sdate, stime, ssuffix
199 src_folder = GetDataFolder(0, df)
201 sscanf src_folder,
"otf_%[0-9]_%[0-9]%s", sdate, stime, ssuffix
203 if ((strlen(sdate) == 0) || (strlen(stime) == 0))
208 if (cmpstr(pattern[0],
"0") != 0)
209 dst_folder +=
"_" + sdate
211 if (cmpstr(pattern[1],
"0") != 0)
212 dst_folder +=
"_" + stime
214 if (cmpstr(pattern[2],
"0") != 0)
215 if (strlen(new_suffix) > 0)
216 ssuffix =
"_" + new_suffix
218 dst_folder += ssuffix
221 if ((unique_index > 0) || (CheckName(dst_folder, 11) != 0))
222 dst_folder = UniqueName(dst_folder +
"_", 11, unique_index)
226 print src_folder +
" -> " + dst_folder
227 RenameDataFolder $src_folder, $dst_folder
231 variable
otf_rename_folders(
string pattern, variable unique_index = defaultValue,
string new_suffix = defaultValue,
string match_str = defaultValue){
237 variable unique_index
249 dfref savedf = GetDataFolderDFR()
251 if (ParamIsDefault(unique_index))
254 if (ParamIsDefault(new_suffix))
257 if (ParamIsDefault(match_str))
261 string iteratordata =
"" 262 iteratordata = ReplaceStringByKey(
"pattern", iteratordata, pattern)
263 iteratordata = ReplaceNumberByKey(
"unique_index", iteratordata, unique_index)
264 iteratordata = ReplaceStringByKey(
"new_suffix", iteratordata, new_suffix)
271 variable
otf_interp(variable e1, variable e2, variable npts, variable smo){
277 wave ch1 = current_ch1
278 wave ch2 = current_ch2
279 wave pe = photonenergy
281 wave rc = ringcurrent
283 duplicate /o ch1, current_ch1_int
284 wave ch1i = current_ch1_int
285 duplicate /o ch2, current_ch2_int
286 wave ch2i = current_ch2_int
287 duplicate /o pe, photonenergy_int
288 wave pei = photonenergy_int
289 duplicate /o cff, cff_int
291 duplicate /o rc, ringcurrent_int
292 wave rci = ringcurrent_int
294 redimension /n=(npts) ch1i, ch2i, pei, cffi, rci
295 setscale /i x e1, e2,
"eV", ch1i, ch2i, pei, cffi, rci
304 variable
otf_smo_int(wave win, wave wout, wave wpe, variable smo){
311 duplicate /free win, wtmp
312 smooth /b /e=3 smo, wtmp
313 wout = interp(x, wpe, wtmp)
variable otf_gather_iterator(dfref df, string *sdata)
variable otf_load_itx(string pathname, string filename)
variable otf_interp(variable e1, variable e2, variable npts, variable smo)
variable gather_batch(string foldermatch, string ywavematch, string xwavematch, string destfolder)
variable otf_load_itx_match(string pathname, string matchstr)
variable otf_gather_batch(string ywavematch, string xwavematch, string destfolder)
variable otf_rename_folders(string pattern, variable unique_index=defaultValue, string new_suffix=defaultValue, string match_str=defaultValue)
variable otf_rename_folders_iterator(dfref df, string *sdata)
variable otf_load_itx_all(string pathname)
variable otf_smo_int(wave win, wave wout, wave wpe, variable smo)