0001 function status = interp_by_samp_mf(cells,obs,samps,plot_res,interp_type,bad_chan,output_root,header_flag,infname)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 if ~((nargin ==9)|(nargin == 5)|(nargin == 6)|(nargin == 8))
0018 error('Number of input arguments must be either 5 6 8 or 9.');
0019 end
0020
0021 srcfid = -1;
0022
0023 if ~((size(obs,1) == size(cells,1))&(size(obs,2) == size(cells,2)))
0024 error('page layout is faulty')
0025 end;
0026 if nargin == 5
0027 bad_chan = [];
0028 header_flag = 'h';
0029
0030 end;
0031
0032 if nargin == 6
0033 header_flag = 'h';
0034 end;
0035
0036 if ~((header_flag == 'h')|(header_flag == 's'))
0037 header_flag = 'h';
0038 end;
0039 if isempty(samps) samps = 1:chdr(1:NPoints); end;
0040
0041 if size(infname,1) ~= size(obs,1)*size(obs,2)
0042 error('# of input files doesnt match page layout')
0043 end;
0044
0045
0046 if nargin == 9
0047 srcfid = fopen(infname(1,:), 'r');
0048 if srcfid == -1
0049 error(['Could not open input file' infname '.']);
0050 end
0051
0052
0053 else
0054 while srcfid == -1
0055 [srcfid, infname]=get_fid('r','*.*', 'Open File:');
0056 end
0057 end
0058
0059
0060 ave_hdr_offsets_v;
0061
0062
0063 [fhdr,chdr,ename,czeros,cgains,cnames,fcom,ftext, coff]=rd_egis_hdr_v(srcfid);
0064
0065 if (nargin == 5|nargin == 6)
0066 output_root = [infname '_it'];
0067 end;
0068
0069
0070
0071 good_chan_mask = ones(chdr(1,NObs),fhdr(NChan));
0072
0073 nobs = chdr(1,NObs)
0074 if bad_chan ~= []
0075
0076 nrows_bad = size(bad_chan,1);
0077 if nobs ~= nrows_bad
0078 disp(['WARNING: Number of observations (' int2str(nobs) ') doesn''t match number of rows in bad_chan (' int2str(nrows_bad) ')']);
0079 if nrows_bad == 1
0080 disp('Replicating bad_chan vector to match nobs');
0081 bad_chan = ones(size(good_chan_mask,1))*bad_chan;
0082 else
0083 error('Drastic mismatch between nobs and bad_chan')
0084 end
0085 end
0086
0087 for isub = 1:size(good_chan_mask,1)
0088 bchan = find(bad_chan(isub,:));
0089 good_chan_mask(isub,bad_chan(isub,bchan)) = zeros(1,size(bchan,2));
0090 end;
0091 end;
0092
0093 [xelec,yelec,zelec] = electrodes(fhdr(NChan));
0094 if interp_type == 'sp'
0095 if fhdr(NChan) == 129
0096 nmax = 8;
0097 else
0098 error('something is rotten')
0099 end;
0100 end;
0101 fclose(srcfid)
0102
0103 for isamp = 1:size(samps,2)
0104 disp(['Working on sample: ' int2str(samps(isamp))]);
0105 image_binary = zeros(plot_res*size(cells,1),plot_res*size(cells,2));
0106 icount = 1;
0107 for icell=1:size(cells,1)
0108 for t=1:size(cells,2)
0109 c = cells(icell,t);
0110 disp([' Cell: ' int2str(c)]);
0111 disp([' Obs: ' int2str(obs(icell,t))]);
0112 srcfid = fopen(infname(icount,:),'rb');
0113 icount = icount + 1;
0114 trialdata = rd_onetr_allch(srcfid, coff(c), obs(icell,t), fhdr(NChan), chdr(c, NPoints));
0115 w = trialdata(samps(isamp),:);
0116 good_chan = find(good_chan_mask(obs(icell,t),:));
0117 v = zeros(1,size(good_chan,2));
0118 x = zeros(1,size(good_chan,2));
0119 y = zeros(1,size(good_chan,2));
0120 z = zeros(1,size(good_chan,2));
0121 v = w(good_chan);
0122 x = xelec(good_chan);
0123 y = yelec(good_chan);
0124 z = zelec(good_chan);
0125 if interp_type == 'sp'
0126 meanv = mean(v);
0127 v = v - meanv*ones(1,size(v,2));
0128 [sp_coff,error_check, sp_mat] = bayes_sphcoff(nmax,x,y,z,v);
0129 imagemat = image_2D(sp_coff,nmax,plot_res,120,meanv);
0130 elseif interp_type == '3d'
0131 disp('Default w is set to 1')
0132 w = 1;
0133 [p,q,error_check]= mateqs(w,x,y,z,v);
0134 disp('plot is being made as a 2d image')
0135 ruu = sqrt(x(1).^2+y(1).^2+z(1).^2);
0136 [xs,ys,zs] = polgrid(plot_res,ruu);
0137 image_3d= interp_3d(w,x,y,z,xs,ys,zs,p,q);
0138 imagemat= mask(xs,ys,zs,image_3d,120);
0139 else
0140 error('havent dealt with spherical splines yet')
0141 end;
0142 image_binary(plot_res*(icell-1)+1:plot_res*(icell-1)+plot_res,plot_res*(t-1)+1:plot_res*(t-1)+plot_res)=imagemat;
0143
0144 end;
0145 end
0146
0147 outfname = [output_root '_s' int2str(samps(isamp))];
0148 outfid = fopen(outfname,'wb');
0149 if header_flag == 'h'
0150 num_written = fwrite(outfid, size(image_binary), 'float');
0151 if num_written ~= 2
0152 error('Failed to write header info');
0153 end
0154
0155 fwrite(outfid, plot_res, 'float');
0156 end;
0157 num_written = fwrite(outfid,image_binary','float');
0158 if num_written ~= size(image_binary,1)*size(image_binary,2)
0159 error('write-out filed')
0160 end;
0161 fclose(outfid);
0162 end
0163
0164 disp('Finished running make_interp.');
0165 temp=fclose(srcfid);
0166 status = 1;
0167
0168