Print

Print


Dear Saul,
attached are two functions of which one might help. vox2mni transforms 3 by N 
vectors of coordinates in voxel-space to MNI-space. In order to do so you 
have to feed the function with the respective 4x4 matrix M of the volume as 
well. This is stored in the field "mat" of a structure created by the function 
spm_vol. So typing MNI=vox2mni(M,VOX) will give you then a 3 by N matrix of 
vectors with MNI-coordinates. The other function simply does the reverse.

Hope that's what you need,
Thilo

On Tuesday 20 September 2005 14:08, Miller, Saul wrote:
> Hi,
> I'm trying to use a script to get the maximum T value from a mask I created
> in SPM2. The mask is basically a binary mask multiplied by a spmT image.
> Using a script, I am able to get the maximum T value and I'm also able to
> get at what coordinates in the matrix this T value occurrs, but I'm not
> sure how to go from the matrix coordinates into MNI coordinates, which is
> what I really want to know. Any help on this matter would be appreciated.
> See below for the script. Thank you.
> -Saul
>
>
> %Subjects list
> sub_list = str2mat('sub1','sub2','sub3');
> %Directory where subjects are located
> working_dir = '/study_dir/';
> %Directory where mask is located within subjects dir
> mask_dir = 'labels/';
> %text file containing .img mask
> inputfile = 'ROIs.txt';
>
>
> num_sub = size(sub_list,1);
>
>
> fid=fopen(inputfile);
> c=0;
> masks=[];
> while 1
>     line = fgetl(fid);
>     if ~isstr(line), break, end
>     if c==0
>        masks=line;
>        c=1;
>    else
>        masks=str2mat(masks,line);
>    end
> end
> fclose(fid);
> [nummasks,temp]=size(masks);
>
> fid = fopen('T_values.txt','w');
>
> for i=1:num_sub
>     cur_sub = deblank(sub_list(i,:));
>     fprintf(fid,['Subject: ',cur_sub,'\n']);
>     for j=1:nummasks
>         highT = 0;
>         x_coord = 0;
>         y_coord = 0;
>         z_coord = 0;
>         mask_name = masks(j,:);
>         m_num = strfind(mask_name,'.');
>         mask_label = masks(j,1:m_num-1);
>         mask =
> spm_read_vols(spm_vol([working_dir,cur_sub,'/',mask_dir,mask_name]));
> 		for x=1:size(mask,1)
>             for y=1:size(mask,2)
>                 for z=1:size(mask,3)
>                     if mask(x,y,z) > highT
>                         highT = mask(x,y,z);
>                         x_coord = x;
>                         y_coord = y;
>                         z_coord = z;
>                     end
>                 end
>             end
> 		end
> 		fprintf(fid,[mask_label,': highest T: ',num2str(highT),'
> (',num2str(x_coord),',',num2str(y_coord),',',num2str(z_coord),')','\n']);
>     end
> end
> fclose(fid);

-- 
Thilo Kellermann
RWTH Aachen University
Pauwelstr. 30
52074 Aachen
Tel.: +49 (0)241 / 8089977
Fax.: +49 (0)241 / 8082401
E-Mail: [log in to unmask]