0001 function job_plot_cmap_load_current(inst_id,currfile,ix_trial,verbose)
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
0039
0040 global vbmeg_inst;
0041
0042 error('This function will become obsolete. (Feb 20 2012 taku-y)')
0043
0044
0045
0046
0047
0048 if nargin<4, verbose = true; end
0049 if nargin<3, ix_trial= 1; end
0050
0051
0052
0053
0054
0055 h_fig = vbmeg_inst.plotcmap{inst_id}.h_fig;
0056 ed11 = vbmeg_inst.plotcmap{inst_id}.ed11;
0057 ed12 = vbmeg_inst.plotcmap{inst_id}.ed12;
0058
0059 set(h_fig,'Pointer','watch');
0060 drawnow;
0061
0062
0063
0064
0065
0066 if ~exist(currfile,'file'),
0067 warndlg(['File ' currfile ' does not exist.']);
0068 return;
0069 end
0070
0071 drawnow;
0072
0073 if findstr(currfile,'.curr.mat'),
0074
0075 vbmeg_inst.plotcmap{inst_id}.tffile = [];
0076 vbmeg_inst.plotcmap{inst_id}.data = [];
0077 vbmeg_inst.plotcmap{inst_id}.TFmax = [];
0078 vbmeg_inst.plotcmap{inst_id}.TFmin = [];
0079 vbmeg_inst.plotcmap{inst_id}.TFmax_plot = [];
0080 vbmeg_inst.plotcmap{inst_id}.TFmin_plot = [];
0081 vbmeg_inst.plotcmap{inst_id}.foi = [];
0082 vbmeg_inst.plotcmap{inst_id}.TFinfo = [];
0083
0084
0085 vbmeg_inst.plotcmap{inst_id}.currfile = currfile;
0086
0087
0088
0089 Jinfo = vb_load_current_info(currfile);
0090 if Jinfo.Ntrial>1,
0091 button = questdlg(['The specified cortical current file has ' ...
0092 'multiple trials. Do you want to load' ...
0093 'trial-average data or the original one?'], ...
0094 'Load cortical current data','Average','Raw', ...
0095 'Average');
0096 if strcmp(button,'Average'),
0097 ave_mode = true;
0098 else
0099 ave_mode = false;
0100 end
0101 else
0102 ave_mode = true;
0103 end
0104 vbmeg_inst.plotcmap{inst_id}.ave_mode = ave_mode;
0105
0106
0107 [tmp,Jact] = vb_load_current(currfile,0,ave_mode,ix_trial);
0108 if ~isempty(vbmeg_inst.plotcmap{inst_id}.V),
0109 if max(Jinfo.ix_act_ex)>size(vbmeg_inst.plotcmap{inst_id}.V,1),
0110 warndlg(['Index of dipole currents exceeds the number of ' ...
0111 'vertices.']);
0112 return;
0113 end
0114 end
0115
0116
0117 vbmeg_inst.plotcmap{inst_id}.Jact = -1*Jact;
0118 clear Jact;
0119
0120
0121 if ~isfield(Jinfo,'version') || ...
0122 vb_version_cmp(Jinfo.version,'<','0.9-0.a.0'),
0123 if isfield(Jinfo,'ix_act_ex'),
0124 vbmeg_inst.plotcmap{inst_id}.ix_act = Jinfo.ix_act_ex;
0125 else
0126 vbmeg_inst.plotcmap{inst_id}.ix_act = Jinfo.ix_act;
0127 end
0128 end
0129
0130
0131 vbmeg_inst.plotcmap{inst_id}.Jbck = [];
0132 vbmeg_inst.plotcmap{inst_id}.ix_bck = [];
0133
0134
0135 load(currfile,'bayes_parm','MEGinfo');
0136
0137 if isfield(Jinfo,'version') & ...
0138 vb_version_cmp(Jinfo.version,'>=','0.9-0.a.0'),
0139 T = Jinfo.Tmsec;
0140 vbmeg_inst.plotcmap{inst_id}.Jinfo = Jinfo;
0141 elseif exist('MEGinfo'),
0142 T = (1000/MEGinfo.SampleFreq) ...
0143 *(Jinfo.Tsample-vb_meginfo_get_pre_trigger(MEGinfo));
0144 if exist('Jinfo'),
0145 vbmeg_inst.plotcmap{inst_id}.Jinfo = Jinfo;
0146 else
0147 vbmeg_inst.plotcmap{inst_id}.Jinfo = MEGinfo;
0148 end
0149
0150 vbmeg_inst.plotcmap{inst_id}.Jinfo.version = '0.7';
0151 vbmeg_inst.plotcmap{inst_id}.Tstart = Jinfo.Tsample(1);
0152 else
0153 T = Jinfo.Tmsec;
0154
0155 vbmeg_inst.plotcmap{inst_id}.Jinfo = Jinfo;
0156 vbmeg_inst.plotcmap{inst_id}.Jinfo.version = '0.7';
0157 vbmeg_inst.plotcmap{inst_id}.Tstart = Jinfo.Tsample(1);
0158 end
0159
0160 vbmeg_inst.plotcmap{inst_id}.toi = [T(1) T(2)];
0161
0162
0163 if isfield(Jinfo,'patch_norm'),
0164 patch_norm = Jinfo.patch_norm;
0165 elseif isfield(Jinfo,'bayes_parm') ...
0166 & isfield(Jinfo.bayes_parm,'patch_norm'),
0167 patch_norm = Jinfo.bayes_parm.patch_norm
0168 vbmeg_inst.plotcmap{inst_id}.Jinfo.patch_norm ...
0169 = Jinfo.bayes_parm.patch_norm;
0170 elseif exist('bayes_parm'),
0171
0172
0173 vbmeg_inst.plotcmap{inst_id}.Jinfo.patch_norm = ...
0174 bayes_parm.patch_norm;
0175 patch_norm = bayes_parm.patch_norm;
0176 else
0177 patch_norm = false;
0178 end
0179
0180 if ~isempty(ix_trial)
0181 vbmeg_inst.plotcmap{inst_id}.ix_trial = ix_trial;
0182 else
0183 vbmeg_inst.plotcmap{inst_id}.ix_trial = 1;
0184 end
0185 set(vbmeg_inst.plotcmap{inst_id}.ed1,'String', ...
0186 num2str(vbmeg_inst.plotcmap{inst_id}.ix_trial));
0187
0188
0189 if patch_norm,
0190 vbmeg_inst.plotcmap{inst_id}.Jact ...
0191 = vbmeg_inst.plotcmap{inst_id}.Jact*1e6;
0192 vbmeg_inst.plotcmap{inst_id}.Jbck ...
0193 = vbmeg_inst.plotcmap{inst_id}.Jbck*1e6;
0194
0195
0196
0197
0198 else
0199 vbmeg_inst.plotcmap{inst_id}.Jact ...
0200 = vbmeg_inst.plotcmap{inst_id}.Jact*1e9;
0201 vbmeg_inst.plotcmap{inst_id}.Jbck ...
0202 = vbmeg_inst.plotcmap{inst_id}.Jbck*1e9;
0203
0204
0205
0206
0207 end
0208
0209
0210 if size(vbmeg_inst.plotcmap{inst_id}.Jact,3) > 1
0211 ix_trial = vbmeg_inst.plotcmap{inst_id}.ix_trial;
0212 Jmax = max(max(abs(vbmeg_inst.plotcmap{inst_id}.Jact(:,:,ix_trial))));
0213 Jmin = min(min(abs(vbmeg_inst.plotcmap{inst_id}.Jact(:,:,ix_trial))));
0214 else
0215 Jmax = max(max(abs(vbmeg_inst.plotcmap{inst_id}.Jact(:,:))));
0216 Jmin = min(min(abs(vbmeg_inst.plotcmap{inst_id}.Jact(:,:))));
0217 end
0218 vbmeg_inst.plotcmap{inst_id}.Jmax = Jmax;
0219 vbmeg_inst.plotcmap{inst_id}.Jmin = Jmin;
0220 vbmeg_inst.plotcmap{inst_id}.Jmax_plot = Jmax;
0221 vbmeg_inst.plotcmap{inst_id}.Jmin_plot = Jmax*0.1;
0222
0223
0224
0225
0226 set(vbmeg_inst.plotcmap{inst_id}.ed10,'String','');
0227 elseif findstr(currfile,'.tf.mat'),
0228
0229 vbmeg_inst.plotcmap{inst_id}.currfile = [];
0230 vbmeg_inst.plotcmap{inst_id}.data = [];
0231 vbmeg_inst.plotcmap{inst_id}.Jmax = [];
0232 vbmeg_inst.plotcmap{inst_id}.Jmin = [];
0233 vbmeg_inst.plotcmap{inst_id}.Jmax_plot = [];
0234 vbmeg_inst.plotcmap{inst_id}.Jmin_plot = [];
0235 vbmeg_inst.plotcmap{inst_id}.foi = [];
0236 vbmeg_inst.plotcmap{inst_id}.Jinfo = [];
0237
0238
0239 vbmeg_inst.plotcmap{inst_id}.tffile = currfile;
0240
0241
0242 load(currfile,'data','TFinfo');
0243 if ~isfield(TFinfo,'freq_scale'),
0244 TFinfo.freq_scale = 'log';
0245 end
0246 vbmeg_inst.plotcmap{inst_id}.data = data;
0247 vbmeg_inst.plotcmap{inst_id}.TFinfo = TFinfo;
0248 clear data;
0249
0250
0251 TFmax = max(max(max(abs(vbmeg_inst.plotcmap{inst_id}.data))));
0252 TFmin = min(min(min(vbmeg_inst.plotcmap{inst_id}.data)));
0253 vbmeg_inst.plotcmap{inst_id}.TFmax = TFmax;
0254 vbmeg_inst.plotcmap{inst_id}.TFmin = TFmin;
0255 vbmeg_inst.plotcmap{inst_id}.TFmax_plot = TFmax;
0256 vbmeg_inst.plotcmap{inst_id}.TFmin_plot = 0.1*TFmax;
0257
0258
0259
0260
0261 set(vbmeg_inst.plotcmap{inst_id}.ed10,'String',...
0262 num2str(TFmax));
0263
0264
0265 T = TFinfo.Tmsec;
0266 F = TFinfo.freq;
0267 vbmeg_inst.plotcmap{inst_id}.toi = [T(1) T(2)];
0268 vbmeg_inst.plotcmap{inst_id}.foi = [F(1) F(2)];
0269 elseif findstr(currfile,'.act.mat'),
0270
0271 vbmeg_inst.plotcmap{inst_id}.act_file = currfile;
0272
0273
0274 keyset = vb_get_keyset_act(currfile);
0275 set(vbmeg_inst.plotcmap{inst_id}.lb1,'String',keyset);
0276 set(vbmeg_inst.plotcmap{inst_id}.lb1,'Value',1);
0277
0278
0279 job_plot_cmap_update_xxP(inst_id);
0280 else
0281
0282 vbmeg_inst.plotcmap{inst_id}.area_file = currfile;
0283
0284
0285 keyset = vb_get_keyset_area(currfile);
0286 set(vbmeg_inst.plotcmap{inst_id}.lb2,'String',keyset);
0287 set(vbmeg_inst.plotcmap{inst_id}.lb2,'Value',1);
0288
0289
0290 job_plot_cmap_update_area(inst_id);
0291 end
0292
0293
0294 job_plot_cmap_update_colorbarscale(inst_id);
0295
0296
0297
0298
0299
0300 [tmp,fname,ext] = fileparts(currfile);
0301 if ~isempty(findstr(currfile,'.curr.mat')) ...
0302 || ~isempty(findstr(currfile,'.tf.mat')),
0303 set(h_fig,'Name',['job_plot_currentmap: ' fname ext]);
0304 elseif findstr(currfile,'.act.mat'),
0305 set(ed11,'String',[fname ext]);
0306 else
0307 set(ed12,'String',[fname ext]);
0308 end
0309
0310
0311
0312
0313
0314 if exist('bayes_parm'),
0315 brainfile = bayes_parm.brainfile;
0316 else
0317 brainfile = '';
0318 end
0319
0320
0321 brainfile_old = vbmeg_inst.plotcmap{inst_id}.brainfile;
0322 if ~isempty(brainfile_old) & ~isempty(brainfile),
0323 if verbose == true
0324 qstring = ['Cortical surface model ''' brainfile_old ' has already ' ...
0325 'been loaded. Do you replace this model by ' ...
0326 brainfile '?'];
0327 button = questdlg(qstring,'Overwrite cortical surface model',...
0328 'Yes','No','Yes');
0329 else
0330 button = 'No';
0331 end
0332
0333 if strcmp(button,'No'),
0334 job_plot_cmap_update_filterradius(inst_id);
0335 job_plot_cmap_update_timecourse(inst_id);
0336 job_plot_cmap_update_spatialpattern(inst_id);
0337 return;
0338 end
0339 end
0340
0341 if exist(brainfile,'file'),
0342 vbmeg_inst.plotcmap{inst_id}.brainfile = brainfile;
0343
0344
0345 [Vinf,F,xx,inf_C,xxA] = vb_load_cortex(brainfile,'Inflate');
0346 V = vb_load_cortex(brainfile);
0347 vbmeg_inst.plotcmap{inst_id}.V = V;
0348 vbmeg_inst.plotcmap{inst_id}.Vinf = Vinf;
0349 vbmeg_inst.plotcmap{inst_id}.F = F;
0350 vbmeg_inst.plotcmap{inst_id}.inf_C = inf_C;
0351 vbmeg_inst.plotcmap{inst_id}.xxA = xxA;
0352
0353
0354 load(brainfile,'Vtal','Vmni');
0355 if ~exist('Vtal','var'), Vtal = zeros(size(V)); end
0356 if ~exist('Vmni','var'), Vmni = zeros(size(V)); end
0357 vbmeg_inst.plotcmap{inst_id}.Vtal = Vtal*1e3;
0358 vbmeg_inst.plotcmap{inst_id}.Vmni = Vmni*1e3;
0359
0360
0361 [nextDD,nextIX] = vb_load_cortex_neighbour(brainfile);
0362 vbmeg_inst.plotcmap{inst_id}.nextDD = nextDD;
0363 vbmeg_inst.plotcmap{inst_id}.nextIX = nextIX;
0364 end;
0365
0366
0367
0368
0369
0370
0371
0372
0373
0374
0375
0376 job_plot_cmap_update_filterradius(inst_id);
0377 job_plot_cmap_update_timecourse(inst_id);
0378 job_plot_cmap_update_spatialpattern(inst_id);
0379 set(h_fig,'Pointer','arrow');