Download CIFTI_read_save/@gifti/subsasgn.m from cindyhfls/fcMRI-VAE: direct link, hf CLI and curl.
- Browser
- Download file 6 kB
-
https://huggingface.co/cindyhfls/fcMRI-VAE/resolve/main/CIFTI_read_save/%40gifti/subsasgn.m
- Command line
-
hf download hf://cindyhfls/fcMRI-VAE/CIFTI_read_save/@gifti/subsasgn.m
-
curl -L -o subsasgn.m https://huggingface.co/cindyhfls/fcMRI-VAE/resolve/main/CIFTI_read_save/%40gifti/subsasgn.m
6 kB
| function this = subsasgn(this, subs, A) | |
| % Subscript assignment for GIfTI objects | |
| %__________________________________________________________________________ | |
| % Copyright (C) 2008 Wellcome Trust Centre for Neuroimaging | |
| % Guillaume Flandin | |
| % $Id: subsasgn.m 6513 2015-08-05 17:52:13Z guillaume $ | |
| switch subs(1).type | |
| case '.' | |
| if ~ismember(subs(1).subs, ... | |
| {'vertices' 'faces' 'normals' 'cdata','mat','indices','private'}) | |
| error('Reference to non-existent field ''%s''.',subs(1).subs); | |
| end | |
| % TODO % handle cases when length(subs) > 1 | |
| [i,n] = isintent(this,subs(1).subs); | |
| if isempty(i) && ~strcmp(subs(1).subs,'private') | |
| n = length(this.data) + 1; | |
| if n==1, this.data = {}; end | |
| % TODO % Initialise data field appropriately | |
| this.data{n}.metadata = struct([]); | |
| this.data{n}.space = []; | |
| this.data{n}.attributes.Dim = size(A); | |
| % TODO % set DataType according to intent type | |
| this.data{n}.data = []; | |
| switch subs(1).subs | |
| case {'vertices','mat'} | |
| in = 'NIFTI_INTENT_POINTSET'; | |
| dt = 'NIFTI_TYPE_FLOAT32'; | |
| this.data{n}.space.DataSpace = 'NIFTI_XFORM_UNKNOWN'; | |
| this.data{n}.space.TransformedSpace = 'NIFTI_XFORM_UNKNOWN'; | |
| this.data{n}.space.MatrixData = eye(4); | |
| case 'faces' | |
| in = 'NIFTI_INTENT_TRIANGLE'; | |
| dt = 'NIFTI_TYPE_INT32'; | |
| case 'indices' | |
| in = 'NIFTI_INTENT_NODE_INDEX'; | |
| dt = 'NIFTI_TYPE_INT32'; | |
| case 'normals' | |
| in = 'NIFTI_INTENT_VECTOR'; | |
| dt = 'NIFTI_TYPE_FLOAT32'; | |
| case 'cdata' | |
| in = 'NIFTI_INTENT_NONE'; | |
| dt = 'NIFTI_TYPE_FLOAT32'; | |
| otherwise | |
| error('This should not happen.'); | |
| end | |
| this.data{n}.attributes.Intent = in; | |
| this.data{n}.attributes.DataType = dt; | |
| end | |
| switch subs(1).subs | |
| %- .private | |
| %-------------------------------------------------------------- | |
| case 'private' | |
| this = builtin('subsasgn',this,subs(2:end),A); | |
| % .mat | |
| %-------------------------------------------------------------- | |
| case 'mat' | |
| if length(subs) > 1 | |
| this.data{n}.space(1).MatrixData = builtin('subsasgn',... | |
| this.data{n}.space(1).MatrixData,subs(2:end),A); | |
| else | |
| if ~isequal(size(A),[4 4]) | |
| error('Invalid Coordinate System Transform Matrix.'); | |
| end | |
| this.data{n}.space(1).MatrixData = A; | |
| end | |
| %- .faces | |
| %-------------------------------------------------------------- | |
| case 'faces' | |
| if length(subs) > 1 | |
| this.data{n}.data = int32(builtin('subsasgn',this.data{n}.data,subs(2:end),A-1)); | |
| else | |
| this.data{n}.data = int32(A - 1); | |
| this.data{n}.attributes.Dim = size(A); | |
| end | |
| %- .indices | |
| %-------------------------------------------------------------- | |
| case 'indices' | |
| if n ~= 1 | |
| this.data = this.data([n setdiff(1:numel(this.data),n)]); | |
| n = 1; | |
| end | |
| if length(subs) > 1 | |
| this.data{n}.data = int32(builtin('subsasgn',this.data{n}.data,subs(2:end),A-1)); | |
| else | |
| A = A(:); | |
| this.data{n}.data = int32(A - 1); | |
| this.data{n}.attributes.Dim = size(A); | |
| end | |
| %- .vertices, .normals, .cdata | |
| %-------------------------------------------------------------- | |
| otherwise | |
| if length(subs) > 1 | |
| if numel(n) == 1 | |
| this.data{n}.data = single(builtin('subsasgn',this.data{n}.data,subs(2:end),A)); | |
| this.data{n}.attributes.Dim = size(this.data{n}.data); | |
| else | |
| if numel(subs(2).subs) == 1 | |
| error('Linear indexing not supported: use multiple subscripts.'); | |
| end | |
| idx = subs(2).subs{2}; | |
| if isequal(idx,':'), idx = 1:numel(this.data); end | |
| for k=1:numel(idx) | |
| s = subs(2); | |
| s.subs{2} = 1; | |
| if numel(A) == 1 | |
| this.data{idx(k)}.data = single(builtin('subsasgn',this.data{idx(k)}.data,s,A)); | |
| else | |
| this.data{idx(k)}.data = single(builtin('subsasgn',this.data{idx(k)}.data,s,A(:,k))); | |
| end | |
| this.data{idx(k)}.attributes.Dim = size(this.data{idx(k)}.data); | |
| end | |
| end | |
| else | |
| if numel(n) == 1 | |
| if isa(A,'file_array') | |
| this.data{n}.data = A; | |
| this.data{n}.attributes.Dim = A.dim; | |
| else | |
| this.data{n}.data = single(A); | |
| this.data{n}.attributes.Dim = size(A); | |
| end | |
| else | |
| error('Syntax not implemented.'); | |
| end | |
| end | |
| end | |
| case '()' | |
| case '{}' | |
| otherwise | |
| error('This should not happen.'); | |
| end | |