0001 function convertImageNames(dirname, basename, timeFilterBefore, ...
0002 timeFilterAfter, xyFilterBefore,xyFilterAfter, channelNames )
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046 images = dir([dirname,filesep,'*.tif']);
0047
0048
0049 dirOriginal = [dirname,filesep,'original',filesep] ;
0050 imagesInOrig = dir([dirOriginal,filesep,'*.tif']);
0051
0052 elementsTime='t';
0053 elementsXY ='xy';
0054 elementsPhase = 'c';
0055
0056 if exist([dirname,filesep,'raw_im'],'dir') && ~isempty(dir([dirname,filesep,'raw_im',filesep,'*tif*']))
0057 disp('Files already aligned');
0058 return;
0059 end
0060
0061 if isRightNameFormat(dirname)
0062 disp('File names in NIS-Elements format')
0063 disp('Procede to segmentation')
0064 return;
0065 end
0066
0067 if isempty(images) && isempty(imagesInOrig)
0068 error('No image files found, please check directory');
0069 return ;
0070 end
0071
0072
0073 disp('File names not in Elements format : Converting..')
0074
0075
0076 if ~exist('basename','var')
0077 basename = input('Please type the basename:','s');
0078 timeFilterBefore = input('Please type the prefix for the number of the time frame, press enter if none:','s');
0079 timeFilterAfter = input('Please type the suffix for the number of the time frame, press enter if none:','s');
0080 xyFilterBefore = input('Please type the prefix for the number of the xy position, press enter if none:','s');
0081 xyFilterAfter = input('Please type the suffix for the number of the xy position, press enter if none:','s');
0082 channelNames = input('Please type the names of the channels as {''BF'',GFP''}:');
0083 end
0084
0085 if ~exist(dirOriginal,'dir')
0086 mkdir(dirOriginal) ;
0087 end
0088
0089 if isempty(imagesInOrig)
0090 movefile([dirname,filesep,'*.tif'],dirOriginal);
0091 end
0092
0093 images = dir([dirOriginal,filesep,'*.tif']);
0094
0095
0096 for j = 1: numel (images)
0097 fileName = images(j).name;
0098
0099
0100
0101 if isnumeric(timeFilterBefore ) && isnumeric(timeFilterAfter)
0102 currentTime = str2double(fileName(timeFilterBefore:timeFilterAfter));
0103 if ~isnumeric((currentTime))
0104 disp (['No frame numbers found in ', fileName, ' between ' , num2str(timeFilterBefore), ' ', num2str(timeFilterAfter), '- aborting']);
0105 end
0106 else
0107 currentTime = findNumbers (fileName, timeFilterBefore, timeFilterAfter);
0108 if isempty(currentTime)
0109 disp (['time expression incorrect for filename', fileName, '- aborting']);
0110 return;
0111 end
0112 end
0113
0114
0115 if isnumeric(xyFilterBefore ) && isnumeric(xyFilterAfter)
0116 currentXY = str2double(fileName(xyFilterBefore:xyFilterAfter));
0117 if ~isnumeric((currentXY))
0118 disp (['No xy numbers found in ', fileName, ' between ' , num2str(xyFilterBefore), ' ', num2str(xyFilterAfter), '- aborting']);
0119 return
0120 end
0121 else
0122 currentXY = findNumbers (fileName, xyFilterBefore, xyFilterAfter);
0123 if isempty(currentXY)
0124 disp (['xy expression incorrect for filename', fileName, '- aborting']);
0125 return;
0126 end
0127 end
0128
0129 channelPos = [];
0130
0131 if isempty(channelNames) || isempty(channelNames{1})
0132 c = 1;
0133 channelPos = 1;
0134 else
0135 for c = 1:numel(channelNames)
0136 channelPos = strfind(fileName, channelNames {c});
0137 if ~isempty(channelPos)
0138 break;
0139 end
0140 end
0141 end
0142
0143 if isempty(channelPos)
0144 disp (['channel expression incorrect for filename', fileName, '- aborting']);
0145 return;
0146 end
0147
0148 newFileName = [basename,elementsTime,sprintf('%05d',currentTime),elementsXY,sprintf('%03d',currentXY),elementsPhase,num2str(c)];
0149 copyfile([dirOriginal,filesep,images(j).name],[dirname,filesep,newFileName,'.tif']);
0150
0151 end
0152
0153 end
0154
0155
0156 function numbers = findNumbers (fileName, patternBefore, patternAfter)
0157
0158
0159 is_num_mask = ismember( fileName,'01234567890');
0160 timeStart = 0 ;
0161 timeEnd = 0 ;
0162
0163
0164 if strcmp(patternBefore,'') && strcmp(patternAfter, '') ||...
0165 isempty(patternBefore) && isempty(patternAfter)
0166 numbers = 1;
0167 return
0168 end
0169
0170
0171 if isempty(regexp(fileName,[patternBefore,'[0123456789]+',patternAfter], 'once'))
0172 numbers=[];
0173 return;
0174 end
0175
0176
0177 [timeStart,timeEnd] = regexp(fileName,[patternBefore,'[0123456789]+',patternAfter]);
0178
0179 if isempty(timeStart) ||isempty(timeEnd)
0180 disp (['pattern was not found',patternBefore,patternAfter,fileName,'setting to 1']);
0181 numbers = 1;
0182 else
0183 extraBefore = numel(patternBefore);
0184 extraAfter = numel(patternAfter);
0185 pattern = fileName(timeStart+extraBefore:timeEnd-extraAfter);
0186 numbers = str2double(pattern);
0187 end
0188
0189 end