Page 6 of 7

Re: cwEPR App for processing, simulating, and fitting CW EPR data

Posted: Tue May 14, 2024 5:18 am
by bruin

Thanks Ernesto

Meanwhile I also managed to fix the problem with "get esfit fit1" (with 4 or more hyperfines not being imported).

The section from line 528 until "function [vary]=getvarys(~,varypars,t)" needs to be replaced by the following lines to fix the problem:

Code: Select all

    function syslst_new = getsysstructs(~,syslst,sys_strct,sys_params)
        
        syslst_new=syslst;
        for i=1:numel(sys_params)
            for j=1:numel(syslst)
                syslstf=strsplit(syslst{j},'=');
                switch syslstf{1}
                    case sys_params{i}
                        if contains(sys_params{i},'function')==1 || contains(sys_params{i},'method')==1 || contains(sys_params{i},'Nucs')==1
                            syslst_new{j}=[sys_params{i},'=',sys_strct.(sys_params{i})];
                        else
                            sys_vals{1}=sys_params{i};
                            sys_val=sys_strct.(sys_params{i});
                            if length(sys_val(1,:))==1 && length(sys_val(:,1))==1
                                sys_vals{2}=num2str(sys_val(1));
                                
                            elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==1
                                sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),']'];
                                
                            elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==2
                                sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),']'];
                                
                            elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==2
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),']'];
                                
                            elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==1
                                sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),']'];
                                
                            elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==3
                                sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),']'];
                                
                            elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==2
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),']'];
                                
                            elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==3
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),'; ',num2str(sys_val(2,1)),' ',...
                                    num2str(sys_val(2,2)),'; ',num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),']'];
                                
                            elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==3
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),']'];

%%%%
%%%% The following lines were added to enable "get esfit, fit1" for up to 10 nuclei

Code: Select all

                            elseif length(sys_val(1,:))==4 && length(sys_val(:,1))==1
                                sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',num2str(sys_val(4)),']'];

                            elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==4
                                sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),';',num2str(sys_val(4)),']']; 
                                                    
                            elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==4
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),';',...
                                    num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),']'];

                            elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==4
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),';',...
                                    num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),']'];

                           elseif length(sys_val(1,:))==5 && length(sys_val(:,1))==1
                                sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',num2str(sys_val(4)),' ',num2str(sys_val(5)),']'];

                            elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==5
                                sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),';',num2str(sys_val(4)),';',num2str(sys_val(5)),']']; 
                                                    
                            elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==5
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),';',...
                                    num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),';',...
                                    num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),']'];

                            elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==5
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),';',...
                                    num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),';',...
                                    num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),' ',num2str(sys_val(5,3)),']'];

                            elseif length(sys_val(1,:))==6 && length(sys_val(:,1))==1
                                sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',num2str(sys_val(4)),' ',num2str(sys_val(5)),' ',num2str(sys_val(6)),']'];

                            elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==6
                                sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),';',num2str(sys_val(4)),';',num2str(sys_val(5)),';',num2str(sys_val(6)),']']; 

                            elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==6
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),';',...
                                    num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),';',...
                                    num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),';',...
                                    num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),']'];

                            elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==6
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),';',...
                                    num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),';',...
                                    num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),' ',num2str(sys_val(5,3)),';',...
                                    num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),' ',num2str(sys_val(6,3)),']'];

                            elseif length(sys_val(1,:))==7 && length(sys_val(:,1))==1
                                sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',num2str(sys_val(4)),' ',num2str(sys_val(5)),' ',num2str(sys_val(6)),' ',num2str(sys_val(7)),']'];

                            elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==7
                                sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),';',num2str(sys_val(4)),';',num2str(sys_val(5)),';',num2str(sys_val(6)),';',num2str(sys_val(7)),']']; 
                             
                            elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==7
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),';',...
                                    num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),';',...
                                    num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),';',...
                                    num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),';',...
                                    num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),']'];

                            elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==7
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),';',...
                                    num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),';',...
                                    num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),' ',num2str(sys_val(5,3)),';',...
                                    num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),' ',num2str(sys_val(6,3)),';',...
                                    num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),' ',num2str(sys_val(7,3)),']'];

                            elseif length(sys_val(1,:))==8 && length(sys_val(:,1))==1
                                sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',num2str(sys_val(4)),' ',num2str(sys_val(5)),' ',num2str(sys_val(6)),' ',num2str(sys_val(7)),' ',num2str(sys_val(8)),']'];

                            elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==8
                                sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),';',num2str(sys_val(4)),';',num2str(sys_val(5)),';',num2str(sys_val(6)),';',num2str(sys_val(7)),';',num2str(sys_val(8)),']']; 
                                                    
                            elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==8
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),';',...
                                    num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),';',...
                                    num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),';',...
                                    num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),';',...
                                    num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),';',...
                                    num2str(sys_val(8,1)),' ',num2str(sys_val(8,2)),']'];

                            elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==8
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),';',...
                                    num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),';',...
                                    num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),' ',num2str(sys_val(5,3)),';',...
                                    num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),' ',num2str(sys_val(6,3)),';',...
                                    num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),' ',num2str(sys_val(7,3)),';',...
                                    num2str(sys_val(8,1)),' ',num2str(sys_val(8,2)),' ',num2str(sys_val(8,3)),']'];

                            elseif length(sys_val(1,:))==9 && length(sys_val(:,1))==1
                                sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',num2str(sys_val(4)),' ',num2str(sys_val(5)),' ',num2str(sys_val(6)),' ',num2str(sys_val(7)),' ',num2str(sys_val(8)),' ',num2str(sys_val(9)),']'];

                            elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==9
                                sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),';',num2str(sys_val(4)),';',num2str(sys_val(5)),';',num2str(sys_val(6)),';',num2str(sys_val(7)),';',num2str(sys_val(8)),';',num2str(sys_val(9)),']']; 
                                                    
                            elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==9
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),';',...
                                    num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),';',...
                                    num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),';',...
                                    num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),';',...
                                    num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),';',...
                                    num2str(sys_val(8,1)),' ',num2str(sys_val(8,2)),';',...
                                    num2str(sys_val(9,1)),' ',num2str(sys_val(9,2)),']'];

                            elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==9
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),';',...
                                    num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),';',...
                                    num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),' ',num2str(sys_val(5,3)),';',...
                                    num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),' ',num2str(sys_val(6,3)),';',...
                                    num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),' ',num2str(sys_val(7,3)),';',...
                                    num2str(sys_val(8,1)),' ',num2str(sys_val(8,2)),' ',num2str(sys_val(8,3)),';',...
                                    num2str(sys_val(9,1)),' ',num2str(sys_val(9,2)),' ',num2str(sys_val(9,3)),']'];

                            elseif length(sys_val(1,:))==10 && length(sys_val(:,1))==1
                                sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',num2str(sys_val(4)),' ',num2str(sys_val(5)),' ',num2str(sys_val(6)),' ',num2str(sys_val(7)),' ',num2str(sys_val(8)),' ',num2str(sys_val(9)),' ',num2str(sys_val(10)),']'];

                            elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==10
                                sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),';',num2str(sys_val(4)),';',num2str(sys_val(5)),';',num2str(sys_val(6)),';',num2str(sys_val(7)),';',num2str(sys_val(8)),';',num2str(sys_val(9)),';',num2str(sys_val(10)),']']; 
                                                    
                            elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==10
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),';',...
                                    num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),';',...
                                    num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),';',...
                                    num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),';',...
                                    num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),';',...
                                    num2str(sys_val(8,1)),' ',num2str(sys_val(8,2)),';',...
                                    num2str(sys_val(9,1)),' ',num2str(sys_val(9,2)),';',...
                                    num2str(sys_val(10,1)),' ',num2str(sys_val(10,2)),']'];

                            elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==10
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),';',...
                                    num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),';',...
                                    num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),' ',num2str(sys_val(5,3)),';',...
                                    num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),' ',num2str(sys_val(6,3)),';',...
                                    num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),' ',num2str(sys_val(7,3)),';',...
                                    num2str(sys_val(8,1)),' ',num2str(sys_val(8,2)),' ',num2str(sys_val(8,3)),';',...
                                    num2str(sys_val(9,1)),' ',num2str(sys_val(9,2)),' ',num2str(sys_val(9,3)),';',...
                                    num2str(sys_val(10,1)),' ',num2str(sys_val(10,2)),' ',num2str(sys_val(10,3)),']'];

%%%%
elseif length(sys_val(1,:))==5 && length(sys_val(:,1))==2
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),...
' ',num2str(sys_val(1,3)),' ',num2str(sys_val(1,4)),' ',num2str(sys_val(1,5)),...
';',num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',...
num2str(sys_val(2,3)),' ',num2str(sys_val(2,4)),' ',num2str(sys_val(2,5)),']'];


% redundant now % elseif length(sys_val(1,:))==5 && length(sys_val(:,1))==1
% sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),' ',...
% num2str(sys_val(1,4)),' ',num2str(sys_val(1,5)),']'];


Code: Select all

                            elseif length(sys_val(1,:))==6 && length(sys_val(:,1))==2
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),...
                                    ' ',num2str(sys_val(1,3)),' ',num2str(sys_val(1,4)),' ',num2str(sys_val(1,5)),...
                                    ' ',num2str(sys_val(1,6)),';',num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',...
                                    num2str(sys_val(2,3)),' ',num2str(sys_val(2,4)),' ',num2str(sys_val(2,5)),' ',num2str(sys_val(2,6)),']'];

% redundant now % elseif length(sys_val(1,:))==6 && length(sys_val(:,1))==1
% sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),' ',...
% num2str(sys_val(1,4)),' ',num2str(sys_val(1,5)),' ',num2str(sys_val(1,6)),']'];


Code: Select all

                      %      elseif length(sys_val(1,:))==9 && length(sys_val(:,1))==1
                      %          sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',...
                      %              num2str(sys_val(4)),' ',num2str(sys_val(5)),' ',num2str(sys_val(6)),' ',...
                      %              num2str(sys_val(7)),' ',num2str(sys_val(8)),' ',num2str(sys_val(9)),']'];
                                
                      %      elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==6
                      %          sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
                      %              num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
                      %              num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),']; [',...
                      %              num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),';',...
                      %              num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),' ',num2str(sys_val(5,3)),';',...
                      %              num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),' ',num2str(sys_val(6,3)),']'];
                                
                            elseif length(sys_val(1,:))==6 && length(sys_val(:,1))==3
                                sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
                                    num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
                                    num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),'], [',...
                                    num2str(sys_val(1,4)),' ',num2str(sys_val(1,5)),' ',num2str(sys_val(1,6)),';',...
                                    num2str(sys_val(2,4)),' ',num2str(sys_val(2,5)),' ',num2str(sys_val(2,6)),';',...
                                    num2str(sys_val(3,4)),' ',num2str(sys_val(3,5)),' ',num2str(sys_val(3,6)),']'];
                            end
                            syslst_fil=[sys_vals(1),'=',sys_vals(2)];
                            syslst_new{j}=[syslst_fil{1},syslst_fil{2},syslst_fil{3}];
                        end
                    otherwise
                        syslst_new{j}=syslst{j};
                end
            end
            syslst=syslst_new;
        end
        
    end
    
    function [vary]=getvarys(~,varypars,t)

Re: cwEPR App for processing, simulating, and fitting CW EPR data

Posted: Tue May 14, 2024 5:40 am
by bruin

A fully working version of the cwEPR app compatible with the stable verson of EasySpin 6.0.0 can be downloaded here:

cwEPR_corrected2.m
(279.07 KiB) Downloaded 2256 times

Copyright Information: See original download location

I do have a matlab app install file available for those interested, but those files apparently cannot be uploaded here.

This version solves the problems listed above (except perhaps for some remaining minor issues indicated by ErnestodeJesus).
Up to 10 hypferfine couplings can now be imported with " get esfit 'fit1' "

Note: Fitting with esfit only works with the fit gui enabled. Deactivating the fit gui leads to errors. I hope to find some some time to fix that later.

@Thomas: I hope you don't mind me sharing this compatibility-corrected version.


Re: cwEPR App for processing, simulating, and fitting CW EPR data

Posted: Wed May 15, 2024 5:13 am
by bruin

Small update:
It seems that the remaining problems occuring when with disabling the FitGUI are easy to solve:

  • Change line 4384
    [pars,app.data.fitspc,~]=esfit(spc(:,app.currslice), @app.custom_fittwomethods, {Sys, Exp, Opt}, {Vary}, FitOpt);
    into
    pars=esfit(spc(:,app.currslice), @app.custom_fittwomethods, {Sys, Exp, Opt}, {Vary}, FitOpt);

  • Change line 4391
    plot(app.UIAxes,xval,app.data.fitspc,'linewidth',app.slw,'color',app.sclr{1});
    into
    plot(app.UIAxes,xval,pars.fit,'linewidth',app.slw,'color',app.sclr{1});

  • Change line 4416
    [pars,app.data.fitspc(:,k),~]=esfit(spc(:,k),@app.custom_fittwomethods,{Sys,Exp,Opt}, {Vary}, FitOpt);
    into
    pars=esfit(spc(:,k),@app.custom_fittwomethods,{Sys,Exp,Opt}, {Vary}, FitOpt);

  • Change line 4423
    plot(app.UIAxes,xval,app.data.fitspc(:,k),'linewidth',app.slw,'color',app.sclr{1});...
    into
    plot(app.UIAxes,xval,pars.fit,'linewidth',app.slw,'color',app.sclr{1});...

  • Change line 4449
    [pars,fit_spc,~]=esfit(EXspc,@app.custom_fit2D,{Sys,Exp,Opt}, {Vary}, FitOpt);
    into
    pars=esfit(EXspc,@app.custom_fit2D,{Sys,Exp,Opt}, {Vary}, FitOpt);

  • Change line 4456
    app.data.fitspc=fit_spc(l:ll);
    into
    app.data.fitspc=pars.fit(l:ll);


Re: cwEPR App for processing, simulating, and fitting CW EPR data

Posted: Wed May 15, 2024 5:17 am
by bruin

Updated version, which now seems to be fully functional, also when disabling the esfit FitGUI:

cwEPR_corrected3.m
(279.2 KiB) Downloaded 2322 times

I haven't tested fitting without the FitGUI extensively, but as far as I can judge right now everything works as intended.


Re: cwEPR App for processing, simulating, and fitting CW EPR data

Posted: Wed Jul 31, 2024 8:52 pm
by ThomasMCasey

Sorry for the very long hiatus! I've made cwEPR compatible with easyspin v6 and released as v3.5.0: https://www.mathworks.com/matlabcentral ... 3292-cwepr

Big thanks to bruin and others for finding bugs and suggesting solutions. Please let me know if there is anything else that needs fixing. I tested much but certainly not all of the functionality using v6.0.4


Re: cwEPR App for processing, simulating, and fitting CW EPR data

Posted: Wed Aug 07, 2024 1:27 am
by bruin

Thanks a lot Thomas!


Re: cwEPR App for processing, simulating, and fitting CW EPR data

Posted: Mon Aug 12, 2024 6:20 am
by bruin
ThomasMCasey wrote: Wed Jul 31, 2024 8:52 pm

Sorry for the very long hiatus! I've made cwEPR compatible with easyspin v6 and released as v3.5.0: https://www.mathworks.com/matlabcentral ... 3292-cwepr

Big thanks to bruin and others for finding bugs and suggesting solutions. Please let me know if there is anything else that needs fixing. I tested much but certainly not all of the functionality using v6.0.4

Hi Thomas,
In Easyspin 6 the keyword for parallel mode in mwMode instead of Mode.
To enable this, could you please add the keyword mwMode to the Exp tab?

Lines 245-246:
ExpStr={'mwFreq=','Range=','nPoints=','ModAmp=','CenterSweep=','Temperature=',...
'mwCenterSweep=','mwRange=','Harmonic=','mwPhase=','mwMode=',...

Thanks!

With best regards,
Bas


Re: cwEPR App for processing, simulating, and fitting CW EPR data

Posted: Tue Aug 13, 2024 10:45 am
by ThomasMCasey

v3.6.0, https://www.mathworks.com/matlabcentral ... 3292-cwepr

-fixed some parameter names, added missing names
-parameter boxes now sort parameters with values to the top
-can add new parameters if they are missing
-rescaledata & FitOpt.AutoScale default to 'maxabs', FitOpt.BaseLine to 0

Thanks again @bruin!


Re: cwEPR App for processing, simulating, and fitting CW EPR data

Posted: Wed Aug 14, 2024 7:52 am
by bruin

Great!
Thanks Thomas!


Re: cwEPR App for processing, simulating, and fitting CW EPR data

Posted: Thu Oct 10, 2024 5:14 pm
by Stefan Stoll

Thanks all for working on getting this migrated from EasySpin 5 to 6! I know 5 to 6 involved a lot of breaking changes, but all of them are designed to make EasySpin more consistent, more general and more usable going forward.