c2dab88647c758656eca193f132cf786ae82a900
Christoph Budziszewski git-svn-id: https://svn.dis...

Christoph Budziszewski authored 15 years ago

1) % filenameList as in SPM.xY.VY
2) % voxelList in [x y z], 1 coordinate per row
Christoph Budziszewski kleine änderungen code move

Christoph Budziszewski authored 15 years ago

3) 
Christoph Budziszewski git-svn-id: https://svn.dis...

Christoph Budziszewski authored 15 years ago

4) function extr = calculateImageData(filenameList, voxelList)
5) TRANSFORM_METHOD = 'single';
6) %function extr = calculateImageData(voxelList,des,smoothed)
7) % global USE_DRIVE_CHECK_HACK;
8) 
9) % dtype='PSTH';
10) 
11) % switch dtype 
12) %     case 'PSTH'
13) %         V=des.xY.VY;
14) %     case 'betas'
15) %         V=des.Vbeta;
16) % end;
17) 
18) % if USE_DRIVE_CHECK_HACK
19) % if V(1).fname(1)~='D'
20) %      for z=1:length(V) % Change Drive Letter - HACK!
21) %       	V(z).fname(1) = 'D';
22) %      end; 
23) % end
24) % end
25) 
26) % if (~smoothed)
27) %   for z=1:length(V) % Change smoothed Filename - HACK!
28) %       % D:....SUBJECTID\session\swfanders...
29) %       % D:....SUBJECTID\session\wfanders...
30) %       tmp = findstr(filesep,V(z).fname);
31) %       V(z).fname = strcat(V(z).fname(1:tmp(end)),V(z).fname(tmp(end)+2:end));
32) %   end;
33) % end
Christoph Budziszewski kleine änderungen code move

Christoph Budziszewski authored 15 years ago

34) 
Christoph Budziszewski refactored to arg-structs!...

Christoph Budziszewski authored 15 years ago

35) V = filenameList;
Christoph Budziszewski kleine änderungen code move

Christoph Budziszewski authored 15 years ago

36) 
37) vox = voxelList;
Christoph Budziszewski refactored to arg-structs!...

Christoph Budziszewski authored 15 years ago

38) nVoxel = size(vox,1);
39) nImage = numel(V);
Christoph Budziszewski kleine änderungen code move

Christoph Budziszewski authored 15 years ago

40) 
Christoph Budziszewski refactored to arg-structs!...

Christoph Budziszewski authored 15 years ago

41) for kImage=1:nImage
Christoph Budziszewski git-svn-id: https://svn.dis...

Christoph Budziszewski authored 15 years ago

42) % 	extr(kImage) = struct(...
43) %         'dat',  ...
44) %         'val',   repmat(NaN, [1 nVoxel]),...
45) % 		'mean',  repmat(NaN, [1 nVoxel]),...
46) % 		'sum',   repmat(NaN, [1 nVoxel]),...
47) % 		'nvx',   repmat(NaN, [1 nVoxel]),...
48) % 		'posmm', repmat(NaN, [3 nVoxel]),...
49) % 		'posvx', repmat(NaN, [3 nVoxel]));
Christoph Budziszewski kleine änderungen code move

Christoph Budziszewski authored 15 years ago

50) 
Christoph Budziszewski refactored to arg-structs!...

Christoph Budziszewski authored 15 years ago

51)     switch TRANSFORM_METHOD
52)         case 'single'
53)             roicenter = round(inv(V(kImage).mat)*[vox, ones(nVoxel,1)]');
54)             x = roicenter(1,:);
55)             y = roicenter(2,:);
56)             z = roicenter(3,:);
57)         case 'image'
Christoph Budziszewski git-svn-id: https://svn.dis...

Christoph Budziszewski authored 15 years ago

58)              x = []; y = []; z = [];
59)             for iRoiFile = 1:nRoiFiles 
Christoph Budziszewski refactored to arg-structs!...

Christoph Budziszewski authored 15 years ago

60)                 [x1 y1] = ndgrid(1:V(k).dim(1),1:V(k).dim(2));
61)                 for p = 1:V(k).dim(3) % resample mask Vm(iRoiFile) in space of V(k)
62)                     B = spm_matrix([0 0 -p 0 0 0 1 1 1]);
63)                     M = inv(B*inv(V(k).mat)*Vm(iRoiFile).mat);
64)                     msk = find(spm_slice_vol(Vm(iRoiFile),M,V(k).dim(1:2),0));
65)                     if ~isempty(msk)
66)                         z1 = p*ones(size(msk(:)));
67)                         x = [x; x1(msk(:))];
68)                         y = [y; y1(msk(:))];
69)                         z = [z; z1];
70)                     end;
71)                 end;
72)             end
73)     end
Christoph Budziszewski git-svn-id: https://svn.dis...

Christoph Budziszewski authored 15 years ago

74)     
Christoph Budziszewski kleine änderungen code move

Christoph Budziszewski authored 15 years ago

75) 
Christoph Budziszewski git-svn-id: https://svn.dis...

Christoph Budziszewski authored 15 years ago

76) 	for iVoxel = 1:nVoxel
Christoph Budziszewski heavy CrossVal Toolbox deve...

Christoph Budziszewski authored 15 years ago

77) 
Christoph Budziszewski git-svn-id: https://svn.dis...

Christoph Budziszewski authored 15 years ago

78) %         if rad==0
79)             x = roicenter(1,iVoxel);
80)             y = roicenter(2,iVoxel);
81)             z = roicenter(3,iVoxel);
82) %         else
83) %             tmp = spm_imatrix(V(kImage).mat);
84) %             vdim = tmp(7:9);
85) %             vxrad = ceil((rad*ones(1,3))./(ones(nVoxel,1)*vdim))';
86) %             [x y z] = ndgrid(-vxrad(1,iVoxel):sign(vdim(1)):vxrad(1,iVoxel), ...
87) %                       -vxrad(2,iVoxel):sign(vdim(2)):vxrad(2,iVoxel), ...
88) %                       -vxrad(3,iVoxel):sign(vdim(3)):vxrad(3,iVoxel));
89) %             sel = (x./vxrad(1,iVoxel)).^2 + (y./vxrad(2,iVoxel)).^2 + ...
90) %                   (z./vxrad(3,iVoxel)).^2 <= 1;
91) %             x = roicenter(1,iVoxel)+x(sel(:));
92) %             y = roicenter(2,iVoxel)+y(sel(:));
93) %             z = roicenter(3,iVoxel)+z(sel(:));
94) %         end;
95) 
96) 
97) 		dat = spm_sample_vol(V(kImage), x, y, z,0);
98)         extr(kImage).dat(iVoxel)      = dat;
99) 		extr(kImage).mean(iVoxel)     = nanmean(dat);
100)         extr(kImage).nvx(iVoxel)      = numel(dat);
101) 	end;
102) 
103) end;