⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 glm.bff

📁 toolbox of BVQX, This is the access between BV and matlab. It will help you to analysis data from BV
💻 BFF
字号:
# BinaryFileFormat (leave this tag as magic token!)

# BVQX file format for *.GLM files (General Linear Model)
# GLM FileVersions supported: 1, 2, 3
#
# Version:  v0.7a
# Build:    7072411
# Date:     Jul-24 2007, 11:29 AM CEST
# Author:   Jochen Weber, Brain Innovation, B.V., Maastricht, NL
# URL/Info: http://wiki.brainvoyager.com/BVQXtools

# FILE FORMAT
Description:General Linear Model files
EncodingSyntax:ieee-le
Extensions:glm
Magic:!
name           !range       !type    !magic
GLM_Predictor  !1, 1024     !regexp  !Predictor\: \d+
EndMagic

# FIELDS
ListOfFields:!
type  !cond                   !disktype!datatype!dim                      !default !varname

# Preset ProjectType !
EXPRE !$BFFREAD   !  !  !  !  !@ProjectType    = 1;
EXPRE !$BFFREAD   !  !  !  !  !@ProjectTypeRFX = 0;

# Handle NO FileVersion, ProjectTypeRFX given
EXPRE !$BFFWRITE  !  !  !  !  !try, $TestVar = @FileVersion;    catch, @FileVersion = 1;    end
EXPRE !$BFFWRITE  !  !  !  !  !try, $TestVar = @ProjectTypeRFX; catch, @ProjectTypeRFX = 0; end

# Reading first uint16, check for file version ...
FIELD !                       !uint16  !double  !1, 1                     !        !FileVersion

# Handle FileVersion 2 with special type
EXPRE !$BFFWRITE & @FileVersion == 2 !!!!!if @ProjectTypeRFX > 0, @ProjectType = @ProjectType + 10; end

# Additional fields for FileVersion > 1, part 1
BLOOP !@FileVersion > 1       ! ! !1 ! !FileVersion2pp_1
FIELD !                       !uint8   !double  !1, 1                     !        !ProjectType
FIELD !@FileVersion > 2       !uint8   !double  !1, 1                     !        !ProjectTypeRFX
ELOOP !                       ! ! !  ! !FileVersion2pp_1

# Handle FileVersion 2 with special type
EXPRE !@FileVersion == 2  !!!!!if @ProjectType > 10, @ProjectTypeRFX = 1; @ProjectType = @ProjectType - 10; end

# Additional fields for RFX projects
BLOOP !@ProjectTypeRFX > 0    ! ! !1 ! !ProjectTypeRFX1
FIELD !                       !uint32  !double  !1, 1                     !        !NrOfSubjects
FIELD !                       !uint32  !double  !1, 1                     !        !NrOfSubjectPredictors
ELOOP !                       ! ! !  ! !ProjectTypeRFX1

# Basic fields (in all versions)
FIELD !                       !uint32  !double  !1, 1                     !        !NrOfTimePoints
FIELD !                       !uint32  !double  !1, 1                     !        !NrOfPredictors
FIELD !                       !uint32  !double  !1, 1                     !        !NrOfStudies
FIELD !                       !uint8   !double  !1, 1                     !        !SeparatePredictors
FIELD !                       !uint8   !double  !1, 1                     !        !TransformationType
FIELD !                       !uint16  !double  !1, 1                     !        !Resolution

# Preset SerialCorrelation !
EXPRE !$BFFREAD   !  !  !  !  !@SerialCorrelation = 1;

# Some field that are, in this fashion, only present in FileVersion 1
BLOOP !@FileVersion == 1      ! ! !1 ! !FileVersion1
FIELD !                       !uint16  !double  !1, 1                     !        !XStart
FIELD !                       !uint16  !double  !1, 1                     !        !XEnd
FIELD !                       !uint16  !double  !1, 1                     !        !YStart
FIELD !                       !uint16  !double  !1, 1                     !        !YEnd
FIELD !                       !uint16  !double  !1, 1                     !        !ZStart
FIELD !                       !uint16  !double  !1, 1                     !        !ZEnd
ELOOP !                       ! ! !  ! !FileVersion1

# Additional fields for FileVersion > 1, part 2
BLOOP !@FileVersion > 1       ! ! !1 ! !FileVersion2pp_2
FIELD !                       !uint8   !double  !1, 1                     !        !SerialCorrelation
FIELD !                       !single  !double  !1, 1                     !        !MeanAR1Pre
FIELD !                       !single  !double  !1, 1                     !        !MeanAR1Post

# Some additional fields for FMR projects (ProjectType == 0)
BLOOP !@ProjectType == 0      ! ! !1 ! !ProjectType0
FIELD !                       !uint16  !double  !1, 1                     !        !NrOfColumns
FIELD !                       !uint16  !double  !1, 1                     !        !NrOfRows
FIELD !                       !uint16  !double  !1, 1                     !        !NrOfSlices
EXPRE !$BFFREAD               ! ! !  ! !$NrOfDimPPoints = [@NrOfColumns @NrOfRows @NrOfSlices];
ELOOP !                       ! ! !  ! !ProjectType0

# Some additional fields for VTC projects (ProjectType == 1)
BLOOP !@ProjectType == 1      ! ! !1 ! !ProjectType1
FIELD !                       !uint16  !double  !1, 1                     !        !XStart
FIELD !                       !uint16  !double  !1, 1                     !        !XEnd
FIELD !                       !uint16  !double  !1, 1                     !        !YStart
FIELD !                       !uint16  !double  !1, 1                     !        !YEnd
FIELD !                       !uint16  !double  !1, 1                     !        !ZStart
FIELD !                       !uint16  !double  !1, 1                     !        !ZEnd
EXPRE !$BFFREAD               ! ! !  ! !$XDim = (@XEnd - @XStart) / @Resolution;
EXPRE !$BFFREAD               ! ! !  ! !$YDim = (@YEnd - @YStart) / @Resolution;
EXPRE !$BFFREAD               ! ! !  ! !$ZDim = (@ZEnd - @ZStart) / @Resolution;
EXPRE !$BFFREAD               ! ! !  ! !$NrOfDimPPoints = [$XDim $YDim $ZDim];
ELOOP !                       ! ! !  ! !ProjectType1

# Some additional fields for MTC projects (ProjectType == 2)
BLOOP !@ProjectType == 2      ! ! !1 ! !ProjectType2
FIELD !                       !uint32  !double  !1, 1                     !        !NrOfVertices
EXPRE !$BFFREAD               ! ! !  ! !$NrOfDimPPoints = @NrOfVertices;
ELOOP !                       ! ! !  ! !ProjectType2

# For writing NrOfDimPPoints must be known to check dimension
EXPRE !$BFFWRITE              ! ! !  ! !if  @ProjectTypeRFX, $NrOfDimPPoints = size(@GLMData.RFXGlobalMap); end
EXPRE !$BFFWRITE              ! ! !  ! !if ~@ProjectTypeRFX, $NrOfDimPPoints = size(@GLMData.MCorrSS); end
EXPRE !$BFFWRITE              ! ! !  ! !if $NrOfDimPPoints(end) == 1, $NrOfDimPPoints(end) = []; end

# Further fields in LOOP FileVesion2pp_2
FIELD !                       !uint8   !double  !1, 1                     !        !CortexBasedStatistics
FIELD !                       !int32   !double  !1, 1                     !        !NrOfVoxelsForBonfCorrection
FIELD !                       !cstring !cstring !1, 1                     !        !CortexBasedStatisticsMaskFile

# End of LOOP FileVersion2pp_2
ELOOP !                       ! ! !  ! !FileVersion2pp_2

# LOOP over NrOfStudies
EXPRE !$BFFREAD           !!!!!if @ProjectType ~= 2, @Study = cell2struct(cell(0, 0, 3), {'NrOfTimePoints', 'NameOfAnalyzedFile', 'NameOfRTCFile'}, 3); else, @Study = cell2struct(cell(0, 0, 4), {'NrOfTimePoints', 'NameOfAnalyzedFile', 'NameOfSSMFile', 'NameOfRTCFile'}, 3); end, if @NrOfStudies > 0, @Study(@NrOfStudies).NameOfAnalyzedFile = ''; end
BLOOP !                       ! ! !@NrOfStudies ! !StudyNumber
FIELD !                       !uint32  !double  !1, 1                     !        !Study($StudyNumber).NrOfTimePoints
FIELD !                       !cstring !cstring !1, 1                     !        !Study($StudyNumber).NameOfAnalyzedFile
FIELD !@ProjectType == 2      !cstring !cstring !1, 1                     !        !Study($StudyNumber).NameOfSSMFile
FIELD !                       !cstring !cstring !1, 1                     !        !Study($StudyNumber).NameOfRTCFile
ELOOP !                       ! ! !  ! !StudyNumber

# LOOP over NrOfPredictors
EXPRE !$BFFREAD           !!!!!@Predictor = cell2struct(cell(0, 0, 3), {'Name1', 'Name2', 'RGB'}, 3); if @NrOfPredictors > 0, @Predictor(@NrOfPredictors).Name1 = ''; end
BLOOP !                       ! ! !@NrOfPredictors ! !PredictorNumber
FIELD !                       !cstring !cstring !1, 1                     !        !Predictor($PredictorNumber).Name1
FIELD !                       !cstring !cstring !1, 1                     !        !Predictor($PredictorNumber).Name2
FIELD !                       !uint8   !double  !4, 3                     !        !Predictor($PredictorNumber).RGB
ELOOP !                       ! ! !  ! !PredictorNumber

# For all non-RFX models
BLOOP !@ProjectTypeRFX == 0   ! ! !1 ! !NoRFXModel

# Design matrix, iXX
EXPRE !$BFFWRITE  !  !  !  !  !@DesignMatrix = [@DesignMatrix]';
FIELD !                       !single  !double  !@NrOfPredictors, @NrOfTimePoints !!DesignMatrix
EXPRE !           !  !  !  !  !@DesignMatrix = [@DesignMatrix]';
FIELD !@FileVersion > 1       !single  !double  !@NrOfPredictors, @NrOfPredictors !!iXX

# GLMData
FIELD !                       !single  !single  !$NrOfDimPPoints, 1       !        !GLMData.MultipleRegressionR
FIELD !                       !single  !single  !$NrOfDimPPoints, 1       !        !GLMData.MCorrSS
FIELD !                       !single  !single  !$NrOfDimPPoints, @NrOfPredictors !!GLMData.BetaMaps
FIELD !@FileVersion > 1       !single  !single  !$NrOfDimPPoints, @NrOfPredictors !!GLMData.XY
FIELD !@FileVersion > 1       !single  !single  !$NrOfDimPPoints, 1       !        !GLMData.TimeCourseMean
FIELD !@SerialCorrelation > 0 !single  !single  !$NrOfDimPPoints, 1       !        !GLMData.ARLag1

# end of NoRFXModel loop
ELOOP !                       ! ! !  ! !NoRFXModel

# For RFX model instead
BLOOP !@ProjectTypeRFX > 0    ! ! !1 ! !DoRFXModel

# read one global map
FIELD !                       !single  !single  !$NrOfDimPPoints, 1       !        !GLMData.RFXGlobalMap

# read subject/predictor maps
EXPRE !$BFFREAD           !!!!!@GLMData.Subject = cell2struct(cell(0, 0, 1), {'BetaMaps'}, 3); if @NrOfSubjects > 0, @GLMData.Subject(@NrOfSubjects).BetaMaps = []; end
BLOOP !                       ! ! !@NrOfSubjects ! !SubjectNr
FIELD !                       !single  !single  !$NrOfDimPPoints, @NrOfSubjectPredictors ! !GLMData.Subject($SubjectNr).BetaMaps
ELOOP !                       ! ! !  ! !SubjectNr

# end of DoRFXModel loop
ELOOP !                       ! ! !  ! !DoRFXModel

# Read rest of File into REMAININGCONTENT
EXPRE !$BFFREAD   !  !  !  !  !$RemSize = $FILESIZE - ftell(fid);
EXPRE !$BFFWRITE  !  !  !  !  !$RemSize = 0; try, if isfield(@@, 'REMAININGCONTENT'), $RemSize = prod(size(@REMAININGCONTENT)); end, end
FIELD !$RemSize > 0           !uint8   !uint8   !1, $RemSize              !        !REMAININGCONTENT

EndListOfFields

NewFileCode:!
@ProjectType = 1;
@ProjectTypeRFX = 0;
@FileVersion = 3;
@NrOfSubjects = 0;
@NrOfSubjectPredictors = 0;
@NrOfTimePoints = 250;
@NrOfPredictors = 1;
@NrOfStudies = 1;
@SeparatePredictors = 0;
@TransformationType = 1;
@Resolution = 3;
@SerialCorrelation = 0;
@MeanAR1Pre = 0;
@MeanAR1Post = 0;
@XStart = 57;
@XEnd = 231;
@YStart = 52;
@YEnd = 172;
@ZStart = 59;
@ZEnd = 197;
@CortexBasedStatistics = 0;
t_xdim = round((@XEnd - @XStart) / @Resolution);
t_ydim = round((@YEnd - @YStart) / @Resolution);
t_zdim = round((@ZEnd - @ZStart) / @Resolution);
@NrOfVoxelsForBonfCorrection = t_xdim * t_ydim * t_zdim;
@CortexBasedStatisticsMaskFile = '';
@Study.NrOfTimePoints = 250;
@Study.NameOfAnalyzedFile = 'some.vtc';
@Study.NameOfRTCFile = 'Interactive';
@Predictor.Name1 = 'Predictor: 1';
@Predictor.Name2 = 'Mean (confound)';
@Predictor.RGB = [255, 255, 255; zeros(3, 3)];
@DesignMatrix = ones(250, 1);
@iXX = 1 / 250;
@GLMData.MultipleRegressionR = single(zeros(t_xdim, t_ydim, t_zdim));
@GLMData.MCorrSS = single(zeros(t_xdim, t_ydim, t_zdim));
@GLMData.BetaMaps = single(100 * ones(t_xdim, t_ydim, t_zdim));
@GLMData.XY = single(zeros(t_xdim, t_ydim, t_zdim));
@GLMData.TimeCourseMean = single(100 * ones(t_xdim, t_ydim, t_zdim));
EndNewFileCode

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -