Skip to content

Commit

Permalink
automatically synchronized identical files to 348125a
Browse files Browse the repository at this point in the history
  • Loading branch information
robertoostenveld committed Apr 19, 2019
1 parent 348125a commit 0260d89
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 17 deletions.
2 changes: 1 addition & 1 deletion fileio/private/ft_checkdata.m
Expand Up @@ -1347,7 +1347,7 @@
end
% the main structure contains the functional data on the parcels
% the brainordinate sub-structure contains the original geometrical model
source = data.brainordinate;
source = ft_checkdata(data.brainordinate, 'datatype', 'source');
data = rmfield(data, 'brainordinate');
if isfield(data, 'cfg')
source.cfg = data.cfg;
Expand Down
45 changes: 29 additions & 16 deletions private/unparcellate.m
Expand Up @@ -35,18 +35,24 @@
output = ft_getopt(varargin, 'output', 'data');

if isstruct(data)
tmp = getsubfield(data, parameter);
data_parcellated = getsubfield(data, parameter);
elseif size(parameter,2)==1
tmp = data;
data_parcellated = data;
clear data;
data.label = parameter;
data = setsubfield(data, parameter, tmp);
data = setsubfield(data, parameter, data_parcellated);
elseif size(parameter,2)==2
% this contains labelcmb e.g. pairwise granger
tmp = data;
data_parcellated = data;
clear data;
data.labelcmb = parameter;
data = setsubfield(data, parameter, tmp);
data = setsubfield(data, parameter, data_parcellated);
end

if ft_datatype(parcellation, 'volume')
nelements = prod(parcellation.dim(1:3));
elseif ft_datatype(parcellation, 'source')
nelements = size(parcellation.pos,1);
end

if isfield(data, 'label')
Expand All @@ -58,12 +64,13 @@
dimtok = tokenize(dimord, '_');
dimsiz = getdimsiz(data, parameter);
% replace the number of parcels by the number of vertices in a parcel
dimsiz(strcmp(dimtok, 'chan')) = size(parcellation.pos,1);
dimsiz(strcmp(dimtok, 'chan')) = nelements;

fun = nan(dimsiz);

[parcelindx, chanindx] = match_str(parcellation.([parcelparam,'label']), data.label);


if numel(dimtok)>1 && strcmp(dimtok{1}, 'chan') && strcmp(dimtok{2}, 'chan')
% chan_chan_xxx
for i=1:numel(parcelindx)
Expand All @@ -72,16 +79,22 @@
p2 = parcellation.(parcelparam)==parcelindx(j);
c1 = chanindx(i);
c2 = chanindx(j);
fun(p1,p2,:) = repmat(tmp(c1,c2,:), [sum(p1) sum(p2) 1]);
fun(p1,p2,:) = repmat(data_parcellated(c1,c2,:), [sum(p1) sum(p2) 1]);
end
end
elseif strcmp(dimtok{1}, 'chan')
% chan_xxx
for i=1:numel(parcelindx)
p1 = parcellation.(parcelparam)==parcelindx(i);
c1 = chanindx(i);
fun(p1,:) = repmat(tmp(c1,:), [sum(p1) 1]);
end
% reorder the parcellated data according to the order in the
% parcellation
data_parcellated = data_parcellated(chanindx, :);

% % chan_xxx
% for i=1:numel(parcelindx)
% p1 = parcellation.(parcelparam)==parcelindx(i);
% c1 = chanindx(i);
% fun(p1,:) = repmat(data_parcellated(c1,:), [sum(p1) 1]);
% end

fun(parcellation.(parcelparam)>0,:) = data_parcellated(parcellation.(parcelparam)(parcellation.(parcelparam)>0),:);
end
varargout{1} = fun;

Expand Down Expand Up @@ -131,8 +144,8 @@

if strcmp(directionality, 'both')
% recurse and combine
fun1 = unparcellate(tmp,parcellation,data.labelcmb,parcelparam,'avgoverref',avgoverref,'directionality','inflow');
fun2 = unparcellate(tmp,parcellation,data.labelcmb,parcelparam,'avgoverref',avgoverref,'directionality','outflow');
fun1 = unparcellate(data_parcellated,parcellation,data.labelcmb,parcelparam,'avgoverref',avgoverref,'directionality','inflow');
fun2 = unparcellate(data_parcellated,parcellation,data.labelcmb,parcelparam,'avgoverref',avgoverref,'directionality','outflow');
fun = [fun1;fun2]; clear fun1 fun2;

else
Expand All @@ -146,7 +159,7 @@
sel2 = 1;
end

tmpdat = tmp(sel,:);
tmpdat = data_parcellated(sel,:);
tmplabel = labelcmb(sel,sel2);

% recurse into unparcellate
Expand Down

0 comments on commit 0260d89

Please sign in to comment.