0001 function CONST = loadConstants( res, PARALLEL_FLAG, dispText )
0002
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 [possibleConstants, list, filepath] = getConstantsList();
0039
0040 CONST = [];
0041 if nargin < 1 || isempty( res )
0042 disp ('No constant chosen. Possible constants are : ');
0043 disp(list');
0044 return;
0045 end
0046
0047 if ~exist('PARALLEL_FLAG','var') || isempty( PARALLEL_FLAG )
0048 PARALLEL_FLAG = false;
0049 end
0050
0051 if ~exist('dispText','var') || isempty( dispText )
0052 dispText = true;
0053 end
0054
0055
0056
0057
0058 resFlag = [];
0059 if isa(res,'double' ) && res == 60
0060 res = '60XEc';
0061 elseif isa(res,'double' ) && res == 100
0062 res = '100XEc';
0063 end
0064
0065
0066
0067 CONST.imAlign.DAPI = [-0.0354 -0.0000 1.5500 -0.3900];
0068 CONST.imAlign.mCherry = [-0.0512 -0.0000 -1.1500 1.0000];
0069 CONST.imAlign.GFP = [ 0.0000 0.0000 0.0000 0.0000];
0070
0071 CONST.imAlign.out = {CONST.imAlign.GFP, ...
0072 CONST.imAlign.GFP,...
0073 CONST.imAlign.GFP,...
0074 CONST.imAlign.GFP};
0075
0076 CONST.imAlign.AlignToFirst = false;
0077 CONST.imAlign.AlignChannel = 1;
0078 CONST.imAlign.medFilt = false;
0079 CONST.align.ALIGN_FLAG = 1;
0080
0081
0082 CONST.superSeggerOpti.segmenting_fluorescence = false;
0083 CONST.superSeggerOpti.remove_debris = true;
0084 CONST.superSeggerOpti.INTENSITY_DIF = 0.15;
0085 CONST.superSeggerOpti.PEBBLE_CONST = 3;
0086 CONST.superSeggerOpti.remove_microcolonies = true;
0087
0088
0089 CONST.regionOpti.MAX_NUM_RESOLVE = 10000;
0090 CONST.regionOpti.MAX_NUM_SYSTEMATIC = 8;
0091 CONST.regionOpti.CutOffScoreHi = 10;
0092 CONST.regionOpti.CutOffScoreLo = -10;
0093 CONST.regionOpti.Nt = 500;
0094 CONST.regionOpti.minGoodRegScore = 10;
0095 CONST.regionOpti.neighMaxScore = 10;
0096 CONST.regionOpti.ADJUST_FLAG = 1;
0097 CONST.regionOpti.DE_norm = 0.5000;
0098
0099
0100 CONST.trackOpti.NEIGHBOR_FLAG = 0;
0101
0102
0103 CONST.trackOpti.OVERLAP_LIMIT_MIN = 0.0800;
0104 CONST.trackOpti.DA_MAX = 0.3;
0105 CONST.trackOpti.DA_MIN = -0.2;
0106 CONST.trackOpti.LYSE_FLAG = 0;
0107 CONST.trackOpti.REMOVE_STRAY = 0;
0108 CONST.trackOpti.MIN_CELL_AGE = 5;
0109 CONST.trackOpti.linkFun = @multiAssignmentSparse;
0110 CONST.trackOpti.SMALL_AREA_MERGE = 55;
0111 CONST.trackOpti.MIN_AREA_NO_NEIGH = 30;
0112 CONST.trackOpti.MIN_AREA = 5;
0113
0114
0115
0116 CONST.trackLoci.numSpots = [];
0117 CONST.trackLoci.fluorFlag = 1;
0118
0119
0120 CONST.trackLoci.gate = [];
0121
0122
0123
0124 if all(ismember('100X',res))
0125 CONST.getLocusTracks.PixelSize = 6/60;
0126 elseif all(ismember('60X',res))
0127 CONST.getLocusTracks.PixelSize = 6/100;
0128 else
0129 CONST.getLocusTracks.PixelSize = [];
0130 end
0131
0132
0133 CONST.getLocusTracks.FLUOR1_MIN_SCORE = 3;
0134 CONST.getLocusTracks.FLUOR2_MIN_SCORE = 3;
0135 CONST.getLocusTracks.FLUOR1_REL = 0.3;
0136 CONST.getLocusTracks.FLUOR2_REL = 0.3;
0137 CONST.getLocusTracks.TimeStep = 1;
0138
0139
0140 CONST.view.showFullCellCycleOnly = false;
0141 CONST.view.orientFlag = true;
0142 CONST.view.falseColorFlag = false;
0143 CONST.view.fluorColor = {'g','r','b','c','o','y'};
0144 CONST.view.LogView = false;
0145 CONST.view.filtered = 1;
0146 CONST.view.maxNumCell = [];
0147
0148
0149
0150
0151 CONST.findFocusSR.MAX_FOCUS_NUM = 8;
0152 CONST.findFocusSR.crop = 4;
0153 CONST.findFocusSR.gaussR = 1;
0154 CONST.findFocusSR.MAX_TRACE_NUM = 1000;
0155 CONST.findFocusSR.WS_CUT = 50;
0156 CONST.findFocusSR.MAX_OFF = 3;
0157 CONST.findFocusSR.I_MIN = 150;
0158 CONST.findFocusSR.mag = 16;
0159 CONST.findFocusSR.MIN_TRACE_LEN = 0;
0160 CONST.findFocusSR.R_LINK = 2;
0161 CONST.findFocusSR.R_LINK = 2;
0162 CONST.findFocusSR.SED_WINDOW = 10;
0163 CONST.findFocusSR.SED_P = 10;
0164 CONST.findFocusSR.A_MIN = 6;
0165
0166
0167 CONST.SR.opt = optimset('MaxIter',1000,'Display','off', 'TolX', 1e-8);
0168
0169
0170 CONST.SR.GausImgFilter_HighPass = fspecial('gaussian',141,10);
0171 CONST.SR.GausImgFilter_LowPass3 = fspecial('gaussian',21,3);
0172 CONST.SR.GausImgFilter_LowPass2 = fspecial('gaussian',21,2);
0173 CONST.SR.GausImgFilter_LowPass1 = fspecial('gaussian',7,1.25);
0174 CONST.SR.maxBlinkNum = 2;
0175
0176
0177 CONST.SR.pad = 8;
0178 CONST.SR.crop = 4;
0179 CONST.SR.Icut = 1000;
0180 CONST.SR.rcut = 10;
0181
0182 CONST.SR.Ithresh = 2;
0183
0184
0185
0186 indexConst = find(strcmpi({possibleConstants.name},[res,'.mat']));
0187 if ~isempty(indexConst)
0188 constFilename = possibleConstants(indexConst).name;
0189 ConstLoaded = load ([filepath,filesep,constFilename]);
0190 CONST.ResFlag = constFilename(1:end-4);
0191 if dispText
0192 disp(['loading Constants : ', constFilename]);
0193 end
0194 elseif exist(res, 'file')
0195 ConstLoaded = load(res);
0196 CONST.ResFlag = res;
0197 else
0198 errordlg('loadConstants: Constants not loaded : no match found. Aborting. ');
0199 disp(['Possible constants']);
0200 disp(list');
0201 CONST = [];
0202 return;
0203 end
0204
0205
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219 if isfield (ConstLoaded.superSeggerOpti,'remove_debris')
0220 CONST.superSeggerOpti.remove_debris = ConstLoaded.superSeggerOpti.remove_debris;
0221 end
0222
0223 if isfield (ConstLoaded.superSeggerOpti,'INTENSITY_DIF')
0224 CONST.superSeggerOpti.INTENSITY_DIF = ConstLoaded.superSeggerOpti.INTENSITY_DIF;
0225 end
0226
0227 if isfield (ConstLoaded.superSeggerOpti,'PEBBLE_CONST')
0228 CONST.superSeggerOpti.PEBBLE_CONST = ConstLoaded.superSeggerOpti.PEBBLE_CONST;
0229 end
0230
0231 if isfield (ConstLoaded.superSeggerOpti,'segmenting_fluorescence')
0232 CONST.superSeggerOpti.segmenting_fluorescence = ConstLoaded.superSeggerOpti.segmenting_fluorescence;
0233 end
0234
0235
0236 if isfield (ConstLoaded.superSeggerOpti,'remove_microcolonies')
0237 CONST.superSeggerOpti.remove_microcolonies = ConstLoaded.superSeggerOpti.remove_microcolonies;
0238 end
0239
0240
0241 CONST.superSeggerOpti.MAX_SEG_NUM = 50000;
0242
0243 CONST.superSeggerOpti.dIcellNonCell = 0.2;
0244
0245
0246 CONST.superSeggerOpti.MIN_BG_AREA = ConstLoaded.superSeggerOpti.MIN_BG_AREA;
0247
0248
0249 CONST.superSeggerOpti.THRESH1= ConstLoaded.superSeggerOpti.THRESH1;
0250 CONST.superSeggerOpti.THRESH2 = ConstLoaded.superSeggerOpti.THRESH2;
0251
0252
0253 CONST.superSeggerOpti.MAGIC_RADIUS = ConstLoaded.superSeggerOpti.MAGIC_RADIUS;
0254
0255
0256 CONST.superSeggerOpti.CUT_INT= ConstLoaded.superSeggerOpti.CUT_INT;
0257
0258
0259 CONST.superSeggerOpti.MAGIC_THRESHOLD = ConstLoaded.superSeggerOpti.MAGIC_THRESHOLD;
0260
0261
0262 CONST.superSeggerOpti.SMOOTH_WIDTH= ConstLoaded.superSeggerOpti.SMOOTH_WIDTH;
0263
0264
0265 CONST.superSeggerOpti.MAX_WIDTH= ConstLoaded.superSeggerOpti.MAX_WIDTH;
0266
0267
0268 CONST.superSeggerOpti.Amax = ConstLoaded.superSeggerOpti.Amax;
0269
0270
0271 CONST.superSeggerOpti.crop_rad = ConstLoaded.superSeggerOpti.crop_rad;
0272 CONST.superSeggerOpti.A = ConstLoaded.superSeggerOpti.A;
0273 CONST.superSeggerOpti.NUM_INFO= ConstLoaded.superSeggerOpti.NUM_INFO;
0274
0275 CONST.seg = ConstLoaded.seg;
0276
0277
0278
0279 CONST.regionOpti.MIN_LENGTH = ConstLoaded.regionOpti.MIN_LENGTH ;
0280 CONST.regionScoreFun = ConstLoaded.regionScoreFun;
0281
0282 if isfield (ConstLoaded.trackOpti,'SMALL_AREA_MERGE')
0283 CONST.trackOpti.SMALL_AREA_MERGE = ConstLoaded.trackOpti.SMALL_AREA_MERGE;
0284 end
0285
0286 if isfield (ConstLoaded.trackOpti,'MIN_AREA_NO_NEIGH')
0287 CONST.trackOpti.MIN_AREA_NO_NEIGH = ConstLoaded.trackOpti.MIN_AREA_NO_NEIGH;
0288 end
0289
0290 if isfield (ConstLoaded.trackOpti,'MIN_AREA')
0291 CONST.trackOpti.MIN_AREA = ConstLoaded.trackOpti.MIN_AREA;
0292 end
0293
0294
0295 if PARALLEL_FLAG
0296 poolobj = gcp('nocreate');
0297 if isempty(poolobj)
0298 poolobj = parpool('local');
0299 end
0300 poolobj.IdleTimeout = 360;
0301 CONST.parallel.parallel_pool_num = poolobj.NumWorkers;
0302 else
0303 CONST.parallel.parallel_pool_num = 0;
0304 end
0305
0306 CONST.parallel.xy_parallel = 0;
0307 CONST.parallel.PARALLEL_FLAG = PARALLEL_FLAG;
0308 CONST.parallel.show_status = ~(CONST.parallel.parallel_pool_num);
0309 CONST.parallel.verbose = 1;
0310
0311
0312 CONST = orderfields(CONST);
0313
0314 end