📄 glm.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 + -