Idxof.m
Allows interaction specification by spin label rather than number.
Syntax
idx=idxof(sys,label)
Arguments
sys - Spinach input structure that
includes a sys.labels field
with unique labels
label - label whose index is to be returned
Outputs
idx - the index of the spin, an integer
Examples
The following spin system specification, where chemists had provided the parameters using their own labels, would have been laborious and error-prone without the ability to refer to spins by their chemical labels.
% Magnet induction
sys.magnet=9.3946;
% Spin system
sys.isotopes={'13C','13C','13C','13C','13C','13C',...
'1H','1H','1H','1H','1H','1H','1H','1H'};
sys.labels={'C1','C2','C3','C4','C5','C6',...
'Ha','Hb','Hc','Hd1','Hd2','He1','He2','He3'};
% Chemical shifts
inter.zeeman.scalar={120.05 130.70 66.90 160.50 191.70 26.80 ...
5.40 5.32 5.97 4.74 4.74 2.48 2.48 2.48};
% Scalar couplings (DFT signs and disambiguation)
inter.coupling.scalar=cell(14,14);
inter.coupling.scalar{idxof(sys,'C1'),idxof(sys,'Ha')}= +155.90; % disambiguated
inter.coupling.scalar{idxof(sys,'C1'),idxof(sys,'Hb')}= +160.04; % disambiguated
inter.coupling.scalar{idxof(sys,'C1'),idxof(sys,'Hd1')}= +5.48;
inter.coupling.scalar{idxof(sys,'C1'),idxof(sys,'Hd2')}= +5.48;
inter.coupling.scalar{idxof(sys,'C2'),idxof(sys,'Hc')}= +159.05;
inter.coupling.scalar{idxof(sys,'C2'),idxof(sys,'Hd1')}= -4.47;
inter.coupling.scalar{idxof(sys,'C2'),idxof(sys,'Hd2')}= -4.47;
inter.coupling.scalar{idxof(sys,'C2'),idxof(sys,'Ha')}= -3.14; % disambiguated
inter.coupling.scalar{idxof(sys,'C2'),idxof(sys,'Hb')}= -0.85; % disambiguated
inter.coupling.scalar{idxof(sys,'C3'),idxof(sys,'Hd1')}=+149.15;
inter.coupling.scalar{idxof(sys,'C3'),idxof(sys,'Hd2')}=+149.15;
inter.coupling.scalar{idxof(sys,'C3'),idxof(sys,'Hc')}= -13.87;
inter.coupling.scalar{idxof(sys,'C3'),idxof(sys,'Ha')}= +4.63; % disambiguated
inter.coupling.scalar{idxof(sys,'C3'),idxof(sys,'Hb')}= +7.97; % disambiguated
inter.coupling.scalar{idxof(sys,'C4'),idxof(sys,'Hd1')}= +3.20;
inter.coupling.scalar{idxof(sys,'C4'),idxof(sys,'Hd2')}= +3.20;
inter.coupling.scalar{idxof(sys,'C4'),idxof(sys,'He1')}= +1.60;
inter.coupling.scalar{idxof(sys,'C4'),idxof(sys,'He2')}= +1.60;
inter.coupling.scalar{idxof(sys,'C4'),idxof(sys,'He3')}= +1.60;
inter.coupling.scalar{idxof(sys,'C5'),idxof(sys,'He1')}= -6.69;
inter.coupling.scalar{idxof(sys,'C5'),idxof(sys,'He2')}= -6.69;
inter.coupling.scalar{idxof(sys,'C5'),idxof(sys,'He3')}= -6.69;
inter.coupling.scalar{idxof(sys,'C6'),idxof(sys,'He1')}=+129.73;
inter.coupling.scalar{idxof(sys,'C6'),idxof(sys,'He2')}=+129.73;
inter.coupling.scalar{idxof(sys,'C6'),idxof(sys,'He3')}=+129.73;
inter.coupling.scalar{idxof(sys,'Ha'),idxof(sys,'Hb')}= -1.30;
inter.coupling.scalar{idxof(sys,'Ha'),idxof(sys,'Hc')}= +17.40;
inter.coupling.scalar{idxof(sys,'Hb'),idxof(sys,'Hc')}= +10.39;
inter.coupling.scalar{idxof(sys,'Ha'),idxof(sys,'Hd1')}= -1.50;
inter.coupling.scalar{idxof(sys,'Ha'),idxof(sys,'Hd2')}= -1.50;
inter.coupling.scalar{idxof(sys,'Hb'),idxof(sys,'Hd1')}= -1.30;
inter.coupling.scalar{idxof(sys,'Hb'),idxof(sys,'Hd2')}= -1.30;
inter.coupling.scalar{idxof(sys,'Hc'),idxof(sys,'Hd1')}= +5.95;
inter.coupling.scalar{idxof(sys,'Hc'),idxof(sys,'Hd2')}= +5.95;
Notes
Further notes on good and bad practices.
See also
Links to related functions and documentation sections.
Version 2.8, authors: Ilya KUprov