[Master Index] [Index for Toolbox]

# load_fif_apos

## (Toolbox/load_fif_apos.m in BrainStorm 2.0 (Alpha))

### Function Synopsis

    [Rcoils,Ocoils,Rot,Trans,Cardinal,Extra,HPI_patient,HPI_device,Sensor_info] = load_fif_apos(fname,verbose);

### Help Text

    LOAD_FIF_APOS - Load in position information from Neuromag 122 ".apos" file
     function [Rcoils,Ocoils,Rot,Trans,Cardinal,Extra,HPI_patient,HPI_device,Sensor_info] = load_fif_apos(fname,verbose);
     function [Rcoils,Ocoils,Rot,Trans,Cardinal,Extra,...
         HPI_patient,HPI_device,Sensor_info] = load_fif_apos(fname,verbose);

     Rcoils is the coil locations, Ocoils is the orientation
     Rot is the rotation matrix, Trans the translation.  If r is a 3 x 1, then
      r_head = Rot*r + Trans  rotates and translates r from device coordinates
      to patient coordinates.  The patient coordinates are established by
      Cardinal, and the HPI coils are given in both the patient and device
      coordinates.  Sensor_info loads up the device location and three cosine
      directions for each gradiometer pad.

     See also SENSOR_122

### Cross-Reference Information

This function calls

    sensor_122                         C:\BrainStorm_2001\Toolbox\sensor_122.m

### Listing of function C:\BrainStorm_2001\Toolbox\load_fif_apos.m

    function [Rcoils,Ocoils,Rot,Trans,Cardinal,Extra,HPI_patient,HPI_device,Sensor_info] = load_fif_apos(fname,verbose);
    %LOAD_FIF_APOS - Load in position information from Neuromag 122 ".apos" file
    % function [Rcoils,Ocoils,Rot,Trans,Cardinal,Extra,HPI_patient,HPI_device,Sensor_info] = load_fif_apos(fname,verbose);
    % function [Rcoils,Ocoils,Rot,Trans,Cardinal,Extra,...
    %     HPI_patient,HPI_device,Sensor_info] = load_fif_apos(fname,verbose);
    %
    % Rcoils is the coil locations, Ocoils is the orientation
    % Rot is the rotation matrix, Trans the translation.  If r is a 3 x 1, then
    %  r_head = Rot*r + Trans  rotates and translates r from device coordinates
    %  to patient coordinates.  The patient coordinates are established by
    %  Cardinal, and the HPI coils are given in both the patient and device
    %  coordinates.  Sensor_info loads up the device location and three cosine
    %  directions for each gradiometer pad.
    %
    % See also SENSOR_122

    %<autobegin> ---------------------- 26-May-2004 11:30:50 -----------------------
    % --------- Automatically Generated Comments Block Using AUTO_COMMENTS ---------
    %
    % CATEGORY: Data Processing
    %
    % Alphabetical list of external functions (non-Matlab):
    %   toolbox\sensor_122.m
    %
    % At Check-in: $Author: Mosher $  $Revision: 13 $  $Date: 5/26/04 9:59a $
    %
    % This software is part of BrainStorm Toolbox Version 2.0 (Alpha) 24-May-2004
    %
    % Principal Investigators and Developers:
    % ** Richard M. Leahy, PhD, Signal & Image Processing Institute,
    %    University of Southern California, Los Angeles, CA
    % ** John C. Mosher, PhD, Biophysics Group,
    %    Los Alamos National Laboratory, Los Alamos, NM
    % ** Sylvain Baillet, PhD, Cognitive Neuroscience & Brain Imaging Laboratory,
    %    CNRS, Hopital de la Salpetriere, Paris, France
    %
    % See BrainStorm website at http://neuroimage.usc.edu for further information.
    %
    % Copyright (c) 2004 BrainStorm by the University of Southern California
    % This software distributed  under the terms of the GNU General Public License
    % as published by the Free Software Foundation. Further details on the GPL
    % license can be found at http://www.gnu.org/copyleft/gpl.html .
    %
    % FOR RESEARCH PURPOSES ONLY. THE SOFTWARE IS PROVIDED "AS IS," AND THE
    % UNIVERSITY OF SOUTHERN CALIFORNIA AND ITS COLLABORATORS DO NOT MAKE ANY
    % WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
    % MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, NOR DO THEY ASSUME ANY
    % LIABILITY OR RESPONSIBILITY FOR THE USE OF THIS SOFTWARE.
    %<autoend> ------------------------ 26-May-2004 11:30:50 -----------------------

    % ----------------------------- Script History ---------------------------------
    % 19-May-2004 JCM  Comments cleaning
    % ----------------------------- Script History ---------------------------------

    if(exist('verbose') ~= 1),
      verbose = 1;            % talkative running
    end

    fid = fopen(fname,'rt');    % text mode all platforms

    if(fid < 0),
      error(['Unable to open file ' fname])
    end

    next_line = fgetl(fid);
    if(verbose)
      disp(next_line)
    end
    key_word = sscanf(next_line,'%s ',1);

    while(~strcmp(key_word,'cardinal')),
      next_line = fgetl(fid);
      if(verbose)
        disp(next_line)
      end
      key_word = sscanf(next_line,'%s ',1);
    end                % found keyword CARDINAL

    for i = 1:3,
      Cardinal(i,:) = sscanf(next_line,'cardinal %*d %f %f %f')';
      next_line = fgetl(fid);
    end
    if(verbose)
      disp('Read three CARDINAL lines')
    end

    for i = 1:3,
      HPI_patient(i,:) = sscanf(next_line,'hpi %*d %f %f %f')';
      next_line = fgetl(fid);
    end
    if(verbose)
      disp('Read three HPI lines')
    end

    % so what is the next line?
    key_word = sscanf(next_line,'%s ',1);

    Extra = [];
    while(strcmp(key_word,'extra')), % we have Extra head points
      tmp = sscanf(next_line,'extra %*d %f %f %f')';
      if(isempty(tmp)),
        disp(next_line)
      end

      Extra = [Extra;tmp];
      next_line = fgetl(fid);
      key_word = sscanf(next_line,'%s ',1);
    end
    if(verbose),
      disp(sprintf('Read %.0f lines of Extra head points',size(Extra,1)));
    end

    % we are now entering the region where the hpi in device is listed

    while(~strcmp(key_word,'hpi'))
      next_line = fgetl(fid);
      key_word = sscanf(next_line,'%s ',1);
      if(verbose),
        disp(next_line)
      end
    end

    for i = 1:3,
      HPI_device(i,:) = sscanf(next_line,'hpi %*d %f %f %f')';
      next_line = fgetl(fid);
    end

    if(verbose),
      disp('Read in three hpi locations in device coords')
    end

    % now find the transformation matrix

    key_word = sscanf(next_line,'%s ',1);
    while(strcmp(key_word,'#'))
      next_line = fgetl(fid);
      key_word = sscanf(next_line,'%s ',1);
      if(verbose),
        disp(next_line)
      end
    end

    for i = 1:3,
      Rot(i,:) = sscanf(next_line,'%f %f %f')';
      next_line = fgetl(fid);
    end
    Trans = sscanf(next_line,'%f %f %f');
    if(verbose),
      disp('Loaded in rotation and translation information')
    end

    % now load in the sensor position information

    next_line = fgetl(fid);
    key_word = sscanf(next_line,'%s ',1);
    while(strcmp(key_word,'#'))
      next_line = fgetl(fid);
      key_word = sscanf(next_line,'%s ',1);
      if(verbose),
        disp(next_line)
      end
    end
    if(verbose),
      disp('Now loading in sensor information')
    end

    Sensor_info = [];

    while(next_line ~= -1),
      Sensor_info = [Sensor_info;sscanf(next_line,'%f ',12)'];
      fgetl(fid);
      fgetl(fid);
      fgetl(fid);
      next_line = fgetl(fid);
      if(verbose),
        disp(next_line)
      end
    end

    fclose(fid);

    [Rcoils,Ocoils] = sensor_122(Sensor_info);

    Rcoils(:,1:3) = [Rot*Rcoils(:,1:3)' + Trans*ones(1,size(Rcoils,1))]';
    Rcoils(:,4:6) = [Rot*Rcoils(:,4:6)' + Trans*ones(1,size(Rcoils,1))]';

    Ocoils(:,1:3) = [Rot*Ocoils(:,1:3)']';
    Ocoils(:,4:6) = [Rot*Ocoils(:,4:6)']';

    return

Produced by color_mat2html, a customized BrainStorm 2.0 (Alpha) version of mat2html on Tue Oct 12 12:05:14 2004
Cross-Directory links are: ON