Running through filesystem directories programatically
KrisJ
My experimental data are fluorescence spectra that need to be integrated
(through the area function). The data are organized as follows;
1) a root directory within the filesystem whose name is a date string
2) Within this root multiple folders named after the sample measured
3) Within each sample folder exactly four ASCII files containing x-y data representing the fluorescence spectra. Each of these four curves needs to be integrated in a certain range and the four values need to be combined into one datapoint (being the fluorescence anisotropy value). The files that need to be processed each time are *VVA.*, *VHA*.*, *HHA.*, *HVA.*
I would like to point igor to the root directory (the one of a certain date) after which it would have to automatically cycle through all subdirectories present, processing the files in each subfolder. However I do not seem to be able how to achieve this. All I can have it do at the moment is point it to an actual subfolder and process the 4 files in this folder, however, what I would like to do is have it output something like;
Date: Sample1 -> calculated anisotropy value
Date: Sample2 -> calculated anisotropy value
Date: Sample3 -> calculated anisotropy value
...
An example of the input data is attached to this post. The files that need to be processed each time are *VVA.txt, *VHA*.txt, *HHA.txt, *HVA.txt
This would be the result of experimental data in the paths of form C:\Date\Sample*\(four files here)
Is it possible to have Igor run through all subdirectories of a certain
path in the filesystem?
My current code looks like this;
Function CalcAnisotropy(Duplication,Start,Stop,NameWave,WaveCondition,Appendix)
Variable Duplication
Variable Start
Variable Stop
String NameWave
String WaveCondition
String Appendix
prompt Duplication, "Keep original wave (1) or overwrite (0):"
prompt Start, "Start integration at (nm):"
prompt Stop, "Stop integration at (nm):"
prompt NameWave, "Select source wave", popup, Wavelist("*", ";", "")
prompt WaveCondition, "Give match condition for wavename (empty in case of single wave):"
prompt Appendix, "Appendix for new wave in case of keeping original wave:"
doprompt "Input parameters", duplication, start, stop, namewave, wavecondition, appendix
if (V_flag == 1)
Print "Cancelled by user..."
return -1
endif
variable HH
variable HV
variable VH
variable VV
variable R
string wn2
string wl
wl= wavelist(Wavecondition, ";","")
NameWave = stringfromlist(0,wl,";")
Printf NameWave + ": "
HH = area($NameWave,Start,Stop)
Print HH
NameWave = stringfromlist(1,wl,";")
Printf NameWave + ": "
HV = area($NameWave,Start,Stop)
Print HV
NameWave = stringfromlist(2,wl,";")
Printf NameWave + ": "
VH = area($NameWave,Start,Stop)
Print VH
NameWave = stringfromlist(3,wl,";")
Printf NameWave + ": "
VV = area($NameWave,Start,Stop)
Print VV
Printf "Anisotropy: "
R = ((VV*HH)/(HV*VH)-1)/((VV*HH)/(HV*VH)+2)
Print R
end
<\igor>
Variable Duplication
Variable Start
Variable Stop
String NameWave
String WaveCondition
String Appendix
prompt Duplication, "Keep original wave (1) or overwrite (0):"
prompt Start, "Start integration at (nm):"
prompt Stop, "Stop integration at (nm):"
prompt NameWave, "Select source wave", popup, Wavelist("*", ";", "")
prompt WaveCondition, "Give match condition for wavename (empty in case of single wave):"
prompt Appendix, "Appendix for new wave in case of keeping original wave:"
doprompt "Input parameters", duplication, start, stop, namewave, wavecondition, appendix
if (V_flag == 1)
Print "Cancelled by user..."
return -1
endif
variable HH
variable HV
variable VH
variable VV
variable R
string wn2
string wl
wl= wavelist(Wavecondition, ";","")
NameWave = stringfromlist(0,wl,";")
Printf NameWave + ": "
HH = area($NameWave,Start,Stop)
Print HH
NameWave = stringfromlist(1,wl,";")
Printf NameWave + ": "
HV = area($NameWave,Start,Stop)
Print HV
NameWave = stringfromlist(2,wl,";")
Printf NameWave + ": "
VH = area($NameWave,Start,Stop)
Print VH
NameWave = stringfromlist(3,wl,";")
Printf NameWave + ": "
VV = area($NameWave,Start,Stop)
Print VV
Printf "Anisotropy: "
R = ((VV*HH)/(HV*VH)-1)/((VV*HH)/(HV*VH)+2)
Print R
end
<\igor>
July 7, 2008 at 04:02 pm - Permalink
July 7, 2008 at 09:43 pm - Permalink
July 8, 2008 at 01:19 am - Permalink