%This function is called by NeuroFEA. It allows you to choose and plot Ve of any axon loaded in NeuroFEA.
function varargout = neuroFEM_ana(varargin)
global zeng zeng2
switch varargin{1}
case 'initial'
Parent_Size=get(varargin{2},'position');
FG_Size=[Parent_Size(1) Parent_Size(2)-90-40 200 90];
ScreenSize=get(0,'ScreenSize');
if FG_Size(2)<100;
FG_Size(2)=Parent_Size(2)+Parent_Size(4)+45;
end
temp=findobj('type','figure','tag','ZengAnalysis_neuroFEM_ana');
if ~isempty(temp)
set(temp,'position',FG_Size);
figure(temp)
else
%------------------------------------
FEMana.parent=varargin{2};
FEMana.figure = figure('Color',[0.8 0.8 0.8], ...
'MenuBar','none',...
'Name','NeuroFEA',...
'NumberTitle','off',...
'Position',FG_Size, ...
'tag','ZengAnalysis_neuroFEM_ana',...
'ToolBar','none');
set(FEMana.figure,'position',FG_Size)
uicontrol('Parent',FEMana.figure, ...
'Units','pixel', ...
'BackgroundColor',[0.85 0.8 0.75], ...
'callback','neuroFEM_ana(''Select Axon'')',...
'ListboxTop',0, ...
'Position',[10 45 60 25], ...
'String','Dia', ...
'Tag','Pushbutton');
FEMana.text.Axon=uicontrol('Parent',FEMana.figure, ...
'Units','pixel', ...
'BackgroundColor',[1 1 1], ...
'ListboxTop',0, ...
'Position',[75 45 80 25], ...
'String',' ', ...
'style','text');
uicontrol('Parent',FEMana.figure, ...
'Units','pixel', ...
'BackgroundColor',[0.85 0.8 0.75], ...
'callback','neuroFEM_ana(''Apply'')',...
'ListboxTop',0, ...
'Position',[75 10 60 25], ...
'String','Apply', ...
'Tag','Pushbutton');
uicontrol('Parent',FEMana.figure, ...
'Units','pixel', ...
'BackgroundColor',[0.85 0.8 0.75], ...
'callback','neuroFEM(''Apply'',''neuroFEM_ana'')',...
'ListboxTop',0, ...
'Position',[10 10 60 25], ...
'String','Reload', ...
'Tag','Pushbutton');
set(FEMana.figure,'userdata',FEMana)
end
case 'Select Axon'
FEMana=get(gcf,'userdata');
ZengFEM=get(FEMana.parent,'userdata');
if isempty(ZengFEM.Group(1).vestim)
neuroFEM('Apply','neuroFEM_ana')
ZengFEM=get(FEMana.parent,'userdata');
end
axes(ZengFEM.axes)
yz=ginput(1);
for i=1:length(ZengFEM.Group)
[ymin(1) ymin(2)]=min(abs(ZengFEM.Group(i).xyzd(:,2)-yz(1)));
[zmin(1) zmin(2)]=min(abs(ZengFEM.Group(i).xyzd(:,3)-yz(2)));
temp=find(ZengFEM.Group(i).xyzd(:,2)==ZengFEM.Group(i).xyzd(ymin(2),2) & ZengFEM.Group(i).xyzd(:,3)==ZengFEM.Group(i).xyzd(zmin(2),3));
if ~isempty(temp)
FEMana.Group_i=i;
FEMana.Axon_i=temp;
set(FEMana.text.Axon,'string',[num2str(ZengFEM.Group(i).xyzd(temp,2)) ' ' num2str(ZengFEM.Group(i).xyzd(temp,3)) ' = ' num2str(ZengFEM.Group(i).xyzd(temp,4))])
set(FEMana.figure,'userdata',FEMana)
end
end
case 'Apply'
for tempzeng=1:length(zeng2.varlist)
feval('global',zeng2.varlist{tempzeng})
end
FEMana=get(gcf,'userdata');
ZengFEM=get(FEMana.parent,'userdata');
Good_to_go = neuroFEM('Check Value',ZengFEM.figure);
if ~Good_to_go
return
end
ZengFEM=get(FEMana.parent,'userdata');
eval([zeng2.var{1}.name '.nseg=ZengFEM.Group(FEMana.Group_i).nseg(FEMana.Axon_i);'])
eval([zeng2.var{1}.name '.dia =ZengFEM.Group(FEMana.Group_i).xyzd(FEMana.Axon_i,4);'])
eval([zeng2.var{1}.name '.L =ZengFEM.Group(FEMana.Group_i).L(FEMana.Axon_i);'])
Temp=ZengFEM.multiple*ZengFEM.Group(FEMana.Group_i).vestim(1:ZengFEM.Group(FEMana.Group_i).nseg(FEMana.Axon_i),FEMana.Axon_i);
Temp2=zeros(length(Temp),length(zeng.Iexstim));
for k=1:length(zeng.Iexstim)
Temp2(:,k)=Temp*zeng.Iexstim(k).amp;
end
eval([zeng2.var{1}.name '.vestim =Temp2;'])
zexst('calculate');
end