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