Skip to content

Commit

Permalink
Zeffiro developer: A regular push adding the changes made in the curr…
Browse files Browse the repository at this point in the history
…ent local repository to the remote origin. Contents of the folders ./data/ and ./profile/ are ignored. The update necessitates creating a personal access token.
  • Loading branch information
sampsapursiainen committed Dec 16, 2024
1 parent 63d5834 commit 03010a2
Show file tree
Hide file tree
Showing 12 changed files with 407 additions and 45 deletions.
20 changes: 20 additions & 0 deletions m/zef_init_parcellation.m
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,26 @@
zef.use_parcellation = 0;
end;

if not(isfield(zef,'parcellation_roi_name'));
zef.parcellation_roi_name{1} = 'User-defined ROI';
end;

if not(isfield(zef,'parcellation_roi_center'));
zef.parcellation_roi_center = [0 0 0];
end;

if not(isfield(zef,'parcellation_roi_radius'));
zef.parcellation_roi_radius = 10;
end;

if not(isfield(zef,'parcellation_roi_color'));
zef.parcellation_roi_color = [0.56078 0.91373 1];
end;

if not(isfield(zef,'parcellation_roi_selected'));
zef.parcellation_roi_selected = 1;
end;

zef.time_series_tools_dir = fileparts(which('zef_time_series_plot.m'));
zef.time_series_tools_name_list = cell(0);
zef.time_series_tools_file_list = cell(0);
Expand Down
36 changes: 18 additions & 18 deletions m/zef_parcellation_default.m
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
%Copyright © 2018- Sampsa Pursiainen & ZI Development Team
%See: https://github.com/sampsapursiainen/zeffiro_interface
function [c_table,c_points] = zef_parcellation_default(void)
function [c_table,c_points] = zef_parcellation_default(zef)

c_table = cell(0);
c_points = cell(0);
c_ind = 0;

submesh_ind = evalin('base','zef.submesh_ind');
submesh_ind = eval('zef.submesh_ind');
if isempty(submesh_ind)
submesh_ind = ones(size(evalin('base','zef.brain_ind')));
submesh_ind = ones(size(eval('zef.brain_ind')));
end

if evalin('base','zef.parcellation_merge')
c_table = evalin('base','zef.parcellation_colortable');
c_points = evalin('base','zef.parcellation_points');
if eval('zef.parcellation_merge')
c_table = eval('zef.parcellation_colortable');
c_points = eval('zef.parcellation_points');
else
evalin('base','zef.parcellation_selected = [];');
eval('zef.parcellation_selected = [];');
end

s_interp_ind = evalin('base','zef.source_interpolation_ind{1}');
s_interp_ind = eval('zef.source_interpolation_ind{1}');

t_ind = 1 + length(c_table);

c_table{t_ind}{1} = 'SG';
c_points_aux = evalin('base','zef.source_positions');
c_points_aux = zef.source_positions';
c_points_aux = [[0:size(c_points_aux,1)-1]' c_points_aux];
c_table{t_ind}{4} = zeros(size(c_points,1),1);
c_table{t_ind}{4} = zeros(size(c_points_aux,1),1);

c_points{t_ind} = c_points_aux;

Expand All @@ -36,21 +36,21 @@
visible_vec = [];
color_cell = cell(0);
aux_brain_ind = [];
compartment_tags = evalin('base','zef.compartment_tags');
compartment_tags = eval('zef.compartment_tags');
for k = 1 : length(compartment_tags)
var_0 = ['zef.' compartment_tags{k} '_on'];
var_1 = ['zef.' compartment_tags{k} '_sigma'];
var_2 = ['zef.' compartment_tags{k} '_priority'];
var_3 = ['zef.' compartment_tags{k} '_visible'];
color_str = evalin('base',['zef.' compartment_tags{k} '_color']);
on_val = evalin('base',var_0);
color_str = eval(['zef.' compartment_tags{k} '_color']);
on_val = eval(var_0);
if on_val
i = i + 1;

c_str = compartment_tags{k};

if ismember(evalin('base',['zef.' c_str '_sources']),[1 2])
I = find(evalin('base','zef.domain_labels(zef.brain_ind)')==i);
if ismember(eval(['zef.' c_str '_sources']),[1 2])
I = find(eval('zef.domain_labels(zef.brain_ind)')==i);
submesh_ind_aux = unique(submesh_ind(I));
if isempty(submesh_ind_aux)
submesh_ind_aux = 1;
Expand All @@ -61,11 +61,11 @@
I_aux = find(submesh_ind(I)==submesh_ind_aux(ell_ind));
J = unique(s_interp_ind(I(I_aux),:));
if length(submesh_ind_aux) > 1
c_table{t_ind}{2}{c_ind,1} = [evalin('base',['zef.' c_str '_name']) ' ' num2str(submesh_ind_aux(ell_ind))];
c_table{t_ind}{2}{c_ind,1} = [eval(['zef.' c_str '_name']) ' ' num2str(submesh_ind_aux(ell_ind))];
else
c_table{t_ind}{2}{c_ind,1} = [evalin('base',['zef.' c_str '_name'])];
c_table{t_ind}{2}{c_ind,1} = [eval(['zef.' c_str '_name'])];
end
c_table{t_ind}{3}(c_ind,1:3) = evalin('base',['zef.' c_str '_color']);
c_table{t_ind}{3}(c_ind,1:3) = eval(['zef.' c_str '_color']);
c_table{t_ind}{3}(c_ind,5) = c_ind;
c_table{t_ind}{5}(c_ind,:) = [i submesh_ind_aux(ell_ind)];
c_table{t_ind}{4}(J) = c_ind;
Expand Down
10 changes: 10 additions & 0 deletions m/zef_parcellation_roi_add.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
function zef = zef_parcellation_roi_add(zef)

zef.parcellation_roi_selected = 1;
zef.parcellation_roi_center = [0 0 0; zef.parcellation_roi_center];
zef.parcellation_roi_radius = [10 zef.parcellation_roi_radius];
zef.parcellation_roi_color = [0.56078 0.91373 1; zef.parcellation_roi_color];
zef.parcellation_roi_name = [{'Used-defined ROI'} zef.parcellation_roi_name];
zef = zef_update_parcellation(zef);

end
19 changes: 19 additions & 0 deletions m/zef_parcellation_roi_delete.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
function zef = zef_parcellation_roi_delete(zef)

I = [1 : size(zef.parcellation_roi_center,1)];
I = setdiff(I,zef.parcellation_roi_selected);
if not(isempty(I))
zef.parcellation_roi_center = zef.parcellation_roi_center(I,:);
zef.parcellation_roi_color = zef.parcellation_roi_color(I,:);
zef.parcellation_roi_radius = zef.parcellation_roi_radius(I);
zef.parcellation_roi_name = zef.parcellation_roi_name(I);
else
zef.parcellation_roi_center = [0 0 0];
zef.parcellation_roi_radius = [10];
zef.parcellation_roi_color = [0.56078 0.91373 1];
zef.parcellation_roi_name = [{'Used-defined ROI'}];
end
zef.parcellation_roi_selected = 1;
zef = zef_update_parcellation(zef);

end
39 changes: 39 additions & 0 deletions m/zef_parcellation_roi_embed.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
%Copyright © 2018- Sampsa Pursiainen & ZI Development Team
%See: https://github.com/sampsapursiainen/zeffiro_interface
function [c_table,c_points] = zef_parcellation_roi_embed(zef)

c_table = cell(0);
c_points = cell(0);

if eval('zef.parcellation_merge')
c_table = eval('zef.parcellation_colortable');
c_points = eval('zef.parcellation_points');
else
eval('zef.parcellation_selected = [];');
end

t_ind = length(c_table);

t_ind = t_ind + 1;

c_table{t_ind}{1} = 'ROI';

c_points_aux = [];
c_table{t_ind}{4} = [];
start_index = 0;
for i = 1 : size(zef.parcellation_roi_center,1)
c_points_aux_0 = zef.source_positions;
c_points_aux_1 = c_points_aux_0(find(sqrt(sum((c_points_aux_0-zef.parcellation_roi_center(i,:)).^2,2))<= zef.parcellation_roi_radius(i)),:);
c_points_aux = [c_points_aux ; [[start_index:start_index + size(c_points_aux_1,1)-1]' c_points_aux_1]];
start_index = start_index + size(c_points_aux_1,1);
c_table{t_ind}{4} = [c_table{t_ind}{4} ; i*ones(size(c_points_aux_1,1),1)];
c_table{t_ind}{2}{i,1} = zef.parcellation_roi_name{i};
c_table{t_ind}{3}(i,1:3) = zef.parcellation_roi_color(i,:);
c_table{t_ind}{3}(i,5) = i;
end

c_points{t_ind} = c_points_aux;
c_table{t_ind}{3}(:,1:3) = round(255*c_table{t_ind}{3}(:,1:3));
c_table{t_ind}{4} = c_table{t_ind}{4}(:);

end
9 changes: 9 additions & 0 deletions m/zef_parcellation_roi_pick_center.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
function zef = zef_parcellation_roi_pick_center(zef)

if isempty(findobj(allchild(zef.h_axes1),'Type','DataTip'))~=1
zef.h_datatip = findobj(allchild(zef.h_axes1),'Type','DataTip');
zef.parcellation_roi_center(zef.parcellation_roi_selected,:) = [h_datatip(1).X h_datatip(1).Y h_datatip(1).Z];
zef.h_parcellation_roi_center.String = num2str(zef.parcellation_roi_center(zef.parcellation_roi_selected,:));
end

end
11 changes: 11 additions & 0 deletions m/zef_parcellation_roi_pick_color.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
function zef = zef_parcellation_roi_pick_color(zef)

color_vec = uisetcolor;
if not(isequal(color_vec,0))
color_str = num2str(color_vec);
zef.h_parcellation_roi_color.String = color_str;
zef.h_parcellation_roi_color.BackgroundColor = color_vec;
zef.parcellation_roi_color(zef.parcellation_roi_selected,:) = color_vec;
end

end
19 changes: 19 additions & 0 deletions m/zef_parcellation_roi_plot.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
function zef_parcellation_roi_plot(zef)

[s_x,s_y,s_z] = sphere(100);
h_axes1 = zef.h_axes1;
hold(h_axes1,'on');
h_parcellation_roi_sphere = findobj(h_axes1,'Tag','additional: parcellation roi');
delete(h_parcellation_roi_sphere);
for i = 1 : size(zef.parcellation_roi_center,1)
s_x_2 = zef.parcellation_roi_radius(i)*s_x + zef.parcellation_roi_center(i,1);
s_y_2 = zef.parcellation_roi_radius(i)*s_y + zef.parcellation_roi_center(i,2);
s_z_2 = zef.parcellation_roi_radius(i)*s_z + zef.parcellation_roi_center(i,3);
h_plot = surf(h_axes1,s_x_2,s_y_2,s_z_2);
set(h_plot,'facealpha',1,'edgecolor','none','facecolor',zef.parcellation_roi_color(i,:),'tag','additional: parcellation roi');
end

drawnow;
hold(h_axes1,'off');

end
Loading

0 comments on commit 03010a2

Please sign in to comment.