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

📄 cmp.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 its own magic token!)

# BVQX file format for *.CMP files (Custom/Component MaP)
# CMP FileVersions supported: 3, 4, 5
#
# CMPs are the custom maps that are being used as of BVQX 1.9 for all
# kinds of statistical outcome (hence superceding VMPs in the native
# resolution of the data, uninterpolated)
#
# Version:  v0.7a
# Build:    7072411
# Date:     Jul-24 2007, 11:24 AM CEST
# Author:   Jochen Weber, Brain Innovation, B.V., Maastricht, NL
# URL/Info: http://wiki.brainvoyager.com/BVQXtools

# FILE FORMAT
Description:Component/custom map files,Granger map files,ICA map files
EncodingSyntax:ieee-le
Extensions:cmp,gcm,ica

# Field description
ListOfFields:!
type  !cond                   !disktype!datatype!dim                      !default !varname

# some checks first
BLOOP !$BFFWRITE              ! ! !1 ! !WriteChecks
EXPRE !!!!!! @NrOfComponents = numel(@Component);
EXPRE !!!!!! if @NrOfComponents < 1, fclose(fid); delete([$FILENAME '.tmp']); error('Illegal number of components'); end
EXPRE !!!!!! $XYZDim = size(@Component(1).CMPData); $XDim = $XYZDim(1); $YDim = $XYZDim(2); $ZDim = $XYZDim(3);
EXPRE !!!!!! for tv_cc = 2:@NrOfComponents, tv_xyz = size(@Component(tv_cc).CMPData); if any($XYZDim ~= tv_xyz),fclose(fid);error('Bad Dims');end,end
ELOOP !                       ! ! !  ! !WriteChecks

# copied code from Hester (reopen file for FileVersion > 255, wrong endian type
FIELD !                       !uint16  !double  !1, 1                     !        !FileVersion
FIELD !                       !uint16  !double  !1, 1                     !        !DocumentType
FIELD !                       !uint32  !double  !1, 1                     !        !NrOfComponents
FIELD !                       !uint32  !double  !1, 1                     !        !NrOfTimePoints
FIELD !                       !uint32  !double  !1, 1                     !        !NrOfComponentParameters
FIELD !@FileVersion > 3       !uint32  !double  !1, 1                     !        !ShowParamsRangeFrom
FIELD !@FileVersion > 3       !uint32  !double  !1, 1                     !        !ShowParamsRangeTo
FIELD !@FileVersion > 3       !uint32  !double  !1, 1                     !        !FingerprintParamsRangeFrom
FIELD !@FileVersion > 3       !uint32  !double  !1, 1                     !        !FingerprintParamsRangeTo
EXPRE !$BFFREAD && @FileVersion < 4 !!!!!@ShowParamsRangeFrom = []; @ShowParamsRangeTo = []; @FingerprintParamsRangeFrom = []; @FingerprintParamsRangeTo = [];
FIELD !                       !uint32  !double  !1, 1                     !        !XStart
FIELD !                       !uint32  !double  !1, 1                     !        !XEnd
FIELD !                       !uint32  !double  !1, 1                     !        !YStart
FIELD !                       !uint32  !double  !1, 1                     !        !YEnd
FIELD !                       !uint32  !double  !1, 1                     !        !ZStart
FIELD !                       !uint32  !double  !1, 1                     !        !ZEnd
FIELD !                       !uint32  !double  !1, 1                     !        !Resolution
EXPRE !$BFFREAD           !!!!!$XDim = (@XEnd - @XStart) / @Resolution;
EXPRE !$BFFREAD           !!!!!$YDim = (@YEnd - @YStart) / @Resolution;
EXPRE !$BFFREAD           !!!!!$ZDim = (@ZEnd - @ZStart) / @Resolution;
FIELD !                       !uint32  !double  !1, 1                     !        !VMRDimX
FIELD !                       !uint32  !double  !1, 1                     !        !VMRDimY
FIELD !                       !uint32  !double  !1, 1                     !        !VMRDimZ
FIELD !                       !cstring !cstring !1, 1                     !        !OriginatingVTC
FIELD !                       !cstring !cstring !1, 1                     !        !LinkedPRT
FIELD !                       !cstring !cstring !1, 1                     !        !OptionalVOI

# loop over maps
EXPRE !$BFFREAD           !!!!!@Component = cell2struct(cell(0, 0, 26), {'Type', 'LowerThreshold', 'UpperThreshold', 'Name', 'RGBLowerThreshPos', 'RGBUpperThreshPos', 'RGBLowerThreshNeg', 'RGBUpperThreshNeg', 'UseRGBColor', 'TransColorFactor', 'NrOfLags', 'MinLag', 'MaxLag', 'CCOverlay', 'ClusterSize', 'EnableClusterCheck', 'UseValuesAboveThresh', 'DF1', 'DF2', 'ShowPositiveNegativeFlag', 'BonferroniValue', 'NrOfFDRThresholds', 'FDRThresholds', 'UnknownValue', 'TimePointData', 'CMPData'}, 3); if @NrOfComponents > 0, @Component(@NrOfComponents).Name = ''; end
BLOOP !                       ! ! !@NrOfComponents ! !CMPNo

FIELD !                       !uint32  !double  !1, 1                     !        !Component($CMPNo).Type
# the map type is coded as follows:
# 1: t-Map
# 2: r-Map
# 3: CC-Map (with additional fields, if DF1 = 2 and NrOfLags = 20, R-Map!)
# 4: F-Map
# 11: %-Map
# 12: z_ica-Map
# 13: TH-Map

FIELD !                       !single  !double  !1, 1                     !        !Component($CMPNo).LowerThreshold
FIELD !                       !single  !double  !1, 1                     !        !Component($CMPNo).UpperThreshold
FIELD !                       !cstring !cstring !1, 1                     !        !Component($CMPNo).Name
FIELD !                       !uint8   !double  !1, 3                     !        !Component($CMPNo).RGBLowerThreshPos
FIELD !                       !uint8   !double  !1, 3                     !        !Component($CMPNo).RGBUpperThreshPos
FIELD !                       !uint8   !double  !1, 3                     !        !Component($CMPNo).RGBLowerThreshNeg
FIELD !                       !uint8   !double  !1, 3                     !        !Component($CMPNo).RGBUpperThreshNeg
FIELD !                       !uint8   !double  !1, 1                     !        !Component($CMPNo).UseRGBColor
FIELD !                       !single  !double  !1, 1                     !        !Component($CMPNo).TransColorFactor
BLOOP !@FileVersion > 4       ! ! !1 ! !CMPFVgt4
BLOOP !@Component($CMPNo).Type == 3 ! ! !1 ! !CMPIsCC
FIELD !                       !uint32  !double  !1, 1                     !        !Component($CMPNo).NrOfLags
FIELD !                       !uint32  !double  !1, 1                     !        !Component($CMPNo).MinLag
FIELD !                       !uint32  !double  !1, 1                     !        !Component($CMPNo).MaxLag
FIELD !                       !int32   !double  !1, 1                     !        !Component($CMPNo).CCOverlay
ELOOP !                       ! ! !  ! !CMPIsCC
FIELD !                       !uint32  !double  !1, 1                     !        !Component($CMPNo).ClusterSize
FIELD !                       !uint8   !double  !1, 1                     !        !Component($CMPNo).EnableClusterCheck
FIELD !                       !uint32  !double  !1, 1                     !        !Component($CMPNo).UseValuesAboveThresh
FIELD !                       !uint32  !double  !1, 1                     !        !Component($CMPNo).DF1
FIELD !                       !uint32  !double  !1, 1                     !        !Component($CMPNo).DF2
FIELD !                       !uint8   !double  !1, 1                     !        !Component($CMPNo).ShowPositiveNegativeFlag # sum of flags pos=1 and neg=2
FIELD !                       !uint32  !double  !1, 1                     !        !Component($CMPNo).BonferroniValue
FIELD !                       !uint32  !double  !1, 1                     !        !Component($CMPNo).NrOfFDRThresholds
EXPRE !                   !!!!!$NrOfFDRs = @Component($CMPNo).NrOfFDRThresholds; if $NrOfFDRs < 1, @Component($CMPNo).FDRThresholds = zeros(0, 3); end
EXPRE !$BFFWRITE          !!!!!@Component($CMPNo).FDRThresholds = @Component($CMPNo).FDRThresholds';
FIELD !$NrOfFDRs > 0          !single  !double  !3, $NrOfFDRs             !        !Component($CMPNo).FDRThresholds
EXPRE !                   !!!!!@Component($CMPNo).FDRThresholds = @Component($CMPNo).FDRThresholds';
FIELD !                       !int32   !double  !1, 1                     !        !Component($CMPNo).UnknownValue
ELOOP !                       ! ! !  ! !CMPFVgt4
ELOOP !                       ! ! !  ! !CMPNo

# reading timepoint data if present
BLOOP !                       ! ! !@NrOfComponents ! !CMPNo2
FIELD !@NrOfTimePoints > 0    !single  !double  !@NrOfTimePoints, 1       !        !Component($CMPNo2).TimePointData
EXPRE !@NrOfTimePoints ==0!!!!!@Component($CMPNo2).TimePointData = zeros(0, 1);
ELOOP !                       ! ! !  ! !CMPNo2

# loop over component parameters
EXPRE !$BFFREAD           !!!!!@ComponentParameter = cell2struct(cell(0, 0, 2), {'Name', 'Values'}, 3);
BLOOP !@NrOfComponentParameters > 0!!!@NrOfComponentParameters ! !CMPPNo
FIELD !                       !cstring !cstring !1, 1                     !        !ComponentParameter($CMPPNo).Name
ELOOP !                       ! ! !  ! !CMPPNo

# loop over components and then component parameters (again...!)
BLOOP !                       ! ! !@NrOfComponents ! !CMPNo3
BLOOP !@NrOfComponentParameters > 0!!!@NrOfComponentParameters ! !CMPPNo2
FIELD !                       !single  !double  !1, 1                     !        !ComponentParameter($CMPPNo2).Values($CMPNo3)
ELOOP !                       ! ! !  ! !CMPPNo2
ELOOP !                       ! ! !  ! !CMPNo3

# reading component maps
BLOOP !                       ! ! !@NrOfComponents ! !CMPNo4
FIELD !                       !single  !single  !$XDim, $YDim, $ZDim      !        !Component($CMPNo4).CMPData
ELOOP !                       ! ! !  ! !CMPNo4

# 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:!
@FileVersion = 4;
@DocumentType = 1;
@NrOfComponents = 1;
@NrOfTimePoints = 0;
@NrOfComponentParameters = 0;
@ShowParamsRangeFrom = 0;
@ShowParamsRangeTo = 0;
@FingerprintParamsRangeFrom = 0;
@FingerprintParamsRangeTo = 0;
@XStart = 57;
@XEnd = 231;
@YStart = 52;
@YEnd = 172;
@ZStart = 59;
@ZEnd = 197;
@Resolution = 3;
@VMRDimX = 256;
@VMRDimY = 256;
@VMRDimZ = 256;
@OriginatingVTC = '';
@LinkedPRT = '';
@OptionalVOI = '';
@Component.Type = 1;
@Component.LowerThreshold = 2.5;
@Component.UpperThreshold = 8;
@Component.Name = 'new component';
@Component.RGBLowerThreshPos = [192,   0,   0];
@Component.RGBUpperThreshPos = [255, 192,   0];
@Component.RGBLowerThreshNeg = [  0,   0, 128];
@Component.RGBUpperThreshNeg = [  0, 128, 255];
@Component.UseRGBColor = 1;
@Component.TransColorFactor = 1;
@Component.NrOfLags = [];
@Component.MinLag = [];
@Component.MaxLag = [];
@Component.CCOverlay = [];
@Component.ClusterSize = 4;
@Component.EnableClusterCheck = 0;
@Component.UseValuesAboveThresh = 1;
@Component.DF1 = 12;
@Component.DF2 = 0;
@Component.ShowPositiveNegativeFlag = 3;
@Component.BonferroniValue = 106720;
@Component.NrOfFDRThresholds = 8;
@Component.FDRThresholds = [0.1, 3, 4; 0.05, 3.2, 4.2; 0.04, 3.3, 4.3; 0.03, 3.4, 4.4; 0.02, 3.5, 4.5; 0.01, 3.75, 4.75; 0.005, 4, 5; 0.001, 5, 6];
@Component.UnknownValue = -1;
@Component.TimePointData = zeros(0, 1);
@Component.CMPData = single(zeros([58, 40, 46]));
@ComponentParameter = cell2struct(cell(0, 0, 2), {'Name', 'Values'}, 3);
EndNewFileCode

⌨️ 快捷键说明

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