Line data Source code
1 : /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 : Copyright (c) 2017-2023 The plumed team
3 : (see the PEOPLE file at the root of the distribution for a list of names)
4 :
5 : See http://www.plumed.org for more information.
6 :
7 : This file is part of plumed, version 2.
8 :
9 : plumed is free software: you can redistribute it and/or modify
10 : it under the terms of the GNU Lesser General Public License as published by
11 : the Free Software Foundation, either version 3 of the License, or
12 : (at your option) any later version.
13 :
14 : plumed is distributed in the hope that it will be useful,
15 : but WITHOUT ANY WARRANTY; without even the implied warranty of
16 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 : GNU Lesser General Public License for more details.
18 :
19 : You should have received a copy of the GNU Lesser General Public License
20 : along with plumed. If not, see <http://www.gnu.org/licenses/>.
21 : +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
22 : /*
23 : This class was originally written by Alexander Jussupow
24 : Arrayfire implementation (now removed) by Alexander Jussupow and CC
25 : Extension for the middleman algorithm (now removed) by Max Muehlbauer
26 : Refactoring for hySAXS Martini form factors for Nucleic Acids by Cristina Paissoni
27 : Refactoring for hySAS OneBead form factors with solvent correction by Federico Ballabio and Riccardo Capelli
28 : Resolution function by Henrique Musseli Cezar
29 : */
30 :
31 : #include "MetainferenceBase.h"
32 : #include "core/ActionRegister.h"
33 : #include "core/ActionSet.h"
34 : #include "core/GenericMolInfo.h"
35 : #include "tools/MolDataClass.h"
36 : #include "tools/Communicator.h"
37 : #include "tools/Pbc.h"
38 : #include "tools/PDB.h"
39 : #include "tools/Tools.h"
40 : #include "tools/IFile.h"
41 : #include "tools/Random.h"
42 : #include "tools/OpenMP.h"
43 :
44 : #include <map>
45 : #include <iterator>
46 : #include <iostream>
47 : #include <algorithm>
48 : #include <cctype>
49 : #include <cmath>
50 :
51 : #ifndef M_PI
52 : #define M_PI 3.14159265358979323846
53 : #endif
54 :
55 : namespace PLMD {
56 : namespace isdb {
57 :
58 : //+PLUMEDOC ISDB_COLVAR SAXS
59 : /*
60 : Calculates SAXS intensity.
61 :
62 : SAXS intensities are calculated for a set of scattering vectors using QVALUE keywords numbered from 1.
63 : Form factors can be assigned either by polynomial expansion of any order by using the PARAMETERS keywords, or
64 : automatically matched to atoms using the ATOMISTIC flag by reading a PDB file. Alternatively to the atomistic
65 : representation, two types of coarse-grained mapping are available:
66 : - MARTINI.
67 : - ONEBEAD.
68 :
69 : Whether for PARAMETERS, ATOMISTIC, and ONEBEAD the user must provide an all-atom PDB file via MOLINFO before the
70 : SAXS instruction. MARTINI requires a mapping scheme consisting of a PDB file that contains both the all-atom
71 : and MARTINI representations, and a bead position file (e.g., bead1: CENTER ATOMS=1,5,7,11,12 WEIGHTS=14,12,12,
72 : 12,16). The MARTINI_FF keyword selects the form-factor generation: MARTINI_FF=2 (default) uses the Martini 2.2
73 : form factors for proteins and nucleic acids, while MARTINI_FF=3 uses Martini 3 form factors for proteins. The
74 : Martini 3 protein form factors are described in the corresponding paper in the bibliography below.
75 :
76 : ONEBEAD scheme consists in a single-bead per amino acid residue, three-bead for nucleic acid residue (one for
77 : the phosphate group, one for the pentose sugar, one for the nucleobase), and a single bead per monosaccharide
78 : for glycans. Every bead carries the sign of its net scattering amplitude, so a bead whose contrast is negative
79 : with respect to the solvent enters the Debye sum with the correct sign. This matters for SANS close to a
80 : contrast-match point and for nuclei with a negative coherent scattering length such as Mn; in SAXS every bead
81 : has positive contrast and the sign is always positive. PLUMED creates a virtual bead on which
82 : the SAXS calculations are performed, centred on the COM of all atoms belonging to the bead. It is possible to
83 : account for the contribution of the solvation layer to the SAXS intensity by adding a correction term for the
84 : solvent accessible beads only: the form factors of the amino acids / phosphate groups / pentose sugars /
85 : nucleobases / monosaccharides with a SASA (computed via LCPO algorithm) greater than a threshold are corrected
86 : according to an electron density term. Both the surface cut-off threshold and the electron density term can be
87 : set by the user with the SASA_CUTOFF and SOLVATION_CORRECTION keywords. Moreover, SASA stride calculation can be
88 : modified using SOLVATION_STRIDE, which is set to 10 steps by default.
89 : ONEBEAD requires an additional PDB file to perform mapping conversion, which must be provided via TEMPLATE
90 : keyword. This PDB file must contain exactly the atoms selected by ATOMS, listed in the same order, with the
91 : atoms of each chain contiguous and the residues of each chain in ascending order. Any mismatch is reported as
92 : an error. Note that the ONEBEAD mapping is taken entirely from the TEMPLATE: unlike ATOMISTIC and MARTINI, it
93 : does not read residue or atom names from MOLINFO.
94 : The AMBER OL3 (RNA) and OL15 (DNA) naming is required for nucleic acids.
95 : Three additional bead types are available for DNA and RNA besides phosphate group, pentose sugar, and nucleobase:
96 : - 5'-end pentose sugar capped with an hydroxyl moiety at C5' (the residue name in the PDB must be followed by
97 : "5", e.g., DC5 or C5 for cytosine in DNA and RNA, respectively);
98 : - 5'-phosphorylated end with an additional hydroxyl moiety at P (the residue name in the PDB must be followed by
99 : "T", e.g., DCT or CT for cytosine in DNA and RNA, respectively);
100 : - 3'-end pentose sugar capped with an hydroxyl moiety at C3' (the residue name in the PDB must be followed by
101 : "3", e.g., DC3 or C3 for cytosine in DNA and RNA, respectively).
102 : An additional bead type is available for proteins:
103 : - Cysteine residue involved in disulfide bridge (the residue in the PDB must be named CYX).
104 :
105 : Experimental reference intensities can be added using the EXPINT keywords. All these values must be normalised
106 : to the SAXS intensity at q = 0. To facilitate this operation, the SCALE_EXPINT keyword can be used to provide
107 : the intensity at q = 0. Each EXPINT is divided by SCALE_EXPINT.
108 : The maximum QVALUE for ONEBEAD is set to 0.3 inverse angstroms.
109 : The solvent density, that by default is set to 0.334 electrons per cubic angstrom (bulk water), can be modified
110 : using the SOLVDENS keyword.
111 :
112 : The ABSOLUTE flag can be used in order to calculate intensities in the absolute scale. It is only available for
113 : the ATOMISTIC scheme and cannot be used with SCALE_EXPINT.
114 :
115 : [METAINFERENCE](METAINFERENCE.md) can be activated using DOSCORE and the other relevant keywords.
116 :
117 : ##Examples
118 :
119 : in the following example the SAXS intensities are calculated using single-bead per residue approximation, with a
120 : SASA threshold of 1 square nanometer and a solvation term of 0.04. Each experimental intensity is divided by
121 : 1.4002, which is the corresponding theoretical intensity value at q = 0. The form factors are selected according
122 : to the PDB file specified by TEMPLATE keyword.
123 :
124 : ```plumed
125 : MOLINFO STRUCTURE=template_AA.pdb
126 :
127 : SAXS ...
128 : LABEL=SAXS
129 : ATOMS=1-355
130 : ONEBEAD
131 : TEMPLATE=template_AA.pdb
132 : SOLVDENS=0.334
133 : SOLVATION_CORRECTION=0.04
134 : SOLVATION_STRIDE=1
135 : SASA_CUTOFF=1.0
136 : SCALE_EXPINT=1.4002
137 : QVALUE1=0.03 EXPINT1=1.0902
138 : QVALUE2=0.06 EXPINT2=0.790632
139 : QVALUE3=0.09 EXPINT3=0.453808
140 : QVALUE4=0.12 EXPINT4=0.254737
141 : QVALUE5=0.15 EXPINT5=0.154928
142 : QVALUE6=0.18 EXPINT6=0.0921503
143 : QVALUE7=0.21 EXPINT7=0.052633
144 : QVALUE8=0.24 EXPINT8=0.0276557
145 : QVALUE9=0.27 EXPINT9=0.0122775
146 : QVALUE10=0.30 EXPINT10=0.00880634
147 : ... SAXS
148 :
149 : PRINT ARG=(SAXS\.q-.*),(SAXS\.exp-.*) FILE=saxsdata STRIDE=1
150 : ```
151 :
152 : */
153 : //+ENDPLUMEDOC
154 :
155 : //+PLUMEDOC ISDB_COLVAR SANS
156 : /*
157 : Calculates SANS intensity.
158 :
159 : SANS intensities are calculated for a set of scattering vectors using QVALUE keywords numbered from 1.
160 : Form factors are automatically assigned to atoms using the ATOMISTIC flag by reading a PDB file, by reading
161 : the scattering lengths with the PARAMETERS keyword from input or with the PARAMETERSFILE keyword or, alternatively,
162 : a ONEBEAD coarse-grained implementation is available.
163 :
164 : Both for ATOMISTIC and ONEBEAD the user must provide an all-atom PDB file via MOLINFO before the SANS instruction.
165 :
166 : ONEBEAD scheme consists in a single-bead per amino acid residue, three-bead for nucleic acid residue (one for
167 : the phosphate group, one for the pentose sugar, one for the nucleobase), and a single bead per monosaccharide
168 : for glycans. Every bead carries the sign of its net scattering amplitude, so a bead whose contrast is negative
169 : with respect to the solvent enters the Debye sum with the correct sign. This matters for SANS close to a
170 : contrast-match point and for nuclei with a negative coherent scattering length such as Mn; in SAXS every bead
171 : has positive contrast and the sign is always positive. PLUMED creates a virtual bead on which
172 : the SANS calculations are performed, centred on the COM of all atoms belonging to the bead. It is possible to
173 : account for the contribution of the solvation layer to the SANS intensity by adding a correction term for the
174 : solvent accessible beads only: the form factors of the amino acids / phosphate groups / pentose sugars /
175 : nucleobases / monosaccharides with a SASA (computed via LCPO algorithm) greater than a threshold are corrected
176 : according to an electron density term. Both the surface cut-off threshold and the electron density term can be set by the user
177 : with the SASA_CUTOFF and SOLVATION_CORRECTION keywords. Moreover, SASA stride calculation can be modified using
178 : SOLVATION_STRIDE, which is set to 10 steps by default. The deuteration of the solvent-exposed residues is chosen
179 : with a probability equal to the deuterium concentration in the buffer. The deuterated residues are updated with a
180 : stride equal to SOLVATION_STRIDE. The fraction of deuterated water can be set with DEUTER_CONC, the default value
181 : is 0.
182 : ONEBEAD requires an additional PDB file to perform mapping conversion, which must be provided via TEMPLATE
183 : keyword. This PDB file must contain exactly the atoms selected by ATOMS, listed in the same order, with the
184 : atoms of each chain contiguous and the residues of each chain in ascending order. Any mismatch is reported as
185 : an error. Note that the ONEBEAD mapping is taken entirely from the TEMPLATE: unlike ATOMISTIC and MARTINI, it
186 : does not read residue or atom names from MOLINFO.
187 : The AMBER OL3 (RNA) and OL15 (DNA) naming is required for nucleic acids.
188 : Three additional bead types are available for DNA and RNA besides phosphate group, pentose sugar, and nucleobase:
189 : - 5'-end pentose sugar capped with an hydroxyl moiety at C5' (the residue name in the PDB must be followed by "5",
190 : e.g., DC5 or C5 for cytosine in DNA and RNA, respectively);
191 : - 5'-phosphorylated end with an additional hydroxyl moiety at P (the residue name in the PDB must be followed by
192 : "T", e.g., DCT or CT for cytosine in DNA and RNA, respectively);
193 : - 3'-end pentose sugar capped with an hydroxyl moiety at C3' (the residue name in the PDB must be followed by "3",
194 : e.g., DC3 or C3 for cytosine in DNA and RNA, respectively).
195 : An additional bead type is available for proteins:
196 : - Cysteine residue involved in disulfide bridge (the residue in the PDB must be named CYX).
197 :
198 : PLEASE NOTE: at the moment, we DO NOT explicitly take into account deuterated residues in the ATOMISTIC
199 : representation, but we correct the solvent contribution via the DEUTER_CONC keyword.
200 :
201 : Experimental reference intensities can be added using the EXPINT keywords. All these values must be normalised
202 : to the SANS intensity at q = 0. To facilitate this operation, the SCALE_EXPINT keyword can be used to provide
203 : the intensity at q = 0. Each EXPINT is divided by SCALE_EXPINT.
204 : The maximum QVALUE for ONEBEAD is set to 0.3 inverse angstroms.
205 : The solvent density, that by default is set to 0.334 electrons per cubic angstrom (bulk water), can be modified
206 : using the SOLVDENS keyword.
207 :
208 : The ABSOLUTE flag can be used in order to calculate intensities in the absolute scale. It is only available for
209 : the ATOMISTIC scheme and cannot be used with SCALE_EXPINT.
210 :
211 : [METAINFERENCE](METAINFERENCE.md) can be activated using DOSCORE and the other relevant keywords.
212 :
213 : ##Examples
214 :
215 : in the following example the SANS intensities are calculated at atomistic resolution. The form factors are assigned
216 : according to the PDB file specified in the MOLINFO. Each experimental intensity is divided by 1.4002, which is the
217 : corresponding theoretical intensity value at q = 0. The deuterated water fraction is set to 48%.
218 :
219 : ```plumed
220 : MOLINFO STRUCTURE=template_AA.pdb
221 :
222 : SANS ...
223 : LABEL=SANS
224 : ATOMS=1-355
225 : ATOMISTIC
226 : SCALE_EXPINT=1.4002
227 : DEUTER_CONC=0.48
228 : QVALUE1=0.03 EXPINT1=1.0902
229 : QVALUE2=0.06 EXPINT2=0.790632
230 : QVALUE3=0.09 EXPINT3=0.453808
231 : QVALUE4=0.12 EXPINT4=0.254737
232 : QVALUE5=0.15 EXPINT5=0.154928
233 : QVALUE6=0.18 EXPINT6=0.0921503
234 : QVALUE7=0.21 EXPINT7=0.052633
235 : QVALUE8=0.24 EXPINT8=0.0276557
236 : QVALUE9=0.27 EXPINT9=0.0122775
237 : QVALUE10=0.30 EXPINT10=0.00880634
238 : ... SANS
239 :
240 : PRINT ARG=(SANS\.q-.*),(SANS\.exp-.*) FILE=sansdata STRIDE=1
241 : ```
242 :
243 : */
244 : //+ENDPLUMEDOC
245 :
246 : class SAXS :
247 : public MetainferenceBase {
248 : private:
249 : // ATOMISTIC X-ray/neutron form-factor slots. The first six are the original
250 : // biological elements; the AFF_* entries are monoatomic ions whose Cromer-Mann
251 : // and neutron parameters are supplied by getIonData().
252 : enum { H, C, N, O, P, S,
253 : AFF_NA, AFF_K, AFF_CL, AFF_CA, AFF_MG, AFF_ZN, AFF_FE2, AFF_FE3, AFF_MN,
254 : NTT
255 : };
256 : // Canonical ion identifiers, shared by the ATOMISTIC and ONEBEAD routes.
257 : // getIonData() and ionTypeFromResname() are keyed on these values. The AFF_*
258 : // (atomistic) slots above and the OB_* (onebead) slots below MUST be listed in
259 : // this same order so that affSlot()/obSlot() can map an ion id to its slot.
260 : enum { ION_NA, ION_K, ION_CL, ION_CA, ION_MG, ION_ZN, ION_FE2, ION_FE3, ION_MN, NIONS };
261 : enum { ALA_BB, ARG_BB, ARG_SC1, ARG_SC2, ASN_BB, ASN_SC1, ASP_BB, ASP_SC1, CYS_BB, CYS_SC1,
262 : GLN_BB, GLN_SC1, GLU_BB, GLU_SC1, GLY_BB, HIS_BB, HIS_SC1, HIS_SC2, HIS_SC3, ILE_BB,
263 : ILE_SC1, LEU_BB, LEU_SC1, LYS_BB, LYS_SC1, LYS_SC2, MET_BB, MET_SC1, PHE_BB, PHE_SC1,
264 : PHE_SC2, PHE_SC3, PRO_BB, PRO_SC1, SER_BB, SER_SC1, THR_BB, THR_SC1, TRP_BB, TRP_SC1,
265 : TRP_SC2, TRP_SC3, TRP_SC4, TYR_BB, TYR_SC1, TYR_SC2, TYR_SC3, VAL_BB, VAL_SC1, A_BB1,
266 : A_BB2, A_BB3, A_SC1, A_SC2, A_SC3, A_SC4, A_3TE, A_5TE, A_TE3, A_TE5, C_BB1, C_BB2,
267 : C_BB3, C_SC1, C_SC2, C_SC3, C_3TE, C_5TE, C_TE3, C_TE5, G_BB1, G_BB2, G_BB3, G_SC1,
268 : G_SC2, G_SC3, G_SC4, G_3TE, G_5TE, G_TE3, G_TE5, U_BB1, U_BB2, U_BB3, U_SC1, U_SC2,
269 : U_SC3, U_3TE, U_5TE, U_TE3, U_TE5, DA_BB1, DA_BB2, DA_BB3, DA_SC1, DA_SC2, DA_SC3,
270 : DA_SC4, DA_3TE, DA_5TE, DA_TE3, DA_TE5, DC_BB1, DC_BB2, DC_BB3, DC_SC1, DC_SC2, DC_SC3,
271 : DC_3TE, DC_5TE, DC_TE3, DC_TE5, DG_BB1, DG_BB2, DG_BB3, DG_SC1, DG_SC2, DG_SC3, DG_SC4,
272 : DG_3TE, DG_5TE, DG_TE3, DG_TE5, DT_BB1, DT_BB2, DT_BB3, DT_SC1, DT_SC2, DT_SC3, DT_3TE,
273 : DT_5TE, DT_TE3, DT_TE5,
274 : // Extra protein beads present only in the Martini 3 topology (MARTINI_FF=3)
275 : ALA_SC1, TRP_SC5, TYR_SC4,
276 : NMARTINI
277 : };
278 : enum { TRP,
279 : TYR,
280 : PHE,
281 : HIS,
282 : HIP,
283 : ARG,
284 : LYS,
285 : CYS,
286 : CYX,
287 : ASP,
288 : GLU,
289 : ILE,
290 : LEU,
291 : MET,
292 : ASN,
293 : PRO,
294 : GLN,
295 : SER,
296 : THR,
297 : VAL,
298 : ALA,
299 : GLY,
300 : BB_PO2,
301 : BB_PO3,
302 : BB_DNA,
303 : BB_DNA_5,
304 : BB_DNA_3,
305 : BB_RNA,
306 : BB_RNA_5,
307 : BB_RNA_3,
308 : BASE_A,
309 : BASE_C,
310 : BASE_T,
311 : BASE_G,
312 : BASE_U,
313 : // Monosaccharide bead types (one bead per residue, exactly as for the
314 : // amino acids). GLYC_NAG/GLYC_NGA are the N-acetylated hexosamines
315 : // (GlcNAc/GalNAc); see getOnebeadparam() for the provenance of the
316 : // corresponding 21-parameter sets.
317 : GLYC_FUC, GLYC_MAN, GLYC_BMA, GLYC_GAL, GLYC_GLC, GLYC_NAG, GLYC_NGA, GLYC_SIA,
318 : // Monoatomic-ion bead types (one atom per bead). Their vac/solv/mix terms are
319 : // filled analytically by getOnebeadIonparam_*(); see ionTypeFromResname() for
320 : // residue-name detection. This list MUST stay in the same order as ION_*/AFF_*.
321 : OB_NA, OB_K, OB_CL, OB_CA, OB_MG, OB_ZN, OB_FE2, OB_FE3, OB_MN,
322 : NONEBEAD
323 : };
324 : struct SplineCoeffs {
325 : double a;
326 : double b;
327 : double c;
328 : double d;
329 : double x;
330 : };
331 : bool saxs;
332 : bool absolute;
333 : bool pbc;
334 : bool serial;
335 : bool onebead;
336 : bool resolution;
337 : bool chi2;
338 : bool chi2ensemble;
339 : int chi2ensemble_replicas;
340 : bool isFirstStep;
341 : unsigned nres;
342 : std::vector<unsigned> atoi;
343 : std::vector<unsigned> atoms_per_bead;
344 : std::vector<double> atoms_masses;
345 : std::vector<double> q_list;
346 : std::vector<double> expint;
347 : std::vector<double> experr;
348 : std::vector<double> FF_rank;
349 : std::vector<std::vector<double> > FF_value_vacuum;
350 : std::vector<std::vector<double> > FF_value_solv;
351 : std::vector<std::vector<double> > FF_value_mixed;
352 : std::vector<std::vector<double> > FF_value;
353 : // SANS:
354 : std::vector<std::vector<double> > FF_value_vacuum_H;
355 : std::vector<std::vector<double> > FF_value_solv_H;
356 : std::vector<std::vector<double> > FF_value_mixed_H;
357 : std::vector<std::vector<double> > FF_value_vacuum_D;
358 : std::vector<std::vector<double> > FF_value_mixed_D;
359 :
360 : std::vector<std::vector<double> > LCPOparam;
361 : std::vector<unsigned> residue_atom;
362 : // ONEBEAD glycans. glyc_type[i] is the bead type (GLYC_*) of atom i, or -1 when
363 : // atom i does not belong to a monosaccharide. glyc_bridge[i] flags the glycan
364 : // oxygens that carry a glycosidic bond in the TEMPLATE, so that the LCPO SASA
365 : // treats them as ethers rather than as free hydroxyls. Both are filled by
366 : // getOnebeadMapping() and are indexed exactly like LCPOparam.
367 : std::vector<int> glyc_type;
368 : std::vector<bool> glyc_bridge;
369 :
370 : double rho, rho_corr, sasa_cutoff;
371 : double deuter_conc;
372 : unsigned solv_stride;
373 : std::vector<double> Iq0_vac;
374 : std::vector<double> Iq0_solv;
375 : std::vector<double> Iq0_mix;
376 : double Iq0;
377 : // Sign of each bead's net scattering amplitude, +1 or -1.
378 : //
379 : // The single-bead approximation stores B(q) = F_vac + rho^2 F_solv - rho F_mix,
380 : // which is the orientational average of |sum_i A_i exp(i q r_i)|^2 over the
381 : // atoms of the bead with A_i = b_i - rho v_i. Taking sqrt(B) therefore gives
382 : // the MAGNITUDE of the bead amplitude and discards its sign. In the Debye sum
383 : // I(q) = sum_j sum_l F_j F_l sinc(q R_jl) the sign matters as soon as two
384 : // beads have different signs: a uniform flip cancels, a mixed one does not.
385 : //
386 : // This is reachable in SANS near a contrast-match point, and for a nucleus
387 : // with a negative coherent scattering length such as Mn-55. In SAXS every
388 : // bead has positive contrast against water, so the sign is always +1 and the
389 : // result is unchanged.
390 : //
391 : // Recomputed together with Iq0 because it depends on the solvent density, on
392 : // the solvation-layer correction, and in SANS on which residues are deuterated.
393 : std::vector<double> bead_sign;
394 : // Sign of A = sum_b - rho sum_v for one bead, from its q=0 terms.
395 : // At q=0: F_solv(0) = sum_v^2 and F_mix(0) = 2 sum_b sum_v, with sum_v > 0.
396 : // Hence 2 sum_v A = mix - 2 rho solv, and the two have the same sign.
397 : static double beadSign(double iq0_solv, double iq0_mix, double rho) {
398 5118 : return (iq0_mix - 2.*rho*iq0_solv < 0.) ? -1. : 1.;
399 : }
400 :
401 : // SANS:
402 : std::vector<double> Iq0_vac_H;
403 : std::vector<double> Iq0_solv_H;
404 : std::vector<double> Iq0_mix_H;
405 : std::vector<double> Iq0_vac_D;
406 : std::vector<double> Iq0_mix_D;
407 : unsigned int Nj;
408 : std::vector<std::vector<double> > qj_list;
409 : std::vector<std::vector<double> > Rij;
410 : std::vector<double> sigma_res;
411 : // the smearing with the resolution function is linear: smeared I(q_k) = sum_l smear_[k*numq+l] I(q_l)
412 : std::vector<double> smear_;
413 : // q values as a uniform grid q0+k*dq plus small deviations (see sincos_q)
414 : double qref0_;
415 : double qref_dq_;
416 : double qref_maxeps_;
417 : std::vector<double> qref_eps_;
418 : // random numbers for the deuteration of the solvent exposed residues (SANS)
419 : Random random_deut_;
420 :
421 : // Chebyshev polynomial coefficients for i0e(x) used for resolution function
422 : // values taken from cephes library
423 : const std::vector<double> A = {
424 : -4.41534164647933937950E-18,
425 : 3.33079451882223809783E-17,
426 : -2.43127984654795469359E-16,
427 : 1.71539128555513303061E-15,
428 : -1.16853328779934516808E-14,
429 : 7.67618549860493561688E-14,
430 : -4.85644678311192946090E-13,
431 : 2.95505266312963983461E-12,
432 : -1.72682629144155570723E-11,
433 : 9.67580903537323691224E-11,
434 : -5.18979560163526290666E-10,
435 : 2.65982372468238665035E-9,
436 : -1.30002500998624804212E-8,
437 : 6.04699502254191894932E-8,
438 : -2.67079385394061173391E-7,
439 : 1.11738753912010371815E-6,
440 : -4.41673835845875056359E-6,
441 : 1.64484480707288970893E-5,
442 : -5.75419501008210370398E-5,
443 : 1.88502885095841655729E-4,
444 : -5.76375574538582365885E-4,
445 : 1.63947561694133579842E-3,
446 : -4.32430999505057594430E-3,
447 : 1.05464603945949983183E-2,
448 : -2.37374148058994688156E-2,
449 : 4.93052842396707084878E-2,
450 : -9.49010970480476444210E-2,
451 : 1.71620901522208775349E-1,
452 : -3.04682672343198398683E-1,
453 : 6.76795274409476084995E-1
454 : };
455 : const std::vector<double> B = {
456 : -7.23318048787475395456E-18,
457 : -4.83050448594418207126E-18,
458 : 4.46562142029675999901E-17,
459 : 3.46122286769746109310E-17,
460 : -2.82762398051658348494E-16,
461 : -3.42548561967721913462E-16,
462 : 1.77256013305652638360E-15,
463 : 3.81168066935262242075E-15,
464 : -9.55484669882830764870E-15,
465 : -4.15056934728722208663E-14,
466 : 1.54008621752140982691E-14,
467 : 3.85277838274214270114E-13,
468 : 7.18012445138366623367E-13,
469 : -1.79417853150680611778E-12,
470 : -1.32158118404477131188E-11,
471 : -3.14991652796324136454E-11,
472 : 1.18891471078464383424E-11,
473 : 4.94060238822496958910E-10,
474 : 3.39623202570838634515E-9,
475 : 2.26666899049817806459E-8,
476 : 2.04891858946906374183E-7,
477 : 2.89137052083475648297E-6,
478 : 6.88975834691682398426E-5,
479 : 3.36911647825569408990E-3,
480 : 8.04490411014108831608E-1
481 : };
482 :
483 : void calculate_cpu(std::vector<Vector> &pos, std::vector<Vector> &deriv, const bool reduce_deriv);
484 : void sincos_q(const double r, double *s, double *c) const;
485 : void getMartiniFFparam(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > ¶meter);
486 : void getMartiniFFparam_v3(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > ¶meter);
487 : void getOnebeadparam(const PDB &pdb, const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > ¶meter_vac, std::vector<std::vector<long double> > ¶meter_mix, std::vector<std::vector<long double> > ¶meter_solv, const std::vector<unsigned> & residue_atoms);
488 : unsigned getOnebeadMapping(const PDB &pdb, const std::vector<AtomNumber> &atoms);
489 : double calculateAFF(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double rho);
490 : std::map<std::string, std::vector<double> > setupLCPOparam();
491 : void readLCPOparam(const std::vector<std::vector<std::string> > &AtomResidueName, unsigned natoms);
492 : void calcNlist(std::vector<std::vector<int> > &Nlist);
493 : void sasa_calculate(std::vector<bool> &solv_res);
494 : // SANS:
495 : void getOnebeadparam_sansH(const PDB &pdb, const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > ¶meter_vac_H, std::vector<std::vector<long double> > ¶meter_mix_H, std::vector<std::vector<long double> > ¶meter_solv_H);
496 : void getOnebeadparam_sansD(const PDB &pdb, const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > ¶meter_vac_D, std::vector<std::vector<long double> > ¶meter_mix_D);
497 : double calculateAFFsans(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double deuter_conc);
498 : // Ions (shared by ATOMISTIC and ONEBEAD).
499 : // getIonData returns, for a canonical ION_* id: Cromer-Mann a[4]/b[4]/c (X-ray),
500 : // the displaced-solvent volume vol (A^3), the bound coherent neutron scattering
501 : // length neutron_b (10^-12 cm), and the atomic mass (g/mol).
502 : void getIonData(unsigned ion, std::vector<double> &cm_a, std::vector<double> &cm_b, double &cm_c, double &vol, double &neutron_b, double &mass) const;
503 : // Returns the canonical ION_* id for a residue name, or -1 if it is not a known ion.
504 : int ionTypeFromResname(const std::string &resname) const;
505 : // True for monosaccharides that are recognised but not parameterised.
506 : bool isUnsupportedGlycan(const std::string &resname) const;
507 : // Canonical name of a residue whose name encodes a glycosylation site.
508 : std::string onebeadResidueAlias(const std::string &resname) const;
509 : // True when the residue is represented by a single bead (amino acids, incl. CYX).
510 : bool isOnebeadProteinResidue(const PDB &pdb, const std::string &resname) const;
511 : // Returns the GLYC_* bead type for a monosaccharide residue name, or -1 if the
512 : // residue is not a supported glycan. hasN must be true when the residue carries
513 : // an amide nitrogen: that is what distinguishes GlcNAc from Glc and GalNAc from
514 : // Gal when the input file names an N-acetylhexosamine after its parent hexose.
515 : int glycanTypeFromResname(const std::string &resname, bool hasN) const;
516 : // Map a canonical ion id to its atomistic / onebead form-factor slot.
517 : inline unsigned affSlot(unsigned ion) const {
518 108 : return AFF_NA + ion;
519 : }
520 : inline unsigned obSlot(unsigned ion) const {
521 212 : return OB_NA + ion;
522 : }
523 : // Fill the onebead vac/solv/mix terms (and q=0 Iq0 values) for every ion bead.
524 : void getOnebeadIonparam_saxs(std::vector<std::vector<long double> > &FF_tmp_vac, std::vector<std::vector<long double> > &FF_tmp_mix, std::vector<std::vector<long double> > &FF_tmp_solv, std::vector<double> &iq0_vac, std::vector<double> &iq0_mix, std::vector<double> &iq0_solv) const;
525 : void getOnebeadIonparam_sans(std::vector<std::vector<long double> > &FF_tmp_vac_H, std::vector<std::vector<long double> > &FF_tmp_mix_H, std::vector<std::vector<long double> > &FF_tmp_solv_H, std::vector<std::vector<long double> > &FF_tmp_vac_D, std::vector<std::vector<long double> > &FF_tmp_mix_D, std::vector<double> &iq0_vac_H, std::vector<double> &iq0_mix_H, std::vector<double> &iq0_solv_H, std::vector<double> &iq0_vac_D, std::vector<double> &iq0_mix_D) const;
526 : void resolution_function();
527 : std::vector<SplineCoeffs> spline_coeffs(std::vector<double> &x, std::vector<double> &y);
528 : inline double interpolation(std::vector<SplineCoeffs> &coeffs, double x);
529 : inline double i0e(double x);
530 : double chbevl(double x, const std::vector<double> &coeffs);
531 :
532 : public:
533 : static void registerKeywords( Keywords& keys );
534 : explicit SAXS(const ActionOptions&);
535 : void calculate() override;
536 : };
537 :
538 : PLUMED_REGISTER_ACTION(SAXS,"SAXS")
539 : PLUMED_REGISTER_ACTION(SAXS,"SANS")
540 :
541 71 : void SAXS::registerKeywords(Keywords& keys) {
542 71 : MetainferenceBase::registerKeywords(keys);
543 71 : keys.addFlag("NOPBC",false,"Ignore the periodic boundary conditions when calculating distances");
544 71 : keys.addFlag("SERIAL",false,"Perform the calculation in serial - for debug purpose");
545 71 : keys.add("compulsory","DEVICEID","-1","Identifier of the GPU to be used");
546 71 : keys.addFlag("ABSOLUTE",false,"Absolute intensity: the intensities for each q-value are not normalised for the intensity at q=0.");
547 71 : keys.addFlag("ATOMISTIC",false,"Calculate SAXS for an atomistic model");
548 71 : keys.addFlag("MARTINI",false,"Calculate SAXS for a Martini model");
549 71 : keys.add("compulsory","MARTINI_FF","2","Martini form-factor generation to use with MARTINI: 2 (default, Martini 2.2 proteins and nucleic acids) or 3 (Martini 3 proteins)");
550 71 : keys.addFlag("ONEBEAD",false,"calculate SAXS for a single bead model");
551 71 : keys.add("compulsory","TEMPLATE","template.pdb","A PDB file is required for ONEBEAD mapping");
552 71 : keys.add("atoms","ATOMS","The atoms to be included in the calculation, e.g. the whole protein");
553 71 : keys.add("numbered","QVALUE","Selected scattering lengths in inverse angstroms are given as QVALUE1, QVALUE2, ...");
554 71 : keys.add("numbered","PARAMETERS","Used parameter Keywords like PARAMETERS1, PARAMETERS2. These are used to calculate the form factor for the \\f$i\\f$th atom/bead");
555 71 : keys.add("optional","PARAMETERSFILE","Read the PARAMETERS from a file");
556 71 : keys.add("compulsory","DEUTER_CONC","0.","Fraction of deuterated solvent");
557 71 : keys.add("compulsory","SOLVDENS","0.334","Density of the solvent to be used for the correction of atomistic form factors");
558 71 : keys.add("compulsory","SOLVATION_CORRECTION","0.0","Solvation layer electron density correction (ONEBEAD only)");
559 71 : keys.add("compulsory","SASA_CUTOFF","1.0","SASA value to consider a residue as exposed to the solvent (ONEBEAD only)");
560 71 : keys.add("numbered","EXPINT","Add an experimental value for each q value");
561 71 : keys.add("numbered","EXPERR","Add an experimental standard uncertainty for each q value. Values are divided by SCALE_EXPINT, exactly as EXPINT");
562 71 : keys.addFlag("CHI2",false,"Calculate the scale-optimized chi-squared between calculated and experimental intensities using EXPERR");
563 71 : keys.addFlag("CHI2ENSEMBLE",false,"Calculate chi-squared from arithmetic replica-averaged intensities for monitoring");
564 71 : keys.add("numbered","SIGMARES","Standard deviation of the resolution function for each q value, in inverse angstroms");
565 71 : keys.add("compulsory","N","10","Number of points in the resolution function integral");
566 71 : keys.add("compulsory","SOLVATION_STRIDE","10","Number of steps between every new residues solvation estimation via LCPO (ONEBEAD only)");
567 71 : keys.add("compulsory","SCALE_EXPINT","1.0","Scaling value for experimental data normalization");
568 142 : keys.addOutputComponent("q","default","scalar","The # SAXS of q");
569 142 : keys.addOutputComponent("exp","EXPINT","scalar","The # experimental intensity");
570 142 : keys.addOutputComponent("chi2","CHI2","scalar","Scale-optimized chi-squared against EXPINT using EXPERR");
571 142 : keys.addOutputComponent("chi2red","CHI2","scalar","Reduced scale-optimized chi-squared with N-1 degrees of freedom");
572 142 : keys.addOutputComponent("chi2scale","CHI2","scalar","Best-fit multiplicative scale applied to the calculated intensities");
573 142 : keys.addOutputComponent("chi2ensemble","CHI2ENSEMBLE","scalar","Chi-squared of replica-averaged intensities");
574 142 : keys.addOutputComponent("chi2ensemblered","CHI2ENSEMBLE","scalar","Reduced chi-squared of replica-averaged intensities");
575 142 : keys.addOutputComponent("chi2ensemblescale","CHI2ENSEMBLE","scalar","Best-fit scale for replica-averaged intensities");
576 71 : }
577 :
578 63 : SAXS::SAXS(const ActionOptions&ao):
579 : PLUMED_METAINF_INIT(ao),
580 63 : saxs(true),
581 63 : absolute(false),
582 63 : pbc(true),
583 63 : serial(false),
584 63 : onebead(false),
585 63 : chi2(false),
586 63 : chi2ensemble(false),
587 63 : chi2ensemble_replicas(1),
588 63 : isFirstStep(true) {
589 63 : if( getName().find("SAXS")!=std::string::npos) {
590 42 : saxs=true;
591 21 : } else if( getName().find("SANS")!=std::string::npos) {
592 21 : saxs=false;
593 : }
594 :
595 63 : std::vector<AtomNumber> atoms;
596 126 : parseAtomList("ATOMS",atoms);
597 63 : unsigned size = atoms.size();
598 63 : if(size == 0) {
599 0 : error("SAXS/SANS requires at least one atom");
600 : }
601 :
602 63 : parseFlag("SERIAL",serial);
603 :
604 63 : bool nopbc=!pbc;
605 63 : parseFlag("NOPBC",nopbc);
606 63 : pbc=!nopbc;
607 63 : if(pbc) {
608 24 : log.printf(" using periodic boundary conditions\n");
609 : } else {
610 39 : log.printf(" without periodic boundary conditions\n");
611 : }
612 :
613 :
614 :
615 63 : bool atomistic=false;
616 63 : parseFlag("ATOMISTIC",atomistic);
617 63 : if(atomistic) {
618 12 : log.printf(" using ATOMISTIC form factors\n");
619 : }
620 63 : bool martini=false;
621 63 : parseFlag("MARTINI",martini);
622 63 : unsigned martini_ff=2;
623 63 : parse("MARTINI_FF",martini_ff);
624 63 : if(martini) {
625 16 : if(martini_ff!=2&&martini_ff!=3) {
626 0 : error("MARTINI_FF must be 2 (Martini 2.2) or 3 (Martini 3)");
627 : }
628 16 : log.printf(" using MARTINI %u form factors\n",martini_ff);
629 47 : } else if(martini_ff!=2) {
630 0 : error("MARTINI_FF can only be used together with MARTINI");
631 : }
632 63 : onebead=false;
633 63 : parseFlag("ONEBEAD",onebead);
634 63 : if(onebead) {
635 23 : log.printf(" using ONEBEAD form factors\n");
636 : }
637 : bool fromfile=false;
638 : std::string parametersfile;
639 126 : parse("PARAMETERSFILE",parametersfile);
640 63 : if (parametersfile.length() != 0) {
641 : fromfile=true;
642 : }
643 : if(fromfile) {
644 4 : log.printf(" will read form factors from file\n");
645 : }
646 63 : parseFlag("ABSOLUTE",absolute);
647 :
648 63 : if(martini&&atomistic) {
649 0 : error("You cannot use MARTINI and ATOMISTIC at the same time");
650 : }
651 63 : if(martini&&onebead) {
652 0 : error("You cannot use MARTINI and ONEBEAD at the same time");
653 : }
654 63 : if(onebead&&atomistic) {
655 0 : error("You cannot use ONEBEAD and ATOMISTIC at the same time");
656 : }
657 63 : if((martini)&&(!saxs)) {
658 0 : error("MARTINI cannot be used with SANS");
659 : }
660 63 : if((fromfile)&&((atomistic)||(martini)||(onebead))) {
661 0 : error("You cannot read parameters from file and use ATOMISTIC/MARTINI/ONEBEAD");
662 : }
663 :
664 : unsigned ntarget=0;
665 : for(unsigned i=0;; ++i) {
666 : double t_list;
667 1378 : if( !parseNumbered( "QVALUE", i+1, t_list) ) {
668 : break;
669 : }
670 626 : if(t_list<=0.) {
671 0 : error("QVALUE cannot be less or equal to zero!\n");
672 : }
673 626 : if(onebead&&t_list>0.3) {
674 0 : error("ONEBEAD mapping QVALUE must be smaller or equal to 0.3");
675 : }
676 626 : q_list.push_back(t_list);
677 626 : ntarget++;
678 626 : }
679 : const unsigned numq = ntarget;
680 63 : if(numq==0) {
681 0 : error("At least one QVALUE must be specified");
682 : }
683 :
684 689 : for(unsigned i=0; i<numq; ++i) {
685 626 : if(q_list[i]==0.) {
686 0 : error("it is not possible to set q=0\n");
687 : }
688 626 : if(i>0&&q_list[i]<q_list[i-1]) {
689 0 : error("QVALUE must be in ascending order");
690 : }
691 626 : log.printf(" my q: %lf \n",q_list[i]);
692 : }
693 :
694 63 : rho = 0.334;
695 63 : parse("SOLVDENS", rho);
696 63 : log.printf(" Solvent density: %lf\n", rho);
697 :
698 63 : double scale_expint=1.;
699 63 : parse("SCALE_EXPINT",scale_expint);
700 63 : if(scale_expint<=0.) {
701 0 : error("SCALE_EXPINT must be greater than zero");
702 : }
703 63 : parseFlag("CHI2",chi2);
704 63 : parseFlag("CHI2ENSEMBLE",chi2ensemble);
705 63 : if(chi2ensemble && !chi2) {
706 0 : error("CHI2ENSEMBLE requires CHI2");
707 : }
708 63 : if(chi2ensemble) {
709 0 : chi2ensemble_replicas = comm.Get_rank()==0 ? multi_sim_comm.Get_size() : 0;
710 0 : comm.Sum(&chi2ensemble_replicas,1);
711 : }
712 :
713 63 : if((!atomistic&&absolute)||(absolute&&scale_expint!=1)) {
714 0 : error("ABSOLUTE can be used only combined with ATOMISTIC without SCALE_EXPINT");
715 : }
716 63 : if(atomistic) {
717 24 : log.printf(" Scale for intensities: %s\n", absolute ? "absolute" : "normalised");
718 : }
719 :
720 63 : double correction = 0.00;
721 63 : parse("SOLVATION_CORRECTION", correction);
722 63 : rho_corr=rho-correction;
723 63 : if(onebead) {
724 23 : log.printf(" Solvation density contribution: %lf\n", correction);
725 : }
726 63 : if((atomistic||martini||fromfile)&&(rho_corr!=rho)) {
727 0 : log.printf(" Solvation density contribution is taken into account in ONEBEAD only\n");
728 : }
729 :
730 63 : solv_stride = 10;
731 63 : parse("SOLVATION_STRIDE", solv_stride);
732 63 : if(solv_stride < 1.) {
733 0 : error("SOLVATION_STRIDE must be greater than 0");
734 : }
735 63 : if(onebead&&(rho_corr!=rho)) {
736 15 : log.printf(" SASA calculation stride: %u\n", solv_stride);
737 : }
738 :
739 63 : sasa_cutoff = 1.0;
740 63 : parse("SASA_CUTOFF", sasa_cutoff);
741 63 : if(sasa_cutoff <= 0.) {
742 0 : error("SASA_CUTOFF must be greater than 0");
743 : }
744 :
745 63 : deuter_conc = 0.;
746 63 : parse("DEUTER_CONC", deuter_conc);
747 63 : if ((deuter_conc)&&(fromfile)) {
748 0 : error("DEUTER_CONC cannot be used with PARAMETERSFILE");
749 : }
750 63 : if(deuter_conc < 0. || deuter_conc > 1.) {
751 0 : error("DEUTER_CONC must be in 0-1 range");
752 : }
753 63 : if ((atomistic||onebead)&&(!saxs)) {
754 15 : log.printf(" Solvent deuterium fraction: %lf/1.000000\n", deuter_conc);
755 : }
756 :
757 63 : PDB pdb;
758 63 : if(onebead) {
759 : std::string template_name;
760 23 : parse("TEMPLATE",template_name);
761 23 : log.printf(" Template for ONEBEAD mapping conversion: %s\n", template_name.c_str());
762 23 : if( !pdb.read(template_name,usingNaturalUnits(),1.) ) {
763 0 : plumed_merror("missing input file " + template_name);
764 : }
765 : }
766 :
767 : // preliminary mapping for onebead representation
768 63 : if(onebead) {
769 23 : LCPOparam.resize(size);
770 23 : nres = getOnebeadMapping(pdb, atoms);
771 23 : bead_sign.assign(nres, 1.);
772 23 : if(saxs) {
773 12 : Iq0_vac.resize(nres);
774 12 : Iq0_solv.resize(nres);
775 12 : Iq0_mix.resize(nres);
776 : } else { // SANS
777 11 : Iq0_vac_H.resize(nres);
778 11 : Iq0_solv_H.resize(nres);
779 11 : Iq0_mix_H.resize(nres);
780 11 : Iq0_vac_D.resize(nres);
781 11 : Iq0_mix_D.resize(nres);
782 : }
783 23 : atoi.resize(nres);
784 : } else {
785 40 : atoi.resize(size);
786 : }
787 :
788 63 : Iq0=0;
789 63 : std::vector<std::vector<long double> > FF_tmp;
790 63 : std::vector<std::vector<long double> > FF_tmp_vac;
791 63 : std::vector<std::vector<long double> > FF_tmp_mix;
792 63 : std::vector<std::vector<long double> > FF_tmp_solv;
793 : // SANS
794 63 : std::vector<std::vector<long double> > FF_tmp_vac_H;
795 63 : std::vector<std::vector<long double> > FF_tmp_mix_H;
796 63 : std::vector<std::vector<long double> > FF_tmp_solv_H;
797 63 : std::vector<std::vector<long double> > FF_tmp_vac_D;
798 63 : std::vector<std::vector<long double> > FF_tmp_mix_D;
799 63 : std::vector<std::vector<long double> > parameter_H;
800 63 : std::vector<std::vector<long double> > parameter_D;
801 :
802 63 : if(!atomistic&&!martini&&!onebead&&!fromfile) { // read PARAMETERS from PLUMED file
803 8 : if (saxs) {
804 : // read in parameter std::vector
805 6 : std::vector<std::vector<long double> > parameter;
806 6 : parameter.resize(size);
807 : ntarget=0;
808 41 : for(unsigned i=0; i<size; ++i) {
809 70 : if( !parseNumberedVector( "PARAMETERS", i+1, parameter[i]) ) {
810 : break;
811 : }
812 35 : ntarget++;
813 : }
814 6 : if( ntarget!=size ) {
815 0 : error("found wrong number of parameter std::vectors");
816 : }
817 6 : FF_tmp.resize(numq,std::vector<long double>(size));
818 41 : for(unsigned i=0; i<size; ++i) {
819 35 : atoi[i]=i;
820 140 : for(unsigned k=0; k<numq; ++k) {
821 498 : for(unsigned j=0; j<parameter[i].size(); ++j) {
822 393 : FF_tmp[k][i]+= parameter[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
823 : }
824 : }
825 : }
826 41 : for(unsigned i=0; i<size; ++i) {
827 35 : Iq0+=parameter[i][0];
828 : }
829 6 : Iq0 *= Iq0;
830 6 : } else { // SANS
831 2 : std::vector<long double> parameter;
832 2 : parameter.resize(size);
833 : ntarget=0;
834 5 : for(unsigned i=0; i<size; ++i) {
835 6 : if( !parseNumbered( "PARAMETERS", i+1, parameter[i]) ) {
836 : break;
837 : }
838 3 : ntarget++;
839 : }
840 2 : if( ntarget!=size ) {
841 0 : error("found wrong number of parameter std::vectors");
842 : }
843 2 : FF_tmp.resize(numq,std::vector<long double>(size));
844 5 : for(unsigned i=0; i<size; ++i) {
845 3 : atoi[i]=i;
846 12 : for(unsigned k=0; k<numq; ++k) {
847 9 : FF_tmp[k][i]+= parameter[i];
848 : }
849 : }
850 5 : for(unsigned i=0; i<size; ++i) {
851 3 : Iq0+=parameter[i];
852 : }
853 2 : Iq0 *= Iq0;
854 : }
855 51 : } else if (fromfile) { // read PARAMETERS from user-provided file
856 4 : log.printf(" Reading PARAMETERS from file: %s\n", parametersfile.c_str());
857 4 : if (saxs) {
858 0 : FF_tmp.resize(numq,std::vector<long double>(size));
859 0 : std::vector<std::vector<long double> > parameter;
860 0 : parameter.resize(size);
861 :
862 0 : IFile ifile;
863 0 : ifile.open(parametersfile);
864 : std::string line;
865 :
866 : ntarget=0;
867 0 : while(ifile.getline(line)) {
868 0 : Tools::ltrim(line);
869 0 : Tools::trimComments(line);
870 0 : if (line.empty()) {
871 0 : continue;
872 : }
873 0 : if (ntarget >= size) {
874 0 : error("PARAMETERSFILE has more PARAMETERS than there are scattering centers");
875 : }
876 : std::string num;
877 0 : Tools::convert(ntarget+1,num);
878 0 : std::vector<std::string> lineread{line};
879 0 : if (!Tools::parseVector(lineread, "PARAMETERS"+num, parameter[ntarget], -1)) {
880 0 : error("Missing PARAMETERS or PARAMETERS not sorted");
881 : }
882 : ntarget++;
883 0 : }
884 0 : if( ntarget!=size ) {
885 0 : error("found wrong number of PARAMETERS in file");
886 : }
887 :
888 0 : for(unsigned i=0; i<size; ++i) {
889 0 : atoi[i]=i;
890 0 : for(unsigned k=0; k<numq; ++k) {
891 0 : for(unsigned j=0; j<parameter[i].size(); ++j) {
892 0 : FF_tmp[k][i]+= parameter[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
893 : }
894 : }
895 : }
896 0 : for(unsigned i=0; i<size; ++i) {
897 0 : Iq0+=parameter[i][0];
898 : }
899 0 : Iq0 *= Iq0;
900 0 : } else { // SANS
901 4 : FF_tmp.resize(numq,std::vector<long double>(size));
902 :
903 4 : IFile ifile;
904 4 : ifile.open(parametersfile);
905 : std::string line;
906 :
907 : ntarget=0;
908 1084 : while(ifile.getline(line)) {
909 1080 : Tools::ltrim(line);
910 1080 : Tools::trimComments(line);
911 1080 : if (line.empty()) {
912 0 : continue;
913 : }
914 1080 : if (ntarget >= size) {
915 0 : error("PARAMETERSFILE has more PARAMETERS than there are scattering centers");
916 : }
917 : std::string num;
918 1080 : Tools::convert(ntarget+1,num);
919 2160 : std::vector<std::string> lineread{line};
920 : long double scatlen;
921 1080 : atoi[ntarget]=ntarget;
922 2160 : if (!Tools::parse(lineread, "PARAMETERS"+num, scatlen, -1)) {
923 0 : error("Missing PARAMETERS or PARAMETERS not sorted");
924 : }
925 17280 : for(unsigned k=0; k<numq; ++k) {
926 16200 : FF_tmp[k][ntarget] = scatlen;
927 : }
928 : ntarget++;
929 1080 : }
930 4 : if( ntarget!=size ) {
931 0 : error("found wrong number of PARAMETERS in file");
932 : }
933 1084 : for(unsigned i=0; i<size; ++i) {
934 1080 : Iq0+=FF_tmp[0][i];
935 : }
936 4 : Iq0 *= Iq0;
937 4 : }
938 51 : } else if(onebead) {
939 23 : if(saxs) {
940 : // read built-in ONEBEAD parameters
941 12 : FF_tmp_vac.resize(numq,std::vector<long double>(NONEBEAD));
942 12 : FF_tmp_mix.resize(numq,std::vector<long double>(NONEBEAD));
943 12 : FF_tmp_solv.resize(numq,std::vector<long double>(NONEBEAD));
944 12 : std::vector<std::vector<long double> > parameter_vac(NONEBEAD);
945 12 : std::vector<std::vector<long double> > parameter_mix(NONEBEAD);
946 12 : std::vector<std::vector<long double> > parameter_solv(NONEBEAD);
947 12 : getOnebeadparam(pdb, atoms, parameter_vac, parameter_mix, parameter_solv, residue_atom);
948 : // ion bead types carry no polynomial coefficients; insert a q=0 placeholder so the
949 : // expansion and Iq0 loops below stay valid. Their ion entries are overwritten with
950 : // analytic values by getOnebeadIonparam_saxs just afterwards.
951 120 : for(unsigned s=OB_NA; s<NONEBEAD; ++s) {
952 108 : parameter_vac[s].assign(1, 0.0);
953 108 : parameter_mix[s].assign(1, 0.0);
954 108 : parameter_solv[s].assign(1, 0.0);
955 : }
956 2375 : for(unsigned i=0; i<nres; ++i) {
957 2363 : if(atoi[i] >= NONEBEAD || parameter_vac[atoi[i]].empty() || parameter_mix[atoi[i]].empty() || parameter_solv[atoi[i]].empty()) {
958 0 : error("ONEBEAD form-factor parameters are not available for bead type " + std::to_string(atoi[i]) + " in this build");
959 : }
960 : }
961 636 : for(unsigned i=0; i<NONEBEAD; ++i) {
962 5928 : for(unsigned k=0; k<numq; ++k) {
963 31212 : for(unsigned j=0; j<parameter_vac[i].size(); ++j) {
964 25908 : FF_tmp_vac[k][i]+= parameter_vac[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
965 : }
966 31212 : for(unsigned j=0; j<parameter_mix[i].size(); ++j) {
967 25908 : FF_tmp_mix[k][i]+= parameter_mix[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
968 : }
969 31212 : for(unsigned j=0; j<parameter_solv[i].size(); ++j) {
970 25908 : FF_tmp_solv[k][i]+= parameter_solv[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
971 : }
972 : }
973 : }
974 2375 : for(unsigned i=0; i<nres; ++i) {
975 2363 : Iq0_vac[i]=parameter_vac[atoi[i]][0];
976 2363 : Iq0_mix[i]=parameter_mix[atoi[i]][0];
977 2363 : Iq0_solv[i]=parameter_solv[atoi[i]][0];
978 : }
979 : // overwrite ion bead types with analytic Cromer-Mann + excluded-volume terms
980 12 : getOnebeadIonparam_saxs(FF_tmp_vac, FF_tmp_mix, FF_tmp_solv, Iq0_vac, Iq0_mix, Iq0_solv);
981 12 : } else { // SANS
982 : // read built-in ONEBEAD parameters
983 11 : FF_tmp_vac_H.resize(numq,std::vector<long double>(NONEBEAD));
984 11 : FF_tmp_mix_H.resize(numq,std::vector<long double>(NONEBEAD));
985 11 : FF_tmp_solv_H.resize(numq,std::vector<long double>(NONEBEAD));
986 11 : FF_tmp_vac_D.resize(numq,std::vector<long double>(NONEBEAD));
987 11 : FF_tmp_mix_D.resize(numq,std::vector<long double>(NONEBEAD));
988 11 : std::vector<std::vector<long double> > parameter_vac_H(NONEBEAD);
989 11 : std::vector<std::vector<long double> > parameter_mix_H(NONEBEAD);
990 11 : std::vector<std::vector<long double> > parameter_solv_H(NONEBEAD);
991 11 : std::vector<std::vector<long double> > parameter_vac_D(NONEBEAD);
992 11 : std::vector<std::vector<long double> > parameter_mix_D(NONEBEAD);
993 11 : getOnebeadparam_sansH(pdb, atoms, parameter_vac_H, parameter_mix_H, parameter_solv_H);
994 11 : getOnebeadparam_sansD(pdb, atoms, parameter_vac_D, parameter_mix_D);
995 : // q=0 placeholders for ion bead types (overwritten by getOnebeadIonparam_sans below)
996 110 : for(unsigned s=OB_NA; s<NONEBEAD; ++s) {
997 99 : parameter_vac_H[s].assign(1, 0.0);
998 99 : parameter_mix_H[s].assign(1, 0.0);
999 99 : parameter_solv_H[s].assign(1, 0.0);
1000 99 : parameter_vac_D[s].assign(1, 0.0);
1001 99 : parameter_mix_D[s].assign(1, 0.0);
1002 : }
1003 1942 : for(unsigned i=0; i<nres; ++i) {
1004 1931 : if(atoi[i] >= NONEBEAD || parameter_vac_H[atoi[i]].empty() || parameter_mix_H[atoi[i]].empty() || parameter_solv_H[atoi[i]].empty() ||
1005 3862 : parameter_vac_D[atoi[i]].empty() || parameter_mix_D[atoi[i]].empty()) {
1006 0 : error("ONEBEAD form-factor parameters are not available for bead type " + std::to_string(atoi[i]) + " in this build");
1007 : }
1008 : }
1009 583 : for(unsigned i=0; i<NONEBEAD; ++i) {
1010 5356 : for(unsigned k=0; k<numq; ++k) {
1011 28152 : for(unsigned j=0; j<parameter_vac_H[i].size(); ++j) { // same number of parameters
1012 23368 : FF_tmp_vac_H[k][i]+= parameter_vac_H[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
1013 23368 : FF_tmp_vac_D[k][i]+= parameter_vac_D[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
1014 : }
1015 28152 : for(unsigned j=0; j<parameter_mix_H[i].size(); ++j) {
1016 23368 : FF_tmp_mix_H[k][i]+= parameter_mix_H[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
1017 23368 : FF_tmp_mix_D[k][i]+= parameter_mix_D[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
1018 : }
1019 28152 : for(unsigned j=0; j<parameter_solv_H[i].size(); ++j) {
1020 23368 : FF_tmp_solv_H[k][i]+= parameter_solv_H[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
1021 : }
1022 : }
1023 : }
1024 1942 : for(unsigned i=0; i<nres; ++i) {
1025 1931 : Iq0_vac_H[i]=parameter_vac_H[atoi[i]][0];
1026 1931 : Iq0_mix_H[i]=parameter_mix_H[atoi[i]][0];
1027 1931 : Iq0_solv_H[i]=parameter_solv_H[atoi[i]][0];
1028 1931 : Iq0_vac_D[i]=parameter_vac_D[atoi[i]][0];
1029 1931 : Iq0_mix_D[i]=parameter_mix_D[atoi[i]][0];
1030 : }
1031 : // overwrite ion bead types with analytic terms (neutron b + excluded volume)
1032 11 : getOnebeadIonparam_sans(FF_tmp_vac_H, FF_tmp_mix_H, FF_tmp_solv_H, FF_tmp_vac_D, FF_tmp_mix_D,
1033 11 : Iq0_vac_H, Iq0_mix_H, Iq0_solv_H, Iq0_vac_D, Iq0_mix_D);
1034 11 : }
1035 28 : } else if(martini) {
1036 : // read built-in MARTINI parameters
1037 16 : FF_tmp.resize(numq,std::vector<long double>(NMARTINI));
1038 16 : std::vector<std::vector<long double> > parameter;
1039 16 : parameter.resize(NMARTINI);
1040 16 : if(martini_ff==3) {
1041 4 : getMartiniFFparam_v3(atoms, parameter);
1042 : } else {
1043 12 : getMartiniFFparam(atoms, parameter);
1044 : }
1045 2192 : for(unsigned i=0; i<NMARTINI; ++i) {
1046 34816 : for(unsigned k=0; k<numq; ++k) {
1047 222060 : for(unsigned j=0; j<parameter[i].size(); ++j) {
1048 189420 : FF_tmp[k][i]+= parameter[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
1049 : }
1050 : }
1051 : }
1052 11044 : for(unsigned i=0; i<size; ++i) {
1053 11028 : Iq0+=parameter[atoi[i]][0];
1054 : }
1055 16 : Iq0 *= Iq0;
1056 28 : } else if(atomistic) {
1057 12 : FF_tmp.resize(numq,std::vector<long double>(NTT));
1058 12 : if(saxs) {
1059 8 : Iq0=calculateAFF(atoms, FF_tmp, rho);
1060 : } else {
1061 4 : Iq0=calculateAFFsans(atoms, FF_tmp, deuter_conc);
1062 : }
1063 12 : Iq0 *= Iq0;
1064 : }
1065 :
1066 :
1067 63 : expint.resize( numq );
1068 : ntarget=0;
1069 357 : for(unsigned i=0; i<numq; ++i) {
1070 662 : if( !parseNumbered( "EXPINT", i+1, expint[i] ) ) {
1071 : break;
1072 : }
1073 294 : ntarget++;
1074 : }
1075 63 : std::transform(expint.begin(), expint.begin() + ntarget, expint.begin(), [scale_expint](double x) {
1076 294 : return x / scale_expint;
1077 : });
1078 : bool exp=false;
1079 63 : if(ntarget!=numq && ntarget!=0) {
1080 0 : error("found wrong number of EXPINT values");
1081 : }
1082 63 : if(ntarget==numq) {
1083 : exp=true;
1084 : }
1085 63 : if(getDoScore()&&!exp) {
1086 0 : error("with DOSCORE you need to set the EXPINT values");
1087 : }
1088 :
1089 63 : experr.resize( numq );
1090 : ntarget=0;
1091 75 : for(unsigned i=0; i<numq; ++i) {
1092 142 : if( !parseNumbered( "EXPERR", i+1, experr[i] ) ) {
1093 : break;
1094 : }
1095 12 : ntarget++;
1096 : }
1097 63 : std::transform(experr.begin(), experr.begin() + ntarget, experr.begin(), [scale_expint](double x) {
1098 12 : return x / scale_expint;
1099 : });
1100 : bool experr_complete=false;
1101 63 : if(ntarget!=numq && ntarget!=0) {
1102 0 : error("found wrong number of EXPERR values");
1103 : }
1104 63 : if(ntarget==numq) {
1105 : experr_complete=true;
1106 16 : for(unsigned i=0; i<numq; ++i) {
1107 12 : if(!std::isfinite(experr[i]) || experr[i]<=0.) {
1108 0 : error("EXPERR values must be finite and greater than zero");
1109 : }
1110 : }
1111 : }
1112 63 : if(chi2) {
1113 4 : if(absolute) {
1114 0 : error("CHI2 cannot be combined with ABSOLUTE in this first implementation because CHI2 fits a multiplicative intensity scale");
1115 : }
1116 4 : if(numq<2) {
1117 0 : error("CHI2 requires at least two QVALUE values because one multiplicative scale is fitted");
1118 : }
1119 4 : if(!exp) {
1120 0 : error("CHI2 requires one EXPINT value for every QVALUE");
1121 : }
1122 4 : if(!experr_complete) {
1123 0 : error("CHI2 requires one EXPERR value for every QVALUE");
1124 : }
1125 16 : for(unsigned i=0; i<numq; ++i) {
1126 12 : if(!std::isfinite(expint[i])) {
1127 0 : error("EXPINT values must be finite when using CHI2");
1128 : }
1129 : }
1130 : }
1131 :
1132 63 : sigma_res.resize( numq );
1133 63 : resolution=false;
1134 : ntarget=0;
1135 183 : for(unsigned i=0; i<numq; ++i) {
1136 350 : if( !parseNumbered( "SIGMARES", i+1, sigma_res[i] ) ) {
1137 : break;
1138 : }
1139 120 : ntarget++;
1140 : }
1141 63 : if(ntarget!=numq && ntarget!=0) {
1142 0 : error("found wrong number of SIGMARES values");
1143 : }
1144 63 : if(ntarget==numq) {
1145 8 : resolution=true;
1146 8 : if(numq==1) {
1147 0 : error("Resolution function requires at least two QVALUE values");
1148 : }
1149 128 : for(unsigned i=0; i<numq; ++i) {
1150 120 : if(sigma_res[i]<=0.) {
1151 0 : error("SIGMARES values must be greater than zero");
1152 : }
1153 120 : if(i>0&&q_list[i]<=q_list[i-1]) {
1154 0 : error("QVALUE values must be strictly increasing when using SIGMARES");
1155 : }
1156 : }
1157 : }
1158 :
1159 63 : if(chi2 && resolution) {
1160 0 : error("CHI2 with SIGMARES is not enabled in the first validation stage; resolution-smeared CHI2 will be tested separately");
1161 : }
1162 :
1163 63 : Nj = 10;
1164 63 : parse("N", Nj);
1165 63 : if (Nj < 2) {
1166 0 : error("N should be larger than 1");
1167 : }
1168 63 : if (resolution) {
1169 8 : log.printf(" Resolution function with N: %d\n", Nj);
1170 : }
1171 :
1172 63 : FF_rank.resize(numq);
1173 : unsigned n_atom_types;
1174 63 : if(onebead) {
1175 23 : FF_value.resize(nres,std::vector<double>(numq));
1176 : n_atom_types=NONEBEAD;
1177 23 : if(saxs) {
1178 12 : FF_value_vacuum.resize(n_atom_types,std::vector<double>(numq));
1179 12 : FF_value_solv.resize(n_atom_types,std::vector<double>(numq));
1180 24 : FF_value_mixed.resize(n_atom_types,std::vector<double>(numq));
1181 : } else {
1182 11 : FF_value_vacuum_H.resize(n_atom_types,std::vector<double>(numq));
1183 11 : FF_value_solv_H.resize(n_atom_types,std::vector<double>(numq));
1184 11 : FF_value_mixed_H.resize(n_atom_types,std::vector<double>(numq));
1185 11 : FF_value_vacuum_D.resize(n_atom_types,std::vector<double>(numq));
1186 22 : FF_value_mixed_D.resize(n_atom_types,std::vector<double>(numq));
1187 : }
1188 : } else {
1189 80 : FF_value.resize(size,std::vector<double>(numq));
1190 : }
1191 689 : for(unsigned k=0; k<numq; ++k) {
1192 626 : if(!onebead) {
1193 562794 : for(unsigned i=0; i<size; ++i) {
1194 562362 : FF_value[i][k] = static_cast<double>(FF_tmp[k][atoi[i]])/(std::sqrt(Iq0));
1195 : }
1196 562794 : for(unsigned i=0; i<size; ++i) {
1197 562362 : FF_rank[k] += FF_value[i][k]*FF_value[i][k];
1198 : }
1199 : } else {
1200 194 : if(saxs) {
1201 5406 : for(unsigned i=0; i<n_atom_types; ++i) {
1202 5304 : FF_value_vacuum[i][k] = static_cast<double>(FF_tmp_vac[k][i]);
1203 5304 : FF_value_mixed[i][k] = static_cast<double>(FF_tmp_mix[k][i]);
1204 5304 : FF_value_solv[i][k] = static_cast<double>(FF_tmp_solv[k][i]);
1205 : }
1206 : } else { // SANS
1207 4876 : for(unsigned i=0; i<n_atom_types; ++i) {
1208 4784 : FF_value_vacuum_H[i][k] = static_cast<double>(FF_tmp_vac_H[k][i]);
1209 4784 : FF_value_mixed_H[i][k] = static_cast<double>(FF_tmp_mix_H[k][i]);
1210 4784 : FF_value_solv_H[i][k] = static_cast<double>(FF_tmp_solv_H[k][i]);
1211 4784 : FF_value_vacuum_D[i][k] = static_cast<double>(FF_tmp_vac_D[k][i]);
1212 4784 : FF_value_mixed_D[i][k] = static_cast<double>(FF_tmp_mix_D[k][i]);
1213 : }
1214 : }
1215 : }
1216 : }
1217 :
1218 :
1219 63 : if(!getDoScore()) {
1220 577 : for(unsigned i=0; i<numq; ++i) {
1221 : std::string num;
1222 524 : Tools::convert(i,num);
1223 1048 : addComponentWithDerivatives("q-"+num);
1224 1048 : componentIsNotPeriodic("q-"+num);
1225 : }
1226 53 : if(exp) {
1227 208 : for(unsigned i=0; i<numq; ++i) {
1228 : std::string num;
1229 192 : Tools::convert(i,num);
1230 384 : addComponent("exp-"+num);
1231 192 : componentIsNotPeriodic("exp-"+num);
1232 192 : Value* comp=getPntrToComponent("exp-"+num);
1233 192 : comp->set(expint[i]);
1234 : }
1235 : }
1236 53 : if(chi2) {
1237 8 : addComponentWithDerivatives("chi2");
1238 8 : componentIsNotPeriodic("chi2");
1239 8 : addComponentWithDerivatives("chi2red");
1240 8 : componentIsNotPeriodic("chi2red");
1241 8 : addComponent("chi2scale");
1242 8 : componentIsNotPeriodic("chi2scale");
1243 : }
1244 : } else {
1245 112 : for(unsigned i=0; i<numq; ++i) {
1246 : std::string num;
1247 102 : Tools::convert(i,num);
1248 204 : addComponent("q-"+num);
1249 204 : componentIsNotPeriodic("q-"+num);
1250 : }
1251 112 : for(unsigned i=0; i<numq; ++i) {
1252 : std::string num;
1253 102 : Tools::convert(i,num);
1254 204 : addComponent("exp-"+num);
1255 102 : componentIsNotPeriodic("exp-"+num);
1256 102 : Value* comp=getPntrToComponent("exp-"+num);
1257 102 : comp->set(expint[i]);
1258 : }
1259 10 : if(chi2) {
1260 0 : addComponent("chi2");
1261 0 : componentIsNotPeriodic("chi2");
1262 0 : addComponent("chi2red");
1263 0 : componentIsNotPeriodic("chi2red");
1264 0 : addComponent("chi2scale");
1265 0 : componentIsNotPeriodic("chi2scale");
1266 : }
1267 : }
1268 63 : if(chi2ensemble) {
1269 0 : addComponent("chi2ensemble");
1270 0 : componentIsNotPeriodic("chi2ensemble");
1271 0 : addComponent("chi2ensemblered");
1272 0 : componentIsNotPeriodic("chi2ensemblered");
1273 0 : addComponent("chi2ensemblescale");
1274 0 : componentIsNotPeriodic("chi2ensemblescale");
1275 : }
1276 :
1277 : // convert units to nm^-1
1278 689 : for(unsigned i=0; i<numq; ++i) {
1279 626 : q_list[i]=q_list[i]*10.0; // factor 10 to convert from A^-1 to nm^-1
1280 626 : if (resolution) {
1281 120 : sigma_res[i]=sigma_res[i]*10.0;
1282 : }
1283 : }
1284 :
1285 : // q values as a uniform grid plus small deviations, used by sincos_q
1286 63 : qref0_ = q_list[0];
1287 63 : qref_dq_ = (numq>1) ? (q_list[numq-1]-q_list[0])/static_cast<double>(numq-1) : 0.0;
1288 63 : qref_maxeps_ = 0.0;
1289 63 : qref_eps_.resize(numq);
1290 689 : for(unsigned k=0; k<numq; ++k) {
1291 626 : qref_eps_[k] = q_list[k]-(qref0_+k*qref_dq_);
1292 759 : qref_maxeps_ = std::max(qref_maxeps_, std::fabs(qref_eps_[k]));
1293 : }
1294 :
1295 : // the deuteration of the exposed residues is drawn by the first rank and broadcast
1296 63 : random_deut_.setSeed(-1);
1297 :
1298 : // compute resolution function after converting units
1299 63 : if (resolution) {
1300 8 : qj_list.resize(numq, std::vector<double>(Nj));
1301 8 : Rij.resize(numq, std::vector<double>(Nj));
1302 : // compute Rij and qj_list
1303 8 : resolution_function();
1304 : // matrix of the smearing (spline interpolation and integral with the resolution function)
1305 8 : smear_.assign(static_cast<std::size_t>(numq)*numq,0.0);
1306 128 : for(unsigned l=0; l<numq; ++l) {
1307 120 : std::vector<double> unit(numq,0.0);
1308 120 : unit[l] = 1.0;
1309 120 : std::vector<SplineCoeffs> coeffs = spline_coeffs(q_list, unit);
1310 1920 : for(unsigned k=0; k<numq; ++k) {
1311 1800 : const double dq = qj_list[k][1] - qj_list[k][0];
1312 20700 : for(unsigned j=0; j<Nj; ++j) {
1313 18900 : smear_[k*numq+l] += Rij[k][j] * interpolation(coeffs, qj_list[k][j]) * dq;
1314 : }
1315 : }
1316 : }
1317 : }
1318 :
1319 63 : log<<" Bibliography ";
1320 63 : if(onebead) {
1321 46 : log<<plumed.cite("Ballabio, Paissoni, Bollati, de Rosa, Capelli, Camilloni, J. Chem. Theory Comput., 19, 22, 8401-8413 (2023)");
1322 : }
1323 63 : if(martini) {
1324 16 : log<<plumed.cite("Niebling, Björling, Westenhoff, J. Appl. Crystallogr., 47, 1190–1198 (2014)");
1325 16 : log<<plumed.cite("Paissoni, Jussupow, Camilloni, J. Appl. Crystallogr., 52, 394-402 (2019)");
1326 16 : if(martini_ff==3) {
1327 8 : log<<plumed.cite("Vinterbladh, Vuillemot, Grudinin, Lund, ChemRxiv, doi:10.26434/chemrxiv.15006205/v1 (2026)");
1328 : }
1329 : }
1330 63 : if(atomistic) {
1331 12 : log<<plumed.cite("Fraser, MacRae, Suzuki, J. Appl. Crystallogr., 11, 693–694 (1978)");
1332 24 : log<<plumed.cite("Brown, Fox, Maslen, O'Keefe, Willis, International Tables for Crystallography, C, 554–595 (International Union of Crystallography, 2006)");
1333 : }
1334 63 : if(resolution) {
1335 16 : log<<plumed.cite("Pedersen, Posselt, Mortensen, J. Appl. Crystallogr., 23, 321–333 (1990)");
1336 : }
1337 :
1338 : // ion parameters: cite the sources only if any ion is actually present in the system
1339 : bool ions_present=false;
1340 63 : if(onebead) {
1341 4314 : for(unsigned i=0; i<nres; ++i) {
1342 4294 : if(atoi[i]>=OB_NA && atoi[i]<NONEBEAD) {
1343 : ions_present=true;
1344 : break;
1345 : }
1346 : }
1347 40 : } else if(atomistic) {
1348 42304 : for(unsigned i=0; i<atoi.size(); ++i) {
1349 42292 : if(atoi[i]>=AFF_NA && atoi[i]<NTT) {
1350 : ions_present=true;
1351 : break;
1352 : }
1353 : }
1354 : }
1355 35 : if(ions_present) {
1356 3 : log<<plumed.cite("Cromer, Mann, Acta Crystallogr. A, 24, 321-324 (1968)");
1357 3 : log<<plumed.cite("Brown, Fox, Maslen, O'Keefe, Willis, International Tables for Crystallography, C, 554–595 (International Union of Crystallography, 2006)");
1358 3 : log<<plumed.cite("Shannon, Acta Crystallogr. A, 32, 751-767 (1976)");
1359 3 : if(!saxs) {
1360 4 : log<<plumed.cite("Sears, Neutron News, 3, 26-37 (1992)");
1361 : }
1362 : }
1363 :
1364 63 : log<< plumed.cite("Bonomi, Camilloni, Bioinformatics, 33, 3999 (2017)");
1365 63 : log<<"\n";
1366 :
1367 63 : requestAtoms(atoms, false);
1368 :
1369 63 : if(getDoScore()) {
1370 10 : setParameters(expint);
1371 10 : Initialise(numq);
1372 : }
1373 63 : setDerivatives();
1374 63 : checkRead();
1375 1206 : }
1376 :
1377 : // calculates SASA neighbor list
1378 20 : void SAXS::calcNlist(std::vector<std::vector<int> > &Nlist) {
1379 : // pairs of atoms with LCPO parameters closer than the sum of their radii,
1380 : // found with a cell list; each list is sorted (as with the all-pairs loop)
1381 : const unsigned natoms = getNumberOfAtoms();
1382 20 : std::vector<unsigned> lcpo_atoms;
1383 20 : double maxr = 0.0;
1384 66767 : for(unsigned i = 0; i < natoms; ++i) {
1385 66747 : if (LCPOparam[i].size()>0) {
1386 31125 : lcpo_atoms.push_back(i);
1387 31125 : maxr = std::max(maxr, LCPOparam[i][0]);
1388 : }
1389 : }
1390 20 : if(lcpo_atoms.empty()) {
1391 : return;
1392 : }
1393 : // cell size (nm) not smaller than the largest cutoff (radii are in Angstrom)
1394 20 : const double rc = std::max(2.0*maxr/10., 1.e-6);
1395 20 : Vector lo = getPosition(lcpo_atoms[0]), hi = lo;
1396 31145 : for(const auto i : lcpo_atoms) {
1397 124500 : for(unsigned k=0; k<3; ++k) {
1398 93977 : lo[k] = std::min(lo[k], getPosition(i)[k]);
1399 93375 : hi[k] = std::max(hi[k], getPosition(i)[k]);
1400 : }
1401 : }
1402 : int ncell[3];
1403 : double csize[3];
1404 80 : for(unsigned k=0; k<3; ++k) {
1405 60 : const double len = hi[k]-lo[k];
1406 120 : ncell[k] = std::max(1, std::min(200, static_cast<int>(std::floor(len/rc))));
1407 63 : csize[k] = std::max(len/static_cast<double>(ncell[k]), rc);
1408 : }
1409 62250 : auto cell=[&](const unsigned i, int *c) {
1410 249000 : for(unsigned k=0; k<3; ++k) {
1411 546102 : c[k] = std::min(ncell[k]-1, std::max(0, static_cast<int>(std::floor((getPosition(i)[k]-lo[k])/csize[k]))));
1412 : }
1413 62270 : };
1414 20 : const unsigned ncells = ncell[0]*ncell[1]*ncell[2];
1415 20 : std::vector<unsigned> cell_start(ncells+1,0), cell_atoms(lcpo_atoms.size()), atom_cell(lcpo_atoms.size());
1416 31145 : for(unsigned a=0; a<lcpo_atoms.size(); ++a) {
1417 : int c[3];
1418 31125 : cell(lcpo_atoms[a],c);
1419 31125 : atom_cell[a] = (c[0]*ncell[1]+c[1])*ncell[2]+c[2];
1420 31125 : cell_start[atom_cell[a]+1]++;
1421 : }
1422 8049 : for(unsigned ic=0; ic<ncells; ++ic) {
1423 8029 : cell_start[ic+1] += cell_start[ic];
1424 : }
1425 : {
1426 20 : std::vector<unsigned> fill(cell_start.begin(), cell_start.end()-1);
1427 31145 : for(unsigned a=0; a<lcpo_atoms.size(); ++a) {
1428 31125 : cell_atoms[fill[atom_cell[a]]++] = lcpo_atoms[a];
1429 : }
1430 20 : }
1431 20 : #pragma omp parallel for num_threads(OpenMP::getNumThreads()) schedule(dynamic,64)
1432 : for(unsigned a=0; a<lcpo_atoms.size(); ++a) {
1433 : const unsigned i = lcpo_atoms[a];
1434 : int c[3];
1435 : cell(i,c);
1436 : for(int i0=std::max(0,c[0]-1); i0<=std::min(ncell[0]-1,c[0]+1); ++i0) {
1437 : for(int i1=std::max(0,c[1]-1); i1<=std::min(ncell[1]-1,c[1]+1); ++i1) {
1438 : for(int i2=std::max(0,c[2]-1); i2<=std::min(ncell[2]-1,c[2]+1); ++i2) {
1439 : const unsigned ic = (i0*ncell[1]+i1)*ncell[2]+i2;
1440 : for(unsigned jj=cell_start[ic]; jj<cell_start[ic+1]; ++jj) {
1441 : const unsigned j = cell_atoms[jj];
1442 : if(j==i) {
1443 : continue;
1444 : }
1445 : // same expression as in the all-pairs loop (j<i), so that the result is the same
1446 : const double Delta_ij_mod = (j<i) ? modulo(delta(getPosition(i), getPosition(j)))*10. : modulo(delta(getPosition(j), getPosition(i)))*10.;
1447 : const double overlapD = (j<i) ? LCPOparam[i][0]+LCPOparam[j][0] : LCPOparam[j][0]+LCPOparam[i][0];
1448 : if(Delta_ij_mod < overlapD) {
1449 : Nlist[i].push_back(j);
1450 : }
1451 : }
1452 : }
1453 : }
1454 : }
1455 : std::sort(Nlist[i].begin(), Nlist[i].end());
1456 : }
1457 20 : }
1458 :
1459 : // calculates SASA according to LCPO algorithm
1460 20 : void SAXS::sasa_calculate(std::vector<bool> &solv_res) {
1461 : unsigned natoms = getNumberOfAtoms();
1462 20 : std::vector<std::vector<int> > Nlist(natoms);
1463 20 : calcNlist(Nlist);
1464 20 : std::vector<double> sasares(nres, 0.);
1465 20 : const unsigned nt = OpenMP::getNumThreads();
1466 20 : std::vector< std::vector<double> > sasares_t(nt);
1467 :
1468 20 : #pragma omp parallel num_threads(nt)
1469 : {
1470 : std::vector<double> & private_sasares = sasares_t[OpenMP::getThreadNum()];
1471 : private_sasares.assign(nres, 0.);
1472 : // marks the neighbours of atom i (replaces a linear search in Nlist[i])
1473 : std::vector<char> is_neighbor(natoms, 0);
1474 : #pragma omp for schedule(static)
1475 : for (unsigned i = 0; i < natoms; ++i) {
1476 : if (LCPOparam[i].size() > 1 && LCPOparam[i][1] > 0.0) {
1477 : double Aij = 0.0;
1478 : double Aijk = 0.0;
1479 : double Ajk = 0.0;
1480 : double ri = LCPOparam[i][0];
1481 : double S1 = 4.*M_PI*ri*ri;
1482 : for (const auto j : Nlist[i]) {
1483 : is_neighbor[j] = 1;
1484 : }
1485 : for (unsigned j = 0; j < Nlist[i].size(); ++j) {
1486 : double d_ij = modulo(delta( getPosition(i), getPosition(Nlist[i][j]) ))*10.;
1487 : double rj = LCPOparam[Nlist[i][j]][0];
1488 : double Aijt = (2.*M_PI*ri*(ri-d_ij/2.-((ri*ri-rj*rj)/(2.*d_ij))));
1489 : double Ajkt = 0.0;
1490 : for (unsigned k = 0; k < Nlist[Nlist[i][j]].size(); ++k) {
1491 : if (is_neighbor[Nlist[Nlist[i][j]][k]]) {
1492 : double d_jk = modulo(delta( getPosition(Nlist[i][j]), getPosition(Nlist[Nlist[i][j]][k]) ))*10.;
1493 : double rk = LCPOparam[Nlist[Nlist[i][j]][k]][0];
1494 : double sjk = (2.*M_PI*rj*(rj-d_jk/2.-((rj*rj-rk*rk)/(2.*d_jk))));
1495 : Ajkt += sjk;
1496 : }
1497 : }
1498 : Aijk += (Aijt * Ajkt);
1499 : Aij += Aijt;
1500 : Ajk += Ajkt;
1501 : }
1502 : for (const auto j : Nlist[i]) {
1503 : is_neighbor[j] = 0;
1504 : }
1505 : double sasai = (LCPOparam[i][1]*S1+LCPOparam[i][2]*Aij+LCPOparam[i][3]*Ajk+LCPOparam[i][4]*Aijk);
1506 : if (sasai > 0) {
1507 : private_sasares[residue_atom[i]] += sasai / 100.0;
1508 : }
1509 : }
1510 : }
1511 : }
1512 : // combining private_sasares into sasares, in thread order (reproducible results);
1513 : // the buffers of the threads that did not run (e.g. without OpenMP, or when the
1514 : // runtime gives fewer threads than requested) are empty and are skipped
1515 60 : for (unsigned t = 0; t < nt; ++t) {
1516 40 : if(sasares_t[t].empty()) {
1517 0 : continue;
1518 : }
1519 8168 : for (unsigned i = 0; i < nres; ++i) {
1520 8128 : sasares[i] += sasares_t[t][i];
1521 : }
1522 : }
1523 4084 : for(unsigned i=0; i<nres; ++i) { // updating solv_res based on sasares
1524 4064 : if(sasares[i]>sasa_cutoff) {
1525 : solv_res[i] = 1;
1526 : } else {
1527 : solv_res[i] = 0;
1528 : }
1529 : }
1530 40 : }
1531 :
1532 :
1533 56554124 : void SAXS::sincos_q(const double r, double *s, double *c) const {
1534 : // sin(q_k r) and cos(q_k r) for all the q values. When the q values are close to a
1535 : // uniform grid q0+k*dq (as usual for experimental data), sin and cos of the grid are
1536 : // obtained by angle addition (exact restart every 16 values) and corrected for the
1537 : // small deviations eps_k=q_k-q0-k*dq with a Taylor expansion (|eps_k r|<=0.1, error
1538 : // smaller than 1e-16). Otherwise sin and cos are computed for every q.
1539 56554124 : const unsigned numq = q_list.size();
1540 56554124 : if(numq<4 || qref_maxeps_*r>0.1) {
1541 487199068 : for(unsigned k=0; k<numq; ++k) {
1542 438499704 : s[k] = std::sin(q_list[k]*r);
1543 438499704 : c[k] = std::cos(q_list[k]*r);
1544 : }
1545 : return;
1546 : }
1547 7854760 : const double sd = std::sin(qref_dq_*r);
1548 7854760 : const double cd = std::cos(qref_dq_*r);
1549 : double sk = 0.0, ck = 1.0;
1550 119543744 : for(unsigned k=0; k<numq; ++k) {
1551 111688984 : if((k&15)==0) {
1552 7854760 : const double a = (qref0_+k*qref_dq_)*r;
1553 7854760 : sk = std::sin(a);
1554 7854760 : ck = std::cos(a);
1555 : }
1556 111688984 : const double x = qref_eps_[k]*r;
1557 111688984 : const double x2 = x*x;
1558 111688984 : const double cx = 1.-x2*(1./2-x2*(1./24-x2*(1./720-x2*(1./40320))));
1559 111688984 : const double sx = x*(1.-x2*(1./6-x2*(1./120-x2*(1./5040-x2*(1./362880)))));
1560 111688984 : s[k] = sk*cx+ck*sx;
1561 111688984 : c[k] = ck*cx-sk*sx;
1562 111688984 : const double s2 = sk*cd+ck*sd;
1563 111688984 : ck = ck*cd-sk*sd;
1564 : sk = s2;
1565 : }
1566 : }
1567 :
1568 307 : void SAXS::calculate_cpu(std::vector<Vector> &pos, std::vector<Vector> &deriv, const bool reduce_deriv) {
1569 : unsigned size;
1570 307 : if(onebead) {
1571 27 : size = nres;
1572 : } else {
1573 : size = getNumberOfAtoms();
1574 : }
1575 307 : const unsigned numq = q_list.size();
1576 307 : if(size == 0) {
1577 0 : error("SAXS/SANS requires at least one atom or bead");
1578 : }
1579 :
1580 307 : unsigned stride = comm.Get_size();
1581 307 : unsigned rank = comm.Get_rank();
1582 307 : if(serial) {
1583 : stride = 1;
1584 : rank = 0;
1585 : }
1586 307 : std::vector<double> sum(numq,0);
1587 307 : const unsigned nt=OpenMP::getNumThreads();
1588 : // partial sums of the threads other than the first one, added in thread order
1589 307 : std::vector< std::vector<Vector> > deriv_t(nt);
1590 307 : std::vector< std::vector<double> > sum_t(nt);
1591 307 : #pragma omp parallel num_threads(nt)
1592 : {
1593 : const unsigned t = OpenMP::getThreadNum();
1594 : if(t>0) {
1595 : deriv_t[t].assign(deriv.size(),Vector(0,0,0));
1596 : sum_t[t].assign(numq,0.0);
1597 : }
1598 : std::vector<Vector> & my_deriv = (t>0) ? deriv_t[t] : deriv;
1599 : std::vector<double> & my_sum = (t>0) ? sum_t[t] : sum;
1600 : std::vector<double> sq(numq), cq(numq);
1601 : // the work of row i decreases with i: rows are dealt round robin
1602 : #pragma omp for schedule(static,1)
1603 : for (unsigned i=rank; i<size-1; i+=stride) {
1604 : Vector posi = pos[i];
1605 : for (unsigned j=i+1; j<size ; ++j) {
1606 : Vector c_distances = delta(posi,pos[j]);
1607 : double m_distances = c_distances.modulo();
1608 : c_distances = c_distances/m_distances/m_distances;
1609 : sincos_q(m_distances, sq.data(), cq.data());
1610 : for (unsigned k=0; k<numq; ++k) {
1611 : unsigned kdx=k*size;
1612 : double qdist = q_list[k]*m_distances;
1613 : double FFF = 2.*FF_value[i][k]*FF_value[j][k];
1614 : double tsq = sq[k]/qdist;
1615 : double tmp = FFF*(cq[k]-tsq);
1616 : Vector dd = c_distances*tmp;
1617 : my_deriv[kdx+i] -= dd;
1618 : my_deriv[kdx+j] += dd;
1619 : my_sum[k] += FFF*tsq;
1620 : }
1621 : }
1622 : }
1623 : }
1624 : // only the threads that actually ran have filled their buffers: without OpenMP
1625 : // (or when the runtime gives fewer threads than requested) the others are empty
1626 307 : std::vector<unsigned> filled;
1627 614 : for(unsigned t=1; t<nt; ++t) {
1628 307 : if(sum_t[t].empty()) {
1629 0 : continue;
1630 : }
1631 307 : filled.push_back(t);
1632 3605 : for(unsigned k=0; k<numq; ++k) {
1633 3298 : sum[k] += sum_t[t][k];
1634 : }
1635 : }
1636 307 : if(!filled.empty()) {
1637 307 : #pragma omp parallel for num_threads(nt)
1638 : for(unsigned i=0; i<deriv.size(); ++i) {
1639 : for(const auto t : filled) {
1640 : deriv[i] += deriv_t[t][i];
1641 : }
1642 : }
1643 : }
1644 :
1645 307 : if(!serial) {
1646 301 : comm.Sum(&sum[0], numq);
1647 : }
1648 :
1649 307 : if (resolution) {
1650 : // the resolution function is applied to the whole intensity, self term included
1651 1408 : for (unsigned k=0; k<numq; ++k) {
1652 1320 : sum[k]+=FF_rank[k];
1653 : }
1654 88 : const std::vector<double> old_sum(sum);
1655 1408 : for (unsigned k=0; k<numq; ++k) {
1656 1320 : sum[k] = 0.;
1657 21120 : for (unsigned l=0; l<numq; ++l) {
1658 19800 : sum[k] += smear_[k*numq+l]*old_sum[l];
1659 : }
1660 : }
1661 : // the smearing is linear in the data, so it is applied to the partial
1662 : // derivatives of this rank (of all the particles) before summing them
1663 88 : #pragma omp parallel for num_threads(nt) schedule(static)
1664 : for (unsigned i=0; i<size; i++) {
1665 : std::vector<Vector> old_deriv_i(numq);
1666 : for (unsigned l=0; l<numq; l++) {
1667 : old_deriv_i[l] = deriv[l*size+i];
1668 : }
1669 : for (unsigned k=0; k<numq; k++) {
1670 : Vector d;
1671 : for (unsigned l=0; l<numq; l++) {
1672 : d += smear_[k*numq+l]*old_deriv_i[l];
1673 : }
1674 : deriv[k*size+i] = d;
1675 : }
1676 : }
1677 : } else {
1678 2197 : for (unsigned k=0; k<numq; ++k) {
1679 1978 : sum[k]+=FF_rank[k];
1680 : }
1681 : }
1682 :
1683 : // with DOSCORE only the contraction with the score derivatives is summed (in calculate)
1684 307 : if(!serial && reduce_deriv) {
1685 91 : comm.Sum(&deriv[0][0], 3*deriv.size());
1686 : }
1687 :
1688 3605 : for (unsigned k=0; k<numq; ++k) {
1689 : std::string num;
1690 3298 : Tools::convert(k,num);
1691 3298 : Value* val=getPntrToComponent("q-"+num);
1692 3298 : val->set(sum[k]);
1693 3298 : if(getDoScore()) {
1694 2142 : setCalcData(k, sum[k]);
1695 : }
1696 : }
1697 614 : }
1698 :
1699 307 : void SAXS::calculate() {
1700 307 : if(pbc) {
1701 264 : makeWhole();
1702 : }
1703 :
1704 307 : const size_t size = getNumberOfAtoms();
1705 : const size_t numq = q_list.size();
1706 :
1707 : // these are the derivatives associated to the coarse graining
1708 307 : std::vector<Vector> aa_deriv(size);
1709 :
1710 : size_t beads_size = size;
1711 307 : if(onebead) {
1712 27 : beads_size = nres;
1713 : }
1714 : // these are the derivatives particle,q
1715 307 : std::vector<Vector> bd_deriv(numq*beads_size);
1716 :
1717 307 : std::vector<Vector> beads_pos(beads_size);
1718 307 : if(onebead) {
1719 27 : std::vector<double> sum_mass(nres,0.);
1720 27 : std::vector<Vector> sum_pos(nres,Vector(0,0,0));
1721 84133 : for(unsigned atom_id=0; atom_id<size; atom_id++) {
1722 84106 : const unsigned resid = residue_atom[atom_id];
1723 84106 : aa_deriv[atom_id] = Vector(atoms_masses[atom_id],atoms_masses[atom_id],atoms_masses[atom_id]);
1724 84106 : sum_pos[resid] += atoms_masses[atom_id] * getPosition(atom_id);
1725 84106 : sum_mass[resid] += atoms_masses[atom_id];
1726 : }
1727 5145 : for(unsigned resid=0; resid<nres; resid++) {
1728 5118 : beads_pos[resid] = sum_pos[resid]/sum_mass[resid];
1729 : }
1730 84133 : for(unsigned atom_id=0; atom_id<size; atom_id++) {
1731 84106 : aa_deriv[atom_id] /= sum_mass[residue_atom[atom_id]];
1732 : }
1733 : // SASA
1734 27 : std::vector<bool> solv_res(nres, 0);
1735 27 : if(saxs) {
1736 12 : if(getStep()%solv_stride == 0 || isFirstStep) {
1737 12 : isFirstStep = 0;
1738 12 : if(rho_corr!=rho) {
1739 6 : sasa_calculate(solv_res);
1740 : }
1741 12 : Iq0=0.;
1742 2375 : for(unsigned i=0; i<nres; ++i) {
1743 : // Iq0 accumulates the MAGNITUDE of each bead amplitude and is left as
1744 : // sum |A| on purpose: it stays well conditioned near a match point,
1745 : // where sum A passes through zero, and it equals |sum A| whenever
1746 : // every bead shares a sign, which is always the case in SAXS.
1747 2363 : const double rho_i = (solv_res[i] == 1) ? rho_corr : rho;
1748 2363 : bead_sign[i] = beadSign(Iq0_solv[i], Iq0_mix[i], rho_i);
1749 2363 : Iq0 += std::sqrt(std::fabs(Iq0_vac[i] + rho_i*rho_i*Iq0_solv[i] - rho_i*Iq0_mix[i]));
1750 : }
1751 : // Form Factors
1752 114 : for(unsigned k=0; k<numq; ++k) {
1753 21363 : for(unsigned i=0; i<nres; ++i) {
1754 21261 : if(solv_res[i] == 0) { // buried
1755 18921 : FF_value[i][k] = bead_sign[i]*std::sqrt(std::fabs(FF_value_vacuum[atoi[i]][k] + rho*rho*FF_value_solv[atoi[i]][k] - rho*FF_value_mixed[atoi[i]][k]))/Iq0;
1756 : } else { // surface
1757 2340 : FF_value[i][k] = bead_sign[i]*std::sqrt(std::fabs(FF_value_vacuum[atoi[i]][k] + rho_corr*rho_corr*FF_value_solv[atoi[i]][k] - rho_corr*FF_value_mixed[atoi[i]][k]))/Iq0;
1758 : }
1759 :
1760 : }
1761 : }
1762 114 : for(unsigned k=0; k<numq; ++k) {
1763 102 : FF_rank[k]=0.;
1764 21363 : for(unsigned i=0; i<nres; ++i) {
1765 21261 : FF_rank[k]+=FF_value[i][k]*FF_value[i][k];
1766 : }
1767 : }
1768 :
1769 : }
1770 : } else { // SANS
1771 15 : std::vector<bool> deut_res(nres, 0);
1772 15 : double solv_sc_length = 0.1*(0.580 + 2.*((1. - deuter_conc) * (-0.374) + deuter_conc * 0.667)); // per water electron (10 electrons)
1773 15 : double rho_sans = rho * solv_sc_length;
1774 15 : double rho_sans_corr = rho_corr * solv_sc_length;
1775 15 : if(getStep()%solv_stride == 0 || isFirstStep) {
1776 15 : isFirstStep = 0;
1777 15 : if(deuter_conc!=0.||rho != rho_corr) {
1778 14 : sasa_calculate(solv_res);
1779 : }
1780 : // the exposed residues are deuterated with probability deuter_conc: the random
1781 : // numbers are drawn by the first rank (same sequence as before on every rank)
1782 15 : std::vector<int> deut_draw(nres,0);
1783 15 : if(comm.Get_rank()==0) {
1784 1491 : for(unsigned i=0; i<nres; ++i) {
1785 1482 : if(solv_res[i] == 1) {
1786 884 : deut_draw[i] = (random_deut_.RandU01()<deuter_conc) ? 1 : 0;
1787 : }
1788 : }
1789 : }
1790 15 : if(comm.Get_size()>1) {
1791 12 : comm.Bcast(deut_draw,0);
1792 : }
1793 15 : Iq0=0.;
1794 2770 : for(unsigned i=0; i<nres; ++i) {
1795 : // The density and the H/D term set are selected once and used for both
1796 : // the sign and the magnitude, so the two can never disagree. In SANS
1797 : // the sign genuinely varies between beads near a contrast-match point.
1798 : double vac_i, mix_i, rho_i;
1799 2755 : if(solv_res[i] == 1) {
1800 : rho_i = rho_sans_corr;
1801 1004 : if(deut_draw[i]) {
1802 : deut_res[i] = 1;
1803 336 : vac_i = Iq0_vac_D[i];
1804 336 : mix_i = Iq0_mix_D[i];
1805 : } else {
1806 668 : vac_i = Iq0_vac_H[i];
1807 668 : mix_i = Iq0_mix_H[i];
1808 : }
1809 : } else {
1810 : rho_i = rho_sans;
1811 1751 : vac_i = Iq0_vac_H[i];
1812 1751 : mix_i = Iq0_mix_H[i];
1813 : }
1814 2755 : bead_sign[i] = beadSign(Iq0_solv_H[i], mix_i, rho_i);
1815 2755 : Iq0 += std::sqrt(std::fabs(vac_i + rho_i*rho_i*Iq0_solv_H[i] - rho_i*mix_i));
1816 : }
1817 : // Form Factors
1818 139 : for(unsigned k=0; k<numq; ++k) {
1819 23679 : for(unsigned i=0; i<nres; ++i) {
1820 23555 : if(solv_res[i] == 0) { // hydrogen
1821 15215 : FF_value[i][k] = bead_sign[i]*std::sqrt(std::fabs(FF_value_vacuum_H[atoi[i]][k] + rho_sans*rho_sans*FF_value_solv_H[atoi[i]][k] - rho_sans*FF_value_mixed_H[atoi[i]][k]))/Iq0;
1822 : } else {
1823 8340 : if(deut_res[i] == 0) {
1824 5652 : FF_value[i][k] = bead_sign[i]*std::sqrt(std::fabs(FF_value_vacuum_H[atoi[i]][k] + rho_sans_corr*rho_sans_corr*FF_value_solv_H[atoi[i]][k] - rho_sans_corr*FF_value_mixed_H[atoi[i]][k]))/Iq0;
1825 : } else {
1826 2688 : FF_value[i][k] = bead_sign[i]*std::sqrt(std::fabs(FF_value_vacuum_D[atoi[i]][k] + rho_sans_corr*rho_sans_corr*FF_value_solv_H[atoi[i]][k] - rho_sans_corr*FF_value_mixed_D[atoi[i]][k]))/Iq0;
1827 : }
1828 : }
1829 :
1830 : }
1831 : }
1832 139 : for(unsigned k=0; k<numq; ++k) {
1833 124 : FF_rank[k]=0.;
1834 23679 : for(unsigned i=0; i<nres; ++i) {
1835 23555 : FF_rank[k]+=FF_value[i][k]*FF_value[i][k];
1836 : }
1837 : }
1838 :
1839 15 : }
1840 : }
1841 : // not ONEBEAD
1842 27 : } else {
1843 112158 : for(unsigned i=0; i<size; ++i) {
1844 111878 : beads_pos[i] = getPosition(i);
1845 : }
1846 560 : aa_deriv = std::vector<Vector>(size,(Vector(1,1,1)));
1847 : }
1848 :
1849 : // with DOSCORE the derivatives of the intensities are first contracted with the
1850 : // derivatives of the score, and only then summed over the ranks
1851 307 : calculate_cpu(beads_pos, bd_deriv, !getDoScore());
1852 :
1853 307 : std::vector<double> chi2_dq;
1854 307 : if(chi2 && !getDoScore()) {
1855 4 : chi2_dq.assign(numq,0.);
1856 : }
1857 : double chi2_raw=0.;
1858 : double chi2_reduced=0.;
1859 : double chi2_scale=1.;
1860 307 : if(chi2) {
1861 : double sum_xy=0.;
1862 : double sum_xx=0.;
1863 : double sum_yy=0.;
1864 4 : std::vector<double> calcint(numq,0.);
1865 16 : for(unsigned k=0; k<numq; ++k) {
1866 : std::string num;
1867 12 : Tools::convert(k,num);
1868 12 : calcint[k]=getPntrToComponent("q-"+num)->get();
1869 12 : if(!std::isfinite(calcint[k])) {
1870 0 : error("Non-finite calculated intensity encountered while evaluating CHI2");
1871 : }
1872 12 : const double weight=1./(experr[k]*experr[k]);
1873 12 : sum_xy += weight*calcint[k]*expint[k];
1874 12 : sum_xx += weight*calcint[k]*calcint[k];
1875 12 : sum_yy += weight*expint[k]*expint[k];
1876 : }
1877 4 : if(!std::isfinite(sum_xx) || sum_xx<=0.) {
1878 0 : error("Cannot evaluate CHI2 because the weighted calculated-intensity norm is not positive and finite");
1879 : }
1880 4 : chi2_scale=sum_xy/sum_xx;
1881 4 : chi2_raw=sum_yy-sum_xy*sum_xy/sum_xx;
1882 4 : const double roundoff_tol=1.e-12*std::max(1.,std::fabs(sum_yy));
1883 4 : if(chi2_raw<0. && chi2_raw>=-roundoff_tol) {
1884 : chi2_raw=0.;
1885 : }
1886 4 : if(!std::isfinite(chi2_scale) || !std::isfinite(chi2_raw) || chi2_raw<0.) {
1887 0 : error("Non-finite or negative CHI2 encountered after scale optimization");
1888 : }
1889 4 : chi2_reduced=chi2_raw/static_cast<double>(numq-1);
1890 4 : if(!getDoScore()) {
1891 16 : for(unsigned k=0; k<numq; ++k) {
1892 12 : const double weight=1./(experr[k]*experr[k]);
1893 12 : chi2_dq[k]=2.*weight*chi2_scale*(chi2_scale*calcint[k]-expint[k]);
1894 : }
1895 : }
1896 4 : getPntrToComponent("chi2")->set(chi2_raw);
1897 4 : getPntrToComponent("chi2red")->set(chi2_reduced);
1898 8 : getPntrToComponent("chi2scale")->set(chi2_scale);
1899 : }
1900 :
1901 307 : if(getDoScore()) {
1902 : /* Metainference */
1903 210 : double score = getScore();
1904 210 : setScore(score);
1905 : }
1906 :
1907 307 : if(chi2ensemble) {
1908 : double ensemble_raw=chi2_raw;
1909 : double ensemble_reduced=chi2_reduced;
1910 : double ensemble_scale=chi2_scale;
1911 0 : if(chi2ensemble_replicas>1) {
1912 0 : std::vector<double> ensemble(numq,0.);
1913 0 : if(comm.Get_rank()==0) {
1914 0 : for(unsigned k=0; k<numq; ++k) {
1915 : std::string num;
1916 0 : Tools::convert(k,num);
1917 0 : ensemble[k]=getPntrToComponent("q-"+num)->get();
1918 : }
1919 0 : multi_sim_comm.Sum(&ensemble[0],numq);
1920 0 : for(unsigned k=0; k<numq; ++k) {
1921 0 : ensemble[k]/=static_cast<double>(chi2ensemble_replicas);
1922 : }
1923 : }
1924 0 : comm.Sum(&ensemble[0],numq);
1925 : double sum_xy=0.;
1926 : double sum_xx=0.;
1927 : double sum_yy=0.;
1928 0 : for(unsigned k=0; k<numq; ++k) {
1929 0 : if(!std::isfinite(ensemble[k])) {
1930 0 : error("Non-finite ensemble intensity encountered while evaluating CHI2ENSEMBLE");
1931 : }
1932 0 : const double weight=1./(experr[k]*experr[k]);
1933 0 : sum_xy += weight*ensemble[k]*expint[k];
1934 0 : sum_xx += weight*ensemble[k]*ensemble[k];
1935 0 : sum_yy += weight*expint[k]*expint[k];
1936 : }
1937 0 : if(!std::isfinite(sum_xx) || sum_xx<=0.) {
1938 0 : error("Cannot evaluate CHI2ENSEMBLE because the weighted calculated-intensity norm is not positive and finite");
1939 : }
1940 0 : ensemble_scale=sum_xy/sum_xx;
1941 0 : ensemble_raw=sum_yy-sum_xy*sum_xy/sum_xx;
1942 0 : const double roundoff_tol=1.e-12*std::max(1.,std::fabs(sum_yy));
1943 0 : if(ensemble_raw<0. && ensemble_raw>=-roundoff_tol) {
1944 : ensemble_raw=0.;
1945 : }
1946 0 : if(!std::isfinite(ensemble_scale) || !std::isfinite(ensemble_raw) || ensemble_raw<0.) {
1947 0 : error("Non-finite or negative CHI2ENSEMBLE encountered after scale optimization");
1948 : }
1949 0 : ensemble_reduced=ensemble_raw/static_cast<double>(numq-1);
1950 : }
1951 0 : getPntrToComponent("chi2ensemble")->set(ensemble_raw);
1952 0 : getPntrToComponent("chi2ensemblered")->set(ensemble_reduced);
1953 0 : getPntrToComponent("chi2ensemblescale")->set(ensemble_scale);
1954 : }
1955 :
1956 307 : std::vector<Vector> chi2_atom_deriv;
1957 307 : if(chi2 && !getDoScore()) {
1958 4 : chi2_atom_deriv.assign(size,Vector(0,0,0));
1959 : }
1960 307 : Tensor chi2_box_deriv;
1961 :
1962 : // derivatives of each intensity (without DOSCORE)
1963 1463 : for (unsigned k=0; k<numq && !getDoScore(); ++k) {
1964 1156 : const unsigned kdx=k*beads_size;
1965 1156 : Tensor deriv_box;
1966 : std::string num;
1967 1156 : Tools::convert(k,num);
1968 1156 : Value* val=getPntrToComponent("q-"+num);
1969 :
1970 1156 : if(onebead) {
1971 736540 : for(unsigned atom_id=0; atom_id<size; ++atom_id) {
1972 736314 : const unsigned bead_id = residue_atom[atom_id];
1973 : const Vector qderiv(aa_deriv[atom_id][0]*bd_deriv[kdx+bead_id][0],
1974 : aa_deriv[atom_id][1]*bd_deriv[kdx+bead_id][1],
1975 736314 : aa_deriv[atom_id][2]*bd_deriv[kdx+bead_id][2]);
1976 736314 : setAtomsDerivatives(val, atom_id, qderiv);
1977 736314 : deriv_box += Tensor(getPosition(atom_id),qderiv);
1978 736314 : if(chi2) {
1979 0 : chi2_atom_deriv[atom_id] += chi2_dq[k]*qderiv;
1980 : }
1981 : }
1982 : } else {
1983 744246 : for(unsigned i=0; i<beads_size; ++i) {
1984 : const Vector qderiv(bd_deriv[kdx+i][0],
1985 : bd_deriv[kdx+i][1],
1986 743316 : bd_deriv[kdx+i][2]);
1987 743316 : setAtomsDerivatives(val, i, qderiv);
1988 743316 : deriv_box += Tensor(getPosition(i),qderiv);
1989 743316 : if(chi2) {
1990 18 : chi2_atom_deriv[i] += chi2_dq[k]*qderiv;
1991 : }
1992 : }
1993 : }
1994 1156 : if(chi2) {
1995 24 : chi2_box_deriv += chi2_dq[k]*deriv_box;
1996 : }
1997 1156 : setBoxDerivatives(val, -deriv_box);
1998 : }
1999 :
2000 307 : if(getDoScore()) {
2001 : // derivative of the score with respect to the beads, from all the q values
2002 210 : std::vector<Vector> score_deriv(beads_size, Vector(0,0,0));
2003 210 : #pragma omp parallel for num_threads(OpenMP::getNumThreads())
2004 : for(unsigned i=0; i<beads_size; ++i) {
2005 : for(unsigned k=0; k<numq; ++k) {
2006 : score_deriv[i] += getMetaDer(k)*bd_deriv[k*beads_size+i];
2007 : }
2008 : }
2009 : // calculate_cpu does not sum the derivatives over the ranks with DOSCORE
2010 210 : if(!serial && comm.Get_size()>1) {
2011 210 : comm.Sum(&score_deriv[0][0], 3*score_deriv.size());
2012 : }
2013 210 : Value* val=getPntrToComponent("score");
2014 210 : Tensor deriv_box;
2015 45612 : for(unsigned atom_id=0; atom_id<size; ++atom_id) {
2016 45402 : const unsigned bead_id = onebead ? residue_atom[atom_id] : atom_id;
2017 : const Vector der(aa_deriv[atom_id][0]*score_deriv[bead_id][0],
2018 : aa_deriv[atom_id][1]*score_deriv[bead_id][1],
2019 45402 : aa_deriv[atom_id][2]*score_deriv[bead_id][2]);
2020 45402 : setAtomsDerivatives(val, atom_id, der);
2021 90804 : deriv_box += Tensor(getPosition(atom_id),der);
2022 : }
2023 210 : setBoxDerivatives(val, -deriv_box);
2024 210 : }
2025 :
2026 307 : if(chi2 && !getDoScore()) {
2027 4 : Value* chi2_val=getPntrToComponent("chi2");
2028 4 : Value* chi2red_val=getPntrToComponent("chi2red");
2029 4 : const double invdof=1./static_cast<double>(numq-1);
2030 10 : for(unsigned atom_id=0; atom_id<size; ++atom_id) {
2031 6 : setAtomsDerivatives(chi2_val, atom_id, chi2_atom_deriv[atom_id]);
2032 6 : setAtomsDerivatives(chi2red_val, atom_id, invdof*chi2_atom_deriv[atom_id]);
2033 : }
2034 4 : setBoxDerivatives(chi2_val, -chi2_box_deriv);
2035 4 : setBoxDerivatives(chi2red_val, -invdof*chi2_box_deriv);
2036 : }
2037 614 : }
2038 :
2039 23 : unsigned SAXS::getOnebeadMapping(const PDB &pdb, const std::vector<AtomNumber> &atoms) {
2040 23 : std::vector<std::string> chains;
2041 23 : pdb.getChainNames( chains );
2042 23 : std::vector<std::vector<std::string> > AtomResidueName;
2043 :
2044 23 : const unsigned n_map = std::max(atoms.size(), pdb.getPositions().size());
2045 23 : glyc_type.assign(n_map, -1);
2046 23 : glyc_bridge.assign(n_map, false);
2047 : // Atom numbers in TEMPLATE traversal order, one entry per atom, ions included.
2048 23 : std::vector<AtomNumber> atom_numbers;
2049 23 : atom_numbers.reserve(atoms.size());
2050 : // Audit trail. Accepting several spellings for the same residue is only safe if the
2051 : // user can see what each one was taken to mean, so every distinct residue name that
2052 : // reaches the glycan or alias path is recorded with its resolution and its count and
2053 : // printed below.
2054 : std::map<std::string, std::pair<int, unsigned> > glyc_seen;
2055 : std::map<std::string, std::pair<std::string, unsigned> > alias_seen;
2056 23 : std::vector<unsigned> glyc_count(NONEBEAD, 0);
2057 : unsigned glyc_nbridge = 0;
2058 :
2059 : // Heavy-atom positions of the TEMPLATE. They are used below to tell a glycosidic
2060 : // (bridging) oxygen from a free hydroxyl, which selects the LCPO atom class of
2061 : // every glycan oxygen. Note that the TEMPLATE is read with scale=1, so these
2062 : // coordinates are in Angstrom, like the LCPO radii.
2063 23 : const std::vector<Vector> &tmpl_pos = pdb.getPositions();
2064 23 : const std::vector<AtomNumber> &tmpl_num = pdb.getAtomNumbers();
2065 23 : std::vector<bool> tmpl_heavy(tmpl_pos.size(), false);
2066 70373 : for(unsigned k=0; k<tmpl_num.size(); ++k) {
2067 70350 : std::string an = pdb.getAtomName(tmpl_num[k]);
2068 70350 : if(an.empty()) {
2069 : continue;
2070 : }
2071 70350 : char e = an.at(0);
2072 70350 : if(isdigit(e) && an.size()>1) {
2073 0 : e = an.at(1);
2074 : }
2075 70350 : tmpl_heavy[k] = (e!='H');
2076 : }
2077 : // Number of heavy atoms covalently bound to a: C-O and C-N bonds are ~1.4 Angstrom
2078 : // while the shortest non-bonded contacts are well above 2.2 Angstrom, so 1.8 is a
2079 : // safe threshold. Only glycan oxygens are queried, so the cost is negligible and
2080 : // it is paid once, at setup.
2081 23 : const double bond_cut = 1.8;
2082 0 : auto nHeavyBonded = [&](AtomNumber a) {
2083 0 : const Vector pa = pdb.getPosition(a);
2084 : unsigned nb = 0;
2085 0 : for(unsigned k=0; k<tmpl_pos.size(); ++k) {
2086 0 : if(!tmpl_heavy[k] || tmpl_num[k].index()==a.index()) {
2087 0 : continue;
2088 : }
2089 : const Vector d = tmpl_pos[k]-pa;
2090 0 : if(std::fabs(d[0])>bond_cut || std::fabs(d[1])>bond_cut || std::fabs(d[2])>bond_cut) {
2091 0 : continue;
2092 : }
2093 0 : if(d.modulo2() < bond_cut*bond_cut) {
2094 0 : nb++;
2095 : }
2096 : }
2097 0 : return nb;
2098 23 : };
2099 : // Same neighbourhood, but returning the template indices instead of the count.
2100 0 : auto listHeavyBonded = [&](AtomNumber a) {
2101 0 : const Vector pa = pdb.getPosition(a);
2102 0 : std::vector<unsigned> nb;
2103 0 : for(unsigned k=0; k<tmpl_pos.size(); ++k) {
2104 0 : if(!tmpl_heavy[k] || tmpl_num[k].index()==a.index()) {
2105 0 : continue;
2106 : }
2107 : const Vector d = tmpl_pos[k]-pa;
2108 0 : if(std::fabs(d[0])>bond_cut || std::fabs(d[1])>bond_cut || std::fabs(d[2])>bond_cut) {
2109 0 : continue;
2110 : }
2111 0 : if(d.modulo2() < bond_cut*bond_cut) {
2112 0 : nb.push_back(k);
2113 : }
2114 : }
2115 0 : return nb;
2116 0 : };
2117 :
2118 : // Every per-atom array is appended here and only here, so that they cannot drift
2119 : // out of step. Returns the running index of the atom just added.
2120 23 : AtomResidueName.resize(2);
2121 70350 : auto registerAtom = [&](AtomNumber a, const std::string &rname, double mass) {
2122 70350 : AtomResidueName[0].push_back(pdb.getAtomName(a));
2123 70350 : AtomResidueName[1].push_back(rname);
2124 70350 : atom_numbers.push_back(a);
2125 70350 : atoms_masses.push_back(mass);
2126 70350 : return AtomResidueName[0].size()-1;
2127 23 : };
2128 :
2129 : // cycle over chains
2130 57 : for(unsigned i=0; i<chains.size(); ++i) {
2131 34 : AtomResidueName.resize(2);
2132 : // cycle over the residues present in the chain
2133 : // (this works also with negative residue numbers and with gaps in the numbering)
2134 4182 : for(const int res : pdb.getResiduesInChain(chains[i])) {
2135 4148 : std::string Rname = pdb.getResidueName(res, chains[i]);
2136 4148 : Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
2137 4148 : const std::string Rraw = Rname;
2138 4148 : Rname = onebeadResidueAlias(Rname);
2139 4148 : if(Rname!=Rraw) {
2140 0 : alias_seen[Rraw].first = Rname;
2141 0 : alias_seen[Rraw].second++;
2142 : }
2143 4148 : std::vector<AtomNumber> res_atoms = pdb.getAtomsInResidue(res, chains[i]);
2144 : // monoatomic ion: a single bead per ion, detected by residue name. We register the
2145 : // atom name/residue name (so readLCPOparam can recognise and skip it for SASA) and
2146 : // use the tabulated atomic mass. The mass is immaterial for a one-atom bead (the COM
2147 : // is the atom itself) but is set correctly for clarity.
2148 4148 : int ion = ionTypeFromResname(Rname);
2149 4148 : if(ion >= 0) {
2150 3 : if(res_atoms.size()!=1) {
2151 0 : error("Monoatomic ion residue "+Rname+" of chain "+chains[i]+" in the TEMPLATE must contain exactly one atom; found "+std::to_string(res_atoms.size())+".");
2152 : }
2153 3 : std::vector<double> a, b;
2154 : double c, v, bN, m;
2155 3 : getIonData(ion, a, b, c, v, bN, m);
2156 6 : for(unsigned a_i=0; a_i<res_atoms.size(); a_i++) {
2157 3 : registerAtom(res_atoms[a_i], Rname, m);
2158 3 : residue_atom.push_back(atoms_per_bead.size());
2159 : }
2160 3 : atoms_per_bead.push_back(res_atoms.size());
2161 : continue;
2162 : }
2163 : // Glycans: a monosaccharide is a single bead, like an amino acid. The presence
2164 : // of an amide nitrogen is what separates GlcNAc from Glc and GalNAc from Gal,
2165 : // so that both the PDB chemical-component codes (NAG/NDG, NGA/A2G) and the
2166 : // force-field conventions that keep the parent hexose name are handled.
2167 : bool res_hasN = false;
2168 5061 : for(unsigned a=0; a<res_atoms.size(); a++) {
2169 5061 : std::string an = pdb.getAtomName(res_atoms[a]);
2170 5061 : if(!an.empty() && an.at(0)=='N') {
2171 : res_hasN = true;
2172 : break;
2173 : }
2174 : }
2175 74492 : for(unsigned a=0; a<res_atoms.size(); a++) {
2176 695209 : for(unsigned b=a+1; b<res_atoms.size(); b++) {
2177 624862 : if(pdb.getAtomName(res_atoms[a])==pdb.getAtomName(res_atoms[b])) {
2178 0 : error("Atom "+pdb.getAtomName(res_atoms[a])+" appears more than once in residue "+
2179 0 : Rname+" of chain "+chains[i]+" in the TEMPLATE. This usually means the file still "
2180 : "contains alternate locations (altLoc) or several models. Keep one of each before "
2181 : "running ONEBEAD.");
2182 : }
2183 : }
2184 : }
2185 4145 : const int glyc = glycanTypeFromResname(Rname, res_hasN);
2186 4145 : const bool is_onebead_res = (glyc>=0) || isOnebeadProteinResidue(pdb,Rname);
2187 : if(glyc>=0) {
2188 0 : glyc_count[glyc]++;
2189 0 : glyc_seen[Rraw].first = glyc;
2190 0 : glyc_seen[Rraw].second++;
2191 4145 : } else if(isUnsupportedGlycan(Rname)) {
2192 0 : error("Residue "+Rname+" is a monosaccharide for which no ONEBEAD parameters are "
2193 : "available. Remove it, or exclude it from ATOMS=.");
2194 : }
2195 4145 : std::vector<unsigned> tmp_residue_atom;
2196 4145 : tmp_residue_atom.resize(3,0);
2197 : // cycle over atoms
2198 74492 : for(unsigned a=0; a<res_atoms.size(); a++) {
2199 : // operations shared among all beads
2200 70347 : std::string Aname=pdb.getAtomName(res_atoms[a]);
2201 : char type;
2202 70347 : char first = Aname.at(0);
2203 : // We assume that element symbol is first letter, if not a number
2204 70347 : if (!isdigit(first)) {
2205 : type = first;
2206 : // otherwise is the second
2207 : } else {
2208 0 : type = Aname.at(1);
2209 : }
2210 : double amass = 0.;
2211 : if (type == 'H') {
2212 : amass = 1.008;
2213 : } else if(type == 'C') {
2214 : amass = 12.011;
2215 : } else if(type == 'N') {
2216 : amass = 14.007;
2217 : } else if(type == 'O') {
2218 : amass = 15.999;
2219 : } else if(type == 'S') {
2220 : amass = 32.065;
2221 : } else if(type == 'P') {
2222 : amass = 30.974;
2223 : } else {
2224 0 : error("Unknown element in mass extraction\n");
2225 : }
2226 70347 : const unsigned idx = registerAtom(res_atoms[a], Rname, amass);
2227 70347 : if(glyc>=0) {
2228 0 : glyc_type[idx] = glyc;
2229 : // a glycan oxygen bound to two heavy atoms is either the ring oxygen or
2230 : // a glycosidic bridge; both are ethers as far as LCPO is concerned
2231 0 : if(type=='O' && nHeavyBonded(res_atoms[a])>1) {
2232 : glyc_bridge[idx] = true;
2233 0 : glyc_nbridge++;
2234 : }
2235 0 : residue_atom.push_back(atoms_per_bead.size());
2236 70347 : } else if(isOnebeadProteinResidue(pdb,Rname)) {
2237 68023 : residue_atom.push_back(atoms_per_bead.size());
2238 : } else {
2239 : // check for nucleic acids
2240 : // Pentose bead
2241 2246 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" || Aname=="O3'" ||
2242 1934 : Aname=="C3'" || Aname=="O2'" || Aname=="C2'" || Aname=="C1'" || Aname=="H5'" ||
2243 1544 : Aname=="H5''" || Aname=="H4'" || Aname=="H3'" || Aname=="H2'" || Aname=="H2''" ||
2244 1232 : Aname=="H2'2" || Aname=="H1'" || Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" ||
2245 3386 : Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ||
2246 1062 : Aname=="H3T" ) {
2247 1262 : residue_atom.push_back(atoms_per_bead.size()+0);
2248 1262 : tmp_residue_atom[0]++;
2249 : }
2250 : // Nucleobase bead
2251 984 : else if(Aname=="N1" || Aname=="N2" || Aname=="N3" || Aname=="N4" || Aname=="N6" ||
2252 906 : Aname=="N7" || Aname=="N9" || Aname=="C2" || Aname=="C4" || Aname=="C5" ||
2253 672 : Aname=="C6" || Aname=="C7" || Aname=="C8" || Aname=="O2" || Aname=="O4" ||
2254 438 : Aname=="O6" || Aname=="H1" || Aname=="H2" || Aname=="H3" || Aname=="H5" ||
2255 282 : Aname=="H6" || Aname=="H8" || Aname=="H21" || Aname=="H22" || Aname=="H41" ||
2256 1266 : Aname=="H42" || Aname=="H61" || Aname=="H62" || Aname=="H71" || Aname=="H72" ||
2257 204 : Aname=="H73" ) {
2258 858 : residue_atom.push_back(atoms_per_bead.size()+1);
2259 858 : tmp_residue_atom[1]++;
2260 : }
2261 : // PO bead
2262 136 : else if(Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" || Aname=="O1P" ||
2263 204 : Aname=="O2P" || Aname=="O3P" || Aname=="HP" || Aname=="HOP3" ) {
2264 204 : residue_atom.push_back(atoms_per_bead.size()+2);
2265 204 : tmp_residue_atom[2]++;
2266 : }
2267 : // error
2268 : else {
2269 0 : error("Atom name "+Aname+" cannot be indexed to any bead. Check the PDB.");
2270 : }
2271 : }
2272 : }
2273 4145 : if(is_onebead_res) {
2274 4067 : atoms_per_bead.push_back(res_atoms.size());
2275 : } else {
2276 78 : if(tmp_residue_atom[0]==0) {
2277 0 : error("Nucleotide residue "+Rname+" of chain "+chains[i]+" in the TEMPLATE has no atoms assigned to the pentose bead.");
2278 : }
2279 78 : if(tmp_residue_atom[1]==0) {
2280 0 : error("Nucleotide residue "+Rname+" of chain "+chains[i]+" in the TEMPLATE has no atoms assigned to the nucleobase bead.");
2281 : }
2282 78 : atoms_per_bead.push_back(tmp_residue_atom[0]);
2283 78 : atoms_per_bead.push_back(tmp_residue_atom[1]);
2284 78 : if(tmp_residue_atom[2]>0) {
2285 68 : atoms_per_bead.push_back(tmp_residue_atom[2]);
2286 : }
2287 : }
2288 4182 : }
2289 : }
2290 : unsigned glyc_tot = 0;
2291 207 : for(unsigned s=GLYC_FUC; s<=GLYC_SIA; ++s) {
2292 184 : glyc_tot += glyc_count[s];
2293 : }
2294 : // Protein-glycan junction. The side-chain atom that receives the glycan loses its
2295 : // hydrogen and gains a heavy neighbour: ASN ND2 becomes a secondary amide, SER OG /
2296 : // THR OG1 / TYR OH become ethers. That is the same change of LCPO class as for a
2297 : // glycosidic oxygen, so the acceptor is flagged here and readLCPOparam() picks up
2298 : // the "_L" entry. The bead composition is untouched: the form factors are not
2299 : // affected, only the solvent-accessible surface.
2300 : unsigned nlink = 0;
2301 23 : if(glyc_tot>0) {
2302 0 : for(unsigned idx=0; idx<glyc_type.size() && idx<AtomResidueName[0].size(); ++idx) {
2303 0 : if(glyc_type[idx]<0) {
2304 0 : continue;
2305 : }
2306 : // the anomeric carbon is C1 in a pyranose and C2 in a sialic acid
2307 : const std::string &an = AtomResidueName[0][idx];
2308 0 : const bool anomeric = (glyc_type[idx]==GLYC_SIA) ? (an=="C2") : (an=="C1");
2309 0 : if(!anomeric || idx>=atom_numbers.size()) {
2310 0 : continue;
2311 : }
2312 0 : const std::vector<unsigned> nb = listHeavyBonded(atom_numbers[idx]);
2313 0 : for(unsigned n=0; n<nb.size(); ++n) {
2314 : // find the running index of the bonded atom
2315 0 : for(unsigned j=0; j<atom_numbers.size(); ++j) {
2316 0 : if(atom_numbers[j].index()!=tmpl_num[nb[n]].index()) {
2317 : continue;
2318 : }
2319 0 : if(glyc_type[j]<0 && j<glyc_bridge.size() && !glyc_bridge[j]) {
2320 : glyc_bridge[j] = true;
2321 0 : nlink++;
2322 : }
2323 : break;
2324 : }
2325 : }
2326 0 : }
2327 : }
2328 23 : if(!alias_seen.empty()) {
2329 0 : log.printf(" Residue-name aliases applied:\n");
2330 0 : for(std::map<std::string, std::pair<std::string, unsigned> >::const_iterator it=alias_seen.begin();
2331 0 : it!=alias_seen.end(); ++it) {
2332 0 : log.printf(" %-8s -> %-8s (%u residues)\n",
2333 0 : it->first.c_str(), it->second.first.c_str(), it->second.second);
2334 : }
2335 : }
2336 23 : if(glyc_tot>0) {
2337 0 : const char* gname[8] = {"Fuc","Man(a)","Man(b)","Gal","Glc","GlcNAc","GalNAc","Neu5Ac"};
2338 0 : log.printf(" Glycan beads: %u (", glyc_tot);
2339 0 : for(unsigned s=GLYC_FUC; s<=GLYC_SIA; ++s) {
2340 0 : if(glyc_count[s]>0) {
2341 0 : log.printf(" %s:%u", gname[s-GLYC_FUC], glyc_count[s]);
2342 : }
2343 : }
2344 0 : log.printf(" ), %u bridging/ring oxygens, %u protein/nucleic linkages\n",
2345 : glyc_nbridge, nlink);
2346 0 : log.printf(" Glycan residue names as read, and the bead type each was resolved to:\n");
2347 0 : for(std::map<std::string, std::pair<int, unsigned> >::const_iterator it=glyc_seen.begin();
2348 0 : it!=glyc_seen.end(); ++it) {
2349 0 : log.printf(" %-8s -> %-8s (%u residues)\n", it->first.c_str(),
2350 0 : gname[it->second.first-GLYC_FUC], it->second.second);
2351 : }
2352 : }
2353 : // the per-atom arrays are all appended by registerAtom(), so these can only fail if
2354 : // a future branch bypasses it
2355 23 : plumed_massert(atom_numbers.size()==AtomResidueName[0].size(),
2356 : "getOnebeadMapping: atom_numbers and AtomResidueName out of step");
2357 23 : plumed_massert(atom_numbers.size()==AtomResidueName[1].size(),
2358 : "getOnebeadMapping: AtomResidueName rows out of step");
2359 23 : plumed_massert(atom_numbers.size()==atoms_masses.size(),
2360 : "getOnebeadMapping: atoms_masses out of step");
2361 23 : plumed_massert(atom_numbers.size()==residue_atom.size(),
2362 : "getOnebeadMapping: residue_atom out of step");
2363 :
2364 23 : if(atom_numbers.size()!=atoms.size()) {
2365 0 : std::string msg = "The TEMPLATE describes " + std::to_string(atom_numbers.size()) +
2366 0 : " atoms but ATOMS selects " + std::to_string(atoms.size()) + ". For ONEBEAD the "
2367 : "TEMPLATE must contain exactly the atoms selected by ATOMS, in the same order. ";
2368 0 : if(atom_numbers.size()>atoms.size()) {
2369 : msg += "Remove from the TEMPLATE whatever is not in ATOMS (water, ions, other chains).";
2370 : } else {
2371 : msg += "The TEMPLATE is missing atoms that ATOMS selects.";
2372 : }
2373 0 : error(msg);
2374 : }
2375 70373 : for(unsigned i=0; i<atoms.size(); ++i) {
2376 70350 : if(atom_numbers[i].index()!=atoms[i].index()) {
2377 0 : error("TEMPLATE and ATOMS disagree at position " + std::to_string(i+1) + ": the TEMPLATE has atom " +
2378 0 : std::to_string(atom_numbers[i].serial()) + " (" + AtomResidueName[0][i] + " of " +
2379 0 : AtomResidueName[1][i] + ") where ATOMS has atom " + std::to_string(atoms[i].serial()) +
2380 : ". For ONEBEAD the two must list the same atoms in the same order; note that the TEMPLATE is "
2381 : "read chain by chain and, within a chain, by ascending residue number, so the atoms of each "
2382 : "chain must be contiguous and its residues in ascending order.");
2383 : }
2384 : }
2385 23 : readLCPOparam(AtomResidueName, atoms.size());
2386 46 : return atoms_per_bead.size();
2387 46 : }
2388 :
2389 12 : void SAXS::getMartiniFFparam(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > ¶meter) {
2390 12 : parameter[ALA_BB].push_back(9.045);
2391 12 : parameter[ALA_BB].push_back(-0.098114);
2392 12 : parameter[ALA_BB].push_back(7.54281);
2393 12 : parameter[ALA_BB].push_back(-1.97438);
2394 12 : parameter[ALA_BB].push_back(-8.32689);
2395 12 : parameter[ALA_BB].push_back(6.09318);
2396 12 : parameter[ALA_BB].push_back(-1.18913);
2397 :
2398 12 : parameter[ARG_BB].push_back(10.729);
2399 12 : parameter[ARG_BB].push_back(-0.0392574);
2400 12 : parameter[ARG_BB].push_back(1.15382);
2401 12 : parameter[ARG_BB].push_back(-0.155999);
2402 12 : parameter[ARG_BB].push_back(-2.43619);
2403 12 : parameter[ARG_BB].push_back(1.72922);
2404 12 : parameter[ARG_BB].push_back(-0.33799);
2405 :
2406 12 : parameter[ARG_SC1].push_back(-2.796);
2407 12 : parameter[ARG_SC1].push_back(0.472403);
2408 12 : parameter[ARG_SC1].push_back(8.07424);
2409 12 : parameter[ARG_SC1].push_back(4.37299);
2410 12 : parameter[ARG_SC1].push_back(-10.7398);
2411 12 : parameter[ARG_SC1].push_back(4.95677);
2412 12 : parameter[ARG_SC1].push_back(-0.725797);
2413 :
2414 12 : parameter[ARG_SC2].push_back(15.396);
2415 12 : parameter[ARG_SC2].push_back(0.0636736);
2416 12 : parameter[ARG_SC2].push_back(-1.258);
2417 12 : parameter[ARG_SC2].push_back(1.93135);
2418 12 : parameter[ARG_SC2].push_back(-4.45031);
2419 12 : parameter[ARG_SC2].push_back(2.49356);
2420 12 : parameter[ARG_SC2].push_back(-0.410721);
2421 :
2422 12 : parameter[ASN_BB].push_back(10.738);
2423 12 : parameter[ASN_BB].push_back(-0.0402162);
2424 12 : parameter[ASN_BB].push_back(1.03007);
2425 12 : parameter[ASN_BB].push_back(-0.254174);
2426 12 : parameter[ASN_BB].push_back(-2.12015);
2427 12 : parameter[ASN_BB].push_back(1.55535);
2428 12 : parameter[ASN_BB].push_back(-0.30963);
2429 :
2430 12 : parameter[ASN_SC1].push_back(9.249);
2431 12 : parameter[ASN_SC1].push_back(-0.0148678);
2432 12 : parameter[ASN_SC1].push_back(5.52169);
2433 12 : parameter[ASN_SC1].push_back(0.00853212);
2434 12 : parameter[ASN_SC1].push_back(-6.71992);
2435 12 : parameter[ASN_SC1].push_back(3.93622);
2436 12 : parameter[ASN_SC1].push_back(-0.64973);
2437 :
2438 12 : parameter[ASP_BB].push_back(10.695);
2439 12 : parameter[ASP_BB].push_back(-0.0410247);
2440 12 : parameter[ASP_BB].push_back(1.03656);
2441 12 : parameter[ASP_BB].push_back(-0.298558);
2442 12 : parameter[ASP_BB].push_back(-2.06064);
2443 12 : parameter[ASP_BB].push_back(1.53495);
2444 12 : parameter[ASP_BB].push_back(-0.308365);
2445 :
2446 12 : parameter[ASP_SC1].push_back(9.476);
2447 12 : parameter[ASP_SC1].push_back(-0.0254664);
2448 12 : parameter[ASP_SC1].push_back(5.57899);
2449 12 : parameter[ASP_SC1].push_back(-0.395027);
2450 12 : parameter[ASP_SC1].push_back(-5.9407);
2451 12 : parameter[ASP_SC1].push_back(3.48836);
2452 12 : parameter[ASP_SC1].push_back(-0.569402);
2453 :
2454 12 : parameter[CYS_BB].push_back(10.698);
2455 12 : parameter[CYS_BB].push_back(-0.0233493);
2456 12 : parameter[CYS_BB].push_back(1.18257);
2457 12 : parameter[CYS_BB].push_back(0.0684464);
2458 12 : parameter[CYS_BB].push_back(-2.792);
2459 12 : parameter[CYS_BB].push_back(1.88995);
2460 12 : parameter[CYS_BB].push_back(-0.360229);
2461 :
2462 12 : parameter[CYS_SC1].push_back(8.199);
2463 12 : parameter[CYS_SC1].push_back(-0.0261569);
2464 12 : parameter[CYS_SC1].push_back(6.79677);
2465 12 : parameter[CYS_SC1].push_back(-0.343845);
2466 12 : parameter[CYS_SC1].push_back(-5.03578);
2467 12 : parameter[CYS_SC1].push_back(2.7076);
2468 12 : parameter[CYS_SC1].push_back(-0.420714);
2469 :
2470 12 : parameter[GLN_BB].push_back(10.728);
2471 12 : parameter[GLN_BB].push_back(-0.0391984);
2472 12 : parameter[GLN_BB].push_back(1.09264);
2473 12 : parameter[GLN_BB].push_back(-0.261555);
2474 12 : parameter[GLN_BB].push_back(-2.21245);
2475 12 : parameter[GLN_BB].push_back(1.62071);
2476 12 : parameter[GLN_BB].push_back(-0.322325);
2477 :
2478 12 : parameter[GLN_SC1].push_back(8.317);
2479 12 : parameter[GLN_SC1].push_back(-0.229045);
2480 12 : parameter[GLN_SC1].push_back(12.6338);
2481 12 : parameter[GLN_SC1].push_back(-7.6719);
2482 12 : parameter[GLN_SC1].push_back(-5.8376);
2483 12 : parameter[GLN_SC1].push_back(5.53784);
2484 12 : parameter[GLN_SC1].push_back(-1.12604);
2485 :
2486 12 : parameter[GLU_BB].push_back(10.694);
2487 12 : parameter[GLU_BB].push_back(-0.0521961);
2488 12 : parameter[GLU_BB].push_back(1.11153);
2489 12 : parameter[GLU_BB].push_back(-0.491995);
2490 12 : parameter[GLU_BB].push_back(-1.86236);
2491 12 : parameter[GLU_BB].push_back(1.45332);
2492 12 : parameter[GLU_BB].push_back(-0.29708);
2493 :
2494 12 : parameter[GLU_SC1].push_back(8.544);
2495 12 : parameter[GLU_SC1].push_back(-0.249555);
2496 12 : parameter[GLU_SC1].push_back(12.8031);
2497 12 : parameter[GLU_SC1].push_back(-8.42696);
2498 12 : parameter[GLU_SC1].push_back(-4.66486);
2499 12 : parameter[GLU_SC1].push_back(4.90004);
2500 12 : parameter[GLU_SC1].push_back(-1.01204);
2501 :
2502 12 : parameter[GLY_BB].push_back(9.977);
2503 12 : parameter[GLY_BB].push_back(-0.0285799);
2504 12 : parameter[GLY_BB].push_back(1.84236);
2505 12 : parameter[GLY_BB].push_back(-0.0315192);
2506 12 : parameter[GLY_BB].push_back(-2.88326);
2507 12 : parameter[GLY_BB].push_back(1.87323);
2508 12 : parameter[GLY_BB].push_back(-0.345773);
2509 :
2510 12 : parameter[HIS_BB].push_back(10.721);
2511 12 : parameter[HIS_BB].push_back(-0.0379337);
2512 12 : parameter[HIS_BB].push_back(1.06028);
2513 12 : parameter[HIS_BB].push_back(-0.236143);
2514 12 : parameter[HIS_BB].push_back(-2.17819);
2515 12 : parameter[HIS_BB].push_back(1.58357);
2516 12 : parameter[HIS_BB].push_back(-0.31345);
2517 :
2518 12 : parameter[HIS_SC1].push_back(-0.424);
2519 12 : parameter[HIS_SC1].push_back(0.665176);
2520 12 : parameter[HIS_SC1].push_back(3.4369);
2521 12 : parameter[HIS_SC1].push_back(2.93795);
2522 12 : parameter[HIS_SC1].push_back(-5.18288);
2523 12 : parameter[HIS_SC1].push_back(2.12381);
2524 12 : parameter[HIS_SC1].push_back(-0.284224);
2525 :
2526 12 : parameter[HIS_SC2].push_back(5.363);
2527 12 : parameter[HIS_SC2].push_back(-0.0176945);
2528 12 : parameter[HIS_SC2].push_back(2.9506);
2529 12 : parameter[HIS_SC2].push_back(-0.387018);
2530 12 : parameter[HIS_SC2].push_back(-1.83951);
2531 12 : parameter[HIS_SC2].push_back(0.9703);
2532 12 : parameter[HIS_SC2].push_back(-0.1458);
2533 :
2534 12 : parameter[HIS_SC3].push_back(5.784);
2535 12 : parameter[HIS_SC3].push_back(-0.0293129);
2536 12 : parameter[HIS_SC3].push_back(2.74167);
2537 12 : parameter[HIS_SC3].push_back(-0.520875);
2538 12 : parameter[HIS_SC3].push_back(-1.62949);
2539 12 : parameter[HIS_SC3].push_back(0.902379);
2540 12 : parameter[HIS_SC3].push_back(-0.139957);
2541 :
2542 12 : parameter[ILE_BB].push_back(10.699);
2543 12 : parameter[ILE_BB].push_back(-0.0188962);
2544 12 : parameter[ILE_BB].push_back(1.217);
2545 12 : parameter[ILE_BB].push_back(0.242481);
2546 12 : parameter[ILE_BB].push_back(-3.13898);
2547 12 : parameter[ILE_BB].push_back(2.07916);
2548 12 : parameter[ILE_BB].push_back(-0.392574);
2549 :
2550 12 : parameter[ILE_SC1].push_back(-4.448);
2551 12 : parameter[ILE_SC1].push_back(1.20996);
2552 12 : parameter[ILE_SC1].push_back(11.5141);
2553 12 : parameter[ILE_SC1].push_back(6.98895);
2554 12 : parameter[ILE_SC1].push_back(-19.1948);
2555 12 : parameter[ILE_SC1].push_back(9.89207);
2556 12 : parameter[ILE_SC1].push_back(-1.60877);
2557 :
2558 12 : parameter[LEU_BB].push_back(10.692);
2559 12 : parameter[LEU_BB].push_back(-0.0414917);
2560 12 : parameter[LEU_BB].push_back(1.1077);
2561 12 : parameter[LEU_BB].push_back(-0.288062);
2562 12 : parameter[LEU_BB].push_back(-2.17187);
2563 12 : parameter[LEU_BB].push_back(1.59879);
2564 12 : parameter[LEU_BB].push_back(-0.318545);
2565 :
2566 12 : parameter[LEU_SC1].push_back(-4.448);
2567 12 : parameter[LEU_SC1].push_back(2.1063);
2568 12 : parameter[LEU_SC1].push_back(6.72381);
2569 12 : parameter[LEU_SC1].push_back(14.6954);
2570 12 : parameter[LEU_SC1].push_back(-23.7197);
2571 12 : parameter[LEU_SC1].push_back(10.7247);
2572 12 : parameter[LEU_SC1].push_back(-1.59146);
2573 :
2574 12 : parameter[LYS_BB].push_back(10.706);
2575 12 : parameter[LYS_BB].push_back(-0.0468629);
2576 12 : parameter[LYS_BB].push_back(1.09477);
2577 12 : parameter[LYS_BB].push_back(-0.432751);
2578 12 : parameter[LYS_BB].push_back(-1.94335);
2579 12 : parameter[LYS_BB].push_back(1.49109);
2580 12 : parameter[LYS_BB].push_back(-0.302589);
2581 :
2582 12 : parameter[LYS_SC1].push_back(-2.796);
2583 12 : parameter[LYS_SC1].push_back(0.508044);
2584 12 : parameter[LYS_SC1].push_back(7.91436);
2585 12 : parameter[LYS_SC1].push_back(4.54097);
2586 12 : parameter[LYS_SC1].push_back(-10.8051);
2587 12 : parameter[LYS_SC1].push_back(4.96204);
2588 12 : parameter[LYS_SC1].push_back(-0.724414);
2589 :
2590 12 : parameter[LYS_SC2].push_back(3.070);
2591 12 : parameter[LYS_SC2].push_back(-0.0101448);
2592 12 : parameter[LYS_SC2].push_back(4.67994);
2593 12 : parameter[LYS_SC2].push_back(-0.792529);
2594 12 : parameter[LYS_SC2].push_back(-2.09142);
2595 12 : parameter[LYS_SC2].push_back(1.02933);
2596 12 : parameter[LYS_SC2].push_back(-0.137787);
2597 :
2598 12 : parameter[MET_BB].push_back(10.671);
2599 12 : parameter[MET_BB].push_back(-0.0433724);
2600 12 : parameter[MET_BB].push_back(1.13784);
2601 12 : parameter[MET_BB].push_back(-0.40768);
2602 12 : parameter[MET_BB].push_back(-2.00555);
2603 12 : parameter[MET_BB].push_back(1.51673);
2604 12 : parameter[MET_BB].push_back(-0.305547);
2605 :
2606 12 : parameter[MET_SC1].push_back(5.85);
2607 12 : parameter[MET_SC1].push_back(-0.0485798);
2608 12 : parameter[MET_SC1].push_back(17.0391);
2609 12 : parameter[MET_SC1].push_back(-3.65327);
2610 12 : parameter[MET_SC1].push_back(-13.174);
2611 12 : parameter[MET_SC1].push_back(8.68286);
2612 12 : parameter[MET_SC1].push_back(-1.56095);
2613 :
2614 12 : parameter[PHE_BB].push_back(10.741);
2615 12 : parameter[PHE_BB].push_back(-0.0317275);
2616 12 : parameter[PHE_BB].push_back(1.15599);
2617 12 : parameter[PHE_BB].push_back(0.0276187);
2618 12 : parameter[PHE_BB].push_back(-2.74757);
2619 12 : parameter[PHE_BB].push_back(1.88783);
2620 12 : parameter[PHE_BB].push_back(-0.363525);
2621 :
2622 12 : parameter[PHE_SC1].push_back(-0.636);
2623 12 : parameter[PHE_SC1].push_back(0.527882);
2624 12 : parameter[PHE_SC1].push_back(6.77612);
2625 12 : parameter[PHE_SC1].push_back(3.18508);
2626 12 : parameter[PHE_SC1].push_back(-8.92826);
2627 12 : parameter[PHE_SC1].push_back(4.29752);
2628 12 : parameter[PHE_SC1].push_back(-0.65187);
2629 :
2630 12 : parameter[PHE_SC2].push_back(-0.424);
2631 12 : parameter[PHE_SC2].push_back(0.389174);
2632 12 : parameter[PHE_SC2].push_back(4.11761);
2633 12 : parameter[PHE_SC2].push_back(2.29527);
2634 12 : parameter[PHE_SC2].push_back(-4.7652);
2635 12 : parameter[PHE_SC2].push_back(1.97023);
2636 12 : parameter[PHE_SC2].push_back(-0.262318);
2637 :
2638 12 : parameter[PHE_SC3].push_back(-0.424);
2639 12 : parameter[PHE_SC3].push_back(0.38927);
2640 12 : parameter[PHE_SC3].push_back(4.11708);
2641 12 : parameter[PHE_SC3].push_back(2.29623);
2642 12 : parameter[PHE_SC3].push_back(-4.76592);
2643 12 : parameter[PHE_SC3].push_back(1.97055);
2644 12 : parameter[PHE_SC3].push_back(-0.262381);
2645 :
2646 12 : parameter[PRO_BB].push_back(11.434);
2647 12 : parameter[PRO_BB].push_back(-0.033323);
2648 12 : parameter[PRO_BB].push_back(0.472014);
2649 12 : parameter[PRO_BB].push_back(-0.290854);
2650 12 : parameter[PRO_BB].push_back(-1.81409);
2651 12 : parameter[PRO_BB].push_back(1.39751);
2652 12 : parameter[PRO_BB].push_back(-0.280407);
2653 :
2654 12 : parameter[PRO_SC1].push_back(-2.796);
2655 12 : parameter[PRO_SC1].push_back(0.95668);
2656 12 : parameter[PRO_SC1].push_back(6.84197);
2657 12 : parameter[PRO_SC1].push_back(6.43774);
2658 12 : parameter[PRO_SC1].push_back(-12.5068);
2659 12 : parameter[PRO_SC1].push_back(5.64597);
2660 12 : parameter[PRO_SC1].push_back(-0.825206);
2661 :
2662 12 : parameter[SER_BB].push_back(10.699);
2663 12 : parameter[SER_BB].push_back(-0.0325828);
2664 12 : parameter[SER_BB].push_back(1.20329);
2665 12 : parameter[SER_BB].push_back(-0.0674351);
2666 12 : parameter[SER_BB].push_back(-2.60749);
2667 12 : parameter[SER_BB].push_back(1.80318);
2668 12 : parameter[SER_BB].push_back(-0.346803);
2669 :
2670 12 : parameter[SER_SC1].push_back(3.298);
2671 12 : parameter[SER_SC1].push_back(-0.0366801);
2672 12 : parameter[SER_SC1].push_back(5.11077);
2673 12 : parameter[SER_SC1].push_back(-1.46774);
2674 12 : parameter[SER_SC1].push_back(-1.48421);
2675 12 : parameter[SER_SC1].push_back(0.800326);
2676 12 : parameter[SER_SC1].push_back(-0.108314);
2677 :
2678 12 : parameter[THR_BB].push_back(10.697);
2679 12 : parameter[THR_BB].push_back(-0.0242955);
2680 12 : parameter[THR_BB].push_back(1.24671);
2681 12 : parameter[THR_BB].push_back(0.146423);
2682 12 : parameter[THR_BB].push_back(-2.97429);
2683 12 : parameter[THR_BB].push_back(1.97513);
2684 12 : parameter[THR_BB].push_back(-0.371479);
2685 :
2686 12 : parameter[THR_SC1].push_back(2.366);
2687 12 : parameter[THR_SC1].push_back(0.0297604);
2688 12 : parameter[THR_SC1].push_back(11.9216);
2689 12 : parameter[THR_SC1].push_back(-9.32503);
2690 12 : parameter[THR_SC1].push_back(1.9396);
2691 12 : parameter[THR_SC1].push_back(0.0804861);
2692 12 : parameter[THR_SC1].push_back(-0.0302721);
2693 :
2694 12 : parameter[TRP_BB].push_back(10.689);
2695 12 : parameter[TRP_BB].push_back(-0.0265879);
2696 12 : parameter[TRP_BB].push_back(1.17819);
2697 12 : parameter[TRP_BB].push_back(0.0386457);
2698 12 : parameter[TRP_BB].push_back(-2.75634);
2699 12 : parameter[TRP_BB].push_back(1.88065);
2700 12 : parameter[TRP_BB].push_back(-0.360217);
2701 :
2702 12 : parameter[TRP_SC1].push_back(0.084);
2703 12 : parameter[TRP_SC1].push_back(0.752407);
2704 12 : parameter[TRP_SC1].push_back(5.3802);
2705 12 : parameter[TRP_SC1].push_back(4.09281);
2706 12 : parameter[TRP_SC1].push_back(-9.28029);
2707 12 : parameter[TRP_SC1].push_back(4.45923);
2708 12 : parameter[TRP_SC1].push_back(-0.689008);
2709 :
2710 12 : parameter[TRP_SC2].push_back(5.739);
2711 12 : parameter[TRP_SC2].push_back(0.0298492);
2712 12 : parameter[TRP_SC2].push_back(4.60446);
2713 12 : parameter[TRP_SC2].push_back(1.34463);
2714 12 : parameter[TRP_SC2].push_back(-5.69968);
2715 12 : parameter[TRP_SC2].push_back(2.84924);
2716 12 : parameter[TRP_SC2].push_back(-0.433781);
2717 :
2718 12 : parameter[TRP_SC3].push_back(-0.424);
2719 12 : parameter[TRP_SC3].push_back(0.388576);
2720 12 : parameter[TRP_SC3].push_back(4.11859);
2721 12 : parameter[TRP_SC3].push_back(2.29485);
2722 12 : parameter[TRP_SC3].push_back(-4.76255);
2723 12 : parameter[TRP_SC3].push_back(1.96849);
2724 12 : parameter[TRP_SC3].push_back(-0.262015);
2725 :
2726 12 : parameter[TRP_SC4].push_back(-0.424);
2727 12 : parameter[TRP_SC4].push_back(0.387685);
2728 12 : parameter[TRP_SC4].push_back(4.12153);
2729 12 : parameter[TRP_SC4].push_back(2.29144);
2730 12 : parameter[TRP_SC4].push_back(-4.7589);
2731 12 : parameter[TRP_SC4].push_back(1.96686);
2732 12 : parameter[TRP_SC4].push_back(-0.261786);
2733 :
2734 12 : parameter[TYR_BB].push_back(10.689);
2735 12 : parameter[TYR_BB].push_back(-0.0193526);
2736 12 : parameter[TYR_BB].push_back(1.18241);
2737 12 : parameter[TYR_BB].push_back(0.207318);
2738 12 : parameter[TYR_BB].push_back(-3.0041);
2739 12 : parameter[TYR_BB].push_back(1.99335);
2740 12 : parameter[TYR_BB].push_back(-0.376482);
2741 :
2742 12 : parameter[TYR_SC1].push_back(-0.636);
2743 12 : parameter[TYR_SC1].push_back(0.528902);
2744 12 : parameter[TYR_SC1].push_back(6.78168);
2745 12 : parameter[TYR_SC1].push_back(3.17769);
2746 12 : parameter[TYR_SC1].push_back(-8.93667);
2747 12 : parameter[TYR_SC1].push_back(4.30692);
2748 12 : parameter[TYR_SC1].push_back(-0.653993);
2749 :
2750 12 : parameter[TYR_SC2].push_back(-0.424);
2751 12 : parameter[TYR_SC2].push_back(0.388811);
2752 12 : parameter[TYR_SC2].push_back(4.11851);
2753 12 : parameter[TYR_SC2].push_back(2.29545);
2754 12 : parameter[TYR_SC2].push_back(-4.7668);
2755 12 : parameter[TYR_SC2].push_back(1.97131);
2756 12 : parameter[TYR_SC2].push_back(-0.262534);
2757 :
2758 12 : parameter[TYR_SC3].push_back(4.526);
2759 12 : parameter[TYR_SC3].push_back(-0.00381305);
2760 12 : parameter[TYR_SC3].push_back(5.8567);
2761 12 : parameter[TYR_SC3].push_back(-0.214086);
2762 12 : parameter[TYR_SC3].push_back(-4.63649);
2763 12 : parameter[TYR_SC3].push_back(2.52869);
2764 12 : parameter[TYR_SC3].push_back(-0.39894);
2765 :
2766 12 : parameter[VAL_BB].push_back(10.691);
2767 12 : parameter[VAL_BB].push_back(-0.0162929);
2768 12 : parameter[VAL_BB].push_back(1.24446);
2769 12 : parameter[VAL_BB].push_back(0.307914);
2770 12 : parameter[VAL_BB].push_back(-3.27446);
2771 12 : parameter[VAL_BB].push_back(2.14788);
2772 12 : parameter[VAL_BB].push_back(-0.403259);
2773 :
2774 12 : parameter[VAL_SC1].push_back(-3.516);
2775 12 : parameter[VAL_SC1].push_back(1.62307);
2776 12 : parameter[VAL_SC1].push_back(5.43064);
2777 12 : parameter[VAL_SC1].push_back(9.28809);
2778 12 : parameter[VAL_SC1].push_back(-14.9927);
2779 12 : parameter[VAL_SC1].push_back(6.6133);
2780 12 : parameter[VAL_SC1].push_back(-0.964977);
2781 :
2782 12 : parameter[A_BB1].push_back(32.88500000);
2783 12 : parameter[A_BB1].push_back(0.08339900);
2784 12 : parameter[A_BB1].push_back(-7.36054400);
2785 12 : parameter[A_BB1].push_back(2.19220300);
2786 12 : parameter[A_BB1].push_back(-3.56523400);
2787 12 : parameter[A_BB1].push_back(2.33326900);
2788 12 : parameter[A_BB1].push_back(-0.39785500);
2789 :
2790 12 : parameter[A_BB2].push_back(3.80600000);
2791 12 : parameter[A_BB2].push_back(-0.10727600);
2792 12 : parameter[A_BB2].push_back(9.58854100);
2793 12 : parameter[A_BB2].push_back(-6.23740500);
2794 12 : parameter[A_BB2].push_back(-0.48267300);
2795 12 : parameter[A_BB2].push_back(1.14119500);
2796 12 : parameter[A_BB2].push_back(-0.21385600);
2797 :
2798 12 : parameter[A_BB3].push_back(3.59400000);
2799 12 : parameter[A_BB3].push_back(0.04537300);
2800 12 : parameter[A_BB3].push_back(9.59178900);
2801 12 : parameter[A_BB3].push_back(-1.29202200);
2802 12 : parameter[A_BB3].push_back(-7.10851000);
2803 12 : parameter[A_BB3].push_back(4.05571200);
2804 12 : parameter[A_BB3].push_back(-0.63372500);
2805 :
2806 12 : parameter[A_SC1].push_back(6.67100000);
2807 12 : parameter[A_SC1].push_back(-0.00855300);
2808 12 : parameter[A_SC1].push_back(1.63222400);
2809 12 : parameter[A_SC1].push_back(-0.06466200);
2810 12 : parameter[A_SC1].push_back(-1.48694200);
2811 12 : parameter[A_SC1].push_back(0.78544600);
2812 12 : parameter[A_SC1].push_back(-0.12083500);
2813 :
2814 12 : parameter[A_SC2].push_back(5.95100000);
2815 12 : parameter[A_SC2].push_back(-0.02606600);
2816 12 : parameter[A_SC2].push_back(2.54399900);
2817 12 : parameter[A_SC2].push_back(-0.48436900);
2818 12 : parameter[A_SC2].push_back(-1.55357400);
2819 12 : parameter[A_SC2].push_back(0.86466900);
2820 12 : parameter[A_SC2].push_back(-0.13509000);
2821 :
2822 12 : parameter[A_SC3].push_back(11.39400000);
2823 12 : parameter[A_SC3].push_back(0.00871300);
2824 12 : parameter[A_SC3].push_back(-0.23891300);
2825 12 : parameter[A_SC3].push_back(0.48919400);
2826 12 : parameter[A_SC3].push_back(-1.75289400);
2827 12 : parameter[A_SC3].push_back(0.99267500);
2828 12 : parameter[A_SC3].push_back(-0.16291300);
2829 :
2830 12 : parameter[A_SC4].push_back(6.45900000);
2831 12 : parameter[A_SC4].push_back(0.01990600);
2832 12 : parameter[A_SC4].push_back(4.17970400);
2833 12 : parameter[A_SC4].push_back(0.97629900);
2834 12 : parameter[A_SC4].push_back(-5.03297800);
2835 12 : parameter[A_SC4].push_back(2.55576700);
2836 12 : parameter[A_SC4].push_back(-0.39150500);
2837 :
2838 12 : parameter[A_3TE].push_back(4.23000000);
2839 12 : parameter[A_3TE].push_back(0.00064800);
2840 12 : parameter[A_3TE].push_back(0.92124600);
2841 12 : parameter[A_3TE].push_back(0.08064300);
2842 12 : parameter[A_3TE].push_back(-0.39054400);
2843 12 : parameter[A_3TE].push_back(0.12429100);
2844 12 : parameter[A_3TE].push_back(-0.01122700);
2845 :
2846 12 : parameter[A_5TE].push_back(4.23000000);
2847 12 : parameter[A_5TE].push_back(0.00039300);
2848 12 : parameter[A_5TE].push_back(0.92305100);
2849 12 : parameter[A_5TE].push_back(0.07747500);
2850 12 : parameter[A_5TE].push_back(-0.38792100);
2851 12 : parameter[A_5TE].push_back(0.12323800);
2852 12 : parameter[A_5TE].push_back(-0.01106600);
2853 :
2854 12 : parameter[A_TE3].push_back(7.82400000);
2855 12 : parameter[A_TE3].push_back(-0.04881000);
2856 12 : parameter[A_TE3].push_back(8.21557900);
2857 12 : parameter[A_TE3].push_back(-0.89491400);
2858 12 : parameter[A_TE3].push_back(-9.54293700);
2859 12 : parameter[A_TE3].push_back(6.33122200);
2860 12 : parameter[A_TE3].push_back(-1.16672900);
2861 :
2862 12 : parameter[A_TE5].push_back(8.03600000);
2863 12 : parameter[A_TE5].push_back(0.01641200);
2864 12 : parameter[A_TE5].push_back(5.14902200);
2865 12 : parameter[A_TE5].push_back(0.83419700);
2866 12 : parameter[A_TE5].push_back(-7.59068300);
2867 12 : parameter[A_TE5].push_back(4.52063200);
2868 12 : parameter[A_TE5].push_back(-0.78260800);
2869 :
2870 12 : parameter[C_BB1].push_back(32.88500000);
2871 12 : parameter[C_BB1].push_back(0.08311100);
2872 12 : parameter[C_BB1].push_back(-7.35432100);
2873 12 : parameter[C_BB1].push_back(2.18610000);
2874 12 : parameter[C_BB1].push_back(-3.55788300);
2875 12 : parameter[C_BB1].push_back(2.32918700);
2876 12 : parameter[C_BB1].push_back(-0.39720000);
2877 :
2878 12 : parameter[C_BB2].push_back(3.80600000);
2879 12 : parameter[C_BB2].push_back(-0.10808100);
2880 12 : parameter[C_BB2].push_back(9.61612600);
2881 12 : parameter[C_BB2].push_back(-6.28595400);
2882 12 : parameter[C_BB2].push_back(-0.45187000);
2883 12 : parameter[C_BB2].push_back(1.13326000);
2884 12 : parameter[C_BB2].push_back(-0.21320300);
2885 :
2886 12 : parameter[C_BB3].push_back(3.59400000);
2887 12 : parameter[C_BB3].push_back(0.04484200);
2888 12 : parameter[C_BB3].push_back(9.61919800);
2889 12 : parameter[C_BB3].push_back(-1.33582800);
2890 12 : parameter[C_BB3].push_back(-7.07200400);
2891 12 : parameter[C_BB3].push_back(4.03952900);
2892 12 : parameter[C_BB3].push_back(-0.63098200);
2893 :
2894 12 : parameter[C_SC1].push_back(5.95100000);
2895 12 : parameter[C_SC1].push_back(-0.02911300);
2896 12 : parameter[C_SC1].push_back(2.59700400);
2897 12 : parameter[C_SC1].push_back(-0.55507700);
2898 12 : parameter[C_SC1].push_back(-1.56344600);
2899 12 : parameter[C_SC1].push_back(0.88956200);
2900 12 : parameter[C_SC1].push_back(-0.14061300);
2901 :
2902 12 : parameter[C_SC2].push_back(11.62100000);
2903 12 : parameter[C_SC2].push_back(0.01366100);
2904 12 : parameter[C_SC2].push_back(-0.25959200);
2905 12 : parameter[C_SC2].push_back(0.48918300);
2906 12 : parameter[C_SC2].push_back(-1.52550500);
2907 12 : parameter[C_SC2].push_back(0.83644100);
2908 12 : parameter[C_SC2].push_back(-0.13407300);
2909 :
2910 12 : parameter[C_SC3].push_back(5.01900000);
2911 12 : parameter[C_SC3].push_back(-0.03276100);
2912 12 : parameter[C_SC3].push_back(5.53776900);
2913 12 : parameter[C_SC3].push_back(-0.95105000);
2914 12 : parameter[C_SC3].push_back(-3.71130800);
2915 12 : parameter[C_SC3].push_back(2.16146000);
2916 12 : parameter[C_SC3].push_back(-0.34918600);
2917 :
2918 12 : parameter[C_3TE].push_back(4.23000000);
2919 12 : parameter[C_3TE].push_back(0.00057300);
2920 12 : parameter[C_3TE].push_back(0.92174800);
2921 12 : parameter[C_3TE].push_back(0.07964500);
2922 12 : parameter[C_3TE].push_back(-0.38965700);
2923 12 : parameter[C_3TE].push_back(0.12392500);
2924 12 : parameter[C_3TE].push_back(-0.01117000);
2925 :
2926 12 : parameter[C_5TE].push_back(4.23000000);
2927 12 : parameter[C_5TE].push_back(0.00071000);
2928 12 : parameter[C_5TE].push_back(0.92082800);
2929 12 : parameter[C_5TE].push_back(0.08150600);
2930 12 : parameter[C_5TE].push_back(-0.39127000);
2931 12 : parameter[C_5TE].push_back(0.12455900);
2932 12 : parameter[C_5TE].push_back(-0.01126300);
2933 :
2934 12 : parameter[C_TE3].push_back(7.82400000);
2935 12 : parameter[C_TE3].push_back(-0.05848300);
2936 12 : parameter[C_TE3].push_back(8.29319900);
2937 12 : parameter[C_TE3].push_back(-1.12563800);
2938 12 : parameter[C_TE3].push_back(-9.42197600);
2939 12 : parameter[C_TE3].push_back(6.35441700);
2940 12 : parameter[C_TE3].push_back(-1.18356900);
2941 :
2942 12 : parameter[C_TE5].push_back(8.03600000);
2943 12 : parameter[C_TE5].push_back(0.00493500);
2944 12 : parameter[C_TE5].push_back(4.92622000);
2945 12 : parameter[C_TE5].push_back(0.64810700);
2946 12 : parameter[C_TE5].push_back(-7.05100000);
2947 12 : parameter[C_TE5].push_back(4.26064400);
2948 12 : parameter[C_TE5].push_back(-0.74819100);
2949 :
2950 12 : parameter[G_BB1].push_back(32.88500000);
2951 12 : parameter[G_BB1].push_back(0.08325400);
2952 12 : parameter[G_BB1].push_back(-7.35736000);
2953 12 : parameter[G_BB1].push_back(2.18914800);
2954 12 : parameter[G_BB1].push_back(-3.56154800);
2955 12 : parameter[G_BB1].push_back(2.33120600);
2956 12 : parameter[G_BB1].push_back(-0.39752300);
2957 :
2958 12 : parameter[G_BB2].push_back(3.80600000);
2959 12 : parameter[G_BB2].push_back(-0.10788300);
2960 12 : parameter[G_BB2].push_back(9.60930800);
2961 12 : parameter[G_BB2].push_back(-6.27402500);
2962 12 : parameter[G_BB2].push_back(-0.46192700);
2963 12 : parameter[G_BB2].push_back(1.13737000);
2964 12 : parameter[G_BB2].push_back(-0.21383100);
2965 :
2966 12 : parameter[G_BB3].push_back(3.59400000);
2967 12 : parameter[G_BB3].push_back(0.04514500);
2968 12 : parameter[G_BB3].push_back(9.61234700);
2969 12 : parameter[G_BB3].push_back(-1.31542100);
2970 12 : parameter[G_BB3].push_back(-7.09150500);
2971 12 : parameter[G_BB3].push_back(4.04706200);
2972 12 : parameter[G_BB3].push_back(-0.63201000);
2973 :
2974 12 : parameter[G_SC1].push_back(6.67100000);
2975 12 : parameter[G_SC1].push_back(-0.00863200);
2976 12 : parameter[G_SC1].push_back(1.63252300);
2977 12 : parameter[G_SC1].push_back(-0.06567200);
2978 12 : parameter[G_SC1].push_back(-1.48680500);
2979 12 : parameter[G_SC1].push_back(0.78565600);
2980 12 : parameter[G_SC1].push_back(-0.12088900);
2981 :
2982 12 : parameter[G_SC2].push_back(11.39400000);
2983 12 : parameter[G_SC2].push_back(0.00912200);
2984 12 : parameter[G_SC2].push_back(-0.22869000);
2985 12 : parameter[G_SC2].push_back(0.49616400);
2986 12 : parameter[G_SC2].push_back(-1.75039000);
2987 12 : parameter[G_SC2].push_back(0.98649200);
2988 12 : parameter[G_SC2].push_back(-0.16141600);
2989 :
2990 12 : parameter[G_SC3].push_back(10.90100000);
2991 12 : parameter[G_SC3].push_back(0.02208700);
2992 12 : parameter[G_SC3].push_back(0.17032800);
2993 12 : parameter[G_SC3].push_back(0.73280800);
2994 12 : parameter[G_SC3].push_back(-1.95292000);
2995 12 : parameter[G_SC3].push_back(0.98357600);
2996 12 : parameter[G_SC3].push_back(-0.14790900);
2997 :
2998 12 : parameter[G_SC4].push_back(6.45900000);
2999 12 : parameter[G_SC4].push_back(0.02023700);
3000 12 : parameter[G_SC4].push_back(4.17655400);
3001 12 : parameter[G_SC4].push_back(0.98731800);
3002 12 : parameter[G_SC4].push_back(-5.04352800);
3003 12 : parameter[G_SC4].push_back(2.56059400);
3004 12 : parameter[G_SC4].push_back(-0.39234300);
3005 :
3006 12 : parameter[G_3TE].push_back(4.23000000);
3007 12 : parameter[G_3TE].push_back(0.00066300);
3008 12 : parameter[G_3TE].push_back(0.92118800);
3009 12 : parameter[G_3TE].push_back(0.08062700);
3010 12 : parameter[G_3TE].push_back(-0.39041600);
3011 12 : parameter[G_3TE].push_back(0.12419400);
3012 12 : parameter[G_3TE].push_back(-0.01120500);
3013 :
3014 12 : parameter[G_5TE].push_back(4.23000000);
3015 12 : parameter[G_5TE].push_back(0.00062800);
3016 12 : parameter[G_5TE].push_back(0.92133500);
3017 12 : parameter[G_5TE].push_back(0.08029900);
3018 12 : parameter[G_5TE].push_back(-0.39015300);
3019 12 : parameter[G_5TE].push_back(0.12411600);
3020 12 : parameter[G_5TE].push_back(-0.01119900);
3021 :
3022 12 : parameter[G_TE3].push_back(7.82400000);
3023 12 : parameter[G_TE3].push_back(-0.05177400);
3024 12 : parameter[G_TE3].push_back(8.34606700);
3025 12 : parameter[G_TE3].push_back(-1.02936300);
3026 12 : parameter[G_TE3].push_back(-9.55211900);
3027 12 : parameter[G_TE3].push_back(6.37776600);
3028 12 : parameter[G_TE3].push_back(-1.17898000);
3029 :
3030 12 : parameter[G_TE5].push_back(8.03600000);
3031 12 : parameter[G_TE5].push_back(0.00525100);
3032 12 : parameter[G_TE5].push_back(4.71070600);
3033 12 : parameter[G_TE5].push_back(0.66746900);
3034 12 : parameter[G_TE5].push_back(-6.72538700);
3035 12 : parameter[G_TE5].push_back(4.03644100);
3036 12 : parameter[G_TE5].push_back(-0.70605700);
3037 :
3038 12 : parameter[U_BB1].push_back(32.88500000);
3039 12 : parameter[U_BB1].push_back(0.08321400);
3040 12 : parameter[U_BB1].push_back(-7.35634900);
3041 12 : parameter[U_BB1].push_back(2.18826800);
3042 12 : parameter[U_BB1].push_back(-3.56047400);
3043 12 : parameter[U_BB1].push_back(2.33064700);
3044 12 : parameter[U_BB1].push_back(-0.39744000);
3045 :
3046 12 : parameter[U_BB2].push_back(3.80600000);
3047 12 : parameter[U_BB2].push_back(-0.10773100);
3048 12 : parameter[U_BB2].push_back(9.60099900);
3049 12 : parameter[U_BB2].push_back(-6.26131900);
3050 12 : parameter[U_BB2].push_back(-0.46668300);
3051 12 : parameter[U_BB2].push_back(1.13698100);
3052 12 : parameter[U_BB2].push_back(-0.21351600);
3053 :
3054 12 : parameter[U_BB3].push_back(3.59400000);
3055 12 : parameter[U_BB3].push_back(0.04544300);
3056 12 : parameter[U_BB3].push_back(9.59625900);
3057 12 : parameter[U_BB3].push_back(-1.29222200);
3058 12 : parameter[U_BB3].push_back(-7.11143200);
3059 12 : parameter[U_BB3].push_back(4.05687700);
3060 12 : parameter[U_BB3].push_back(-0.63382800);
3061 :
3062 12 : parameter[U_SC1].push_back(5.95100000);
3063 12 : parameter[U_SC1].push_back(-0.02924500);
3064 12 : parameter[U_SC1].push_back(2.59668700);
3065 12 : parameter[U_SC1].push_back(-0.56118700);
3066 12 : parameter[U_SC1].push_back(-1.56477100);
3067 12 : parameter[U_SC1].push_back(0.89265100);
3068 12 : parameter[U_SC1].push_back(-0.14130800);
3069 :
3070 12 : parameter[U_SC2].push_back(10.90100000);
3071 12 : parameter[U_SC2].push_back(0.02178900);
3072 12 : parameter[U_SC2].push_back(0.18839000);
3073 12 : parameter[U_SC2].push_back(0.72223100);
3074 12 : parameter[U_SC2].push_back(-1.92581600);
3075 12 : parameter[U_SC2].push_back(0.96654300);
3076 12 : parameter[U_SC2].push_back(-0.14501300);
3077 :
3078 12 : parameter[U_SC3].push_back(5.24600000);
3079 12 : parameter[U_SC3].push_back(-0.04586500);
3080 12 : parameter[U_SC3].push_back(5.89978100);
3081 12 : parameter[U_SC3].push_back(-1.50664700);
3082 12 : parameter[U_SC3].push_back(-3.17054400);
3083 12 : parameter[U_SC3].push_back(1.93717100);
3084 12 : parameter[U_SC3].push_back(-0.31701000);
3085 :
3086 12 : parameter[U_3TE].push_back(4.23000000);
3087 12 : parameter[U_3TE].push_back(0.00067500);
3088 12 : parameter[U_3TE].push_back(0.92102300);
3089 12 : parameter[U_3TE].push_back(0.08100800);
3090 12 : parameter[U_3TE].push_back(-0.39084300);
3091 12 : parameter[U_3TE].push_back(0.12441900);
3092 12 : parameter[U_3TE].push_back(-0.01124900);
3093 :
3094 12 : parameter[U_5TE].push_back(4.23000000);
3095 12 : parameter[U_5TE].push_back(0.00059000);
3096 12 : parameter[U_5TE].push_back(0.92154600);
3097 12 : parameter[U_5TE].push_back(0.07968200);
3098 12 : parameter[U_5TE].push_back(-0.38950100);
3099 12 : parameter[U_5TE].push_back(0.12382500);
3100 12 : parameter[U_5TE].push_back(-0.01115100);
3101 :
3102 12 : parameter[U_TE3].push_back(7.82400000);
3103 12 : parameter[U_TE3].push_back(-0.02968100);
3104 12 : parameter[U_TE3].push_back(7.93783200);
3105 12 : parameter[U_TE3].push_back(-0.33078100);
3106 12 : parameter[U_TE3].push_back(-10.14120200);
3107 12 : parameter[U_TE3].push_back(6.63334700);
3108 12 : parameter[U_TE3].push_back(-1.22111200);
3109 :
3110 12 : parameter[U_TE5].push_back(8.03600000);
3111 12 : parameter[U_TE5].push_back(-0.00909700);
3112 12 : parameter[U_TE5].push_back(4.33193500);
3113 12 : parameter[U_TE5].push_back(0.43416500);
3114 12 : parameter[U_TE5].push_back(-5.80831400);
3115 12 : parameter[U_TE5].push_back(3.52438800);
3116 12 : parameter[U_TE5].push_back(-0.62382400);
3117 :
3118 12 : parameter[DA_BB1].push_back(32.88500000);
3119 12 : parameter[DA_BB1].push_back(0.08179900);
3120 12 : parameter[DA_BB1].push_back(-7.31735900);
3121 12 : parameter[DA_BB1].push_back(2.15614500);
3122 12 : parameter[DA_BB1].push_back(-3.52263200);
3123 12 : parameter[DA_BB1].push_back(2.30604700);
3124 12 : parameter[DA_BB1].push_back(-0.39270100);
3125 :
3126 12 : parameter[DA_BB2].push_back(3.80600000);
3127 12 : parameter[DA_BB2].push_back(-0.10597700);
3128 12 : parameter[DA_BB2].push_back(9.52537500);
3129 12 : parameter[DA_BB2].push_back(-6.12991000);
3130 12 : parameter[DA_BB2].push_back(-0.54092600);
3131 12 : parameter[DA_BB2].push_back(1.15429100);
3132 12 : parameter[DA_BB2].push_back(-0.21503500);
3133 :
3134 12 : parameter[DA_BB3].push_back(-1.35600000);
3135 12 : parameter[DA_BB3].push_back(0.58928300);
3136 12 : parameter[DA_BB3].push_back(6.71894100);
3137 12 : parameter[DA_BB3].push_back(4.14050900);
3138 12 : parameter[DA_BB3].push_back(-9.65859900);
3139 12 : parameter[DA_BB3].push_back(4.43185000);
3140 12 : parameter[DA_BB3].push_back(-0.64657300);
3141 :
3142 12 : parameter[DA_SC1].push_back(6.67100000);
3143 12 : parameter[DA_SC1].push_back(-0.00871400);
3144 12 : parameter[DA_SC1].push_back(1.63289100);
3145 12 : parameter[DA_SC1].push_back(-0.06637700);
3146 12 : parameter[DA_SC1].push_back(-1.48632900);
3147 12 : parameter[DA_SC1].push_back(0.78551800);
3148 12 : parameter[DA_SC1].push_back(-0.12087300);
3149 :
3150 12 : parameter[DA_SC2].push_back(5.95100000);
3151 12 : parameter[DA_SC2].push_back(-0.02634300);
3152 12 : parameter[DA_SC2].push_back(2.54864300);
3153 12 : parameter[DA_SC2].push_back(-0.49015800);
3154 12 : parameter[DA_SC2].push_back(-1.55386900);
3155 12 : parameter[DA_SC2].push_back(0.86630200);
3156 12 : parameter[DA_SC2].push_back(-0.13546200);
3157 :
3158 12 : parameter[DA_SC3].push_back(11.39400000);
3159 12 : parameter[DA_SC3].push_back(0.00859500);
3160 12 : parameter[DA_SC3].push_back(-0.25471400);
3161 12 : parameter[DA_SC3].push_back(0.48718800);
3162 12 : parameter[DA_SC3].push_back(-1.74520000);
3163 12 : parameter[DA_SC3].push_back(0.99246200);
3164 12 : parameter[DA_SC3].push_back(-0.16351900);
3165 :
3166 12 : parameter[DA_SC4].push_back(6.45900000);
3167 12 : parameter[DA_SC4].push_back(0.01991800);
3168 12 : parameter[DA_SC4].push_back(4.17962300);
3169 12 : parameter[DA_SC4].push_back(0.97469100);
3170 12 : parameter[DA_SC4].push_back(-5.02950400);
3171 12 : parameter[DA_SC4].push_back(2.55371800);
3172 12 : parameter[DA_SC4].push_back(-0.39113400);
3173 :
3174 12 : parameter[DA_3TE].push_back(4.23000000);
3175 12 : parameter[DA_3TE].push_back(0.00062600);
3176 12 : parameter[DA_3TE].push_back(0.92142000);
3177 12 : parameter[DA_3TE].push_back(0.08016400);
3178 12 : parameter[DA_3TE].push_back(-0.39000300);
3179 12 : parameter[DA_3TE].push_back(0.12402500);
3180 12 : parameter[DA_3TE].push_back(-0.01117900);
3181 :
3182 12 : parameter[DA_5TE].push_back(4.23000000);
3183 12 : parameter[DA_5TE].push_back(0.00055500);
3184 12 : parameter[DA_5TE].push_back(0.92183900);
3185 12 : parameter[DA_5TE].push_back(0.07907600);
3186 12 : parameter[DA_5TE].push_back(-0.38895100);
3187 12 : parameter[DA_5TE].push_back(0.12359600);
3188 12 : parameter[DA_5TE].push_back(-0.01111600);
3189 :
3190 12 : parameter[DA_TE3].push_back(2.87400000);
3191 12 : parameter[DA_TE3].push_back(0.00112900);
3192 12 : parameter[DA_TE3].push_back(12.51167200);
3193 12 : parameter[DA_TE3].push_back(-7.67548000);
3194 12 : parameter[DA_TE3].push_back(-2.02234000);
3195 12 : parameter[DA_TE3].push_back(2.50837100);
3196 12 : parameter[DA_TE3].push_back(-0.49458500);
3197 :
3198 12 : parameter[DA_TE5].push_back(8.03600000);
3199 12 : parameter[DA_TE5].push_back(0.00473100);
3200 12 : parameter[DA_TE5].push_back(4.65554400);
3201 12 : parameter[DA_TE5].push_back(0.66424100);
3202 12 : parameter[DA_TE5].push_back(-6.62131300);
3203 12 : parameter[DA_TE5].push_back(3.96107400);
3204 12 : parameter[DA_TE5].push_back(-0.69075800);
3205 :
3206 12 : parameter[DC_BB1].push_back(32.88500000);
3207 12 : parameter[DC_BB1].push_back(0.08189900);
3208 12 : parameter[DC_BB1].push_back(-7.32493500);
3209 12 : parameter[DC_BB1].push_back(2.15976900);
3210 12 : parameter[DC_BB1].push_back(-3.52612100);
3211 12 : parameter[DC_BB1].push_back(2.31058600);
3212 12 : parameter[DC_BB1].push_back(-0.39402700);
3213 :
3214 12 : parameter[DC_BB2].push_back(3.80600000);
3215 12 : parameter[DC_BB2].push_back(-0.10559800);
3216 12 : parameter[DC_BB2].push_back(9.52527700);
3217 12 : parameter[DC_BB2].push_back(-6.12131700);
3218 12 : parameter[DC_BB2].push_back(-0.54899400);
3219 12 : parameter[DC_BB2].push_back(1.15592900);
3220 12 : parameter[DC_BB2].push_back(-0.21494500);
3221 :
3222 12 : parameter[DC_BB3].push_back(-1.35600000);
3223 12 : parameter[DC_BB3].push_back(0.55525700);
3224 12 : parameter[DC_BB3].push_back(6.80305500);
3225 12 : parameter[DC_BB3].push_back(4.05924700);
3226 12 : parameter[DC_BB3].push_back(-9.61034700);
3227 12 : parameter[DC_BB3].push_back(4.41253800);
3228 12 : parameter[DC_BB3].push_back(-0.64315100);
3229 :
3230 12 : parameter[DC_SC1].push_back(5.95100000);
3231 12 : parameter[DC_SC1].push_back(-0.02899900);
3232 12 : parameter[DC_SC1].push_back(2.59587800);
3233 12 : parameter[DC_SC1].push_back(-0.55388300);
3234 12 : parameter[DC_SC1].push_back(-1.56395100);
3235 12 : parameter[DC_SC1].push_back(0.88967400);
3236 12 : parameter[DC_SC1].push_back(-0.14062500);
3237 :
3238 12 : parameter[DC_SC2].push_back(11.62100000);
3239 12 : parameter[DC_SC2].push_back(0.01358100);
3240 12 : parameter[DC_SC2].push_back(-0.24913000);
3241 12 : parameter[DC_SC2].push_back(0.48787200);
3242 12 : parameter[DC_SC2].push_back(-1.52867300);
3243 12 : parameter[DC_SC2].push_back(0.83694900);
3244 12 : parameter[DC_SC2].push_back(-0.13395300);
3245 :
3246 12 : parameter[DC_SC3].push_back(5.01900000);
3247 12 : parameter[DC_SC3].push_back(-0.03298400);
3248 12 : parameter[DC_SC3].push_back(5.54242800);
3249 12 : parameter[DC_SC3].push_back(-0.96081500);
3250 12 : parameter[DC_SC3].push_back(-3.71051600);
3251 12 : parameter[DC_SC3].push_back(2.16500200);
3252 12 : parameter[DC_SC3].push_back(-0.35023400);
3253 :
3254 12 : parameter[DC_3TE].push_back(4.23000000);
3255 12 : parameter[DC_3TE].push_back(0.00055700);
3256 12 : parameter[DC_3TE].push_back(0.92181400);
3257 12 : parameter[DC_3TE].push_back(0.07924000);
3258 12 : parameter[DC_3TE].push_back(-0.38916400);
3259 12 : parameter[DC_3TE].push_back(0.12369900);
3260 12 : parameter[DC_3TE].push_back(-0.01113300);
3261 :
3262 12 : parameter[DC_5TE].push_back(4.23000000);
3263 12 : parameter[DC_5TE].push_back(0.00066500);
3264 12 : parameter[DC_5TE].push_back(0.92103900);
3265 12 : parameter[DC_5TE].push_back(0.08064600);
3266 12 : parameter[DC_5TE].push_back(-0.39034900);
3267 12 : parameter[DC_5TE].push_back(0.12417600);
3268 12 : parameter[DC_5TE].push_back(-0.01120600);
3269 :
3270 12 : parameter[DC_TE3].push_back(2.87400000);
3271 12 : parameter[DC_TE3].push_back(-0.05235500);
3272 12 : parameter[DC_TE3].push_back(13.09201200);
3273 12 : parameter[DC_TE3].push_back(-9.48128200);
3274 12 : parameter[DC_TE3].push_back(-0.14958600);
3275 12 : parameter[DC_TE3].push_back(1.75537200);
3276 12 : parameter[DC_TE3].push_back(-0.39347500);
3277 :
3278 12 : parameter[DC_TE5].push_back(8.03600000);
3279 12 : parameter[DC_TE5].push_back(-0.00513600);
3280 12 : parameter[DC_TE5].push_back(4.67705700);
3281 12 : parameter[DC_TE5].push_back(0.48333300);
3282 12 : parameter[DC_TE5].push_back(-6.34511000);
3283 12 : parameter[DC_TE5].push_back(3.83388500);
3284 12 : parameter[DC_TE5].push_back(-0.67367800);
3285 :
3286 12 : parameter[DG_BB1].push_back(32.88500000);
3287 12 : parameter[DG_BB1].push_back(0.08182900);
3288 12 : parameter[DG_BB1].push_back(-7.32133900);
3289 12 : parameter[DG_BB1].push_back(2.15767900);
3290 12 : parameter[DG_BB1].push_back(-3.52369700);
3291 12 : parameter[DG_BB1].push_back(2.30839600);
3292 12 : parameter[DG_BB1].push_back(-0.39348300);
3293 :
3294 12 : parameter[DG_BB2].push_back(3.80600000);
3295 12 : parameter[DG_BB2].push_back(-0.10618100);
3296 12 : parameter[DG_BB2].push_back(9.54169000);
3297 12 : parameter[DG_BB2].push_back(-6.15177600);
3298 12 : parameter[DG_BB2].push_back(-0.53462400);
3299 12 : parameter[DG_BB2].push_back(1.15581300);
3300 12 : parameter[DG_BB2].push_back(-0.21567000);
3301 :
3302 12 : parameter[DG_BB3].push_back(-1.35600000);
3303 12 : parameter[DG_BB3].push_back(0.57489100);
3304 12 : parameter[DG_BB3].push_back(6.75164700);
3305 12 : parameter[DG_BB3].push_back(4.11300900);
3306 12 : parameter[DG_BB3].push_back(-9.63394600);
3307 12 : parameter[DG_BB3].push_back(4.41675400);
3308 12 : parameter[DG_BB3].push_back(-0.64339900);
3309 :
3310 12 : parameter[DG_SC1].push_back(6.67100000);
3311 12 : parameter[DG_SC1].push_back(-0.00886600);
3312 12 : parameter[DG_SC1].push_back(1.63333000);
3313 12 : parameter[DG_SC1].push_back(-0.06892100);
3314 12 : parameter[DG_SC1].push_back(-1.48683500);
3315 12 : parameter[DG_SC1].push_back(0.78670800);
3316 12 : parameter[DG_SC1].push_back(-0.12113900);
3317 :
3318 12 : parameter[DG_SC2].push_back(11.39400000);
3319 12 : parameter[DG_SC2].push_back(0.00907900);
3320 12 : parameter[DG_SC2].push_back(-0.22475500);
3321 12 : parameter[DG_SC2].push_back(0.49535100);
3322 12 : parameter[DG_SC2].push_back(-1.75324900);
3323 12 : parameter[DG_SC2].push_back(0.98767400);
3324 12 : parameter[DG_SC2].push_back(-0.16150800);
3325 :
3326 12 : parameter[DG_SC3].push_back(10.90100000);
3327 12 : parameter[DG_SC3].push_back(0.02207600);
3328 12 : parameter[DG_SC3].push_back(0.17932200);
3329 12 : parameter[DG_SC3].push_back(0.73253200);
3330 12 : parameter[DG_SC3].push_back(-1.95554900);
3331 12 : parameter[DG_SC3].push_back(0.98339900);
3332 12 : parameter[DG_SC3].push_back(-0.14763600);
3333 :
3334 12 : parameter[DG_SC4].push_back(6.45900000);
3335 12 : parameter[DG_SC4].push_back(0.02018400);
3336 12 : parameter[DG_SC4].push_back(4.17705400);
3337 12 : parameter[DG_SC4].push_back(0.98531700);
3338 12 : parameter[DG_SC4].push_back(-5.04354900);
3339 12 : parameter[DG_SC4].push_back(2.56123700);
3340 12 : parameter[DG_SC4].push_back(-0.39249300);
3341 :
3342 12 : parameter[DG_3TE].push_back(4.23000000);
3343 12 : parameter[DG_3TE].push_back(0.00061700);
3344 12 : parameter[DG_3TE].push_back(0.92140100);
3345 12 : parameter[DG_3TE].push_back(0.08016400);
3346 12 : parameter[DG_3TE].push_back(-0.39003500);
3347 12 : parameter[DG_3TE].push_back(0.12406900);
3348 12 : parameter[DG_3TE].push_back(-0.01119200);
3349 :
3350 12 : parameter[DG_5TE].push_back(4.23000000);
3351 12 : parameter[DG_5TE].push_back(0.00064900);
3352 12 : parameter[DG_5TE].push_back(0.92110500);
3353 12 : parameter[DG_5TE].push_back(0.08031500);
3354 12 : parameter[DG_5TE].push_back(-0.38997000);
3355 12 : parameter[DG_5TE].push_back(0.12401200);
3356 12 : parameter[DG_5TE].push_back(-0.01118100);
3357 :
3358 12 : parameter[DG_TE3].push_back(2.87400000);
3359 12 : parameter[DG_TE3].push_back(0.00182000);
3360 12 : parameter[DG_TE3].push_back(12.41507000);
3361 12 : parameter[DG_TE3].push_back(-7.47384800);
3362 12 : parameter[DG_TE3].push_back(-2.11864700);
3363 12 : parameter[DG_TE3].push_back(2.50112600);
3364 12 : parameter[DG_TE3].push_back(-0.48652200);
3365 :
3366 12 : parameter[DG_TE5].push_back(8.03600000);
3367 12 : parameter[DG_TE5].push_back(0.00676400);
3368 12 : parameter[DG_TE5].push_back(4.65989200);
3369 12 : parameter[DG_TE5].push_back(0.78482500);
3370 12 : parameter[DG_TE5].push_back(-6.86460600);
3371 12 : parameter[DG_TE5].push_back(4.11675400);
3372 12 : parameter[DG_TE5].push_back(-0.72249100);
3373 :
3374 12 : parameter[DT_BB1].push_back(32.88500000);
3375 12 : parameter[DT_BB1].push_back(0.08220100);
3376 12 : parameter[DT_BB1].push_back(-7.33006800);
3377 12 : parameter[DT_BB1].push_back(2.16636500);
3378 12 : parameter[DT_BB1].push_back(-3.53465700);
3379 12 : parameter[DT_BB1].push_back(2.31447600);
3380 12 : parameter[DT_BB1].push_back(-0.39445400);
3381 :
3382 12 : parameter[DT_BB2].push_back(3.80600000);
3383 12 : parameter[DT_BB2].push_back(-0.10723000);
3384 12 : parameter[DT_BB2].push_back(9.56675000);
3385 12 : parameter[DT_BB2].push_back(-6.20236100);
3386 12 : parameter[DT_BB2].push_back(-0.49550400);
3387 12 : parameter[DT_BB2].push_back(1.14300600);
3388 12 : parameter[DT_BB2].push_back(-0.21420000);
3389 :
3390 12 : parameter[DT_BB3].push_back(-1.35600000);
3391 12 : parameter[DT_BB3].push_back(0.56737900);
3392 12 : parameter[DT_BB3].push_back(6.76595400);
3393 12 : parameter[DT_BB3].push_back(4.08976100);
3394 12 : parameter[DT_BB3].push_back(-9.61512500);
3395 12 : parameter[DT_BB3].push_back(4.40975100);
3396 12 : parameter[DT_BB3].push_back(-0.64239800);
3397 :
3398 12 : parameter[DT_SC1].push_back(5.95100000);
3399 12 : parameter[DT_SC1].push_back(-0.02926500);
3400 12 : parameter[DT_SC1].push_back(2.59630300);
3401 12 : parameter[DT_SC1].push_back(-0.56152200);
3402 12 : parameter[DT_SC1].push_back(-1.56532600);
3403 12 : parameter[DT_SC1].push_back(0.89322800);
3404 12 : parameter[DT_SC1].push_back(-0.14142900);
3405 :
3406 12 : parameter[DT_SC2].push_back(10.90100000);
3407 12 : parameter[DT_SC2].push_back(0.02183400);
3408 12 : parameter[DT_SC2].push_back(0.19463000);
3409 12 : parameter[DT_SC2].push_back(0.72393000);
3410 12 : parameter[DT_SC2].push_back(-1.93199500);
3411 12 : parameter[DT_SC2].push_back(0.96856300);
3412 12 : parameter[DT_SC2].push_back(-0.14512600);
3413 :
3414 12 : parameter[DT_SC3].push_back(4.31400000);
3415 12 : parameter[DT_SC3].push_back(-0.07745600);
3416 12 : parameter[DT_SC3].push_back(12.49820300);
3417 12 : parameter[DT_SC3].push_back(-7.64994200);
3418 12 : parameter[DT_SC3].push_back(-3.00359600);
3419 12 : parameter[DT_SC3].push_back(3.26263300);
3420 12 : parameter[DT_SC3].push_back(-0.64498600);
3421 :
3422 12 : parameter[DT_3TE].push_back(4.23000000);
3423 12 : parameter[DT_3TE].push_back(0.00062000);
3424 12 : parameter[DT_3TE].push_back(0.92141100);
3425 12 : parameter[DT_3TE].push_back(0.08030900);
3426 12 : parameter[DT_3TE].push_back(-0.39021500);
3427 12 : parameter[DT_3TE].push_back(0.12414000);
3428 12 : parameter[DT_3TE].push_back(-0.01120100);
3429 :
3430 12 : parameter[DT_5TE].push_back(4.23000000);
3431 12 : parameter[DT_5TE].push_back(0.00063700);
3432 12 : parameter[DT_5TE].push_back(0.92130800);
3433 12 : parameter[DT_5TE].push_back(0.08026900);
3434 12 : parameter[DT_5TE].push_back(-0.39007500);
3435 12 : parameter[DT_5TE].push_back(0.12406600);
3436 12 : parameter[DT_5TE].push_back(-0.01118800);
3437 :
3438 12 : parameter[DT_TE3].push_back(2.87400000);
3439 12 : parameter[DT_TE3].push_back(-0.00251200);
3440 12 : parameter[DT_TE3].push_back(12.43576400);
3441 12 : parameter[DT_TE3].push_back(-7.55343800);
3442 12 : parameter[DT_TE3].push_back(-2.07363500);
3443 12 : parameter[DT_TE3].push_back(2.51279300);
3444 12 : parameter[DT_TE3].push_back(-0.49437100);
3445 :
3446 12 : parameter[DT_TE5].push_back(8.03600000);
3447 12 : parameter[DT_TE5].push_back(0.00119900);
3448 12 : parameter[DT_TE5].push_back(4.91762300);
3449 12 : parameter[DT_TE5].push_back(0.65637000);
3450 12 : parameter[DT_TE5].push_back(-7.23392500);
3451 12 : parameter[DT_TE5].push_back(4.44636600);
3452 12 : parameter[DT_TE5].push_back(-0.79467800);
3453 :
3454 12 : auto* moldat=plumed.getActionSet().selectLatest<GenericMolInfo*>(this);
3455 12 : if( moldat ) {
3456 9824 : for(unsigned i=0; i<atoms.size(); ++i) {
3457 9812 : std::string Aname = moldat->getAtomName(atoms[i]);
3458 9812 : std::string Rname = moldat->getResidueName(atoms[i]);
3459 9812 : if(Rname=="ALA") {
3460 96 : if(Aname=="BB") {
3461 96 : atoi[i]=ALA_BB;
3462 : } else {
3463 0 : error("Atom name not known: "+Aname);
3464 : }
3465 9716 : } else if(Rname=="ARG") {
3466 516 : if(Aname=="BB") {
3467 172 : atoi[i]=ARG_BB;
3468 344 : } else if(Aname=="SC1") {
3469 172 : atoi[i]=ARG_SC1;
3470 172 : } else if(Aname=="SC2") {
3471 172 : atoi[i]=ARG_SC2;
3472 : } else {
3473 0 : error("Atom name not known: "+Aname);
3474 : }
3475 9200 : } else if(Rname=="ASN") {
3476 272 : if(Aname=="BB") {
3477 136 : atoi[i]=ASN_BB;
3478 136 : } else if(Aname=="SC1") {
3479 136 : atoi[i]=ASN_SC1;
3480 : } else {
3481 0 : error("Atom name not known: "+Aname);
3482 : }
3483 8928 : } else if(Rname=="ASP") {
3484 448 : if(Aname=="BB") {
3485 224 : atoi[i]=ASP_BB;
3486 224 : } else if(Aname=="SC1") {
3487 224 : atoi[i]=ASP_SC1;
3488 : } else {
3489 0 : error("Atom name not known: "+Aname);
3490 : }
3491 8480 : } else if(Rname=="CYS") {
3492 16 : if(Aname=="BB") {
3493 8 : atoi[i]=CYS_BB;
3494 8 : } else if(Aname=="SC1") {
3495 8 : atoi[i]=CYS_SC1;
3496 : } else {
3497 0 : error("Atom name not known: "+Aname);
3498 : }
3499 8464 : } else if(Rname=="GLN") {
3500 320 : if(Aname=="BB") {
3501 160 : atoi[i]=GLN_BB;
3502 160 : } else if(Aname=="SC1") {
3503 160 : atoi[i]=GLN_SC1;
3504 : } else {
3505 0 : error("Atom name not known: "+Aname);
3506 : }
3507 8144 : } else if(Rname=="GLU") {
3508 576 : if(Aname=="BB") {
3509 288 : atoi[i]=GLU_BB;
3510 288 : } else if(Aname=="SC1") {
3511 288 : atoi[i]=GLU_SC1;
3512 : } else {
3513 0 : error("Atom name not known: "+Aname);
3514 : }
3515 7568 : } else if(Rname=="GLY") {
3516 168 : if(Aname=="BB") {
3517 168 : atoi[i]=GLY_BB;
3518 : } else {
3519 0 : error("Atom name not known: "+Aname);
3520 : }
3521 7400 : } else if(Rname=="HIS") {
3522 704 : if(Aname=="BB") {
3523 176 : atoi[i]=HIS_BB;
3524 528 : } else if(Aname=="SC1") {
3525 176 : atoi[i]=HIS_SC1;
3526 352 : } else if(Aname=="SC2") {
3527 176 : atoi[i]=HIS_SC2;
3528 176 : } else if(Aname=="SC3") {
3529 176 : atoi[i]=HIS_SC3;
3530 : } else {
3531 0 : error("Atom name not known: "+Aname);
3532 : }
3533 6696 : } else if(Rname=="ILE") {
3534 696 : if(Aname=="BB") {
3535 348 : atoi[i]=ILE_BB;
3536 348 : } else if(Aname=="SC1") {
3537 348 : atoi[i]=ILE_SC1;
3538 : } else {
3539 0 : error("Atom name not known: "+Aname);
3540 : }
3541 6000 : } else if(Rname=="LEU") {
3542 592 : if(Aname=="BB") {
3543 296 : atoi[i]=LEU_BB;
3544 296 : } else if(Aname=="SC1") {
3545 296 : atoi[i]=LEU_SC1;
3546 : } else {
3547 0 : error("Atom name not known: "+Aname);
3548 : }
3549 5408 : } else if(Rname=="LYS") {
3550 960 : if(Aname=="BB") {
3551 320 : atoi[i]=LYS_BB;
3552 640 : } else if(Aname=="SC1") {
3553 320 : atoi[i]=LYS_SC1;
3554 320 : } else if(Aname=="SC2") {
3555 320 : atoi[i]=LYS_SC2;
3556 : } else {
3557 0 : error("Atom name not known: "+Aname);
3558 : }
3559 4448 : } else if(Rname=="MET") {
3560 96 : if(Aname=="BB") {
3561 48 : atoi[i]=MET_BB;
3562 48 : } else if(Aname=="SC1") {
3563 48 : atoi[i]=MET_SC1;
3564 : } else {
3565 0 : error("Atom name not known: "+Aname);
3566 : }
3567 4352 : } else if(Rname=="PHE") {
3568 576 : if(Aname=="BB") {
3569 144 : atoi[i]=PHE_BB;
3570 432 : } else if(Aname=="SC1") {
3571 144 : atoi[i]=PHE_SC1;
3572 288 : } else if(Aname=="SC2") {
3573 144 : atoi[i]=PHE_SC2;
3574 144 : } else if(Aname=="SC3") {
3575 144 : atoi[i]=PHE_SC3;
3576 : } else {
3577 0 : error("Atom name not known: "+Aname);
3578 : }
3579 3776 : } else if(Rname=="PRO") {
3580 176 : if(Aname=="BB") {
3581 88 : atoi[i]=PRO_BB;
3582 88 : } else if(Aname=="SC1") {
3583 88 : atoi[i]=PRO_SC1;
3584 : } else {
3585 0 : error("Atom name not known: "+Aname);
3586 : }
3587 3600 : } else if(Rname=="SER") {
3588 304 : if(Aname=="BB") {
3589 152 : atoi[i]=SER_BB;
3590 152 : } else if(Aname=="SC1") {
3591 152 : atoi[i]=SER_SC1;
3592 : } else {
3593 0 : error("Atom name not known: "+Aname);
3594 : }
3595 3296 : } else if(Rname=="THR") {
3596 400 : if(Aname=="BB") {
3597 200 : atoi[i]=THR_BB;
3598 200 : } else if(Aname=="SC1") {
3599 200 : atoi[i]=THR_SC1;
3600 : } else {
3601 0 : error("Atom name not known: "+Aname);
3602 : }
3603 2896 : } else if(Rname=="TRP") {
3604 0 : if(Aname=="BB") {
3605 0 : atoi[i]=TRP_BB;
3606 0 : } else if(Aname=="SC1") {
3607 0 : atoi[i]=TRP_SC1;
3608 0 : } else if(Aname=="SC2") {
3609 0 : atoi[i]=TRP_SC2;
3610 0 : } else if(Aname=="SC3") {
3611 0 : atoi[i]=TRP_SC3;
3612 0 : } else if(Aname=="SC4") {
3613 0 : atoi[i]=TRP_SC4;
3614 : } else {
3615 0 : error("Atom name not known: "+Aname);
3616 : }
3617 2896 : } else if(Rname=="TYR") {
3618 576 : if(Aname=="BB") {
3619 144 : atoi[i]=TYR_BB;
3620 432 : } else if(Aname=="SC1") {
3621 144 : atoi[i]=TYR_SC1;
3622 288 : } else if(Aname=="SC2") {
3623 144 : atoi[i]=TYR_SC2;
3624 144 : } else if(Aname=="SC3") {
3625 144 : atoi[i]=TYR_SC3;
3626 : } else {
3627 0 : error("Atom name not known: "+Aname);
3628 : }
3629 2320 : } else if(Rname=="VAL") {
3630 352 : if(Aname=="BB") {
3631 176 : atoi[i]=VAL_BB;
3632 176 : } else if(Aname=="SC1") {
3633 176 : atoi[i]=VAL_SC1;
3634 : } else {
3635 0 : error("Atom name not known: "+Aname);
3636 : }
3637 1968 : } else if(Rname==" A") {
3638 0 : if(Aname=="BB1") {
3639 0 : atoi[i]=A_BB1;
3640 0 : } else if(Aname=="BB2") {
3641 0 : atoi[i]=A_BB2;
3642 0 : } else if(Aname=="BB3") {
3643 0 : atoi[i]=A_BB3;
3644 0 : } else if(Aname=="SC1") {
3645 0 : atoi[i]=A_SC1;
3646 0 : } else if(Aname=="SC2") {
3647 0 : atoi[i]=A_SC2;
3648 0 : } else if(Aname=="SC3") {
3649 0 : atoi[i]=A_SC3;
3650 0 : } else if(Aname=="SC4") {
3651 0 : atoi[i]=A_SC4;
3652 0 : } else if(Aname=="3TE") {
3653 0 : atoi[i]=A_3TE;
3654 0 : } else if(Aname=="5TE") {
3655 0 : atoi[i]=A_5TE;
3656 0 : } else if(Aname=="TE3") {
3657 0 : atoi[i]=A_TE3;
3658 0 : } else if(Aname=="TE5") {
3659 0 : atoi[i]=A_TE5;
3660 : } else {
3661 0 : error("Atom name not known: "+Aname);
3662 : }
3663 1968 : } else if(Rname==" C") {
3664 0 : if(Aname=="BB1") {
3665 0 : atoi[i]=C_BB1;
3666 0 : } else if(Aname=="BB2") {
3667 0 : atoi[i]=C_BB2;
3668 0 : } else if(Aname=="BB3") {
3669 0 : atoi[i]=C_BB3;
3670 0 : } else if(Aname=="SC1") {
3671 0 : atoi[i]=C_SC1;
3672 0 : } else if(Aname=="SC2") {
3673 0 : atoi[i]=C_SC2;
3674 0 : } else if(Aname=="SC3") {
3675 0 : atoi[i]=C_SC3;
3676 0 : } else if(Aname=="3TE") {
3677 0 : atoi[i]=C_3TE;
3678 0 : } else if(Aname=="5TE") {
3679 0 : atoi[i]=C_5TE;
3680 0 : } else if(Aname=="TE3") {
3681 0 : atoi[i]=C_TE3;
3682 0 : } else if(Aname=="TE5") {
3683 0 : atoi[i]=C_TE5;
3684 : } else {
3685 0 : error("Atom name not known: "+Aname);
3686 : }
3687 1968 : } else if(Rname==" G") {
3688 0 : if(Aname=="BB1") {
3689 0 : atoi[i]=G_BB1;
3690 0 : } else if(Aname=="BB2") {
3691 0 : atoi[i]=G_BB2;
3692 0 : } else if(Aname=="BB3") {
3693 0 : atoi[i]=G_BB3;
3694 0 : } else if(Aname=="SC1") {
3695 0 : atoi[i]=G_SC1;
3696 0 : } else if(Aname=="SC2") {
3697 0 : atoi[i]=G_SC2;
3698 0 : } else if(Aname=="SC3") {
3699 0 : atoi[i]=G_SC3;
3700 0 : } else if(Aname=="SC4") {
3701 0 : atoi[i]=G_SC4;
3702 0 : } else if(Aname=="3TE") {
3703 0 : atoi[i]=G_3TE;
3704 0 : } else if(Aname=="5TE") {
3705 0 : atoi[i]=G_5TE;
3706 0 : } else if(Aname=="TE3") {
3707 0 : atoi[i]=G_TE3;
3708 0 : } else if(Aname=="TE5") {
3709 0 : atoi[i]=G_TE5;
3710 : } else {
3711 0 : error("Atom name not known: "+Aname);
3712 : }
3713 1968 : } else if(Rname==" U") {
3714 0 : if(Aname=="BB1") {
3715 0 : atoi[i]=U_BB1;
3716 0 : } else if(Aname=="BB2") {
3717 0 : atoi[i]=U_BB2;
3718 0 : } else if(Aname=="BB3") {
3719 0 : atoi[i]=U_BB3;
3720 0 : } else if(Aname=="SC1") {
3721 0 : atoi[i]=U_SC1;
3722 0 : } else if(Aname=="SC2") {
3723 0 : atoi[i]=U_SC2;
3724 0 : } else if(Aname=="SC3") {
3725 0 : atoi[i]=U_SC3;
3726 0 : } else if(Aname=="3TE") {
3727 0 : atoi[i]=U_3TE;
3728 0 : } else if(Aname=="5TE") {
3729 0 : atoi[i]=U_5TE;
3730 0 : } else if(Aname=="TE3") {
3731 0 : atoi[i]=U_TE3;
3732 0 : } else if(Aname=="TE5") {
3733 0 : atoi[i]=U_TE5;
3734 : } else {
3735 0 : error("Atom name not known: "+Aname);
3736 : }
3737 1968 : } else if(Rname==" DA") {
3738 696 : if(Aname=="BB1") {
3739 96 : atoi[i]=DA_BB1;
3740 600 : } else if(Aname=="BB2") {
3741 96 : atoi[i]=DA_BB2;
3742 504 : } else if(Aname=="BB3") {
3743 96 : atoi[i]=DA_BB3;
3744 408 : } else if(Aname=="SC1") {
3745 100 : atoi[i]=DA_SC1;
3746 308 : } else if(Aname=="SC2") {
3747 100 : atoi[i]=DA_SC2;
3748 208 : } else if(Aname=="SC3") {
3749 100 : atoi[i]=DA_SC3;
3750 108 : } else if(Aname=="SC4") {
3751 100 : atoi[i]=DA_SC4;
3752 8 : } else if(Aname=="3TE") {
3753 0 : atoi[i]=DA_3TE;
3754 8 : } else if(Aname=="5TE") {
3755 0 : atoi[i]=DA_5TE;
3756 8 : } else if(Aname=="TE3") {
3757 4 : atoi[i]=DA_TE3;
3758 4 : } else if(Aname=="TE5") {
3759 4 : atoi[i]=DA_TE5;
3760 : } else {
3761 0 : error("Atom name not known: "+Aname);
3762 : }
3763 1272 : } else if(Rname==" DC") {
3764 312 : if(Aname=="BB1") {
3765 52 : atoi[i]=DC_BB1;
3766 260 : } else if(Aname=="BB2") {
3767 52 : atoi[i]=DC_BB2;
3768 208 : } else if(Aname=="BB3") {
3769 52 : atoi[i]=DC_BB3;
3770 156 : } else if(Aname=="SC1") {
3771 52 : atoi[i]=DC_SC1;
3772 104 : } else if(Aname=="SC2") {
3773 52 : atoi[i]=DC_SC2;
3774 52 : } else if(Aname=="SC3") {
3775 52 : atoi[i]=DC_SC3;
3776 0 : } else if(Aname=="3TE") {
3777 0 : atoi[i]=DC_3TE;
3778 0 : } else if(Aname=="5TE") {
3779 0 : atoi[i]=DC_5TE;
3780 0 : } else if(Aname=="TE3") {
3781 0 : atoi[i]=DC_TE3;
3782 0 : } else if(Aname=="TE5") {
3783 0 : atoi[i]=DC_TE5;
3784 : } else {
3785 0 : error("Atom name not known: "+Aname);
3786 : }
3787 960 : } else if(Rname==" DG") {
3788 364 : if(Aname=="BB1") {
3789 52 : atoi[i]=DG_BB1;
3790 312 : } else if(Aname=="BB2") {
3791 52 : atoi[i]=DG_BB2;
3792 260 : } else if(Aname=="BB3") {
3793 52 : atoi[i]=DG_BB3;
3794 208 : } else if(Aname=="SC1") {
3795 52 : atoi[i]=DG_SC1;
3796 156 : } else if(Aname=="SC2") {
3797 52 : atoi[i]=DG_SC2;
3798 104 : } else if(Aname=="SC3") {
3799 52 : atoi[i]=DG_SC3;
3800 52 : } else if(Aname=="SC4") {
3801 52 : atoi[i]=DG_SC4;
3802 0 : } else if(Aname=="3TE") {
3803 0 : atoi[i]=DG_3TE;
3804 0 : } else if(Aname=="5TE") {
3805 0 : atoi[i]=DG_5TE;
3806 0 : } else if(Aname=="TE3") {
3807 0 : atoi[i]=DG_TE3;
3808 0 : } else if(Aname=="TE5") {
3809 0 : atoi[i]=DG_TE5;
3810 : } else {
3811 0 : error("Atom name not known: "+Aname);
3812 : }
3813 596 : } else if(Rname==" DT") {
3814 596 : if(Aname=="BB1") {
3815 96 : atoi[i]=DT_BB1;
3816 500 : } else if(Aname=="BB2") {
3817 96 : atoi[i]=DT_BB2;
3818 404 : } else if(Aname=="BB3") {
3819 96 : atoi[i]=DT_BB3;
3820 308 : } else if(Aname=="SC1") {
3821 100 : atoi[i]=DT_SC1;
3822 208 : } else if(Aname=="SC2") {
3823 100 : atoi[i]=DT_SC2;
3824 108 : } else if(Aname=="SC3") {
3825 100 : atoi[i]=DT_SC3;
3826 8 : } else if(Aname=="3TE") {
3827 0 : atoi[i]=DT_3TE;
3828 8 : } else if(Aname=="5TE") {
3829 0 : atoi[i]=DT_5TE;
3830 8 : } else if(Aname=="TE3") {
3831 4 : atoi[i]=DT_TE3;
3832 4 : } else if(Aname=="TE5") {
3833 4 : atoi[i]=DT_TE5;
3834 : } else {
3835 0 : error("Atom name not known: "+Aname);
3836 : }
3837 : } else {
3838 0 : error("Residue not known: "+Rname);
3839 : }
3840 : }
3841 : } else {
3842 0 : error("MOLINFO DATA not found\n");
3843 : }
3844 12 : }
3845 :
3846 4 : void SAXS::getMartiniFFparam_v3(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > ¶meter) {
3847 : // Kept separate from the Martini 2.2 table in getMartiniFFparam because the coefficients
3848 : // differ and the Martini 3 protein topology adds beads absent in 2.2 (ALA_SC1, TRP_SC5,
3849 : // TYR_SC4). The 7-coefficient / degree-6-in-q form is deliberately unchanged so the same
3850 : // downstream polynomial evaluator serves both MARTINI_FF versions. See the Martini 3
3851 : // form-factor paper in the bibliography for how the coefficients were derived.
3852 4 : parameter[ALA_BB] = {10.643806846255465, 0.0, 2.0616371683115733, 0.7872168906775016, -5.080460379455372, 3.222662883174488, -0.5960016057238122};
3853 4 : parameter[ALA_SC1] = {-1.7010874177132265, 0.0, 7.118764019567526, 1.1145464157804394, -5.950013175357564, 2.8714126567294755, -0.42838104934301313};
3854 :
3855 4 : parameter[ARG_BB] = {10.64380122599819, 0.0, 2.061637183212542, 0.7872187072333622, -5.080459366793695, 3.2226607845095225, -0.5960010250566496};
3856 4 : parameter[ARG_SC1] = {-2.582459965203611, 0.0, 16.093491676712716, 1.1997535742302685, -15.212231100907612, 8.324901545777502, -1.3612064124992838};
3857 4 : parameter[ARG_SC2] = {14.428248841779087, 0.0, -0.5306373105617507, 1.6708928597353037, -4.220821223435202, 2.340601736383018, -0.3836111601465304};
3858 :
3859 4 : parameter[ASN_BB] = {10.64380637290148, 0.0, 2.0616383733664607, 0.7872206653851905, -5.080466495994918, 3.2226654178553917, -0.5960019074982035};
3860 4 : parameter[ASN_SC1] = {9.305752980758708, 0.0, 8.028095134281596, -2.3099183822637563, -6.632212819638959, 4.4228155805014255, -0.7764062905424147};
3861 :
3862 4 : parameter[ASP_BB] = {10.643806310047486, 0.0, 2.06163743145317, 0.787217929242442, -5.080461918557475, 3.222663478750303, -0.5960016686083391};
3863 4 : parameter[ASP_SC1] = {10.498866776432472, 0.0, 7.536374464512118, -2.8556236565791147, -5.4787540182953105, 3.815664106474512, -0.67328443867979};
3864 :
3865 4 : parameter[CYS_BB] = {10.643806815155962, 0.0, 2.0616371622877585, 0.7872168883774691, -5.080460364611164, 3.222662873758418, -0.5960016039823965};
3866 4 : parameter[CYS_SC1] = {7.84213323319376, 0.0, 9.953170739451108, -1.2903802262350998, -7.207970655489376, 4.191794051784442, -0.688509627116269};
3867 :
3868 4 : parameter[GLN_BB] = {10.643801955137343, 0.0, 2.061635484428877, 0.7872153749124453, -5.080458169900939, 3.2226625571952128, -0.5960016907141563};
3869 4 : parameter[GLN_SC1] = {8.444221071382211, 0.0, 17.678600522511136, -15.30698404588629, -1.7525725905064409, 4.726896859211768, -1.1004371797545023};
3870 :
3871 4 : parameter[GLU_BB] = {10.643804801462782, 0.0, 2.0616367722480975, 0.7872167394450527, -5.080459403443487, 3.2226622640656624, -0.5960014912253735};
3872 4 : parameter[GLU_SC1] = {9.637509830770533, 0.0, 16.9079134467359, -14.850360181614349, -1.4743561994477412, 4.367483853252233, -1.011774253849401};
3873 :
3874 4 : parameter[GLY_BB] = {10.030507380458893, 0.0, 3.8641270986545533, 0.5938012695810033, -6.486785053096451, 4.045479409708778, -0.7318132454163564};
3875 :
3876 4 : parameter[HIS_BB] = {10.643806239423265, 0.0, 2.061636403138179, 0.7872153348214171, -5.080458934227526, 3.222662755527101, -0.5960016737782905};
3877 4 : parameter[HIS_SC1] = {-0.3510341202994483, 0.0, 7.193968257062204, 1.0071445792130653, -5.966246573308775, 2.857512357903082, -0.4182231235167757};
3878 4 : parameter[HIS_SC2] = {5.208533893792252, 0.0, 3.8539382664534454, -0.7578802642311985, -2.104343630945438, 1.154962103610813, -0.17552755823901833};
3879 4 : parameter[HIS_SC3] = {5.917304757860416, 0.0, 3.4514167501354183, -0.7996735949256304, -1.9263229210885686, 1.0965585639684268, -0.17072583342582792};
3880 :
3881 4 : parameter[ILE_BB] = {10.64380615454994, 0.0, 2.0616374013343046, 0.7872179177418046, -5.080461844335988, 3.2226634316697726, -0.5960016599012332};
3882 4 : parameter[ILE_SC1] = {-2.8097860782245627, 0.0, 17.343971902022577, -0.23891906441869626, -15.000405961544278, 8.58845914300296, -1.441332654688594};
3883 :
3884 4 : parameter[LEU_BB] = {10.643806213809782, 0.0, 2.061633435208698, 0.7872076376318345, -5.080448157052189, 3.222659304574193, -0.5960014675554544};
3885 4 : parameter[LEU_SC1] = {-4.5114171929323135, 0.0, 25.86498421391297, -0.3593827525321407, -25.217858321420422, 15.064085710903564, -2.607530763046867};
3886 :
3887 4 : parameter[LYS_BB] = {10.64380376754201, 0.0, 2.0616367677184795, 0.7872172380281511, -5.080459867292311, 3.222662355248592, -0.5960014828825799};
3888 4 : parameter[LYS_SC1] = {-2.5824810746850932, 0.0, 16.13252189664475, 1.128748246295519, -15.254770450814124, 8.38659674454396, -1.375867210865735};
3889 4 : parameter[LYS_SC2] = {2.1875912973408798, 0.0, 7.73920607666854, -0.27554644744459345, -5.278638129524195, 2.7078403428197415, -0.40648308930112886};
3890 :
3891 4 : parameter[MET_BB] = {10.643805945882942, 0.0, 2.061638855896697, 0.7872212846351714, -5.080465329413779, 3.2226637799383036, -0.5960014813592833};
3892 4 : parameter[MET_SC1] = {5.941578575762451, 0.0, 27.196511296595972, -14.885385896082838, -11.454742034363008, 10.47605161022688, -2.1101041439081705};
3893 :
3894 4 : parameter[PHE_BB] = {10.643806006706622, 0.0, 2.0616372014304547, 0.7872174036368966, -5.080460936081678, 3.2226630332083683, -0.596001608264948};
3895 4 : parameter[PHE_SC1] = {-0.8462636496033878, 0.0, 14.839441617245123, 2.2004608533314522, -16.95606436299522, 9.510075608290261, -1.5946587656311024};
3896 4 : parameter[PHE_SC2] = {-0.742231268614823, 0.0, 10.63643103868057, 1.7786090791808593, -10.450445500864703, 5.373874846922616, -0.8428947987047763};
3897 4 : parameter[PHE_SC3] = {-0.7422313155110873, 0.0, 10.636434560542588, 1.7789447792708137, -10.451993220972495, 5.374862813071748, -0.8430703179386754};
3898 :
3899 4 : parameter[PRO_BB] = {10.643806843833374, 0.0, 2.0616339242389112, 0.7872087624627253, -5.080450252830959, 3.2226602532621835, -0.5960015957447156};
3900 4 : parameter[PRO_SC1] = {-2.5823799290163008, 0.0, 15.935745257970094, 1.5755615408846868, -15.321956596666128, 8.243503230527706, -1.3306121395565977};
3901 :
3902 4 : parameter[SER_BB] = {10.643806777864874, 0.0, 2.0616387389176625, 0.7872199109819031, -5.080462650852676, 3.222662175078477, -0.5960011782019041};
3903 4 : parameter[SER_SC1] = {3.4162901978899263, 0.0, 7.046526576582673, -0.7405001447742399, -4.171626396336101, 2.17896359910637, -0.3261396940578125};
3904 :
3905 4 : parameter[THR_BB] = {10.643806692667567, 0.0, 2.0616395632827773, 0.7872229931327475, -5.080468438252067, 3.2226651681904412, -0.596001665635775};
3906 4 : parameter[THR_SC1] = {2.3286130028844063, 0.0, 15.22075528248213, -7.075948421013035, -4.803271805624368, 3.801442540603149, -0.6738285661353789};
3907 :
3908 4 : parameter[TRP_BB] = {10.6438056642156, 0.0, 2.0616365723567625, 0.7872157250296694, -5.080458020204383, 3.222661767357874, -0.5960014466255745};
3909 4 : parameter[TRP_SC1] = {-0.351034177345441, 0.0, 7.194381667728987, 1.0062737316596095, -5.967563386286029, 2.8587212292759863, -0.41846073110281257};
3910 4 : parameter[TRP_SC2] = {5.2085335935035015, 0.0, 3.846414533476574, -0.7548987022087086, -2.1045634954549053, 1.1551370044816633, -0.17558936197499975};
3911 4 : parameter[TRP_SC3] = {1.0191615583089166, 0.0, 4.052957128215075, 0.9232332263552776, -3.327471251075115, 1.4497288158043133, -0.19659298783187706};
3912 4 : parameter[TRP_SC4] = {-0.4946782468748683, 0.0, 6.9061019054469925, 1.4448598321835506, -6.077337073118115, 2.8277650354743824, -0.40813950611040006};
3913 4 : parameter[TRP_SC5] = {-0.49467887303237984, 0.0, 6.906755828716037, 1.4448532336312239, -6.084567814617669, 2.83287175092946, -0.4090847242312874};
3914 :
3915 4 : parameter[TYR_BB] = {10.643806827500029, 0.0, 2.061632625815723, 0.7872057392672824, -5.080447933834761, 3.2226603604678723, -0.5960017988956865};
3916 4 : parameter[TYR_SC1] = {-0.3510348934006665, 0.0, 7.198047296937748, 0.9985596099204095, -5.979206265377417, 2.869439868998658, -0.4205709369357118};
3917 4 : parameter[TYR_SC2] = {-0.49467730589685305, 0.0, 6.905064702126387, 1.4448572769420103, -6.0657993256015255, 2.8196314526492494, -0.4066356099898165};
3918 4 : parameter[TYR_SC3] = {-0.49467728298728963, 0.0, 6.905040827851511, 1.444857019166638, -6.065533022896432, 2.8194439448562316, -0.4066009631311269};
3919 4 : parameter[TYR_SC4] = {4.7864749265977435, 0.0, 3.379084515901221, 0.457435669705735, -2.6386732256533407, 1.184403517784809, -0.16175671046904316};
3920 :
3921 4 : parameter[VAL_BB] = {10.643806849587198, 0.0, 2.061631159601996, 0.7872024303709435, -5.080444479262741, 3.2226600061868638, -0.5960019731764394};
3922 4 : parameter[VAL_SC1] = {-3.650489697568667, 0.0, 20.152880104569256, -1.3077717593059774, -16.48666338249699, 9.710777748612122, -1.654724631578258};
3923 :
3924 : // Resolve beads by (residue, bead) name rather than by input order so the coefficients
3925 : // stay correct regardless of how the user ordered ATOMS. An unrecognised name means the
3926 : // topology is not Martini 3, so we error out early instead of silently applying the wrong
3927 : // form factor and producing a plausible-looking but incorrect intensity.
3928 4 : auto* moldat=plumed.getActionSet().selectLatest<GenericMolInfo*>(this);
3929 4 : if( moldat ) {
3930 1220 : for(unsigned i=0; i<atoms.size(); ++i) {
3931 1216 : std::string Aname = moldat->getAtomName(atoms[i]);
3932 1216 : std::string Rname = moldat->getResidueName(atoms[i]);
3933 1216 : if(Rname=="ALA") {
3934 96 : if(Aname=="BB") {
3935 48 : atoi[i]=ALA_BB;
3936 48 : } else if(Aname=="SC1") {
3937 48 : atoi[i]=ALA_SC1;
3938 : } else {
3939 0 : error("Atom name not known: "+Aname);
3940 : }
3941 1120 : } else if(Rname=="ARG") {
3942 132 : if(Aname=="BB") {
3943 44 : atoi[i]=ARG_BB;
3944 88 : } else if(Aname=="SC1") {
3945 44 : atoi[i]=ARG_SC1;
3946 44 : } else if(Aname=="SC2") {
3947 44 : atoi[i]=ARG_SC2;
3948 : } else {
3949 0 : error("Atom name not known: "+Aname);
3950 : }
3951 988 : } else if(Rname=="ASN") {
3952 112 : if(Aname=="BB") {
3953 56 : atoi[i]=ASN_BB;
3954 56 : } else if(Aname=="SC1") {
3955 56 : atoi[i]=ASN_SC1;
3956 : } else {
3957 0 : error("Atom name not known: "+Aname);
3958 : }
3959 876 : } else if(Rname=="ASP") {
3960 56 : if(Aname=="BB") {
3961 28 : atoi[i]=ASP_BB;
3962 28 : } else if(Aname=="SC1") {
3963 28 : atoi[i]=ASP_SC1;
3964 : } else {
3965 0 : error("Atom name not known: "+Aname);
3966 : }
3967 820 : } else if(Rname=="CYS") {
3968 64 : if(Aname=="BB") {
3969 32 : atoi[i]=CYS_BB;
3970 32 : } else if(Aname=="SC1") {
3971 32 : atoi[i]=CYS_SC1;
3972 : } else {
3973 0 : error("Atom name not known: "+Aname);
3974 : }
3975 756 : } else if(Rname=="GLN") {
3976 24 : if(Aname=="BB") {
3977 12 : atoi[i]=GLN_BB;
3978 12 : } else if(Aname=="SC1") {
3979 12 : atoi[i]=GLN_SC1;
3980 : } else {
3981 0 : error("Atom name not known: "+Aname);
3982 : }
3983 732 : } else if(Rname=="GLU") {
3984 16 : if(Aname=="BB") {
3985 8 : atoi[i]=GLU_BB;
3986 8 : } else if(Aname=="SC1") {
3987 8 : atoi[i]=GLU_SC1;
3988 : } else {
3989 0 : error("Atom name not known: "+Aname);
3990 : }
3991 716 : } else if(Rname=="GLY") {
3992 48 : if(Aname=="BB") {
3993 48 : atoi[i]=GLY_BB;
3994 : } else {
3995 0 : error("Atom name not known: "+Aname);
3996 : }
3997 668 : } else if(Rname=="HIS") {
3998 16 : if(Aname=="BB") {
3999 4 : atoi[i]=HIS_BB;
4000 12 : } else if(Aname=="SC1") {
4001 4 : atoi[i]=HIS_SC1;
4002 8 : } else if(Aname=="SC2") {
4003 4 : atoi[i]=HIS_SC2;
4004 4 : } else if(Aname=="SC3") {
4005 4 : atoi[i]=HIS_SC3;
4006 : } else {
4007 0 : error("Atom name not known: "+Aname);
4008 : }
4009 652 : } else if(Rname=="ILE") {
4010 48 : if(Aname=="BB") {
4011 24 : atoi[i]=ILE_BB;
4012 24 : } else if(Aname=="SC1") {
4013 24 : atoi[i]=ILE_SC1;
4014 : } else {
4015 0 : error("Atom name not known: "+Aname);
4016 : }
4017 604 : } else if(Rname=="LEU") {
4018 64 : if(Aname=="BB") {
4019 32 : atoi[i]=LEU_BB;
4020 32 : } else if(Aname=="SC1") {
4021 32 : atoi[i]=LEU_SC1;
4022 : } else {
4023 0 : error("Atom name not known: "+Aname);
4024 : }
4025 540 : } else if(Rname=="LYS") {
4026 72 : if(Aname=="BB") {
4027 24 : atoi[i]=LYS_BB;
4028 48 : } else if(Aname=="SC1") {
4029 24 : atoi[i]=LYS_SC1;
4030 24 : } else if(Aname=="SC2") {
4031 24 : atoi[i]=LYS_SC2;
4032 : } else {
4033 0 : error("Atom name not known: "+Aname);
4034 : }
4035 468 : } else if(Rname=="MET") {
4036 16 : if(Aname=="BB") {
4037 8 : atoi[i]=MET_BB;
4038 8 : } else if(Aname=="SC1") {
4039 8 : atoi[i]=MET_SC1;
4040 : } else {
4041 0 : error("Atom name not known: "+Aname);
4042 : }
4043 452 : } else if(Rname=="PHE") {
4044 48 : if(Aname=="BB") {
4045 12 : atoi[i]=PHE_BB;
4046 36 : } else if(Aname=="SC1") {
4047 12 : atoi[i]=PHE_SC1;
4048 24 : } else if(Aname=="SC2") {
4049 12 : atoi[i]=PHE_SC2;
4050 12 : } else if(Aname=="SC3") {
4051 12 : atoi[i]=PHE_SC3;
4052 : } else {
4053 0 : error("Atom name not known: "+Aname);
4054 : }
4055 404 : } else if(Rname=="PRO") {
4056 16 : if(Aname=="BB") {
4057 8 : atoi[i]=PRO_BB;
4058 8 : } else if(Aname=="SC1") {
4059 8 : atoi[i]=PRO_SC1;
4060 : } else {
4061 0 : error("Atom name not known: "+Aname);
4062 : }
4063 388 : } else if(Rname=="SER") {
4064 80 : if(Aname=="BB") {
4065 40 : atoi[i]=SER_BB;
4066 40 : } else if(Aname=="SC1") {
4067 40 : atoi[i]=SER_SC1;
4068 : } else {
4069 0 : error("Atom name not known: "+Aname);
4070 : }
4071 308 : } else if(Rname=="THR") {
4072 56 : if(Aname=="BB") {
4073 28 : atoi[i]=THR_BB;
4074 28 : } else if(Aname=="SC1") {
4075 28 : atoi[i]=THR_SC1;
4076 : } else {
4077 0 : error("Atom name not known: "+Aname);
4078 : }
4079 252 : } else if(Rname=="TRP") {
4080 144 : if(Aname=="BB") {
4081 24 : atoi[i]=TRP_BB;
4082 120 : } else if(Aname=="SC1") {
4083 24 : atoi[i]=TRP_SC1;
4084 96 : } else if(Aname=="SC2") {
4085 24 : atoi[i]=TRP_SC2;
4086 72 : } else if(Aname=="SC3") {
4087 24 : atoi[i]=TRP_SC3;
4088 48 : } else if(Aname=="SC4") {
4089 24 : atoi[i]=TRP_SC4;
4090 24 : } else if(Aname=="SC5") {
4091 24 : atoi[i]=TRP_SC5;
4092 : } else {
4093 0 : error("Atom name not known: "+Aname);
4094 : }
4095 108 : } else if(Rname=="TYR") {
4096 60 : if(Aname=="BB") {
4097 12 : atoi[i]=TYR_BB;
4098 48 : } else if(Aname=="SC1") {
4099 12 : atoi[i]=TYR_SC1;
4100 36 : } else if(Aname=="SC2") {
4101 12 : atoi[i]=TYR_SC2;
4102 24 : } else if(Aname=="SC3") {
4103 12 : atoi[i]=TYR_SC3;
4104 12 : } else if(Aname=="SC4") {
4105 12 : atoi[i]=TYR_SC4;
4106 : } else {
4107 0 : error("Atom name not known: "+Aname);
4108 : }
4109 48 : } else if(Rname=="VAL") {
4110 48 : if(Aname=="BB") {
4111 24 : atoi[i]=VAL_BB;
4112 24 : } else if(Aname=="SC1") {
4113 24 : atoi[i]=VAL_SC1;
4114 : } else {
4115 0 : error("Atom name not known: "+Aname);
4116 : }
4117 : } else {
4118 0 : error("Residue not known: "+Rname);
4119 : }
4120 : }
4121 : } else {
4122 0 : error("MOLINFO DATA not found");
4123 : }
4124 4 : }
4125 :
4126 12 : void SAXS::getOnebeadparam(const PDB &pdb, const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > ¶meter_vac, std::vector<std::vector<long double> > ¶meter_mix, std::vector<std::vector<long double> > ¶meter_solv, const std::vector<unsigned> & residue_atoms) {
4127 :
4128 12 : parameter_solv[TRP].push_back(60737.60249988003);
4129 12 : parameter_solv[TRP].push_back(-77.75716755173752);
4130 12 : parameter_solv[TRP].push_back(-205962.98557711052);
4131 12 : parameter_solv[TRP].push_back(-62013.46984155453);
4132 12 : parameter_solv[TRP].push_back(680710.7592231638);
4133 12 : parameter_solv[TRP].push_back(-681336.8777362367);
4134 12 : parameter_solv[TRP].push_back(211473.65530642506);
4135 :
4136 12 : parameter_solv[TYR].push_back(46250.80359987982);
4137 12 : parameter_solv[TYR].push_back(-45.8287864681578);
4138 12 : parameter_solv[TYR].push_back(-143872.91752817619);
4139 12 : parameter_solv[TYR].push_back(-39049.68736409533);
4140 12 : parameter_solv[TYR].push_back(441321.71874090104);
4141 12 : parameter_solv[TYR].push_back(-434478.0972346327);
4142 12 : parameter_solv[TYR].push_back(133179.3694641212);
4143 :
4144 12 : parameter_solv[PHE].push_back(42407.164900118914);
4145 12 : parameter_solv[PHE].push_back(-159.1980754191431);
4146 12 : parameter_solv[PHE].push_back(-123847.86192757386);
4147 12 : parameter_solv[PHE].push_back(-41797.69041575073);
4148 12 : parameter_solv[PHE].push_back(380283.7035277073);
4149 12 : parameter_solv[PHE].push_back(-361432.67247521743);
4150 12 : parameter_solv[PHE].push_back(107750.64978068044);
4151 :
4152 12 : parameter_solv[HIP].push_back(24473.47360011923);
4153 12 : parameter_solv[HIP].push_back(-111.64156672747428);
4154 12 : parameter_solv[HIP].push_back(-65826.16993707925);
4155 12 : parameter_solv[HIP].push_back(-23305.91329798928);
4156 12 : parameter_solv[HIP].push_back(194795.11911635034);
4157 12 : parameter_solv[HIP].push_back(-180454.49458095312);
4158 12 : parameter_solv[HIP].push_back(52699.374196745615);
4159 :
4160 12 : parameter_solv[ARG].push_back(34106.70239988039);
4161 12 : parameter_solv[ARG].push_back(152.7472727640246);
4162 12 : parameter_solv[ARG].push_back(-117086.49392248681);
4163 12 : parameter_solv[ARG].push_back(-19664.229479267167);
4164 12 : parameter_solv[ARG].push_back(364454.0909203641);
4165 12 : parameter_solv[ARG].push_back(-382075.8018312776);
4166 12 : parameter_solv[ARG].push_back(122775.75036605193);
4167 :
4168 12 : parameter_solv[LYS].push_back(32292.090000118922);
4169 12 : parameter_solv[LYS].push_back(-111.97371180593888);
4170 12 : parameter_solv[LYS].push_back(-91953.10997619898);
4171 12 : parameter_solv[LYS].push_back(-30690.807047993283);
4172 12 : parameter_solv[LYS].push_back(282092.40760143084);
4173 12 : parameter_solv[LYS].push_back(-269503.2592457489);
4174 12 : parameter_solv[LYS].push_back(80777.81552915688);
4175 :
4176 12 : parameter_solv[CYS].push_back(11352.902500119093);
4177 12 : parameter_solv[CYS].push_back(-45.5226331859686);
4178 12 : parameter_solv[CYS].push_back(-20925.085562607524);
4179 12 : parameter_solv[CYS].push_back(-5662.685408989286);
4180 12 : parameter_solv[CYS].push_back(38559.10376731146);
4181 12 : parameter_solv[CYS].push_back(-27885.23426006181);
4182 12 : parameter_solv[CYS].push_back(6280.15058191397);
4183 :
4184 12 : parameter_solv[CYX].push_back(10281.960000119348);
4185 12 : parameter_solv[CYX].push_back(-42.315998754511);
4186 12 : parameter_solv[CYX].push_back(-19328.174487327480);
4187 12 : parameter_solv[CYX].push_back(-5523.191775626829);
4188 12 : parameter_solv[CYX].push_back(38185.463172673335);
4189 12 : parameter_solv[CYX].push_back(-28940.174693042034);
4190 12 : parameter_solv[CYX].push_back(6925.390014187676);
4191 :
4192 12 : parameter_solv[ASP].push_back(13511.73760011933);
4193 12 : parameter_solv[ASP].push_back(-59.929111107656595);
4194 12 : parameter_solv[ASP].push_back(-25849.869639655575);
4195 12 : parameter_solv[ASP].push_back(-7541.669448872824);
4196 12 : parameter_solv[ASP].push_back(50760.92045144903);
4197 12 : parameter_solv[ASP].push_back(-37677.87583269734);
4198 12 : parameter_solv[ASP].push_back(8745.7056219399);
4199 :
4200 12 : parameter_solv[GLU].push_back(20443.280400119456);
4201 12 : parameter_solv[GLU].push_back(-113.77561814283207);
4202 12 : parameter_solv[GLU].push_back(-45587.79314626863);
4203 12 : parameter_solv[GLU].push_back(-16187.556837331254);
4204 12 : parameter_solv[GLU].push_back(112609.65830609271);
4205 12 : parameter_solv[GLU].push_back(-93362.05323205091);
4206 12 : parameter_solv[GLU].push_back(24519.557866124724);
4207 :
4208 12 : parameter_solv[ILE].push_back(27858.948100119596);
4209 12 : parameter_solv[ILE].push_back(-159.27355145839834);
4210 12 : parameter_solv[ILE].push_back(-61571.43463039565);
4211 12 : parameter_solv[ILE].push_back(-21324.879474559468);
4212 12 : parameter_solv[ILE].push_back(144070.7572894681);
4213 12 : parameter_solv[ILE].push_back(-115021.81959095894);
4214 12 : parameter_solv[ILE].push_back(28939.085108838968);
4215 :
4216 12 : parameter_solv[LEU].push_back(27858.948100119596);
4217 12 : parameter_solv[LEU].push_back(-165.61892007509647);
4218 12 : parameter_solv[LEU].push_back(-62564.568746500125);
4219 12 : parameter_solv[LEU].push_back(-22465.332149768525);
4220 12 : parameter_solv[LEU].push_back(151616.79489291538);
4221 12 : parameter_solv[LEU].push_back(-122905.6119395393);
4222 12 : parameter_solv[LEU].push_back(31436.664377885514);
4223 :
4224 12 : parameter_solv[MET].push_back(25609.60090011981);
4225 12 : parameter_solv[MET].push_back(-135.38857843066708);
4226 12 : parameter_solv[MET].push_back(-67771.01108177133);
4227 12 : parameter_solv[MET].push_back(-25228.934337676077);
4228 12 : parameter_solv[MET].push_back(199649.95030712147);
4229 12 : parameter_solv[MET].push_back(-182251.94895101967);
4230 12 : parameter_solv[MET].push_back(52502.88444247481);
4231 :
4232 12 : parameter_solv[ASN].push_back(14376.010000119095);
4233 12 : parameter_solv[ASN].push_back(-67.65579048748472);
4234 12 : parameter_solv[ASN].push_back(-28302.87809850141);
4235 12 : parameter_solv[ASN].push_back(-8577.439830985548);
4236 12 : parameter_solv[ASN].push_back(57532.879075695324);
4237 12 : parameter_solv[ASN].push_back(-43261.79286366774);
4238 12 : parameter_solv[ASN].push_back(10186.448634149085);
4239 :
4240 12 : parameter_solv[PRO].push_back(16866.21690011944);
4241 12 : parameter_solv[PRO].push_back(-70.84327801054884);
4242 12 : parameter_solv[PRO].push_back(-31465.84064925844);
4243 12 : parameter_solv[PRO].push_back(-8653.3693368317);
4244 12 : parameter_solv[PRO].push_back(58032.28250733714);
4245 12 : parameter_solv[PRO].push_back(-41521.01146771431);
4246 12 : parameter_solv[PRO].push_back(9184.530596102064);
4247 :
4248 12 : parameter_solv[GLN].push_back(21503.289600119);
4249 12 : parameter_solv[GLN].push_back(-121.30164008960246);
4250 12 : parameter_solv[GLN].push_back(-50468.580981118175);
4251 12 : parameter_solv[GLN].push_back(-18462.49098408308);
4252 12 : parameter_solv[GLN].push_back(132718.44904081387);
4253 12 : parameter_solv[GLN].push_back(-113787.22666510186);
4254 12 : parameter_solv[GLN].push_back(30920.348610969988);
4255 :
4256 12 : parameter_solv[SER].push_back(9181.472400119354);
4257 12 : parameter_solv[SER].push_back(-28.77519915767741);
4258 12 : parameter_solv[SER].push_back(-15205.543144104717);
4259 12 : parameter_solv[SER].push_back(-3377.782176346411);
4260 12 : parameter_solv[SER].push_back(23345.555771001076);
4261 12 : parameter_solv[SER].push_back(-15312.694356014094);
4262 12 : parameter_solv[SER].push_back(3013.8428466148);
4263 :
4264 12 : parameter_solv[THR].push_back(15020.953600119403);
4265 12 : parameter_solv[THR].push_back(-61.91004832631006);
4266 12 : parameter_solv[THR].push_back(-27814.537889259853);
4267 12 : parameter_solv[THR].push_back(-7532.227289701552);
4268 12 : parameter_solv[THR].push_back(50586.30566118166);
4269 12 : parameter_solv[THR].push_back(-35943.866131120165);
4270 12 : parameter_solv[THR].push_back(7880.093558764326);
4271 :
4272 12 : parameter_solv[VAL].push_back(19647.628900119355);
4273 12 : parameter_solv[VAL].push_back(-89.04983250107853);
4274 12 : parameter_solv[VAL].push_back(-38050.09958470928);
4275 12 : parameter_solv[VAL].push_back(-10921.427112288537);
4276 12 : parameter_solv[VAL].push_back(72774.32322962297);
4277 12 : parameter_solv[VAL].push_back(-52689.060152305225);
4278 12 : parameter_solv[VAL].push_back(11806.492503632868);
4279 :
4280 12 : parameter_solv[ALA].push_back(7515.156100119276);
4281 12 : parameter_solv[ALA].push_back(-20.226381685697746);
4282 12 : parameter_solv[ALA].push_back(-11761.841094237716);
4283 12 : parameter_solv[ALA].push_back(-2341.4929468980367);
4284 12 : parameter_solv[ALA].push_back(16545.385777961936);
4285 12 : parameter_solv[ALA].push_back(-10397.175253025776);
4286 12 : parameter_solv[ALA].push_back(1921.5264606725107);
4287 :
4288 12 : parameter_solv[GLY].push_back(3594.002500119159);
4289 12 : parameter_solv[GLY].push_back(-6.910836154887606);
4290 12 : parameter_solv[GLY].push_back(-4937.354220666574);
4291 12 : parameter_solv[GLY].push_back(-785.4549468992149);
4292 12 : parameter_solv[GLY].push_back(5852.854429532936);
4293 12 : parameter_solv[GLY].push_back(-3391.2927115487832);
4294 12 : parameter_solv[GLY].push_back(552.3280571490722);
4295 :
4296 12 : parameter_solv[HIS].push_back(22888.664100119073);
4297 12 : parameter_solv[HIS].push_back(-133.86265270962434);
4298 12 : parameter_solv[HIS].push_back(-57533.51591635819);
4299 12 : parameter_solv[HIS].push_back(-21767.293192014684);
4300 12 : parameter_solv[HIS].push_back(161255.14120001195);
4301 12 : parameter_solv[HIS].push_back(-142176.64081149307);
4302 12 : parameter_solv[HIS].push_back(39642.61185646193);
4303 :
4304 12 : parameter_mix[TRP].push_back(48294.0117571196);
4305 12 : parameter_mix[TRP].push_back(-205.45879626487798);
4306 12 : parameter_mix[TRP].push_back(-148816.1858118254);
4307 12 : parameter_mix[TRP].push_back(-54968.030079609875);
4308 12 : parameter_mix[TRP].push_back(491793.79967057955);
4309 12 : parameter_mix[TRP].push_back(-476312.9117969879);
4310 12 : parameter_mix[TRP].push_back(144159.96165644142);
4311 :
4312 12 : parameter_mix[TYR].push_back(36984.20240312081);
4313 12 : parameter_mix[TYR].push_back(-83.86380083812203);
4314 12 : parameter_mix[TYR].push_back(-108820.52211887162);
4315 12 : parameter_mix[TYR].push_back(-33934.69818901515);
4316 12 : parameter_mix[TYR].push_back(341504.736372253);
4317 12 : parameter_mix[TYR].push_back(-334008.1748614056);
4318 12 : parameter_mix[TYR].push_back(102033.08077851454);
4319 :
4320 12 : parameter_mix[PHE].push_back(32119.469231338233);
4321 12 : parameter_mix[PHE].push_back(-172.96940450568917);
4322 12 : parameter_mix[PHE].push_back(-85831.4326887122);
4323 12 : parameter_mix[PHE].push_back(-33193.32405438845);
4324 12 : parameter_mix[PHE].push_back(262940.64471909316);
4325 12 : parameter_mix[PHE].push_back(-243540.06898907054);
4326 12 : parameter_mix[PHE].push_back(71084.54387480798);
4327 :
4328 12 : parameter_mix[HIP].push_back(22833.36414923898);
4329 12 : parameter_mix[HIP].push_back(-134.0493955562186);
4330 12 : parameter_mix[HIP].push_back(-55325.55607328898);
4331 12 : parameter_mix[HIP].push_back(-21898.314938881984);
4332 12 : parameter_mix[HIP].push_back(159995.6912885654);
4333 12 : parameter_mix[HIP].push_back(-142968.19796084083);
4334 12 : parameter_mix[HIP].push_back(40417.44581470003);
4335 :
4336 12 : parameter_mix[ARG].push_back(31385.401600920715);
4337 12 : parameter_mix[ARG].push_back(36.114094042884254);
4338 12 : parameter_mix[ARG].push_back(-103730.44467490204);
4339 12 : parameter_mix[ARG].push_back(-27036.249157905615);
4340 12 : parameter_mix[ARG].push_back(347011.0339314942);
4341 12 : parameter_mix[ARG].push_back(-358879.9736802336);
4342 12 : parameter_mix[ARG].push_back(114432.18361399164);
4343 :
4344 12 : parameter_mix[LYS].push_back(25511.35812671878);
4345 12 : parameter_mix[LYS].push_back(-130.4381491986372);
4346 12 : parameter_mix[LYS].push_back(-69258.61236879184);
4347 12 : parameter_mix[LYS].push_back(-27066.36783798707);
4348 12 : parameter_mix[LYS].push_back(220092.65231165203);
4349 12 : parameter_mix[LYS].push_back(-207794.5056092443);
4350 12 : parameter_mix[LYS].push_back(61665.57004630315);
4351 :
4352 12 : parameter_mix[CYS].push_back(11505.517261618916);
4353 12 : parameter_mix[CYS].push_back(-33.60468076978334);
4354 12 : parameter_mix[CYS].push_back(-18328.882710004465);
4355 12 : parameter_mix[CYS].push_back(-3956.9113649567626);
4356 12 : parameter_mix[CYS].push_back(27546.35146501212);
4357 12 : parameter_mix[CYS].push_back(-18024.826330595406);
4358 12 : parameter_mix[CYS].push_back(3551.2207387570024);
4359 :
4360 12 : parameter_mix[CYX].push_back(10746.617793719070);
4361 12 : parameter_mix[CYX].push_back(-37.082746200650);
4362 12 : parameter_mix[CYX].push_back(-17871.552278655203);
4363 12 : parameter_mix[CYX].push_back(-4512.203184574789);
4364 12 : parameter_mix[CYX].push_back(30605.726711712588);
4365 12 : parameter_mix[CYX].push_back(-21530.684072275839);
4366 12 : parameter_mix[CYX].push_back(4694.601090758420);
4367 :
4368 12 : parameter_mix[ASP].push_back(13713.858501879382);
4369 12 : parameter_mix[ASP].push_back(-51.33286241257164);
4370 12 : parameter_mix[ASP].push_back(-23807.8549764091);
4371 12 : parameter_mix[ASP].push_back(-6153.667315935503);
4372 12 : parameter_mix[ASP].push_back(41296.118377286424);
4373 12 : parameter_mix[ASP].push_back(-28740.28391184026);
4374 12 : parameter_mix[ASP].push_back(6132.671533319127);
4375 :
4376 12 : parameter_mix[GLU].push_back(19156.03660739947);
4377 12 : parameter_mix[GLU].push_back(-110.90600703589246);
4378 12 : parameter_mix[GLU].push_back(-40319.3351514524);
4379 12 : parameter_mix[GLU].push_back(-14679.813393816446);
4380 12 : parameter_mix[GLU].push_back(96769.28565573556);
4381 12 : parameter_mix[GLU].push_back(-77909.09315520026);
4382 12 : parameter_mix[GLU].push_back(19770.047062759568);
4383 :
4384 12 : parameter_mix[ILE].push_back(20693.06215917923);
4385 12 : parameter_mix[ILE].push_back(-102.87208880594848);
4386 12 : parameter_mix[ILE].push_back(-41080.44036311675);
4387 12 : parameter_mix[ILE].push_back(-12874.439649378206);
4388 12 : parameter_mix[ILE].push_back(84947.33147117581);
4389 12 : parameter_mix[ILE].push_back(-63779.07871450237);
4390 12 : parameter_mix[ILE].push_back(14938.919981690511);
4391 :
4392 12 : parameter_mix[LEU].push_back(20693.062159179233);
4393 12 : parameter_mix[LEU].push_back(-114.09539845409269);
4394 12 : parameter_mix[LEU].push_back(-42417.3431074524);
4395 12 : parameter_mix[LEU].push_back(-14393.801090829746);
4396 12 : parameter_mix[LEU].push_back(93640.48403643962);
4397 12 : parameter_mix[LEU].push_back(-71990.10354816525);
4398 12 : parameter_mix[LEU].push_back(17299.01082057651);
4399 :
4400 12 : parameter_mix[MET].push_back(22400.800002738917);
4401 12 : parameter_mix[MET].push_back(-138.14469221559762);
4402 12 : parameter_mix[MET].push_back(-53013.97694299946);
4403 12 : parameter_mix[MET].push_back(-21079.899452619244);
4404 12 : parameter_mix[MET].push_back(148607.1089339919);
4405 12 : parameter_mix[MET].push_back(-129827.63962878387);
4406 12 : parameter_mix[MET].push_back(35882.3297822684);
4407 :
4408 12 : parameter_mix[ASN].push_back(14384.287416519475);
4409 12 : parameter_mix[ASN].push_back(-55.24976731179147);
4410 12 : parameter_mix[ASN].push_back(-25372.978199926372);
4411 12 : parameter_mix[ASN].push_back(-6646.452004616925);
4412 12 : parameter_mix[ASN].push_back(44594.5027556148);
4413 12 : parameter_mix[ASN].push_back(-31202.511764907107);
4414 12 : parameter_mix[ASN].push_back(6703.764135873442);
4415 :
4416 12 : parameter_mix[PRO].push_back(13503.797145659117);
4417 12 : parameter_mix[PRO].push_back(-38.58316011847087);
4418 12 : parameter_mix[PRO].push_back(-21446.17847324053);
4419 12 : parameter_mix[PRO].push_back(-4480.55896170459);
4420 12 : parameter_mix[PRO].push_back(31274.287350083254);
4421 12 : parameter_mix[PRO].push_back(-19984.249229169505);
4422 12 : parameter_mix[PRO].push_back(3782.272312712745);
4423 :
4424 12 : parameter_mix[GLN].push_back(19938.23724683901);
4425 12 : parameter_mix[GLN].push_back(-121.24884503048865);
4426 12 : parameter_mix[GLN].push_back(-43928.589472297834);
4427 12 : parameter_mix[GLN].push_back(-16805.069757865473);
4428 12 : parameter_mix[GLN].push_back(112831.61348476357);
4429 12 : parameter_mix[GLN].push_back(-93979.08819184235);
4430 12 : parameter_mix[GLN].push_back(24741.563493163732);
4431 :
4432 12 : parameter_mix[SER].push_back(8813.67020471935);
4433 12 : parameter_mix[SER].push_back(-18.291615317790175);
4434 12 : parameter_mix[SER].push_back(-12585.074732466266);
4435 12 : parameter_mix[SER].push_back(-2064.454891600786);
4436 12 : parameter_mix[SER].push_back(15273.905065790364);
4437 12 : parameter_mix[SER].push_back(-8813.056005263466);
4438 12 : parameter_mix[SER].push_back(1404.9812302289881);
4439 :
4440 12 : parameter_mix[THR].push_back(13233.997179639062);
4441 12 : parameter_mix[THR].push_back(-39.40454157416847);
4442 12 : parameter_mix[THR].push_back(-21430.58717233547);
4443 12 : parameter_mix[THR].push_back(-4566.332853710876);
4444 12 : parameter_mix[THR].push_back(31717.497780073558);
4445 12 : parameter_mix[THR].push_back(-20299.614304281313);
4446 12 : parameter_mix[THR].push_back(3837.207224537505);
4447 :
4448 12 : parameter_mix[VAL].push_back(15135.438016299158);
4449 12 : parameter_mix[VAL].push_back(-51.415141550353205);
4450 12 : parameter_mix[VAL].push_back(-25859.078442379723);
4451 12 : parameter_mix[VAL].push_back(-6007.697291593915);
4452 12 : parameter_mix[VAL].push_back(40997.969600345634);
4453 12 : parameter_mix[VAL].push_back(-27036.257386814148);
4454 12 : parameter_mix[VAL].push_back(5328.922363811635);
4455 :
4456 12 : parameter_mix[ALA].push_back(6586.942863819189);
4457 12 : parameter_mix[ALA].push_back(-10.96713559950907);
4458 12 : parameter_mix[ALA].push_back(-8758.836131731925);
4459 12 : parameter_mix[ALA].push_back(-1223.1723720922605);
4460 12 : parameter_mix[ALA].push_back(9475.182453543037);
4461 12 : parameter_mix[ALA].push_back(-5124.611191433804);
4462 12 : parameter_mix[ALA].push_back(721.7625962949869);
4463 :
4464 12 : parameter_mix[GLY].push_back(3596.0718542192762);
4465 12 : parameter_mix[GLY].push_back(-4.079285964028122);
4466 12 : parameter_mix[GLY].push_back(-4089.4217504382686);
4467 12 : parameter_mix[GLY].push_back(-450.9650932154967);
4468 12 : parameter_mix[GLY].push_back(3737.026778223427);
4469 12 : parameter_mix[GLY].push_back(-1862.9856575810572);
4470 12 : parameter_mix[GLY].push_back(222.97288276257262);
4471 :
4472 12 : parameter_mix[HIS].push_back(21779.124723299232);
4473 12 : parameter_mix[HIS].push_back(-131.4603421188538);
4474 12 : parameter_mix[HIS].push_back(-49068.74667421681);
4475 12 : parameter_mix[HIS].push_back(-18685.909496392127);
4476 12 : parameter_mix[HIS].push_back(127724.60792384286);
4477 12 : parameter_mix[HIS].push_back(-107419.22159440348);
4478 12 : parameter_mix[HIS].push_back(28577.228634530744);
4479 :
4480 12 : parameter_vac[TRP].push_back(9599.949107368187);
4481 12 : parameter_vac[TRP].push_back(-66.35331786175249);
4482 12 : parameter_vac[TRP].push_back(-26311.640290970638);
4483 12 : parameter_vac[TRP].push_back(-11577.314600529338);
4484 12 : parameter_vac[TRP].push_back(85847.52554160352);
4485 12 : parameter_vac[TRP].push_back(-79417.17065742958);
4486 12 : parameter_vac[TRP].push_back(23090.348430572863);
4487 :
4488 12 : parameter_vac[TYR].push_back(7393.553846412945);
4489 12 : parameter_vac[TYR].push_back(-27.51954035778316);
4490 12 : parameter_vac[TYR].push_back(-20329.10485615286);
4491 12 : parameter_vac[TYR].push_back(-7444.276340508767);
4492 12 : parameter_vac[TYR].push_back(66343.22315132803);
4493 12 : parameter_vac[TYR].push_back(-64470.58721639446);
4494 12 : parameter_vac[TYR].push_back(19614.63563898146);
4495 :
4496 12 : parameter_vac[PHE].push_back(6081.874997705279);
4497 12 : parameter_vac[PHE].push_back(-40.474695969500104);
4498 12 : parameter_vac[PHE].push_back(-14354.627390498901);
4499 12 : parameter_vac[PHE].push_back(-6156.69750315959);
4500 12 : parameter_vac[PHE].push_back(42580.84239395237);
4501 12 : parameter_vac[PHE].push_back(-37704.09749809582);
4502 12 : parameter_vac[PHE].push_back(10543.005717478625);
4503 :
4504 12 : parameter_vac[HIP].push_back(5325.791987063724);
4505 12 : parameter_vac[HIP].push_back(-35.512112257530156);
4506 12 : parameter_vac[HIP].push_back(-11488.443296477566);
4507 12 : parameter_vac[HIP].push_back(-4916.724935318093);
4508 12 : parameter_vac[HIP].push_back(32134.338675979947);
4509 12 : parameter_vac[HIP].push_back(-27388.387595464188);
4510 12 : parameter_vac[HIP].push_back(7359.899986748838);
4511 :
4512 12 : parameter_vac[ARG].push_back(7220.306892248294);
4513 12 : parameter_vac[ARG].push_back(-20.65912886190997);
4514 12 : parameter_vac[ARG].push_back(-22700.70129646048);
4515 12 : parameter_vac[ARG].push_back(-8696.901551172636);
4516 12 : parameter_vac[ARG].push_back(83641.36257312517);
4517 12 : parameter_vac[ARG].push_back(-85237.33676336925);
4518 12 : parameter_vac[ARG].push_back(26899.162688310953);
4519 :
4520 12 : parameter_vac[LYS].push_back(5038.613120729022);
4521 12 : parameter_vac[LYS].push_back(-34.08366887546492);
4522 12 : parameter_vac[LYS].push_back(-12812.921120433106);
4523 12 : parameter_vac[LYS].push_back(-5843.761329082788);
4524 12 : parameter_vac[LYS].push_back(42419.08427856609);
4525 12 : parameter_vac[LYS].push_back(-39460.49038159249);
4526 12 : parameter_vac[LYS].push_back(11542.320830663035);
4527 :
4528 12 : parameter_vac[CYS].push_back(2915.0458981763995);
4529 12 : parameter_vac[CYS].push_back(-5.380571839804511);
4530 12 : parameter_vac[CYS].push_back(-3865.366285883624);
4531 12 : parameter_vac[CYS].push_back(-602.3275271136284);
4532 12 : parameter_vac[CYS].push_back(4524.133086072617);
4533 12 : parameter_vac[CYS].push_back(-2537.87137720241);
4534 12 : parameter_vac[CYS].push_back(381.52870758240016);
4535 :
4536 12 : parameter_vac[CYX].push_back(2808.068549348085);
4537 12 : parameter_vac[CYX].push_back(-7.372260063948);
4538 12 : parameter_vac[CYX].push_back(-4017.492317531980);
4539 12 : parameter_vac[CYX].push_back(-840.151815748375);
4540 12 : parameter_vac[CYX].push_back(5800.074437790741);
4541 12 : parameter_vac[CYX].push_back(-3637.868824045027);
4542 12 : parameter_vac[CYX].push_back(659.528934122407);
4543 :
4544 12 : parameter_vac[ASP].push_back(3479.750728224898);
4545 12 : parameter_vac[ASP].push_back(-10.33897891836596);
4546 12 : parameter_vac[ASP].push_back(-5382.628188436401);
4547 12 : parameter_vac[ASP].push_back(-1183.8060939576694);
4548 12 : parameter_vac[ASP].push_back(8100.082378727997);
4549 12 : parameter_vac[ASP].push_back(-5162.630696148773);
4550 12 : parameter_vac[ASP].push_back(958.993022379732);
4551 :
4552 12 : parameter_vac[GLU].push_back(4487.461543955491);
4553 12 : parameter_vac[GLU].push_back(-26.671865751817936);
4554 12 : parameter_vac[GLU].push_back(-8829.738168429001);
4555 12 : parameter_vac[GLU].push_back(-3297.668395415257);
4556 12 : parameter_vac[GLU].push_back(20686.457747123466);
4557 12 : parameter_vac[GLU].push_back(-16030.814134196151);
4558 12 : parameter_vac[GLU].push_back(3858.4457728083275);
4559 :
4560 12 : parameter_vac[ILE].push_back(3842.5968201937776);
4561 12 : parameter_vac[ILE].push_back(-13.848165050578492);
4562 12 : parameter_vac[ILE].push_back(-6480.062699452774);
4563 12 : parameter_vac[ILE].push_back(-1636.3888925440413);
4564 12 : parameter_vac[ILE].push_back(10967.333210698738);
4565 12 : parameter_vac[ILE].push_back(-7483.704914714421);
4566 12 : parameter_vac[ILE].push_back(1548.5696047594895);
4567 :
4568 12 : parameter_vac[LEU].push_back(3842.5968201937785);
4569 12 : parameter_vac[LEU].push_back(-16.2745108270949);
4570 12 : parameter_vac[LEU].push_back(-6807.110269770606);
4571 12 : parameter_vac[LEU].push_back(-1926.6303434106014);
4572 12 : parameter_vac[LEU].push_back(12577.952756390941);
4573 12 : parameter_vac[LEU].push_back(-8829.40489330961);
4574 12 : parameter_vac[LEU].push_back(1882.919316016889);
4575 :
4576 12 : parameter_vac[MET].push_back(4898.512892967389);
4577 12 : parameter_vac[MET].push_back(-30.588244886468207);
4578 12 : parameter_vac[MET].push_back(-10159.093665859045);
4579 12 : parameter_vac[MET].push_back(-4025.0261508449653);
4580 12 : parameter_vac[MET].push_back(26007.394369425827);
4581 12 : parameter_vac[MET].push_back(-21199.218680206573);
4582 12 : parameter_vac[MET].push_back(5423.004225853842);
4583 :
4584 12 : parameter_vac[ASN].push_back(3598.1423998115492);
4585 12 : parameter_vac[ASN].push_back(-10.357995638888545);
4586 12 : parameter_vac[ASN].push_back(-5565.603011562138);
4587 12 : parameter_vac[ASN].push_back(-1190.3294930971967);
4588 12 : parameter_vac[ASN].push_back(8227.920711951123);
4589 12 : parameter_vac[ASN].push_back(-5222.61541118056);
4590 12 : parameter_vac[ASN].push_back(968.593406702772);
4591 :
4592 12 : parameter_vac[PRO].push_back(2702.925890807494);
4593 12 : parameter_vac[PRO].push_back(-4.11690159421177);
4594 12 : parameter_vac[PRO].push_back(-3395.325331307625);
4595 12 : parameter_vac[PRO].push_back(-458.95242128002894);
4596 12 : parameter_vac[PRO].push_back(3584.3640448715823);
4597 12 : parameter_vac[PRO].push_back(-1921.4140769384692);
4598 12 : parameter_vac[PRO].push_back(267.08577848319516);
4599 :
4600 12 : parameter_vac[GLN].push_back(4621.773132292556);
4601 12 : parameter_vac[GLN].push_back(-29.511778489038818);
4602 12 : parameter_vac[GLN].push_back(-9486.077450010192);
4603 12 : parameter_vac[GLN].push_back(-3768.5756897489828);
4604 12 : parameter_vac[GLN].push_back(23828.07111260487);
4605 12 : parameter_vac[GLN].push_back(-19110.205836780202);
4606 12 : parameter_vac[GLN].push_back(4791.718204894083);
4607 :
4608 12 : parameter_vac[SER].push_back(2115.1504654043965);
4609 12 : parameter_vac[SER].push_back(-2.4158378234251234);
4610 12 : parameter_vac[SER].push_back(-2488.1131972903822);
4611 12 : parameter_vac[SER].push_back(-263.64072945387693);
4612 12 : parameter_vac[SER].push_back(2251.376687850687);
4613 12 : parameter_vac[SER].push_back(-1066.0790768852626);
4614 12 : parameter_vac[SER].push_back(105.5155397911316);
4615 :
4616 12 : parameter_vac[THR].push_back(2914.9061707158835);
4617 12 : parameter_vac[THR].push_back(-5.032844592364407);
4618 12 : parameter_vac[THR].push_back(-3903.2546253886653);
4619 12 : parameter_vac[THR].push_back(-559.4734271244915);
4620 12 : parameter_vac[THR].push_back(4315.044828297787);
4621 12 : parameter_vac[THR].push_back(-2331.211908177365);
4622 12 : parameter_vac[THR].push_back(323.76849758109853);
4623 :
4624 12 : parameter_vac[VAL].push_back(2914.8744247581953);
4625 12 : parameter_vac[VAL].push_back(-5.847217106105881);
4626 12 : parameter_vac[VAL].push_back(-4096.370479502377);
4627 12 : parameter_vac[VAL].push_back(-655.2917606620404);
4628 12 : parameter_vac[VAL].push_back(4888.77261250007);
4629 12 : parameter_vac[VAL].push_back(-2765.7552774385167);
4630 12 : parameter_vac[VAL].push_back(421.9081598033515);
4631 :
4632 12 : parameter_vac[ALA].push_back(1443.3438146824446);
4633 12 : parameter_vac[ALA].push_back(-1.1234573178567506);
4634 12 : parameter_vac[ALA].push_back(-1492.4547663363514);
4635 12 : parameter_vac[ALA].push_back(-121.47935619968672);
4636 12 : parameter_vac[ALA].push_back(1139.689871538201);
4637 12 : parameter_vac[ALA].push_back(-483.8336547914466);
4638 12 : parameter_vac[ALA].push_back(32.48231950404626);
4639 :
4640 12 : parameter_vac[GLY].push_back(899.5356000422925);
4641 12 : parameter_vac[GLY].push_back(-0.5200880084066986);
4642 12 : parameter_vac[GLY].push_back(-787.5892053280859);
4643 12 : parameter_vac[GLY].push_back(-56.07596224884467);
4644 12 : parameter_vac[GLY].push_back(546.4212287680981);
4645 12 : parameter_vac[GLY].push_back(-222.2667666932616);
4646 12 : parameter_vac[GLY].push_back(12.474587265791476);
4647 :
4648 12 : parameter_vac[HIS].push_back(5180.842705000207);
4649 12 : parameter_vac[HIS].push_back(-29.578973475252766);
4650 12 : parameter_vac[HIS].push_back(-10323.417251934066);
4651 12 : parameter_vac[HIS].push_back(-3788.977215582307);
4652 12 : parameter_vac[HIS].push_back(24427.720792289427);
4653 12 : parameter_vac[HIS].push_back(-19307.35836837878);
4654 12 : parameter_vac[HIS].push_back(4780.831414992477);
4655 :
4656 : // NUCLEIC ACIDS
4657 12 : parameter_solv[BB_PO3].push_back(1464.5929001192262);
4658 12 : parameter_solv[BB_PO3].push_back(-2.316908934494931);
4659 12 : parameter_solv[BB_PO3].push_back(-1882.4844584696532);
4660 12 : parameter_solv[BB_PO3].push_back(-258.8660305554736);
4661 12 : parameter_solv[BB_PO3].push_back(2007.5216385943972);
4662 12 : parameter_solv[BB_PO3].push_back(-1087.6423562424877);
4663 12 : parameter_solv[BB_PO3].push_back(154.89236486681165);
4664 :
4665 12 : parameter_solv[BB_PO2].push_back(575.5201001192197);
4666 12 : parameter_solv[BB_PO2].push_back(-0.6126595489733868);
4667 12 : parameter_solv[BB_PO2].push_back(-623.3371092254897);
4668 12 : parameter_solv[BB_PO2].push_back(-68.05795957022156);
4669 12 : parameter_solv[BB_PO2].push_back(561.8052621243662);
4670 12 : parameter_solv[BB_PO2].push_back(-283.39573309540344);
4671 12 : parameter_solv[BB_PO2].push_back(35.55001698010027);
4672 :
4673 12 : parameter_solv[BB_DNA].push_back(21211.009600118316);
4674 12 : parameter_solv[BB_DNA].push_back(-90.18805990529991);
4675 12 : parameter_solv[BB_DNA].push_back(-39731.1337351215);
4676 12 : parameter_solv[BB_DNA].push_back(-10920.373563712878);
4677 12 : parameter_solv[BB_DNA].push_back(72882.21702424977);
4678 12 : parameter_solv[BB_DNA].push_back(-51747.487078112754);
4679 12 : parameter_solv[BB_DNA].push_back(11308.67842901876);
4680 :
4681 12 : parameter_solv[BB_DNA_5].push_back(22737.624100119025);
4682 12 : parameter_solv[BB_DNA_5].push_back(-102.72714886664163);
4683 12 : parameter_solv[BB_DNA_5].push_back(-43685.329677789705);
4684 12 : parameter_solv[BB_DNA_5].push_back(-12564.259374093454);
4685 12 : parameter_solv[BB_DNA_5].push_back(83454.87540484876);
4686 12 : parameter_solv[BB_DNA_5].push_back(-60367.15652138888);
4687 12 : parameter_solv[BB_DNA_5].push_back(13507.33372986899);
4688 :
4689 12 : parameter_solv[BB_DNA_3].push_back(22737.62410011902);
4690 12 : parameter_solv[BB_DNA_3].push_back(-101.57816684452263);
4691 12 : parameter_solv[BB_DNA_3].push_back(-43488.53670557616);
4692 12 : parameter_solv[BB_DNA_3].push_back(-12345.056184958417);
4693 12 : parameter_solv[BB_DNA_3].push_back(81963.5236411489);
4694 12 : parameter_solv[BB_DNA_3].push_back(-58791.59443618196);
4695 12 : parameter_solv[BB_DNA_3].push_back(13003.199362335576);
4696 :
4697 12 : parameter_solv[BB_RNA].push_back(23953.752900120977);
4698 12 : parameter_solv[BB_RNA].push_back(-117.35779348824401);
4699 12 : parameter_solv[BB_RNA].push_back(-47644.41735332837);
4700 12 : parameter_solv[BB_RNA].push_back(-14641.556643789863);
4701 12 : parameter_solv[BB_RNA].push_back(96893.48627050382);
4702 12 : parameter_solv[BB_RNA].push_back(-72249.62534169314);
4703 12 : parameter_solv[BB_RNA].push_back(16792.05552105538);
4704 :
4705 12 : parameter_solv[BB_RNA_5].push_back(25574.406400119024);
4706 12 : parameter_solv[BB_RNA_5].push_back(-131.99642772933734);
4707 12 : parameter_solv[BB_RNA_5].push_back(-52136.51404531249);
4708 12 : parameter_solv[BB_RNA_5].push_back(-16682.14273917604);
4709 12 : parameter_solv[BB_RNA_5].push_back(110278.019216394);
4710 12 : parameter_solv[BB_RNA_5].push_back(-83715.92027818545);
4711 12 : parameter_solv[BB_RNA_5].push_back(19875.891337706045);
4712 :
4713 12 : parameter_solv[BB_RNA_3].push_back(25574.406400119024);
4714 12 : parameter_solv[BB_RNA_3].push_back(-127.96875237036166);
4715 12 : parameter_solv[BB_RNA_3].push_back(-51407.183917584385);
4716 12 : parameter_solv[BB_RNA_3].push_back(-15922.900669975606);
4717 12 : parameter_solv[BB_RNA_3].push_back(105078.58889106264);
4718 12 : parameter_solv[BB_RNA_3].push_back(-78289.16276190648);
4719 12 : parameter_solv[BB_RNA_3].push_back(18156.83214344118);
4720 :
4721 12 : parameter_solv[BASE_A].push_back(13282.562500119211);
4722 12 : parameter_solv[BASE_A].push_back(-76.45124168404048);
4723 12 : parameter_solv[BASE_A].push_back(-28376.06994108963);
4724 12 : parameter_solv[BASE_A].push_back(-9972.910773722022);
4725 12 : parameter_solv[BASE_A].push_back(65873.86341939073);
4726 12 : parameter_solv[BASE_A].push_back(-52064.33492910885);
4727 12 : parameter_solv[BASE_A].push_back(12931.608989412513);
4728 :
4729 12 : parameter_solv[BASE_C].push_back(10600.76160011891);
4730 12 : parameter_solv[BASE_C].push_back(-49.1670871249108);
4731 12 : parameter_solv[BASE_C].push_back(-20239.818742072875);
4732 12 : parameter_solv[BASE_C].push_back(-6020.278780090207);
4733 12 : parameter_solv[BASE_C].push_back(39632.13288981881);
4734 12 : parameter_solv[BASE_C].push_back(-28954.779736165576);
4735 12 : parameter_solv[BASE_C].push_back(6551.541109526305);
4736 :
4737 12 : parameter_solv[BASE_G].push_back(15470.384400119934);
4738 12 : parameter_solv[BASE_G].push_back(-93.8013620200972);
4739 12 : parameter_solv[BASE_G].push_back(-36188.29687013545);
4740 12 : parameter_solv[BASE_G].push_back(-13717.685098209471);
4741 12 : parameter_solv[BASE_G].push_back(95658.18473657136);
4742 12 : parameter_solv[BASE_G].push_back(-81262.37811451119);
4743 12 : parameter_solv[BASE_G].push_back(21841.903930943085);
4744 :
4745 12 : parameter_solv[BASE_T].push_back(17210.81610011936);
4746 12 : parameter_solv[BASE_T].push_back(-93.10189802920208);
4747 12 : parameter_solv[BASE_T].push_back(-36466.51927689957);
4748 12 : parameter_solv[BASE_T].push_back(-12425.55615716932);
4749 12 : parameter_solv[BASE_T].push_back(83847.427808925);
4750 12 : parameter_solv[BASE_T].push_back(-66735.64997846584);
4751 12 : parameter_solv[BASE_T].push_back(16757.3463987507);
4752 :
4753 12 : parameter_solv[BASE_U].push_back(10909.802500119395);
4754 12 : parameter_solv[BASE_U].push_back(-46.17712672768298);
4755 12 : parameter_solv[BASE_U].push_back(-20149.67695512526);
4756 12 : parameter_solv[BASE_U].push_back(-5590.242961204435);
4757 12 : parameter_solv[BASE_U].push_back(37169.2740983132);
4758 12 : parameter_solv[BASE_U].push_back(-26475.631627167604);
4759 12 : parameter_solv[BASE_U].push_back(5808.201015156168);
4760 :
4761 12 : parameter_mix[BB_PO3].push_back(3061.4050527391964);
4762 12 : parameter_mix[BB_PO3].push_back(-2.022452986623699);
4763 12 : parameter_mix[BB_PO3].push_back(-2998.2603666141363);
4764 12 : parameter_mix[BB_PO3].push_back(-218.44256405859076);
4765 12 : parameter_mix[BB_PO3].push_back(2113.3633950628328);
4766 12 : parameter_mix[BB_PO3].push_back(-868.4021757095805);
4767 12 : parameter_mix[BB_PO3].push_back(52.19052064107954);
4768 :
4769 12 : parameter_mix[BB_PO2].push_back(1487.2888381188868);
4770 12 : parameter_mix[BB_PO2].push_back(-0.6155376265599789);
4771 12 : parameter_mix[BB_PO2].push_back(-1181.5076027691764);
4772 12 : parameter_mix[BB_PO2].push_back(-66.25027450710594);
4773 12 : parameter_mix[BB_PO2].push_back(697.0421991965113);
4774 12 : parameter_mix[BB_PO2].push_back(-261.8559466354847);
4775 12 : parameter_mix[BB_PO2].push_back(9.974337082362194);
4776 :
4777 12 : parameter_mix[BB_DNA].push_back(17766.29474499878);
4778 12 : parameter_mix[BB_DNA].push_back(-48.97330188566253);
4779 12 : parameter_mix[BB_DNA].push_back(-28199.563596327207);
4780 12 : parameter_mix[BB_DNA].push_back(-5623.82085602494);
4781 12 : parameter_mix[BB_DNA].push_back(39646.22954828498);
4782 12 : parameter_mix[BB_DNA].push_back(-24658.81157651943);
4783 12 : parameter_mix[BB_DNA].push_back(4453.73906293146);
4784 :
4785 12 : parameter_mix[BB_DNA_5].push_back(18696.09744203927);
4786 12 : parameter_mix[BB_DNA_5].push_back(-56.29408880833802);
4787 12 : parameter_mix[BB_DNA_5].push_back(-30486.108599707608);
4788 12 : parameter_mix[BB_DNA_5].push_back(-6524.195857141158);
4789 12 : parameter_mix[BB_DNA_5].push_back(45280.80142686446);
4790 12 : parameter_mix[BB_DNA_5].push_back(-29007.98616567993);
4791 12 : parameter_mix[BB_DNA_5].push_back(5488.566965501818);
4792 :
4793 12 : parameter_mix[BB_DNA_3].push_back(18696.097442039274);
4794 12 : parameter_mix[BB_DNA_3].push_back(-55.5645003501971);
4795 12 : parameter_mix[BB_DNA_3].push_back(-30422.262113654506);
4796 12 : parameter_mix[BB_DNA_3].push_back(-6409.659659309089);
4797 12 : parameter_mix[BB_DNA_3].push_back(44605.76043515699);
4798 12 : parameter_mix[BB_DNA_3].push_back(-28295.62152988411);
4799 12 : parameter_mix[BB_DNA_3].push_back(5262.5765863484);
4800 :
4801 12 : parameter_mix[BB_RNA].push_back(21356.177105457366);
4802 12 : parameter_mix[BB_RNA].push_back(-76.73490647754872);
4803 12 : parameter_mix[BB_RNA].push_back(-36845.234814782816);
4804 12 : parameter_mix[BB_RNA].push_back(-9066.559625582728);
4805 12 : parameter_mix[BB_RNA].push_back(61167.998793390485);
4806 12 : parameter_mix[BB_RNA].push_back(-41467.23384423218);
4807 12 : parameter_mix[BB_RNA].push_back(8518.937793863257);
4808 :
4809 12 : parameter_mix[BB_RNA_5].push_back(22386.63276427916);
4810 12 : parameter_mix[BB_RNA_5].push_back(-85.70426456933487);
4811 12 : parameter_mix[BB_RNA_5].push_back(-39490.50298502025);
4812 12 : parameter_mix[BB_RNA_5].push_back(-10223.702594972712);
4813 12 : parameter_mix[BB_RNA_5].push_back(68450.60459618448);
4814 12 : parameter_mix[BB_RNA_5].push_back(-47409.91098159006);
4815 12 : parameter_mix[BB_RNA_5].push_back(10031.136138513202);
4816 :
4817 12 : parameter_mix[BB_RNA_3].push_back(22386.63276427916);
4818 12 : parameter_mix[BB_RNA_3].push_back(-81.93760812351479);
4819 12 : parameter_mix[BB_RNA_3].push_back(-39031.70571520093);
4820 12 : parameter_mix[BB_RNA_3].push_back(-9666.316086142708);
4821 12 : parameter_mix[BB_RNA_3].push_back(65120.07128126262);
4822 12 : parameter_mix[BB_RNA_3].push_back(-44110.13603681317);
4823 12 : parameter_mix[BB_RNA_3].push_back(9036.76498256983);
4824 :
4825 12 : parameter_mix[BASE_A].push_back(15897.31116611889);
4826 12 : parameter_mix[BASE_A].push_back(-67.86385832953485);
4827 12 : parameter_mix[BASE_A].push_back(-28851.754660951636);
4828 12 : parameter_mix[BASE_A].push_back(-8144.431687170413);
4829 12 : parameter_mix[BASE_A].push_back(53606.39082954489);
4830 12 : parameter_mix[BASE_A].push_back(-38083.51243782253);
4831 12 : parameter_mix[BASE_A].push_back(8293.47107993253);
4832 :
4833 12 : parameter_mix[BASE_C].push_back(11733.2828871599);
4834 12 : parameter_mix[BASE_C].push_back(-38.76775400274115);
4835 12 : parameter_mix[BASE_C].push_back(-19318.84666423464);
4836 12 : parameter_mix[BASE_C].push_back(-4507.915522704176);
4837 12 : parameter_mix[BASE_C].push_back(30576.57671286052);
4838 12 : parameter_mix[BASE_C].push_back(-20132.46696910844);
4839 12 : parameter_mix[BASE_C].push_back(3947.8727087996162);
4840 :
4841 12 : parameter_mix[BASE_G].push_back(19146.612417237808);
4842 12 : parameter_mix[BASE_G].push_back(-102.37046638004914);
4843 12 : parameter_mix[BASE_G].push_back(-38718.96478190546);
4844 12 : parameter_mix[BASE_G].push_back(-13238.106081860074);
4845 12 : parameter_mix[BASE_G].push_back(87309.07460288722);
4846 12 : parameter_mix[BASE_G].push_back(-68364.82442984737);
4847 12 : parameter_mix[BASE_G].push_back(16815.362401369);
4848 :
4849 12 : parameter_mix[BASE_T].push_back(17050.440260819163);
4850 12 : parameter_mix[BASE_T].push_back(-76.33750600643376);
4851 12 : parameter_mix[BASE_T].push_back(-31849.539096715005);
4852 12 : parameter_mix[BASE_T].push_back(-9484.498992751434);
4853 12 : parameter_mix[BASE_T].push_back(62881.895771680494);
4854 12 : parameter_mix[BASE_T].push_back(-46531.948557759024);
4855 12 : parameter_mix[BASE_T].push_back(10734.196329884822);
4856 :
4857 12 : parameter_mix[BASE_U].push_back(11904.095265219023);
4858 12 : parameter_mix[BASE_U].push_back(-34.67511054915295);
4859 12 : parameter_mix[BASE_U].push_back(-18842.275003104005);
4860 12 : parameter_mix[BASE_U].push_back(-3993.1174764890684);
4861 12 : parameter_mix[BASE_U].push_back(27663.625106762345);
4862 12 : parameter_mix[BASE_U].push_back(-17577.387831701515);
4863 12 : parameter_mix[BASE_U].push_back(3273.183903219142);
4864 :
4865 12 : parameter_vac[BB_PO3].push_back(1599.7962466063982);
4866 12 : parameter_vac[BB_PO3].push_back(-0.2734304923675441);
4867 12 : parameter_vac[BB_PO3].push_back(-1023.9448073303214);
4868 12 : parameter_vac[BB_PO3].push_back(-28.78655166266909);
4869 12 : parameter_vac[BB_PO3].push_back(426.4382937268249);
4870 12 : parameter_vac[BB_PO3].push_back(-109.57771615730755);
4871 12 : parameter_vac[BB_PO3].push_back(-10.244595559424265);
4872 :
4873 12 : parameter_vac[BB_PO2].push_back(960.8822037291127);
4874 12 : parameter_vac[BB_PO2].push_back(-0.09312135742159174);
4875 12 : parameter_vac[BB_PO2].push_back(-469.39643497461844);
4876 12 : parameter_vac[BB_PO2].push_back(-9.779346709041985);
4877 12 : parameter_vac[BB_PO2].push_back(162.1581550003227);
4878 12 : parameter_vac[BB_PO2].push_back(-37.06686233305618);
4879 12 : parameter_vac[BB_PO2].push_back(-4.695586672655664);
4880 :
4881 12 : parameter_vac[BB_DNA].push_back(3720.2522996838984);
4882 12 : parameter_vac[BB_DNA].push_back(-5.4229642176938);
4883 12 : parameter_vac[BB_DNA].push_back(-4800.897672711981);
4884 12 : parameter_vac[BB_DNA].push_back(-597.2274673070993);
4885 12 : parameter_vac[BB_DNA].push_back(4825.908840953665);
4886 12 : parameter_vac[BB_DNA].push_back(-2451.397454446564);
4887 12 : parameter_vac[BB_DNA].push_back(294.93071756645685);
4888 :
4889 12 : parameter_vac[BB_DNA_5].push_back(3843.234214262163);
4890 12 : parameter_vac[BB_DNA_5].push_back(-6.423078416284452);
4891 12 : parameter_vac[BB_DNA_5].push_back(-5112.1216386963115);
4892 12 : parameter_vac[BB_DNA_5].push_back(-713.8373583426668);
4893 12 : parameter_vac[BB_DNA_5].push_back(5547.545382516269);
4894 12 : parameter_vac[BB_DNA_5].push_back(-2973.5659871174225);
4895 12 : parameter_vac[BB_DNA_5].push_back(407.2789106630427);
4896 :
4897 12 : parameter_vac[BB_DNA_3].push_back(3843.234214262163);
4898 12 : parameter_vac[BB_DNA_3].push_back(-6.268636561475645);
4899 12 : parameter_vac[BB_DNA_3].push_back(-5103.192931218086);
4900 12 : parameter_vac[BB_DNA_3].push_back(-693.8705734390547);
4901 12 : parameter_vac[BB_DNA_3].push_back(5443.979645097035);
4902 12 : parameter_vac[BB_DNA_3].push_back(-2871.4337477324893);
4903 12 : parameter_vac[BB_DNA_3].push_back(377.3062915349831);
4904 :
4905 12 : parameter_vac[BB_RNA].push_back(4760.071443398374);
4906 12 : parameter_vac[BB_RNA].push_back(-11.0990475402486);
4907 12 : parameter_vac[BB_RNA].push_back(-6934.713566418421);
4908 12 : parameter_vac[BB_RNA].push_back(-1256.5202524085096);
4909 12 : parameter_vac[BB_RNA].push_back(9024.962587066922);
4910 12 : parameter_vac[BB_RNA].push_back(-5386.842667932241);
4911 12 : parameter_vac[BB_RNA].push_back(907.42947751372);
4912 :
4913 12 : parameter_vac[BB_RNA_5].push_back(4899.051406033406);
4914 12 : parameter_vac[BB_RNA_5].push_back(-12.279240472628238);
4915 12 : parameter_vac[BB_RNA_5].push_back(-7276.273570813667);
4916 12 : parameter_vac[BB_RNA_5].push_back(-1400.9520839250868);
4917 12 : parameter_vac[BB_RNA_5].push_back(9912.215823228895);
4918 12 : parameter_vac[BB_RNA_5].push_back(-6079.2565270404075);
4919 12 : parameter_vac[BB_RNA_5].push_back(1073.53428175472);
4920 :
4921 12 : parameter_vac[BB_RNA_3].push_back(4899.051406033406);
4922 12 : parameter_vac[BB_RNA_3].push_back(-11.642804195148194);
4923 12 : parameter_vac[BB_RNA_3].push_back(-7213.774619570996);
4924 12 : parameter_vac[BB_RNA_3].push_back(-1317.4463949342964);
4925 12 : parameter_vac[BB_RNA_3].push_back(9450.928929264686);
4926 12 : parameter_vac[BB_RNA_3].push_back(-5643.856117200917);
4927 12 : parameter_vac[BB_RNA_3].push_back(949.4698817407918);
4928 :
4929 12 : parameter_vac[BASE_A].push_back(4756.697028810353);
4930 12 : parameter_vac[BASE_A].push_back(-12.158940746852812);
4931 12 : parameter_vac[BASE_A].push_back(-7106.473423744205);
4932 12 : parameter_vac[BASE_A].push_back(-1376.295184173137);
4933 12 : parameter_vac[BASE_A].push_back(9747.132255557788);
4934 12 : parameter_vac[BASE_A].push_back(-5900.026637038756);
4935 12 : parameter_vac[BASE_A].push_back(1004.6226388342955);
4936 :
4937 12 : parameter_vac[BASE_C].push_back(3246.698975674651);
4938 12 : parameter_vac[BASE_C].push_back(-6.125036521218687);
4939 12 : parameter_vac[BASE_C].push_back(-4280.666521437201);
4940 12 : parameter_vac[BASE_C].push_back(-684.0183580843932);
4941 12 : parameter_vac[BASE_C].push_back(5077.062889522692);
4942 12 : parameter_vac[BASE_C].push_back(-2870.3239317750963);
4943 12 : parameter_vac[BASE_C].push_back(434.51551177863547);
4944 :
4945 12 : parameter_vac[BASE_G].push_back(5924.105658596052);
4946 12 : parameter_vac[BASE_G].push_back(-23.097956587232552);
4947 12 : parameter_vac[BASE_G].push_back(-10149.526301285418);
4948 12 : parameter_vac[BASE_G].push_back(-2752.9166169522528);
4949 12 : parameter_vac[BASE_G].push_back(18239.32985385683);
4950 12 : parameter_vac[BASE_G].push_back(-12749.277858800957);
4951 12 : parameter_vac[BASE_G].push_back(2715.354663787367);
4952 :
4953 12 : parameter_vac[BASE_T].push_back(4222.889713694404);
4954 12 : parameter_vac[BASE_T].push_back(-12.15861456306705);
4955 12 : parameter_vac[BASE_T].push_back(-6395.50289789404);
4956 12 : parameter_vac[BASE_T].push_back(-1421.3942549301012);
4957 12 : parameter_vac[BASE_T].push_back(9757.061008720135);
4958 12 : parameter_vac[BASE_T].push_back(-6399.630933839126);
4959 12 : parameter_vac[BASE_T].push_back(1258.9874225605438);
4960 :
4961 12 : parameter_vac[BASE_U].push_back(3247.251361465539);
4962 12 : parameter_vac[BASE_U].push_back(-5.211020853261115);
4963 12 : parameter_vac[BASE_U].push_back(-4125.165310360279);
4964 12 : parameter_vac[BASE_U].push_back(-575.1860235473902);
4965 12 : parameter_vac[BASE_U].push_back(4457.6562621371495);
4966 12 : parameter_vac[BASE_U].push_back(-2368.7250146912766);
4967 12 : parameter_vac[BASE_U].push_back(313.23997718445014);
4968 :
4969 38704 : for(unsigned i=0; i<atoms.size(); ++i) {
4970 38692 : std::string Aname = pdb.getAtomName(atoms[i]);
4971 38692 : std::string Rname = pdb.getResidueName(atoms[i]);
4972 38692 : Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
4973 38692 : Rname = onebeadResidueAlias(Rname);
4974 38692 : if(Rname=="ALA") {
4975 1973 : atoi[residue_atoms[i]]=ALA;
4976 36719 : } else if(Rname=="ARG") {
4977 2376 : atoi[residue_atoms[i]]=ARG;
4978 34343 : } else if(Rname=="ASN") {
4979 1980 : atoi[residue_atoms[i]]=ASN;
4980 32363 : } else if(Rname=="ASP") {
4981 1716 : atoi[residue_atoms[i]]=ASP;
4982 30647 : } else if(Rname=="CYS") {
4983 132 : atoi[residue_atoms[i]]=CYS;
4984 30515 : } else if(Rname=="CYX") {
4985 0 : atoi[residue_atoms[i]]=CYX;
4986 30515 : } else if(Rname=="GLN") {
4987 2850 : atoi[residue_atoms[i]]=GLN;
4988 27665 : } else if(Rname=="GLU") {
4989 1309 : atoi[residue_atoms[i]]=GLU;
4990 26356 : } else if(Rname=="GLY") {
4991 1710 : atoi[residue_atoms[i]]=GLY;
4992 24646 : } else if(Rname=="HIS") {
4993 0 : atoi[residue_atoms[i]]=HIS;
4994 24646 : } else if(Rname=="HID") {
4995 0 : atoi[residue_atoms[i]]=HIS;
4996 24646 : } else if(Rname=="HIE") {
4997 396 : atoi[residue_atoms[i]]=HIS;
4998 24250 : } else if(Rname=="HIP") {
4999 0 : atoi[residue_atoms[i]]=HIP;
5000 : // CHARMM NAMING FOR PROTONATION STATES OF HISTIDINE
5001 24250 : } else if(Rname=="HSD") {
5002 0 : atoi[residue_atoms[i]]=HIS;
5003 24250 : } else if(Rname=="HSE") {
5004 0 : atoi[residue_atoms[i]]=HIS;
5005 24250 : } else if(Rname=="HSP") {
5006 0 : atoi[residue_atoms[i]]=HIP;
5007 24250 : } else if(Rname=="ILE") {
5008 2376 : atoi[residue_atoms[i]]=ILE;
5009 21874 : } else if(Rname=="LEU") {
5010 4180 : atoi[residue_atoms[i]]=LEU;
5011 17694 : } else if(Rname=="LYS") {
5012 2860 : atoi[residue_atoms[i]]=LYS;
5013 14834 : } else if(Rname=="MET") {
5014 1520 : atoi[residue_atoms[i]]=MET;
5015 13314 : } else if(Rname=="PHE") {
5016 2772 : atoi[residue_atoms[i]]=PHE;
5017 10542 : } else if(Rname=="PRO") {
5018 2057 : atoi[residue_atoms[i]]=PRO;
5019 8485 : } else if(Rname=="SER") {
5020 1404 : atoi[residue_atoms[i]]=SER;
5021 7081 : } else if(Rname=="THR") {
5022 1330 : atoi[residue_atoms[i]]=THR;
5023 5751 : } else if(Rname=="TRP") {
5024 0 : atoi[residue_atoms[i]]=TRP;
5025 5751 : } else if(Rname=="TYR") {
5026 1452 : atoi[residue_atoms[i]]=TYR;
5027 4299 : } else if(Rname=="VAL") {
5028 2928 : atoi[residue_atoms[i]]=VAL;
5029 : }
5030 : // NUCLEIC ACIDS
5031 : // nucleobases are not automatically populated as an additional check on the health of the PDB.
5032 : // RNA - G
5033 1371 : else if(Rname=="G") {
5034 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
5035 0 : Aname=="O1P" || Aname=="O2P" ) {
5036 0 : atoi [residue_atoms[i]]=BB_PO2;
5037 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5038 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5039 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5040 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
5041 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
5042 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
5043 0 : atoi[residue_atoms[i]]=BB_RNA;
5044 0 : } else if( Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
5045 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
5046 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
5047 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
5048 0 : atoi[residue_atoms[i]]=BASE_G;
5049 : } else {
5050 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5051 : }
5052 : // RNA - G3
5053 1371 : } else if(Rname=="G3") {
5054 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5055 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
5056 0 : atoi [residue_atoms[i]]=BB_PO2;
5057 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5058 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5059 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5060 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
5061 0 : Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
5062 0 : Aname=="H5'2" || Aname=="HO'2" ) {
5063 0 : atoi[residue_atoms[i]]=BB_RNA_3;
5064 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
5065 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
5066 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
5067 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
5068 0 : atoi[residue_atoms[i]]=BASE_G;
5069 : } else {
5070 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5071 : }
5072 : // RNA - G5
5073 1371 : } else if(Rname=="G5") {
5074 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5075 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5076 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5077 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="HO5'" ||
5078 0 : Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
5079 0 : Aname=="H2'1" || Aname=="H5T" ) {
5080 0 : atoi[residue_atoms[i]]=BB_RNA_5;
5081 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
5082 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
5083 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
5084 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
5085 0 : atoi[residue_atoms[i]]=BASE_G;
5086 : } else {
5087 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5088 : }
5089 : // RNA - GT
5090 1371 : } else if(Rname=="GT") {
5091 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5092 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
5093 0 : atoi [residue_atoms[i]]=BB_PO3;
5094 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5095 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5096 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5097 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
5098 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
5099 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
5100 0 : atoi[residue_atoms[i]]=BB_RNA;
5101 0 : } else if( Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
5102 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
5103 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
5104 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
5105 0 : atoi[residue_atoms[i]]=BASE_G;
5106 : } else {
5107 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5108 : }
5109 : // RNA - U
5110 1371 : } else if(Rname=="U") {
5111 1102 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
5112 2166 : Aname=="O1P" || Aname=="O2P" ) {
5113 114 : atoi [residue_atoms[i]]=BB_PO2;
5114 988 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5115 874 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5116 722 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5117 570 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
5118 456 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
5119 1444 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
5120 608 : atoi[residue_atoms[i]]=BB_RNA;
5121 380 : } else if( Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5122 266 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
5123 532 : Aname=="H3" || Aname=="H5" || Aname=="H6") {
5124 418 : atoi[residue_atoms[i]]=BASE_U;
5125 : } else {
5126 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5127 : }
5128 : // RNA - U3
5129 231 : } else if(Rname=="U3") {
5130 60 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5131 118 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
5132 6 : atoi [residue_atoms[i]]=BB_PO2;
5133 54 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5134 48 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5135 40 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5136 32 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
5137 26 : Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
5138 78 : Aname=="H5'2" || Aname=="HO'2" ) {
5139 34 : atoi[residue_atoms[i]]=BB_RNA_3;
5140 20 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5141 14 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
5142 28 : Aname=="H3" || Aname=="H5" || Aname=="H6") {
5143 22 : atoi[residue_atoms[i]]=BASE_U;
5144 : } else {
5145 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5146 : }
5147 : // RNA - U5
5148 169 : } else if(Rname=="U5") {
5149 162 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5150 144 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5151 120 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5152 96 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="HO5'" ||
5153 72 : Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
5154 234 : Aname=="H2'1" || Aname=="H5T" ) {
5155 102 : atoi[residue_atoms[i]]=BB_RNA_5;
5156 60 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5157 42 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
5158 84 : Aname=="H3" || Aname=="H5" || Aname=="H6") {
5159 66 : atoi[residue_atoms[i]]=BASE_U;
5160 : } else {
5161 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5162 : }
5163 : // RNA - UT
5164 1 : } else if(Rname=="UT") {
5165 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5166 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
5167 0 : atoi [residue_atoms[i]]=BB_PO3;
5168 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5169 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5170 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5171 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
5172 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
5173 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
5174 0 : atoi[residue_atoms[i]]=BB_RNA;
5175 0 : } else if( Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5176 0 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
5177 0 : Aname=="H3" || Aname=="H5" || Aname=="H6") {
5178 0 : atoi[residue_atoms[i]]=BASE_U;
5179 : } else {
5180 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5181 : }
5182 : // RNA - A
5183 1 : } else if(Rname=="A") {
5184 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
5185 0 : Aname=="O1P" || Aname=="O2P" ) {
5186 0 : atoi [residue_atoms[i]]=BB_PO2;
5187 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5188 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5189 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5190 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
5191 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
5192 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
5193 0 : atoi[residue_atoms[i]]=BB_RNA;
5194 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
5195 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
5196 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
5197 0 : Aname=="H61" || Aname=="H62" ) {
5198 0 : atoi[residue_atoms[i]]=BASE_A;
5199 : } else {
5200 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5201 : }
5202 : // RNA - A3
5203 1 : } else if(Rname=="A3") {
5204 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5205 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
5206 0 : atoi [residue_atoms[i]]=BB_PO2;
5207 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5208 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5209 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5210 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
5211 0 : Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
5212 0 : Aname=="H5'2" || Aname=="HO'2" ) {
5213 0 : atoi[residue_atoms[i]]=BB_RNA_3;
5214 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
5215 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
5216 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
5217 0 : Aname=="H61" || Aname=="H62" ) {
5218 0 : atoi[residue_atoms[i]]=BASE_A;
5219 : } else {
5220 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5221 : }
5222 : // RNA - A5
5223 1 : } else if(Rname=="A5") {
5224 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5225 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5226 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5227 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="HO5'" ||
5228 0 : Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
5229 0 : Aname=="H2'1" || Aname=="H5T" ) {
5230 0 : atoi[residue_atoms[i]]=BB_RNA_5;
5231 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
5232 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
5233 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
5234 0 : Aname=="H61" || Aname=="H62" ) {
5235 0 : atoi[residue_atoms[i]]=BASE_A;
5236 : } else {
5237 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5238 : }
5239 : // RNA - AT
5240 1 : } else if(Rname=="AT") {
5241 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5242 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
5243 0 : atoi [residue_atoms[i]]=BB_PO3;
5244 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5245 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5246 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5247 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
5248 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
5249 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
5250 0 : atoi[residue_atoms[i]]=BB_RNA;
5251 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
5252 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
5253 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
5254 0 : Aname=="H61" || Aname=="H62" ) {
5255 0 : atoi[residue_atoms[i]]=BASE_A;
5256 : } else {
5257 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5258 : }
5259 : // RNA - C
5260 1 : } else if(Rname=="C") {
5261 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
5262 0 : Aname=="O1P" || Aname=="O2P" ) {
5263 0 : atoi [residue_atoms[i]]=BB_PO2;
5264 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5265 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5266 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5267 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
5268 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
5269 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
5270 0 : atoi[residue_atoms[i]]=BB_RNA;
5271 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5272 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
5273 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
5274 0 : atoi[residue_atoms[i]]=BASE_C;
5275 : } else {
5276 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5277 : }
5278 : // RNA - C3
5279 1 : } else if(Rname=="C3") {
5280 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5281 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
5282 0 : atoi [residue_atoms[i]]=BB_PO2;
5283 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5284 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5285 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5286 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
5287 0 : Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
5288 0 : Aname=="H5'2" || Aname=="HO'2" ) {
5289 0 : atoi[residue_atoms[i]]=BB_RNA_3;
5290 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5291 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
5292 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
5293 0 : atoi[residue_atoms[i]]=BASE_C;
5294 : } else {
5295 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5296 : }
5297 : // RNA - C5
5298 1 : } else if(Rname=="C5") {
5299 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5300 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5301 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5302 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="HO5'" ||
5303 0 : Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
5304 0 : Aname=="H2'1" || Aname=="H5T" ) {
5305 0 : atoi[residue_atoms[i]]=BB_RNA_5;
5306 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5307 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
5308 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
5309 0 : atoi[residue_atoms[i]]=BASE_C;
5310 : } else {
5311 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5312 : }
5313 : // RNA - CT
5314 1 : } else if(Rname=="CT") {
5315 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5316 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
5317 0 : atoi [residue_atoms[i]]=BB_PO3;
5318 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5319 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
5320 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
5321 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
5322 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
5323 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
5324 0 : atoi[residue_atoms[i]]=BB_RNA;
5325 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5326 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
5327 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
5328 0 : atoi[residue_atoms[i]]=BASE_C;
5329 : } else {
5330 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5331 : }
5332 : // DNA - G
5333 1 : } else if(Rname=="DG") {
5334 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
5335 0 : Aname=="O1P" || Aname=="O2P" ) {
5336 0 : atoi [residue_atoms[i]]=BB_PO2;
5337 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5338 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5339 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5340 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
5341 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
5342 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
5343 0 : atoi[residue_atoms[i]]=BB_DNA;
5344 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
5345 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
5346 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
5347 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
5348 0 : atoi[residue_atoms[i]]=BASE_G;
5349 : } else {
5350 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5351 : }
5352 : // DNA - G3
5353 1 : } else if(Rname=="DG3") {
5354 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5355 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
5356 0 : atoi [residue_atoms[i]]=BB_PO2;
5357 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5358 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5359 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5360 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO3'" ||
5361 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
5362 0 : Aname=="H3T" ) {
5363 0 : atoi[residue_atoms[i]]=BB_DNA_3;
5364 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
5365 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
5366 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
5367 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
5368 0 : atoi[residue_atoms[i]]=BASE_G;
5369 : } else {
5370 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5371 : }
5372 : // DNA - G5
5373 1 : } else if(Rname=="DG5") {
5374 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5375 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5376 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5377 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
5378 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
5379 0 : Aname=="H5T" ) {
5380 0 : atoi[residue_atoms[i]]=BB_DNA_5;
5381 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
5382 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
5383 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
5384 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
5385 0 : atoi[residue_atoms[i]]=BASE_G;
5386 : } else {
5387 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5388 : }
5389 : // DNA - GT
5390 1 : } else if(Rname=="DGT") {
5391 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5392 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
5393 0 : atoi [residue_atoms[i]]=BB_PO3;
5394 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5395 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5396 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5397 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
5398 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
5399 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
5400 0 : atoi[residue_atoms[i]]=BB_DNA;
5401 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
5402 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
5403 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
5404 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
5405 0 : atoi[residue_atoms[i]]=BASE_G;
5406 : } else {
5407 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5408 : }
5409 : // DNA - T
5410 1 : } else if(Rname=="DT") {
5411 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
5412 0 : Aname=="O1P" || Aname=="O2P" ) {
5413 0 : atoi [residue_atoms[i]]=BB_PO2;
5414 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5415 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5416 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5417 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
5418 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
5419 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
5420 0 : atoi[residue_atoms[i]]=BB_DNA;
5421 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5422 0 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
5423 0 : Aname=="C7" || Aname=="H3" || Aname=="H6" || Aname=="H71" ||
5424 0 : Aname=="H72" || Aname=="H73" ) {
5425 0 : atoi[residue_atoms[i]]=BASE_T;
5426 : } else {
5427 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5428 : }
5429 : // DNA - T3
5430 1 : } else if(Rname=="DT3") {
5431 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5432 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
5433 0 : atoi [residue_atoms[i]]=BB_PO2;
5434 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5435 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5436 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5437 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO3'" ||
5438 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
5439 0 : Aname=="H3T" ) {
5440 0 : atoi[residue_atoms[i]]=BB_DNA_3;
5441 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5442 0 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
5443 0 : Aname=="C7" || Aname=="H3" || Aname=="H6" || Aname=="H71" ||
5444 0 : Aname=="H72" || Aname=="H73" ) {
5445 0 : atoi[residue_atoms[i]]=BASE_T;
5446 : } else {
5447 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5448 : }
5449 : // DNA - T5
5450 1 : } else if(Rname=="DT5") {
5451 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5452 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5453 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5454 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
5455 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
5456 0 : Aname=="H5T" ) {
5457 0 : atoi[residue_atoms[i]]=BB_DNA_5;
5458 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5459 0 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
5460 0 : Aname=="C7" || Aname=="H3" || Aname=="H6" || Aname=="H71" ||
5461 0 : Aname=="H72" || Aname=="H73" ) {
5462 0 : atoi[residue_atoms[i]]=BASE_T;
5463 : } else {
5464 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5465 : }
5466 : // DNA - TT
5467 1 : } else if(Rname=="DTT") {
5468 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5469 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
5470 0 : atoi [residue_atoms[i]]=BB_PO3;
5471 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5472 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5473 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5474 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
5475 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
5476 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
5477 0 : atoi[residue_atoms[i]]=BB_DNA;
5478 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5479 0 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
5480 0 : Aname=="C7" || Aname=="H3" || Aname=="H6" || Aname=="H71" ||
5481 0 : Aname=="H72" || Aname=="H73" ) {
5482 0 : atoi[residue_atoms[i]]=BASE_T;
5483 : } else {
5484 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5485 : }
5486 : // DNA - A
5487 1 : } else if(Rname=="DA") {
5488 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
5489 0 : Aname=="O1P" || Aname=="O2P" ) {
5490 0 : atoi [residue_atoms[i]]=BB_PO2;
5491 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5492 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5493 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5494 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
5495 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
5496 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
5497 0 : atoi[residue_atoms[i]]=BB_DNA;
5498 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
5499 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
5500 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
5501 0 : Aname=="H61" || Aname=="H62" ) {
5502 0 : atoi[residue_atoms[i]]=BASE_A;
5503 : } else {
5504 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5505 : }
5506 : // DNA - A3
5507 1 : } else if(Rname=="DA3") {
5508 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5509 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
5510 0 : atoi [residue_atoms[i]]=BB_PO2;
5511 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5512 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5513 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5514 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO3'" ||
5515 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
5516 0 : Aname=="H3T" ) {
5517 0 : atoi[residue_atoms[i]]=BB_DNA_3;
5518 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
5519 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
5520 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
5521 0 : Aname=="H61" || Aname=="H62" ) {
5522 0 : atoi[residue_atoms[i]]=BASE_A;
5523 : } else {
5524 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5525 : }
5526 : // DNA - A5
5527 1 : } else if(Rname=="DA5") {
5528 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5529 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5530 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5531 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
5532 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
5533 0 : Aname=="H5T" ) {
5534 0 : atoi[residue_atoms[i]]=BB_DNA_5;
5535 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
5536 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
5537 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
5538 0 : Aname=="H61" || Aname=="H62" ) {
5539 0 : atoi[residue_atoms[i]]=BASE_A;
5540 : } else {
5541 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5542 : }
5543 : // DNA - AT
5544 1 : } else if(Rname=="DAT") {
5545 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5546 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
5547 0 : atoi [residue_atoms[i]]=BB_PO3;
5548 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5549 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5550 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5551 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
5552 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
5553 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
5554 0 : atoi[residue_atoms[i]]=BB_DNA;
5555 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
5556 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
5557 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
5558 0 : Aname=="H61" || Aname=="H62" ) {
5559 0 : atoi[residue_atoms[i]]=BASE_A;
5560 : } else {
5561 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5562 : }
5563 : // DNA - C
5564 1 : } else if(Rname=="DC") {
5565 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
5566 0 : Aname=="O1P" || Aname=="O2P" ) {
5567 0 : atoi [residue_atoms[i]]=BB_PO2;
5568 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5569 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5570 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5571 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
5572 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
5573 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
5574 0 : atoi[residue_atoms[i]]=BB_DNA;
5575 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5576 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
5577 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
5578 0 : atoi[residue_atoms[i]]=BASE_C;
5579 : } else {
5580 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5581 : }
5582 : // DNA - C3
5583 1 : } else if(Rname=="DC3") {
5584 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5585 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
5586 0 : atoi [residue_atoms[i]]=BB_PO2;
5587 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5588 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5589 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5590 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO3'" ||
5591 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
5592 0 : Aname=="H3T" ) {
5593 0 : atoi[residue_atoms[i]]=BB_DNA_3;
5594 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5595 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
5596 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
5597 0 : atoi[residue_atoms[i]]=BASE_C;
5598 : } else {
5599 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5600 : }
5601 : // DNA - C5
5602 1 : } else if(Rname=="DC5") {
5603 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5604 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5605 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5606 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
5607 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
5608 0 : Aname=="H5T" ) {
5609 0 : atoi[residue_atoms[i]]=BB_DNA_5;
5610 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5611 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
5612 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
5613 0 : atoi[residue_atoms[i]]=BASE_C;
5614 : } else {
5615 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5616 : }
5617 : // DNA - CT
5618 1 : } else if(Rname=="DCT") {
5619 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
5620 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
5621 0 : atoi [residue_atoms[i]]=BB_PO3;
5622 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
5623 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
5624 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
5625 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
5626 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
5627 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
5628 0 : atoi[residue_atoms[i]]=BB_DNA;
5629 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
5630 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
5631 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
5632 0 : atoi[residue_atoms[i]]=BASE_C;
5633 : } else {
5634 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
5635 : }
5636 1 : } else if(glyc_type[i] >= 0) {
5637 : // monosaccharide: the bead type was resolved once, from the residue name and
5638 : // from the presence of an N-acetyl group, in getOnebeadMapping()
5639 0 : atoi[residue_atoms[i]] = static_cast<unsigned>(glyc_type[i]);
5640 1 : } else if(isUnsupportedGlycan(Rname)) {
5641 0 : error("Residue "+Rname+" is a monosaccharide for which no ONEBEAD parameters are available.");
5642 1 : } else if(ionTypeFromResname(Rname) >= 0) {
5643 : // monoatomic ion: assign its onebead bead type. The vac/solv/mix terms for this
5644 : // slot are filled analytically in getOnebeadIonparam_saxs (called from the constructor).
5645 1 : atoi[residue_atoms[i]] = obSlot(ionTypeFromResname(Rname));
5646 : } else {
5647 0 : error("Residue not known: "+Rname);
5648 : }
5649 : }
5650 12 : }
5651 :
5652 11 : void SAXS::getOnebeadparam_sansH(const PDB &pdb, const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > ¶meter_vac_H, std::vector<std::vector<long double> > ¶meter_mix_H, std::vector<std::vector<long double> > ¶meter_solv_H) {
5653 11 : parameter_solv_H[TRP].push_back(60737.60249988011);
5654 11 : parameter_solv_H[TRP].push_back(-77.77344118516487);
5655 11 : parameter_solv_H[TRP].push_back(-205962.80436572764);
5656 11 : parameter_solv_H[TRP].push_back(-62014.18523271781);
5657 11 : parameter_solv_H[TRP].push_back(680712.0512548896);
5658 11 : parameter_solv_H[TRP].push_back(-681337.967312983);
5659 11 : parameter_solv_H[TRP].push_back(211474.00338118695);
5660 :
5661 11 : parameter_solv_H[TYR].push_back(46250.803599880084);
5662 11 : parameter_solv_H[TYR].push_back(-45.827646837514614);
5663 11 : parameter_solv_H[TYR].push_back(-143872.94597686914);
5664 11 : parameter_solv_H[TYR].push_back(-39049.51580628132);
5665 11 : parameter_solv_H[TYR].push_back(441321.31246635393);
5666 11 : parameter_solv_H[TYR].push_back(-434477.6826175059);
5667 11 : parameter_solv_H[TYR].push_back(133179.21673104732);
5668 :
5669 11 : parameter_solv_H[PHE].push_back(42407.164900118914);
5670 11 : parameter_solv_H[PHE].push_back(-159.20054549009086);
5671 11 : parameter_solv_H[PHE].push_back(-123847.83591352346);
5672 11 : parameter_solv_H[PHE].push_back(-41797.78884558073);
5673 11 : parameter_solv_H[PHE].push_back(380283.87543872406);
5674 11 : parameter_solv_H[PHE].push_back(-361432.81356389285);
5675 11 : parameter_solv_H[PHE].push_back(107750.69385054041);
5676 :
5677 11 : parameter_solv_H[HIP].push_back(24473.473600119047);
5678 11 : parameter_solv_H[HIP].push_back(-111.6412807124612);
5679 11 : parameter_solv_H[HIP].push_back(-65826.17293437096);
5680 11 : parameter_solv_H[HIP].push_back(-23305.902022201855);
5681 11 : parameter_solv_H[HIP].push_back(194795.09953510275);
5682 11 : parameter_solv_H[HIP].push_back(-180454.47859494278);
5683 11 : parameter_solv_H[HIP].push_back(52699.36922660704);
5684 :
5685 11 : parameter_solv_H[ARG].push_back(34106.70239988039);
5686 11 : parameter_solv_H[ARG].push_back(152.74468231268114);
5687 11 : parameter_solv_H[ARG].push_back(-117086.46040369231);
5688 11 : parameter_solv_H[ARG].push_back(-19664.37512726012);
5689 11 : parameter_solv_H[ARG].push_back(364454.3721646173);
5690 11 : parameter_solv_H[ARG].push_back(-382076.05102190404);
5691 11 : parameter_solv_H[ARG].push_back(122775.83306003918);
5692 :
5693 11 : parameter_solv_H[LYS].push_back(32292.09000011877);
5694 11 : parameter_solv_H[LYS].push_back(-111.97888350941923);
5695 11 : parameter_solv_H[LYS].push_back(-91953.05212591762);
5696 11 : parameter_solv_H[LYS].push_back(-30691.03615444628);
5697 11 : parameter_solv_H[LYS].push_back(282092.82233263896);
5698 11 : parameter_solv_H[LYS].push_back(-269503.6095978623);
5699 11 : parameter_solv_H[LYS].push_back(80777.92760273012);
5700 :
5701 11 : parameter_solv_H[CYS].push_back(11352.902500119093);
5702 11 : parameter_solv_H[CYS].push_back(-45.52255488723637);
5703 11 : parameter_solv_H[CYS].push_back(-20925.086525675117);
5704 11 : parameter_solv_H[CYS].push_back(-5662.681335644281);
5705 11 : parameter_solv_H[CYS].push_back(38559.09602816144);
5706 11 : parameter_solv_H[CYS].push_back(-27885.22747486708);
5707 11 : parameter_solv_H[CYS].push_back(6280.148346561226);
5708 :
5709 11 : parameter_solv_H[CYX].push_back(10281.960000119348);
5710 11 : parameter_solv_H[CYX].push_back(-42.315998754511);
5711 11 : parameter_solv_H[CYX].push_back(-19328.174487327480);
5712 11 : parameter_solv_H[CYX].push_back(-5523.191775626829);
5713 11 : parameter_solv_H[CYX].push_back(38185.463172673335);
5714 11 : parameter_solv_H[CYX].push_back(-28940.174693042034);
5715 11 : parameter_solv_H[CYX].push_back(6925.390014187676);
5716 :
5717 11 : parameter_solv_H[ASP].push_back(13511.73760011933);
5718 11 : parameter_solv_H[ASP].push_back(-59.92934247210642);
5719 11 : parameter_solv_H[ASP].push_back(-25849.867077822244);
5720 11 : parameter_solv_H[ASP].push_back(-7541.679510407563);
5721 11 : parameter_solv_H[ASP].push_back(50760.93853987092);
5722 11 : parameter_solv_H[ASP].push_back(-37677.89102528413);
5723 11 : parameter_solv_H[ASP].push_back(8745.710458140105);
5724 :
5725 11 : parameter_solv_H[GLU].push_back(20443.280400119456);
5726 11 : parameter_solv_H[GLU].push_back(-113.77513581661388);
5727 11 : parameter_solv_H[GLU].push_back(-45587.79863958479);
5728 11 : parameter_solv_H[GLU].push_back(-16187.534798976243);
5729 11 : parameter_solv_H[GLU].push_back(112609.61802147207);
5730 11 : parameter_solv_H[GLU].push_back(-93362.01894077536);
5731 11 : parameter_solv_H[GLU].push_back(24519.546829431332);
5732 :
5733 11 : parameter_solv_H[ILE].push_back(27858.948100119596);
5734 11 : parameter_solv_H[ILE].push_back(-159.27394962770595);
5735 11 : parameter_solv_H[ILE].push_back(-61571.43025249802);
5736 11 : parameter_solv_H[ILE].push_back(-21324.89659912433);
5737 11 : parameter_solv_H[ILE].push_back(144070.7880009225);
5738 11 : parameter_solv_H[ILE].push_back(-115021.84534734003);
5739 11 : parameter_solv_H[ILE].push_back(28939.093300284097);
5740 :
5741 11 : parameter_solv_H[LEU].push_back(27858.948100119596);
5742 11 : parameter_solv_H[LEU].push_back(-165.61872365361);
5743 11 : parameter_solv_H[LEU].push_back(-62564.5706162518);
5744 11 : parameter_solv_H[LEU].push_back(-22465.325666767214);
5745 11 : parameter_solv_H[LEU].push_back(151616.7844050042);
5746 11 : parameter_solv_H[LEU].push_back(-122905.60389771541);
5747 11 : parameter_solv_H[LEU].push_back(31436.66201442061);
5748 :
5749 11 : parameter_solv_H[MET].push_back(25609.60090011981);
5750 11 : parameter_solv_H[MET].push_back(-135.38816369794569);
5751 11 : parameter_solv_H[MET].push_back(-67771.01548433342);
5752 11 : parameter_solv_H[MET].push_back(-25228.91756660071);
5753 11 : parameter_solv_H[MET].push_back(199649.92084565928);
5754 11 : parameter_solv_H[MET].push_back(-182251.9246506795);
5755 11 : parameter_solv_H[MET].push_back(52502.876819125115);
5756 :
5757 11 : parameter_solv_H[ASN].push_back(14376.010000119095);
5758 11 : parameter_solv_H[ASN].push_back(-67.65587848183215);
5759 11 : parameter_solv_H[ASN].push_back(-28302.877059425664);
5760 11 : parameter_solv_H[ASN].push_back(-8577.444107282141);
5761 11 : parameter_solv_H[ASN].push_back(57532.88704197217);
5762 11 : parameter_solv_H[ASN].push_back(-43261.79974462857);
5763 11 : parameter_solv_H[ASN].push_back(10186.450874679671);
5764 :
5765 11 : parameter_solv_H[PRO].push_back(16866.21690011944);
5766 11 : parameter_solv_H[PRO].push_back(-70.84312112734995);
5767 11 : parameter_solv_H[PRO].push_back(-31465.8423531932);
5768 11 : parameter_solv_H[PRO].push_back(-8653.362744540535);
5769 11 : parameter_solv_H[PRO].push_back(58032.27079924916);
5770 11 : parameter_solv_H[PRO].push_back(-41521.001733021694);
5771 11 : parameter_solv_H[PRO].push_back(9184.527523759205);
5772 :
5773 11 : parameter_solv_H[GLN].push_back(21503.289600119);
5774 11 : parameter_solv_H[GLN].push_back(-121.3012777474678);
5775 11 : parameter_solv_H[GLN].push_back(-50468.58503443957);
5776 11 : parameter_solv_H[GLN].push_back(-18462.47495329696);
5777 11 : parameter_solv_H[GLN].push_back(132718.42007501892);
5778 11 : parameter_solv_H[GLN].push_back(-113787.20224345029);
5779 11 : parameter_solv_H[GLN].push_back(30920.340813688686);
5780 :
5781 11 : parameter_solv_H[SER].push_back(9181.47240011935);
5782 11 : parameter_solv_H[SER].push_back(-28.775273124392083);
5783 11 : parameter_solv_H[SER].push_back(-15205.54229808512);
5784 11 : parameter_solv_H[SER].push_back(-3377.785599913673);
5785 11 : parameter_solv_H[SER].push_back(23345.562090489493);
5786 11 : parameter_solv_H[SER].push_back(-15312.699787471944);
5787 11 : parameter_solv_H[SER].push_back(3013.844610647712);
5788 :
5789 11 : parameter_solv_H[THR].push_back(15020.953600119403);
5790 11 : parameter_solv_H[THR].push_back(-61.909951810375105);
5791 11 : parameter_solv_H[THR].push_back(-27814.538986050964);
5792 11 : parameter_solv_H[THR].push_back(-7532.222992514079);
5793 11 : parameter_solv_H[THR].push_back(50586.29804970814);
5794 11 : parameter_solv_H[THR].push_back(-35943.85986777198);
5795 11 : parameter_solv_H[THR].push_back(7880.091610023207);
5796 :
5797 11 : parameter_solv_H[VAL].push_back(19647.628900119355);
5798 11 : parameter_solv_H[VAL].push_back(-89.04968136833762);
5799 11 : parameter_solv_H[VAL].push_back(-38050.10118919102);
5800 11 : parameter_solv_H[VAL].push_back(-10921.421066774372);
5801 11 : parameter_solv_H[VAL].push_back(72774.31277743122);
5802 11 : parameter_solv_H[VAL].push_back(-52689.05168504517);
5803 11 : parameter_solv_H[VAL].push_back(11806.48989635518);
5804 :
5805 11 : parameter_solv_H[ALA].push_back(7515.156100119273);
5806 11 : parameter_solv_H[ALA].push_back(-20.226317591188526);
5807 11 : parameter_solv_H[ALA].push_back(-11761.841775007797);
5808 11 : parameter_solv_H[ALA].push_back(-2341.4903622033885);
5809 11 : parameter_solv_H[ALA].push_back(16545.381259883452);
5810 11 : parameter_solv_H[ALA].push_back(-10397.171546969075);
5811 11 : parameter_solv_H[ALA].push_back(1921.5253045340198);
5812 :
5813 11 : parameter_solv_H[GLY].push_back(3594.002500119159);
5814 11 : parameter_solv_H[GLY].push_back(-6.910832388009796);
5815 11 : parameter_solv_H[GLY].push_back(-4937.3542895091905);
5816 11 : parameter_solv_H[GLY].push_back(-785.4545979203357);
5817 11 : parameter_solv_H[GLY].push_back(5852.853693316741);
5818 11 : parameter_solv_H[GLY].push_back(-3391.2920205126734);
5819 11 : parameter_solv_H[GLY].push_back(552.3278183161507);
5820 :
5821 11 : parameter_solv_H[HIS].push_back(22888.664100119073);
5822 11 : parameter_solv_H[HIS].push_back(-133.86281863999585);
5823 11 : parameter_solv_H[HIS].push_back(-57533.51412287858);
5824 11 : parameter_solv_H[HIS].push_back(-21767.300111408193);
5825 11 : parameter_solv_H[HIS].push_back(161255.15347073504);
5826 11 : parameter_solv_H[HIS].push_back(-142176.65100718598);
5827 11 : parameter_solv_H[HIS].push_back(39642.61507384587);
5828 :
5829 11 : parameter_mix_H[TRP].push_back(2974.6515001192306);
5830 11 : parameter_mix_H[TRP].push_back(-18.361939022074825);
5831 11 : parameter_mix_H[TRP].push_back(-7284.637435770752);
5832 11 : parameter_mix_H[TRP].push_back(-2945.7969900381895);
5833 11 : parameter_mix_H[TRP].push_back(21235.01878657283);
5834 11 : parameter_mix_H[TRP].push_back(-18909.7406035548);
5835 11 : parameter_mix_H[TRP].push_back(5324.324204245179);
5836 :
5837 11 : parameter_mix_H[TYR].push_back(2029.7362801192114);
5838 11 : parameter_mix_H[TYR].push_back(-6.983186065527884);
5839 11 : parameter_mix_H[TYR].push_back(-5041.996113037476);
5840 11 : parameter_mix_H[TYR].push_back(-1744.5213085724158);
5841 11 : parameter_mix_H[TYR].push_back(15329.420227814338);
5842 11 : parameter_mix_H[TYR].push_back(-14648.322529889958);
5843 11 : parameter_mix_H[TYR].push_back(4405.608657083287);
5844 :
5845 11 : parameter_mix_H[PHE].push_back(1704.6885401192117);
5846 11 : parameter_mix_H[PHE].push_back(-10.077274979133408);
5847 11 : parameter_mix_H[PHE].push_back(-3769.440088334303);
5848 11 : parameter_mix_H[PHE].push_back(-1574.6255694551546);
5849 11 : parameter_mix_H[PHE].push_back(10996.32497868798);
5850 11 : parameter_mix_H[PHE].push_back(-9840.68281283696);
5851 11 : parameter_mix_H[PHE].push_back(2792.098605716682);
5852 :
5853 11 : parameter_mix_H[HIP].push_back(1376.0462401192394);
5854 11 : parameter_mix_H[HIP].push_back(-8.576320475413144);
5855 11 : parameter_mix_H[HIP].push_back(-2796.8327726392167);
5856 11 : parameter_mix_H[HIP].push_back(-1165.0473128576);
5857 11 : parameter_mix_H[HIP].push_back(7495.063650365717);
5858 11 : parameter_mix_H[HIP].push_back(-6331.20422098132);
5859 11 : parameter_mix_H[HIP].push_back(1692.637366093312);
5860 :
5861 11 : parameter_mix_H[ARG].push_back(1280.940480119178);
5862 11 : parameter_mix_H[ARG].push_back(-7.411214928783748);
5863 11 : parameter_mix_H[ARG].push_back(-3747.6200569785033);
5864 11 : parameter_mix_H[ARG].push_back(-1766.5282176004569);
5865 11 : parameter_mix_H[ARG].push_back(14307.817638456267);
5866 11 : parameter_mix_H[ARG].push_back(-14297.104122885643);
5867 11 : parameter_mix_H[ARG].push_back(4450.526244207772);
5868 :
5869 11 : parameter_mix_H[LYS].push_back(570.7272001192143);
5870 11 : parameter_mix_H[LYS].push_back(-5.371742288956095);
5871 11 : parameter_mix_H[LYS].push_back(-1255.9868267793006);
5872 11 : parameter_mix_H[LYS].push_back(-748.3071074443138);
5873 11 : parameter_mix_H[LYS].push_back(4534.824932304509);
5874 11 : parameter_mix_H[LYS].push_back(-4125.307867230812);
5875 11 : parameter_mix_H[LYS].push_back(1178.781491068295);
5876 :
5877 11 : parameter_mix_H[CYS].push_back(410.21750011921864);
5878 11 : parameter_mix_H[CYS].push_back(-0.7655651758449595);
5879 11 : parameter_mix_H[CYS].push_back(-523.8897033718782);
5880 11 : parameter_mix_H[CYS].push_back(-89.88478273744425);
5881 11 : parameter_mix_H[CYS].push_back(655.3313542467919);
5882 11 : parameter_mix_H[CYS].push_back(-407.87897719750896);
5883 11 : parameter_mix_H[CYS].push_back(76.50541508448237);
5884 :
5885 11 : parameter_mix_H[CYX].push_back(466.237200119199);
5886 11 : parameter_mix_H[CYX].push_back(-1.302082362010);
5887 11 : parameter_mix_H[CYX].push_back(-667.565738985901);
5888 11 : parameter_mix_H[CYX].push_back(-159.506437978088);
5889 11 : parameter_mix_H[CYX].push_back(1085.648159448292);
5890 11 : parameter_mix_H[CYX].push_back(-767.622943338598);
5891 11 : parameter_mix_H[CYX].push_back(170.157274620163);
5892 :
5893 11 : parameter_mix_H[ASP].push_back(893.6531201192147);
5894 11 : parameter_mix_H[ASP].push_back(-3.0756255172248874);
5895 11 : parameter_mix_H[ASP].push_back(-1453.1760425275006);
5896 11 : parameter_mix_H[ASP].push_back(-365.0424824614137);
5897 11 : parameter_mix_H[ASP].push_back(2443.570600976796);
5898 11 : parameter_mix_H[ASP].push_back(-1679.8996339740277);
5899 11 : parameter_mix_H[ASP].push_back(352.33054461512455);
5900 :
5901 11 : parameter_mix_H[GLU].push_back(1075.4955601191884);
5902 11 : parameter_mix_H[GLU].push_back(-6.917429973203965);
5903 11 : parameter_mix_H[GLU].push_back(-2262.861870389347);
5904 11 : parameter_mix_H[GLU].push_back(-909.8078514527992);
5905 11 : parameter_mix_H[GLU].push_back(5841.923857549836);
5906 11 : parameter_mix_H[GLU].push_back(-4784.620969556751);
5907 11 : parameter_mix_H[GLU].push_back(1230.873134652953);
5908 :
5909 11 : parameter_mix_H[ILE].push_back(466.0127201192081);
5910 11 : parameter_mix_H[ILE].push_back(-0.9323443258150218);
5911 11 : parameter_mix_H[ILE].push_back(-576.7178005955719);
5912 11 : parameter_mix_H[ILE].push_back(-103.03003361062478);
5913 11 : parameter_mix_H[ILE].push_back(706.4269951176641);
5914 11 : parameter_mix_H[ILE].push_back(-420.4412859632717);
5915 11 : parameter_mix_H[ILE].push_back(71.53175726608731);
5916 :
5917 11 : parameter_mix_H[LEU].push_back(466.0127201192081);
5918 11 : parameter_mix_H[LEU].push_back(-1.9793605752606065);
5919 11 : parameter_mix_H[LEU].push_back(-718.3988478701591);
5920 11 : parameter_mix_H[LEU].push_back(-227.36409339012113);
5921 11 : parameter_mix_H[LEU].push_back(1389.2058254917304);
5922 11 : parameter_mix_H[LEU].push_back(-990.0033118748643);
5923 11 : parameter_mix_H[LEU].push_back(213.15736815883042);
5924 :
5925 11 : parameter_mix_H[MET].push_back(562.9855401192196);
5926 11 : parameter_mix_H[MET].push_back(-3.7994094933771643);
5927 11 : parameter_mix_H[MET].push_back(-1139.6331862451661);
5928 11 : parameter_mix_H[MET].push_back(-516.6313269725724);
5929 11 : parameter_mix_H[MET].push_back(3268.957245190869);
5930 11 : parameter_mix_H[MET].push_back(-2809.178864807947);
5931 11 : parameter_mix_H[MET].push_back(761.4832732100416);
5932 :
5933 11 : parameter_mix_H[ASN].push_back(828.7488001191887);
5934 11 : parameter_mix_H[ASN].push_back(-2.1275493073799625);
5935 11 : parameter_mix_H[ASN].push_back(-1222.248291388804);
5936 11 : parameter_mix_H[ASN].push_back(-238.94210659613537);
5937 11 : parameter_mix_H[ASN].push_back(1660.8322402171973);
5938 11 : parameter_mix_H[ASN].push_back(-1008.7934996077323);
5939 11 : parameter_mix_H[ASN].push_back(173.6082238625797);
5940 :
5941 11 : parameter_mix_H[PRO].push_back(578.4409801192146);
5942 11 : parameter_mix_H[PRO].push_back(-0.5379505780909722);
5943 11 : parameter_mix_H[PRO].push_back(-648.146493857212);
5944 11 : parameter_mix_H[PRO].push_back(-56.67223895342921);
5945 11 : parameter_mix_H[PRO].push_back(509.88860586987437);
5946 11 : parameter_mix_H[PRO].push_back(-214.57871784725265);
5947 11 : parameter_mix_H[PRO].push_back(11.99659463759968);
5948 :
5949 11 : parameter_mix_H[GLN].push_back(989.2334401191976);
5950 11 : parameter_mix_H[GLN].push_back(-6.307760694331967);
5951 11 : parameter_mix_H[GLN].push_back(-1971.7067150503622);
5952 11 : parameter_mix_H[GLN].push_back(-791.333088386235);
5953 11 : parameter_mix_H[GLN].push_back(4900.009768434847);
5954 11 : parameter_mix_H[GLN].push_back(-3909.7740976374153);
5955 11 : parameter_mix_H[GLN].push_back(975.4952613244343);
5956 :
5957 11 : parameter_mix_H[SER].push_back(426.39900011920196);
5958 11 : parameter_mix_H[SER].push_back(-0.42304498358319664);
5959 11 : parameter_mix_H[SER].push_back(-484.2066027682147);
5960 11 : parameter_mix_H[SER].push_back(-45.38968988754228);
5961 11 : parameter_mix_H[SER].push_back(401.3420977115044);
5962 11 : parameter_mix_H[SER].push_back(-178.0861461692512);
5963 11 : parameter_mix_H[SER].push_back(13.540349238730284);
5964 :
5965 11 : parameter_mix_H[THR].push_back(525.0470401191992);
5966 11 : parameter_mix_H[THR].push_back(-0.7419102811534484);
5967 11 : parameter_mix_H[THR].push_back(-652.7134808154495);
5968 11 : parameter_mix_H[THR].push_back(-80.39481224407903);
5969 11 : parameter_mix_H[THR].push_back(641.5487902728123);
5970 11 : parameter_mix_H[THR].push_back(-320.4227667104819);
5971 11 : parameter_mix_H[THR].push_back(36.03558531183942);
5972 :
5973 11 : parameter_mix_H[VAL].push_back(414.6228601192123);
5974 11 : parameter_mix_H[VAL].push_back(-0.35889335250521337);
5975 11 : parameter_mix_H[VAL].push_back(-453.11631644097474);
5976 11 : parameter_mix_H[VAL].push_back(-36.402101097644284);
5977 11 : parameter_mix_H[VAL].push_back(336.24049431626804);
5978 11 : parameter_mix_H[VAL].push_back(-127.42235327515239);
5979 11 : parameter_mix_H[VAL].push_back(0.8013280923923705);
5980 :
5981 11 : parameter_mix_H[ALA].push_back(285.21010011920816);
5982 11 : parameter_mix_H[ALA].push_back(-0.1573012439142169);
5983 11 : parameter_mix_H[ALA].push_back(-282.8945838800694);
5984 11 : parameter_mix_H[ALA].push_back(-16.32030056827785);
5985 11 : parameter_mix_H[ALA].push_back(178.065895049598);
5986 11 : parameter_mix_H[ALA].push_back(-60.27423229179658);
5987 11 : parameter_mix_H[ALA].push_back(-1.4695219304131588);
5988 :
5989 11 : parameter_mix_H[GLY].push_back(207.18720011920414);
5990 11 : parameter_mix_H[GLY].push_back(-0.1036587134183235);
5991 11 : parameter_mix_H[GLY].push_back(-185.70794948240638);
5992 11 : parameter_mix_H[GLY].push_back(-11.008101039836257);
5993 11 : parameter_mix_H[GLY].push_back(115.30600405624061);
5994 11 : parameter_mix_H[GLY].push_back(-42.46629718037158);
5995 11 : parameter_mix_H[GLY].push_back(0.9238928987070913);
5996 :
5997 11 : parameter_mix_H[HIS].push_back(1443.9117601192354);
5998 11 : parameter_mix_H[HIS].push_back(-7.478618745973115);
5999 11 : parameter_mix_H[HIS].push_back(-2715.0835155803215);
6000 11 : parameter_mix_H[HIS].push_back(-918.5243015382779);
6001 11 : parameter_mix_H[HIS].push_back(5821.6258431396);
6002 11 : parameter_mix_H[HIS].push_back(-4415.32722209556);
6003 11 : parameter_mix_H[HIS].push_back(1044.7044029209756);
6004 :
6005 11 : parameter_vac_H[TRP].push_back(36.42122511920832);
6006 11 : parameter_vac_H[TRP].push_back(-0.36925500341767903);
6007 11 : parameter_vac_H[TRP].push_back(-51.34228792835503);
6008 11 : parameter_vac_H[TRP].push_back(-34.10021080004831);
6009 11 : parameter_vac_H[TRP].push_back(132.647034983933);
6010 11 : parameter_vac_H[TRP].push_back(-82.89152328934257);
6011 11 : parameter_vac_H[TRP].push_back(13.029994092013231);
6012 :
6013 11 : parameter_vac_H[TYR].push_back(22.268961119209557);
6014 11 : parameter_vac_H[TYR].push_back(-0.1995573892347673);
6015 11 : parameter_vac_H[TYR].push_back(-36.54202179838511);
6016 11 : parameter_vac_H[TYR].push_back(-23.820801043096694);
6017 11 : parameter_vac_H[TYR].push_back(127.46799692275353);
6018 11 : parameter_vac_H[TYR].push_back(-107.63783234245744);
6019 11 : parameter_vac_H[TYR].push_back(28.180858902960775);
6020 :
6021 11 : parameter_vac_H[PHE].push_back(17.131321119209627);
6022 11 : parameter_vac_H[PHE].push_back(-0.15766725674246446);
6023 11 : parameter_vac_H[PHE].push_back(-19.19964432024534);
6024 11 : parameter_vac_H[PHE].push_back(-12.34326882843138);
6025 11 : parameter_vac_H[PHE].push_back(38.17216645824474);
6026 11 : parameter_vac_H[PHE].push_back(-11.245288857407298);
6027 11 : parameter_vac_H[PHE].push_back(-3.8114731300899343);
6028 :
6029 11 : parameter_vac_H[HIP].push_back(19.34240411920875);
6030 11 : parameter_vac_H[HIP].push_back(-0.13533410292592593);
6031 11 : parameter_vac_H[HIP].push_back(-25.924121027387276);
6032 11 : parameter_vac_H[HIP].push_back(-12.36586927492752);
6033 11 : parameter_vac_H[HIP].push_back(56.75268702111191);
6034 11 : parameter_vac_H[HIP].push_back(-31.126240293638094);
6035 11 : parameter_vac_H[HIP].push_back(2.749811579250848);
6036 :
6037 11 : parameter_vac_H[ARG].push_back(12.027024119209557);
6038 11 : parameter_vac_H[ARG].push_back(-0.41927538341868287);
6039 11 : parameter_vac_H[ARG].push_back(-22.137566939867042);
6040 11 : parameter_vac_H[ARG].push_back(-43.22615008762667);
6041 11 : parameter_vac_H[ARG].push_back(165.77466655520323);
6042 11 : parameter_vac_H[ARG].push_back(-140.68664871425898);
6043 11 : parameter_vac_H[ARG].push_back(36.67401195170306);
6044 :
6045 11 : parameter_vac_H[LYS].push_back(2.5217441192093717);
6046 11 : parameter_vac_H[LYS].push_back(-0.0032825476242835413);
6047 11 : parameter_vac_H[LYS].push_back(14.019071697737793);
6048 11 : parameter_vac_H[LYS].push_back(7.8634074595069245);
6049 11 : parameter_vac_H[LYS].push_back(-82.44639716451474);
6050 11 : parameter_vac_H[LYS].push_back(94.32937851921197);
6051 11 : parameter_vac_H[LYS].push_back(-32.324473823417);
6052 :
6053 11 : parameter_vac_H[CYS].push_back(3.705624880856525);
6054 11 : parameter_vac_H[CYS].push_back(0.005214780840206113);
6055 11 : parameter_vac_H[CYS].push_back(1.25680902661715);
6056 11 : parameter_vac_H[CYS].push_back(0.5779209425501814);
6057 11 : parameter_vac_H[CYS].push_back(-3.716408071089366);
6058 11 : parameter_vac_H[CYS].push_back(2.3947518943233117);
6059 11 : parameter_vac_H[CYS].push_back(-0.40204949737133333);
6060 :
6061 11 : parameter_vac_H[CYX].push_back(5.285401118868);
6062 11 : parameter_vac_H[CYX].push_back(-0.006119528779);
6063 11 : parameter_vac_H[CYX].push_back(-3.091212256902);
6064 11 : parameter_vac_H[CYX].push_back(-0.679948780910);
6065 11 : parameter_vac_H[CYX].push_back(4.495837313271);
6066 11 : parameter_vac_H[CYX].push_back(-2.827133444940);
6067 11 : parameter_vac_H[CYX].push_back(0.494583310914);
6068 :
6069 11 : parameter_vac_H[ASP].push_back(14.776336119209605);
6070 11 : parameter_vac_H[ASP].push_back(-0.037351220316916435);
6071 11 : parameter_vac_H[ASP].push_back(-18.556358387626286);
6072 11 : parameter_vac_H[ASP].push_back(-4.1737354794552886);
6073 11 : parameter_vac_H[ASP].push_back(28.424721213037405);
6074 11 : parameter_vac_H[ASP].push_back(-17.51389895324883);
6075 11 : parameter_vac_H[ASP].push_back(2.9729111724708597);
6076 :
6077 11 : parameter_vac_H[GLU].push_back(14.145121119208973);
6078 11 : parameter_vac_H[GLU].push_back(-0.11468766098213011);
6079 11 : parameter_vac_H[GLU].push_back(-26.272637652294613);
6080 11 : parameter_vac_H[GLU].push_back(-13.769758826440151);
6081 11 : parameter_vac_H[GLU].push_back(80.4575683578491);
6082 11 : parameter_vac_H[GLU].push_back(-64.19346347075);
6083 11 : parameter_vac_H[GLU].push_back(15.545440117656236);
6084 :
6085 11 : parameter_vac_H[ILE].push_back(1.9488158808808775);
6086 11 : parameter_vac_H[ILE].push_back(0.05873132133874459);
6087 11 : parameter_vac_H[ILE].push_back(12.032778845884135);
6088 11 : parameter_vac_H[ILE].push_back(7.148416980612881);
6089 11 : parameter_vac_H[ILE].push_back(-41.87377843832961);
6090 11 : parameter_vac_H[ILE].push_back(33.96120749582283);
6091 11 : parameter_vac_H[ILE].push_back(-8.362535852631256);
6092 :
6093 11 : parameter_vac_H[LEU].push_back(1.9488158808977816);
6094 11 : parameter_vac_H[LEU].push_back(0.0778305500414777);
6095 11 : parameter_vac_H[LEU].push_back(12.333370614594);
6096 11 : parameter_vac_H[LEU].push_back(9.449427967560764);
6097 11 : parameter_vac_H[LEU].push_back(-52.65457680603262);
6098 11 : parameter_vac_H[LEU].push_back(44.681877289399615);
6099 11 : parameter_vac_H[LEU].push_back(-11.460498338671227);
6100 :
6101 11 : parameter_vac_H[MET].push_back(3.0940808808117652);
6102 11 : parameter_vac_H[MET].push_back(0.04903755678213222);
6103 11 : parameter_vac_H[MET].push_back(8.981927022922049);
6104 11 : parameter_vac_H[MET].push_back(8.654862771879014);
6105 11 : parameter_vac_H[MET].push_back(-57.09889409156816);
6106 11 : parameter_vac_H[MET].push_back(58.87704775164829);
6107 11 : parameter_vac_H[MET].push_back(-18.60431990258862);
6108 :
6109 11 : parameter_vac_H[ASN].push_back(11.943936119209074);
6110 11 : parameter_vac_H[ASN].push_back(-0.0005000836239497835);
6111 11 : parameter_vac_H[ASN].push_back(-9.581236453763157);
6112 11 : parameter_vac_H[ASN].push_back(0.16244025786232308);
6113 11 : parameter_vac_H[ASN].push_back(2.9276580099749574);
6114 11 : parameter_vac_H[ASN].push_back(2.133535783835143);
6115 11 : parameter_vac_H[ASN].push_back(-1.5709968820975018);
6116 :
6117 11 : parameter_vac_H[PRO].push_back(4.9595288808229245);
6118 11 : parameter_vac_H[PRO].push_back(0.017853932680793515);
6119 11 : parameter_vac_H[PRO].push_back(4.5421559293101605);
6120 11 : parameter_vac_H[PRO].push_back(2.008455612787203);
6121 11 : parameter_vac_H[PRO].push_back(-12.444117841318494);
6122 11 : parameter_vac_H[PRO].push_back(8.511723688836447);
6123 11 : parameter_vac_H[PRO].push_back(-1.6337543903496765);
6124 :
6125 11 : parameter_vac_H[GLN].push_back(11.377129119208574);
6126 11 : parameter_vac_H[GLN].push_back(-0.0674805307761209);
6127 11 : parameter_vac_H[GLN].push_back(-16.56692720411458);
6128 11 : parameter_vac_H[GLN].push_back(-6.477707440126834);
6129 11 : parameter_vac_H[GLN].push_back(34.78232259512621);
6130 11 : parameter_vac_H[GLN].push_back(-19.450886909938312);
6131 11 : parameter_vac_H[GLN].push_back(1.944286925108988);
6132 :
6133 11 : parameter_vac_H[SER].push_back(4.95062488096605);
6134 11 : parameter_vac_H[SER].push_back(0.004676435440506079);
6135 11 : parameter_vac_H[SER].push_back(-0.1896653085608564);
6136 11 : parameter_vac_H[SER].push_back(0.5142284931977218);
6137 11 : parameter_vac_H[SER].push_back(-2.8946087252759893);
6138 11 : parameter_vac_H[SER].push_back(2.1031239401634836);
6139 11 : parameter_vac_H[SER].push_back(-0.38226443516361713);
6140 :
6141 11 : parameter_vac_H[THR].push_back(4.588163880808971);
6142 11 : parameter_vac_H[THR].push_back(0.018587905993982613);
6143 11 : parameter_vac_H[THR].push_back(3.5289861308270214);
6144 11 : parameter_vac_H[THR].push_back(2.0780583604591567);
6145 11 : parameter_vac_H[THR].push_back(-12.3802007068414);
6146 11 : parameter_vac_H[THR].push_back(8.720986674116094);
6147 11 : parameter_vac_H[THR].push_back(-1.683256475122275);
6148 :
6149 11 : parameter_vac_H[VAL].push_back(2.187440880853519);
6150 11 : parameter_vac_H[VAL].push_back(0.028351524826584255);
6151 11 : parameter_vac_H[VAL].push_back(8.36584512491955);
6152 11 : parameter_vac_H[VAL].push_back(3.1686206615123926);
6153 11 : parameter_vac_H[VAL].push_back(-19.81959917770108);
6154 11 : parameter_vac_H[VAL].push_back(13.293003038570571);
6155 11 : parameter_vac_H[VAL].push_back(-2.4595257726774125);
6156 :
6157 11 : parameter_vac_H[ALA].push_back(2.7060248808167935);
6158 11 : parameter_vac_H[ALA].push_back(0.004618897267213416);
6159 11 : parameter_vac_H[ALA].push_back(2.4990261487383947);
6160 11 : parameter_vac_H[ALA].push_back(0.49579332664340864);
6161 11 : parameter_vac_H[ALA].push_back(-3.850400071630347);
6162 11 : parameter_vac_H[ALA].push_back(1.9501161562030942);
6163 11 : parameter_vac_H[ALA].push_back(-0.18332582719788362);
6164 :
6165 11 : parameter_vac_H[GLY].push_back(2.985983880876256);
6166 11 : parameter_vac_H[GLY].push_back(0.0005033131808079042);
6167 11 : parameter_vac_H[GLY].push_back(-0.42250170279962684);
6168 11 : parameter_vac_H[GLY].push_back(0.05620517453257455);
6169 11 : parameter_vac_H[GLY].push_back(-0.16801962822020733);
6170 11 : parameter_vac_H[GLY].push_back(0.23635459648780555);
6171 11 : parameter_vac_H[GLY].push_back(-0.06585244715658795);
6172 :
6173 11 : parameter_vac_H[HIS].push_back(22.77198411920933);
6174 11 : parameter_vac_H[HIS].push_back(-0.06607491006655417);
6175 11 : parameter_vac_H[HIS].push_back(-27.277710268717247);
6176 11 : parameter_vac_H[HIS].push_back(-5.674444390934355);
6177 11 : parameter_vac_H[HIS].push_back(33.4059567406171);
6178 11 : parameter_vac_H[HIS].push_back(-11.60826210271092);
6179 11 : parameter_vac_H[HIS].push_back(-1.7359607560773076);
6180 :
6181 : // NUCLEIC ACIDS
6182 :
6183 : // BB_PO2-BB_PO3 H and D parameters are identical as there is no H or D in the bead.
6184 11 : parameter_solv_H[BB_PO3].push_back(1464.5929001192262);
6185 11 : parameter_solv_H[BB_PO3].push_back(-2.316908934494931);
6186 11 : parameter_solv_H[BB_PO3].push_back(-1882.4844584696532);
6187 11 : parameter_solv_H[BB_PO3].push_back(-258.8660305554736);
6188 11 : parameter_solv_H[BB_PO3].push_back(2007.5216385943972);
6189 11 : parameter_solv_H[BB_PO3].push_back(-1087.6423562424877);
6190 11 : parameter_solv_H[BB_PO3].push_back(154.89236486681165);
6191 :
6192 11 : parameter_solv_H[BB_PO2].push_back(575.5201001192197);
6193 11 : parameter_solv_H[BB_PO2].push_back(-0.6126595489733864);
6194 11 : parameter_solv_H[BB_PO2].push_back(-623.3371092254899);
6195 11 : parameter_solv_H[BB_PO2].push_back(-68.05795957022144);
6196 11 : parameter_solv_H[BB_PO2].push_back(561.8052621243661);
6197 11 : parameter_solv_H[BB_PO2].push_back(-283.39573309540276);
6198 11 : parameter_solv_H[BB_PO2].push_back(35.550016980100295);
6199 :
6200 11 : parameter_solv_H[BB_DNA].push_back(21211.009600118316);
6201 11 : parameter_solv_H[BB_DNA].push_back(-90.18805990529991);
6202 11 : parameter_solv_H[BB_DNA].push_back(-39731.13373512149);
6203 11 : parameter_solv_H[BB_DNA].push_back(-10920.373563712872);
6204 11 : parameter_solv_H[BB_DNA].push_back(72882.21702424981);
6205 11 : parameter_solv_H[BB_DNA].push_back(-51747.487078112776);
6206 11 : parameter_solv_H[BB_DNA].push_back(11308.678429018755);
6207 :
6208 11 : parameter_solv_H[BB_DNA_5].push_back(22737.624100119025);
6209 11 : parameter_solv_H[BB_DNA_5].push_back(-102.72714886664161);
6210 11 : parameter_solv_H[BB_DNA_5].push_back(-43685.329677789734);
6211 11 : parameter_solv_H[BB_DNA_5].push_back(-12564.25937409345);
6212 11 : parameter_solv_H[BB_DNA_5].push_back(83454.87540484878);
6213 11 : parameter_solv_H[BB_DNA_5].push_back(-60367.15652138887);
6214 11 : parameter_solv_H[BB_DNA_5].push_back(13507.333729868991);
6215 :
6216 11 : parameter_solv_H[BB_DNA_3].push_back(22737.62410011902);
6217 11 : parameter_solv_H[BB_DNA_3].push_back(-101.57816684452251);
6218 11 : parameter_solv_H[BB_DNA_3].push_back(-43488.536705576145);
6219 11 : parameter_solv_H[BB_DNA_3].push_back(-12345.056184958425);
6220 11 : parameter_solv_H[BB_DNA_3].push_back(81963.52364114887);
6221 11 : parameter_solv_H[BB_DNA_3].push_back(-58791.59443618196);
6222 11 : parameter_solv_H[BB_DNA_3].push_back(13003.199362335583);
6223 :
6224 11 : parameter_solv_H[BB_RNA].push_back(23953.752900120977);
6225 11 : parameter_solv_H[BB_RNA].push_back(-117.35779348824417);
6226 11 : parameter_solv_H[BB_RNA].push_back(-47644.41735332843);
6227 11 : parameter_solv_H[BB_RNA].push_back(-14641.556643789861);
6228 11 : parameter_solv_H[BB_RNA].push_back(96893.48627050371);
6229 11 : parameter_solv_H[BB_RNA].push_back(-72249.62534169303);
6230 11 : parameter_solv_H[BB_RNA].push_back(16792.055521055358);
6231 :
6232 11 : parameter_solv_H[BB_RNA_5].push_back(25574.406400119024);
6233 11 : parameter_solv_H[BB_RNA_5].push_back(-131.99642772933734);
6234 11 : parameter_solv_H[BB_RNA_5].push_back(-52136.51404531251);
6235 11 : parameter_solv_H[BB_RNA_5].push_back(-16682.14273917604);
6236 11 : parameter_solv_H[BB_RNA_5].push_back(110278.01921639398);
6237 11 : parameter_solv_H[BB_RNA_5].push_back(-83715.92027818544);
6238 11 : parameter_solv_H[BB_RNA_5].push_back(19875.89133770605);
6239 :
6240 11 : parameter_solv_H[BB_RNA_3].push_back(25574.406400119027);
6241 11 : parameter_solv_H[BB_RNA_3].push_back(-127.96875237036166);
6242 11 : parameter_solv_H[BB_RNA_3].push_back(-51407.18391758439);
6243 11 : parameter_solv_H[BB_RNA_3].push_back(-15922.900669975606);
6244 11 : parameter_solv_H[BB_RNA_3].push_back(105078.5888910626);
6245 11 : parameter_solv_H[BB_RNA_3].push_back(-78289.16276190645);
6246 11 : parameter_solv_H[BB_RNA_3].push_back(18156.832143441192);
6247 :
6248 11 : parameter_solv_H[BASE_A].push_back(13282.562500119211);
6249 11 : parameter_solv_H[BASE_A].push_back(-76.45124168404048);
6250 11 : parameter_solv_H[BASE_A].push_back(-28376.06994108963);
6251 11 : parameter_solv_H[BASE_A].push_back(-9972.910773722022);
6252 11 : parameter_solv_H[BASE_A].push_back(65873.86341939073);
6253 11 : parameter_solv_H[BASE_A].push_back(-52064.33492910885);
6254 11 : parameter_solv_H[BASE_A].push_back(12931.608989412513);
6255 :
6256 11 : parameter_solv_H[BASE_C].push_back(10600.76160011891);
6257 11 : parameter_solv_H[BASE_C].push_back(-49.1670871249108);
6258 11 : parameter_solv_H[BASE_C].push_back(-20239.818742072875);
6259 11 : parameter_solv_H[BASE_C].push_back(-6020.278780090207);
6260 11 : parameter_solv_H[BASE_C].push_back(39632.13288981881);
6261 11 : parameter_solv_H[BASE_C].push_back(-28954.779736165576);
6262 11 : parameter_solv_H[BASE_C].push_back(6551.541109526305);
6263 :
6264 11 : parameter_solv_H[BASE_G].push_back(15470.384400119934);
6265 11 : parameter_solv_H[BASE_G].push_back(-93.8013620200972);
6266 11 : parameter_solv_H[BASE_G].push_back(-36188.29687013545);
6267 11 : parameter_solv_H[BASE_G].push_back(-13717.685098209471);
6268 11 : parameter_solv_H[BASE_G].push_back(95658.18473657136);
6269 11 : parameter_solv_H[BASE_G].push_back(-81262.37811451119);
6270 11 : parameter_solv_H[BASE_G].push_back(21841.903930943085);
6271 :
6272 11 : parameter_solv_H[BASE_T].push_back(17210.81610011936);
6273 11 : parameter_solv_H[BASE_T].push_back(-93.10189802920208);
6274 11 : parameter_solv_H[BASE_T].push_back(-36466.51927689957);
6275 11 : parameter_solv_H[BASE_T].push_back(-12425.55615716932);
6276 11 : parameter_solv_H[BASE_T].push_back(83847.427808925);
6277 11 : parameter_solv_H[BASE_T].push_back(-66735.64997846584);
6278 11 : parameter_solv_H[BASE_T].push_back(16757.3463987507);
6279 :
6280 11 : parameter_solv_H[BASE_U].push_back(10909.802500119395);
6281 11 : parameter_solv_H[BASE_U].push_back(-46.17712672768298);
6282 11 : parameter_solv_H[BASE_U].push_back(-20149.67695512526);
6283 11 : parameter_solv_H[BASE_U].push_back(-5590.242961204435);
6284 11 : parameter_solv_H[BASE_U].push_back(37169.2740983132);
6285 11 : parameter_solv_H[BASE_U].push_back(-26475.631627167604);
6286 11 : parameter_solv_H[BASE_U].push_back(5808.201015156168);
6287 :
6288 11 : parameter_mix_H[BB_PO3].push_back(143.5890401192106);
6289 11 : parameter_mix_H[BB_PO3].push_back(-0.0679405156108208);
6290 11 : parameter_mix_H[BB_PO3].push_back(-131.78648321068806);
6291 11 : parameter_mix_H[BB_PO3].push_back(-7.222980065241985);
6292 11 : parameter_mix_H[BB_PO3].push_back(79.67309464590994);
6293 11 : parameter_mix_H[BB_PO3].push_back(-27.950095608460042);
6294 11 : parameter_mix_H[BB_PO3].push_back(0.12790403369995257);
6295 :
6296 11 : parameter_mix_H[BB_PO2].push_back(80.12660011920252);
6297 11 : parameter_mix_H[BB_PO2].push_back(-0.0278885551982023);
6298 11 : parameter_mix_H[BB_PO2].push_back(-60.532194918222984);
6299 11 : parameter_mix_H[BB_PO2].push_back(-2.976882903409687);
6300 11 : parameter_mix_H[BB_PO2].push_back(33.30645116638125);
6301 11 : parameter_mix_H[BB_PO2].push_back(-11.601573219761374);
6302 11 : parameter_mix_H[BB_PO2].push_back(0.12551046492022422);
6303 :
6304 11 : parameter_mix_H[BB_DNA].push_back(712.7621601191935);
6305 11 : parameter_mix_H[BB_DNA].push_back(-0.3228709821198571);
6306 11 : parameter_mix_H[BB_DNA].push_back(-784.5118228559945);
6307 11 : parameter_mix_H[BB_DNA].push_back(-27.196125702249613);
6308 11 : parameter_mix_H[BB_DNA].push_back(410.0185035102729);
6309 11 : parameter_mix_H[BB_DNA].push_back(-54.453513369320355);
6310 11 : parameter_mix_H[BB_DNA].push_back(-44.85506789237683);
6311 :
6312 11 : parameter_mix_H[BB_DNA_5].push_back(625.175339965785);
6313 11 : parameter_mix_H[BB_DNA_5].push_back(0.2691706617748245);
6314 11 : parameter_mix_H[BB_DNA_5].push_back(-582.8721350420001);
6315 11 : parameter_mix_H[BB_DNA_5].push_back(46.512408351374326);
6316 11 : parameter_mix_H[BB_DNA_5].push_back(-58.93886949899108);
6317 11 : parameter_mix_H[BB_DNA_5].push_back(307.29720336085046);
6318 11 : parameter_mix_H[BB_DNA_5].push_back(-131.71996309259953);
6319 :
6320 11 : parameter_mix_H[BB_DNA_3].push_back(625.1753399401266);
6321 11 : parameter_mix_H[BB_DNA_3].push_back(0.08763234414546289);
6322 11 : parameter_mix_H[BB_DNA_3].push_back(-606.8067575087485);
6323 11 : parameter_mix_H[BB_DNA_3].push_back(20.84427254872218);
6324 11 : parameter_mix_H[BB_DNA_3].push_back(92.53523123608991);
6325 11 : parameter_mix_H[BB_DNA_3].push_back(162.04688035654937);
6326 11 : parameter_mix_H[BB_DNA_3].push_back(-89.13571774638052);
6327 :
6328 11 : parameter_mix_H[BB_RNA].push_back(936.9775801191857);
6329 11 : parameter_mix_H[BB_RNA].push_back(-1.3233686929680253);
6330 11 : parameter_mix_H[BB_RNA].push_back(-1212.1627155263773);
6331 11 : parameter_mix_H[BB_RNA].push_back(-141.35324744384351);
6332 11 : parameter_mix_H[BB_RNA].push_back(1155.8281658363026);
6333 11 : parameter_mix_H[BB_RNA].push_back(-548.9340055857343);
6334 11 : parameter_mix_H[BB_RNA].push_back(50.81734777881503);
6335 :
6336 11 : parameter_mix_H[BB_RNA_5].push_back(848.5355201165631);
6337 11 : parameter_mix_H[BB_RNA_5].push_back(-0.49570338490120175);
6338 11 : parameter_mix_H[BB_RNA_5].push_back(-976.1033073783973);
6339 11 : parameter_mix_H[BB_RNA_5].push_back(-32.943532187986605);
6340 11 : parameter_mix_H[BB_RNA_5].push_back(475.66177061923884);
6341 11 : parameter_mix_H[BB_RNA_5].push_back(17.51955845824258);
6342 11 : parameter_mix_H[BB_RNA_5].push_back(-96.74451972314769);
6343 :
6344 11 : parameter_mix_H[BB_RNA_3].push_back(848.5355201192122);
6345 11 : parameter_mix_H[BB_RNA_3].push_back(-0.8301109354355396);
6346 11 : parameter_mix_H[BB_RNA_3].push_back(-1019.9524389785406);
6347 11 : parameter_mix_H[BB_RNA_3].push_back(-84.1388451424885);
6348 11 : parameter_mix_H[BB_RNA_3].push_back(787.1277245040931);
6349 11 : parameter_mix_H[BB_RNA_3].push_back(-294.67807432795627);
6350 11 : parameter_mix_H[BB_RNA_3].push_back(-1.3214626461251089);
6351 :
6352 11 : parameter_mix_H[BASE_A].push_back(1504.9345001191857);
6353 11 : parameter_mix_H[BASE_A].push_back(-3.5306888452552663);
6354 11 : parameter_mix_H[BASE_A].push_back(-2234.3933572775572);
6355 11 : parameter_mix_H[BASE_A].push_back(-380.0255208494757);
6356 11 : parameter_mix_H[BASE_A].push_back(2726.27802432048);
6357 11 : parameter_mix_H[BASE_A].push_back(-1490.8825754968443);
6358 11 : parameter_mix_H[BASE_A].push_back(199.7501110740159);
6359 :
6360 11 : parameter_mix_H[BASE_C].push_back(939.8188801192172);
6361 11 : parameter_mix_H[BASE_C].push_back(-1.489638186262854);
6362 11 : parameter_mix_H[BASE_C].push_back(-1244.5515798554075);
6363 11 : parameter_mix_H[BASE_C].push_back(-161.3972705672055);
6364 11 : parameter_mix_H[BASE_C].push_back(1276.3568466722545);
6365 11 : parameter_mix_H[BASE_C].push_back(-643.3057776225742);
6366 11 : parameter_mix_H[BASE_C].push_back(72.75963113826273);
6367 :
6368 11 : parameter_mix_H[BASE_G].push_back(1768.434840119199);
6369 11 : parameter_mix_H[BASE_G].push_back(-6.505347007077434);
6370 11 : parameter_mix_H[BASE_G].push_back(-2919.3856777898427);
6371 11 : parameter_mix_H[BASE_G].push_back(-701.2456464463938);
6372 11 : parameter_mix_H[BASE_G].push_back(4464.594230284102);
6373 11 : parameter_mix_H[BASE_G].push_back(-2733.138521295608);
6374 11 : parameter_mix_H[BASE_G].push_back(458.1177706235891);
6375 :
6376 11 : parameter_mix_H[BASE_T].push_back(1179.3981001192033);
6377 11 : parameter_mix_H[BASE_T].push_back(-3.2037849252756527);
6378 11 : parameter_mix_H[BASE_T].push_back(-1821.255498763799);
6379 11 : parameter_mix_H[BASE_T].push_back(-371.01993266441303);
6380 11 : parameter_mix_H[BASE_T].push_back(2604.074226688971);
6381 11 : parameter_mix_H[BASE_T].push_back(-1648.1965787713084);
6382 11 : parameter_mix_H[BASE_T].push_back(307.2962186436368);
6383 :
6384 11 : parameter_mix_H[BASE_U].push_back(956.3442001192266);
6385 11 : parameter_mix_H[BASE_U].push_back(-1.724458000760567);
6386 11 : parameter_mix_H[BASE_U].push_back(-1287.9746970192687);
6387 11 : parameter_mix_H[BASE_U].push_back(-192.74748379510373);
6388 11 : parameter_mix_H[BASE_U].push_back(1459.0789258833893);
6389 11 : parameter_mix_H[BASE_U].push_back(-810.0763075080915);
6390 11 : parameter_mix_H[BASE_U].push_back(119.81810290248339);
6391 :
6392 11 : parameter_vac_H[BB_PO3].push_back(3.519375907888525);
6393 11 : parameter_vac_H[BB_PO3].push_back(7.742660056553524e-05);
6394 11 : parameter_vac_H[BB_PO3].push_back(-1.3856562746347367);
6395 11 : parameter_vac_H[BB_PO3].push_back(0.00821183249969174);
6396 11 : parameter_vac_H[BB_PO3].push_back(0.21213096729728745);
6397 11 : parameter_vac_H[BB_PO3].push_back(0.032592855104331325);
6398 11 : parameter_vac_H[BB_PO3].push_back(-0.02236149538438434);
6399 :
6400 11 : parameter_vac_H[BB_PO2].push_back(2.7889001116093275);
6401 11 : parameter_vac_H[BB_PO2].push_back(-0.00011178884266113128);
6402 11 : parameter_vac_H[BB_PO2].push_back(-1.1702605818380667);
6403 11 : parameter_vac_H[BB_PO2].push_back(-0.011278044036819933);
6404 11 : parameter_vac_H[BB_PO2].push_back(0.3214006584089025);
6405 11 : parameter_vac_H[BB_PO2].push_back(-0.04097165983591666);
6406 11 : parameter_vac_H[BB_PO2].push_back(-0.017525098100539722);
6407 :
6408 11 : parameter_vac_H[BB_DNA].push_back(5.987809026456476);
6409 11 : parameter_vac_H[BB_DNA].push_back(9.945454528827912e-05);
6410 11 : parameter_vac_H[BB_DNA].push_back(-1.1884708569330031);
6411 11 : parameter_vac_H[BB_DNA].push_back(-0.007457733256362841);
6412 11 : parameter_vac_H[BB_DNA].push_back(0.05666858781418339);
6413 11 : parameter_vac_H[BB_DNA].push_back(-0.15158797629971757);
6414 11 : parameter_vac_H[BB_DNA].push_back(0.11642340861329734);
6415 :
6416 11 : parameter_vac_H[BB_DNA_5].push_back(4.297328944539055);
6417 11 : parameter_vac_H[BB_DNA_5].push_back(0.0014793971885106831);
6418 11 : parameter_vac_H[BB_DNA_5].push_back(1.3961088365255605);
6419 11 : parameter_vac_H[BB_DNA_5].push_back(0.08974639858979384);
6420 11 : parameter_vac_H[BB_DNA_5].push_back(-1.5198099705167643);
6421 11 : parameter_vac_H[BB_DNA_5].push_back(-0.12127122359433733);
6422 11 : parameter_vac_H[BB_DNA_5].push_back(0.4134601046223601);
6423 :
6424 11 : parameter_vac_H[BB_DNA_3].push_back(4.297328886488132);
6425 11 : parameter_vac_H[BB_DNA_3].push_back(0.0041802954281271905);
6426 11 : parameter_vac_H[BB_DNA_3].push_back(1.6065462295705266);
6427 11 : parameter_vac_H[BB_DNA_3].push_back(0.4399805535688805);
6428 11 : parameter_vac_H[BB_DNA_3].push_back(-3.3806711791929804);
6429 11 : parameter_vac_H[BB_DNA_3].push_back(1.6729551563628675);
6430 11 : parameter_vac_H[BB_DNA_3].push_back(-0.10911063067909885);
6431 :
6432 11 : parameter_vac_H[BB_RNA].push_back(9.162728984394093);
6433 11 : parameter_vac_H[BB_RNA].push_back(0.00019952321584579868);
6434 11 : parameter_vac_H[BB_RNA].push_back(-4.744748946331966);
6435 11 : parameter_vac_H[BB_RNA].push_back(0.025106563403946364);
6436 11 : parameter_vac_H[BB_RNA].push_back(1.2302956694109803);
6437 11 : parameter_vac_H[BB_RNA].push_back(0.12359062278096915);
6438 11 : parameter_vac_H[BB_RNA].push_back(-0.1725633367685285);
6439 :
6440 11 : parameter_vac_H[BB_RNA_5].push_back(7.038408898671503);
6441 11 : parameter_vac_H[BB_RNA_5].push_back(0.005106788424920148);
6442 11 : parameter_vac_H[BB_RNA_5].push_back(-0.8981588221803118);
6443 11 : parameter_vac_H[BB_RNA_5].push_back(0.4922588155214312);
6444 11 : parameter_vac_H[BB_RNA_5].push_back(-2.6667853454023644);
6445 11 : parameter_vac_H[BB_RNA_5].push_back(1.533316567240718);
6446 11 : parameter_vac_H[BB_RNA_5].push_back(-0.07199604869737707);
6447 :
6448 11 : parameter_vac_H[BB_RNA_3].push_back(7.038408892621863);
6449 11 : parameter_vac_H[BB_RNA_3].push_back(0.002993083907266898);
6450 11 : parameter_vac_H[BB_RNA_3].push_back(-1.3626596831098492);
6451 11 : parameter_vac_H[BB_RNA_3].push_back(0.3138856961130113);
6452 11 : parameter_vac_H[BB_RNA_3].push_back(-1.684185014289391);
6453 11 : parameter_vac_H[BB_RNA_3].push_back(1.1862168720864616);
6454 11 : parameter_vac_H[BB_RNA_3].push_back(-0.1443894172417523);
6455 :
6456 11 : parameter_vac_H[BASE_A].push_back(42.62784088079008);
6457 11 : parameter_vac_H[BASE_A].push_back(0.02302908536431516);
6458 11 : parameter_vac_H[BASE_A].push_back(-33.22707177297222);
6459 11 : parameter_vac_H[BASE_A].push_back(2.6853748424439834);
6460 11 : parameter_vac_H[BASE_A].push_back(-1.6632902891624768);
6461 11 : parameter_vac_H[BASE_A].push_back(11.905766349515268);
6462 11 : parameter_vac_H[BASE_A].push_back(-4.547083454788805);
6463 :
6464 11 : parameter_vac_H[BASE_C].push_back(20.83009588079022);
6465 11 : parameter_vac_H[BASE_C].push_back(0.017055822321768378);
6466 11 : parameter_vac_H[BASE_C].push_back(-8.349634734370916);
6467 11 : parameter_vac_H[BASE_C].push_back(1.9324634367723073);
6468 11 : parameter_vac_H[BASE_C].push_back(-8.435199734060882);
6469 11 : parameter_vac_H[BASE_C].push_back(8.272798368731268);
6470 11 : parameter_vac_H[BASE_C].push_back(-1.986671440757263);
6471 :
6472 11 : parameter_vac_H[BASE_G].push_back(50.53788088079374);
6473 11 : parameter_vac_H[BASE_G].push_back(0.024035597617780367);
6474 11 : parameter_vac_H[BASE_G].push_back(-47.94916639302998);
6475 11 : parameter_vac_H[BASE_G].push_back(3.143375731466498);
6476 11 : parameter_vac_H[BASE_G].push_back(4.297009866708155);
6477 11 : parameter_vac_H[BASE_G].push_back(15.855448505050578);
6478 11 : parameter_vac_H[BASE_G].push_back(-7.827484135873966);
6479 :
6480 11 : parameter_vac_H[BASE_T].push_back(20.20502488079069);
6481 11 : parameter_vac_H[BASE_T].push_back(0.033659966153300002);
6482 11 : parameter_vac_H[BASE_T].push_back(-6.057999187718758);
6483 11 : parameter_vac_H[BASE_T].push_back(4.146969282504351);
6484 11 : parameter_vac_H[BASE_T].push_back(-20.664315319574357);
6485 11 : parameter_vac_H[BASE_T].push_back(19.982178623201648);
6486 11 : parameter_vac_H[BASE_T].push_back(-5.440921587349456);
6487 :
6488 11 : parameter_vac_H[BASE_U].push_back(20.958084119209754);
6489 11 : parameter_vac_H[BASE_U].push_back(-0.005164660707148803);
6490 11 : parameter_vac_H[BASE_U].push_back(-14.53831312442302);
6491 11 : parameter_vac_H[BASE_U].push_back(-0.5276995756310442);
6492 11 : parameter_vac_H[BASE_U].push_back(7.060900707522138);
6493 11 : parameter_vac_H[BASE_U].push_back(-1.8988408480951036);
6494 11 : parameter_vac_H[BASE_U].push_back(-0.215000567681094);
6495 :
6496 31669 : for(unsigned i=0; i<atoms.size(); ++i) {
6497 31658 : std::string Aname = pdb.getAtomName(atoms[i]);
6498 31658 : std::string Rname = pdb.getResidueName(atoms[i]);
6499 31658 : Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
6500 31658 : Rname = onebeadResidueAlias(Rname);
6501 31658 : if(Rname=="ALA") {
6502 1632 : atoi[residue_atom[i]]=ALA;
6503 30026 : } else if(Rname=="ARG") {
6504 1944 : atoi[residue_atom[i]]=ARG;
6505 28082 : } else if(Rname=="ASN") {
6506 1620 : atoi[residue_atom[i]]=ASN;
6507 26462 : } else if(Rname=="ASP") {
6508 1404 : atoi[residue_atom[i]]=ASP;
6509 25058 : } else if(Rname=="CYS") {
6510 108 : atoi[residue_atom[i]]=CYS;
6511 24950 : } else if(Rname=="CYX") {
6512 0 : atoi[residue_atom[i]]=CYX;
6513 24950 : } else if(Rname=="GLN") {
6514 2356 : atoi[residue_atom[i]]=GLN;
6515 22594 : } else if(Rname=="GLU") {
6516 1071 : atoi[residue_atom[i]]=GLU;
6517 21523 : } else if(Rname=="GLY") {
6518 1422 : atoi[residue_atom[i]]=GLY;
6519 20101 : } else if(Rname=="HIS") {
6520 0 : atoi[residue_atom[i]]=HIS;
6521 20101 : } else if(Rname=="HID") {
6522 0 : atoi[residue_atom[i]]=HIS;
6523 20101 : } else if(Rname=="HIE") {
6524 324 : atoi[residue_atom[i]]=HIS;
6525 19777 : } else if(Rname=="HIP") {
6526 0 : atoi[residue_atom[i]]=HIP;
6527 : // CHARMM NAMING FOR PROTONATION STATES OF HISTIDINE
6528 19777 : } else if(Rname=="HSD") {
6529 0 : atoi[residue_atom[i]]=HIS;
6530 19777 : } else if(Rname=="HSE") {
6531 0 : atoi[residue_atom[i]]=HIS;
6532 19777 : } else if(Rname=="HSP") {
6533 0 : atoi[residue_atom[i]]=HIP;
6534 19777 : } else if(Rname=="ILE") {
6535 1944 : atoi[residue_atom[i]]=ILE;
6536 17833 : } else if(Rname=="LEU") {
6537 3420 : atoi[residue_atom[i]]=LEU;
6538 14413 : } else if(Rname=="LYS") {
6539 2340 : atoi[residue_atom[i]]=LYS;
6540 12073 : } else if(Rname=="MET") {
6541 1292 : atoi[residue_atom[i]]=MET;
6542 10781 : } else if(Rname=="PHE") {
6543 2268 : atoi[residue_atom[i]]=PHE;
6544 8513 : } else if(Rname=="PRO") {
6545 1683 : atoi[residue_atom[i]]=PRO;
6546 6830 : } else if(Rname=="SER") {
6547 1164 : atoi[residue_atom[i]]=SER;
6548 5666 : } else if(Rname=="THR") {
6549 1106 : atoi[residue_atom[i]]=THR;
6550 4560 : } else if(Rname=="TRP") {
6551 0 : atoi[residue_atom[i]]=TRP;
6552 4560 : } else if(Rname=="TYR") {
6553 1188 : atoi[residue_atom[i]]=TYR;
6554 3372 : } else if(Rname=="VAL") {
6555 2416 : atoi[residue_atom[i]]=VAL;
6556 : }
6557 : // NUCLEIC ACIDS
6558 : // nucleobases are not automatically populated as an additional check on the health of the PDB.
6559 : // RNA - G
6560 956 : else if(Rname=="G") {
6561 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
6562 0 : Aname=="O1P" || Aname=="O2P" ) {
6563 0 : atoi [residue_atom[i]]=BB_PO2;
6564 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6565 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6566 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6567 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
6568 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
6569 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
6570 0 : atoi[residue_atom[i]]=BB_RNA;
6571 0 : } else if( Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
6572 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
6573 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
6574 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
6575 0 : atoi[residue_atom[i]]=BASE_G;
6576 : } else {
6577 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6578 : }
6579 : // RNA - G3
6580 956 : } else if(Rname=="G3") {
6581 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
6582 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
6583 0 : atoi [residue_atom[i]]=BB_PO2;
6584 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6585 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6586 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6587 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
6588 0 : Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
6589 0 : Aname=="H5'2" || Aname=="HO'2" ) {
6590 0 : atoi[residue_atom[i]]=BB_RNA_3;
6591 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
6592 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
6593 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
6594 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
6595 0 : atoi[residue_atom[i]]=BASE_G;
6596 : } else {
6597 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6598 : }
6599 : // RNA - G5
6600 956 : } else if(Rname=="G5") {
6601 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6602 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6603 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6604 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="HO5'" ||
6605 0 : Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
6606 0 : Aname=="H2'1" || Aname=="H5T" ) {
6607 0 : atoi[residue_atom[i]]=BB_RNA_5;
6608 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
6609 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
6610 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
6611 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
6612 0 : atoi[residue_atom[i]]=BASE_G;
6613 : } else {
6614 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6615 : }
6616 : // RNA - GT
6617 956 : } else if(Rname=="GT") {
6618 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
6619 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
6620 0 : atoi [residue_atom[i]]=BB_PO3;
6621 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6622 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6623 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6624 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
6625 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
6626 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
6627 0 : atoi[residue_atom[i]]=BB_RNA;
6628 0 : } else if( Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
6629 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
6630 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
6631 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
6632 0 : atoi[residue_atom[i]]=BASE_G;
6633 : } else {
6634 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6635 : }
6636 : // RNA - U
6637 956 : } else if(Rname=="U") {
6638 754 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
6639 1482 : Aname=="O1P" || Aname=="O2P" ) {
6640 78 : atoi [residue_atom[i]]=BB_PO2;
6641 676 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6642 598 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6643 494 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6644 390 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
6645 312 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
6646 988 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
6647 416 : atoi[residue_atom[i]]=BB_RNA;
6648 260 : } else if( Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
6649 182 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
6650 364 : Aname=="H3" || Aname=="H5" || Aname=="H6") {
6651 286 : atoi[residue_atom[i]]=BASE_U;
6652 : } else {
6653 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6654 : }
6655 : // RNA - U3
6656 176 : } else if(Rname=="U3") {
6657 60 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
6658 118 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
6659 6 : atoi [residue_atom[i]]=BB_PO2;
6660 54 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6661 48 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6662 40 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6663 32 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
6664 26 : Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
6665 78 : Aname=="H5'2" || Aname=="HO'2" ) {
6666 34 : atoi[residue_atom[i]]=BB_RNA_3;
6667 20 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
6668 14 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
6669 28 : Aname=="H3" || Aname=="H5" || Aname=="H6") {
6670 22 : atoi[residue_atom[i]]=BASE_U;
6671 : } else {
6672 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6673 : }
6674 : // RNA - U5
6675 114 : } else if(Rname=="U5") {
6676 108 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6677 96 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6678 80 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6679 64 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="HO5'" ||
6680 48 : Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
6681 156 : Aname=="H2'1" || Aname=="H5T" ) {
6682 68 : atoi[residue_atom[i]]=BB_RNA_5;
6683 40 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
6684 28 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
6685 56 : Aname=="H3" || Aname=="H5" || Aname=="H6") {
6686 44 : atoi[residue_atom[i]]=BASE_U;
6687 : } else {
6688 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6689 : }
6690 : // RNA - UT
6691 2 : } else if(Rname=="UT") {
6692 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
6693 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
6694 0 : atoi [residue_atom[i]]=BB_PO3;
6695 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6696 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6697 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6698 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
6699 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
6700 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
6701 0 : atoi[residue_atom[i]]=BB_RNA;
6702 0 : } else if( Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
6703 0 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
6704 0 : Aname=="H3" || Aname=="H5" || Aname=="H6") {
6705 0 : atoi[residue_atom[i]]=BASE_U;
6706 : } else {
6707 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6708 : }
6709 : // RNA - A
6710 2 : } else if(Rname=="A") {
6711 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
6712 0 : Aname=="O1P" || Aname=="O2P" ) {
6713 0 : atoi [residue_atom[i]]=BB_PO2;
6714 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6715 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6716 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6717 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
6718 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
6719 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
6720 0 : atoi[residue_atom[i]]=BB_RNA;
6721 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
6722 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
6723 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
6724 0 : Aname=="H61" || Aname=="H62" ) {
6725 0 : atoi[residue_atom[i]]=BASE_A;
6726 : } else {
6727 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6728 : }
6729 : // RNA - A3
6730 2 : } else if(Rname=="A3") {
6731 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
6732 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
6733 0 : atoi [residue_atom[i]]=BB_PO2;
6734 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6735 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6736 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6737 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
6738 0 : Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
6739 0 : Aname=="H5'2" || Aname=="HO'2" ) {
6740 0 : atoi[residue_atom[i]]=BB_RNA_3;
6741 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
6742 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
6743 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
6744 0 : Aname=="H61" || Aname=="H62" ) {
6745 0 : atoi[residue_atom[i]]=BASE_A;
6746 : } else {
6747 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6748 : }
6749 : // RNA - A5
6750 2 : } else if(Rname=="A5") {
6751 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6752 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6753 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6754 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="HO5'" ||
6755 0 : Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
6756 0 : Aname=="H2'1" || Aname=="H5T" ) {
6757 0 : atoi[residue_atom[i]]=BB_RNA_5;
6758 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
6759 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
6760 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
6761 0 : Aname=="H61" || Aname=="H62" ) {
6762 0 : atoi[residue_atom[i]]=BASE_A;
6763 : } else {
6764 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6765 : }
6766 : // RNA - AT
6767 2 : } else if(Rname=="AT") {
6768 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
6769 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
6770 0 : atoi [residue_atom[i]]=BB_PO3;
6771 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6772 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6773 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6774 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
6775 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
6776 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
6777 0 : atoi[residue_atom[i]]=BB_RNA;
6778 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
6779 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
6780 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
6781 0 : Aname=="H61" || Aname=="H62" ) {
6782 0 : atoi[residue_atom[i]]=BASE_A;
6783 : } else {
6784 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6785 : }
6786 : // RNA - C
6787 2 : } else if(Rname=="C") {
6788 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
6789 0 : Aname=="O1P" || Aname=="O2P" ) {
6790 0 : atoi [residue_atom[i]]=BB_PO2;
6791 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6792 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6793 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6794 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
6795 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
6796 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
6797 0 : atoi[residue_atom[i]]=BB_RNA;
6798 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
6799 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
6800 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
6801 0 : atoi[residue_atom[i]]=BASE_C;
6802 : } else {
6803 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6804 : }
6805 : // RNA - C3
6806 2 : } else if(Rname=="C3") {
6807 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
6808 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
6809 0 : atoi [residue_atom[i]]=BB_PO2;
6810 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6811 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6812 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6813 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
6814 0 : Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
6815 0 : Aname=="H5'2" || Aname=="HO'2" ) {
6816 0 : atoi[residue_atom[i]]=BB_RNA_3;
6817 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
6818 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
6819 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
6820 0 : atoi[residue_atom[i]]=BASE_C;
6821 : } else {
6822 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6823 : }
6824 : // RNA - C5
6825 2 : } else if(Rname=="C5") {
6826 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6827 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6828 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6829 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="HO5'" ||
6830 0 : Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
6831 0 : Aname=="H2'1" || Aname=="H5T" ) {
6832 0 : atoi[residue_atom[i]]=BB_RNA_5;
6833 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
6834 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
6835 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
6836 0 : atoi[residue_atom[i]]=BASE_C;
6837 : } else {
6838 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6839 : }
6840 : // RNA - CT
6841 2 : } else if(Rname=="CT") {
6842 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
6843 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
6844 0 : atoi [residue_atom[i]]=BB_PO3;
6845 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6846 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
6847 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
6848 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
6849 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
6850 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
6851 0 : atoi[residue_atom[i]]=BB_RNA;
6852 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
6853 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
6854 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
6855 0 : atoi[residue_atom[i]]=BASE_C;
6856 : } else {
6857 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6858 : }
6859 : // DNA - G
6860 2 : } else if(Rname=="DG") {
6861 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
6862 0 : Aname=="O1P" || Aname=="O2P" ) {
6863 0 : atoi [residue_atom[i]]=BB_PO2;
6864 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6865 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
6866 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
6867 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
6868 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
6869 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
6870 0 : atoi[residue_atom[i]]=BB_DNA;
6871 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
6872 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
6873 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
6874 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
6875 0 : atoi[residue_atom[i]]=BASE_G;
6876 : } else {
6877 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6878 : }
6879 : // DNA - G3
6880 2 : } else if(Rname=="DG3") {
6881 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
6882 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
6883 0 : atoi [residue_atom[i]]=BB_PO2;
6884 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6885 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
6886 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
6887 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO3'" ||
6888 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
6889 0 : Aname=="H3T" ) {
6890 0 : atoi[residue_atom[i]]=BB_DNA_3;
6891 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
6892 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
6893 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
6894 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
6895 0 : atoi[residue_atom[i]]=BASE_G;
6896 : } else {
6897 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6898 : }
6899 : // DNA - G5
6900 2 : } else if(Rname=="DG5") {
6901 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6902 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
6903 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
6904 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
6905 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
6906 0 : Aname=="H5T" ) {
6907 0 : atoi[residue_atom[i]]=BB_DNA_5;
6908 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
6909 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
6910 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
6911 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
6912 0 : atoi[residue_atom[i]]=BASE_G;
6913 : } else {
6914 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6915 : }
6916 : // DNA - GT
6917 2 : } else if(Rname=="DGT") {
6918 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
6919 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
6920 0 : atoi [residue_atom[i]]=BB_PO3;
6921 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6922 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
6923 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
6924 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
6925 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
6926 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
6927 0 : atoi[residue_atom[i]]=BB_DNA;
6928 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
6929 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
6930 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
6931 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
6932 0 : atoi[residue_atom[i]]=BASE_G;
6933 : } else {
6934 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6935 : }
6936 : // DNA - T
6937 2 : } else if(Rname=="DT") {
6938 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
6939 0 : Aname=="O1P" || Aname=="O2P" ) {
6940 0 : atoi [residue_atom[i]]=BB_PO2;
6941 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6942 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
6943 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
6944 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
6945 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
6946 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
6947 0 : atoi[residue_atom[i]]=BB_DNA;
6948 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
6949 0 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
6950 0 : Aname=="C7" || Aname=="H3" || Aname=="H6" || Aname=="H71" ||
6951 0 : Aname=="H72" || Aname=="H73" ) {
6952 0 : atoi[residue_atom[i]]=BASE_T;
6953 : } else {
6954 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6955 : }
6956 : // DNA - T3
6957 2 : } else if(Rname=="DT3") {
6958 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
6959 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
6960 0 : atoi [residue_atom[i]]=BB_PO2;
6961 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6962 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
6963 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
6964 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO3'" ||
6965 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
6966 0 : Aname=="H3T" ) {
6967 0 : atoi[residue_atom[i]]=BB_DNA_3;
6968 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
6969 0 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
6970 0 : Aname=="C7" || Aname=="H3" || Aname=="H6" || Aname=="H71" ||
6971 0 : Aname=="H72" || Aname=="H73" ) {
6972 0 : atoi[residue_atom[i]]=BASE_T;
6973 : } else {
6974 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6975 : }
6976 : // DNA - T5
6977 2 : } else if(Rname=="DT5") {
6978 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6979 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
6980 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
6981 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
6982 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
6983 0 : Aname=="H5T" ) {
6984 0 : atoi[residue_atom[i]]=BB_DNA_5;
6985 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
6986 0 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
6987 0 : Aname=="C7" || Aname=="H3" || Aname=="H6" || Aname=="H71" ||
6988 0 : Aname=="H72" || Aname=="H73" ) {
6989 0 : atoi[residue_atom[i]]=BASE_T;
6990 : } else {
6991 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
6992 : }
6993 : // DNA - TT
6994 2 : } else if(Rname=="DTT") {
6995 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
6996 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
6997 0 : atoi [residue_atom[i]]=BB_PO3;
6998 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
6999 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
7000 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
7001 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
7002 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
7003 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
7004 0 : atoi[residue_atom[i]]=BB_DNA;
7005 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
7006 0 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
7007 0 : Aname=="C7" || Aname=="H3" || Aname=="H6" || Aname=="H71" ||
7008 0 : Aname=="H72" || Aname=="H73" ) {
7009 0 : atoi[residue_atom[i]]=BASE_T;
7010 : } else {
7011 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7012 : }
7013 : // DNA - A
7014 2 : } else if(Rname=="DA") {
7015 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
7016 0 : Aname=="O1P" || Aname=="O2P" ) {
7017 0 : atoi [residue_atom[i]]=BB_PO2;
7018 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7019 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
7020 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
7021 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
7022 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
7023 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
7024 0 : atoi[residue_atom[i]]=BB_DNA;
7025 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
7026 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
7027 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
7028 0 : Aname=="H61" || Aname=="H62" ) {
7029 0 : atoi[residue_atom[i]]=BASE_A;
7030 : } else {
7031 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7032 : }
7033 : // DNA - A3
7034 2 : } else if(Rname=="DA3") {
7035 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
7036 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
7037 0 : atoi [residue_atom[i]]=BB_PO2;
7038 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7039 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
7040 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
7041 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO3'" ||
7042 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
7043 0 : Aname=="H3T" ) {
7044 0 : atoi[residue_atom[i]]=BB_DNA_3;
7045 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
7046 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
7047 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
7048 0 : Aname=="H61" || Aname=="H62" ) {
7049 0 : atoi[residue_atom[i]]=BASE_A;
7050 : } else {
7051 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7052 : }
7053 : // DNA - A5
7054 2 : } else if(Rname=="DA5") {
7055 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7056 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
7057 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
7058 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
7059 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
7060 0 : Aname=="H5T" ) {
7061 0 : atoi[residue_atom[i]]=BB_DNA_5;
7062 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
7063 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
7064 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
7065 0 : Aname=="H61" || Aname=="H62" ) {
7066 0 : atoi[residue_atom[i]]=BASE_A;
7067 : } else {
7068 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7069 : }
7070 : // DNA - AT
7071 2 : } else if(Rname=="DAT") {
7072 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
7073 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
7074 0 : atoi [residue_atom[i]]=BB_PO3;
7075 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7076 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
7077 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
7078 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
7079 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
7080 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
7081 0 : atoi[residue_atom[i]]=BB_DNA;
7082 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
7083 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
7084 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
7085 0 : Aname=="H61" || Aname=="H62" ) {
7086 0 : atoi[residue_atom[i]]=BASE_A;
7087 : } else {
7088 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7089 : }
7090 : // DNA - C
7091 2 : } else if(Rname=="DC") {
7092 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
7093 0 : Aname=="O1P" || Aname=="O2P" ) {
7094 0 : atoi [residue_atom[i]]=BB_PO2;
7095 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7096 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
7097 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
7098 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
7099 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
7100 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
7101 0 : atoi[residue_atom[i]]=BB_DNA;
7102 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
7103 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
7104 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
7105 0 : atoi[residue_atom[i]]=BASE_C;
7106 : } else {
7107 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7108 : }
7109 : // DNA - C3
7110 2 : } else if(Rname=="DC3") {
7111 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
7112 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
7113 0 : atoi [residue_atom[i]]=BB_PO2;
7114 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7115 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
7116 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
7117 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO3'" ||
7118 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
7119 0 : Aname=="H3T" ) {
7120 0 : atoi[residue_atom[i]]=BB_DNA_3;
7121 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
7122 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
7123 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
7124 0 : atoi[residue_atom[i]]=BASE_C;
7125 : } else {
7126 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7127 : }
7128 : // DNA - C5
7129 2 : } else if(Rname=="DC5") {
7130 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7131 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
7132 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
7133 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
7134 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
7135 0 : Aname=="H5T" ) {
7136 0 : atoi[residue_atom[i]]=BB_DNA_5;
7137 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
7138 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
7139 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
7140 0 : atoi[residue_atom[i]]=BASE_C;
7141 : } else {
7142 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7143 : }
7144 : // DNA - CT
7145 2 : } else if(Rname=="DCT") {
7146 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
7147 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
7148 0 : atoi [residue_atom[i]]=BB_PO3;
7149 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7150 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
7151 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
7152 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
7153 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
7154 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
7155 0 : atoi[residue_atom[i]]=BB_DNA;
7156 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
7157 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
7158 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
7159 0 : atoi[residue_atom[i]]=BASE_C;
7160 : } else {
7161 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7162 : }
7163 2 : } else if(glyc_type[i] >= 0) {
7164 : // monosaccharide: the bead type was resolved once, from the residue name and
7165 : // from the presence of an N-acetyl group, in getOnebeadMapping()
7166 0 : atoi[residue_atom[i]] = static_cast<unsigned>(glyc_type[i]);
7167 2 : } else if(isUnsupportedGlycan(Rname)) {
7168 0 : error("Residue "+Rname+" is a monosaccharide for which no ONEBEAD parameters are available.");
7169 2 : } else if(ionTypeFromResname(Rname) >= 0) {
7170 : // monoatomic ion: assign its onebead bead type (terms filled in getOnebeadIonparam_sans).
7171 2 : atoi[residue_atom[i]] = obSlot(ionTypeFromResname(Rname));
7172 : } else {
7173 0 : error("Residue not known: "+Rname);
7174 : }
7175 : }
7176 11 : }
7177 :
7178 11 : void SAXS::getOnebeadparam_sansD(const PDB &pdb, const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > ¶meter_vac_D, std::vector<std::vector<long double> > ¶meter_mix_D) {
7179 : // parameter_solv is identical in SAXS/SANS_H/SANS_D since it depends exclusively on param_v. For that reason we kept param_solv only in SAXS and SANS_H.
7180 11 : parameter_mix_D[TRP].push_back(8105.740500119327);
7181 11 : parameter_mix_D[TRP].push_back(-41.785616935469804);
7182 11 : parameter_mix_D[TRP].push_back(-25456.92790554363);
7183 11 : parameter_mix_D[TRP].push_back(-10058.20599969184);
7184 11 : parameter_mix_D[TRP].push_back(86171.76479108425);
7185 11 : parameter_mix_D[TRP].push_back(-83227.63139882773);
7186 11 : parameter_mix_D[TRP].push_back(25121.390436258724);
7187 :
7188 11 : parameter_mix_D[TYR].push_back(6059.530560118732);
7189 11 : parameter_mix_D[TYR].push_back(-24.522695525705736);
7190 11 : parameter_mix_D[TYR].push_back(-17180.858815360847);
7191 11 : parameter_mix_D[TYR].push_back(-5990.1358528219325);
7192 11 : parameter_mix_D[TYR].push_back(52936.46126637543);
7193 11 : parameter_mix_D[TYR].push_back(-50150.0042622683);
7194 11 : parameter_mix_D[TYR].push_back(14914.553672440441);
7195 :
7196 11 : parameter_mix_D[PHE].push_back(5563.404880119222);
7197 11 : parameter_mix_D[PHE].push_back(-33.609784645922794);
7198 11 : parameter_mix_D[PHE].push_back(-14576.935030777448);
7199 11 : parameter_mix_D[PHE].push_back(-5759.170105553782);
7200 11 : parameter_mix_D[PHE].push_back(43316.895956549866);
7201 11 : parameter_mix_D[PHE].push_back(-39106.58694570862);
7202 11 : parameter_mix_D[PHE].push_back(11143.375742877468);
7203 :
7204 11 : parameter_mix_D[HIP].push_back(3981.7108801192553);
7205 11 : parameter_mix_D[HIP].push_back(-23.788371565946427);
7206 11 : parameter_mix_D[HIP].push_back(-9471.73953776056);
7207 11 : parameter_mix_D[HIP].push_back(-3690.3981577198365);
7208 11 : parameter_mix_D[HIP].push_back(26365.958584217453);
7209 11 : parameter_mix_D[HIP].push_back(-23067.58974902849);
7210 11 : parameter_mix_D[HIP].push_back(6390.507451097114);
7211 :
7212 11 : parameter_mix_D[ARG].push_back(6279.489359881259);
7213 11 : parameter_mix_D[ARG].push_back(1.2061878338083583);
7214 11 : parameter_mix_D[ARG].push_back(-20305.413937989913);
7215 11 : parameter_mix_D[ARG].push_back(-5621.666335222669);
7216 11 : parameter_mix_D[ARG].push_back(67341.96785520067);
7217 11 : parameter_mix_D[ARG].push_back(-68849.15464591733);
7218 11 : parameter_mix_D[ARG].push_back(21773.0630363882);
7219 :
7220 11 : parameter_mix_D[LYS].push_back(5434.487400119193);
7221 11 : parameter_mix_D[LYS].push_back(-29.32356328987909);
7222 11 : parameter_mix_D[LYS].push_back(-14363.66155749977);
7223 11 : parameter_mix_D[LYS].push_back(-5650.383128516514);
7224 11 : parameter_mix_D[LYS].push_back(44573.73888236887);
7225 11 : parameter_mix_D[LYS].push_back(-41515.980945300485);
7226 11 : parameter_mix_D[LYS].push_back(12181.965046747513);
7227 :
7228 11 : parameter_mix_D[CYS].push_back(1519.4030001192032);
7229 11 : parameter_mix_D[CYS].push_back(-3.564386334921097);
7230 11 : parameter_mix_D[CYS].push_back(-2275.813167459516);
7231 11 : parameter_mix_D[CYS].push_back(-409.54431591328125);
7232 11 : parameter_mix_D[CYS].push_back(2969.5412742839258);
7233 11 : parameter_mix_D[CYS].push_back(-1798.3157146799638);
7234 11 : parameter_mix_D[CYS].push_back(314.568167888235);
7235 :
7236 11 : parameter_mix_D[CYX].push_back(1310.696400119220);
7237 11 : parameter_mix_D[CYX].push_back(-2.919852579787);
7238 11 : parameter_mix_D[CYX].push_back(-1902.283026713150);
7239 11 : parameter_mix_D[CYX].push_back(-340.431267947190);
7240 11 : parameter_mix_D[CYX].push_back(2480.025274590502);
7241 11 : parameter_mix_D[CYX].push_back(-1529.188197179144);
7242 11 : parameter_mix_D[CYX].push_back(278.926068515295);
7243 :
7244 11 : parameter_mix_D[ASP].push_back(1861.6998401191709);
7245 11 : parameter_mix_D[ASP].push_back(-5.349780637260551);
7246 11 : parameter_mix_D[ASP].push_back(-2960.36741510377);
7247 11 : parameter_mix_D[ASP].push_back(-621.8270745040523);
7248 11 : parameter_mix_D[ASP].push_back(4334.798300452934);
7249 11 : parameter_mix_D[ASP].push_back(-2776.8560521554878);
7250 11 : parameter_mix_D[ASP].push_back(527.9777182094936);
7251 :
7252 11 : parameter_mix_D[GLU].push_back(2861.6017201192253);
7253 11 : parameter_mix_D[GLU].push_back(-13.146456903921809);
7254 11 : parameter_mix_D[GLU].push_back(-5393.408563875243);
7255 11 : parameter_mix_D[GLU].push_back(-1646.460570818364);
7256 11 : parameter_mix_D[GLU].push_back(10884.544923253858);
7257 11 : parameter_mix_D[GLU].push_back(-8159.923373048856);
7258 11 : parameter_mix_D[GLU].push_back(1914.545660397314);
7259 :
7260 11 : parameter_mix_D[ILE].push_back(4288.585540119189);
7261 11 : parameter_mix_D[ILE].push_back(-19.937215352880365);
7262 11 : parameter_mix_D[ILE].push_back(-8324.540144463375);
7263 11 : parameter_mix_D[ILE].push_back(-2431.835931316717);
7264 11 : parameter_mix_D[ILE].push_back(16079.9912986194);
7265 11 : parameter_mix_D[ILE].push_back(-11637.693060394462);
7266 11 : parameter_mix_D[ILE].push_back(2600.8258068480495);
7267 :
7268 11 : parameter_mix_D[LEU].push_back(4288.585540119186);
7269 11 : parameter_mix_D[LEU].push_back(-21.50343599461759);
7270 11 : parameter_mix_D[LEU].push_back(-8479.703435720274);
7271 11 : parameter_mix_D[LEU].push_back(-2647.8693829269596);
7272 11 : parameter_mix_D[LEU].push_back(17297.18115838578);
7273 11 : parameter_mix_D[LEU].push_back(-12826.972408323161);
7274 11 : parameter_mix_D[LEU].push_back(2953.1262521615645);
7275 :
7276 11 : parameter_mix_D[MET].push_back(3561.6276801191552);
7277 11 : parameter_mix_D[MET].push_back(-22.19323392975885);
7278 11 : parameter_mix_D[MET].push_back(-8348.33907053846);
7279 11 : parameter_mix_D[MET].push_back(-3323.053272414289);
7280 11 : parameter_mix_D[MET].push_back(23153.238909304255);
7281 11 : parameter_mix_D[MET].push_back(-20091.960440908682);
7282 11 : parameter_mix_D[MET].push_back(5518.759669687693);
7283 :
7284 11 : parameter_mix_D[ASN].push_back(2326.5396001192003);
7285 11 : parameter_mix_D[ASN].push_back(-8.634908921289112);
7286 11 : parameter_mix_D[ASN].push_back(-4057.4552636749636);
7287 11 : parameter_mix_D[ASN].push_back(-1032.743130124821);
7288 11 : parameter_mix_D[ASN].push_back(6957.141592429445);
7289 11 : parameter_mix_D[ASN].push_back(-4808.265318722317);
7290 11 : parameter_mix_D[ASN].push_back(1016.3944815533755);
7291 :
7292 11 : parameter_mix_D[PRO].push_back(2471.1663601191985);
7293 11 : parameter_mix_D[PRO].push_back(-6.360795284260088);
7294 11 : parameter_mix_D[PRO].push_back(-3825.4533158429153);
7295 11 : parameter_mix_D[PRO].push_back(-728.7164844824666);
7296 11 : parameter_mix_D[PRO].push_back(5195.036303827973);
7297 11 : parameter_mix_D[PRO].push_back(-3183.733716480742);
7298 11 : parameter_mix_D[PRO].push_back(563.2376162754107);
7299 :
7300 11 : parameter_mix_D[GLN].push_back(3431.669280119236);
7301 11 : parameter_mix_D[GLN].push_back(-19.412747205646166);
7302 11 : parameter_mix_D[GLN].push_back(-7298.017973002134);
7303 11 : parameter_mix_D[GLN].push_back(-2659.3014182337706);
7304 11 : parameter_mix_D[GLN].push_back(17890.76595805173);
7305 11 : parameter_mix_D[GLN].push_back(-14684.603067192957);
7306 11 : parameter_mix_D[GLN].push_back(3814.338335151394);
7307 :
7308 11 : parameter_mix_D[SER].push_back(1423.885200119192);
7309 11 : parameter_mix_D[SER].push_back(-2.586428606204385);
7310 11 : parameter_mix_D[SER].push_back(-1966.7369507188134);
7311 11 : parameter_mix_D[SER].push_back(-289.17277383434106);
7312 11 : parameter_mix_D[SER].push_back(2209.478296043199);
7313 11 : parameter_mix_D[SER].push_back(-1216.1521614944);
7314 11 : parameter_mix_D[SER].push_back(177.0615931546754);
7315 :
7316 11 : parameter_mix_D[THR].push_back(2311.2364801191825);
7317 11 : parameter_mix_D[THR].push_back(-6.258071321531929);
7318 11 : parameter_mix_D[THR].push_back(-3656.295629081312);
7319 11 : parameter_mix_D[THR].push_back(-716.4013890357804);
7320 11 : parameter_mix_D[THR].push_back(5071.656317108832);
7321 11 : parameter_mix_D[THR].push_back(-3125.8076789667816);
7322 11 : parameter_mix_D[THR].push_back(555.9775741081131);
7323 :
7324 11 : parameter_mix_D[VAL].push_back(3041.128320119224);
7325 11 : parameter_mix_D[VAL].push_back(-9.314034190716423);
7326 11 : parameter_mix_D[VAL].push_back(-5075.684780220629);
7327 11 : parameter_mix_D[VAL].push_back(-1070.7083380665008);
7328 11 : parameter_mix_D[VAL].push_back(7455.654515006894);
7329 11 : parameter_mix_D[VAL].push_back(-4701.19187164774);
7330 11 : parameter_mix_D[VAL].push_back(863.4906179388547);
7331 :
7332 11 : parameter_mix_D[ALA].push_back(1187.65300011922);
7333 11 : parameter_mix_D[ALA].push_back(-1.7011187932116822);
7334 11 : parameter_mix_D[ALA].push_back(-1521.0113615359212);
7335 11 : parameter_mix_D[ALA].push_back(-187.93745840575576);
7336 11 : parameter_mix_D[ALA].push_back(1514.6745873304449);
7337 11 : parameter_mix_D[ALA].push_back(-775.3890045113897);
7338 11 : parameter_mix_D[ALA].push_back(96.41428177656567);
7339 :
7340 11 : parameter_mix_D[GLY].push_back(581.6349001192067);
7341 11 : parameter_mix_D[GLY].push_back(-0.5877833598361395);
7342 11 : parameter_mix_D[GLY].push_back(-640.0421286186524);
7343 11 : parameter_mix_D[GLY].push_back(-64.58515074152534);
7344 11 : parameter_mix_D[GLY].push_back(551.9509853583185);
7345 11 : parameter_mix_D[GLY].push_back(-264.1522021146006);
7346 11 : parameter_mix_D[GLY].push_back(28.36986478439301);
7347 :
7348 11 : parameter_mix_D[HIS].push_back(3648.812220119277);
7349 11 : parameter_mix_D[HIS].push_back(-22.703075403555548);
7350 11 : parameter_mix_D[HIS].push_back(-8260.235189881098);
7351 11 : parameter_mix_D[HIS].push_back(-3190.3176569039265);
7352 11 : parameter_mix_D[HIS].push_back(21589.074332364213);
7353 11 : parameter_mix_D[HIS].push_back(-18108.640157613925);
7354 11 : parameter_mix_D[HIS].push_back(4801.237639634437);
7355 :
7356 11 : parameter_vac_D[TRP].push_back(270.43802511921314);
7357 11 : parameter_vac_D[TRP].push_back(-2.196022464340772);
7358 11 : parameter_vac_D[TRP].push_back(-780.9546710244318);
7359 11 : parameter_vac_D[TRP].push_back(-371.1573508312626);
7360 11 : parameter_vac_D[TRP].push_back(2668.7678731652445);
7361 11 : parameter_vac_D[TRP].push_back(-2478.2920954223678);
7362 11 : parameter_vac_D[TRP].push_back(722.3731624901676);
7363 :
7364 11 : parameter_vac_D[TYR].push_back(198.471744119211);
7365 11 : parameter_vac_D[TYR].push_back(-1.236792846228289);
7366 11 : parameter_vac_D[TYR].push_back(-508.0448711054671);
7367 11 : parameter_vac_D[TYR].push_back(-210.55908129481216);
7368 11 : parameter_vac_D[TYR].push_back(1558.3884734212413);
7369 11 : parameter_vac_D[TYR].push_back(-1418.36319255665);
7370 11 : parameter_vac_D[TYR].push_back(407.21567613893296);
7371 :
7372 11 : parameter_vac_D[PHE].push_back(182.46606411921402);
7373 11 : parameter_vac_D[PHE].push_back(-1.2708008333861447);
7374 11 : parameter_vac_D[PHE].push_back(-424.50905926426054);
7375 11 : parameter_vac_D[PHE].push_back(-177.97207825696387);
7376 11 : parameter_vac_D[PHE].push_back(1180.839971941918);
7377 11 : parameter_vac_D[PHE].push_back(-1004.004765231886);
7378 11 : parameter_vac_D[PHE].push_back(269.34384064610344);
7379 :
7380 11 : parameter_vac_D[HIP].push_back(161.95107611920753);
7381 11 : parameter_vac_D[HIP].push_back(-0.9661246983835707);
7382 11 : parameter_vac_D[HIP].push_back(-332.04673226423995);
7383 11 : parameter_vac_D[HIP].push_back(-125.41755194926544);
7384 11 : parameter_vac_D[HIP].push_back(808.705672166199);
7385 11 : parameter_vac_D[HIP].push_back(-648.8340711218191);
7386 11 : parameter_vac_D[HIP].push_back(163.71251277400307);
7387 :
7388 11 : parameter_vac_D[ARG].push_back(289.0340011192071);
7389 11 : parameter_vac_D[ARG].push_back(-1.4195753436279361);
7390 11 : parameter_vac_D[ARG].push_back(-836.3864005546434);
7391 11 : parameter_vac_D[ARG].push_back(-346.7081039129904);
7392 11 : parameter_vac_D[ARG].push_back(2922.003491580559);
7393 11 : parameter_vac_D[ARG].push_back(-2864.816533173085);
7394 11 : parameter_vac_D[ARG].push_back(877.9525045072293);
7395 :
7396 11 : parameter_vac_D[LYS].push_back(228.64464111920753);
7397 11 : parameter_vac_D[LYS].push_back(-1.686580749083617);
7398 11 : parameter_vac_D[LYS].push_back(-544.8870548339771);
7399 11 : parameter_vac_D[LYS].push_back(-252.11087773186324);
7400 11 : parameter_vac_D[LYS].push_back(1693.784850493428);
7401 11 : parameter_vac_D[LYS].push_back(-1514.2375008160348);
7402 11 : parameter_vac_D[LYS].push_back(427.0713155512121);
7403 :
7404 11 : parameter_vac_D[CYS].push_back(50.836900116324315);
7405 11 : parameter_vac_D[CYS].push_back(-0.040204572899665315);
7406 11 : parameter_vac_D[CYS].push_back(-55.592868149339424);
7407 11 : parameter_vac_D[CYS].push_back(-4.341359624977117);
7408 11 : parameter_vac_D[CYS].push_back(41.55290573185214);
7409 11 : parameter_vac_D[CYS].push_back(-17.248208429078456);
7410 11 : parameter_vac_D[CYS].push_back(1.0736187172140528);
7411 :
7412 11 : parameter_vac_D[CYX].push_back(41.770369115535);
7413 11 : parameter_vac_D[CYX].push_back(-0.019277246931);
7414 11 : parameter_vac_D[CYX].push_back(-40.006821199463);
7415 11 : parameter_vac_D[CYX].push_back(-2.056736901533);
7416 11 : parameter_vac_D[CYX].push_back(23.707430747544);
7417 11 : parameter_vac_D[CYX].push_back(-8.010813092204);
7418 11 : parameter_vac_D[CYX].push_back(-0.023482540763);
7419 :
7420 11 : parameter_vac_D[ASP].push_back(64.12806411920792);
7421 11 : parameter_vac_D[ASP].push_back(-0.08245818875074411);
7422 11 : parameter_vac_D[ASP].push_back(-78.95500211069523);
7423 11 : parameter_vac_D[ASP].push_back(-9.030157332821238);
7424 11 : parameter_vac_D[ASP].push_back(74.72033164806712);
7425 11 : parameter_vac_D[ASP].push_back(-36.71042192737952);
7426 11 : parameter_vac_D[ASP].push_back(4.0989206257493676);
7427 :
7428 11 : parameter_vac_D[GLU].push_back(100.14004911920799);
7429 11 : parameter_vac_D[GLU].push_back(-0.28685123265362006);
7430 11 : parameter_vac_D[GLU].push_back(-152.44619103423773);
7431 11 : parameter_vac_D[GLU].push_back(-32.99432901288321);
7432 11 : parameter_vac_D[GLU].push_back(225.5853175183811);
7433 11 : parameter_vac_D[GLU].push_back(-144.8489352831419);
7434 11 : parameter_vac_D[GLU].push_back(27.49692658880534);
7435 :
7436 11 : parameter_vac_D[ILE].push_back(165.04540911921134);
7437 11 : parameter_vac_D[ILE].push_back(-0.5061553029227089);
7438 11 : parameter_vac_D[ILE].push_back(-275.1890586090823);
7439 11 : parameter_vac_D[ILE].push_back(-57.288063177375356);
7440 11 : parameter_vac_D[ILE].push_back(398.9780357099449);
7441 11 : parameter_vac_D[ILE].push_back(-245.42678814428692);
7442 11 : parameter_vac_D[ILE].push_back(42.72941025472001);
7443 :
7444 11 : parameter_vac_D[LEU].push_back(165.04540911921134);
7445 11 : parameter_vac_D[LEU].push_back(-0.580034983510499);
7446 11 : parameter_vac_D[LEU].push_back(-281.30910057877514);
7447 11 : parameter_vac_D[LEU].push_back(-66.19427345166183);
7448 11 : parameter_vac_D[LEU].push_back(445.19214155995115);
7449 11 : parameter_vac_D[LEU].push_back(-287.0653610399624);
7450 11 : parameter_vac_D[LEU].push_back(53.86626261066706);
7451 :
7452 11 : parameter_vac_D[MET].push_back(123.83238411920684);
7453 11 : parameter_vac_D[MET].push_back(-0.7698672022751385);
7454 11 : parameter_vac_D[MET].push_back(-251.2481622173618);
7455 11 : parameter_vac_D[MET].push_back(-100.67742019193848);
7456 11 : parameter_vac_D[MET].push_back(641.1563254731632);
7457 11 : parameter_vac_D[MET].push_back(-524.8742634212379);
7458 11 : parameter_vac_D[MET].push_back(135.36487813767542);
7459 :
7460 11 : parameter_vac_D[ASN].push_back(94.12880411921148);
7461 11 : parameter_vac_D[ASN].push_back(-0.22986194121078912);
7462 11 : parameter_vac_D[ASN].push_back(-138.78769705028003);
7463 11 : parameter_vac_D[ASN].push_back(-25.896846049402594);
7464 11 : parameter_vac_D[ASN].push_back(184.55609781654326);
7465 11 : parameter_vac_D[ASN].push_back(-110.14043851975404);
7466 11 : parameter_vac_D[ASN].push_back(18.388834098004153);
7467 :
7468 11 : parameter_vac_D[PRO].push_back(90.51619611920745);
7469 11 : parameter_vac_D[PRO].push_back(-0.0977238494110807);
7470 11 : parameter_vac_D[PRO].push_back(-109.43531311067846);
7471 11 : parameter_vac_D[PRO].push_back(-10.592981104983805);
7472 11 : parameter_vac_D[PRO].push_back(93.64863466237733);
7473 11 : parameter_vac_D[PRO].push_back(-42.348197720920865);
7474 11 : parameter_vac_D[PRO].push_back(3.5854078482704574);
7475 :
7476 11 : parameter_vac_D[GLN].push_back(136.91340111920806);
7477 11 : parameter_vac_D[GLN].push_back(-0.7259026842220699);
7478 11 : parameter_vac_D[GLN].push_back(-257.0347011897067);
7479 11 : parameter_vac_D[GLN].push_back(-89.99600255417684);
7480 11 : parameter_vac_D[GLN].push_back(570.3890595917421);
7481 11 : parameter_vac_D[GLN].push_back(-438.8977029769549);
7482 11 : parameter_vac_D[GLN].push_back(105.48846039376491);
7483 :
7484 11 : parameter_vac_D[SER].push_back(55.20490011583253);
7485 11 : parameter_vac_D[SER].push_back(-0.038078030710377984);
7486 11 : parameter_vac_D[SER].push_back(-58.79085960838952);
7487 11 : parameter_vac_D[SER].push_back(-4.067364063406562);
7488 11 : parameter_vac_D[SER].push_back(41.319899403658475);
7489 11 : parameter_vac_D[SER].push_back(-15.865682241288962);
7490 11 : parameter_vac_D[SER].push_back(0.5028409006168431);
7491 :
7492 11 : parameter_vac_D[THR].push_back(88.90604111920842);
7493 11 : parameter_vac_D[THR].push_back(-0.11566717587697625);
7494 11 : parameter_vac_D[THR].push_back(-114.4541243837681);
7495 11 : parameter_vac_D[THR].push_back(-12.541537413808342);
7496 11 : parameter_vac_D[THR].push_back(106.4974738790947);
7497 11 : parameter_vac_D[THR].push_back(-50.15009912825225);
7498 11 : parameter_vac_D[THR].push_back(4.719349514074467);
7499 :
7500 11 : parameter_vac_D[VAL].push_back(117.67910411920792);
7501 11 : parameter_vac_D[VAL].push_back(-0.18187311248567883);
7502 11 : parameter_vac_D[VAL].push_back(-162.8697844894754);
7503 11 : parameter_vac_D[VAL].push_back(-19.769248288711825);
7504 11 : parameter_vac_D[VAL].push_back(162.59270939168965);
7505 11 : parameter_vac_D[VAL].push_back(-79.37261506441627);
7506 11 : parameter_vac_D[VAL].push_back(8.230771959393175);
7507 :
7508 11 : parameter_vac_D[ALA].push_back(46.92250011448002);
7509 11 : parameter_vac_D[ALA].push_back(-0.020339064649444412);
7510 11 : parameter_vac_D[ALA].push_back(-44.41584945233503);
7511 11 : parameter_vac_D[ALA].push_back(-2.1483754537886113);
7512 11 : parameter_vac_D[ALA].push_back(25.713667829058785);
7513 11 : parameter_vac_D[ALA].push_back(-8.222782061575268);
7514 11 : parameter_vac_D[ALA].push_back(-0.2521732728817875);
7515 :
7516 11 : parameter_vac_D[GLY].push_back(23.532201119209795);
7517 11 : parameter_vac_D[GLY].push_back(-0.00628609590047614);
7518 11 : parameter_vac_D[GLY].push_back(-17.28421910139733);
7519 11 : parameter_vac_D[GLY].push_back(-0.6641226821159686);
7520 11 : parameter_vac_D[GLY].push_back(8.536119110048007);
7521 11 : parameter_vac_D[GLY].push_back(-2.5438638688361466);
7522 11 : parameter_vac_D[GLY].push_back(-0.11165675928832643);
7523 :
7524 11 : parameter_vac_D[HIS].push_back(145.41948111920982);
7525 11 : parameter_vac_D[HIS].push_back(-0.8548328183368781);
7526 11 : parameter_vac_D[HIS].push_back(-290.8653238004162);
7527 11 : parameter_vac_D[HIS].push_back(-107.85375269366395);
7528 11 : parameter_vac_D[HIS].push_back(685.7025818759361);
7529 11 : parameter_vac_D[HIS].push_back(-538.2592043545858);
7530 11 : parameter_vac_D[HIS].push_back(132.17357375729733);
7531 :
7532 : // NUCLEIC ACIDS
7533 11 : parameter_mix_D[BB_PO3].push_back(223.2671801192072);
7534 11 : parameter_mix_D[BB_PO3].push_back(-0.14452515213607267);
7535 11 : parameter_mix_D[BB_PO3].push_back(-219.64134852678032);
7536 11 : parameter_mix_D[BB_PO3].push_back(-15.527993497328728);
7537 11 : parameter_mix_D[BB_PO3].push_back(153.27197635784856);
7538 11 : parameter_mix_D[BB_PO3].push_back(-61.17793915482464);
7539 11 : parameter_mix_D[BB_PO3].push_back(2.92608540200577);
7540 :
7541 11 : parameter_mix_D[BB_PO2].push_back(80.12660011920252);
7542 11 : parameter_mix_D[BB_PO2].push_back(-0.02788855519820236);
7543 11 : parameter_mix_D[BB_PO2].push_back(-60.53219491822279);
7544 11 : parameter_mix_D[BB_PO2].push_back(-2.9768829034096806);
7545 11 : parameter_mix_D[BB_PO2].push_back(33.30645116638123);
7546 11 : parameter_mix_D[BB_PO2].push_back(-11.601573219761375);
7547 11 : parameter_mix_D[BB_PO2].push_back(0.12551046492022438);
7548 :
7549 11 : parameter_mix_D[BB_DNA].push_back(2835.3195201193003);
7550 11 : parameter_mix_D[BB_DNA].push_back(-7.954301723608173);
7551 11 : parameter_mix_D[BB_DNA].push_back(-4509.325563460958);
7552 11 : parameter_mix_D[BB_DNA].push_back(-909.1870692311344);
7553 11 : parameter_mix_D[BB_DNA].push_back(6375.156903893768);
7554 11 : parameter_mix_D[BB_DNA].push_back(-3956.4787847570715);
7555 11 : parameter_mix_D[BB_DNA].push_back(708.9872879613656);
7556 :
7557 11 : parameter_mix_D[BB_DNA_5].push_back(3136.73358011921);
7558 11 : parameter_mix_D[BB_DNA_5].push_back(-10.023435855160427);
7559 11 : parameter_mix_D[BB_DNA_5].push_back(-5208.921666368173);
7560 11 : parameter_mix_D[BB_DNA_5].push_back(-1160.4403539440214);
7561 11 : parameter_mix_D[BB_DNA_5].push_back(7962.598421448727);
7562 11 : parameter_mix_D[BB_DNA_5].push_back(-5149.059857691847);
7563 11 : parameter_mix_D[BB_DNA_5].push_back(984.5217027570121);
7564 :
7565 11 : parameter_mix_D[BB_DNA_3].push_back(3136.73358011921);
7566 11 : parameter_mix_D[BB_DNA_3].push_back(-9.618834865806274);
7567 11 : parameter_mix_D[BB_DNA_3].push_back(-5164.249220443828);
7568 11 : parameter_mix_D[BB_DNA_3].push_back(-1103.2721475326382);
7569 11 : parameter_mix_D[BB_DNA_3].push_back(7633.46089052312);
7570 11 : parameter_mix_D[BB_DNA_3].push_back(-4826.171688395644);
7571 11 : parameter_mix_D[BB_DNA_3].push_back(888.1820863683546);
7572 :
7573 11 : parameter_mix_D[BB_RNA].push_back(3192.5955601188807);
7574 11 : parameter_mix_D[BB_RNA].push_back(-11.475781582628308);
7575 11 : parameter_mix_D[BB_RNA].push_back(-5486.264576931735);
7576 11 : parameter_mix_D[BB_RNA].push_back(-1344.2878288415961);
7577 11 : parameter_mix_D[BB_RNA].push_back(9035.26109892441);
7578 11 : parameter_mix_D[BB_RNA].push_back(-6068.471909763036);
7579 11 : parameter_mix_D[BB_RNA].push_back(1226.3696076463866);
7580 :
7581 11 : parameter_mix_D[BB_RNA_5].push_back(3512.1630401192215);
7582 11 : parameter_mix_D[BB_RNA_5].push_back(-14.191020069433975);
7583 11 : parameter_mix_D[BB_RNA_5].push_back(-6293.687102187508);
7584 11 : parameter_mix_D[BB_RNA_5].push_back(-1689.3688494490984);
7585 11 : parameter_mix_D[BB_RNA_5].push_back(11193.448566821942);
7586 11 : parameter_mix_D[BB_RNA_5].push_back(-7806.9064399949375);
7587 11 : parameter_mix_D[BB_RNA_5].push_back(1662.4594983069844);
7588 :
7589 11 : parameter_mix_D[BB_RNA_3].push_back(3512.1630401192215);
7590 11 : parameter_mix_D[BB_RNA_3].push_back(-12.978118135595812);
7591 11 : parameter_mix_D[BB_RNA_3].push_back(-6149.290195451877);
7592 11 : parameter_mix_D[BB_RNA_3].push_back(-1515.8309761505627);
7593 11 : parameter_mix_D[BB_RNA_3].push_back(10176.605450440278);
7594 11 : parameter_mix_D[BB_RNA_3].push_back(-6813.250569884159);
7595 11 : parameter_mix_D[BB_RNA_3].push_back(1366.823518955858);
7596 :
7597 11 : parameter_mix_D[BASE_A].push_back(2464.736500119229);
7598 11 : parameter_mix_D[BASE_A].push_back(-12.127452038444783);
7599 11 : parameter_mix_D[BASE_A].push_back(-4710.661256689607);
7600 11 : parameter_mix_D[BASE_A].push_back(-1462.6964141954452);
7601 11 : parameter_mix_D[BASE_A].push_back(9451.725575888277);
7602 11 : parameter_mix_D[BASE_A].push_back(-6883.018479948857);
7603 11 : parameter_mix_D[BASE_A].push_back(1540.1526599737797);
7604 :
7605 11 : parameter_mix_D[BASE_C].push_back(1797.2697601191685);
7606 11 : parameter_mix_D[BASE_C].push_back(-5.963855532295215);
7607 11 : parameter_mix_D[BASE_C].push_back(-2955.077717756034);
7608 11 : parameter_mix_D[BASE_C].push_back(-689.4543508746372);
7609 11 : parameter_mix_D[BASE_C].push_back(4665.914740532565);
7610 11 : parameter_mix_D[BASE_C].push_back(-3051.4605913706982);
7611 11 : parameter_mix_D[BASE_C].push_back(590.2201952719585);
7612 :
7613 11 : parameter_mix_D[BASE_G].push_back(2804.271480119049);
7614 11 : parameter_mix_D[BASE_G].push_back(-16.928072935469974);
7615 11 : parameter_mix_D[BASE_G].push_back(-5989.82519987899);
7616 11 : parameter_mix_D[BASE_G].push_back(-2275.490326521775);
7617 11 : parameter_mix_D[BASE_G].push_back(15007.832401865428);
7618 11 : parameter_mix_D[BASE_G].push_back(-12287.520690325606);
7619 11 : parameter_mix_D[BASE_G].push_back(3172.98306575258);
7620 :
7621 11 : parameter_mix_D[BASE_T].push_back(2545.0860001192113);
7622 11 : parameter_mix_D[BASE_T].push_back(-10.975141620541738);
7623 11 : parameter_mix_D[BASE_T].push_back(-4636.058358764447);
7624 11 : parameter_mix_D[BASE_T].push_back(-1340.3746388296138);
7625 11 : parameter_mix_D[BASE_T].push_back(8850.604320505428);
7626 11 : parameter_mix_D[BASE_T].push_back(-6421.852532013674);
7627 11 : parameter_mix_D[BASE_T].push_back(1443.371517335904);
7628 :
7629 11 : parameter_mix_D[BASE_U].push_back(1608.7389001192062);
7630 11 : parameter_mix_D[BASE_U].push_back(-3.9816849036181434);
7631 11 : parameter_mix_D[BASE_U].push_back(-2411.056432130769);
7632 11 : parameter_mix_D[BASE_U].push_back(-451.8236361945487);
7633 11 : parameter_mix_D[BASE_U].push_back(3220.4418252803644);
7634 11 : parameter_mix_D[BASE_U].push_back(-1944.2515577994325);
7635 11 : parameter_mix_D[BASE_U].push_back(332.9259542628691);
7636 :
7637 11 : parameter_vac_D[BB_PO3].push_back(8.508889119209273);
7638 11 : parameter_vac_D[BB_PO3].push_back(-0.0010408625482164885);
7639 11 : parameter_vac_D[BB_PO3].push_back(-5.656130990440752);
7640 11 : parameter_vac_D[BB_PO3].push_back(-0.10748040057053611);
7641 11 : parameter_vac_D[BB_PO3].push_back(2.1441246977168227);
7642 11 : parameter_vac_D[BB_PO3].push_back(-0.3967083127147655);
7643 11 : parameter_vac_D[BB_PO3].push_back(-0.10110003105909898);
7644 :
7645 11 : parameter_vac_D[BB_PO2].push_back(2.7889001116093284);
7646 11 : parameter_vac_D[BB_PO2].push_back(-0.00011178884266113128);
7647 11 : parameter_vac_D[BB_PO2].push_back(-1.1702605818380654);
7648 11 : parameter_vac_D[BB_PO2].push_back(-0.011278044036819927);
7649 11 : parameter_vac_D[BB_PO2].push_back(0.3214006584089024);
7650 11 : parameter_vac_D[BB_PO2].push_back(-0.04097165983591666);
7651 11 : parameter_vac_D[BB_PO2].push_back(-0.017525098100539684);
7652 :
7653 11 : parameter_vac_D[BB_DNA].push_back(94.75075611920529);
7654 11 : parameter_vac_D[BB_DNA].push_back(-0.13973533952241124);
7655 11 : parameter_vac_D[BB_DNA].push_back(-123.45402430039046);
7656 11 : parameter_vac_D[BB_DNA].push_back(-15.19494522082691);
7657 11 : parameter_vac_D[BB_DNA].push_back(123.34749914811465);
7658 11 : parameter_vac_D[BB_DNA].push_back(-61.038507985345504);
7659 11 : parameter_vac_D[BB_DNA].push_back(6.601587478585944);
7660 :
7661 11 : parameter_vac_D[BB_DNA_5].push_back(108.18080111920679);
7662 11 : parameter_vac_D[BB_DNA_5].push_back(-0.2055953690887981);
7663 11 : parameter_vac_D[BB_DNA_5].push_back(-150.7924892157235);
7664 11 : parameter_vac_D[BB_DNA_5].push_back(-22.700459516383198);
7665 11 : parameter_vac_D[BB_DNA_5].push_back(172.2599851655527);
7666 11 : parameter_vac_D[BB_DNA_5].push_back(-93.4983124807692);
7667 11 : parameter_vac_D[BB_DNA_5].push_back(12.867661230942868);
7668 :
7669 11 : parameter_vac_D[BB_DNA_3].push_back(108.18080111920537);
7670 11 : parameter_vac_D[BB_DNA_3].push_back(-0.18263717534168372);
7671 11 : parameter_vac_D[BB_DNA_3].push_back(-148.5918817744255);
7672 11 : parameter_vac_D[BB_DNA_3].push_back(-19.90799847398835);
7673 11 : parameter_vac_D[BB_DNA_3].push_back(157.55184203379557);
7674 11 : parameter_vac_D[BB_DNA_3].push_back(-80.28471270058103);
7675 11 : parameter_vac_D[BB_DNA_3].push_back(9.313712500298278);
7676 :
7677 11 : parameter_vac_D[BB_RNA].push_back(106.37859611922117);
7678 11 : parameter_vac_D[BB_RNA].push_back(-0.2380766148121975);
7679 11 : parameter_vac_D[BB_RNA].push_back(-153.74131338570024);
7680 11 : parameter_vac_D[BB_RNA].push_back(-26.415436217574932);
7681 11 : parameter_vac_D[BB_RNA].push_back(191.90585451112776);
7682 11 : parameter_vac_D[BB_RNA].push_back(-109.61737794316868);
7683 11 : parameter_vac_D[BB_RNA].push_back(16.663804191332204);
7684 :
7685 11 : parameter_vac_D[BB_RNA_5].push_back(120.58236111920618);
7686 11 : parameter_vac_D[BB_RNA_5].push_back(-0.340258533619014);
7687 11 : parameter_vac_D[BB_RNA_5].push_back(-186.08333929996334);
7688 11 : parameter_vac_D[BB_RNA_5].push_back(-38.493337147644795);
7689 11 : parameter_vac_D[BB_RNA_5].push_back(266.2262415641144);
7690 11 : parameter_vac_D[BB_RNA_5].push_back(-164.73088478359585);
7691 11 : parameter_vac_D[BB_RNA_5].push_back(29.07014157680879);
7692 :
7693 11 : parameter_vac_D[BB_RNA_3].push_back(120.5823611192099);
7694 11 : parameter_vac_D[BB_RNA_3].push_back(-0.274146129206928);
7695 11 : parameter_vac_D[BB_RNA_3].push_back(-179.24499182395388);
7696 11 : parameter_vac_D[BB_RNA_3].push_back(-30.315729372259426);
7697 11 : parameter_vac_D[BB_RNA_3].push_back(222.2645581367648);
7698 11 : parameter_vac_D[BB_RNA_3].push_back(-125.13581171514033);
7699 11 : parameter_vac_D[BB_RNA_3].push_back(18.350308154920107);
7700 :
7701 11 : parameter_vac_D[BASE_A].push_back(114.34024911921);
7702 11 : parameter_vac_D[BASE_A].push_back(-0.4136665918383359);
7703 11 : parameter_vac_D[BASE_A].push_back(-192.33138384655922);
7704 11 : parameter_vac_D[BASE_A].push_back(-46.74428306691412);
7705 11 : parameter_vac_D[BASE_A].push_back(312.9511030981905);
7706 11 : parameter_vac_D[BASE_A].push_back(-199.6349962647333);
7707 11 : parameter_vac_D[BASE_A].push_back(36.15938693202153);
7708 :
7709 11 : parameter_vac_D[BASE_C].push_back(76.17798411921166);
7710 11 : parameter_vac_D[BASE_C].push_back(-0.1444475142707445);
7711 11 : parameter_vac_D[BASE_C].push_back(-102.66873668949485);
7712 11 : parameter_vac_D[BASE_C].push_back(-15.813768367725821);
7713 11 : parameter_vac_D[BASE_C].push_back(119.63436338715553);
7714 11 : parameter_vac_D[BASE_C].push_back(-64.22251971660583);
7715 11 : parameter_vac_D[BASE_C].push_back(8.351952332828862);
7716 :
7717 11 : parameter_vac_D[BASE_G].push_back(127.08052911921965);
7718 11 : parameter_vac_D[BASE_G].push_back(-0.7137457014712297);
7719 11 : parameter_vac_D[BASE_G].push_back(-239.67686838772786);
7720 11 : parameter_vac_D[BASE_G].push_back(-88.53661981200943);
7721 11 : parameter_vac_D[BASE_G].push_back(556.7254485453866);
7722 11 : parameter_vac_D[BASE_G].push_back(-432.0234649577737);
7723 11 : parameter_vac_D[BASE_G].push_back(104.407200463848);
7724 :
7725 11 : parameter_vac_D[BASE_T].push_back(94.09000011920868);
7726 11 : parameter_vac_D[BASE_T].push_back(-0.27147149980458524);
7727 11 : parameter_vac_D[BASE_T].push_back(-143.65649702254174);
7728 11 : parameter_vac_D[BASE_T].push_back(-30.861235738371892);
7729 11 : parameter_vac_D[BASE_T].push_back(212.3643014774958);
7730 11 : parameter_vac_D[BASE_T].push_back(-133.06675501066275);
7731 11 : parameter_vac_D[BASE_T].push_back(23.951588200687073);
7732 :
7733 11 : parameter_vac_D[BASE_U].push_back(59.30540111665979);
7734 11 : parameter_vac_D[BASE_U].push_back(-0.06146929846591808);
7735 11 : parameter_vac_D[BASE_U].push_back(-67.43680950211682);
7736 11 : parameter_vac_D[BASE_U].push_back(-6.625289749170134);
7737 11 : parameter_vac_D[BASE_U].push_back(58.37012229348065);
7738 11 : parameter_vac_D[BASE_U].push_back(-26.23044613101723);
7739 11 : parameter_vac_D[BASE_U].push_back(2.061238351422343);
7740 :
7741 31669 : for(unsigned i=0; i<atoms.size(); ++i) {
7742 31658 : std::string Aname = pdb.getAtomName(atoms[i]);
7743 31658 : std::string Rname = pdb.getResidueName(atoms[i]);
7744 31658 : Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
7745 31658 : Rname = onebeadResidueAlias(Rname);
7746 31658 : if(Rname=="ALA") {
7747 1632 : atoi[residue_atom[i]]=ALA;
7748 30026 : } else if(Rname=="ARG") {
7749 1944 : atoi[residue_atom[i]]=ARG;
7750 28082 : } else if(Rname=="ASN") {
7751 1620 : atoi[residue_atom[i]]=ASN;
7752 26462 : } else if(Rname=="ASP") {
7753 1404 : atoi[residue_atom[i]]=ASP;
7754 25058 : } else if(Rname=="CYS") {
7755 108 : atoi[residue_atom[i]]=CYS;
7756 24950 : } else if(Rname=="CYX") {
7757 0 : atoi[residue_atom[i]]=CYX;
7758 24950 : } else if(Rname=="GLN") {
7759 2356 : atoi[residue_atom[i]]=GLN;
7760 22594 : } else if(Rname=="GLU") {
7761 1071 : atoi[residue_atom[i]]=GLU;
7762 21523 : } else if(Rname=="GLY") {
7763 1422 : atoi[residue_atom[i]]=GLY;
7764 20101 : } else if(Rname=="HIS") {
7765 0 : atoi[residue_atom[i]]=HIS;
7766 20101 : } else if(Rname=="HID") {
7767 0 : atoi[residue_atom[i]]=HIS;
7768 20101 : } else if(Rname=="HIE") {
7769 324 : atoi[residue_atom[i]]=HIS;
7770 19777 : } else if(Rname=="HIP") {
7771 0 : atoi[residue_atom[i]]=HIP;
7772 : // CHARMM NAMING FOR PROTONATION STATES OF HISTIDINE
7773 19777 : } else if(Rname=="HSD") {
7774 0 : atoi[residue_atom[i]]=HIS;
7775 19777 : } else if(Rname=="HSE") {
7776 0 : atoi[residue_atom[i]]=HIS;
7777 19777 : } else if(Rname=="HSP") {
7778 0 : atoi[residue_atom[i]]=HIP;
7779 19777 : } else if(Rname=="ILE") {
7780 1944 : atoi[residue_atom[i]]=ILE;
7781 17833 : } else if(Rname=="LEU") {
7782 3420 : atoi[residue_atom[i]]=LEU;
7783 14413 : } else if(Rname=="LYS") {
7784 2340 : atoi[residue_atom[i]]=LYS;
7785 12073 : } else if(Rname=="MET") {
7786 1292 : atoi[residue_atom[i]]=MET;
7787 10781 : } else if(Rname=="PHE") {
7788 2268 : atoi[residue_atom[i]]=PHE;
7789 8513 : } else if(Rname=="PRO") {
7790 1683 : atoi[residue_atom[i]]=PRO;
7791 6830 : } else if(Rname=="SER") {
7792 1164 : atoi[residue_atom[i]]=SER;
7793 5666 : } else if(Rname=="THR") {
7794 1106 : atoi[residue_atom[i]]=THR;
7795 4560 : } else if(Rname=="TRP") {
7796 0 : atoi[residue_atom[i]]=TRP;
7797 4560 : } else if(Rname=="TYR") {
7798 1188 : atoi[residue_atom[i]]=TYR;
7799 3372 : } else if(Rname=="VAL") {
7800 2416 : atoi[residue_atom[i]]=VAL;
7801 : }
7802 : // NUCLEIC ACIDS
7803 : // nucleobases are not automatically populated as an additional check on the health of the PDB.
7804 : // RNA - G
7805 956 : else if(Rname=="G") {
7806 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
7807 0 : Aname=="O1P" || Aname=="O2P" ) {
7808 0 : atoi [residue_atom[i]]=BB_PO2;
7809 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7810 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
7811 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
7812 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
7813 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
7814 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
7815 0 : atoi[residue_atom[i]]=BB_RNA;
7816 0 : } else if( Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
7817 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
7818 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
7819 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
7820 0 : atoi[residue_atom[i]]=BASE_G;
7821 : } else {
7822 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7823 : }
7824 : // RNA - G3
7825 956 : } else if(Rname=="G3") {
7826 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
7827 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
7828 0 : atoi [residue_atom[i]]=BB_PO2;
7829 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7830 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
7831 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
7832 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
7833 0 : Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
7834 0 : Aname=="H5'2" || Aname=="HO'2" ) {
7835 0 : atoi[residue_atom[i]]=BB_RNA_3;
7836 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
7837 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
7838 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
7839 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
7840 0 : atoi[residue_atom[i]]=BASE_G;
7841 : } else {
7842 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7843 : }
7844 : // RNA - G5
7845 956 : } else if(Rname=="G5") {
7846 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7847 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
7848 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
7849 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="HO5'" ||
7850 0 : Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
7851 0 : Aname=="H2'1" || Aname=="H5T" ) {
7852 0 : atoi[residue_atom[i]]=BB_RNA_5;
7853 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
7854 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
7855 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
7856 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
7857 0 : atoi[residue_atom[i]]=BASE_G;
7858 : } else {
7859 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7860 : }
7861 : // RNA - GT
7862 956 : } else if(Rname=="GT") {
7863 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
7864 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
7865 0 : atoi [residue_atom[i]]=BB_PO3;
7866 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7867 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
7868 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
7869 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
7870 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
7871 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
7872 0 : atoi[residue_atom[i]]=BB_RNA;
7873 0 : } else if( Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
7874 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
7875 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
7876 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
7877 0 : atoi[residue_atom[i]]=BASE_G;
7878 : } else {
7879 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7880 : }
7881 : // RNA - U
7882 956 : } else if(Rname=="U") {
7883 754 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
7884 1482 : Aname=="O1P" || Aname=="O2P" ) {
7885 78 : atoi [residue_atom[i]]=BB_PO2;
7886 676 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7887 598 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
7888 494 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
7889 390 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
7890 312 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
7891 988 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
7892 416 : atoi[residue_atom[i]]=BB_RNA;
7893 260 : } else if( Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
7894 182 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
7895 364 : Aname=="H3" || Aname=="H5" || Aname=="H6") {
7896 286 : atoi[residue_atom[i]]=BASE_U;
7897 : } else {
7898 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7899 : }
7900 : // RNA - U3
7901 176 : } else if(Rname=="U3") {
7902 60 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
7903 118 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
7904 6 : atoi [residue_atom[i]]=BB_PO2;
7905 54 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7906 48 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
7907 40 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
7908 32 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
7909 26 : Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
7910 78 : Aname=="H5'2" || Aname=="HO'2" ) {
7911 34 : atoi[residue_atom[i]]=BB_RNA_3;
7912 20 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
7913 14 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
7914 28 : Aname=="H3" || Aname=="H5" || Aname=="H6") {
7915 22 : atoi[residue_atom[i]]=BASE_U;
7916 : } else {
7917 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7918 : }
7919 : // RNA - U5
7920 114 : } else if(Rname=="U5") {
7921 108 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7922 96 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
7923 80 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
7924 64 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="HO5'" ||
7925 48 : Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
7926 156 : Aname=="H2'1" || Aname=="H5T" ) {
7927 68 : atoi[residue_atom[i]]=BB_RNA_5;
7928 40 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
7929 28 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
7930 56 : Aname=="H3" || Aname=="H5" || Aname=="H6") {
7931 44 : atoi[residue_atom[i]]=BASE_U;
7932 : } else {
7933 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7934 : }
7935 : // RNA - UT
7936 2 : } else if(Rname=="UT") {
7937 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
7938 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
7939 0 : atoi [residue_atom[i]]=BB_PO3;
7940 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7941 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
7942 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
7943 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
7944 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
7945 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
7946 0 : atoi[residue_atom[i]]=BB_RNA;
7947 0 : } else if( Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
7948 0 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
7949 0 : Aname=="H3" || Aname=="H5" || Aname=="H6") {
7950 0 : atoi[residue_atom[i]]=BASE_U;
7951 : } else {
7952 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7953 : }
7954 : // RNA - A
7955 2 : } else if(Rname=="A") {
7956 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
7957 0 : Aname=="O1P" || Aname=="O2P" ) {
7958 0 : atoi [residue_atom[i]]=BB_PO2;
7959 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7960 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
7961 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
7962 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
7963 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
7964 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
7965 0 : atoi[residue_atom[i]]=BB_RNA;
7966 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
7967 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
7968 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
7969 0 : Aname=="H61" || Aname=="H62" ) {
7970 0 : atoi[residue_atom[i]]=BASE_A;
7971 : } else {
7972 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7973 : }
7974 : // RNA - A3
7975 2 : } else if(Rname=="A3") {
7976 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
7977 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
7978 0 : atoi [residue_atom[i]]=BB_PO2;
7979 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7980 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
7981 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
7982 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
7983 0 : Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
7984 0 : Aname=="H5'2" || Aname=="HO'2" ) {
7985 0 : atoi[residue_atom[i]]=BB_RNA_3;
7986 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
7987 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
7988 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
7989 0 : Aname=="H61" || Aname=="H62" ) {
7990 0 : atoi[residue_atom[i]]=BASE_A;
7991 : } else {
7992 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
7993 : }
7994 : // RNA - A5
7995 2 : } else if(Rname=="A5") {
7996 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
7997 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
7998 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
7999 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="HO5'" ||
8000 0 : Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
8001 0 : Aname=="H2'1" || Aname=="H5T" ) {
8002 0 : atoi[residue_atom[i]]=BB_RNA_5;
8003 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
8004 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
8005 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
8006 0 : Aname=="H61" || Aname=="H62" ) {
8007 0 : atoi[residue_atom[i]]=BASE_A;
8008 : } else {
8009 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8010 : }
8011 : // RNA - AT
8012 2 : } else if(Rname=="AT") {
8013 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
8014 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
8015 0 : atoi [residue_atom[i]]=BB_PO3;
8016 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8017 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
8018 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
8019 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
8020 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
8021 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
8022 0 : atoi[residue_atom[i]]=BB_RNA;
8023 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
8024 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
8025 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
8026 0 : Aname=="H61" || Aname=="H62" ) {
8027 0 : atoi[residue_atom[i]]=BASE_A;
8028 : } else {
8029 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8030 : }
8031 : // RNA - C
8032 2 : } else if(Rname=="C") {
8033 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
8034 0 : Aname=="O1P" || Aname=="O2P" ) {
8035 0 : atoi [residue_atom[i]]=BB_PO2;
8036 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8037 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
8038 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
8039 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
8040 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
8041 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
8042 0 : atoi[residue_atom[i]]=BB_RNA;
8043 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
8044 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
8045 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
8046 0 : atoi[residue_atom[i]]=BASE_C;
8047 : } else {
8048 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8049 : }
8050 : // RNA - C3
8051 2 : } else if(Rname=="C3") {
8052 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
8053 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
8054 0 : atoi [residue_atom[i]]=BB_PO2;
8055 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8056 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
8057 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
8058 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
8059 0 : Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
8060 0 : Aname=="H5'2" || Aname=="HO'2" ) {
8061 0 : atoi[residue_atom[i]]=BB_RNA_3;
8062 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
8063 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
8064 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
8065 0 : atoi[residue_atom[i]]=BASE_C;
8066 : } else {
8067 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8068 : }
8069 : // RNA - C5
8070 2 : } else if(Rname=="C5") {
8071 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8072 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
8073 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
8074 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="HO5'" ||
8075 0 : Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
8076 0 : Aname=="H2'1" || Aname=="H5T" ) {
8077 0 : atoi[residue_atom[i]]=BB_RNA_5;
8078 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
8079 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
8080 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
8081 0 : atoi[residue_atom[i]]=BASE_C;
8082 : } else {
8083 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8084 : }
8085 : // RNA - CT
8086 2 : } else if(Rname=="CT") {
8087 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
8088 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
8089 0 : atoi [residue_atom[i]]=BB_PO3;
8090 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8091 0 : Aname=="O3'" || Aname=="C3'" || Aname=="O2'" || Aname=="C2'" ||
8092 0 : Aname=="C1'" || Aname=="H5'" || Aname=="H5''" || Aname=="H4'" ||
8093 0 : Aname=="H3'" || Aname=="H2'" || Aname=="H1'" || Aname=="H3T" ||
8094 0 : Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
8095 0 : Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
8096 0 : atoi[residue_atom[i]]=BB_RNA;
8097 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
8098 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
8099 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
8100 0 : atoi[residue_atom[i]]=BASE_C;
8101 : } else {
8102 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8103 : }
8104 : // DNA - G
8105 2 : } else if(Rname=="DG") {
8106 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
8107 0 : Aname=="O1P" || Aname=="O2P" ) {
8108 0 : atoi [residue_atom[i]]=BB_PO2;
8109 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8110 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8111 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8112 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
8113 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
8114 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
8115 0 : atoi[residue_atom[i]]=BB_DNA;
8116 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
8117 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
8118 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
8119 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
8120 0 : atoi[residue_atom[i]]=BASE_G;
8121 : } else {
8122 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8123 : }
8124 : // DNA - G3
8125 2 : } else if(Rname=="DG3") {
8126 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
8127 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
8128 0 : atoi [residue_atom[i]]=BB_PO2;
8129 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8130 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8131 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8132 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO3'" ||
8133 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
8134 0 : Aname=="H3T" ) {
8135 0 : atoi[residue_atom[i]]=BB_DNA_3;
8136 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
8137 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
8138 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
8139 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
8140 0 : atoi[residue_atom[i]]=BASE_G;
8141 : } else {
8142 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8143 : }
8144 : // DNA - G5
8145 2 : } else if(Rname=="DG5") {
8146 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8147 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8148 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8149 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
8150 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
8151 0 : Aname=="H5T" ) {
8152 0 : atoi[residue_atom[i]]=BB_DNA_5;
8153 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
8154 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
8155 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
8156 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
8157 0 : atoi[residue_atom[i]]=BASE_G;
8158 : } else {
8159 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8160 : }
8161 : // DNA - GT
8162 2 : } else if(Rname=="DGT") {
8163 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
8164 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
8165 0 : atoi [residue_atom[i]]=BB_PO3;
8166 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8167 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8168 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8169 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
8170 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
8171 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
8172 0 : atoi[residue_atom[i]]=BB_DNA;
8173 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N2" || Aname=="N3" ||
8174 0 : Aname=="C4" || Aname=="C5" || Aname=="C6" || Aname=="O6" ||
8175 0 : Aname=="N7" || Aname=="C8" || Aname=="N9" || Aname=="H1" ||
8176 0 : Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
8177 0 : atoi[residue_atom[i]]=BASE_G;
8178 : } else {
8179 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8180 : }
8181 : // DNA - T
8182 2 : } else if(Rname=="DT") {
8183 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
8184 0 : Aname=="O1P" || Aname=="O2P" ) {
8185 0 : atoi [residue_atom[i]]=BB_PO2;
8186 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8187 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8188 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8189 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
8190 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
8191 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
8192 0 : atoi[residue_atom[i]]=BB_DNA;
8193 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
8194 0 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
8195 0 : Aname=="C7" || Aname=="H3" || Aname=="H6" || Aname=="H71" ||
8196 0 : Aname=="H72" || Aname=="H73" ) {
8197 0 : atoi[residue_atom[i]]=BASE_T;
8198 : } else {
8199 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8200 : }
8201 : // DNA - T3
8202 2 : } else if(Rname=="DT3") {
8203 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
8204 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
8205 0 : atoi [residue_atom[i]]=BB_PO2;
8206 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8207 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8208 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8209 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO3'" ||
8210 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
8211 0 : Aname=="H3T" ) {
8212 0 : atoi[residue_atom[i]]=BB_DNA_3;
8213 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
8214 0 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
8215 0 : Aname=="C7" || Aname=="H3" || Aname=="H6" || Aname=="H71" ||
8216 0 : Aname=="H72" || Aname=="H73" ) {
8217 0 : atoi[residue_atom[i]]=BASE_T;
8218 : } else {
8219 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8220 : }
8221 : // DNA - T5
8222 2 : } else if(Rname=="DT5") {
8223 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8224 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8225 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8226 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
8227 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
8228 0 : Aname=="H5T" ) {
8229 0 : atoi[residue_atom[i]]=BB_DNA_5;
8230 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
8231 0 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
8232 0 : Aname=="C7" || Aname=="H3" || Aname=="H6" || Aname=="H71" ||
8233 0 : Aname=="H72" || Aname=="H73" ) {
8234 0 : atoi[residue_atom[i]]=BASE_T;
8235 : } else {
8236 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8237 : }
8238 : // DNA - TT
8239 2 : } else if(Rname=="DTT") {
8240 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
8241 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
8242 0 : atoi [residue_atom[i]]=BB_PO3;
8243 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8244 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8245 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8246 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
8247 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
8248 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
8249 0 : atoi[residue_atom[i]]=BB_DNA;
8250 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
8251 0 : Aname=="C4" || Aname=="O4" || Aname=="C5" || Aname=="C6" ||
8252 0 : Aname=="C7" || Aname=="H3" || Aname=="H6" || Aname=="H71" ||
8253 0 : Aname=="H72" || Aname=="H73" ) {
8254 0 : atoi[residue_atom[i]]=BASE_T;
8255 : } else {
8256 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8257 : }
8258 : // DNA - A
8259 2 : } else if(Rname=="DA") {
8260 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
8261 0 : Aname=="O1P" || Aname=="O2P" ) {
8262 0 : atoi [residue_atom[i]]=BB_PO2;
8263 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8264 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8265 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8266 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
8267 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
8268 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
8269 0 : atoi[residue_atom[i]]=BB_DNA;
8270 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
8271 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
8272 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
8273 0 : Aname=="H61" || Aname=="H62" ) {
8274 0 : atoi[residue_atom[i]]=BASE_A;
8275 : } else {
8276 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8277 : }
8278 : // DNA - A3
8279 2 : } else if(Rname=="DA3") {
8280 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
8281 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
8282 0 : atoi [residue_atom[i]]=BB_PO2;
8283 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8284 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8285 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8286 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO3'" ||
8287 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
8288 0 : Aname=="H3T" ) {
8289 0 : atoi[residue_atom[i]]=BB_DNA_3;
8290 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
8291 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
8292 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
8293 0 : Aname=="H61" || Aname=="H62" ) {
8294 0 : atoi[residue_atom[i]]=BASE_A;
8295 : } else {
8296 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8297 : }
8298 : // DNA - A5
8299 2 : } else if(Rname=="DA5") {
8300 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8301 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8302 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8303 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
8304 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
8305 0 : Aname=="H5T" ) {
8306 0 : atoi[residue_atom[i]]=BB_DNA_5;
8307 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
8308 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
8309 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
8310 0 : Aname=="H61" || Aname=="H62" ) {
8311 0 : atoi[residue_atom[i]]=BASE_A;
8312 : } else {
8313 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8314 : }
8315 : // DNA - AT
8316 2 : } else if(Rname=="DAT") {
8317 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
8318 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
8319 0 : atoi [residue_atom[i]]=BB_PO3;
8320 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8321 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8322 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8323 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
8324 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
8325 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
8326 0 : atoi[residue_atom[i]]=BB_DNA;
8327 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
8328 0 : Aname=="C5" || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
8329 0 : Aname=="C8" || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
8330 0 : Aname=="H61" || Aname=="H62" ) {
8331 0 : atoi[residue_atom[i]]=BASE_A;
8332 : } else {
8333 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8334 : }
8335 : // DNA - C
8336 2 : } else if(Rname=="DC") {
8337 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
8338 0 : Aname=="O1P" || Aname=="O2P" ) {
8339 0 : atoi [residue_atom[i]]=BB_PO2;
8340 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8341 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8342 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8343 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
8344 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
8345 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
8346 0 : atoi[residue_atom[i]]=BB_DNA;
8347 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
8348 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
8349 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
8350 0 : atoi[residue_atom[i]]=BASE_C;
8351 : } else {
8352 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8353 : }
8354 : // DNA - C3
8355 2 : } else if(Rname=="DC3") {
8356 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
8357 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
8358 0 : atoi [residue_atom[i]]=BB_PO2;
8359 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8360 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8361 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8362 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO3'" ||
8363 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
8364 0 : Aname=="H3T" ) {
8365 0 : atoi[residue_atom[i]]=BB_DNA_3;
8366 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
8367 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
8368 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
8369 0 : atoi[residue_atom[i]]=BASE_C;
8370 : } else {
8371 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8372 : }
8373 : // DNA - C5
8374 2 : } else if(Rname=="DC5") {
8375 0 : if( Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8376 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8377 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8378 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
8379 0 : Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
8380 0 : Aname=="H5T" ) {
8381 0 : atoi[residue_atom[i]]=BB_DNA_5;
8382 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
8383 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
8384 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
8385 0 : atoi[residue_atom[i]]=BASE_C;
8386 : } else {
8387 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8388 : }
8389 : // DNA - CT
8390 2 : } else if(Rname=="DCT") {
8391 0 : if( Aname=="P" || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
8392 0 : Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
8393 0 : atoi [residue_atom[i]]=BB_PO3;
8394 0 : } else if(Aname=="O5'" || Aname=="C5'" || Aname=="O4'" || Aname=="C4'" ||
8395 0 : Aname=="O3'" || Aname=="C3'" || Aname=="C2'" || Aname=="C1'" ||
8396 0 : Aname=="H5'" || Aname=="H5''" || Aname=="H4'" || Aname=="H3'" ||
8397 0 : Aname=="H2'" || Aname=="H2''" || Aname=="H1'" || Aname=="HO5'" ||
8398 0 : Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
8399 0 : Aname=="H2'2" || Aname=="H5T" || Aname=="H3T" ) {
8400 0 : atoi[residue_atom[i]]=BB_DNA;
8401 0 : } else if(Aname=="N1" || Aname=="C2" || Aname=="O2" || Aname=="N3" ||
8402 0 : Aname=="C4" || Aname=="N4" || Aname=="C5" || Aname=="C6" ||
8403 0 : Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
8404 0 : atoi[residue_atom[i]]=BASE_C;
8405 : } else {
8406 0 : error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
8407 : }
8408 2 : } else if(glyc_type[i] >= 0) {
8409 : // monosaccharide: the bead type was resolved once, from the residue name and
8410 : // from the presence of an N-acetyl group, in getOnebeadMapping()
8411 0 : atoi[residue_atom[i]] = static_cast<unsigned>(glyc_type[i]);
8412 2 : } else if(isUnsupportedGlycan(Rname)) {
8413 0 : error("Residue "+Rname+" is a monosaccharide for which no ONEBEAD parameters are available.");
8414 2 : } else if(ionTypeFromResname(Rname) >= 0) {
8415 : // monoatomic ion: assign its onebead bead type (terms filled in getOnebeadIonparam_sans).
8416 2 : atoi[residue_atom[i]] = obSlot(ionTypeFromResname(Rname));
8417 : } else {
8418 0 : error("Residue not known: "+Rname);
8419 : }
8420 : }
8421 11 : }
8422 :
8423 : // ----------------------------------------------------------------------------
8424 : // Monoatomic-ion parameters, shared by the ATOMISTIC and ONEBEAD routes.
8425 : //
8426 : // X-ray Cromer-Mann coefficients (a1..a4, b1..b4, c) are taken from the
8427 : // charged-ion scattering-factor entries tabulated in the International Tables
8428 : // for Crystallography / International Tables for X-ray Crystallography, based
8429 : // on Cromer & Mann, Acta Cryst. A24, 321-324 (1968).
8430 : // For each ion, Sum(a)+c gives the q=0 electron count of the ion
8431 : // (atomic number minus charge), as expected for the forward X-ray factor.
8432 : //
8433 : // Neutron bound coherent scattering lengths are taken from the NIST NCNR table,
8434 : // based on Sears, Neutron News 3, No. 3, 1992. These values are nuclear/isotopic
8435 : // scattering lengths, so they do not depend on the ion oxidation state in this
8436 : // model; for example Fe2+ and Fe3+ use the same Fe neutron value.
8437 : //
8438 : // The displaced-solvent volume is estimated from Shannon effective ionic radii
8439 : // (Shannon, Acta Cryst. A32, 751-767 (1976); here using a fixed coordination
8440 : // choice, currently 6-fold) as the volume of a sphere with that radius.
8441 : // It is used instead of neutral-atom van der Waals radii because neutral vdW
8442 : // radii are too large for small cations and would over-subtract the solvent
8443 : // excluded-volume contribution.
8444 : // ----------------------------------------------------------------------------
8445 318 : void SAXS::getIonData(unsigned ion, std::vector<double> &cm_a, std::vector<double> &cm_b, double &cm_c, double &vol, double &neutron_b, double &mass) const {
8446 318 : cm_a.resize(4);
8447 318 : cm_b.resize(4);
8448 318 : switch(ion) {
8449 35 : case ION_NA: // Na1+
8450 35 : cm_a = {3.2565, 3.9362, 1.3998, 1.0032};
8451 35 : cm_b = {2.6671, 6.1153, 0.2001, 14.039};
8452 35 : cm_c = 0.404;
8453 35 : vol = 4.445;
8454 35 : neutron_b = 0.363;
8455 35 : mass = 22.990;
8456 35 : break;
8457 35 : case ION_K: // K1+
8458 35 : cm_a = {7.9578, 7.4917, 6.359, 1.1915};
8459 35 : cm_b = {12.6331, 0.7674, -0.0020, 31.9128};
8460 35 : cm_c = -4.9978;
8461 35 : vol = 11.008;
8462 35 : neutron_b = 0.367;
8463 35 : mass = 39.098;
8464 35 : break;
8465 35 : case ION_CL: // Cl1-
8466 35 : cm_a = {18.2915, 7.2084, 6.5337, 2.3386};
8467 35 : cm_b = {0.0066, 1.1717, 19.5424, 60.4486};
8468 35 : cm_c = -16.378;
8469 35 : vol = 24.838;
8470 35 : neutron_b = 0.9577;
8471 35 : mass = 35.453;
8472 35 : break;
8473 37 : case ION_CA: // Ca2+
8474 37 : cm_a = {15.6348, 7.9518, 8.4372, 0.8537};
8475 37 : cm_b = {-0.0074, 0.6089, 10.3116, 25.9905};
8476 37 : cm_c = -14.875;
8477 37 : vol = 4.189;
8478 37 : neutron_b = 0.47;
8479 37 : mass = 40.078;
8480 37 : break;
8481 35 : case ION_MG: // Mg2+
8482 35 : cm_a = {3.4988, 3.8378, 1.3284, 0.8497};
8483 35 : cm_b = {2.1676, 4.7542, 0.185, 10.1411};
8484 35 : cm_c = 0.4853;
8485 35 : vol = 1.563;
8486 35 : neutron_b = 0.5375;
8487 35 : mass = 24.305;
8488 35 : break;
8489 35 : case ION_ZN: // Zn2+
8490 35 : cm_a = {11.9719, 7.3862, 6.4668, 1.394};
8491 35 : cm_b = {2.9946, 0.2031, 7.0826, 18.0995};
8492 35 : cm_c = 0.7807;
8493 35 : vol = 1.697;
8494 35 : neutron_b = 0.568;
8495 35 : mass = 65.38;
8496 35 : break;
8497 35 : case ION_FE2: // Fe2+
8498 35 : cm_a = {11.0424, 7.374, 4.1346, 0.4399};
8499 35 : cm_b = {4.6538, 0.3053, 12.0546, 31.2809};
8500 35 : cm_c = 1.0097;
8501 35 : vol = 1.988;
8502 35 : neutron_b = 0.945;
8503 35 : mass = 55.845;
8504 35 : break;
8505 35 : case ION_FE3: // Fe3+
8506 35 : cm_a = {11.1764, 7.3863, 3.3948, 0.0724};
8507 35 : cm_b = {4.6147, 0.3005, 11.6729, 38.5566};
8508 35 : cm_c = 0.9707;
8509 35 : vol = 1.124;
8510 35 : neutron_b = 0.945;
8511 35 : mass = 55.845;
8512 35 : break;
8513 36 : case ION_MN: // Mn2+
8514 36 : cm_a = {10.8061, 7.362, 3.5268, 0.2184};
8515 36 : cm_b = {5.2796, 0.3435, 14.343, 41.3235};
8516 36 : cm_c = 1.0874;
8517 36 : vol = 2.395;
8518 36 : neutron_b = -0.373;
8519 36 : mass = 54.938;
8520 36 : break;
8521 0 : default:
8522 0 : plumed_merror("getIonData called with an unknown ion id");
8523 : }
8524 318 : }
8525 :
8526 : // Detect a monoatomic ion from its residue name. Detection is by RESIDUE name only.
8527 : // The protein/nucleic-acid branches are matched before this is reached.
8528 : // Accepted aliases follow the RCSB PDB het codes plus the AMBER and CHARMM ion residue names.
8529 257500 : int SAXS::ionTypeFromResname(const std::string &resname) const {
8530 257500 : std::string r = resname;
8531 257500 : r.erase(std::remove_if(r.begin(), r.end(), ::isspace), r.end());
8532 : std::transform(r.begin(), r.end(), r.begin(), ::toupper);
8533 257500 : if(r=="NA" || r=="SOD" || r=="NA+") {
8534 : return ION_NA;
8535 : }
8536 257500 : if(r=="K" || r=="POT" || r=="K+") {
8537 : return ION_K;
8538 : }
8539 257500 : if(r=="CL" || r=="CLA" || r=="CL-") {
8540 : return ION_CL;
8541 : }
8542 257500 : if(r=="CA" || r=="CAL" || r=="CA2+") {
8543 : return ION_CA;
8544 : }
8545 257486 : if(r=="MG" || r=="MG2+") {
8546 : return ION_MG;
8547 : }
8548 257486 : if(r=="ZN" || r=="ZN2" || r=="ZN2+") {
8549 : return ION_ZN;
8550 : }
8551 257486 : if(r=="FE2") {
8552 : return ION_FE2;
8553 : }
8554 257486 : if(r=="FE3") {
8555 : return ION_FE3;
8556 : }
8557 257486 : if(r=="MN" || r=="MN2+") {
8558 8 : return ION_MN;
8559 : }
8560 : return -1;
8561 : }
8562 :
8563 : // Fill, for every ION_* bead type, the SAXS vac/solv/mix terms across q, and the q=0 Iq0 values
8564 : // for the corresponding beads. For a one-atom bead vac=(f^a)^2, solv=(f^s)^2, mix=2 f^a f^s, so
8565 : // the existing runtime combination sqrt(|vac + rho^2 solv - rho mix|) reproduces |f^a - rho f^s|
8566 : // exactly, keeping rho a live SOLVDENS knob. q_list is in A^-1. This runs before the A^-1 ->
8567 : // nm^-1 conversion in the constructor).
8568 : // Maps a monosaccharide residue name onto one of the eight ONEBEAD glycan bead
8569 : // types. Both the PDB chemical-component codes and the usual force-field spellings
8570 : // are accepted. hasN tells whether the residue carries an amide nitrogen in the
8571 : // TEMPLATE: it resolves the N-acetylhexosamines when the input file names them
8572 : // after their parent hexose, which is the convention used by several builders.
8573 : // Some builders rename the amino acid that carries a glycan (GLYCAM writes NLN for
8574 : // an N-linked Asn, OLS/OLT for an O-linked Ser/Thr). Only a hydrogen is lost to the
8575 : // glycosidic bond, so the bead is the parent amino acid and is treated as such. The
8576 : // alias is applied to the name used everywhere downstream, including the LCPO key,
8577 : // so no duplicate tables are needed.
8578 106156 : std::string SAXS::onebeadResidueAlias(const std::string &resname) const {
8579 106156 : if(resname=="NLN") {
8580 0 : return "ASN";
8581 : }
8582 106156 : if(resname=="OLS") {
8583 0 : return "SER";
8584 : }
8585 106156 : if(resname=="OLT") {
8586 0 : return "THR";
8587 : }
8588 106156 : return resname;
8589 : }
8590 :
8591 : // Residues that the ONEBEAD model represents with a single bead per residue.
8592 : // PDB::allowedResidue already covers all of them, CYX included; the explicit test is
8593 : // kept only so that this stays correct if the module is ever pointed at
8594 : // MolDataClass::allowedResidue, whose protein list does not contain CYX.
8595 74492 : bool SAXS::isOnebeadProteinResidue(const PDB &pdb, const std::string &resname) const {
8596 148984 : return pdb.allowedResidue("protein",resname) || resname=="CYX";
8597 : }
8598 :
8599 4145 : int SAXS::glycanTypeFromResname(const std::string &resname, bool hasN) const {
8600 : const std::string &r = resname;
8601 :
8602 : // explicitly N-acetylated hexosamines
8603 4145 : if(r=="NAG" || r=="NDG" || r=="AGLCNA" || r=="BGLCNA") {
8604 : return GLYC_NAG;
8605 : }
8606 4145 : if(r=="NGA" || r=="A2G" || r=="AGALNA" || r=="BGALNA") {
8607 : return GLYC_NGA;
8608 : }
8609 : // glucose / galactose: N-acetylated or not
8610 4145 : if(r=="GLC" || r=="BGC" || r=="AGLC" || r=="BGLC") {
8611 0 : return hasN ? GLYC_NAG : GLYC_GLC;
8612 : }
8613 4145 : if(r=="GAL" || r=="GLA" || r=="AGAL" || r=="BGAL") {
8614 0 : return hasN ? GLYC_NGA : GLYC_GAL;
8615 : }
8616 : // mannose: the two anomers have their own parameter sets
8617 4145 : if(r=="MAN" || r=="AMAN") {
8618 : return GLYC_MAN;
8619 : }
8620 4145 : if(r=="BMA" || r=="BMAN") {
8621 : return GLYC_BMA;
8622 : }
8623 : // 6-deoxyhexoses. FUC/FUL are alpha/beta-L-fucose and FCA/FCB their D enantiomers:
8624 : // all four have exactly the same composition and differ only in configuration, which
8625 : // no scattering experiment resolves. Rhamnose (RAM, RM4) is deliberately NOT here:
8626 : // it shares the formula but is a different sugar, so it belongs to the unsupported
8627 : // list rather than being silently given fucose parameters.
8628 4145 : if(r=="FUC" || r=="FUL" || r=="FCA" || r=="FCB" || r=="AFUC" || r=="BFUC") {
8629 : return GLYC_FUC;
8630 : }
8631 : // N-acetylneuraminic acid
8632 4145 : if(r=="SIA" || r=="SLB" || r=="ANE5AC" || r=="BNE5AC") {
8633 0 : return GLYC_SIA;
8634 : }
8635 : return -1;
8636 : }
8637 :
8638 : // Monosaccharides that the ONEBEAD model recognises but has no parameters for. They
8639 : // are listed separately so that the user gets a specific message instead of the
8640 : // generic "Residue not known".
8641 4150 : bool SAXS::isUnsupportedGlycan(const std::string &r) const {
8642 4150 : return (r=="RAM" || r=="RM4" || r=="XXR" || // rhamnose
8643 4150 : r=="XYL" || r=="XYS" || r=="XYP" || r=="LXZ" || // xylose
8644 4150 : r=="GCU" || r=="BDP" || r=="GCV" || // glucuronic acid
8645 4150 : r=="IDS" || r=="IDR" || // iduronic acid
8646 4150 : r=="SGN" || r=="SUS" || r=="UAP" || // sulfated sugars
8647 4150 : r=="NGC" || r=="NGE" || // Neu5Gc
8648 4150 : r=="RIB" || r=="ARA" || r=="ARB" || r=="AHR" || // pentoses
8649 8300 : r=="GLP" || r=="PA1" || r=="GCS"); // glucosamine
8650 : }
8651 :
8652 12 : void SAXS::getOnebeadIonparam_saxs(std::vector<std::vector<long double> > &FF_tmp_vac, std::vector<std::vector<long double> > &FF_tmp_mix, std::vector<std::vector<long double> > &FF_tmp_solv, std::vector<double> &iq0_vac, std::vector<double> &iq0_mix, std::vector<double> &iq0_solv) const {
8653 12 : const unsigned numq = q_list.size();
8654 120 : for(unsigned t=0; t<NIONS; ++t) {
8655 108 : std::vector<double> a, b;
8656 : double c, v, bN, m;
8657 108 : getIonData(t, a, b, c, v, bN, m);
8658 : const unsigned slot = obSlot(t);
8659 108 : const double volr = std::pow(v, 2.0/3.0)/(4.*M_PI);
8660 1026 : for(unsigned k=0; k<numq; ++k) {
8661 918 : const double q = q_list[k];
8662 918 : const double s = q/(4.*M_PI);
8663 918 : double fa = c;
8664 4590 : for(unsigned j=0; j<4; ++j) {
8665 3672 : fa += a[j]*std::exp(-b[j]*s*s);
8666 : }
8667 918 : const double fs = v*std::exp(-volr*q*q);
8668 918 : FF_tmp_vac[k][slot] = static_cast<long double>(fa*fa);
8669 918 : FF_tmp_solv[k][slot] = static_cast<long double>(fs*fs);
8670 918 : FF_tmp_mix[k][slot] = static_cast<long double>(2.*fa*fs);
8671 : }
8672 : // q=0 forward values (exp(0)=1): f^a(0) = sum(a)+c, f^s(0) = v
8673 108 : double fa0 = c;
8674 540 : for(unsigned j=0; j<4; ++j) {
8675 432 : fa0 += a[j];
8676 : }
8677 : const double fs0 = v;
8678 21375 : for(unsigned i=0; i<nres; ++i) {
8679 21267 : if(atoi[i]==slot) {
8680 1 : iq0_vac[i] = fa0*fa0;
8681 1 : iq0_solv[i] = fs0*fs0;
8682 1 : iq0_mix[i] = 2.*fa0*fs0;
8683 : }
8684 : }
8685 : }
8686 12 : }
8687 :
8688 : // SANS analogue. The neutron amplitude b is real and q-independent, so vac = b^2 (constant)
8689 : // and mix = 2 b f^s; the solvent term f^s depends only on the volume and is shared with SAXS.
8690 : // Ions have no exchangeable hydrogens, so the deuterated terms equal the hydrogenated ones
8691 : // (vac_D = vac_H, mix_D = mix_H).
8692 11 : void SAXS::getOnebeadIonparam_sans(std::vector<std::vector<long double> > &FF_tmp_vac_H, std::vector<std::vector<long double> > &FF_tmp_mix_H, std::vector<std::vector<long double> > &FF_tmp_solv_H, std::vector<std::vector<long double> > &FF_tmp_vac_D, std::vector<std::vector<long double> > &FF_tmp_mix_D, std::vector<double> &iq0_vac_H, std::vector<double> &iq0_mix_H, std::vector<double> &iq0_solv_H, std::vector<double> &iq0_vac_D, std::vector<double> &iq0_mix_D) const {
8693 11 : const unsigned numq = q_list.size();
8694 110 : for(unsigned t=0; t<NIONS; ++t) {
8695 99 : std::vector<double> a, b;
8696 : double c, v, bN, m;
8697 99 : getIonData(t, a, b, c, v, bN, m);
8698 : const unsigned slot = obSlot(t);
8699 99 : const double volr = std::pow(v, 2.0/3.0)/(4.*M_PI);
8700 927 : for(unsigned k=0; k<numq; ++k) {
8701 828 : const double q = q_list[k];
8702 828 : const double fs = v*std::exp(-volr*q*q);
8703 828 : FF_tmp_vac_H[k][slot] = static_cast<long double>(bN*bN);
8704 828 : FF_tmp_vac_D[k][slot] = static_cast<long double>(bN*bN);
8705 828 : FF_tmp_solv_H[k][slot] = static_cast<long double>(fs*fs);
8706 828 : FF_tmp_mix_H[k][slot] = static_cast<long double>(2.*bN*fs);
8707 828 : FF_tmp_mix_D[k][slot] = static_cast<long double>(2.*bN*fs);
8708 : }
8709 : const double fs0 = v;
8710 17478 : for(unsigned i=0; i<nres; ++i) {
8711 17379 : if(atoi[i]==slot) {
8712 2 : iq0_vac_H[i] = bN*bN;
8713 2 : iq0_vac_D[i] = bN*bN;
8714 2 : iq0_solv_H[i] = fs0*fs0;
8715 2 : iq0_mix_H[i] = 2.*bN*fs0;
8716 2 : iq0_mix_D[i] = 2.*bN*fs0;
8717 : }
8718 : }
8719 : }
8720 11 : }
8721 :
8722 8 : double SAXS::calculateAFF(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double Rho) {
8723 : std::map<std::string, unsigned> AA_map;
8724 8 : AA_map["H"] = H;
8725 8 : AA_map["C"] = C;
8726 8 : AA_map["N"] = N;
8727 8 : AA_map["O"] = O;
8728 8 : AA_map["P"] = P;
8729 8 : AA_map["S"] = S;
8730 :
8731 8 : std::vector<std::vector<double> > param_a;
8732 8 : std::vector<std::vector<double> > param_b;
8733 8 : std::vector<double> param_c;
8734 8 : std::vector<double> param_v;
8735 :
8736 8 : param_a.resize(NTT, std::vector<double>(5));
8737 8 : param_b.resize(NTT, std::vector<double>(5));
8738 8 : param_c.resize(NTT);
8739 8 : param_v.resize(NTT);
8740 :
8741 8 : param_a[H][0] = 0.493002;
8742 8 : param_b[H][0] = 10.5109;
8743 8 : param_c[H] = 0.003038;
8744 8 : param_a[H][1] = 0.322912;
8745 8 : param_b[H][1] = 26.1257;
8746 8 : param_v[H] = 5.15;
8747 8 : param_a[H][2] = 0.140191;
8748 8 : param_b[H][2] = 3.14236;
8749 8 : param_a[H][3] = 0.040810;
8750 8 : param_b[H][3] = 57.7997;
8751 8 : param_a[H][4] = 0.0;
8752 8 : param_b[H][4] = 1.0;
8753 :
8754 8 : param_a[C][0] = 2.31000;
8755 8 : param_b[C][0] = 20.8439;
8756 8 : param_c[C] = 0.215600;
8757 8 : param_a[C][1] = 1.02000;
8758 8 : param_b[C][1] = 10.2075;
8759 8 : param_v[C] = 16.44;
8760 8 : param_a[C][2] = 1.58860;
8761 8 : param_b[C][2] = 0.56870;
8762 8 : param_a[C][3] = 0.86500;
8763 8 : param_b[C][3] = 51.6512;
8764 8 : param_a[C][4] = 0.0;
8765 8 : param_b[C][4] = 1.0;
8766 :
8767 8 : param_a[N][0] = 12.2126;
8768 8 : param_b[N][0] = 0.00570;
8769 8 : param_c[N] = -11.529;
8770 8 : param_a[N][1] = 3.13220;
8771 8 : param_b[N][1] = 9.89330;
8772 8 : param_v[N] = 2.49;
8773 8 : param_a[N][2] = 2.01250;
8774 8 : param_b[N][2] = 28.9975;
8775 8 : param_a[N][3] = 1.16630;
8776 8 : param_b[N][3] = 0.58260;
8777 8 : param_a[N][4] = 0.0;
8778 8 : param_b[N][4] = 1.0;
8779 :
8780 8 : param_a[O][0] = 3.04850;
8781 8 : param_b[O][0] = 13.2771;
8782 8 : param_c[O] = 0.250800 ;
8783 8 : param_a[O][1] = 2.28680;
8784 8 : param_b[O][1] = 5.70110;
8785 8 : param_v[O] = 9.13;
8786 8 : param_a[O][2] = 1.54630;
8787 8 : param_b[O][2] = 0.32390;
8788 8 : param_a[O][3] = 0.86700;
8789 8 : param_b[O][3] = 32.9089;
8790 8 : param_a[O][4] = 0.0;
8791 8 : param_b[O][4] = 1.0;
8792 :
8793 8 : param_a[P][0] = 6.43450;
8794 8 : param_b[P][0] = 1.90670;
8795 8 : param_c[P] = 1.11490;
8796 8 : param_a[P][1] = 4.17910;
8797 8 : param_b[P][1] = 27.1570;
8798 8 : param_v[P] = 5.73;
8799 8 : param_a[P][2] = 1.78000;
8800 8 : param_b[P][2] = 0.52600;
8801 8 : param_a[P][3] = 1.49080;
8802 8 : param_b[P][3] = 68.1645;
8803 8 : param_a[P][4] = 0.0;
8804 8 : param_b[P][4] = 1.0;
8805 :
8806 8 : param_a[S][0] = 6.90530;
8807 8 : param_b[S][0] = 1.46790;
8808 8 : param_c[S] = 0.866900;
8809 8 : param_a[S][1] = 5.20340;
8810 8 : param_b[S][1] = 22.2151;
8811 8 : param_v[S] = 19.86;
8812 8 : param_a[S][2] = 1.43790;
8813 8 : param_b[S][2] = 0.25360;
8814 8 : param_a[S][3] = 1.58630;
8815 8 : param_b[S][3] = 56.1720;
8816 8 : param_a[S][4] = 0.0;
8817 8 : param_b[S][4] = 1.0;
8818 :
8819 : // monoatomic-ion X-ray Cromer-Mann parameters (charged-ion rows; see getIonData)
8820 80 : for(unsigned t=0; t<NIONS; ++t) {
8821 72 : std::vector<double> a, b;
8822 : double c, v, bN, m;
8823 72 : getIonData(t, a, b, c, v, bN, m);
8824 : const unsigned idx = affSlot(t);
8825 360 : for(unsigned j=0; j<4; ++j) {
8826 288 : param_a[idx][j] = a[j];
8827 288 : param_b[idx][j] = b[j];
8828 : }
8829 72 : param_c[idx] = c;
8830 72 : param_v[idx] = v;
8831 : }
8832 :
8833 8 : auto* moldat=plumed.getActionSet().selectLatest<GenericMolInfo*>(this);
8834 :
8835 : double Iq_0=0.;
8836 8 : if( moldat ) {
8837 : // cycle over the atom types
8838 128 : for(unsigned i=0; i<NTT; ++i) {
8839 120 : const double volr = std::pow(param_v[i], (2.0/3.0)) /(4. * M_PI);
8840 : // cycle over q
8841 1200 : for(unsigned k=0; k<q_list.size(); ++k) {
8842 1080 : const double q = q_list[k];
8843 1080 : const double s = q / (4. * M_PI);
8844 1080 : FF_tmp[k][i] = param_c[i];
8845 : // SUM [a_i * EXP( - b_i * (q/4pi)^2 )] Waasmaier and Kirfel (1995)
8846 5400 : for(unsigned j=0; j<4; ++j) {
8847 4320 : FF_tmp[k][i] += param_a[i][j]*std::exp(-param_b[i][j]*s*s);
8848 : }
8849 : // subtract solvation: rho * v_i * EXP( (- v_i^(2/3) / (4pi)) * q^2 ) // since D in Fraser 1978 is 2*s
8850 1080 : FF_tmp[k][i] -= Rho*param_v[i]*std::exp(-volr*q*q);
8851 : }
8852 : }
8853 : // cycle over the atoms to assign the atom type and calculate I0
8854 28382 : for(unsigned i=0; i<atoms.size(); ++i) {
8855 : // ions are detected by residue name (never by the leading element letter,
8856 : // which would misread CL/CA as carbon, NA as nitrogen, ...)
8857 28374 : int ion = ionTypeFromResname(moldat->getResidueName(atoms[i]));
8858 28374 : if(ion >= 0) {
8859 0 : const unsigned index = affSlot(ion);
8860 0 : atoi[i] = index;
8861 0 : for(unsigned j=0; j<4; ++j) {
8862 0 : Iq_0 += param_a[index][j];
8863 : }
8864 0 : Iq_0 -= Rho*param_v[index] - param_c[index];
8865 0 : continue;
8866 0 : }
8867 : // get atom name
8868 28374 : std::string name = moldat->getAtomName(atoms[i]);
8869 : char type;
8870 : // get atom type
8871 28374 : char first = name.at(0);
8872 : // GOLDEN RULE: type is first letter, if not a number
8873 28374 : if (!isdigit(first)) {
8874 : type = first;
8875 : // otherwise is the second
8876 : } else {
8877 0 : type = name.at(1);
8878 : }
8879 : std::string type_s = std::string(1,type);
8880 28374 : if(AA_map.find(type_s) != AA_map.end()) {
8881 28374 : const unsigned index=AA_map[type_s];
8882 28374 : atoi[i] = AA_map[type_s];
8883 141870 : for(unsigned j=0; j<4; ++j) {
8884 113496 : Iq_0 += param_a[index][j];
8885 : }
8886 28374 : Iq_0 -= Rho*param_v[index] - param_c[index];
8887 : } else {
8888 0 : error("Wrong atom type "+type_s+" from atom name "+name+"\n");
8889 : }
8890 : }
8891 : } else {
8892 0 : error("MOLINFO DATA not found\n");
8893 : }
8894 8 : if(absolute) {
8895 : Iq_0 = 1;
8896 : }
8897 :
8898 8 : return Iq_0;
8899 8 : }
8900 :
8901 4 : double SAXS::calculateAFFsans(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double deuterConc) {
8902 : std::map<std::string, unsigned> AA_map;
8903 4 : AA_map["H"] = H;
8904 4 : AA_map["C"] = C;
8905 4 : AA_map["N"] = N;
8906 4 : AA_map["O"] = O;
8907 4 : AA_map["P"] = P;
8908 4 : AA_map["S"] = S;
8909 :
8910 4 : std::vector<double> param_b;
8911 4 : std::vector<double> param_v;
8912 :
8913 4 : param_b.resize(NTT);
8914 4 : param_v.resize(NTT);
8915 :
8916 4 : param_b[H] = -0.374;
8917 4 : param_v[H] = 5.15;
8918 : // param_b[D] = 0.667;
8919 4 : param_b[C] = 0.665;
8920 4 : param_v[C] = 16.44;
8921 4 : param_b[N] = 0.94;
8922 4 : param_v[N] = 2.49;
8923 4 : param_b[O] = 0.580;
8924 4 : param_v[O] = 9.13;
8925 4 : param_b[P] = 0.51;
8926 4 : param_v[P] = 5.73;
8927 4 : param_b[S] = 0.28;
8928 4 : param_v[S] = 19.86;
8929 :
8930 : // monoatomic-ion neutron scattering lengths (nuclear, charge-independent) and volumes
8931 40 : for(unsigned t=0; t<NIONS; ++t) {
8932 36 : std::vector<double> a, b;
8933 : double c, v, bN, m;
8934 36 : getIonData(t, a, b, c, v, bN, m);
8935 : const unsigned idx = affSlot(t);
8936 36 : param_b[idx] = bN;
8937 36 : param_v[idx] = v;
8938 : }
8939 :
8940 4 : double solv_sc_length = 0.1*(param_b[O] + 2.*((1. - deuterConc) * param_b[H] + deuterConc * 0.667)); // per water electron (10 electrons)
8941 :
8942 4 : auto* moldat=plumed.getActionSet().selectLatest<GenericMolInfo*>(this);
8943 :
8944 : double Iq_0=0.;
8945 4 : if( moldat ) {
8946 : // cycle over the atom types
8947 64 : for(unsigned i=0; i<NTT; ++i) {
8948 60 : double volr = std::pow(param_v[i], (2.0/3.0)) /(4. * M_PI);
8949 : // cycle over q
8950 600 : for(unsigned k=0; k<q_list.size(); ++k) {
8951 540 : const double q = q_list[k];
8952 540 : FF_tmp[k][i] = param_b[i];
8953 : // subtract solvation: rho * v_i * EXP( (- v_i^(2/3) / (4pi)) * q^2 ) // since D in Fraser 1978 is 2*s
8954 540 : FF_tmp[k][i] -= solv_sc_length*rho*param_v[i]*std::exp(-volr*q*q);
8955 : }
8956 : }
8957 : // cycle over the atoms to assign the atom type and calculate I0
8958 13922 : for(unsigned i=0; i<atoms.size(); ++i) {
8959 : // ions are detected by residue name (never by the leading element letter)
8960 13918 : int ion = ionTypeFromResname(moldat->getResidueName(atoms[i]));
8961 13918 : if(ion >= 0) {
8962 0 : const unsigned index = affSlot(ion);
8963 0 : atoi[i] = index;
8964 0 : Iq_0 += param_b[index]-solv_sc_length*rho*param_v[index];
8965 0 : continue;
8966 0 : }
8967 : // get atom name
8968 13918 : std::string name = moldat->getAtomName(atoms[i]);
8969 : char type;
8970 : // get atom type
8971 13918 : char first = name.at(0);
8972 : // GOLDEN RULE: type is first letter, if not a number
8973 13918 : if (!isdigit(first)) {
8974 : type = first;
8975 : // otherwise is the second
8976 : } else {
8977 0 : type = name.at(1);
8978 : }
8979 : std::string type_s = std::string(1,type);
8980 13918 : if(AA_map.find(type_s) != AA_map.end()) {
8981 13918 : const unsigned index=AA_map[type_s];
8982 13918 : atoi[i] = AA_map[type_s];
8983 13918 : Iq_0 += param_b[index]-solv_sc_length*rho*param_v[index];
8984 : } else {
8985 0 : error("Wrong atom type "+type_s+" from atom name "+name+"\n");
8986 : }
8987 : }
8988 : } else {
8989 0 : error("MOLINFO DATA not found\n");
8990 : }
8991 4 : if(absolute) {
8992 : Iq_0 = 1;
8993 : }
8994 :
8995 4 : return Iq_0;
8996 : }
8997 :
8998 23 : std::map<std::string, std::vector<double> > SAXS::setupLCPOparam() {
8999 : std::map<std::string, std::vector<double> > lcpomap;
9000 :
9001 : // We arbitrarily set OC1/OT1 as the charged oxygen.
9002 :
9003 23 : lcpomap["ALA_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9004 23 : lcpomap["ALA_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9005 23 : lcpomap["ALA_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9006 23 : lcpomap["ALA_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9007 23 : lcpomap["ALA_CB"] = { 1.7, 0.77887, -0.28063, -0.0012968, 0.00039328};
9008 23 : lcpomap["ALA_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9009 23 : lcpomap["ALA_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9010 23 : lcpomap["ALA_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9011 23 : lcpomap["ALA_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9012 23 : lcpomap["ALA_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9013 :
9014 23 : lcpomap["ASP_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9015 23 : lcpomap["ASP_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9016 23 : lcpomap["ASP_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9017 23 : lcpomap["ASP_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9018 23 : lcpomap["ASP_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9019 23 : lcpomap["ASP_CG"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9020 23 : lcpomap["ASP_OD1"] = { 1.6, 0.77914, -0.25262, -0.0016056, 0.00035071};
9021 23 : lcpomap["ASP_OD2"] = { 1.6, 0.77914, -0.25262, -0.0016056, 0.00035071};
9022 23 : lcpomap["ASP_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9023 23 : lcpomap["ASP_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9024 23 : lcpomap["ASP_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9025 23 : lcpomap["ASP_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9026 23 : lcpomap["ASP_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9027 :
9028 23 : lcpomap["ASN_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9029 23 : lcpomap["ASN_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9030 23 : lcpomap["ASN_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9031 23 : lcpomap["ASN_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9032 23 : lcpomap["ASN_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9033 23 : lcpomap["ASN_CG"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9034 23 : lcpomap["ASN_OD1"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9035 23 : lcpomap["ASN_ND2"] = { 1.65, 0.73511, -0.22116, -0.00089148, 0.0002523};
9036 23 : lcpomap["ASN_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9037 23 : lcpomap["ASN_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9038 23 : lcpomap["ASN_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9039 23 : lcpomap["ASN_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9040 23 : lcpomap["ASN_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9041 :
9042 23 : lcpomap["ARG_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9043 23 : lcpomap["ARG_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9044 23 : lcpomap["ARG_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9045 23 : lcpomap["ARG_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9046 23 : lcpomap["ARG_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9047 23 : lcpomap["ARG_CG"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9048 23 : lcpomap["ARG_CD"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9049 23 : lcpomap["ARG_NE"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9050 23 : lcpomap["ARG_NH1"] = { 1.65, 0.73511, -0.22116, -0.00089148, 0.0002523};
9051 23 : lcpomap["ARG_NH2"] = { 1.65, 0.73511, -0.22116, -0.00089148, 0.0002523};
9052 23 : lcpomap["ARG_CZ"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9053 23 : lcpomap["ARG_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9054 23 : lcpomap["ARG_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9055 23 : lcpomap["ARG_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9056 23 : lcpomap["ARG_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9057 23 : lcpomap["ARG_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9058 :
9059 23 : lcpomap["CYS_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9060 23 : lcpomap["CYS_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9061 23 : lcpomap["CYS_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9062 23 : lcpomap["CYS_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9063 23 : lcpomap["CYS_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9064 23 : lcpomap["CYS_SG"] = { 1.9, 0.54581, -0.19477, -0.0012873, 0.00029247};
9065 23 : lcpomap["CYS_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9066 23 : lcpomap["CYS_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9067 23 : lcpomap["CYS_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9068 23 : lcpomap["CYS_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9069 23 : lcpomap["CYS_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9070 :
9071 23 : lcpomap["CYX_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9072 23 : lcpomap["CYX_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9073 23 : lcpomap["CYX_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9074 23 : lcpomap["CYX_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9075 23 : lcpomap["CYX_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9076 23 : lcpomap["CYX_SG"] = { 1.9, 0.54581, -0.19477, -0.0012873, 0.00029247};
9077 23 : lcpomap["CYX_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9078 23 : lcpomap["CYX_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9079 23 : lcpomap["CYX_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9080 23 : lcpomap["CYX_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9081 23 : lcpomap["CYX_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9082 :
9083 23 : lcpomap["GLU_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9084 23 : lcpomap["GLU_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9085 23 : lcpomap["GLU_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9086 23 : lcpomap["GLU_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9087 23 : lcpomap["GLU_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9088 23 : lcpomap["GLU_CG"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9089 23 : lcpomap["GLU_CD"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9090 23 : lcpomap["GLU_OE1"] = { 1.6, 0.77914, -0.25262, -0.0016056, 0.00035071};
9091 23 : lcpomap["GLU_OE2"] = { 1.6, 0.77914, -0.25262, -0.0016056, 0.00035071};
9092 23 : lcpomap["GLU_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9093 23 : lcpomap["GLU_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9094 23 : lcpomap["GLU_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9095 23 : lcpomap["GLU_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9096 23 : lcpomap["GLU_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9097 :
9098 23 : lcpomap["GLN_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9099 23 : lcpomap["GLN_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9100 23 : lcpomap["GLN_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9101 23 : lcpomap["GLN_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9102 23 : lcpomap["GLN_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9103 23 : lcpomap["GLN_CG"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9104 23 : lcpomap["GLN_CD"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9105 23 : lcpomap["GLN_OE1"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9106 23 : lcpomap["GLN_NE2"] = { 1.65, 0.73511, -0.22116, -0.00089148, 0.0002523};
9107 23 : lcpomap["GLN_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9108 23 : lcpomap["GLN_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9109 23 : lcpomap["GLN_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9110 23 : lcpomap["GLN_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9111 23 : lcpomap["GLN_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9112 :
9113 23 : lcpomap["GLY_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9114 23 : lcpomap["GLY_CA"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9115 23 : lcpomap["GLY_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9116 23 : lcpomap["GLY_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9117 23 : lcpomap["GLY_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9118 23 : lcpomap["GLY_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9119 23 : lcpomap["GLY_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9120 23 : lcpomap["GLY_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9121 23 : lcpomap["GLY_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9122 :
9123 23 : lcpomap["HIS_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9124 23 : lcpomap["HIS_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9125 23 : lcpomap["HIS_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9126 23 : lcpomap["HIS_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9127 23 : lcpomap["HIS_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9128 23 : lcpomap["HIS_CG"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9129 23 : lcpomap["HIS_ND1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9130 23 : lcpomap["HIS_CE1"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9131 23 : lcpomap["HIS_NE2"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9132 23 : lcpomap["HIS_CD2"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9133 23 : lcpomap["HIS_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9134 23 : lcpomap["HIS_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9135 23 : lcpomap["HIS_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9136 :
9137 23 : lcpomap["HIE_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9138 23 : lcpomap["HIE_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9139 23 : lcpomap["HIE_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9140 23 : lcpomap["HIE_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9141 23 : lcpomap["HIE_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9142 23 : lcpomap["HIE_CG"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9143 23 : lcpomap["HIE_ND1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9144 23 : lcpomap["HIE_CE1"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9145 23 : lcpomap["HIE_NE2"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9146 23 : lcpomap["HIE_CD2"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9147 23 : lcpomap["HIE_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9148 23 : lcpomap["HIE_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9149 23 : lcpomap["HIE_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9150 :
9151 23 : lcpomap["HSE_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9152 23 : lcpomap["HSE_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9153 23 : lcpomap["HSE_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9154 23 : lcpomap["HSE_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9155 23 : lcpomap["HSE_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9156 23 : lcpomap["HSE_CG"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9157 23 : lcpomap["HSE_ND1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9158 23 : lcpomap["HSE_CE1"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9159 23 : lcpomap["HSE_NE2"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9160 23 : lcpomap["HSE_CD2"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9161 23 : lcpomap["HSE_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9162 23 : lcpomap["HSE_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9163 23 : lcpomap["HSE_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9164 :
9165 23 : lcpomap["HID_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9166 23 : lcpomap["HID_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9167 23 : lcpomap["HID_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9168 23 : lcpomap["HID_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9169 23 : lcpomap["HID_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9170 23 : lcpomap["HID_CG"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9171 23 : lcpomap["HID_ND1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9172 23 : lcpomap["HID_CE1"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9173 23 : lcpomap["HID_NE2"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9174 23 : lcpomap["HID_CD2"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9175 23 : lcpomap["HID_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9176 23 : lcpomap["HID_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9177 23 : lcpomap["HID_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9178 :
9179 23 : lcpomap["HSD_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9180 23 : lcpomap["HSD_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9181 23 : lcpomap["HSD_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9182 23 : lcpomap["HSD_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9183 23 : lcpomap["HSD_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9184 23 : lcpomap["HSD_CG"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9185 23 : lcpomap["HSD_ND1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9186 23 : lcpomap["HSD_CE1"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9187 23 : lcpomap["HSD_NE2"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9188 23 : lcpomap["HSD_CD2"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9189 23 : lcpomap["HSD_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9190 23 : lcpomap["HSD_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9191 23 : lcpomap["HSD_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9192 :
9193 23 : lcpomap["HIP_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9194 23 : lcpomap["HIP_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9195 23 : lcpomap["HIP_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9196 23 : lcpomap["HIP_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9197 23 : lcpomap["HIP_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9198 23 : lcpomap["HIP_CG"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9199 23 : lcpomap["HIP_ND1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9200 23 : lcpomap["HIP_CE1"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9201 23 : lcpomap["HIP_NE2"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9202 23 : lcpomap["HIP_CD2"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9203 23 : lcpomap["HIP_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9204 23 : lcpomap["HIP_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9205 23 : lcpomap["HIP_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9206 :
9207 23 : lcpomap["HSP_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9208 23 : lcpomap["HSP_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9209 23 : lcpomap["HSP_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9210 23 : lcpomap["HSP_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9211 23 : lcpomap["HSP_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9212 23 : lcpomap["HSP_CG"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9213 23 : lcpomap["HSP_ND1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9214 23 : lcpomap["HSP_CE1"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9215 23 : lcpomap["HSP_NE2"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9216 23 : lcpomap["HSP_CD2"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9217 23 : lcpomap["HSP_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9218 23 : lcpomap["HSP_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9219 23 : lcpomap["HSP_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9220 :
9221 23 : lcpomap["ILE_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9222 23 : lcpomap["ILE_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9223 23 : lcpomap["ILE_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9224 23 : lcpomap["ILE_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9225 23 : lcpomap["ILE_CB"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9226 23 : lcpomap["ILE_CG2"] = { 1.7, 0.77887, -0.28063, -0.0012968, 0.00039328};
9227 23 : lcpomap["ILE_CG1"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9228 23 : lcpomap["ILE_CD1"] = { 1.7, 0.77887, -0.28063, -0.0012968, 0.00039328};
9229 23 : lcpomap["ILE_CD"] = { 1.7, 0.77887, -0.28063, -0.0012968, 0.00039328};
9230 23 : lcpomap["ILE_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9231 23 : lcpomap["ILE_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9232 23 : lcpomap["ILE_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9233 23 : lcpomap["ILE_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9234 23 : lcpomap["ILE_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9235 :
9236 23 : lcpomap["LEU_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9237 23 : lcpomap["LEU_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9238 23 : lcpomap["LEU_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9239 23 : lcpomap["LEU_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9240 23 : lcpomap["LEU_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9241 23 : lcpomap["LEU_CG"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9242 23 : lcpomap["LEU_CD1"] = { 1.7, 0.77887, -0.28063, -0.0012968, 0.00039328};
9243 23 : lcpomap["LEU_CD2"] = { 1.7, 0.77887, -0.28063, -0.0012968, 0.00039328};
9244 23 : lcpomap["LEU_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9245 23 : lcpomap["LEU_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9246 23 : lcpomap["LEU_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9247 23 : lcpomap["LEU_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9248 23 : lcpomap["LEU_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9249 :
9250 23 : lcpomap["LYS_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9251 23 : lcpomap["LYS_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9252 23 : lcpomap["LYS_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9253 23 : lcpomap["LYS_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9254 23 : lcpomap["LYS_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9255 23 : lcpomap["LYS_CG"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9256 23 : lcpomap["LYS_CD"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9257 23 : lcpomap["LYS_CE"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9258 23 : lcpomap["LYS_NZ"] = { 1.65, 0.73511, -0.22116, -0.00089148, 0.0002523};
9259 23 : lcpomap["LYS_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9260 23 : lcpomap["LYS_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9261 23 : lcpomap["LYS_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9262 23 : lcpomap["LYS_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9263 23 : lcpomap["LYS_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9264 :
9265 23 : lcpomap["MET_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9266 23 : lcpomap["MET_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9267 23 : lcpomap["MET_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9268 23 : lcpomap["MET_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9269 23 : lcpomap["MET_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9270 23 : lcpomap["MET_CG"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9271 23 : lcpomap["MET_SD"] = { 1.9, 0.54581, -0.19477, -0.0012873, 0.00029247};
9272 23 : lcpomap["MET_CE"] = { 1.7, 0.77887, -0.28063, -0.0012968, 0.00039328};
9273 23 : lcpomap["MET_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9274 23 : lcpomap["MET_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9275 23 : lcpomap["MET_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9276 23 : lcpomap["MET_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9277 23 : lcpomap["MET_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9278 :
9279 23 : lcpomap["PHE_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9280 23 : lcpomap["PHE_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9281 23 : lcpomap["PHE_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9282 23 : lcpomap["PHE_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9283 23 : lcpomap["PHE_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9284 23 : lcpomap["PHE_CG"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9285 23 : lcpomap["PHE_CD1"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9286 23 : lcpomap["PHE_CE1"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9287 23 : lcpomap["PHE_CZ"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9288 23 : lcpomap["PHE_CE2"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9289 23 : lcpomap["PHE_CD2"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9290 23 : lcpomap["PHE_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9291 23 : lcpomap["PHE_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9292 23 : lcpomap["PHE_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9293 23 : lcpomap["PHE_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9294 23 : lcpomap["PHE_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9295 :
9296 23 : lcpomap["PRO_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9297 23 : lcpomap["PRO_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9298 23 : lcpomap["PRO_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9299 23 : lcpomap["PRO_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9300 23 : lcpomap["PRO_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9301 23 : lcpomap["PRO_CG"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9302 23 : lcpomap["PRO_CD"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9303 23 : lcpomap["PRO_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9304 23 : lcpomap["PRO_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9305 23 : lcpomap["PRO_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9306 23 : lcpomap["PRO_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9307 23 : lcpomap["PRO_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9308 :
9309 23 : lcpomap["SER_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9310 23 : lcpomap["SER_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9311 23 : lcpomap["SER_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9312 23 : lcpomap["SER_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9313 23 : lcpomap["SER_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9314 23 : lcpomap["SER_OG"] = { 1.6, 0.77914, -0.25262, -0.0016056, 0.00035071};
9315 23 : lcpomap["SER_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9316 23 : lcpomap["SER_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9317 23 : lcpomap["SER_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9318 23 : lcpomap["SER_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9319 23 : lcpomap["SER_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9320 :
9321 23 : lcpomap["THR_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9322 23 : lcpomap["THR_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9323 23 : lcpomap["THR_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9324 23 : lcpomap["THR_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9325 23 : lcpomap["THR_CB"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9326 23 : lcpomap["THR_CG2"] = { 1.7, 0.77887, -0.28063, -0.0012968, 0.00039328};
9327 23 : lcpomap["THR_OG1"] = { 1.6, 0.77914, -0.25262, -0.0016056, 0.00035071};
9328 23 : lcpomap["THR_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9329 23 : lcpomap["THR_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9330 23 : lcpomap["THR_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9331 23 : lcpomap["THR_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9332 23 : lcpomap["THR_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9333 :
9334 23 : lcpomap["TRP_N"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9335 23 : lcpomap["TRP_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9336 23 : lcpomap["TRP_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9337 23 : lcpomap["TRP_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9338 23 : lcpomap["TRP_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9339 23 : lcpomap["TRP_CG"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9340 23 : lcpomap["TRP_CD1"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9341 23 : lcpomap["TRP_NE1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 0.00011804};
9342 23 : lcpomap["TRP_CE2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9343 23 : lcpomap["TRP_CZ2"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9344 23 : lcpomap["TRP_CH2"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9345 23 : lcpomap["TRP_CZ3"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9346 23 : lcpomap["TRP_CE3"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9347 23 : lcpomap["TRP_CD2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9348 23 : lcpomap["TRP_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9349 23 : lcpomap["TRP_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9350 23 : lcpomap["TRP_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9351 23 : lcpomap["TRP_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9352 23 : lcpomap["TRP_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9353 :
9354 23 : lcpomap["TYR_N"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05};
9355 23 : lcpomap["TYR_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9356 23 : lcpomap["TYR_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9357 23 : lcpomap["TYR_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9358 23 : lcpomap["TYR_CB"] = { 1.7, 0.56482, -0.19608, -0.0010219, 0.0002658};
9359 23 : lcpomap["TYR_CG"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9360 23 : lcpomap["TYR_CD1"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9361 23 : lcpomap["TYR_CE1"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9362 23 : lcpomap["TYR_CZ"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9363 23 : lcpomap["TYR_OH"] = { 1.6, 0.77914, -0.25262, -0.0016056, 0.00035071};
9364 23 : lcpomap["TYR_CE2"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9365 23 : lcpomap["TYR_CD2"] = { 1.7, 0.51245, -0.15966, -0.00019781, 0.00016392};
9366 23 : lcpomap["TYR_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9367 23 : lcpomap["TYR_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9368 23 : lcpomap["TYR_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9369 23 : lcpomap["TYR_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9370 23 : lcpomap["TYR_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9371 :
9372 23 : lcpomap["VAL_N"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05};
9373 23 : lcpomap["VAL_CA"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9374 23 : lcpomap["VAL_C"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9375 23 : lcpomap["VAL_O"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9376 23 : lcpomap["VAL_CB"] = { 1.7, 0.23348, -0.072627, -0.00020079, 7.967e-05};
9377 23 : lcpomap["VAL_CG1"] = { 1.7, 0.77887, -0.28063, -0.0012968, 0.00039328};
9378 23 : lcpomap["VAL_CG2"] = { 1.7, 0.77887, -0.28063, -0.0012968, 0.00039328};
9379 23 : lcpomap["VAL_OC1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9380 23 : lcpomap["VAL_OC2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9381 23 : lcpomap["VAL_OT1"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9382 23 : lcpomap["VAL_OT2"] = { 1.6, 0.68563, -0.1868, -0.00135573, 0.00023743};
9383 23 : lcpomap["VAL_OXT"] = { 1.6, 0.88857, -0.33421, -0.0018683, 0.00049372};
9384 :
9385 : // nucleic acids - WARNING: ONLY AMBER (OL3-rna/OL15-dna) FORMAT
9386 :
9387 23 : lcpomap["A3_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9388 23 : lcpomap["A3_C2"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9389 23 : lcpomap["A3_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9390 23 : lcpomap["A3_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9391 23 : lcpomap["A3_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9392 23 : lcpomap["A3_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9393 23 : lcpomap["A3_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9394 23 : lcpomap["A3_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9395 23 : lcpomap["A3_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9396 23 : lcpomap["A3_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9397 23 : lcpomap["A3_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9398 23 : lcpomap["A3_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9399 23 : lcpomap["A3_N6"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9400 23 : lcpomap["A3_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9401 23 : lcpomap["A3_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9402 23 : lcpomap["A3_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9403 23 : lcpomap["A3_O3'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9404 23 : lcpomap["A3_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9405 23 : lcpomap["A3_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9406 23 : lcpomap["A3_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9407 23 : lcpomap["A3_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9408 23 : lcpomap["A3_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9409 23 : lcpomap["A3_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9410 23 : lcpomap["A3_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9411 23 : lcpomap["A3_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9412 23 : lcpomap["A3_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9413 :
9414 23 : lcpomap["A5_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9415 23 : lcpomap["A5_C2"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9416 23 : lcpomap["A5_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9417 23 : lcpomap["A5_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9418 23 : lcpomap["A5_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9419 23 : lcpomap["A5_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9420 23 : lcpomap["A5_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9421 23 : lcpomap["A5_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9422 23 : lcpomap["A5_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9423 23 : lcpomap["A5_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9424 23 : lcpomap["A5_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9425 23 : lcpomap["A5_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9426 23 : lcpomap["A5_N6"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9427 23 : lcpomap["A5_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9428 23 : lcpomap["A5_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9429 23 : lcpomap["A5_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9430 23 : lcpomap["A5_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9431 23 : lcpomap["A5_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9432 23 : lcpomap["A5_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9433 23 : lcpomap["A5_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9434 23 : lcpomap["A5_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9435 23 : lcpomap["A5_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9436 23 : lcpomap["A5_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9437 23 : lcpomap["A5_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9438 :
9439 23 : lcpomap["AT_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9440 23 : lcpomap["AT_C2"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9441 23 : lcpomap["AT_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9442 23 : lcpomap["AT_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9443 23 : lcpomap["AT_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9444 23 : lcpomap["AT_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9445 23 : lcpomap["AT_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9446 23 : lcpomap["AT_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9447 23 : lcpomap["AT_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9448 23 : lcpomap["AT_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9449 23 : lcpomap["AT_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9450 23 : lcpomap["AT_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9451 23 : lcpomap["AT_N6"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9452 23 : lcpomap["AT_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9453 23 : lcpomap["AT_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9454 23 : lcpomap["AT_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9455 23 : lcpomap["AT_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9456 23 : lcpomap["AT_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9457 23 : lcpomap["AT_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9458 23 : lcpomap["AT_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9459 23 : lcpomap["AT_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9460 23 : lcpomap["AT_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9461 23 : lcpomap["AT_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9462 23 : lcpomap["AT_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9463 23 : lcpomap["AT_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9464 23 : lcpomap["AT_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9465 :
9466 23 : lcpomap["A_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9467 23 : lcpomap["A_C2"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9468 23 : lcpomap["A_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9469 23 : lcpomap["A_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9470 23 : lcpomap["A_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9471 23 : lcpomap["A_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9472 23 : lcpomap["A_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9473 23 : lcpomap["A_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9474 23 : lcpomap["A_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9475 23 : lcpomap["A_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9476 23 : lcpomap["A_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9477 23 : lcpomap["A_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9478 23 : lcpomap["A_N6"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9479 23 : lcpomap["A_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9480 23 : lcpomap["A_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9481 23 : lcpomap["A_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9482 23 : lcpomap["A_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9483 23 : lcpomap["A_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9484 23 : lcpomap["A_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9485 23 : lcpomap["A_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9486 23 : lcpomap["A_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9487 23 : lcpomap["A_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9488 23 : lcpomap["A_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9489 23 : lcpomap["A_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9490 23 : lcpomap["A_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9491 23 : lcpomap["A_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9492 :
9493 23 : lcpomap["C3_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9494 23 : lcpomap["C3_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9495 23 : lcpomap["C3_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9496 23 : lcpomap["C3_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9497 23 : lcpomap["C3_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9498 23 : lcpomap["C3_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9499 23 : lcpomap["C3_C5"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9500 23 : lcpomap["C3_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9501 23 : lcpomap["C3_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9502 23 : lcpomap["C3_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9503 23 : lcpomap["C3_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9504 23 : lcpomap["C3_N4"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9505 23 : lcpomap["C3_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9506 23 : lcpomap["C3_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9507 23 : lcpomap["C3_O3'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9508 23 : lcpomap["C3_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9509 23 : lcpomap["C3_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9510 23 : lcpomap["C3_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9511 23 : lcpomap["C3_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9512 23 : lcpomap["C3_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9513 23 : lcpomap["C3_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9514 23 : lcpomap["C3_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9515 23 : lcpomap["C3_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9516 23 : lcpomap["C3_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9517 :
9518 23 : lcpomap["C5_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9519 23 : lcpomap["C5_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9520 23 : lcpomap["C5_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9521 23 : lcpomap["C5_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9522 23 : lcpomap["C5_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9523 23 : lcpomap["C5_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9524 23 : lcpomap["C5_C5"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9525 23 : lcpomap["C5_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9526 23 : lcpomap["C5_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9527 23 : lcpomap["C5_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9528 23 : lcpomap["C5_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9529 23 : lcpomap["C5_N4"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9530 23 : lcpomap["C5_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9531 23 : lcpomap["C5_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9532 23 : lcpomap["C5_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9533 23 : lcpomap["C5_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9534 23 : lcpomap["C5_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9535 23 : lcpomap["C5_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9536 23 : lcpomap["C5_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9537 23 : lcpomap["C5_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9538 23 : lcpomap["C5_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9539 23 : lcpomap["C5_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9540 :
9541 23 : lcpomap["CT_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9542 23 : lcpomap["CT_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9543 23 : lcpomap["CT_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9544 23 : lcpomap["CT_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9545 23 : lcpomap["CT_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9546 23 : lcpomap["CT_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9547 23 : lcpomap["CT_C5"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9548 23 : lcpomap["CT_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9549 23 : lcpomap["CT_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9550 23 : lcpomap["CT_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9551 23 : lcpomap["CT_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9552 23 : lcpomap["CT_N4"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9553 23 : lcpomap["CT_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9554 23 : lcpomap["CT_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9555 23 : lcpomap["CT_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9556 23 : lcpomap["CT_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9557 23 : lcpomap["CT_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9558 23 : lcpomap["CT_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9559 23 : lcpomap["CT_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9560 23 : lcpomap["CT_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9561 23 : lcpomap["CT_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9562 23 : lcpomap["CT_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9563 23 : lcpomap["CT_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9564 23 : lcpomap["CT_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9565 :
9566 23 : lcpomap["C_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9567 23 : lcpomap["C_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9568 23 : lcpomap["C_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9569 23 : lcpomap["C_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9570 23 : lcpomap["C_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9571 23 : lcpomap["C_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9572 23 : lcpomap["C_C5"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9573 23 : lcpomap["C_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9574 23 : lcpomap["C_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9575 23 : lcpomap["C_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9576 23 : lcpomap["C_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9577 23 : lcpomap["C_N4"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9578 23 : lcpomap["C_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9579 23 : lcpomap["C_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9580 23 : lcpomap["C_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9581 23 : lcpomap["C_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9582 23 : lcpomap["C_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9583 23 : lcpomap["C_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9584 23 : lcpomap["C_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9585 23 : lcpomap["C_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9586 23 : lcpomap["C_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9587 23 : lcpomap["C_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9588 23 : lcpomap["C_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9589 23 : lcpomap["C_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9590 :
9591 23 : lcpomap["DA3_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9592 23 : lcpomap["DA3_C2"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9593 23 : lcpomap["DA3_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9594 23 : lcpomap["DA3_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9595 23 : lcpomap["DA3_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9596 23 : lcpomap["DA3_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9597 23 : lcpomap["DA3_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9598 23 : lcpomap["DA3_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9599 23 : lcpomap["DA3_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9600 23 : lcpomap["DA3_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9601 23 : lcpomap["DA3_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9602 23 : lcpomap["DA3_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9603 23 : lcpomap["DA3_N6"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9604 23 : lcpomap["DA3_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9605 23 : lcpomap["DA3_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9606 23 : lcpomap["DA3_O3'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9607 23 : lcpomap["DA3_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9608 23 : lcpomap["DA3_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9609 23 : lcpomap["DA3_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9610 23 : lcpomap["DA3_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9611 23 : lcpomap["DA3_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9612 23 : lcpomap["DA3_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9613 23 : lcpomap["DA3_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9614 23 : lcpomap["DA3_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9615 23 : lcpomap["DA3_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9616 :
9617 23 : lcpomap["DA5_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9618 23 : lcpomap["DA5_C2"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9619 23 : lcpomap["DA5_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9620 23 : lcpomap["DA5_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9621 23 : lcpomap["DA5_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9622 23 : lcpomap["DA5_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9623 23 : lcpomap["DA5_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9624 23 : lcpomap["DA5_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9625 23 : lcpomap["DA5_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9626 23 : lcpomap["DA5_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9627 23 : lcpomap["DA5_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9628 23 : lcpomap["DA5_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9629 23 : lcpomap["DA5_N6"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9630 23 : lcpomap["DA5_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9631 23 : lcpomap["DA5_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9632 23 : lcpomap["DA5_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9633 23 : lcpomap["DA5_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9634 23 : lcpomap["DA5_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9635 23 : lcpomap["DA5_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9636 23 : lcpomap["DA5_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9637 23 : lcpomap["DA5_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9638 23 : lcpomap["DA5_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9639 23 : lcpomap["DA5_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9640 :
9641 23 : lcpomap["DAT_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9642 23 : lcpomap["DAT_C2"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9643 23 : lcpomap["DAT_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9644 23 : lcpomap["DAT_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9645 23 : lcpomap["DAT_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9646 23 : lcpomap["DAT_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9647 23 : lcpomap["DAT_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9648 23 : lcpomap["DAT_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9649 23 : lcpomap["DAT_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9650 23 : lcpomap["DAT_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9651 23 : lcpomap["DAT_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9652 23 : lcpomap["DAT_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9653 23 : lcpomap["DAT_N6"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9654 23 : lcpomap["DAT_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9655 23 : lcpomap["DAT_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9656 23 : lcpomap["DAT_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9657 23 : lcpomap["DAT_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9658 23 : lcpomap["DAT_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9659 23 : lcpomap["DAT_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9660 23 : lcpomap["DAT_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9661 23 : lcpomap["DAT_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9662 23 : lcpomap["DAT_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9663 23 : lcpomap["DAT_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9664 23 : lcpomap["DAT_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9665 23 : lcpomap["DAT_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9666 :
9667 23 : lcpomap["DA_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9668 23 : lcpomap["DA_C2"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9669 23 : lcpomap["DA_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9670 23 : lcpomap["DA_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9671 23 : lcpomap["DA_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9672 23 : lcpomap["DA_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9673 23 : lcpomap["DA_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9674 23 : lcpomap["DA_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9675 23 : lcpomap["DA_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9676 23 : lcpomap["DA_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9677 23 : lcpomap["DA_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9678 23 : lcpomap["DA_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9679 23 : lcpomap["DA_N6"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9680 23 : lcpomap["DA_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9681 23 : lcpomap["DA_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9682 23 : lcpomap["DA_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9683 23 : lcpomap["DA_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9684 23 : lcpomap["DA_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9685 23 : lcpomap["DA_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9686 23 : lcpomap["DA_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9687 23 : lcpomap["DA_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9688 23 : lcpomap["DA_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9689 23 : lcpomap["DA_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9690 23 : lcpomap["DA_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9691 23 : lcpomap["DA_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9692 :
9693 23 : lcpomap["DC3_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9694 23 : lcpomap["DC3_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9695 23 : lcpomap["DC3_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9696 23 : lcpomap["DC3_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9697 23 : lcpomap["DC3_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9698 23 : lcpomap["DC3_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9699 23 : lcpomap["DC3_C5"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9700 23 : lcpomap["DC3_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9701 23 : lcpomap["DC3_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9702 23 : lcpomap["DC3_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9703 23 : lcpomap["DC3_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9704 23 : lcpomap["DC3_N4"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9705 23 : lcpomap["DC3_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9706 23 : lcpomap["DC3_O3'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9707 23 : lcpomap["DC3_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9708 23 : lcpomap["DC3_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9709 23 : lcpomap["DC3_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9710 23 : lcpomap["DC3_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9711 23 : lcpomap["DC3_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9712 23 : lcpomap["DC3_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9713 23 : lcpomap["DC3_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9714 23 : lcpomap["DC3_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9715 23 : lcpomap["DC3_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9716 :
9717 23 : lcpomap["DC5_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9718 23 : lcpomap["DC5_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9719 23 : lcpomap["DC5_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9720 23 : lcpomap["DC5_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9721 23 : lcpomap["DC5_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9722 23 : lcpomap["DC5_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9723 23 : lcpomap["DC5_C5"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9724 23 : lcpomap["DC5_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9725 23 : lcpomap["DC5_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9726 23 : lcpomap["DC5_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9727 23 : lcpomap["DC5_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9728 23 : lcpomap["DC5_N4"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9729 23 : lcpomap["DC5_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9730 23 : lcpomap["DC5_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9731 23 : lcpomap["DC5_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9732 23 : lcpomap["DC5_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9733 23 : lcpomap["DC5_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9734 23 : lcpomap["DC5_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9735 23 : lcpomap["DC5_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9736 23 : lcpomap["DC5_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9737 23 : lcpomap["DC5_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9738 :
9739 23 : lcpomap["DCT_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9740 23 : lcpomap["DCT_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9741 23 : lcpomap["DCT_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9742 23 : lcpomap["DCT_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9743 23 : lcpomap["DCT_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
9744 23 : lcpomap["DCT_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9745 23 : lcpomap["DCT_C5"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9746 23 : lcpomap["DCT_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9747 23 : lcpomap["DCT_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9748 23 : lcpomap["DCT_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05};
9749 23 : lcpomap["DCT_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9750 23 : lcpomap["DCT_N4"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9751 23 : lcpomap["DCT_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9752 23 : lcpomap["DCT_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9753 23 : lcpomap["DCT_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9754 23 : lcpomap["DCT_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9755 23 : lcpomap["DCT_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9756 23 : lcpomap["DCT_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9757 23 : lcpomap["DCT_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9758 23 : lcpomap["DCT_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9759 23 : lcpomap["DCT_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9760 23 : lcpomap["DCT_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9761 23 : lcpomap["DCT_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9762 :
9763 23 : lcpomap["DC_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9764 23 : lcpomap["DC_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9765 23 : lcpomap["DC_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9766 23 : lcpomap["DC_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9767 23 : lcpomap["DC_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9768 23 : lcpomap["DC_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9769 23 : lcpomap["DC_C5"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9770 23 : lcpomap["DC_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9771 23 : lcpomap["DC_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9772 23 : lcpomap["DC_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9773 23 : lcpomap["DC_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9774 23 : lcpomap["DC_N4"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9775 23 : lcpomap["DC_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9776 23 : lcpomap["DC_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9777 23 : lcpomap["DC_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9778 23 : lcpomap["DC_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9779 23 : lcpomap["DC_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9780 23 : lcpomap["DC_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9781 23 : lcpomap["DC_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9782 23 : lcpomap["DC_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9783 23 : lcpomap["DC_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9784 23 : lcpomap["DC_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9785 23 : lcpomap["DC_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9786 :
9787 23 : lcpomap["DG3_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9788 23 : lcpomap["DG3_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9789 23 : lcpomap["DG3_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9790 23 : lcpomap["DG3_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9791 23 : lcpomap["DG3_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9792 23 : lcpomap["DG3_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9793 23 : lcpomap["DG3_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9794 23 : lcpomap["DG3_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9795 23 : lcpomap["DG3_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9796 23 : lcpomap["DG3_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9797 23 : lcpomap["DG3_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9798 23 : lcpomap["DG3_N2"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9799 23 : lcpomap["DG3_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9800 23 : lcpomap["DG3_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9801 23 : lcpomap["DG3_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9802 23 : lcpomap["DG3_O3'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9803 23 : lcpomap["DG3_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9804 23 : lcpomap["DG3_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9805 23 : lcpomap["DG3_O6"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9806 23 : lcpomap["DG3_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9807 23 : lcpomap["DG3_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9808 23 : lcpomap["DG3_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9809 23 : lcpomap["DG3_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9810 23 : lcpomap["DG3_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9811 23 : lcpomap["DG3_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9812 23 : lcpomap["DG3_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9813 :
9814 23 : lcpomap["DG5_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9815 23 : lcpomap["DG5_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9816 23 : lcpomap["DG5_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9817 23 : lcpomap["DG5_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9818 23 : lcpomap["DG5_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9819 23 : lcpomap["DG5_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9820 23 : lcpomap["DG5_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9821 23 : lcpomap["DG5_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9822 23 : lcpomap["DG5_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9823 23 : lcpomap["DG5_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9824 23 : lcpomap["DG5_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9825 23 : lcpomap["DG5_N2"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9826 23 : lcpomap["DG5_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9827 23 : lcpomap["DG5_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9828 23 : lcpomap["DG5_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9829 23 : lcpomap["DG5_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9830 23 : lcpomap["DG5_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9831 23 : lcpomap["DG5_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9832 23 : lcpomap["DG5_O6"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9833 23 : lcpomap["DG5_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9834 23 : lcpomap["DG5_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9835 23 : lcpomap["DG5_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9836 23 : lcpomap["DG5_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9837 23 : lcpomap["DG5_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9838 :
9839 23 : lcpomap["DGT_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9840 23 : lcpomap["DGT_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9841 23 : lcpomap["DGT_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9842 23 : lcpomap["DGT_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9843 23 : lcpomap["DGT_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9844 23 : lcpomap["DGT_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9845 23 : lcpomap["DGT_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9846 23 : lcpomap["DGT_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9847 23 : lcpomap["DGT_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9848 23 : lcpomap["DGT_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9849 23 : lcpomap["DGT_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9850 23 : lcpomap["DGT_N2"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9851 23 : lcpomap["DGT_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9852 23 : lcpomap["DGT_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9853 23 : lcpomap["DGT_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9854 23 : lcpomap["DGT_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9855 23 : lcpomap["DGT_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9856 23 : lcpomap["DGT_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9857 23 : lcpomap["DGT_O6"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9858 23 : lcpomap["DGT_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9859 23 : lcpomap["DGT_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9860 23 : lcpomap["DGT_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9861 23 : lcpomap["DGT_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9862 23 : lcpomap["DGT_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9863 23 : lcpomap["DGT_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9864 23 : lcpomap["DGT_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9865 :
9866 23 : lcpomap["DG_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9867 23 : lcpomap["DG_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9868 23 : lcpomap["DG_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9869 23 : lcpomap["DG_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9870 23 : lcpomap["DG_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9871 23 : lcpomap["DG_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9872 23 : lcpomap["DG_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9873 23 : lcpomap["DG_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9874 23 : lcpomap["DG_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9875 23 : lcpomap["DG_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9876 23 : lcpomap["DG_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9877 23 : lcpomap["DG_N2"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
9878 23 : lcpomap["DG_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9879 23 : lcpomap["DG_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9880 23 : lcpomap["DG_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9881 23 : lcpomap["DG_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9882 23 : lcpomap["DG_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9883 23 : lcpomap["DG_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9884 23 : lcpomap["DG_O6"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9885 23 : lcpomap["DG_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9886 23 : lcpomap["DG_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9887 23 : lcpomap["DG_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9888 23 : lcpomap["DG_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9889 23 : lcpomap["DG_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9890 23 : lcpomap["DG_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9891 23 : lcpomap["DG_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9892 :
9893 23 : lcpomap["DT3_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9894 23 : lcpomap["DT3_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9895 23 : lcpomap["DT3_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9896 23 : lcpomap["DT3_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9897 23 : lcpomap["DT3_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9898 23 : lcpomap["DT3_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9899 23 : lcpomap["DT3_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9900 23 : lcpomap["DT3_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9901 23 : lcpomap["DT3_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9902 23 : lcpomap["DT3_C7"] = { 1.7, 0.77887, -0.28063, -1.2968e-03, 3.9328e-04 };
9903 23 : lcpomap["DT3_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9904 23 : lcpomap["DT3_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9905 23 : lcpomap["DT3_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9906 23 : lcpomap["DT3_O3'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9907 23 : lcpomap["DT3_O4"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9908 23 : lcpomap["DT3_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9909 23 : lcpomap["DT3_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9910 23 : lcpomap["DT3_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9911 23 : lcpomap["DT3_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9912 23 : lcpomap["DT3_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9913 23 : lcpomap["DT3_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9914 23 : lcpomap["DT3_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9915 23 : lcpomap["DT3_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9916 23 : lcpomap["DT3_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9917 :
9918 23 : lcpomap["DT5_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9919 23 : lcpomap["DT5_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9920 23 : lcpomap["DT5_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9921 23 : lcpomap["DT5_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9922 23 : lcpomap["DT5_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9923 23 : lcpomap["DT5_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9924 23 : lcpomap["DT5_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9925 23 : lcpomap["DT5_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9926 23 : lcpomap["DT5_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9927 23 : lcpomap["DT5_C7"] = { 1.7, 0.77887, -0.28063, -1.2968e-03, 3.9328e-04 };
9928 23 : lcpomap["DT5_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9929 23 : lcpomap["DT5_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9930 23 : lcpomap["DT5_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9931 23 : lcpomap["DT5_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9932 23 : lcpomap["DT5_O4"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9933 23 : lcpomap["DT5_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9934 23 : lcpomap["DT5_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9935 23 : lcpomap["DT5_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9936 23 : lcpomap["DT5_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9937 23 : lcpomap["DT5_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9938 23 : lcpomap["DT5_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9939 23 : lcpomap["DT5_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9940 :
9941 23 : lcpomap["DTT_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9942 23 : lcpomap["DTT_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9943 23 : lcpomap["DTT_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9944 23 : lcpomap["DTT_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9945 23 : lcpomap["DTT_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9946 23 : lcpomap["DTT_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9947 23 : lcpomap["DTT_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9948 23 : lcpomap["DTT_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9949 23 : lcpomap["DTT_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9950 23 : lcpomap["DTT_C7"] = { 1.7, 0.77887, -0.28063, -1.2968e-03, 3.9328e-04 };
9951 23 : lcpomap["DTT_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9952 23 : lcpomap["DTT_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9953 23 : lcpomap["DTT_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9954 23 : lcpomap["DTT_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9955 23 : lcpomap["DTT_O4"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9956 23 : lcpomap["DTT_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9957 23 : lcpomap["DTT_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9958 23 : lcpomap["DTT_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9959 23 : lcpomap["DTT_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9960 23 : lcpomap["DTT_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9961 23 : lcpomap["DTT_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9962 23 : lcpomap["DTT_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9963 23 : lcpomap["DTT_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9964 23 : lcpomap["DTT_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9965 :
9966 23 : lcpomap["DT_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9967 23 : lcpomap["DT_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9968 23 : lcpomap["DT_C2'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9969 23 : lcpomap["DT_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9970 23 : lcpomap["DT_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9971 23 : lcpomap["DT_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9972 23 : lcpomap["DT_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9973 23 : lcpomap["DT_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9974 23 : lcpomap["DT_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
9975 23 : lcpomap["DT_C7"] = { 1.7, 0.77887, -0.28063, -1.2968e-03, 3.9328e-04 };
9976 23 : lcpomap["DT_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
9977 23 : lcpomap["DT_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
9978 23 : lcpomap["DT_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9979 23 : lcpomap["DT_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9980 23 : lcpomap["DT_O4"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
9981 23 : lcpomap["DT_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9982 23 : lcpomap["DT_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
9983 23 : lcpomap["DT_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9984 23 : lcpomap["DT_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9985 23 : lcpomap["DT_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9986 23 : lcpomap["DT_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
9987 23 : lcpomap["DT_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9988 23 : lcpomap["DT_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
9989 23 : lcpomap["DT_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
9990 :
9991 23 : lcpomap["G3_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9992 23 : lcpomap["G3_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9993 23 : lcpomap["G3_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9994 23 : lcpomap["G3_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9995 23 : lcpomap["G3_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9996 23 : lcpomap["G3_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
9997 23 : lcpomap["G3_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
9998 23 : lcpomap["G3_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
9999 23 : lcpomap["G3_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10000 23 : lcpomap["G3_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
10001 23 : lcpomap["G3_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10002 23 : lcpomap["G3_N2"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
10003 23 : lcpomap["G3_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10004 23 : lcpomap["G3_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10005 23 : lcpomap["G3_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
10006 23 : lcpomap["G3_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10007 23 : lcpomap["G3_O3'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10008 23 : lcpomap["G3_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10009 23 : lcpomap["G3_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10010 23 : lcpomap["G3_O6"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
10011 23 : lcpomap["G3_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10012 23 : lcpomap["G3_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10013 23 : lcpomap["G3_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10014 23 : lcpomap["G3_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10015 23 : lcpomap["G3_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10016 23 : lcpomap["G3_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10017 23 : lcpomap["G3_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
10018 :
10019 23 : lcpomap["G5_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10020 23 : lcpomap["G5_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10021 23 : lcpomap["G5_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10022 23 : lcpomap["G5_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10023 23 : lcpomap["G5_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10024 23 : lcpomap["G5_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10025 23 : lcpomap["G5_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10026 23 : lcpomap["G5_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
10027 23 : lcpomap["G5_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10028 23 : lcpomap["G5_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
10029 23 : lcpomap["G5_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10030 23 : lcpomap["G5_N2"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
10031 23 : lcpomap["G5_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10032 23 : lcpomap["G5_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10033 23 : lcpomap["G5_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
10034 23 : lcpomap["G5_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10035 23 : lcpomap["G5_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10036 23 : lcpomap["G5_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10037 23 : lcpomap["G5_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10038 23 : lcpomap["G5_O6"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
10039 23 : lcpomap["G5_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10040 23 : lcpomap["G5_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10041 23 : lcpomap["G5_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10042 23 : lcpomap["G5_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10043 23 : lcpomap["G5_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
10044 :
10045 23 : lcpomap["GT_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10046 23 : lcpomap["GT_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10047 23 : lcpomap["GT_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10048 23 : lcpomap["GT_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10049 23 : lcpomap["GT_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10050 23 : lcpomap["GT_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10051 23 : lcpomap["GT_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10052 23 : lcpomap["GT_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
10053 23 : lcpomap["GT_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10054 23 : lcpomap["GT_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
10055 23 : lcpomap["GT_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10056 23 : lcpomap["GT_N2"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
10057 23 : lcpomap["GT_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10058 23 : lcpomap["GT_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10059 23 : lcpomap["GT_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
10060 23 : lcpomap["GT_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10061 23 : lcpomap["GT_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10062 23 : lcpomap["GT_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10063 23 : lcpomap["GT_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10064 23 : lcpomap["GT_O6"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
10065 23 : lcpomap["GT_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10066 23 : lcpomap["GT_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10067 23 : lcpomap["GT_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10068 23 : lcpomap["GT_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10069 23 : lcpomap["GT_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10070 23 : lcpomap["GT_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10071 23 : lcpomap["GT_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
10072 :
10073 23 : lcpomap["G_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10074 23 : lcpomap["G_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10075 23 : lcpomap["G_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10076 23 : lcpomap["G_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10077 23 : lcpomap["G_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10078 23 : lcpomap["G_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10079 23 : lcpomap["G_C5"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10080 23 : lcpomap["G_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
10081 23 : lcpomap["G_C6"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10082 23 : lcpomap["G_C8"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
10083 23 : lcpomap["G_N1"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10084 23 : lcpomap["G_N2"] = { 1.65, 0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
10085 23 : lcpomap["G_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10086 23 : lcpomap["G_N7"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10087 23 : lcpomap["G_N9"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
10088 23 : lcpomap["G_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10089 23 : lcpomap["G_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10090 23 : lcpomap["G_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10091 23 : lcpomap["G_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10092 23 : lcpomap["G_O6"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
10093 23 : lcpomap["G_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10094 23 : lcpomap["G_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10095 23 : lcpomap["G_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10096 23 : lcpomap["G_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10097 23 : lcpomap["G_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10098 23 : lcpomap["G_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10099 23 : lcpomap["G_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
10100 :
10101 23 : lcpomap["U3_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10102 23 : lcpomap["U3_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10103 23 : lcpomap["U3_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10104 23 : lcpomap["U3_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10105 23 : lcpomap["U3_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10106 23 : lcpomap["U3_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10107 23 : lcpomap["U3_C5"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
10108 23 : lcpomap["U3_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
10109 23 : lcpomap["U3_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
10110 23 : lcpomap["U3_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
10111 23 : lcpomap["U3_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10112 23 : lcpomap["U3_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
10113 23 : lcpomap["U3_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10114 23 : lcpomap["U3_O3'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10115 23 : lcpomap["U3_O4"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
10116 23 : lcpomap["U3_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10117 23 : lcpomap["U3_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10118 23 : lcpomap["U3_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10119 23 : lcpomap["U3_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10120 23 : lcpomap["U3_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10121 23 : lcpomap["U3_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10122 23 : lcpomap["U3_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10123 23 : lcpomap["U3_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10124 23 : lcpomap["U3_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
10125 :
10126 23 : lcpomap["U5_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10127 23 : lcpomap["U5_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10128 23 : lcpomap["U5_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10129 23 : lcpomap["U5_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10130 23 : lcpomap["U5_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10131 23 : lcpomap["U5_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10132 23 : lcpomap["U5_C5"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
10133 23 : lcpomap["U5_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
10134 23 : lcpomap["U5_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
10135 23 : lcpomap["U5_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
10136 23 : lcpomap["U5_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10137 23 : lcpomap["U5_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
10138 23 : lcpomap["U5_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10139 23 : lcpomap["U5_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10140 23 : lcpomap["U5_O4"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
10141 23 : lcpomap["U5_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10142 23 : lcpomap["U5_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10143 23 : lcpomap["U5_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10144 23 : lcpomap["U5_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10145 23 : lcpomap["U5_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10146 23 : lcpomap["U5_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10147 23 : lcpomap["U5_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
10148 :
10149 23 : lcpomap["UT_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10150 23 : lcpomap["UT_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10151 23 : lcpomap["UT_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10152 23 : lcpomap["UT_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10153 23 : lcpomap["UT_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10154 23 : lcpomap["UT_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10155 23 : lcpomap["UT_C5"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
10156 23 : lcpomap["UT_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
10157 23 : lcpomap["UT_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
10158 23 : lcpomap["UT_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
10159 23 : lcpomap["UT_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10160 23 : lcpomap["UT_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
10161 23 : lcpomap["UT_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10162 23 : lcpomap["UT_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10163 23 : lcpomap["UT_O4"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
10164 23 : lcpomap["UT_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10165 23 : lcpomap["UT_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10166 23 : lcpomap["UT_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10167 23 : lcpomap["UT_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10168 23 : lcpomap["UT_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10169 23 : lcpomap["UT_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10170 23 : lcpomap["UT_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10171 23 : lcpomap["UT_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10172 23 : lcpomap["UT_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
10173 :
10174 23 : lcpomap["U_C1'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10175 23 : lcpomap["U_C2"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10176 23 : lcpomap["U_C2'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10177 23 : lcpomap["U_C3'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10178 23 : lcpomap["U_C4"] = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
10179 23 : lcpomap["U_C4'"] = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
10180 23 : lcpomap["U_C5"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
10181 23 : lcpomap["U_C5'"] = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
10182 23 : lcpomap["U_C6"] = { 1.7, 0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
10183 23 : lcpomap["U_N1"] = { 1.65, 0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
10184 23 : lcpomap["U_N3"] = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
10185 23 : lcpomap["U_O2"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
10186 23 : lcpomap["U_O2'"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10187 23 : lcpomap["U_O3'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10188 23 : lcpomap["U_O4"] = { 1.6, 0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
10189 23 : lcpomap["U_O4'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10190 23 : lcpomap["U_O5'"] = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
10191 23 : lcpomap["U_OP1"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10192 23 : lcpomap["U_OP2"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10193 23 : lcpomap["U_OP3"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10194 23 : lcpomap["U_O1P"] = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
10195 23 : lcpomap["U_O2P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10196 23 : lcpomap["U_O3P"] = { 1.6, 0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
10197 23 : lcpomap["U_P"] = { 1.9, 0.03873, -0.0089339, 8.3582e-06, 3.0381e-06};
10198 :
10199 : // ---------------------------------------------------------------------------
10200 : // Glycans.
10201 : //
10202 : // No new fitting is involved here. The LCPO atom classes of Weiser, Shenkin and
10203 : // Still (J. Comput. Chem. 20 (1999) 217) are selected, exactly as for the amino
10204 : // acids and the nucleotides above, from the element, its hybridisation and its
10205 : // number of bonded heavy atoms, all of which follow from the covalent structure
10206 : // of a pyranose. The three groups a monosaccharide is made of already appear in
10207 : // the table above:
10208 : // - the ring is the direct analogue of the ribose (compare A_C1'-A_C4' for the
10209 : // CH carbons, A_C5' for the exocyclic CH2 and A_O4' for the ring ether);
10210 : // - the N-acetyl group is the ASN side-chain amide (ASN_CG, ASN_OD1, ASN_ND2),
10211 : // except that the sugar amide nitrogen is secondary and therefore takes the
10212 : // two-neighbour class, like a backbone N;
10213 : // - the sialic-acid carboxylate is GLU_OE1/OE2.
10214 : //
10215 : // The one genuinely context-dependent case is a hydroxyl oxygen, which becomes a
10216 : // bridging ether when it carries a glycosidic bond. Both variants are tabulated
10217 : // and readLCPOparam() picks the "_L" entry for the oxygens that
10218 : // getOnebeadMapping() found to be two-coordinate in the TEMPLATE.
10219 : {
10220 23 : const std::vector<double> gC1 = { 1.7, 0.77887, -0.28063, -1.2968e-03, 3.9328e-04}; // C sp3, 1 heavy neighbour
10221 23 : const std::vector<double> gC2 = { 1.7, 0.56482, -0.19608, -1.0219e-03, 2.658e-04 }; // C sp3, 2
10222 23 : const std::vector<double> gC3 = { 1.7, 0.23348, -0.072627, -2.0079e-04, 7.967e-05 }; // C sp3, 3
10223 23 : const std::vector<double> gC4 = { 1.7, 0.0, 0.0, 0.0, 0.0 }; // C sp3, 4 (no accessible surface)
10224 23 : const std::vector<double> gCA = { 1.7, 0.070344, -0.019015, -2.2009e-05, 1.6875e-05}; // C sp2, 3 (amide / carboxyl carbon)
10225 23 : const std::vector<double> gN2 = { 1.65, 0.41102, -0.12254, -7.5448e-05, 1.1804e-04}; // N sp2, 2 (secondary amide)
10226 23 : const std::vector<double> gOH = { 1.6, 0.77914, -0.25262, -1.6056e-03, 3.5071e-04}; // O sp3, 1 (hydroxyl, carboxylate)
10227 23 : const std::vector<double> gOE = { 1.6, 0.49392, -0.16038, -1.5512e-04, 1.6453e-04}; // O sp3, 2 (ring or glycosidic ether)
10228 23 : const std::vector<double> gOC = { 1.6, 0.68563, -0.1868, -1.35573e-03,2.3743e-04}; // O sp2, 1 (amide carbonyl)
10229 :
10230 : // aldohexopyranoses, including the N-acetylhexosamines: exocyclic C6-O6
10231 : const std::vector<std::string> glyc_hexo = {
10232 : "GLC", "BGC", "GAL", "GLA", "MAN", "BMA", "NAG", "NDG", "NGA", "A2G",
10233 : "AGLC", "BGLC", "AGAL", "BGAL", "AMAN", "BMAN", "AGLCNA", "BGLCNA", "AGALNA", "BGALNA"
10234 23 : };
10235 : // 6-deoxyhexopyranoses: C6 is a methyl and there is no O6
10236 : const std::vector<std::string> glyc_dhexo = {
10237 : "FUC", "FUL", "FCA", "FCB", "AFUC", "BFUC"
10238 23 : };
10239 : // N-acetylneuraminic acid
10240 23 : const std::vector<std::string> glyc_neu = { "SIA", "SLB", "ANE5AC", "BNE5AC" };
10241 :
10242 621 : for(unsigned s=0; s<glyc_hexo.size()+glyc_dhexo.size(); ++s) {
10243 : const bool deoxy = (s>=glyc_hexo.size());
10244 1058 : const std::string r = deoxy ? glyc_dhexo[s-glyc_hexo.size()] : glyc_hexo[s];
10245 598 : lcpomap[r+"_C1"] = gC3; // anomeric: O5, C2 and the glycosidic (or anomeric) oxygen
10246 598 : lcpomap[r+"_C2"] = gC3;
10247 598 : lcpomap[r+"_C3"] = gC3;
10248 598 : lcpomap[r+"_C4"] = gC3;
10249 598 : lcpomap[r+"_C5"] = gC3;
10250 1058 : lcpomap[r+"_C6"] = deoxy ? gC1 : gC2; // methyl in a 6-deoxyhexose, CH2OH otherwise
10251 598 : lcpomap[r+"_O5"] = gOE; // ring oxygen
10252 598 : std::vector<std::string> oh = {"O1", "O2", "O3", "O4"};
10253 598 : if(!deoxy) {
10254 920 : oh.push_back("O6");
10255 : }
10256 3450 : for(unsigned k=0; k<oh.size(); ++k) {
10257 5704 : lcpomap[r+"_"+oh[k]] = gOH;
10258 8556 : lcpomap[r+"_"+oh[k]+"_L"] = gOE;
10259 : }
10260 : // N-acetyl group, in the force-field (N, C, O, CT) and PDB-CCD (N2, C7, O7, C8) spellings
10261 598 : lcpomap[r+"_N"] = gN2;
10262 598 : lcpomap[r+"_N2"] = gN2;
10263 598 : lcpomap[r+"_C"] = gCA;
10264 598 : lcpomap[r+"_C7"] = gCA;
10265 598 : lcpomap[r+"_O"] = gOC;
10266 598 : lcpomap[r+"_O7"] = gOC;
10267 598 : lcpomap[r+"_CT"] = gC1;
10268 598 : lcpomap[r+"_C8"] = gC1;
10269 598 : }
10270 :
10271 : // Glycosylation acceptors. Flagged by getOnebeadMapping() when they actually
10272 : // carry a glycan; the base entries above stay in force otherwise.
10273 23 : lcpomap["ASN_ND2_L"] = gN2; // N-glycosylation: primary -> secondary amide
10274 23 : lcpomap["SER_OG_L"] = gOE; // O-glycosylation: hydroxyl -> ether
10275 23 : lcpomap["THR_OG1_L"] = gOE;
10276 23 : lcpomap["TYR_OH_L"] = gOE;
10277 23 : lcpomap["HIS_ND1_L"] = gN2;
10278 23 : lcpomap["TRP_CD1_L"] = gCA; // C-mannosylation: C sp2 2 -> C sp2 3
10279 23 : lcpomap["CYS_SG_L"] = { 1.9, 0.54581, -0.19477, -0.0012873, 0.00029247}; // S-glycosylation
10280 46 : lcpomap["CYX_SG_L"] = lcpomap["CYS_SG_L"];
10281 : // nucleic-acid acceptors (glucosylated hydroxymethyl bases and the like)
10282 23 : const std::vector<std::string> glyc_na = {"A", "C", "G", "U", "DA", "DC", "DG", "DT"};
10283 207 : for(unsigned s=0; s<glyc_na.size(); ++s) {
10284 184 : const std::string r = glyc_na[s];
10285 368 : if(lcpomap.count(r+"_O2'")>0) {
10286 184 : lcpomap[r+"_O2'_L"] = gOE;
10287 : }
10288 : }
10289 :
10290 115 : for(unsigned s=0; s<glyc_neu.size(); ++s) {
10291 92 : const std::string r = glyc_neu[s];
10292 92 : lcpomap[r+"_C1"] = gCA; // carboxylate carbon
10293 92 : lcpomap[r+"_C2"] = gC4; // quaternary anomeric carbon: C1, C3, O6 and O2
10294 92 : lcpomap[r+"_C3"] = gC2;
10295 92 : lcpomap[r+"_C4"] = gC3;
10296 92 : lcpomap[r+"_C5"] = gC3;
10297 92 : lcpomap[r+"_C6"] = gC3;
10298 92 : lcpomap[r+"_C7"] = gC3;
10299 92 : lcpomap[r+"_C8"] = gC3;
10300 92 : lcpomap[r+"_C9"] = gC2;
10301 92 : lcpomap[r+"_O6"] = gOE; // ring oxygen
10302 92 : lcpomap[r+"_O11"] = gOH; // carboxylate, force-field naming
10303 92 : lcpomap[r+"_O12"] = gOH;
10304 92 : lcpomap[r+"_O1A"] = gOH; // carboxylate, PDB-CCD naming
10305 92 : lcpomap[r+"_O1B"] = gOH;
10306 92 : lcpomap[r+"_N"] = gN2; // acetamido group, force-field naming
10307 92 : lcpomap[r+"_C"] = gCA;
10308 92 : lcpomap[r+"_O"] = gOC;
10309 92 : lcpomap[r+"_CT"] = gC1;
10310 92 : lcpomap[r+"_N5"] = gN2; // acetamido group, PDB-CCD naming
10311 92 : lcpomap[r+"_C10"] = gCA;
10312 92 : lcpomap[r+"_O10"] = gOC;
10313 92 : lcpomap[r+"_C11"] = gC1;
10314 92 : const std::vector<std::string> oh = {"O2", "O4", "O7", "O8", "O9"};
10315 552 : for(unsigned k=0; k<oh.size(); ++k) {
10316 920 : lcpomap[r+"_"+oh[k]] = gOH;
10317 1380 : lcpomap[r+"_"+oh[k]+"_L"] = gOE;
10318 : }
10319 92 : }
10320 23 : }
10321 :
10322 23 : return lcpomap;
10323 : }
10324 :
10325 : // assigns LCPO parameters to each atom reading from database
10326 23 : void SAXS::readLCPOparam(const std::vector<std::vector<std::string> > &AtomResidueName, unsigned natoms) {
10327 23 : std::map<std::string, std::vector<double> > lcpomap = setupLCPOparam();
10328 :
10329 70373 : for(unsigned i=0; i<natoms; ++i) {
10330 : // ions are excluded from the SASA calculation: skip so they keep an empty
10331 : // LCPOparam (this also avoids a spurious lookup, e.g. for Cl/Ca whose names start with C)
10332 70350 : if (ionTypeFromResname(AtomResidueName[1][i]) >= 0) {
10333 3 : continue;
10334 : }
10335 70347 : if ((AtomResidueName[0][i][0]=='O') || (AtomResidueName[0][i][0]=='N') || (AtomResidueName[0][i][0]=='C') || (AtomResidueName[0][i][0]=='S' || (AtomResidueName[0][i][0]=='P'))) {
10336 65734 : std::string identifier = AtomResidueName[1][i]+"_"+AtomResidueName[0][i];
10337 : // a glycan oxygen that carries a glycosidic bond is an ether, not a hydroxyl
10338 32867 : if(i<glyc_bridge.size() && glyc_bridge[i] && lcpomap.count(identifier+"_L")>0) {
10339 : identifier += "_L";
10340 : }
10341 : std::map<std::string, std::vector<double> >::const_iterator lcpoit = lcpomap.find(identifier);
10342 32867 : if(lcpoit==lcpomap.end()) {
10343 0 : error("Could not find LCPO parameters for atom "+AtomResidueName[0][i]+
10344 0 : " of residue "+AtomResidueName[1][i]+". Check the PDB.");
10345 : }
10346 : const std::vector<double> &LCPOparamVector = lcpoit->second;
10347 : double rs = 0.14;
10348 32867 : LCPOparam[i].push_back(LCPOparamVector[0]+rs*10.);
10349 32867 : LCPOparam[i].push_back(LCPOparamVector[1]);
10350 32867 : LCPOparam[i].push_back(LCPOparamVector[2]);
10351 32867 : LCPOparam[i].push_back(LCPOparamVector[3]);
10352 32867 : LCPOparam[i].push_back(LCPOparamVector[4]);
10353 : }
10354 : }
10355 :
10356 70373 : for(unsigned i=0; i<natoms; ++i) {
10357 70350 : if (ionTypeFromResname(AtomResidueName[1][i]) >= 0) {
10358 3 : continue;
10359 : }
10360 70347 : if (LCPOparam[i].size()==0 ) {
10361 37480 : if ((AtomResidueName[0][i][0]=='O') || (AtomResidueName[0][i][0]=='N') || (AtomResidueName[0][i][0]=='C') || (AtomResidueName[0][i][0]=='S') || (AtomResidueName[0][i][0]=='P')) {
10362 0 : std::cout << "Could not find LCPO parameters for atom " << AtomResidueName[0][i] << " of residue " << AtomResidueName[1][i] << std::endl;
10363 0 : error ("missing LCPO parameters\n");
10364 : }
10365 : }
10366 : }
10367 :
10368 : // Terminal corrections. These used to be applied to the very first and very last
10369 : // atom of the system; with a glycan written after the protein that is a sugar atom,
10370 : // so the protein terminus silently lost its correction. The first and last atoms
10371 : // that belong to a one-bead amino acid are used instead, which is the same thing
10372 : // for a protein on its own.
10373 23 : unsigned ifirst = 0, ilast = natoms-1;
10374 : bool have_first = false, have_last = false;
10375 70373 : for(unsigned i=0; i<natoms; ++i) {
10376 70350 : if(i<glyc_type.size() && glyc_type[i]>=0) {
10377 0 : continue;
10378 : }
10379 70350 : if(ionTypeFromResname(AtomResidueName[1][i]) >= 0) {
10380 3 : continue;
10381 : }
10382 70347 : if(!have_first) {
10383 : ifirst = i;
10384 : have_first = true;
10385 : }
10386 : ilast = i;
10387 : have_last = true;
10388 : }
10389 :
10390 23 : if (have_first && AtomResidueName[0][ifirst] == "N" && LCPOparam[ifirst].size()>4) {
10391 21 : LCPOparam[ifirst][1] = 7.3511e-01;
10392 21 : LCPOparam[ifirst][2] = -2.2116e-01;
10393 21 : LCPOparam[ifirst][3] = -8.9148e-04;
10394 21 : LCPOparam[ifirst][4] = 2.5230e-04;
10395 : }
10396 :
10397 23 : if (have_last && AtomResidueName[0][ilast] == "O" && LCPOparam[ilast].size()>4) {
10398 0 : LCPOparam[ilast][1] = 8.8857e-01;
10399 0 : LCPOparam[ilast][2] = -3.3421e-01;
10400 0 : LCPOparam[ilast][3] = -1.8683e-03;
10401 0 : LCPOparam[ilast][4] = 4.9372e-04;
10402 : }
10403 23 : }
10404 :
10405 8 : void SAXS::resolution_function() {
10406 8 : const unsigned numq = q_list.size();
10407 :
10408 : // only OpenMP because numq might be smaller than the number of ranks
10409 8 : #pragma omp parallel for num_threads(OpenMP::getNumThreads())
10410 : for (unsigned i=0; i<numq; i++) {
10411 : double qi = q_list[i];
10412 : double dq = 6*sigma_res[i]/(Nj-1);
10413 : double sigma_sq = sigma_res[i]*sigma_res[i];
10414 : double qstart = qi - 3*sigma_res[i];
10415 : for (unsigned j=0; j<Nj; j++) {
10416 : double qj = qstart + j*dq;
10417 : double I0exp = i0e(qj*qi/sigma_sq);
10418 :
10419 : qj_list[i][j] = qj;
10420 : Rij[i][j] = (qj/sigma_sq)*std::exp(-0.5*(qj - qi)*(qj - qi)/sigma_sq)*I0exp;
10421 : }
10422 : }
10423 8 : }
10424 :
10425 : // i0e function from cephes
10426 : // compute I0(x) * exp (-x), with I0 being the modified Bessel function
10427 : // of first kind and zeroth order.
10428 1260 : inline double SAXS::i0e(double x) {
10429 : double y = 0.0;
10430 :
10431 1260 : if (x < 0) {
10432 0 : x = -x;
10433 : }
10434 1260 : if (x <= 8.0) {
10435 0 : y = (x/2.0) - 2.0;
10436 0 : return chbevl(y, A);
10437 : }
10438 :
10439 1260 : return chbevl(32.0/x - 2.0, B) / sqrt(x);
10440 : }
10441 :
10442 1260 : double SAXS::chbevl(double x, const std::vector<double> &coeffs) {
10443 : double b0, b1, b2;
10444 1260 : unsigned n = coeffs.size();
10445 :
10446 1260 : b0 = coeffs[0];
10447 : b1 = 0.0;
10448 : b2 = 0.0;
10449 :
10450 31500 : for (unsigned i = 1; i < n; i++) {
10451 : b2 = b1;
10452 : b1 = b0;
10453 30240 : b0 = x * b1 - b2 + coeffs[i];
10454 : }
10455 1260 : return 0.5 * (b0 - b2);
10456 : }
10457 :
10458 18900 : inline double SAXS::interpolation(std::vector<SplineCoeffs> &coeffs, double x) {
10459 : unsigned s = 0;
10460 141360 : while ((x >= q_list[s+1]) && (s+1 < q_list.size()-1)) {
10461 : s++;
10462 : }
10463 :
10464 18900 : double dx = x - coeffs[s].x;
10465 18900 : return coeffs[s].a + coeffs[s].b*dx + coeffs[s].c*dx*dx + coeffs[s].d*dx*dx*dx;
10466 : }
10467 :
10468 : // natural bc cubic spline implementation from the Wikipedia algorithm
10469 : // modified from https://stackoverflow.com/a/19216702/3254658
10470 120 : std::vector<SAXS::SplineCoeffs> SAXS::spline_coeffs(std::vector<double> &x, std::vector<double> &y) {
10471 120 : unsigned n = x.size()-1;
10472 120 : std::vector<double> a;
10473 120 : a.insert(a.begin(), y.begin(), y.end());
10474 120 : std::vector<double> b(n);
10475 120 : std::vector<double> d(n);
10476 120 : std::vector<double> h;
10477 :
10478 1800 : for(unsigned i=0; i<n; i++) {
10479 1680 : h.push_back(x[i+1]-x[i]);
10480 : }
10481 :
10482 120 : std::vector<double> alpha;
10483 120 : alpha.push_back(0);
10484 1680 : for(unsigned i=1; i<n; i++) {
10485 1560 : alpha.push_back( 3*(a[i+1]-a[i])/h[i] - 3*(a[i]-a[i-1])/h[i-1] );
10486 : }
10487 :
10488 120 : std::vector<double> c(n+1);
10489 120 : std::vector<double> l(n+1);
10490 120 : std::vector<double> mu(n+1);
10491 120 : std::vector<double> z(n+1);
10492 120 : l[0] = 1;
10493 120 : mu[0] = 0;
10494 120 : z[0] = 0;
10495 :
10496 1680 : for(unsigned i=1; i<n; i++) {
10497 1560 : l[i] = 2 *(x[i+1]-x[i-1])-h[i-1]*mu[i-1];
10498 1560 : mu[i] = h[i]/l[i];
10499 1560 : z[i] = (alpha[i]-h[i-1]*z[i-1])/l[i];
10500 : }
10501 :
10502 120 : l[n] = 1;
10503 120 : z[n] = 0;
10504 120 : c[n] = 0;
10505 :
10506 1800 : for(int j=n-1; j>=0; j--) {
10507 1680 : c[j] = z[j] - mu[j] * c[j+1];
10508 1680 : b[j] = (a[j+1]-a[j])/h[j]-h[j]*(c[j+1]+2*c[j])/3;
10509 1680 : d[j] = (c[j+1]-c[j])/3/h[j];
10510 : }
10511 :
10512 120 : std::vector<SplineCoeffs> output_set(n);
10513 1800 : for(unsigned i=0; i<n; i++) {
10514 1680 : output_set[i].a = a[i];
10515 1680 : output_set[i].b = b[i];
10516 1680 : output_set[i].c = c[i];
10517 1680 : output_set[i].d = d[i];
10518 1680 : output_set[i].x = x[i];
10519 : }
10520 :
10521 120 : return output_set;
10522 : }
10523 :
10524 :
10525 : }//namespace isdb
10526 : }//namespace PLMD
|