Home > SurfStat > SurfStatReadData1.m

SurfStatReadData1

PURPOSE ^

Reads data (e.g. thickness) from a single .txt or FreeSurfer file.

SYNOPSIS ^

function Y = SurfStatReadData1( filename )

DESCRIPTION ^

Reads data (e.g. thickness) from a single .txt or FreeSurfer file. 

 Usage: Y = SurfStatReadTxt( filename );

 filename = .txt or FS file name, either new version binary or ASCII. 

 Y = n x v vector of data, v=#vertices.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function Y = SurfStatReadData1( filename )
0002 
0003 %Reads data (e.g. thickness) from a single .txt or FreeSurfer file.
0004 %
0005 % Usage: Y = SurfStatReadTxt( filename );
0006 %
0007 % filename = .txt or FS file name, either new version binary or ASCII.
0008 %
0009 % Y = n x v vector of data, v=#vertices.
0010 
0011 [pathstr,name,ext] = fileparts(filename);
0012 
0013 switch ext
0014     case '.txt'
0015         % It's a .txt file
0016         fid=fopen(filename);
0017         Y=fscanf(fid,'%f')';
0018         fclose(fid) ;
0019 
0020     case '.thickness'
0021         % It's a FreeSurfer file
0022         % Assume it's a binary file
0023         fid = fopen(filename, 'rb', 'b') ;
0024         b1 = fread(fid, 1, 'uchar') ;
0025         b2 = fread(fid, 1, 'uchar') ;
0026         b3 = fread(fid, 1, 'uchar') ;
0027         magic = bitshift(b1, 16) + bitshift(b2,8) + b3 ;
0028         if magic==16777215
0029             v = fread(fid, 1, 'int32') ;
0030             t = fread(fid, 1, 'int32') ;
0031             k = fread(fid, 1, 'int32') ;
0032             Y = fread(fid, [k v], 'float') ;
0033         else
0034             % Assume it's an ASCII file
0035             fclose(fid);
0036             fid = fopen(filename, 'r') ;
0037             v = fscanf(fid, '%d', 1);
0038             all = fscanf(fid, '%d %f %f %f %f\n', [5 v]) ;
0039             Y = all(5, :) ;
0040         end
0041         fclose(fid) ;
0042 
0043     case '.mgh'
0044         % It's an mgh file
0045         fid = fopen(filename, 'rb', 'b') ;
0046         v       = fread(fid, 1, 'int') ;
0047         dim     = fread(fid, 4, 'int') ;
0048         fseek(fid, 264, 'cof') ;
0049         dims=dim(dim>1)';
0050         Y = fread(fid, dims, 'float')';
0051         fclose(fid);
0052 end
0053     
0054 return
0055 end
0056 
0057

Generated on Fri 26-Sep-2008 14:05:29 by m2html © 2003