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

Programs, scripts and GUIs shared by EasySpin users
bruin
User
Posts: 30
Joined: Fri May 29, 2020 11:07 am

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

Post 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)
bruin
User
Posts: 30
Joined: Fri May 29, 2020 11:07 am

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

Post 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 604 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.

bruin
User
Posts: 30
Joined: Fri May 29, 2020 11:07 am

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

Post 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);

Last edited by bruin on Wed May 15, 2024 5:58 am, edited 1 time in total.
bruin
User
Posts: 30
Joined: Fri May 29, 2020 11:07 am

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

Post by bruin »

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

cwEPR_corrected3.m
(279.2 KiB) Downloaded 645 times

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

ThomasMCasey
User
Posts: 36
Joined: Tue May 26, 2015 1:50 pm
Contact:

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

Post 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

bruin
User
Posts: 30
Joined: Fri May 29, 2020 11:07 am

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

Post by bruin »

Thanks a lot Thomas!

bruin
User
Posts: 30
Joined: Fri May 29, 2020 11:07 am

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

Post 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

ThomasMCasey
User
Posts: 36
Joined: Tue May 26, 2015 1:50 pm
Contact:

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

Post 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!

bruin
User
Posts: 30
Joined: Fri May 29, 2020 11:07 am

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

Post by bruin »

Great!
Thanks Thomas!

Stefan Stoll
EasySpin Creator
Posts: 1106
Joined: Mon Jul 21, 2014 10:11 pm
Location: University of Washington

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

Post 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.

Post Reply