From 52a9f472dd2df791b3112f75950432693e3ba6be Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Thu, 21 Nov 2019 01:08:23 +1100 Subject: [PATCH 01/15] fixed itp impropers, type parsing --- package/CHANGELOG | 3 + package/MDAnalysis/topology/ITPParser.py | 68 ++- package/MDAnalysis/topology/base.py | 7 + testsuite/MDAnalysisTests/data/edited_itp.itp | 459 ++++++++++++++++++ testsuite/MDAnalysisTests/datafiles.py | 2 + .../MDAnalysisTests/topology/test_itp.py | 52 +- 6 files changed, 559 insertions(+), 32 deletions(-) create mode 100644 testsuite/MDAnalysisTests/data/edited_itp.itp diff --git a/package/CHANGELOG b/package/CHANGELOG index a881b09b082..f1a985f52e1 100644 --- a/package/CHANGELOG +++ b/package/CHANGELOG @@ -33,6 +33,9 @@ Fixes * The expected frames are made available when a trajectory slice is sliced itself with an incomplete slice and/or with a negative step (Issue #2413) * TXYZ parser uses strings for the atom types like other parsers (Issue #2435) + * PDB files no longer lose chainIDs when reading files without segIDs (Issue #2389) + * ITPParser now has improper dihedrals where third atom is central and + connectivity attributes can have multiple 'types' Enhancements * Enhanges exception message when trajectory output file has no extension assigned. diff --git a/package/MDAnalysis/topology/ITPParser.py b/package/MDAnalysis/topology/ITPParser.py index f836a22bc14..30f19fdb2c4 100644 --- a/package/MDAnalysis/topology/ITPParser.py +++ b/package/MDAnalysis/topology/ITPParser.py @@ -42,13 +42,14 @@ """ from __future__ import absolute_import +from collections import defaultdict import logging import numpy as np from ..lib.util import openany from . import guessers -from .base import TopologyReaderBase, change_squash +from .base import TopologyReaderBase, change_squash, squash_identical from ..core.topologyattrs import ( Atomids, Atomnames, @@ -113,14 +114,10 @@ def parse(self, **kwargs): atom_lists = [ids, types, resids, resnames, names, chargegroups, charges, masses] - bonds = [] - bondtypes = [] - angles = [] - angletypes = [] - dihedrals = [] - dihedraltypes = [] - impropers = [] - impropertypes = [] + bonds = defaultdict(list) + angles = defaultdict(list) + dihedrals = defaultdict(list) + impropers = defaultdict(list) segid = 'SYSTEM' molnum = 1 @@ -157,24 +154,39 @@ def parse(self, **kwargs): elif section == 'bonds': values = line.split() - bonds.append(values[:2]) - bondtypes.append(values[2]) + funct = int(values[2]) + if funct in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10): + bonds[tuple(values[:2])].append(funct) + + elif section == 'constraints': + values = line.split() + funct = int(values[2]) + if funct in (1, 2): + bonds[tuple(values[:2])].append(funct) + + elif section == 'settles': + values = line.split() + funct = int(values[2]) + if funct in (1,): + bonds[tuple(values[:2])].append(funct) elif section == 'angles': values = line.split() - angles.append(values[:3]) - angletypes.append(values[3]) + funct = int(values[3]) + if funct in (1, 2, 3, 4, 5, 6, 8, 10): + angles[tuple(values[:3])].append(funct) + elif section == 'dihedrals': # funct == 1: proper # funct == 2: improper values = line.split() - if values[4] == '1': - dihedrals.append(values[:4]) - dihedraltypes.append(values[4]) - elif values[4] == '2': - impropers.append(values[:4]) - impropertypes.append(values[4]) + funct = int(values[4]) + if funct in (1, 3, 5, 8, 9, 10, 11): + dihedrals[tuple(values[:4])].append(funct) + elif funct in (2, 4): + imp_values = [values[1], values[2], values[0], values[3]] + impropers[tuple(imp_values)].append(funct) attrs = [] @@ -215,14 +227,18 @@ def parse(self, **kwargs): residue_segindex=segidx) # connectivity - for vals, Attr, attrname, atype in ( - (bonds, Bonds, 'bonds', bondtypes), - (angles, Angles, 'angles', angletypes), - (dihedrals, Dihedrals, 'dihedrals', dihedraltypes), - (impropers, Impropers, 'impropers', impropertypes) + for dct, Attr, attrname in ( + (bonds, Bonds, 'bonds'), + (angles, Angles, 'angles'), + (dihedrals, Dihedrals, 'dihedrals'), + (impropers, Impropers, 'impropers') ): - tattr = Attr(set(tuple(map(ids.index, x)) for x in vals), - types=atype) + vals, types = zip(*list(dct.items())) + + indices = tuple(map(ids.index, x) for x in vals) + types = list(map(squash_identical, types)) + + tattr = Attr(indices, types=types) top.add_TopologyAttr(tattr) return top diff --git a/package/MDAnalysis/topology/base.py b/package/MDAnalysis/topology/base.py index c692d2af07d..238f3da4296 100644 --- a/package/MDAnalysis/topology/base.py +++ b/package/MDAnalysis/topology/base.py @@ -181,3 +181,10 @@ def get_borders(*arrays): # Should be the same for self consistency... return residx, new_others + + +def squash_identical(values): + if len(values) == 1: + return values[0] + else: + return tuple(values) \ No newline at end of file diff --git a/testsuite/MDAnalysisTests/data/edited_itp.itp b/testsuite/MDAnalysisTests/data/edited_itp.itp new file mode 100644 index 00000000000..2bec7f7e34f --- /dev/null +++ b/testsuite/MDAnalysisTests/data/edited_itp.itp @@ -0,0 +1,459 @@ +; +; File 'topol.top' was generated + +; +; This is a standalone topology file +; +; Created by: +; :-) GROMACS - gmx pdb2gmx, 2016.1 (-: +; +; Executable: /usr/local/gromacs/bin/gmx +; Data prefix: /usr/local/gromacs +; Command line: +; gmx pdb2gmx -f 00_ala10.pdb -o 01_ala.gro -ignh -ter +; Force field was read from the standard GROMACS share directory. +; + +[ moleculetype ] +; Name nrexcl +Protein 3 + +[ atoms ] +; nr type resnr residue atom cgnr charge mass typeB chargeB massB +; residue 2 ALA rtp ALA q 0.0 + 1 NL 2 ALA N 1 -0.66 14.0067 ; qtot -0.66 + 2 H 2 ALA H1 1 0.44 1.008 ; qtot -0.22 + 3 H 2 ALA H2 1 0.44 1.008 ; qtot 0.22 + 4 CH1 2 ALA CA 2 -0.22 13.019 ; qtot 0 + 5 CH3 2 ALA CB 2 0 15.035 ; qtot 0 + 6 C 2 ALA C 3 0.45 12.011 ; qtot 0.45 + 7 O 2 ALA O 3 -0.45 15.9994 ; qtot 0 +; residue 3 ALA rtp ALA q 0.0 + 8 N 3 ALA N 4 -0.31 14.0067 ; qtot -0.31 + 9 H 3 ALA H 4 0.31 1.008 ; qtot 0 + 10 CH1 3 ALA CA 5 0 13.019 ; qtot 0 + 11 CH3 3 ALA CB 5 0 15.035 ; qtot 0 + 12 C 3 ALA C 6 0.45 12.011 ; qtot 0.45 + 13 O 3 ALA O 6 -0.45 15.9994 ; qtot 0 +; residue 4 ALA rtp ALA q 0.0 + 14 N 4 ALA N 7 -0.31 14.0067 ; qtot -0.31 + 15 H 4 ALA H 7 0.31 1.008 ; qtot 0 + 16 CH1 4 ALA CA 8 0 13.019 ; qtot 0 + 17 CH3 4 ALA CB 8 0 15.035 ; qtot 0 + 18 C 4 ALA C 9 0.45 12.011 ; qtot 0.45 + 19 O 4 ALA O 9 -0.45 15.9994 ; qtot 0 +; residue 5 ALA rtp ALA q 0.0 + 20 N 5 ALA N 10 -0.31 14.0067 ; qtot -0.31 + 21 H 5 ALA H 10 0.31 1.008 ; qtot 0 + 22 CH1 5 ALA CA 11 0 13.019 ; qtot 0 + 23 CH3 5 ALA CB 11 0 15.035 ; qtot 0 + 24 C 5 ALA C 12 0.45 12.011 ; qtot 0.45 + 25 O 5 ALA O 12 -0.45 15.9994 ; qtot 0 +; residue 6 ALA rtp ALA q 0.0 + 26 N 6 ALA N 13 -0.31 14.0067 ; qtot -0.31 + 27 H 6 ALA H 13 0.31 1.008 ; qtot 0 + 28 CH1 6 ALA CA 14 0 13.019 ; qtot 0 + 29 CH3 6 ALA CB 14 0 15.035 ; qtot 0 + 30 C 6 ALA C 15 0.45 12.011 ; qtot 0.45 + 31 O 6 ALA O 15 -0.45 15.9994 ; qtot 0 +; residue 7 ALA rtp ALA q 0.0 + 32 N 7 ALA N 16 -0.31 14.0067 ; qtot -0.31 + 33 H 7 ALA H 16 0.31 1.008 ; qtot 0 + 34 CH1 7 ALA CA 17 0 13.019 ; qtot 0 + 35 CH3 7 ALA CB 17 0 15.035 ; qtot 0 + 36 C 7 ALA C 18 0.45 12.011 ; qtot 0.45 + 37 O 7 ALA O 18 -0.45 15.9994 ; qtot 0 +; residue 8 ALA rtp ALA q 0.0 + 38 N 8 ALA N 19 -0.31 14.0067 ; qtot -0.31 + 39 H 8 ALA H 19 0.31 1.008 ; qtot 0 + 40 CH1 8 ALA CA 20 0 13.019 ; qtot 0 + 41 CH3 8 ALA CB 20 0 15.035 ; qtot 0 + 42 C 8 ALA C 21 0.45 12.011 ; qtot 0.45 + 43 O 8 ALA O 21 -0.45 15.9994 ; qtot 0 +; residue 9 ALA rtp ALA q 0.0 + 44 N 9 ALA N 22 -0.31 14.0067 ; qtot -0.31 + 45 H 9 ALA H 22 0.31 1.008 ; qtot 0 + 46 CH1 9 ALA CA 23 0 13.019 ; qtot 0 + 47 CH3 9 ALA CB 23 0 15.035 ; qtot 0 + 48 C 9 ALA C 24 0.45 12.011 ; qtot 0.45 + 49 O 9 ALA O 24 -0.45 15.9994 ; qtot 0 +; residue 10 ALA rtp ALA q 0.0 + 50 N 10 ALA N 25 -0.31 14.0067 ; qtot -0.31 + 51 H 10 ALA H 25 0.31 1.008 ; qtot 0 + 52 CH1 10 ALA CA 26 0 13.019 ; qtot 0 + 53 CH3 10 ALA CB 26 0 15.035 ; qtot 0 + 54 C 10 ALA C 27 0.45 12.011 ; qtot 0.45 + 55 O 10 ALA O 27 -0.45 15.9994 ; qtot 0 +; residue 11 ALA rtp ALA q 0.0 + 56 N 11 ALA N 28 -0.31 14.0067 ; qtot -0.31 + 57 H 11 ALA H 28 0.31 1.008 ; qtot 0 + 58 CH1 11 ALA CA 29 0 13.019 ; qtot 0 + 59 CH3 11 ALA CB 29 0 15.035 ; qtot 0 + 60 C 11 ALA C 30 0.33 12.011 ; qtot 0.33 + 61 O 11 ALA OT 30 -0.45 15.9994 ; qtot -0.12 + 62 OA 11 ALA O 30 -0.288 15.9994 ; qtot -0.408 + 63 H 11 ALA HO 30 0.408 1.008 ; qtot 0 + +[ bonds ] +; ai aj funct c0 c1 c2 c3 + 1 2 2 gb_2 + 1 3 2 gb_2 + 1 4 2 gb_21 + 4 5 2 gb_27 + 4 6 2 gb_27 + 6 7 2 gb_5 + 6 8 2 gb_10 + 8 9 2 gb_2 + 8 10 2 gb_21 + 10 11 2 gb_27 + 10 12 2 gb_27 + 12 13 2 gb_5 + 12 14 2 gb_10 + 14 15 2 gb_2 + 14 16 2 gb_21 + 16 17 2 gb_27 + 16 18 2 gb_27 + 18 19 2 gb_5 + 18 20 2 gb_10 + 20 21 2 gb_2 + 20 22 2 gb_21 + 22 23 2 gb_27 + 22 24 2 gb_27 + 24 25 2 gb_5 + 24 26 2 gb_10 + 26 27 2 gb_2 + 26 28 2 gb_21 + 28 29 2 gb_27 + 28 30 2 gb_27 + 30 31 2 gb_5 + 30 32 2 gb_10 + 32 33 2 gb_2 + 32 34 2 gb_21 + 34 35 2 gb_27 + 34 36 2 gb_27 + 36 37 2 gb_5 + 36 38 2 gb_10 + 38 39 2 gb_2 + 38 40 2 gb_21 + 40 41 2 gb_27 + 40 42 2 gb_27 + 42 43 2 gb_5 + 42 44 2 gb_10 + 44 45 2 gb_2 + 44 46 2 gb_21 + 46 47 2 gb_27 + 46 48 2 gb_27 + 48 49 2 gb_5 + 48 50 2 gb_10 + 50 51 2 gb_2 + 50 52 2 gb_21 + 52 53 2 gb_27 + 52 54 2 gb_27 + 54 55 2 gb_5 + 54 56 2 gb_10 + 56 57 2 gb_2 + 56 58 2 gb_21 + 58 59 2 gb_27 + 58 60 2 gb_27 + 60 61 2 gb_5 + 60 62 2 gb_13 + 62 63 2 gb_1 + +[ constraints ] +; ai aj funct c0 c1 c2 c3 + 1 7 1 + 1 8 1 + 2 5 1 + 2 6 1 + 3 5 1 + 3 6 1 + 4 9 1 + 4 10 1 + 5 7 1 + 5 8 1 + 6 11 1 + 6 12 1 + 7 9 1 + 7 10 1 + 8 13 1 + 8 14 1 + 9 11 1 + 9 12 1 + 10 15 1 + 10 16 1 + 11 13 1 + 11 14 1 + 12 17 1 + 12 18 1 + 13 15 1 + 13 16 1 + 14 19 1 + 14 20 1 + 15 17 1 + 15 18 1 + 16 21 1 + 16 22 1 + 17 19 1 + 17 20 1 + 18 23 1 + 18 24 1 + 19 21 1 + 19 22 1 + 20 25 1 + 20 26 1 + 21 23 1 + 21 24 1 + 22 27 1 + 22 28 1 + 23 25 1 + 23 26 1 + 24 29 1 + 24 30 1 + 25 27 1 + 25 28 1 + 26 31 1 + 26 32 1 + 27 29 1 + 27 30 1 + 28 33 1 + 28 34 1 + 29 31 1 + 29 32 1 + 30 35 1 + 30 36 1 + 31 33 1 + 31 34 1 + 32 37 1 + 32 38 1 + 33 35 1 + 33 36 1 + 34 39 1 + 34 40 1 + 35 37 1 + 35 38 1 + 36 41 1 + 36 42 1 + 37 39 1 + 37 40 1 + 38 43 1 + 38 44 1 + 39 41 1 + 39 42 1 + 40 45 1 + 40 46 1 + 41 43 1 + 41 44 1 + 42 47 1 + 42 48 1 + 43 45 1 + 43 46 1 + 44 49 1 + 44 50 1 + 45 47 1 + 45 48 1 + 46 51 1 + 46 52 1 + 47 49 1 + 47 50 1 + 48 53 1 + 48 54 1 + 49 51 1 + 49 52 1 + 50 55 1 + 50 56 1 + 51 53 1 + 51 54 1 + 52 57 1 + 52 58 1 + 53 55 1 + 53 56 1 + 54 59 1 + 54 60 1 + 55 57 1 + 55 58 1 + 56 61 1 + 56 62 1 + 57 59 1 + 57 60 1 + 58 63 1 + 59 61 1 + 59 62 1 + 61 63 1 + +[ angles ] +; ai aj ak funct c0 c1 c2 c3 + 2 1 3 2 ga_10 + 2 1 4 2 ga_11 + 3 1 4 2 ga_11 + 1 4 5 2 ga_13 + 1 4 6 2 ga_13 + 5 4 6 2 ga_13 + 4 6 7 2 ga_30 + 4 6 8 2 ga_19 + 7 6 8 2 ga_33 + 6 8 9 2 ga_32 + 6 8 10 2 ga_31 + 9 8 10 2 ga_18 + 8 10 11 2 ga_13 + 8 10 12 2 ga_13 + 11 10 12 2 ga_13 + 10 12 13 2 ga_30 + 10 12 14 2 ga_19 + 13 12 14 2 ga_33 + 12 14 15 2 ga_32 + 12 14 16 2 ga_31 + 15 14 16 2 ga_18 + 14 16 17 2 ga_13 + 14 16 18 2 ga_13 + 17 16 18 2 ga_13 + 16 18 19 2 ga_30 + 16 18 20 2 ga_19 + 19 18 20 2 ga_33 + 18 20 21 2 ga_32 + 18 20 22 2 ga_31 + 21 20 22 2 ga_18 + 20 22 23 2 ga_13 + 20 22 24 2 ga_13 + 23 22 24 2 ga_13 + 22 24 25 2 ga_30 + 22 24 26 2 ga_19 + 25 24 26 2 ga_33 + 24 26 27 2 ga_32 + 24 26 28 2 ga_31 + 27 26 28 2 ga_18 + 26 28 29 2 ga_13 + 26 28 30 2 ga_13 + 29 28 30 2 ga_13 + 28 30 31 2 ga_30 + 28 30 32 2 ga_19 + 31 30 32 2 ga_33 + 30 32 33 2 ga_32 + 30 32 34 2 ga_31 + 33 32 34 2 ga_18 + 32 34 35 2 ga_13 + 32 34 36 2 ga_13 + 35 34 36 2 ga_13 + 34 36 37 2 ga_30 + 34 36 38 2 ga_19 + 37 36 38 2 ga_33 + 36 38 39 2 ga_32 + 36 38 40 2 ga_31 + 39 38 40 2 ga_18 + 38 40 41 2 ga_13 + 38 40 42 2 ga_13 + 41 40 42 2 ga_13 + 40 42 43 2 ga_30 + 40 42 44 2 ga_19 + 43 42 44 2 ga_33 + 42 44 45 2 ga_32 + 42 44 46 2 ga_31 + 45 44 46 2 ga_18 + 44 46 47 2 ga_13 + 44 46 48 2 ga_13 + 47 46 48 2 ga_13 + 46 48 49 2 ga_30 + 46 48 50 2 ga_19 + 49 48 50 2 ga_33 + 48 50 51 2 ga_32 + 48 50 52 2 ga_31 + 51 50 52 2 ga_18 + 50 52 53 2 ga_13 + 50 52 54 2 ga_13 + 53 52 54 2 ga_13 + 52 54 55 2 ga_30 + 52 54 56 2 ga_19 + 55 54 56 2 ga_33 + 54 56 57 2 ga_32 + 54 56 58 2 ga_31 + 57 56 58 2 ga_18 + 56 58 59 2 ga_13 + 56 58 60 2 ga_13 + 59 58 60 2 ga_13 + 58 60 61 2 ga_30 + 58 60 62 7 ga_19 + 61 60 62 7 ga_33 + 60 62 63 7 ga_12 + +[ dihedrals ] +; ai aj ak al funct c0 c1 c2 c3 c4 c5 + 2 1 4 6 6 gd_39 + 1 4 6 8 1 gd_45 + 1 4 6 8 1 gd_42 + 4 6 8 10 1 gd_14 + 6 8 10 12 1 gd_43 + 6 8 10 12 1 gd_44 + 8 10 12 14 1 gd_45 + 8 10 12 14 1 gd_42 + 10 12 14 16 1 gd_14 + 12 14 16 18 1 gd_44 + 12 14 16 18 1 gd_43 + 14 16 18 20 1 gd_45 + 14 16 18 20 1 gd_42 + 16 18 20 22 1 gd_14 + 18 20 22 24 1 gd_43 + 18 20 22 24 1 gd_44 + 20 22 24 26 1 gd_45 + 20 22 24 26 1 gd_42 + 22 24 26 28 1 gd_14 + 24 26 28 30 1 gd_44 + 24 26 28 30 1 gd_43 + 26 28 30 32 1 gd_42 + 26 28 30 32 1 gd_45 + 28 30 32 34 1 gd_14 + 30 32 34 36 1 gd_44 + 30 32 34 36 1 gd_43 + 32 34 36 38 1 gd_42 + 32 34 36 38 1 gd_45 + 34 36 38 40 3 gd_14 + 36 38 40 42 1 gd_44 + 36 38 40 42 1 gd_43 + 38 40 42 44 1 gd_45 + 38 40 42 44 1 gd_42 + 40 42 44 46 5 gd_14 + 42 44 46 48 1 gd_44 + 42 44 46 48 1 gd_43 + 44 46 48 50 1 gd_45 + 44 46 48 50 1 gd_42 + 46 48 50 52 1 gd_14 + 48 50 52 54 1 gd_44 + 48 50 52 54 1 gd_43 + 50 52 54 56 1 gd_42 + 50 52 54 56 1 gd_45 + 52 54 56 58 1 gd_14 + 54 56 58 60 1 gd_43 + 54 56 58 60 1 gd_44 + 56 58 60 62 1 gd_42 + 56 58 60 62 1 gd_45 + 58 60 62 63 6 gd_12 + +[ dihedrals ] +; ai aj ak al funct c0 c1 c2 c3 + 4 1 6 5 2 gi_2 + 6 4 8 7 4 gi_1 + 8 6 10 9 2 gi_1 + 10 8 12 11 2 gi_2 + 12 10 14 13 2 gi_1 + 14 12 16 15 2 gi_1 + 16 14 18 17 4 gi_2 + 18 16 20 19 4 gi_1 + 20 18 22 21 2 gi_1 + 22 20 24 23 2 gi_2 + 24 22 26 25 2 gi_1 + 26 24 28 27 2 gi_1 + 28 26 30 29 2 gi_2 + 30 28 32 31 2 gi_1 + 32 30 34 33 2 gi_1 + 34 32 36 35 2 gi_2 + 36 34 38 37 2 gi_1 + 38 36 40 39 2 gi_1 + 40 38 42 41 2 gi_2 + 42 40 44 43 2 gi_1 + 44 42 46 45 2 gi_1 + 46 44 48 47 2 gi_2 + 48 46 50 49 2 gi_1 + 50 48 52 51 2 gi_1 + 52 50 54 53 2 gi_2 + 54 52 56 55 2 gi_1 + 56 54 58 57 2 gi_1 + 58 56 60 59 2 gi_2 + 60 58 61 62 2 gi_1 \ No newline at end of file diff --git a/testsuite/MDAnalysisTests/datafiles.py b/testsuite/MDAnalysisTests/datafiles.py index 80d6780c2bb..b140a5d99a2 100644 --- a/testsuite/MDAnalysisTests/datafiles.py +++ b/testsuite/MDAnalysisTests/datafiles.py @@ -174,6 +174,7 @@ "GRO_huge_box", # for testing gro parser with hige box sizes "ITP", # for GROMACS generated itps "ITP_nomass", # for ATB generated itps + "edited_ITP", # to check different directives are read properly ] from pkg_resources import resource_filename @@ -480,6 +481,7 @@ ITP = resource_filename(__name__, 'data/gromacs_ala10.itp') ITP_nomass = resource_filename(__name__, 'data/itp_nomass.itp') +edited_ITP = resource_filename(__name__, 'data/edited_itp.itp') # This should be the last line: clean up namespace del resource_filename diff --git a/testsuite/MDAnalysisTests/topology/test_itp.py b/testsuite/MDAnalysisTests/topology/test_itp.py index 6e99e7fd37d..4361cb6e7ca 100644 --- a/testsuite/MDAnalysisTests/topology/test_itp.py +++ b/testsuite/MDAnalysisTests/topology/test_itp.py @@ -29,6 +29,7 @@ from MDAnalysisTests.datafiles import ( ITP, # GROMACS itp ITP_nomass, # from Automated Topology Builder + edited_ITP, ) class TestITP(ParserBase): @@ -60,7 +61,7 @@ def test_bonds_identity(self, top): assert b in vals def test_bonds_type(self, top): - assert top.bonds.types[0] == '2' + assert top.bonds.types[0] == 2 def test_angles_total_counts(self, top): assert len(top.angles.values) == 91 @@ -75,7 +76,7 @@ def test_angles_identity(self, top): assert (b in vals) or (b[::-1] in vals) def test_angles_type(self, top): - assert top.angles.types[0] == '2' + assert top.angles.types[0] == 2 def test_dihedrals_total_counts(self, top): assert len(top.dihedrals.values) == 30 @@ -83,13 +84,18 @@ def test_dihedrals_total_counts(self, top): def test_dihedrals_atom_counts(self, universe): assert len(universe.atoms[[0]].dihedrals) == 2 + def test_dihedrals_multiple_types(self, universe): + ag = universe.atoms[[0, 3, 5, 7]] + dih = universe.dihedrals.atomgroup_intersection(ag, strict=True)[0] + assert len(dih.type) == 2 + def test_dihedrals_identity(self, top): vals = top.dihedrals.values for b in ((1, 0, 3, 5), (0, 3, 5, 7)): assert (b in vals) or (b[::-1] in vals) def test_dihedrals_identity(self, top): - assert top.dihedrals.types[0] == '1' + assert top.dihedrals.types[0] == 1 def test_impropers_total_counts(self, top): assert len(top.impropers.values) == 29 @@ -99,11 +105,16 @@ def test_impropers_atom_counts(self, universe): def test_impropers_identity(self, top): vals = top.impropers.values - for b in ((3, 0, 5, 4), (5, 3, 7, 6)): + for b in ((0, 5, 3, 4), (3, 7, 5, 6)): assert (b in vals) or (b[::-1] in vals) + + def test_improper_rearrangement(self, top): + vals = top.impropers.values + for b in ((3, 0, 5, 4), (5, 3, 7, 6)): + assert (b not in vals) and (b[::-1] not in vals) def test_impropers_identity(self, top): - assert top.impropers.types[0] == '2' + assert top.impropers.types[0] == 2 class TestITPNoMass(ParserBase): parser = mda.topology.ITPParser.ITPParser @@ -123,4 +134,33 @@ def universe(self, filename): return mda.Universe(filename) def test_mass_guess(self, universe): - assert universe.atoms[0].mass not in ('', None) \ No newline at end of file + assert universe.atoms[0].mass not in ('', None) + + +class TestDifferentDirectivesITP(TestITP): + + ref_filename = edited_ITP + + + def test_angles_total_counts(self, top): + assert len(top.angles.values) == 88 + + def test_no_extra_angles(self, top): + for a in ((57, 59, 61), (60, 59, 61), (59, 61, 62)): + assert a not in top.angles.values + + def test_dihedrals_total_counts(self, top): + assert len(top.dihedrals.values) == 28 + + def test_bonds_total_counts(self, top): + assert len(top.bonds.values) == (118 + 62) # 118: pairs -> constraints + + def test_bonds_atom_counts(self, universe): + assert len(universe.atoms[[0]].bonds) == 5 + assert len(universe.atoms[[42]].bonds) == 5 + + def test_dihedrals_atom_counts(self, universe): + assert len(universe.atoms[[0]].dihedrals) == 1 + + def test_dihedrals_identity(self, top): + assert top.dihedrals.types[0] == (1, 1) \ No newline at end of file From edac256b9c9c8481859ba680e457947725cb23f3 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Thu, 21 Nov 2019 01:12:28 +1100 Subject: [PATCH 02/15] rearranged impropers to central atom first --- package/MDAnalysis/topology/ITPParser.py | 3 +-- testsuite/MDAnalysisTests/topology/test_itp.py | 7 +------ 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/package/MDAnalysis/topology/ITPParser.py b/package/MDAnalysis/topology/ITPParser.py index 30f19fdb2c4..4e01b572586 100644 --- a/package/MDAnalysis/topology/ITPParser.py +++ b/package/MDAnalysis/topology/ITPParser.py @@ -185,8 +185,7 @@ def parse(self, **kwargs): if funct in (1, 3, 5, 8, 9, 10, 11): dihedrals[tuple(values[:4])].append(funct) elif funct in (2, 4): - imp_values = [values[1], values[2], values[0], values[3]] - impropers[tuple(imp_values)].append(funct) + impropers[tuple(values[:4])].append(funct) attrs = [] diff --git a/testsuite/MDAnalysisTests/topology/test_itp.py b/testsuite/MDAnalysisTests/topology/test_itp.py index 4361cb6e7ca..4231fb239d0 100644 --- a/testsuite/MDAnalysisTests/topology/test_itp.py +++ b/testsuite/MDAnalysisTests/topology/test_itp.py @@ -104,14 +104,9 @@ def test_impropers_atom_counts(self, universe): assert len(universe.atoms[[0]].impropers) == 1 def test_impropers_identity(self, top): - vals = top.impropers.values - for b in ((0, 5, 3, 4), (3, 7, 5, 6)): - assert (b in vals) or (b[::-1] in vals) - - def test_improper_rearrangement(self, top): vals = top.impropers.values for b in ((3, 0, 5, 4), (5, 3, 7, 6)): - assert (b not in vals) and (b[::-1] not in vals) + assert (b in vals) and (b[::-1] in vals) def test_impropers_identity(self, top): assert top.impropers.types[0] == 2 From b396919bab0fc5d2bfbd95b8d951b87492feccac Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Thu, 21 Nov 2019 01:19:28 +1100 Subject: [PATCH 03/15] updated changelog --- package/CHANGELOG | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package/CHANGELOG b/package/CHANGELOG index f1a985f52e1..aa69ae3aec7 100644 --- a/package/CHANGELOG +++ b/package/CHANGELOG @@ -34,8 +34,7 @@ Fixes with an incomplete slice and/or with a negative step (Issue #2413) * TXYZ parser uses strings for the atom types like other parsers (Issue #2435) * PDB files no longer lose chainIDs when reading files without segIDs (Issue #2389) - * ITPParser now has improper dihedrals where third atom is central and - connectivity attributes can have multiple 'types' + * ITPParser now has improper dihedrals where connectivity attributes can have multiple 'types' Enhancements * Enhanges exception message when trajectory output file has no extension assigned. From dddafa0f935ea34b4352ccb3e9e9c97b6b276c56 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Thu, 21 Nov 2019 13:43:25 +1100 Subject: [PATCH 04/15] changed tests --- .../MDAnalysisTests/topology/test_itp.py | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/testsuite/MDAnalysisTests/topology/test_itp.py b/testsuite/MDAnalysisTests/topology/test_itp.py index 4231fb239d0..43cb23fdade 100644 --- a/testsuite/MDAnalysisTests/topology/test_itp.py +++ b/testsuite/MDAnalysisTests/topology/test_itp.py @@ -60,8 +60,8 @@ def test_bonds_identity(self, top): for b in ((0, 1), (0, 2), (0, 3), (3, 4)): assert b in vals - def test_bonds_type(self, top): - assert top.bonds.types[0] == 2 + def test_bonds_type(self, universe): + assert universe.bonds[0].type == 2 def test_angles_total_counts(self, top): assert len(top.angles.values) == 91 @@ -75,8 +75,8 @@ def test_angles_identity(self, top): for b in ((1, 0, 2), (1, 0, 3), (2, 0, 3)): assert (b in vals) or (b[::-1] in vals) - def test_angles_type(self, top): - assert top.angles.types[0] == 2 + def test_angles_type(self, universe): + assert universe.angles[0].type == 2 def test_dihedrals_total_counts(self, top): assert len(top.dihedrals.values) == 30 @@ -94,8 +94,8 @@ def test_dihedrals_identity(self, top): for b in ((1, 0, 3, 5), (0, 3, 5, 7)): assert (b in vals) or (b[::-1] in vals) - def test_dihedrals_identity(self, top): - assert top.dihedrals.types[0] == 1 + def test_dihedrals_identity(self, universe): + assert universe.dihedrals[0].type == (1, 1) def test_impropers_total_counts(self, top): assert len(top.impropers.values) == 29 @@ -108,8 +108,8 @@ def test_impropers_identity(self, top): for b in ((3, 0, 5, 4), (5, 3, 7, 6)): assert (b in vals) and (b[::-1] in vals) - def test_impropers_identity(self, top): - assert top.impropers.types[0] == 2 + def test_impropers_identity(self, universe): + assert universe.impropers[0].type == 2 class TestITPNoMass(ParserBase): parser = mda.topology.ITPParser.ITPParser @@ -157,5 +157,5 @@ def test_bonds_atom_counts(self, universe): def test_dihedrals_atom_counts(self, universe): assert len(universe.atoms[[0]].dihedrals) == 1 - def test_dihedrals_identity(self, top): - assert top.dihedrals.types[0] == (1, 1) \ No newline at end of file + def test_dihedrals_identity(self, universe): + assert universe.dihedrals[0].type == (1, 1) \ No newline at end of file From 0a00ec53b580b3230dea4da6c6f875246cd21bc2 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Thu, 21 Nov 2019 16:04:26 +1100 Subject: [PATCH 05/15] removed map --- package/MDAnalysis/topology/ITPParser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/MDAnalysis/topology/ITPParser.py b/package/MDAnalysis/topology/ITPParser.py index 4e01b572586..9cd67bc9305 100644 --- a/package/MDAnalysis/topology/ITPParser.py +++ b/package/MDAnalysis/topology/ITPParser.py @@ -235,7 +235,7 @@ def parse(self, **kwargs): vals, types = zip(*list(dct.items())) indices = tuple(map(ids.index, x) for x in vals) - types = list(map(squash_identical, types)) + types = [squash_identical(t) for t in types] tattr = Attr(indices, types=types) top.add_TopologyAttr(tattr) From 345df0a0b50e3bb92dcbbe42f00f847f37d59108 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Wed, 18 Dec 2019 19:20:15 +1100 Subject: [PATCH 06/15] added if/else to itpparser --- package/MDAnalysis/topology/ITPParser.py | 119 +++++++++---- testsuite/MDAnalysisTests/data/spce.itp | 45 +++++ testsuite/MDAnalysisTests/data/tip5p.itp | 63 +++++++ testsuite/MDAnalysisTests/datafiles.py | 8 +- .../MDAnalysisTests/topology/test_itp.py | 157 ++++++++++++++---- 5 files changed, 327 insertions(+), 65 deletions(-) create mode 100644 testsuite/MDAnalysisTests/data/spce.itp create mode 100644 testsuite/MDAnalysisTests/data/tip5p.itp diff --git a/package/MDAnalysis/topology/ITPParser.py b/package/MDAnalysis/topology/ITPParser.py index 9cd67bc9305..c20e390a9da 100644 --- a/package/MDAnalysis/topology/ITPParser.py +++ b/package/MDAnalysis/topology/ITPParser.py @@ -103,7 +103,7 @@ def parse(self, **kwargs): ------- MDAnalysis *Topology* object """ - ids = [] + self.ids = [] types = [] resids = [] resnames = [] @@ -112,7 +112,7 @@ def parse(self, **kwargs): charges = [] masses = [] - atom_lists = [ids, types, resids, resnames, names, chargegroups, charges, masses] + atom_lists = [self.ids, types, resids, resnames, names, chargegroups, charges, masses] bonds = defaultdict(list) angles = defaultdict(list) @@ -123,14 +123,34 @@ def parse(self, **kwargs): molnum = 1 section = None + if_queue = [] # Open and check itp validity - with openany(self.filename) as itpfile: - for line in itpfile: + with openany(self.filename) as self.itpfile: + for line in self.itpfile: line = line.split(';')[0].strip() # ; is for comments if not line: # Skip line if empty continue - if line.startswith('#'): #ignore include, ifdefs, etc + + if line.startswith('#ifdef'): + kw = line.split()[1] + if kwargs.get(kw): + continue + else: + self.skip_if() + + if line.startswith('#ifndef'): + kw = line.split()[1] + if not kwargs.get(kw): + continue + else: + self.skip_if() + + # Only gets triggered when if condition is true + if line.startswith('#else'): + self.skip_else() + + if line.startswith('#'): #ignore include, endif, etc continue if '[' in line and ']' in line: @@ -153,45 +173,45 @@ def parse(self, **kwargs): lst.append('') elif section == 'bonds': - values = line.split() - funct = int(values[2]) - if funct in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10): - bonds[tuple(values[:2])].append(funct) + self.add_param(line, bonds, n_funct=2, funct_values=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) elif section == 'constraints': - values = line.split() - funct = int(values[2]) - if funct in (1, 2): - bonds[tuple(values[:2])].append(funct) + self.add_param(line, bonds, n_funct=2, funct_values=(1, 2)) elif section == 'settles': - values = line.split() - funct = int(values[2]) - if funct in (1,): - bonds[tuple(values[:2])].append(funct) + # [ settles ] is a triangular constraint for + # water molecules. + # In ITP files this is defined with only the + # oxygen atom index. The next two atoms are + # assumed to be hydrogens. Unlike TPRParser, + # the manual only lists this format (as of 2019). + # These are treated as 2 bonds and 1 angle. + oxygen, funct, doh, dhh = line.split() + try: + base = self.index_ids([oxygen])[0] + except ValueError: + pass + else: + bonds[(base, base+1)].append("settles") + bonds[(base, base+2)].append("settles") + angles[(base+1, base, base+2)].append("settles") elif section == 'angles': - values = line.split() - funct = int(values[3]) - if funct in (1, 2, 3, 4, 5, 6, 8, 10): - angles[tuple(values[:3])].append(funct) - + self.add_param(line, angles, n_funct=3, funct_values=(1, 2, 3, 4, 5, 6, 8, 10)) elif section == 'dihedrals': # funct == 1: proper # funct == 2: improper - values = line.split() - funct = int(values[4]) - if funct in (1, 3, 5, 8, 9, 10, 11): - dihedrals[tuple(values[:4])].append(funct) - elif funct in (2, 4): - impropers[tuple(values[:4])].append(funct) + + self.add_param(line, dihedrals, n_funct=4, funct_values=(1, 3, 5, 8, 9, 10, 11)) + self.add_param(line, impropers, n_funct=4, funct_values=(2, 4)) + attrs = [] # atom stuff for vals, Attr, dtype in ( - (ids, Atomids, np.int32), + (self.ids, Atomids, np.int32), (types, Atomtypes, object), (names, Atomnames, object), (chargegroups, Chargegroups, np.int32), @@ -213,7 +233,7 @@ def parse(self, **kwargs): attrs.append(Resnums(resids.copy())) attrs.append(Resnames(resnames)) - n_atoms = len(ids) + n_atoms = len(self.ids) n_residues = len(resids) n_segments = 1 attrs.append(Segids(np.array([segid], dtype=object))) @@ -232,14 +252,49 @@ def parse(self, **kwargs): (dihedrals, Dihedrals, 'dihedrals'), (impropers, Impropers, 'impropers') ): - vals, types = zip(*list(dct.items())) + if dct: + indices, types = zip(*list(dct.items())) + else: + indices, types = [], [] - indices = tuple(map(ids.index, x) for x in vals) types = [squash_identical(t) for t in types] tattr = Attr(indices, types=types) top.add_TopologyAttr(tattr) return top + + def skip_if(self): + """ + Skip lines in if condition, *inclusive* of the #endif or #else. + """ + line = next(self.itpfile) + while not line.startswith('#endif') and not line.startswith('#else'): + line = next(self.itpfile) + return line + + def skip_else(self): + """ + Skip lines in else condition, *inclusive* of #endif. + """ + line = next(self.itpfile) + while not line.startswith('#endif'): + line = next(self.itpfile) + return line + + def index_ids(self, values): + """ + Get indices of atom ids (list of strings) + """ + return tuple(map(self.ids.index, values)) + + def add_param(self, line, container, n_funct=2, funct_values=[]): + values = line.split() + funct = int(values[n_funct]) + if funct in funct_values: + try: + container[self.index_ids(values[:n_funct])].append(funct) + except ValueError: + pass diff --git a/testsuite/MDAnalysisTests/data/spce.itp b/testsuite/MDAnalysisTests/data/spce.itp new file mode 100644 index 00000000000..b1a3fe2b7e2 --- /dev/null +++ b/testsuite/MDAnalysisTests/data/spce.itp @@ -0,0 +1,45 @@ +[ moleculetype ] +; molname nrexcl +SOL 2 + +[ atoms ] +; nr type resnr residue atom cgnr charge mass +#ifndef HEAVY_H + 1 OW 1 SOL OW 1 -0.8476 15.99940 + 2 H 1 SOL HW1 1 0.4238 1.00800 + 3 H 1 SOL HW2 1 0.4238 1.00800 +#else + 1 OW 1 SOL OW 1 -0.8476 9.95140 + 2 H 1 SOL HW1 1 0.4238 4.03200 + 3 H 1 SOL HW2 1 0.4238 4.03200 +#ifdef EXTRA_ATOMS + 4 OW 1 SOL OW2 1 -0.8476 9.95140 + 5 H 1 SOL HW3 1 0.4238 4.03200 +#ifndef HEAVY_SIX + 6 H 1 SOL HW4 1 0.4238 4.03200 +#else + 6 H 1 SOL HW4 1 0.4238 40.0320 +#endif + 7 H 1 SOL HW5 1 0.4238 4.03200 +#endif +#endif + +#ifndef FLEXIBLE +[ settles ] +; OW funct doh dhh +1 1 0.1 0.16330 + +[ exclusions ] +1 2 3 +2 1 3 +3 1 2 +#else +[ bonds ] +; i j funct length force.c. +1 2 1 0.1 345000 0.1 345000 +1 3 1 0.1 345000 0.1 345000 + +[ angles ] +; i j k funct angle force.c. +2 1 3 1 109.47 383 109.47 383 +#endif diff --git a/testsuite/MDAnalysisTests/data/tip5p.itp b/testsuite/MDAnalysisTests/data/tip5p.itp new file mode 100644 index 00000000000..751abfa10e8 --- /dev/null +++ b/testsuite/MDAnalysisTests/data/tip5p.itp @@ -0,0 +1,63 @@ +; original reference: [M. W. Mahoney and W. L. Jorgensen, J. Chem. Phys. 112 , 2000] +; +; Note that there are various issues with tip5p and the different forcefields. +; Discussion is here: http://redmine.gromacs.org/issues/1348 + +[ moleculetype ] +; molname nrexcl +SOL 2 + +[ atoms ] +; id at type res nr residu name at name cg nr charge +1 opls_118 1 SOL OW 1 0 +2 opls_119 1 SOL HW1 1 0.241 +3 opls_119 1 SOL HW2 1 0.241 +4 opls_120 1 SOL LP1 1 -0.241 +5 opls_120 1 SOL LP2 1 -0.241 +#ifdef EXTRA_ATOMS ; added for keyword tests +6 opls_120 1 SOL LP3 1 -0.241 +7 opls_120 1 SOL LP4 1 0.241 +#endif + + +#ifndef FLEXIBLE + +[ settles ] +; i funct doh dhh +1 1 0.09572 0.15139 + +#else + +[ bonds ] +; i j funct length force.c. +1 2 1 0.09572 502416.0 0.09572 502416.0 +1 3 1 0.09572 502416.0 0.09572 502416.0 + +[ angles ] +; i j k funct angle force.c. +2 1 3 1 104.52 628.02 104.52 628.02 + +#endif + +[ virtual_sites3 ] +; The position of the virtual site is computed as follows: +; +; The distance from OW to L is 0.07 nm, the geometry is tetrahedral +; (109.47 deg) +; Therefore, a = b = 0.07 * cos (109.47/2) / | xOH1 + xOH2 | +; c = 0.07 * sin (109.47/2) / | xOH1 X xOH2 | +; +; Using | xOH1 X xOH2 | = | xOH1 | | xOH2 | sin (H1-O-H2) +; | xOH1 + xOH2 | = 2 | xOH1 | cos (H1-O-H2) +; Vsite pos x4 = x1 + a*x21 + b*x31 + c*(x21 X x31) + +; Vsite from funct a b c +4 1 2 3 4 -0.344908 -0.344908 -6.4437903493 +5 1 2 3 4 -0.344908 -0.344908 6.4437903493 + +[ exclusions ] +1 2 3 4 5 +2 1 3 4 5 +3 1 2 4 5 +4 1 2 3 5 +5 1 2 3 4 diff --git a/testsuite/MDAnalysisTests/datafiles.py b/testsuite/MDAnalysisTests/datafiles.py index b140a5d99a2..1eb6cf3216b 100644 --- a/testsuite/MDAnalysisTests/datafiles.py +++ b/testsuite/MDAnalysisTests/datafiles.py @@ -174,7 +174,9 @@ "GRO_huge_box", # for testing gro parser with hige box sizes "ITP", # for GROMACS generated itps "ITP_nomass", # for ATB generated itps - "edited_ITP", # to check different directives are read properly + "ITP_edited", # to check different directives are read properly + "ITP_tip5p", # tip5p water from opls-aa, edited with additional keywords + "ITP_spce", # spce water from gromos54a7, edited with additional keywords ] from pkg_resources import resource_filename @@ -481,7 +483,9 @@ ITP = resource_filename(__name__, 'data/gromacs_ala10.itp') ITP_nomass = resource_filename(__name__, 'data/itp_nomass.itp') -edited_ITP = resource_filename(__name__, 'data/edited_itp.itp') +ITP_edited = resource_filename(__name__, 'data/edited_itp.itp') +ITP_tip5p = resource_filename(__name__, "data/tip5p.itp") +ITP_spce = resource_filename(__name__, 'data/spce.itp') # This should be the last line: clean up namespace del resource_filename diff --git a/testsuite/MDAnalysisTests/topology/test_itp.py b/testsuite/MDAnalysisTests/topology/test_itp.py index 43cb23fdade..b110c0acb92 100644 --- a/testsuite/MDAnalysisTests/topology/test_itp.py +++ b/testsuite/MDAnalysisTests/topology/test_itp.py @@ -29,12 +29,13 @@ from MDAnalysisTests.datafiles import ( ITP, # GROMACS itp ITP_nomass, # from Automated Topology Builder - edited_ITP, + ITP_edited, + ITP_tip5p, + ITP_spce, ) -class TestITP(ParserBase): +class BaseITP(ParserBase): parser = mda.topology.ITPParser.ITPParser - ref_filename = ITP expected_attrs = ['ids', 'names', 'types', 'masses', 'charges', 'chargegroups', 'resids', 'resnames', @@ -44,18 +45,47 @@ class TestITP(ParserBase): expected_n_residues = 10 expected_n_segments = 1 + expected_n_bonds = 0 + expected_n_angles = 0 + expected_n_dihedrals = 0 + expected_n_impropers = 0 + + @pytest.fixture def universe(self, filename): return mda.Universe(filename) def test_bonds_total_counts(self, top): - assert len(top.bonds.values) == 62 + assert len(top.bonds.values) == self.expected_n_bonds + + def test_angles_total_counts(self, top): + assert len(top.angles.values) == self.expected_n_angles + + def test_dihedrals_total_counts(self, top): + assert len(top.dihedrals.values) == self.expected_n_dihedrals + + def test_impropers_total_counts(self, top): + assert len(top.impropers.values) == self.expected_n_impropers + + +class TestITP(BaseITP): + ref_filename = ITP + + expected_n_atoms = 63 + expected_n_residues = 10 + expected_n_segments = 1 + + expected_n_bonds = 62 + expected_n_angles = 91 + expected_n_dihedrals = 30 + expected_n_impropers = 29 + def test_bonds_atom_counts(self, universe): assert len(universe.atoms[[0]].bonds) == 3 assert len(universe.atoms[[42]].bonds) == 1 - def test_bonds_identity(self, top): + def test_bonds_values(self, top): vals = top.bonds.values for b in ((0, 1), (0, 2), (0, 3), (3, 4)): assert b in vals @@ -63,14 +93,11 @@ def test_bonds_identity(self, top): def test_bonds_type(self, universe): assert universe.bonds[0].type == 2 - def test_angles_total_counts(self, top): - assert len(top.angles.values) == 91 - def test_angles_atom_counts(self, universe): assert len(universe.atoms[[0]].angles) == 5 assert len(universe.atoms[[42]].angles) == 2 - def test_angles_identity(self, top): + def test_angles_values(self, top): vals = top.angles.values for b in ((1, 0, 2), (1, 0, 3), (2, 0, 3)): assert (b in vals) or (b[::-1] in vals) @@ -78,9 +105,6 @@ def test_angles_identity(self, top): def test_angles_type(self, universe): assert universe.angles[0].type == 2 - def test_dihedrals_total_counts(self, top): - assert len(top.dihedrals.values) == 30 - def test_dihedrals_atom_counts(self, universe): assert len(universe.atoms[[0]].dihedrals) == 2 @@ -89,26 +113,24 @@ def test_dihedrals_multiple_types(self, universe): dih = universe.dihedrals.atomgroup_intersection(ag, strict=True)[0] assert len(dih.type) == 2 - def test_dihedrals_identity(self, top): + def test_dihedrals_values(self, top): vals = top.dihedrals.values for b in ((1, 0, 3, 5), (0, 3, 5, 7)): assert (b in vals) or (b[::-1] in vals) - def test_dihedrals_identity(self, universe): + def test_dihedrals_type(self, universe): assert universe.dihedrals[0].type == (1, 1) - - def test_impropers_total_counts(self, top): - assert len(top.impropers.values) == 29 + def test_impropers_atom_counts(self, universe): assert len(universe.atoms[[0]].impropers) == 1 - def test_impropers_identity(self, top): + def test_impropers_values(self, top): vals = top.impropers.values for b in ((3, 0, 5, 4), (5, 3, 7, 6)): - assert (b in vals) and (b[::-1] in vals) + assert (b in vals) or (b[::-1] in vals) - def test_impropers_identity(self, universe): + def test_impropers_type(self, universe): assert universe.impropers[0].type == 2 class TestITPNoMass(ParserBase): @@ -132,24 +154,20 @@ def test_mass_guess(self, universe): assert universe.atoms[0].mass not in ('', None) -class TestDifferentDirectivesITP(TestITP): +class TestDifferentDirectivesITP(BaseITP): - ref_filename = edited_ITP + ref_filename = ITP_edited + expected_n_bonds = 62 + 118 + expected_n_angles = 88 + expected_n_dihedrals = 28 + expected_n_impropers = 29 - def test_angles_total_counts(self, top): - assert len(top.angles.values) == 88 def test_no_extra_angles(self, top): for a in ((57, 59, 61), (60, 59, 61), (59, 61, 62)): assert a not in top.angles.values - def test_dihedrals_total_counts(self, top): - assert len(top.dihedrals.values) == 28 - - def test_bonds_total_counts(self, top): - assert len(top.bonds.values) == (118 + 62) # 118: pairs -> constraints - def test_bonds_atom_counts(self, universe): assert len(universe.atoms[[0]].bonds) == 5 assert len(universe.atoms[[42]].bonds) == 5 @@ -158,4 +176,81 @@ def test_dihedrals_atom_counts(self, universe): assert len(universe.atoms[[0]].dihedrals) == 1 def test_dihedrals_identity(self, universe): - assert universe.dihedrals[0].type == (1, 1) \ No newline at end of file + assert universe.dihedrals[0].type == (1, 1) + +class TestITPNoKeywords(BaseITP): + """ + Test reading ITP files *without* defined keywords. + """ + ref_filename = ITP_tip5p + expected_n_atoms = 5 + expected_n_residues = 1 + expected_n_segments = 1 + + guessed_attrs = ['masses'] + + expected_n_bonds = 2 + expected_n_angles = 1 + expected_n_dihedrals = 0 + expected_n_impropers = 0 + + def test_whether_settles_types(self, universe): + for param in list(universe.bonds) + list(universe.angles): + assert param.type == 'settles' + + def test_bonds_values(self, top): + vals = top.bonds.values + for b in [(0, 1), (0, 2)]: + assert b in vals + + def test_angles_values(self, top): + assert (1, 0, 2) in top.angles.values + + +class TestITPKeywords(TestITPNoKeywords): + """ + Test reading ITP files *with* defined keywords. + """ + + expected_n_atoms = 7 + + @pytest.fixture + def universe(self, filename): + return mda.Universe(filename, FLEXIBLE=True, EXTRA_ATOMS=True) + + @pytest.fixture() + def top(self, filename): + with self.parser(filename) as p: + yield p.parse(FLEXIBLE=True, EXTRA_ATOMS=True) + + def test_whether_settles_types(self, universe): + for param in list(universe.bonds) + list(universe.angles): + assert param.type == 1 + + + +class TestNestedIfs(BaseITP): + """ + Test reading ITP files with nested ifdef/ifndef conditions. + """ + ref_filename = ITP_spce + expected_n_atoms = 7 + expected_n_residues = 1 + expected_n_segments = 1 + + expected_n_bonds = 2 + expected_n_angles = 1 + expected_n_dihedrals = 0 + expected_n_impropers = 0 + + @pytest.fixture + def universe(self, filename): + return mda.Universe(filename, HEAVY_H=True, EXTRA_ATOMS=True, HEAVY_SIX=True) + + @pytest.fixture() + def top(self, filename): + with self.parser(filename) as p: + yield p.parse(HEAVY_H=True, EXTRA_ATOMS=True, HEAVY_SIX=True) + + def test_heavy_atom(self, universe): + assert universe.atoms[5].mass > 40 From 76cc15212d7e79107900f8617febbd2bc7026710 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Tue, 7 Jan 2020 20:03:37 +1100 Subject: [PATCH 07/15] renamed and documented reduce_singular --- package/MDAnalysis/topology/ITPParser.py | 4 ++-- package/MDAnalysis/topology/base.py | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/package/MDAnalysis/topology/ITPParser.py b/package/MDAnalysis/topology/ITPParser.py index c20e390a9da..23c983d7302 100644 --- a/package/MDAnalysis/topology/ITPParser.py +++ b/package/MDAnalysis/topology/ITPParser.py @@ -49,7 +49,7 @@ from ..lib.util import openany from . import guessers -from .base import TopologyReaderBase, change_squash, squash_identical +from .base import TopologyReaderBase, change_squash, reduce_singular from ..core.topologyattrs import ( Atomids, Atomnames, @@ -257,7 +257,7 @@ def parse(self, **kwargs): else: indices, types = [], [] - types = [squash_identical(t) for t in types] + types = [reduce_singular(t) for t in types] tattr = Attr(indices, types=types) top.add_TopologyAttr(tattr) diff --git a/package/MDAnalysis/topology/base.py b/package/MDAnalysis/topology/base.py index 238f3da4296..171f9e2ae25 100644 --- a/package/MDAnalysis/topology/base.py +++ b/package/MDAnalysis/topology/base.py @@ -183,7 +183,19 @@ def get_borders(*arrays): return residx, new_others -def squash_identical(values): +def reduce_singular(values): + """Returns the value in an array of length 1, or + the tuple of an array with a longer lengh. + + Parameters + ---------- + values: array-like + Array to squash + + Returns + ------- + values: tuple or single value + """ if len(values) == 1: return values[0] else: From 82991f6f416433ba917ad381401b6e6019139d68 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Tue, 14 Jan 2020 09:45:01 +1100 Subject: [PATCH 08/15] fixed indent --- package/MDAnalysis/topology/base.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package/MDAnalysis/topology/base.py b/package/MDAnalysis/topology/base.py index 171f9e2ae25..9bb590f5e07 100644 --- a/package/MDAnalysis/topology/base.py +++ b/package/MDAnalysis/topology/base.py @@ -196,7 +196,7 @@ def reduce_singular(values): ------- values: tuple or single value """ - if len(values) == 1: - return values[0] - else: - return tuple(values) \ No newline at end of file + if len(values) == 1: + return values[0] + else: + return tuple(values) \ No newline at end of file From dbf2c7dd8f8c954f964ae39ef2fcad2d6fa6d35d Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Tue, 14 Jan 2020 11:58:44 +1100 Subject: [PATCH 09/15] added section explaining keyword preprocessor flags --- package/MDAnalysis/topology/ITPParser.py | 36 ++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/package/MDAnalysis/topology/ITPParser.py b/package/MDAnalysis/topology/ITPParser.py index 23c983d7302..ef2f7da1675 100644 --- a/package/MDAnalysis/topology/ITPParser.py +++ b/package/MDAnalysis/topology/ITPParser.py @@ -31,6 +31,42 @@ Bonds, angles, dihedrals and impropers are also read from the file. + +Preprocessor variables +---------------------- + +ITP files are often defined with lines that depend on +whether a keyword flag is given. For example: + + #ifndef FLEXIBLE + + [ settles ] + ; i funct doh dhh + 1 1 0.09572 0.15139 + + #else + + [ bonds ] + ; i j funct length force.c. + 1 2 1 0.09572 502416.0 0.09572 502416.0 + 1 3 1 0.09572 502416.0 0.09572 502416.0 + + [ angles ] + ; i j k funct angle force.c. + 2 1 3 1 104.52 628.02 104.52 628.02 + + #endif + +Define these preprocessor variables by passing keyword arguments:: + + import MDAnalysis as mda + from MDAnalysis.tests.datafiles import ITP_tip5p + + u = mda.Universe(ITP_tip5p, FLEXIBLE=True) + +These keyword variables are **case-sensitive**. Currently, +MDAnalysis only supports boolean variables in if/else conditions. + .. _ITP: http://manual.gromacs.org/current/reference-manual/topologies/topology-file-formats.html#molecule-itp-file Classes From 8032830b89334d082b03387608925833e4697595 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Thu, 16 Jan 2020 15:16:07 +1100 Subject: [PATCH 10/15] generalised ITPParser to ITP and TOP files, so it now reads #include, #define, and stacks #if --- package/CHANGELOG | 6 +- package/MDAnalysis/topology/ITPParser.py | 642 +++- testsuite/MDAnalysisTests/data/bad_top.top | 2 + testsuite/MDAnalysisTests/data/edited_itp.itp | 6 +- .../gromacs/gromos54a7_edited.ff/ff_dum.itp | 35 + .../gromacs/gromos54a7_edited.ff/ffbonded.itp | 549 +++ .../gromos54a7_edited.ff/ffnonbonded.itp | 3091 +++++++++++++++++ .../gromos54a7_edited.ff/forcefield.itp | 10 + .../gromacs/gromos54a7_edited.ff/ions.itp | 55 + .../data/gromacs/gromos54a7_edited.ff/spc.itp | 35 + .../MDAnalysisTests/data/gromacs_ala10.top | 45 + .../MDAnalysisTests/data/no_endif_spc.itp | 35 + testsuite/MDAnalysisTests/data/tip5p.itp | 10 +- testsuite/MDAnalysisTests/datafiles.py | 10 +- .../MDAnalysisTests/topology/test_itp.py | 79 +- 15 files changed, 4426 insertions(+), 184 deletions(-) create mode 100644 testsuite/MDAnalysisTests/data/bad_top.top create mode 100644 testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ff_dum.itp create mode 100644 testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ffbonded.itp create mode 100644 testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ffnonbonded.itp create mode 100644 testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/forcefield.itp create mode 100644 testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ions.itp create mode 100644 testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/spc.itp create mode 100644 testsuite/MDAnalysisTests/data/gromacs_ala10.top create mode 100644 testsuite/MDAnalysisTests/data/no_endif_spc.itp diff --git a/package/CHANGELOG b/package/CHANGELOG index aa69ae3aec7..16ba4d9faff 100644 --- a/package/CHANGELOG +++ b/package/CHANGELOG @@ -33,8 +33,10 @@ Fixes * The expected frames are made available when a trajectory slice is sliced itself with an incomplete slice and/or with a negative step (Issue #2413) * TXYZ parser uses strings for the atom types like other parsers (Issue #2435) - * PDB files no longer lose chainIDs when reading files without segIDs (Issue #2389) - * ITPParser now has improper dihedrals where connectivity attributes can have multiple 'types' + * ITPParser now parses ITP *and* TOP files from GROMACS, reads #include files, and + substitutes #define variables both from the file and when passed in as a keyword + argument. The directives parsed into bonds, angles, impropers, and dihedrals now + match TPRParser. (PR #2408) Enhancements * Enhanges exception message when trajectory output file has no extension assigned. diff --git a/package/MDAnalysis/topology/ITPParser.py b/package/MDAnalysis/topology/ITPParser.py index ef2f7da1675..582a1d943a2 100644 --- a/package/MDAnalysis/topology/ITPParser.py +++ b/package/MDAnalysis/topology/ITPParser.py @@ -25,50 +25,94 @@ ITP topology parser =================== -Reads a GROMACS ITP_ file to build the system. The topology will +Reads a GROMACS ITP_ or TOP_ file to build the system. The topology will contain atom IDs, segids, residue IDs, residue names, atom names, atom types, -charges, chargegroups, masses (guessed if not found), and moltypes. -Bonds, angles, dihedrals and impropers are also read from -the file. +charges, chargegroups, masses (guessed if not found), moltypes, and molnums. +Bonds, angles, dihedrals and impropers are also read from the file. +If an ITP file is passed without a ``[ molecules ]`` directive, passing +``infer_system=True`` (the default option) will create a Universe with +1 molecule of each defined ``moleculetype``. +If a ``[ molecules ]`` section is present, ``infer_system`` is ignored. -Preprocessor variables ----------------------- +If files are included with the `#include` directive, they will also be read. If they are not in the working directory, :ref:`ITPParser will look for them` in the ``include_dir`` directory. By default, this is set to ``include_dir="/usr/local/gromacs/share/gromacs/top/"``. +Variables can be defined with the `#define` directive in files, or by passing in +:ref:`keyword arguments `. -ITP files are often defined with lines that depend on -whether a keyword flag is given. For example: +Examples +-------- + + :: + import MDAnalysis as mda + from MDAnalysis.tests.datafiles import ITP_tip5p + + # override charge of HW2 atom (defined in file as HW2_CHARGE) + u = mda.Universe(ITP_tip5p, HW2_CHARGE=2, infer_system=True) + + .. note:: + + AMBER also uses topology files with the .top extension. To use ITPParser + to read GROMACS top files, pass ``topology_format='ITP'``. + + :: - #ifndef FLEXIBLE + import MDAnalysis as mda + u = mda.Universe('topol.top', topology_format='ITP') - [ settles ] - ; i funct doh dhh - 1 1 0.09572 0.15139 - #else - [ bonds ] - ; i j funct length force.c. - 1 2 1 0.09572 502416.0 0.09572 502416.0 - 1 3 1 0.09572 502416.0 0.09572 502416.0 +.. _itp-define-kwargs: - [ angles ] - ; i j k funct angle force.c. - 2 1 3 1 104.52 628.02 104.52 628.02 +Preprocessor variables +---------------------- + +ITP files are often defined with lines that depend on +whether a keyword flag is given. For example, this modified TIP5P water file: + + [ moleculetype ] + ; molname nrexcl + SOL 2 + + #ifndef HW1_CHARGE + #define HW1_CHARGE 0.241 + #endif + #define HW2_CHARGE 0.241 + + [ atoms ] + ; id at type res nr residu name at name cg nr charge + 1 opls_118 1 SOL OW 1 0 + 2 opls_119 1 SOL HW1 1 HW1_CHARGE + 3 opls_119 1 SOL HW2 1 HW2_CHARGE + 4 opls_120 1 SOL LP1 1 -0.241 + 5 opls_120 1 SOL LP2 1 -0.241 + #ifdef EXTRA_ATOMS ; added for keyword tests + 6 opls_120 1 SOL LP3 1 -0.241 + 7 opls_120 1 SOL LP4 1 0.241 #endif -Define these preprocessor variables by passing keyword arguments:: + +Define these preprocessor variables by passing keyword arguments. Any arguments that you +pass in *override* any variables defined in the file. For example, the universe below +will have charges of 3 for the HW1 and HW2 atoms:: import MDAnalysis as mda from MDAnalysis.tests.datafiles import ITP_tip5p - u = mda.Universe(ITP_tip5p, FLEXIBLE=True) + u = mda.Universe(ITP_tip5p, EXTRA_ATOMS=True, HW1_CHARGE=3, HW2_CHARGE=3) + +These keyword variables are **case-sensitive**. Note that if you set keywords to +``False`` or ``None``, they will be treated as if they are not defined in #ifdef conditions. + +For example, the universe below will only have 5 atoms. :: + + u = mda.Universe(ITP_tip5p, EXTRA_ATOMS=False) -These keyword variables are **case-sensitive**. Currently, -MDAnalysis only supports boolean variables in if/else conditions. .. _ITP: http://manual.gromacs.org/current/reference-manual/topologies/topology-file-formats.html#molecule-itp-file +.. _TOP: http://manual.gromacs.org/current/reference-manual/file-formats.html#top + Classes ------- @@ -79,6 +123,7 @@ """ from __future__ import absolute_import from collections import defaultdict +from pathlib import Path import logging import numpy as np @@ -92,6 +137,7 @@ Atomtypes, Masses, Moltypes, + Molnums, Charges, Resids, Resnums, @@ -110,8 +156,286 @@ class Chargegroups(AtomAttr): attrname = 'chargegroups' singular = 'chargegroup' +class GmxTopIterator: + """ + Iterate over the lines of a TOP/ITP file and its included files + + The iterator strips comments, deals with #ifdef and #ifndef conditions, + and substitutes defined variables. + + Defined variables passed into ``__init__`` *override* anything defined in the file. + """ + + def __init__(self, path, include_dir, defines): + self._original_defines = defines + self.defines = dict(**defines) # copy + self.include_dir = Path(include_dir) + self.file_stack = [path] + self.if_stack = [] + self.starting_file = path + + @property + def current_file(self): + return self.file_stack[-1] + + def __iter__(self): + for line in self.iter_from_file(self.starting_file): + yield line + + def iter_from_file(self, path): + found_path = self.find_path(path) + with openany(found_path) as infile: + self.file_stack.append(infile) + + for line in self.clean_file_lines(infile): + if self.if_stack: + while self.if_stack: + func = self.if_stack.pop() + func(infile) + continue + + if line.startswith('#include'): + inc = line.split(maxsplit=1)[1][1:-1] + for line in self.iter_from_file(inc): + yield line + elif line.startswith('#define'): + self.define(line) + elif line.startswith('#if'): + self.do_if(line, infile) + elif line.startswith('#else'): + self.if_stack.append(self.skip_until_endif) + elif line.startswith('#'): # ignore #if and others + pass + elif line: + line = self.substitute_defined(line) + yield line + self.file_stack.pop() + + def define(self, line): + try: + _, variable, value = line.split(maxsplit=2) + except ValueError: + _, variable = line.split() + value = True + + # kwargs overrides files + if variable not in self._original_defines: + self.defines[variable] = value + + def substitute_defined(self, line): + split = line.split() + for k, v in self.defines.items(): + if k in split: + split[split.index(k)] = str(v) + line = ' '.join(split) + return line + + def clean_file_lines(self, infile): + for line in infile: + line = line.split(';')[0].strip() # ; is for comments + yield line + + def do_if(self, line, infile): + ifdef, variable = line.split() + if ifdef == '#ifdef': + if self.defines.get(variable) in (False, None): + self.if_stack.append(self.skip_until_else) + elif ifdef == '#ifndef': + if self.defines.get(variable) not in (False, None): + self.if_stack.append(self.skip_until_else) + + def skip_until_else(self, infile): + """Skip lines until #if condition ends""" + for line in self.clean_file_lines(infile): + if line.startswith('#if'): + self.if_stack.append(self.skip_until_endif) + elif line.startswith('#endif') or line.startswith('#else'): + break + else: + raise IOError('Missing #endif in {}'.format(self.current_file)) + + def skip_until_endif(self, infile): + """Skip lines until #endif""" + for line in self.clean_file_lines(infile): + if line.startswith('#if'): + self.if_stack.append(self.skip_until_endif) + elif line.startswith('#endif'): + break + else: + raise IOError('Missing #endif in {}'.format(self.current_file)) + + def find_path(self, path): + try: + # in case of TextIOWrapper + current_file = self.current_file.name + except AttributeError: + current_file = self.current_file + + try: + path = path.name + except AttributeError: + pass + + current_path = Path(current_file) + dir_path = current_path.parent / path + if dir_path.exists(): + return str(dir_path) + include_path = self.include_dir / path + if include_path.exists(): + return str(include_path) + raise FileNotFoundError('Could not find {}'.format(path)) + + +class Molecule: + """Store moleculetype-specific attributes""" + + def __init__(self, name): + self.name = name + self.ids = [] + self.types = [] + self.resids = [] + self.resnames = [] + self.names = [] + self.chargegroups = [] + self.charges = [] + self.masses = [] + + self.bonds = defaultdict(list) + self.angles = defaultdict(list) + self.dihedrals = defaultdict(list) + self.impropers = defaultdict(list) + + self.parsers = { + 'atoms': self.parse_atoms, + 'bonds': self.parse_bonds, + 'angles': self.parse_angles, + 'dihedrals': self.parse_dihedrals, + 'constraints': self.parse_constraints, + 'settles': self.parse_settles + } + + self.resolved_residue_attrs = False + + @property + def atom_order(self): + return [self.ids, self.types, self.resids, self.resnames, + self.names, self.chargegroups, self.charges, + self.masses] + + @property + def params(self): + return [self.bonds, self.angles, self.dihedrals, self.impropers] + + def parse_atoms(self, line): + values = line.split() + for lst in self.atom_order: + try: + lst.append(values.pop(0)) + except IndexError: # ran out of values + lst.append('') + + def parse_bonds(self, line): + self.add_param(line, self.bonds, n_funct=2, + funct_values=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) + + def parse_angles(self, line): + self.add_param(line, self.angles, n_funct=3, + funct_values=(1, 2, 3, 4, 5, 6, 8, 10)) + + def parse_dihedrals(self, line): + dih = self.add_param(line, self.dihedrals, n_funct=4, + funct_values=(1, 3, 5, 8, 9, 10, 11)) + if not dih: + self.add_param(line, self.impropers, n_funct=4, + funct_values=(2, 4)) + + def parse_constraints(self, line): + self.add_param(line, self.bonds, n_funct=2, funct_values=(1, 2)) + + def parse_settles(self, line): + # [ settles ] is a triangular constraint for + # water molecules. + # In ITP files this is defined with only the + # oxygen atom index. The next two atoms are + # assumed to be hydrogens. Unlike TPRParser, + # the manual only lists this format (as of 2019). + # These are treated as 2 bonds and 1 angle. + oxygen, funct, doh, dhh = line.split() + try: + base = self.index_ids([oxygen])[0] + except ValueError: + pass + else: + self.bonds[(base, base+1)].append("settles") + self.bonds[(base, base+2)].append("settles") + self.angles[(base+1, base, base+2)].append("settles") + + def resolve_residue_attrs(self): + """Figure out residue borders and assign moltypes and molnums""" + resids = np.array(self.resids, dtype=np.int32) + resnames = np.array(self.resnames, dtype=object) + self.residx, (self.resids, resnames) = change_squash((resids,), (resids, resnames)) + self.resnames = list(resnames) + self.moltypes = [self.name] * len(self.resids) + self.molnums = np.array([1] * len(self.resids)) + + self.resolved_residue_attrs = True + + + def shift_indices(self, n_atoms=0, n_residues=0, n_chargegroups=0, n_mols=0): + """ + Get attributes ready for adding onto a larger topology. + + Shifts atom indices, residue indices, molnums, and chargegroup numbers. + """ + if not self.resolved_residue_attrs: + self.resolve_residue_attrs() + + self.resids = list(np.array(self.resids)+n_residues) + self.residx = list(np.array(self.residx)+n_residues) + self.molnums = list(np.array(self.molnums) + n_mols) + self.ids = list(np.array(self.ids, dtype=int) + n_atoms) + + try: + cg = np.array(self.chargegroups, dtype=int) + except ValueError: + cg = np.arange(1, len(self.chargegroups)+1) + self.chargegroups = list(cg+n_chargegroups) + + new_params = [] + for p in self.params: + new = {} + for indices, values in p.items(): + new[tuple(np.array(indices)+n_atoms)] = values + new_params.append(new) + + self.bonds, self.angles, self.dihedrals, self.impropers = new_params + + + def add_param(self, line, container, n_funct=2, funct_values=[]): + """Add defined GROMACS directive lines, only if the funct is in ``funct_values``""" + values = line.split() + funct = int(values[n_funct]) + if funct in funct_values: + try: + ids = self.index_ids(values[:n_funct]) + container[ids].append(funct) + except ValueError: + pass + return True + else: + return False + + def index_ids(self, values): + """ + Get indices of atom ids (list of strings) + """ + return tuple(map(self.ids.index, values)) + + + class ITPParser(TopologyReaderBase): - """Read topology information from a GROMACS ITP_ file. + """Read topology information from a GROMACS ITP_ or TOP_ file. Creates a Topology with the following Attributes: - ids @@ -119,174 +443,124 @@ class ITPParser(TopologyReaderBase): - types - masses - charges + - chargegroups - resids - resnames - segids - moltypes + - molnums - bonds - angles - dihedrals - impropers .. _ITP: http://manual.gromacs.org/current/reference-manual/topologies/topology-file-formats.html#molecule-itp-file + .. _TOP: http://manual.gromacs.org/current/reference-manual/file-formats.html#top """ format = 'ITP' - def parse(self, **kwargs): + def parse(self, include_dir='/usr/local/gromacs/share/gromacs/top/', + infer_system=True, + **kwargs): """Parse ITP file into Topology + Parameters + ---------- + include_dir: str, optional + A directory in which to look for other files included + from the original file, if the files are not first found + in the current directory. + Default: "/usr/local/gromacs/share/gromacs/top/" + + infer_system: bool, optional (default True) + If a ``[ molecules ]`` directive is not found within the the + topology file, create a Topology with one of every + ``[ moleculetype ]`` defined. If a ``[ molecules ]`` directive is + found, this keyword is ignored. + Returns ------- MDAnalysis *Topology* object """ - self.ids = [] - types = [] - resids = [] - resnames = [] - names = [] - chargegroups = [] - charges = [] - masses = [] - - atom_lists = [self.ids, types, resids, resnames, names, chargegroups, charges, masses] - bonds = defaultdict(list) - angles = defaultdict(list) - dihedrals = defaultdict(list) - impropers = defaultdict(list) - - segid = 'SYSTEM' - molnum = 1 - - section = None - if_queue = [] + self.molecules = {} + self._molecules = [] # for order + self.current_mol = None + self.parser = self._pass + self.system_molecules = [] # Open and check itp validity - with openany(self.filename) as self.itpfile: - for line in self.itpfile: - line = line.split(';')[0].strip() # ; is for comments - if not line: # Skip line if empty - continue - - if line.startswith('#ifdef'): - kw = line.split()[1] - if kwargs.get(kw): - continue - else: - self.skip_if() - - if line.startswith('#ifndef'): - kw = line.split()[1] - if not kwargs.get(kw): - continue - else: - self.skip_if() - - # Only gets triggered when if condition is true - if line.startswith('#else'): - self.skip_else() - - if line.startswith('#'): #ignore include, endif, etc - continue - + with openany(self.filename) as itpfile: + self.lines = GmxTopIterator(itpfile, include_dir, kwargs) + for line in self.lines: if '[' in line and ']' in line: section = line.split('[')[1].split(']')[0].strip() - continue - if not section: - continue - - if section == 'moleculetype': - segid = line.split()[0] - - # atoms - elif section == 'atoms': - values = line.split() - for lst in atom_lists: - try: - lst.append(values.pop(0)) - except IndexError: # ran out of values - lst.append('') - - elif section == 'bonds': - self.add_param(line, bonds, n_funct=2, funct_values=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) - - elif section == 'constraints': - self.add_param(line, bonds, n_funct=2, funct_values=(1, 2)) - - elif section == 'settles': - # [ settles ] is a triangular constraint for - # water molecules. - # In ITP files this is defined with only the - # oxygen atom index. The next two atoms are - # assumed to be hydrogens. Unlike TPRParser, - # the manual only lists this format (as of 2019). - # These are treated as 2 bonds and 1 angle. - oxygen, funct, doh, dhh = line.split() - try: - base = self.index_ids([oxygen])[0] - except ValueError: - pass + if section == 'moleculetype': + self.parser = self.parse_moleculetype + + elif section == 'molecules': + self.parser = self.parse_molecules + + elif self.current_mol: + self.parser = self.current_mol.parsers.get(section, self._pass) + else: - bonds[(base, base+1)].append("settles") - bonds[(base, base+2)].append("settles") - angles[(base+1, base, base+2)].append("settles") - - elif section == 'angles': - self.add_param(line, angles, n_funct=3, funct_values=(1, 2, 3, 4, 5, 6, 8, 10)) + self.parser = self._pass - elif section == 'dihedrals': - # funct == 1: proper - # funct == 2: improper + else: + self.parser(line) - self.add_param(line, dihedrals, n_funct=4, funct_values=(1, 3, 5, 8, 9, 10, 11)) - self.add_param(line, impropers, n_funct=4, funct_values=(2, 4)) - + if not self.system_molecules and infer_system: + self.system_molecules = [x.name for x in self._molecules] + + self.build_system() attrs = [] - # atom stuff for vals, Attr, dtype in ( (self.ids, Atomids, np.int32), - (types, Atomtypes, object), - (names, Atomnames, object), - (chargegroups, Chargegroups, np.int32), - (charges, Charges, np.float32), + (self.types, Atomtypes, object), + (self.names, Atomnames, object), + (self.chargegroups, Chargegroups, np.int32), + (self.charges, Charges, np.float32), ): if all(vals): attrs.append(Attr(np.array(vals, dtype=dtype))) - if not all(masses): - masses = guessers.guess_masses(types) + if not all(self.masses): + masses = guessers.guess_masses(self.types) attrs.append(Masses(masses, guessed=True)) else: - attrs.append(Masses(np.array(masses, dtype=np.float64))) + attrs.append(Masses(np.array(self.masses, dtype=np.float64))) - resids = np.array(resids, dtype=np.int32) - resnames = np.array(resnames, dtype=object) - residx, (resids, resnames) = change_squash((resids,), (resids, resnames)) + # residue stuff + resids = np.array(self.resids, dtype=np.int32) + resnames = np.array(self.resnames, dtype=object) + molnums = np.array(self.molnums, dtype=np.int32) attrs.append(Resids(resids)) attrs.append(Resnums(resids.copy())) attrs.append(Resnames(resnames)) + attrs.append(Moltypes(np.array(self.moltypes, dtype=object))) + attrs.append(Molnums(molnums)) n_atoms = len(self.ids) - n_residues = len(resids) - n_segments = 1 - attrs.append(Segids(np.array([segid], dtype=object))) - attrs.append(Moltypes(np.array([segid]*n_residues))) - segidx = None + n_residues = len(self.resids) + n_segments = len(self.system_molecules) + attrs.append(Segids(np.array(self.system_molecules, dtype=object))) + segidx = molnums-1 top = Topology(n_atoms, n_residues, n_segments, attrs=attrs, - atom_resindex=residx, + atom_resindex=self.residx, residue_segindex=segidx) - - # connectivity + + # connectivity stuff for dct, Attr, attrname in ( - (bonds, Bonds, 'bonds'), - (angles, Angles, 'angles'), - (dihedrals, Dihedrals, 'dihedrals'), - (impropers, Impropers, 'impropers') + (self.bonds, Bonds, 'bonds'), + (self.angles, Angles, 'angles'), + (self.dihedrals, Dihedrals, 'dihedrals'), + (self.impropers, Impropers, 'impropers') ): if dct: indices, types = zip(*list(dct.items())) @@ -299,38 +573,58 @@ def parse(self, **kwargs): top.add_TopologyAttr(tattr) return top - - def skip_if(self): - """ - Skip lines in if condition, *inclusive* of the #endif or #else. - """ - line = next(self.itpfile) - while not line.startswith('#endif') and not line.startswith('#else'): - line = next(self.itpfile) - return line - def skip_else(self): - """ - Skip lines in else condition, *inclusive* of #endif. - """ - line = next(self.itpfile) - while not line.startswith('#endif'): - line = next(self.itpfile) - return line - def index_ids(self, values): - """ - Get indices of atom ids (list of strings) - """ - return tuple(map(self.ids.index, values)) - - def add_param(self, line, container, n_funct=2, funct_values=[]): - values = line.split() - funct = int(values[n_funct]) - if funct in funct_values: - try: - container[self.index_ids(values[:n_funct])].append(funct) - except ValueError: - pass + def _pass(self, line): + pass + + def parse_moleculetype(self, line): + name = line.split()[0] + self.current_mol = self.molecules[name] = Molecule(name) + self._molecules.append(self.current_mol) + def parse_molecules(self, line): + name, n_mol = line.split() + self.system_molecules.extend([name]*int(n_mol)) + def build_system(self): + self.ids = [] + self.types = [] + self.resids = [] + self.resnames = [] + self.names = [] + self.chargegroups = [] + self.charges = [] + self.masses = [] + self.moltypes = [] + self.molnums = [] + self.residx = [] + + self.atom_order = [self.ids, self.types, self.resids, self.resnames, + self.names, self.chargegroups, self.charges, + self.masses] + + self.bonds = defaultdict(list) + self.angles = defaultdict(list) + self.dihedrals = defaultdict(list) + self.impropers = defaultdict(list) + + self.params = [self.bonds, self.angles, self.dihedrals, self.impropers] + + for i, moltype in enumerate(self.system_molecules): + mol = self.molecules[moltype] + n_atoms = len(self.ids) + n_res = len(self.resids), + n_cg = len(self.chargegroups) + + mol.shift_indices(n_atoms, n_res, n_cg, i) + + for system_attr, mol_attr in zip(self.atom_order, mol.atom_order): + system_attr.extend(mol_attr) + + self.moltypes.extend(mol.moltypes) + self.molnums.extend(mol.molnums) + self.residx.extend(mol.residx) + + for system_param, mol_param in zip(self.params, mol.params): + system_param.update(mol_param) \ No newline at end of file diff --git a/testsuite/MDAnalysisTests/data/bad_top.top b/testsuite/MDAnalysisTests/data/bad_top.top new file mode 100644 index 00000000000..08e74de9f26 --- /dev/null +++ b/testsuite/MDAnalysisTests/data/bad_top.top @@ -0,0 +1,2 @@ +; Include forcefield parameters +#include "gromos53a6.ff/forcefield.itp" \ No newline at end of file diff --git a/testsuite/MDAnalysisTests/data/edited_itp.itp b/testsuite/MDAnalysisTests/data/edited_itp.itp index 2bec7f7e34f..07e6c49356c 100644 --- a/testsuite/MDAnalysisTests/data/edited_itp.itp +++ b/testsuite/MDAnalysisTests/data/edited_itp.itp @@ -14,6 +14,10 @@ ; Force field was read from the standard GROMACS share directory. ; +#ifndef NL_CHARGE + #define NL_CHARGE -0.66 +#endif + [ moleculetype ] ; Name nrexcl Protein 3 @@ -21,7 +25,7 @@ Protein 3 [ atoms ] ; nr type resnr residue atom cgnr charge mass typeB chargeB massB ; residue 2 ALA rtp ALA q 0.0 - 1 NL 2 ALA N 1 -0.66 14.0067 ; qtot -0.66 + 1 NL 2 ALA N 1 NL_CHARGE 14.0067 ; qtot -0.66 2 H 2 ALA H1 1 0.44 1.008 ; qtot -0.22 3 H 2 ALA H2 1 0.44 1.008 ; qtot 0.22 4 CH1 2 ALA CA 2 -0.22 13.019 ; qtot 0 diff --git a/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ff_dum.itp b/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ff_dum.itp new file mode 100644 index 00000000000..03197c54168 --- /dev/null +++ b/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ff_dum.itp @@ -0,0 +1,35 @@ +; These constraints are used for vsite constructions as generated by pdb2gmx. +; Values depend on the details of the forcefield, vis. bondlengths and angles +; These parameters are designed to be used with the GROMOS96 forcefields +; G43a1, G43a2 and G43b1. + +; Constraints for the rigid NH3/CH3 groups depend on the hygrogen mass, +; since an increased hydrogen mass translates into increased momentum of +; inertia which translates into a larger distance between the dummy masses. +#ifdef HEAVY_H +; now the constraints for the rigid NH3 groups +#define DC_MNC1 0.175695 +#define DC_MNC2 0.188288 +#define DC_MNMN 0.158884 +; now the constraints for the rigid CH3 groups +#define DC_MCN 0.198911 +#define DC_MCS 0.226838 +#define DC_MCC 0.204247 +#define DC_MCNR 0.199798 +#define DC_MCMC 0.184320 +#else +; now the constraints for the rigid NH3 groups +#define DC_MNC1 0.144494 +#define DC_MNC2 0.158002 +#define DC_MNMN 0.079442 +; now the constraints for the rigid CH3 groups +#define DC_MCN 0.161051 +#define DC_MCS 0.190961 +#define DC_MCC 0.166809 +#define DC_MCNR 0.162009 +#define DC_MCMC 0.092160 +#endif +; and the angle-constraints for OH and SH groups in proteins: +#define DC_CS 0.23721 +#define DC_CO 0.19849 +#define DC_PO 0.21603 diff --git a/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ffbonded.itp b/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ffbonded.itp new file mode 100644 index 00000000000..de0b512a0a4 --- /dev/null +++ b/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ffbonded.itp @@ -0,0 +1,549 @@ +; Table 2.5.2.1 +; GROMOS bond-stretching parameters +; +; +; Bond type code +; Force constant +; Ideal bond length +; Examples of usage in terms of non-bonded atom types +; +; +; ICB(H)[N] CB[N] B0[N] +; +#define gb_1 0.1000 1.5700e+07 +; H - OA 750 +; +#define gb_2 0.1000 1.8700e+07 +; H - N (all) 895 +; +#define gb_3 0.1090 1.2300e+07 +; HC - C 700 +; +#define gb_4 0.112 3.7000e+07 +; C - O (CO in heme) 2220 +; +#define gb_5 0.1230 1.6600e+07 +; C - O 1200 +; +#define gb_6 0.1250 1.3400e+07 +; C - OM 1000 +; +#define gb_7 0.1320 1.2000e+07 +; CR1 - NR (6-ring) 1000 +; +#define gb_8 0.1330 8.8700e+06 +; H - S 750 +; +#define gb_9 0.1330 1.0600e+07 +; C - NT, NL 900 +; +#define gb_10 0.1330 1.1800e+07 +; C, CR1 - N, NR, CR1, C (peptide, 5-ring) 1000 +; +#define gb_11 0.1340 1.0500e+07 +; C - N, NZ, NE 900 +; +#define gb_12 0.1340 1.1700e+07 +; C - NR (no H) (6-ring) 1000 +; +#define gb_13 0.1360 1.0200e+07 +; C - OA 900 +; +#define gb_14 0.1380 1.1000e+07 +; C - NR (heme) 1000 +; +#define gb_15 0.1390 8.6600e+06 +; CH2 - C, CR1 (6-ring) 800 +; +#define gb_16 0.1390 1.0800e+07 +; C, CR1 - CH2, C, CR1 (6-ring) 1000 +; +#define gb_17 0.1400 8.5400e+06 +; C, CR1, CH2 - NR (6-ring) 800 +; +#define gb_18 0.1430 8.1800e+06 +; CHn - OA 800 +; +#define gb_19 0.1430 9.2100e+06 +; CHn - OM 900 +; +#define gb_20 0.1435 6.1000e+06 +; CHn - OA (sugar) 600 +; +#define gb_21 0.1470 8.7100e+06 +; CHn - N, NT, NL, NZ, NE 900 +; +#define gb_22 0.1480 5.7300e+06 +; CHn - NR (5-ring) 600 +; +#define gb_23 0.1480 7.6400e+06 +; CHn - NR (6-ring) 800 +; +#define gb_24 0.1480 8.6000e+06 +; O, OM - P 900 +; +#define gb_25 0.1500 8.3700e+06 +; O - S 900 +; +#define gb_26 0.1520 5.4300e+06 +; CHn - CHn (sugar) 600 +; +#define gb_27 0.1530 7.1500e+06 +; C, CHn - C, CHn 800 +; +#define gb_28 0.1610 4.8400e+06 +; OA - P 600 +; +#define gb_29 0.1630 4.7200e+06 +; OA - SI 600 +; +#define gb_30 0.1780 2.7200e+06 +; FE - C (Heme) +; +#define gb_31 0.1780 5.9400e+06 +; CH3 - S 900 +; +#define gb_32 0.1830 5.6200e+06 +; CH2 - S 900 +; +#define gb_33 0.1870 3.5900e+06 +; CH1 - SI 600 +; +#define gb_34 0.198 0.6400e+06 +; NR - FE 120 +; +#define gb_35 0.200 0.6280e+06 +; NR (heme) - FE 120 +; +#define gb_36 0.2040 5.0300e+06 +; S - S 1000 +; +#define gb_37 0.221 0.5400e+06 +; NR - FE 126 +; +#define gb_38 0.1000 2.3200e+07 +; HWat - OWat 1110 +; +#define gb_39 0.1100 1.2100e+07 +; HChl - CChl 700 +; +#define gb_40 0.1758 8.1200e+06 +; CChl - CLChl 1200 +; +#define gb_41 0.1530 8.0400e+06 +; ODmso - SDmso 900 +; +#define gb_42 0.193799 4.9500e+06 +; SDmso - CDmso 890 +; +#define gb_43 0.1760 8.1000e+06 +; CCl4 - CLCl4 1200 +; +#define gb_44 0.1265 1.3100e+07 +; CUrea - OUrea 1000 +; +#define gb_45 0.135 1.0300e+07 +; CUrea - NUrea 900 +; +#define gb_46 0.163299 8.7100e+06 +; HWat - HWat 1110 +; +#define gb_47 0.233839 2.6800e+06 +; HChl - CLChl 700 +; +#define gb_48 0.290283 2.9800e+06 +; CLChl - CLChl 1200 +; +#define gb_49 0.279388 2.3900e+06 +; ODmso - CDmso 890 +; +#define gb_50 0.291189 2.1900e+06 +; CDmso - CDmso 890 +; +#define gb_51 0.2077 3.9700e+06 +; HMet - CMet 820 +; +#define gb_52 0.287407 3.0400e+06 +; CLCl4 - CLCl4 1200 +; +;--- +; Table 2.5.3.1. +; GROMOS bond-angle bending parameters +; +; +; Bond-angle type code +; Force constant +; Ideal bond angle +; Example of usage in terms of non-bonded atom types +; +; +; ICT(H)[N] CT[N] (T0[N]) +; +#define ga_1 90.00 380.00 +; NR(heme) - FE - C 90 +; +#define ga_2 90.00 420.00 +; NR(heme) - FE - NR(heme) 100 +; +#define ga_3 96.00 405.00 +; H - S - CH2 95 +; +#define ga_4 100.00 475.00 +; CH2 - S - CH3 110 +; +#define ga_5 103.00 420.00 +; OA - P - OA 95 +; +#define ga_6 104.00 490.00 +; CH2 - S - S 110 +; +#define ga_7 108.00 465.00 +; NR, C, CR1(5-ring) 100 +; +#define ga_8 109.50 285.00 +; CHn - CHn - CHn, NR(6-ring) (sugar) 60 +; +#define ga_9 109.50 320.00 +; CHn, OA - CHn - OA, NR(ring) (sugar) 68 +; +#define ga_10 109.50 380.00 +; H - NL, NT - H, CHn - OA - CHn(sugar) 80 +; +#define ga_11 109.50 425.00 +; H - NL - C, CHn H - NT - CHn 90 +; +#define ga_12 109.50 450.00 +; X - OA, SI - X 95 +; +#define ga_13 109.50 520.00 +; CHn,C - CHn - C, CHn, OA, OM, N, NE 110 +; +#define ga_14 109.60 450.00 +; OM - P - OA 95 +; +#define ga_15 111.00 530.00 +; CHn - CHn - C, CHn, OA, NR, NT, NL 110 +; +#define ga_16 113.00 545.00 +; CHn - CH2 - S 110 +; +#define ga_17 115.00 50.00 +; NR(heme) - FE - NR 10 +; +#define ga_18 115.00 460.00 +; H - N - CHn 90 +; +#define ga_19 115.00 610.00 +; CHn, C - C - OA, N, NT, NL 120 +; +#define ga_20 116.00 465.00 +; H - NE - CH2 90 +; +#define ga_21 116.00 620.00 +; CH2 - N - CH1 120 +; +#define ga_22 117.00 635.00 +; CH3 - N - C, CHn - C - OM 120 +; +#define ga_23 120.00 390.00 +; H - NT, NZ, NE - C 70 +; +#define ga_24 120.00 445.00 +; H - NT, NZ - H 80 +; +#define ga_25 120.00 505.00 +; H - N - CH3, H, HC - 6-ring, H - NT - CHn 90 +; +#define ga_26 120.00 530.00 +; P, SI - OA - CHn, P 95 +; +#define ga_27 120.00 560.00 +; N, C, CR1 (6-ring, no H) 100 +; +#define ga_28 120.00 670.00 +; NZ - C - NZ, NE 120 +; +#define ga_29 120.00 780.00 +; OM - P - OM 140 +; +#define ga_30 121.00 685.00 +; O - C - CHn, C CH3 - N - CHn 120 +; +#define ga_31 122.00 700.00 +; CH1, CH2 - N - C 120 +; +#define ga_32 123.00 415.00 +; H - N - C 70 +; +#define ga_33 124.00 730.00 +; O - C - OA, N, NT, NL C - NE - CH2 120 +; +#define ga_34 125.00 375.00 +; FE - NR - CR1 (5-ring) 60 +; +#define ga_35 125.00 750.00 +; - 120 +; +#define ga_36 126.00 575.00 +; H, HC - 5-ring 90 +; +#define ga_37 126.00 640.00 +; X(noH) - 5-ring 100 +; +#define ga_38 126.00 770.00 +; OM - C - OM 120 +; +#define ga_39 132.00 760.00 +; 5, 6 ring connnection 100 +; +#define ga_40 155.00 2215.00 +; SI - OA - SI 95 +; +#define ga_41 180.00 91350.00 +; Fe - C - O (heme) 57 +; +#define ga_42 109.50 434.00 +; HWat - OWat - HWat 92 +; +#define ga_43 107.57 484.00 +; HChl - CChl - CLChl 105 +; +#define ga_44 111.30 632.00 +; CLChl - CChl - CLChl 131 +; +#define ga_45 97.40 469.00 +; CDmso - SDmso - CDmso 110 +; +#define ga_46 106.75 503.00 +; CDmso - SDmso - ODmso 110 +; +#define ga_47 108.53 443.00 +; HMet - OMet - CMet 95 +; +#define ga_48 109.50 618.00 +; CLCl4 - CCl4 - CLCl4 131 +; +#define ga_49 107.60 507.00 +; FTFE - CTFE - FTFE 100 +; +#define ga_50 109.50 448.00 +; HTFE - OTFE - CHTFE 85 +; +#define ga_51 110.3 524.00 +; OTFE - CHTFE - CTFE 97 +; +#define ga_52 111.4 532.00 +; CHTFE - CTFE - FTFE 95 +; +#define ga_53 117.2 636.00 +; NUrea - CUrea - NUrea 120 +; +#define ga_54 121.4 690.00 +; OUrea - CUrea - NUrea 120 +; +; Table 2.5.4.1 +; GROMOS improper (harmonic) dihedral angle parameters +; +; +; Improper dihedral-angle type code +; Force constant +; Ideal improper dihedral angle +; Example of usage +; +; +; ICQ(H)[N] CQ[N] (Q0[N]) +; +#define gi_1 0.0 167.42309 +; planar groups 40 +; +#define gi_2 35.26439 334.84617 +; tetrahedral centres 80 +; +#define gi_3 0.0 669.69235 +; heme iron 160 +; +#define gi_4 180.0 167.42309 +; planar groups 40 +; +#define gi_5 -35.26439 334.84617 +; tetrahedral centres 80 +; +; Table 2.5.5.1 (Note: changes with respect to the 43A1 table) +; GROMOS (trigonometric) dihedral torsional angle parameters +; +; +; Dihedral-angle type code +; Force constant +; Phase shift +; Multiplicity +; Example of usage in terms of non-bonded atom types +; +; +; ICP(H)[N] CP[N] PD[N] NP[N] +; +#define gd_1 180.000 2.67 1 +; CHn-CHn-CHn-OA (sugar) 0.6 +; +#define gd_2 180.000 3.41 1 +; OA-CHn-OA-CHn,H (beta sugar) 0.8 +; +#define gd_3 180.000 4.97 1 +; OA-CHn-CHn-OA (sugar) 1.2 +; +#define gd_4 180.000 5.86 1 +; N-CHn-CHn-OA (lipid) 1.4 +; +#define gd_5 180.000 9.35 1 +; OA-CHn-CHn-OA (sugar) 2.2 +; +#define gd_6 180.000 9.45 1 +; OA-CHn-OA-CHn,H (alpha sugar) 2.3 +; +#define gd_7 0.000 2.79 1 +; P-O5*-C5*-C4* (dna) 0.7 +; +#define gd_8 0.000 5.35 1 +; O5*-C5*-C4*-O4* (dna) 1.3 +; +#define gd_9 180.000 1.53 2 +; C1-C2-CAB-CBB (heme) 0.4 +; +#define gd_10 180.000 5.86 2 +; -C-C- 1.4 +; +#define gd_11 180.000 7.11 2 +; -C-OA,OE- (at ring) 1.7 +; +#define gd_12 180.000 16.7 2 +; -C-OA,OE- (carboxyl) 4.0 +; +#define gd_13 180.000 24.0 2 +; CHn-OE-C-CHn (ester lipid) 5.7 +; +#define gd_14 180.000 33.5 2 +; -C-N,NT,NE,NZ,NR- 8.0 +; +#define gd_15 180.000 41.8 2 +; -C-CR1- (6-ring) 10.0 +; +#define gd_16 0.000 0.0 2 +; -CH1(sugar)-NR(base) 0.0 +; +#define gd_17 0.000 0.418 2 +; O-CH1-CHn-no O 0.1 +; +#define gd_18 0.000 2.09 2 +; O-CH1-CHn-O 0.5 +; +#define gd_19 0.000 3.14 2 +; -OA-P- 0.75 +; +#define gd_20 0.000 5.09 2 +; O-P-O- (dna, lipids) 1.2 +; +#define gd_21 0.000 16.7 2 +; -S-S- 4.0 +; +#define gd_22 0.000 1.05 3 +; -OA-P- 0.25 +; +#define gd_23 0.000 1.26 3 +; -CHn-OA(no sugar)- 0.3 +; +#define gd_24 0.000 1.30 3 +; HTFE-OTFE-CHTFE-CTFE 0.3 +; +#define gd_25 0.000 2.53 3 +; O5*-C5*-C4*-O4* (dna) 0.6 +; +#define gd_26 0.000 2.93 3 +; -CH2-S- 0.7 +; +#define gd_27 0.000 3.19 3 +; O-P-O- (dna, lipids) 0.8 +; +#define gd_28 0.000 3.65 3 +; OA-CHn-OA-CHn,H (alpha sugar) 0.9 +; +#define gd_29 0.000 3.77 3 +; -C,CHn,SI- 0.9 +; +#define gd_30 0.000 3.90 3 +; CHn-CHn-OA-H (sugar) 0.9 +; +#define gd_31 0.000 4.18 3 +; HC-C-S- 1.0 +; +#define gd_32 0.000 4.69 3 +; AO-CHn-OA-CHn,H (beta sugar) +; +#define gd_33 0.000 5.44 3 +; HC-C-C- 1.3 +; +#define gd_34 0.000 5.92 3 +; -CHn,SI-CHn- 1.4 +; +#define gd_35 0.000 7.69 3 +; OA-CHn-CHn-OA (sugar) 1.8 +; +#define gd_36 0.000 8.62 3 +; N-CHn-CHn-OA (lipid) 2.1 +; +#define gd_37 0.000 9.50 3 +; OA-CHn-CHn-OA (sugar) 2.3 +; +#define gd_38 0.000 0.0 4 +; -NR-FE- 0.0 +; +#define gd_39 180.000 1.0 6 +; -CHn-N,NE- 0.24 +; +#define gd_40 0.000 1.0 6 +; -CHn-C,NR(ring), CR1- 0.24 +; +#define gd_41 0.000 3.77 6 +; -CHn-NT- 0.9 +; +#define gd_42 180.000 3.5 2 +; Backbone dihedral angle -N-CA-C-N- 0.84 +; +#define gd_43 0.000 2.8 3 +; Backbone dihedral angle -C-N-CA-C- 0.67 +; +#define gd_44 180.000 0.7 6 +; Backbone dihedral angle -C-N-CA-C- 0.17 +; +#define gd_45 0.000 0.4 6 +; Backbone dihedral angle -N-CA-C-N- 0.096 +; +; get the constraint distances for dummy atom constructions + +#include "ff_dum.itp" + +[ constrainttypes ] +; now the constraints for the rigid NH3 groups + MNH3 C 2 DC_MNC1 + MNH3 CH1 2 DC_MNC2 + MNH3 CH2 2 DC_MNC2 + MNH3 MNH3 2 DC_MNMN +; and the angle-constraints for OH and SH groups in proteins: + CH2 H 2 DC_CO + CH1 H 2 DC_CO + C H 2 DC_CO + P H 2 DC_PO + +; bond-, angle- and dihedraltypes for specbonds: +[ bondtypes ] +S S 2 gb_36 +NR FE 2 gb_34 + +[ angletypes ] +CH1 CH2 S 2 ga_16 +CH2 S S 2 ga_6 +CR1 NR FE 2 ga_34 +NR FE NR 2 ga_17 + +[ dihedraltypes ] +S S 1 gd_21 +NR FE 1 gd_38 +CH2 S 1 gd_26 diff --git a/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ffnonbonded.itp b/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ffnonbonded.itp new file mode 100644 index 00000000000..896450ffad8 --- /dev/null +++ b/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ffnonbonded.itp @@ -0,0 +1,3091 @@ +[ atomtypes ] +;name at.num mass charge ptype c6 c12 + O 8 0.000 0.000 A 0.0022619536 1e-06 + OM 8 0.000 0.000 A 0.0022619536 7.4149321e-07 + OA 8 0.000 0.000 A 0.0022619536 1.505529e-06 + OE 8 0.000 0.000 A 0.0022619536 1.21e-06 + OW 8 0.000 0.000 A 0.0026173456 2.634129e-06 + N 7 0.000 0.000 A 0.0024364096 2.319529e-06 + NT 7 0.000 0.000 A 0.0024364096 5.0625e-06 + NL 7 0.000 0.000 A 0.0024364096 2.319529e-06 + NR 7 0.000 0.000 A 0.0024364096 3.389281e-06 + NZ 7 0.000 0.000 A 0.0024364096 2.319529e-06 + NE 7 0.000 0.000 A 0.0024364096 2.319529e-06 + C 6 0.000 0.000 A 0.0023406244 4.937284e-06 + CH0 6 0.000 0.000 A 0.0023970816 0.0002053489 + CH1 6 0.000 0.000 A 0.00606841 9.70225e-05 + CH2 6 0.000 0.000 A 0.0074684164 3.3965584e-05 + CH3 6 0.000 0.000 A 0.0096138025 2.6646244e-05 + CH4 6 0.000 0.000 A 0.01317904 3.4363044e-05 + CH2r 6 0.000 0.000 A 0.0073342096 2.8058209e-05 + CR1 6 0.000 0.000 A 0.0055130625 1.5116544e-05 + HC 1 0.000 0.000 A 8.464e-05 1.5129e-08 + H 1 0.000 0.000 A 0 0 + DUM 0 0.000 0.000 A 0 0 + S 16 0.000 0.000 A 0.0099840064 1.3075456e-05 + CU1+ 29 0.000 0.000 A 0.0004182025 5.1251281e-09 + CU2+ 29 0.000 0.000 A 0.0004182025 5.1251281e-09 + FE 26 0.000 0.000 A 0 0 + ZN2+ 30 0.000 0.000 A 0.0004182025 9.4400656e-09 + MG2+ 12 0.000 0.000 A 6.52864e-05 3.4082244e-09 + CA2+ 20 0.000 0.000 A 0.00100489 4.9801249e-07 + P 15 0.000 0.000 A 0.01473796 2.2193521e-05 + AR 18 0.000 0.000 A 0.0062647225 9.847044e-06 + F 9 0.000 0.000 A 0.0011778624 7.6073284e-07 + CL 17 0.000 0.000 A 0.0087647044 1.5295921e-05 + BR 35 0.000 0.000 A 0.02765569 6.5480464e-05 + CMet 6 0.000 0.000 A 0.0088755241 1.936e-05 + OMet 8 0.000 0.000 A 0.0022619536 2.325625e-06 + NA+ 11 0.000 0.000 A 7.884019264e-05 7.290000e-08 + CL- 17 0.000 0.000 A 0.0128097124 6.0466176e-05 + CChl 6 0.000 0.000 A 0.0026308693 4.064256e-06 +CLChl 17 0.000 0.000 A 0.0083066819 1.3764842e-05 + HChl 1 0.000 0.000 A 3.76996e-05 4.2999495e-09 +SDmso 16 0.000 0.000 A 0.010561673 2.149806e-05 +CDmso 6 0.000 0.000 A 0.0096138025 2.6646244e-05 +ODmso 8 0.000 0.000 A 0.0022707131 7.5144626e-07 + CCl4 6 0.000 0.000 A 0.0026308693 7.5999462e-06 +CLCl4 17 0.000 0.000 A 0.0076040144 1.2767758e-05 + FTFE 9 0.000 0.000 A 0.0011778624 1e-06 + CTFE 6 0.000 0.000 A 0.0023406244 3.374569e-06 +CHTFE 6 0.000 0.000 A 0.0071048041 2.5775929e-05 + OTFE 8 0.000 0.000 A 0.0022619536 1.505529e-06 +CUrea 6 0.000 0.000 A 0.0048868488 1.3589545e-05 +OUrea 8 0.000 0.000 A 0.0023639044 1.5898688e-06 +NUrea 7 0.000 0.000 A 0.0033527574 3.9509513e-06 + SI 14 0.000 0.000 A 0.01473796 2.2193521e-05 + MNH3 0 0.000 0.000 A 0.0 0.0 + MW 0 0.000 0.000 D 0.0 0.0 + CH3p 6 0.000 0.000 A 0.0096138025 2.6646244e-05 + +[ nonbond_params ] +; i j func c6 c12 + OM O 1 2.261954E-03 8.611000E-07 + OA O 1 2.261954E-03 1.386510E-06 + OA OM 1 2.261954E-03 2.258907E-06 + OE O 1 2.261954E-03 1.100000E-06 + OE OM 1 2.261954E-03 9.472100E-07 + OE OA 1 2.261954E-03 1.505529E-06 + OW O 1 2.433170E-03 1.833990E-06 + OW OM 1 2.433170E-03 2.987943E-06 + OW OA 1 2.433170E-03 1.991421E-06 + OW OE 1 2.433170E-03 1.991421E-06 + N O 1 2.347562e-03 1.943000e-06 + N OM 1 2.347562E-03 3.577063E-06 + N OA 1 2.347562E-03 2.384061E-06 + N OE 1 2.347562E-03 2.384061E-06 + N OW 1 2.525258E-03 3.153489E-06 + NT O 1 2.347562E-03 2.542500E-06 + NT OM 1 2.347562E-03 4.142250E-06 + NT OA 1 2.347562E-03 2.760750E-06 + NT OE 1 2.347562E-03 2.760750E-06 + NT OW 1 2.525258E-03 3.651750E-06 + NT N 1 2.436410E-03 4.371750E-06 + NL O 1 2.347562E-03 3.466840E-06 + NL OM 1 2.347562E-03 9.412624E-06 + NL OA 1 2.347562E-03 3.764436E-06 + NL OE 1 2.347562E-03 3.764436E-06 + NL OW 1 2.525258E-03 4.979364E-06 + NL N 1 2.436410E-03 2.319529E-06 + NL NT 1 2.436410E-03 6.903000E-06 + NR O 1 2.347562E-03 2.080330E-06 + NR OM 1 2.347562E-03 3.389281E-06 + NR OA 1 2.347562E-03 2.258907E-06 + NR OE 1 2.347562E-03 2.258907E-06 + NR OW 1 2.525258E-03 2.987943E-06 + NR N 1 2.436410E-03 3.577063E-06 + NR NT 1 2.436410E-03 4.142250E-06 + NR NL 1 2.436410E-03 5.648188E-06 + NZ O 1 2.347562E-03 2.427240E-06 + NZ OM 1 2.347562E-03 6.590064E-06 + NZ OA 1 2.347562E-03 2.635596E-06 + NZ OE 1 2.347562E-03 2.635596E-06 + NZ OW 1 2.525258E-03 3.486204E-06 + NZ N 1 2.436410E-03 2.319529E-06 + NZ NT 1 2.436410E-03 4.833000E-06 + NZ NL 1 2.436410E-03 2.319529E-06 + NZ NR 1 2.436410E-03 3.954468E-06 + NE O 1 2.347562E-03 2.241920E-06 + NE OM 1 2.347562E-03 6.086912E-06 + NE OA 1 2.347562E-03 2.434368E-06 + NE OE 1 2.347562E-03 2.434368E-06 + NE OW 1 2.525258E-03 3.220032E-06 + NE N 1 2.436410E-03 2.319529E-06 + NE NT 1 2.436410E-03 4.464000E-06 + NE NL 1 2.436410E-03 2.319529E-06 + NE NR 1 2.436410E-03 3.652544E-06 + NE NZ 1 2.436410E-03 2.319529E-06 + C O 1 2.300953E-03 2.222000E-06 + C OM 1 2.300953E-03 1.913364E-06 + C OA 1 2.300953E-03 2.444200E-06 + C OE 1 2.300953E-03 2.444200E-06 + C OW 1 2.475121E-03 3.606306E-06 + C N 1 2.388037E-03 3.384106E-06 + C NT 1 2.388037E-03 3.384106E-06 + C NL 1 2.388037E-03 3.384106E-06 + C NR 1 2.388037E-03 3.384106E-06 + C NZ 1 2.388037E-03 3.384106E-06 + C NE 1 2.388037E-03 3.384106E-06 + CH0 O 1 2.328538E-03 1.433000E-05 + CH0 OM 1 2.328538E-03 1.233956E-05 + CH0 OA 1 2.328538E-03 1.576300E-05 + CH0 OE 1 2.328538E-03 1.576300E-05 + CH0 OW 1 2.504794E-03 2.325759E-05 + CH0 N 1 2.416666E-03 2.182459E-05 + CH0 NT 1 2.416666E-03 2.182459E-05 + CH0 NL 1 2.416666E-03 2.182459E-05 + CH0 NR 1 2.416666E-03 2.182459E-05 + CH0 NZ 1 2.416666E-03 2.182459E-05 + CH0 NE 1 2.416666E-03 2.182459E-05 + CH0 C 1 2.368685E-03 3.184126E-05 + CH1 O 1 3.704924E-03 9.850000E-06 + CH1 OM 1 3.704924E-03 8.481835E-06 + CH1 OA 1 3.704924E-03 1.083500E-05 + CH1 OE 1 3.704924E-03 1.083500E-05 + CH1 OW 1 3.985364E-03 1.598655E-05 + CH1 N 1 3.845144E-03 1.500155E-05 + CH1 NT 1 3.845144E-03 1.500155E-05 + CH1 NL 1 3.845144E-03 1.500155E-05 + CH1 NR 1 3.845144E-03 1.500155E-05 + CH1 NZ 1 3.845144E-03 1.500155E-05 + CH1 NE 1 3.845144E-03 1.500155E-05 + CH1 C 1 3.768802E-03 2.188670E-05 + CH1 CH0 1 3.813984E-03 1.411505E-04 + CH2 O 1 4.110135E-03 5.828000E-06 + CH2 OM 1 4.110135E-03 5.018491E-06 + CH2 OA 1 4.110135E-03 6.410800E-06 + CH2 OE 1 4.110135E-03 6.410800E-06 + CH2 OW 1 4.421247E-03 9.458844E-06 + CH2 N 1 4.265691E-03 8.876044E-06 + CH2 NT 1 4.265691E-03 8.876044E-06 + CH2 NL 1 4.265691E-03 8.876044E-06 + CH2 NR 1 4.265691E-03 8.876044E-06 + CH2 NZ 1 4.265691E-03 8.876044E-06 + CH2 NE 1 4.265691E-03 8.876044E-06 + CH2 C 1 4.181000E-03 1.294982E-05 + CH2 CH0 1 4.231123E-03 8.351524E-05 + CH2 CH1 1 6.732118E-03 5.740580E-05 + CH3 O 1 4.663258E-03 5.162000E-06 + CH3 OM 1 4.663258E-03 4.444998E-06 + CH3 OA 1 4.663258E-03 5.678200E-06 + CH3 OE 1 4.663258E-03 5.678200E-06 + CH3 OW 1 5.016238E-03 8.377926E-06 + CH3 N 1 4.839748E-03 7.861726E-06 + CH3 NT 1 4.839748E-03 7.861726E-06 + CH3 NL 1 4.839748E-03 7.861726E-06 + CH3 NR 1 4.839748E-03 7.861726E-06 + CH3 NZ 1 4.839748E-03 7.861726E-06 + CH3 NE 1 4.839748E-03 7.861726E-06 + CH3 C 1 4.743659E-03 1.146996E-05 + CH3 CH0 1 4.800528E-03 7.397146E-05 + CH3 CH1 1 7.638095E-03 5.084570E-05 + CH3 CH2 1 8.473481E-03 3.008414E-05 + CH4 O 1 5.459888E-03 5.862000E-06 + CH4 OM 1 5.459888E-03 5.047768E-06 + CH4 OA 1 5.459888E-03 6.448200E-06 + CH4 OE 1 5.459888E-03 6.448200E-06 + CH4 OW 1 5.873168E-03 9.514026E-06 + CH4 N 1 5.666528E-03 8.927826E-06 + CH4 NT 1 5.666528E-03 8.927826E-06 + CH4 NL 1 5.666528E-03 8.927826E-06 + CH4 NR 1 5.666528E-03 8.927826E-06 + CH4 NZ 1 5.666528E-03 8.927826E-06 + CH4 NE 1 5.666528E-03 8.927826E-06 + CH4 C 1 5.554024E-03 1.302536E-05 + CH4 CH0 1 5.620608E-03 8.400246E-05 + CH4 CH1 1 8.942920E-03 5.774070E-05 + CH4 CH2 1 9.921016E-03 3.416374E-05 + CH4 CH3 1 1.125614E-02 3.025964E-05 + CH2r O 1 4.073038E-03 5.297000E-06 + CH2r OM 1 4.073038E-03 4.561247E-06 + CH2r OA 1 4.073038E-03 5.826700E-06 + CH2r OE 1 4.073038E-03 5.826700E-06 + CH2r OW 1 4.381342E-03 8.597031E-06 + CH2r N 1 4.227190E-03 8.067331E-06 + CH2r NT 1 4.227190E-03 8.067331E-06 + CH2r NL 1 4.227190E-03 8.067331E-06 + CH2r NR 1 4.227190E-03 8.067331E-06 + CH2r NZ 1 4.227190E-03 8.067331E-06 + CH2r NE 1 4.227190E-03 8.067331E-06 + CH2r C 1 4.143263E-03 1.176993E-05 + CH2r CH0 1 4.192934E-03 7.590601E-05 + CH2r CH1 1 6.671356E-03 5.217545E-05 + CH2r CH2 1 7.401009E-03 3.087092E-05 + CH2r CH3 1 8.397002E-03 2.734311E-05 + CH2r CH4 1 9.831472E-03 3.105101E-05 + CR1 O 1 3.531330E-03 3.888000E-06 + CR1 OM 1 3.531330E-03 3.347957E-06 + CR1 OA 1 3.531330E-03 4.276800E-06 + CR1 OE 1 3.531330E-03 4.276800E-06 + CR1 OW 1 3.798630E-03 6.310224E-06 + CR1 N 1 3.664980E-03 5.921424E-06 + CR1 NT 1 3.664980E-03 5.921424E-06 + CR1 NL 1 3.664980E-03 5.921424E-06 + CR1 NR 1 3.664980E-03 5.921424E-06 + CR1 NZ 1 3.664980E-03 5.921424E-06 + CR1 NE 1 3.664980E-03 5.921424E-06 + CR1 C 1 3.592215E-03 8.639136E-06 + CR1 CH0 1 3.635280E-03 5.571504E-05 + CR1 CH1 1 5.784075E-03 3.829680E-05 + CR1 CH2 1 6.416685E-03 2.265926E-05 + CR1 CH3 1 7.280212E-03 2.006986E-05 + CR1 CH4 1 8.523900E-03 2.279146E-05 + CR1 CH2r 1 6.358770E-03 2.059474E-05 + HC O 1 4.375520E-04 1.230000E-07 + HC OM 1 4.375520E-04 1.059153E-07 + HC OA 1 4.375520E-04 1.353000E-07 + HC OE 1 4.375520E-04 1.353000E-07 + HC OW 1 4.706720E-04 1.996290E-07 + HC N 1 4.541120E-04 1.873290E-07 + HC NT 1 4.541120E-04 1.873290E-07 + HC NL 1 4.541120E-04 1.873290E-07 + HC NR 1 4.541120E-04 1.873290E-07 + HC NZ 1 4.541120E-04 1.873290E-07 + HC NE 1 4.541120E-04 1.873290E-07 + HC C 1 4.450960E-04 2.733060E-07 + HC CH0 1 4.504320E-04 1.762590E-06 + HC CH1 1 7.166800E-04 1.211550E-06 + HC CH2 1 7.950640E-04 7.168440E-07 + HC CH3 1 9.020600E-04 6.349260E-07 + HC CH4 1 1.056160E-03 7.210260E-07 + HC CH2r 1 7.878880E-04 6.515310E-07 + HC CR1 1 6.831000E-04 4.782240E-07 + H O 1 0.000000E+00 0.000000E+00 + H OM 1 0.000000E+00 0.000000E+00 + H OA 1 0.000000E+00 0.000000E+00 + H OE 1 0.000000E+00 0.000000E+00 + H OW 1 0.000000E+00 0.000000E+00 + H N 1 0.000000E+00 0.000000E+00 + H NT 1 0.000000E+00 0.000000E+00 + H NL 1 0.000000E+00 0.000000E+00 + H NR 1 0.000000E+00 0.000000E+00 + H NZ 1 0.000000E+00 0.000000E+00 + H NE 1 0.000000E+00 0.000000E+00 + H C 1 0.000000E+00 0.000000E+00 + H CH0 1 0.000000E+00 0.000000E+00 + H CH1 1 0.000000E+00 0.000000E+00 + H CH2 1 0.000000E+00 0.000000E+00 + H CH3 1 0.000000E+00 0.000000E+00 + H CH4 1 0.000000E+00 0.000000E+00 + H CH2r 1 0.000000E+00 0.000000E+00 + H CR1 1 0.000000E+00 0.000000E+00 + H HC 1 0.000000E+00 0.000000E+00 + DUM O 1 0.000000E+00 0.000000E+00 + DUM OM 1 0.000000E+00 0.000000E+00 + DUM OA 1 0.000000E+00 0.000000E+00 + DUM OE 1 0.000000E+00 0.000000E+00 + DUM OW 1 0.000000E+00 0.000000E+00 + DUM N 1 0.000000E+00 0.000000E+00 + DUM NT 1 0.000000E+00 0.000000E+00 + DUM NL 1 0.000000E+00 0.000000E+00 + DUM NR 1 0.000000E+00 0.000000E+00 + DUM NZ 1 0.000000E+00 0.000000E+00 + DUM NE 1 0.000000E+00 0.000000E+00 + DUM C 1 0.000000E+00 0.000000E+00 + DUM CH0 1 0.000000E+00 0.000000E+00 + DUM CH1 1 0.000000E+00 0.000000E+00 + DUM CH2 1 0.000000E+00 0.000000E+00 + DUM CH3 1 0.000000E+00 0.000000E+00 + DUM CH4 1 0.000000E+00 0.000000E+00 + DUM CH2r 1 0.000000E+00 0.000000E+00 + DUM CR1 1 0.000000E+00 0.000000E+00 + DUM HC 1 0.000000E+00 0.000000E+00 + DUM H 1 0.000000E+00 0.000000E+00 + S O 1 4.752195E-03 3.616000E-06 + S OM 1 4.752195E-03 3.113738E-06 + S OA 1 4.752195E-03 3.977600E-06 + S OE 1 4.752195E-03 3.977600E-06 + S OW 1 5.111907E-03 5.868768E-06 + S N 1 4.932051E-03 5.507168E-06 + S NT 1 4.932051E-03 5.507168E-06 + S NL 1 4.932051E-03 5.507168E-06 + S NR 1 4.932051E-03 5.507168E-06 + S NZ 1 4.932051E-03 5.507168E-06 + S NE 1 4.932051E-03 5.507168E-06 + S C 1 4.834130E-03 8.034752E-06 + S CH0 1 4.892083E-03 5.181728E-05 + S CH1 1 7.783768E-03 3.561760E-05 + S CH2 1 8.635086E-03 2.107405E-05 + S CH3 1 9.797156E-03 1.866579E-05 + S CH4 1 1.147082E-02 2.119699E-05 + S CH2r 1 8.557149E-03 1.915395E-05 + S CR1 1 7.419060E-03 1.405901E-05 + S HC 1 9.192640E-04 4.447680E-07 + S H 1 0.000000E+00 0.000000E+00 + S DUM 1 0.000000E+00 0.000000E+00 + CU1+ O 1 9.726020E-04 2.542500E-07 + CU1+ OM 1 9.726020E-04 6.903000E-07 + CU1+ OA 1 9.726020E-04 2.760750E-07 + CU1+ OE 1 9.726020E-04 2.760750E-07 + CU1+ OW 1 1.046222E-03 3.651750E-07 + CU1+ N 1 1.009412E-03 1.090316E-07 + CU1+ NT 1 1.009412E-03 1.090316E-07 + CU1+ NL 1 1.009412E-03 1.090316E-07 + CU1+ NR 1 1.009412E-03 4.142250E-07 + CU1+ NZ 1 1.009412E-03 1.090316E-07 + CU1+ NE 1 1.009412E-03 1.090316E-07 + CU1+ C 1 9.893710E-04 1.590730E-07 + CU1+ CH0 1 1.001232E-03 1.025885E-06 + CU1+ CH1 1 1.593055E-03 7.051615E-07 + CU1+ CH2 1 1.767289E-03 4.172265E-07 + CU1+ CH3 1 2.005122E-03 3.695476E-07 + CU1+ CH4 1 2.347660E-03 4.196606E-07 + CU1+ CH2r 1 1.751338E-03 3.792122E-07 + CU1+ CR1 1 1.518412E-03 2.783419E-07 + CU1+ HC 1 1.881400E-04 8.805570E-09 + CU1+ H 1 0.000000E+00 0.000000E+00 + CU1+ DUM 1 0.000000E+00 0.000000E+00 + CU1+ S 1 2.043364E-03 2.588694E-07 + CU2+ O 1 9.726020E-04 4.622830E-07 + CU2+ OM 1 9.726020E-04 1.255119E-06 + CU2+ OA 1 9.726020E-04 5.019657E-07 + CU2+ OE 1 9.726020E-04 5.019657E-07 + CU2+ OW 1 1.046222E-03 6.639693E-07 + CU2+ N 1 1.009412E-03 1.090316E-07 + CU2+ NT 1 1.009412E-03 1.090316E-07 + CU2+ NL 1 1.009412E-03 1.090316E-07 + CU2+ NR 1 1.009412E-03 7.531531E-07 + CU2+ NZ 1 1.009412E-03 1.090316E-07 + CU2+ NE 1 1.009412E-03 1.090316E-07 + CU2+ C 1 9.893710E-04 1.590730E-07 + CU2+ CH0 1 1.001232E-03 1.025885E-06 + CU2+ CH1 1 1.593055E-03 7.051615E-07 + CU2+ CH2 1 1.767289E-03 4.172265E-07 + CU2+ CH3 1 2.005122E-03 3.695476E-07 + CU2+ CH4 1 2.347660E-03 4.196606E-07 + CU2+ CH2r 1 1.751338E-03 3.792122E-07 + CU2+ CR1 1 1.518412E-03 2.783419E-07 + CU2+ HC 1 1.881400E-04 8.805570E-09 + CU2+ H 1 0.000000E+00 0.000000E+00 + CU2+ DUM 1 0.000000E+00 0.000000E+00 + CU2+ S 1 2.043364E-03 2.588694E-07 + CU2+ CU1+ 1 4.182025E-04 5.125128E-09 + FE O 1 0.000000E+00 0.000000E+00 + FE OM 1 0.000000E+00 0.000000E+00 + FE OA 1 0.000000E+00 0.000000E+00 + FE OE 1 0.000000E+00 0.000000E+00 + FE OW 1 0.000000E+00 0.000000E+00 + FE N 1 0.000000E+00 0.000000E+00 + FE NT 1 0.000000E+00 0.000000E+00 + FE NL 1 0.000000E+00 0.000000E+00 + FE NR 1 0.000000E+00 0.000000E+00 + FE NZ 1 0.000000E+00 0.000000E+00 + FE NE 1 0.000000E+00 0.000000E+00 + FE C 1 0.000000E+00 0.000000E+00 + FE CH0 1 0.000000E+00 0.000000E+00 + FE CH1 1 0.000000E+00 0.000000E+00 + FE CH2 1 0.000000E+00 0.000000E+00 + FE CH3 1 0.000000E+00 0.000000E+00 + FE CH4 1 0.000000E+00 0.000000E+00 + FE CH2r 1 0.000000E+00 0.000000E+00 + FE CR1 1 0.000000E+00 0.000000E+00 + FE HC 1 0.000000E+00 0.000000E+00 + FE H 1 0.000000E+00 0.000000E+00 + FE DUM 1 0.000000E+00 0.000000E+00 + FE S 1 0.000000E+00 0.000000E+00 + FE CU1+ 1 0.000000E+00 0.000000E+00 + FE CU2+ 1 0.000000E+00 0.000000E+00 + ZN2+ O 1 9.726020E-04 1.097908E-07 + ZN2+ OM 1 9.726020E-04 2.980869E-07 + ZN2+ OA 1 9.726020E-04 1.192153E-07 + ZN2+ OE 1 9.726020E-04 1.192153E-07 + ZN2+ OW 1 1.046222E-03 1.576907E-07 + ZN2+ N 1 1.009412E-03 1.479747E-07 + ZN2+ NT 1 1.009412E-03 1.479747E-07 + ZN2+ NL 1 1.009412E-03 1.479747E-07 + ZN2+ NR 1 1.009412E-03 1.788716E-07 + ZN2+ NZ 1 1.009412E-03 1.479747E-07 + ZN2+ NE 1 1.009412E-03 1.479747E-07 + ZN2+ C 1 9.893710E-04 2.158895E-07 + ZN2+ CH0 1 1.001232E-03 1.392303E-06 + ZN2+ CH1 1 1.593055E-03 9.570260E-07 + ZN2+ CH2 1 1.767289E-03 5.662485E-07 + ZN2+ CH3 1 2.005122E-03 5.015399E-07 + ZN2+ CH4 1 2.347660E-03 5.695519E-07 + ZN2+ CH2r 1 1.751338E-03 5.146565E-07 + ZN2+ CR1 1 1.518412E-03 3.777581E-07 + ZN2+ HC 1 1.881400E-04 1.195068E-08 + ZN2+ H 1 0.000000E+00 0.000000E+00 + ZN2+ DUM 1 0.000000E+00 0.000000E+00 + ZN2+ S 1 2.043364E-03 3.513306E-07 + ZN2+ CU1+ 1 4.182025E-04 6.955684E-09 + ZN2+ CU2+ 1 4.182025E-04 6.955684E-09 + ZN2+ FE 1 0.000000E+00 0.000000E+00 + MG2+ O 1 3.842848E-04 6.596940E-08 + MG2+ OM 1 3.842848E-04 1.791098E-07 + MG2+ OA 1 3.842848E-04 7.163226E-08 + MG2+ OE 1 3.842848E-04 7.163226E-08 + MG2+ OW 1 4.133728E-04 9.475074E-08 + MG2+ N 1 3.988288E-04 8.891274E-08 + MG2+ NT 1 3.988288E-04 8.891274E-08 + MG2+ NL 1 3.988288E-04 8.891274E-08 + MG2+ NR 1 3.988288E-04 1.074776E-07 + MG2+ NZ 1 3.988288E-04 8.891274E-08 + MG2+ NE 1 3.988288E-04 8.891274E-08 + MG2+ C 1 3.909104E-04 1.297204E-07 + MG2+ CH0 1 3.955968E-04 8.365854E-07 + MG2+ CH1 1 6.294320E-04 5.750430E-07 + MG2+ CH2 1 6.982736E-04 3.402386E-07 + MG2+ CH3 1 7.922440E-04 3.013576E-07 + MG2+ CH4 1 9.275840E-04 3.422236E-07 + MG2+ CH2r 1 6.919712E-04 3.092389E-07 + MG2+ CR1 1 5.999400E-04 2.269814E-07 + MG2+ HC 1 7.433600E-05 7.180740E-09 + MG2+ H 1 0.000000E+00 0.000000E+00 + MG2+ DUM 1 0.000000E+00 0.000000E+00 + MG2+ S 1 8.073536E-04 2.111021E-07 + MG2+ CU1+ 1 1.652360E-04 4.179424E-09 + MG2+ CU2+ 1 1.652360E-04 4.179424E-09 + MG2+ FE 1 0.000000E+00 0.000000E+00 + MG2+ ZN2+ 1 1.652360E-04 5.672201E-09 + CA2+ O 1 1.507652E-03 7.974410E-07 + CA2+ OM 1 1.507652E-03 2.165088E-06 + CA2+ OA 1 1.507652E-03 8.658939E-07 + CA2+ OE 1 1.507652E-03 8.658939E-07 + CA2+ OW 1 1.621772E-03 1.145351E-06 + CA2+ N 1 1.564712E-03 1.074781E-06 + CA2+ NT 1 1.564712E-03 1.074781E-06 + CA2+ NL 1 1.564712E-03 1.074781E-06 + CA2+ NR 1 1.564712E-03 1.299194E-06 + CA2+ NZ 1 1.564712E-03 1.074781E-06 + CA2+ NE 1 1.564712E-03 1.074781E-06 + CA2+ C 1 1.533646E-03 1.568065E-06 + CA2+ CH0 1 1.552032E-03 1.011268E-05 + CA2+ CH1 1 2.469430E-03 6.951145E-06 + CA2+ CH2 1 2.739514E-03 4.112820E-06 + CA2+ CH3 1 3.108185E-03 3.642823E-06 + CA2+ CH4 1 3.639160E-03 4.136813E-06 + CA2+ CH2r 1 2.714788E-03 3.738093E-06 + CA2+ CR1 1 2.353725E-03 2.743762E-06 + CA2+ HC 1 2.916400E-04 8.680110E-08 + CA2+ H 1 0.000000E+00 0.000000E+00 + CA2+ DUM 1 0.000000E+00 0.000000E+00 + CA2+ S 1 3.167464E-03 2.551811E-06 + CA2+ CU1+ 1 6.482650E-04 5.052106E-08 + CA2+ CU2+ 1 6.482650E-04 5.052106E-08 + CA2+ FE 1 0.000000E+00 0.000000E+00 + CA2+ ZN2+ 1 6.482650E-04 6.856581E-08 + CA2+ MG2+ 1 2.561360E-04 4.119877E-08 + P O 1 5.773784E-03 5.323430E-06 + P OM 1 5.773784E-03 1.445335E-05 + P OA 1 5.773784E-03 5.780397E-06 + P OE 1 5.773784E-03 5.780397E-06 + P OW 1 6.210824E-03 7.645953E-06 + P N 1 5.992304E-03 7.174853E-06 + P NT 1 5.992304E-03 7.174853E-06 + P NL 1 5.992304E-03 7.174853E-06 + P NR 1 5.992304E-03 8.672951E-06 + P NZ 1 5.992304E-03 7.174853E-06 + P NE 1 5.992304E-03 7.174853E-06 + P C 1 5.873332E-03 1.046784E-05 + P CH0 1 5.943744E-03 6.750863E-05 + P CH1 1 9.457060E-03 4.640335E-05 + P CH2 1 1.049139E-02 2.745571E-05 + P CH3 1 1.190327E-02 2.431818E-05 + P CH4 1 1.393672E-02 2.761588E-05 + P CH2r 1 1.039670E-02 2.495417E-05 + P CR1 1 9.013950E-03 1.831637E-05 + P HC 1 1.116880E-03 5.794530E-07 + P H 1 0.000000E+00 0.000000E+00 + P DUM 1 0.000000E+00 0.000000E+00 + P S 1 1.213029E-02 1.703498E-05 + P CU1+ 1 2.482630E-03 3.372605E-07 + P CU2+ 1 2.482630E-03 3.372605E-07 + P FE 1 0.000000E+00 0.000000E+00 + P ZN2+ 1 2.482630E-03 4.577208E-07 + P MG2+ 1 9.809120E-04 2.750282E-07 + P CA2+ 1 3.848380E-03 3.324553E-06 + AR O 1 3.764374E-03 3.138000E-06 + AR OM 1 3.764374E-03 2.702132E-06 + AR OA 1 3.764374E-03 3.451800E-06 + AR OE 1 3.764374E-03 3.451800E-06 + AR OW 1 4.049314E-03 5.092974E-06 + AR N 1 3.906844E-03 4.779174E-06 + AR NT 1 3.906844E-03 4.779174E-06 + AR NL 1 3.906844E-03 4.779174E-06 + AR NR 1 3.906844E-03 4.779174E-06 + AR NZ 1 3.906844E-03 4.779174E-06 + AR NE 1 3.906844E-03 4.779174E-06 + AR C 1 3.829277E-03 6.972636E-06 + AR CH0 1 3.875184E-03 4.496754E-05 + AR CH1 1 6.165785E-03 3.090930E-05 + AR CH2 1 6.840143E-03 1.828826E-05 + AR CH3 1 7.760657E-03 1.619836E-05 + AR CH4 1 9.086420E-03 1.839496E-05 + AR CH2r 1 6.778406E-03 1.662199E-05 + AR CR1 1 5.876887E-03 1.220054E-05 + AR HC 1 7.281800E-04 3.859740E-07 + AR H 1 0.000000E+00 0.000000E+00 + AR DUM 1 0.000000E+00 0.000000E+00 + AR S 1 7.908668E-03 1.134701E-05 + AR CU1+ 1 1.618617E-03 2.246494E-07 + AR CU2+ 1 1.618617E-03 2.246494E-07 + AR FE 1 0.000000E+00 0.000000E+00 + AR ZN2+ 1 1.618617E-03 3.048881E-07 + AR MG2+ 1 6.395320E-04 1.831964E-07 + AR CA2+ 1 2.509055E-03 2.214487E-06 + AR P 1 9.608810E-03 1.478312E-05 + F O 1 1.632259E-03 8.722000E-07 + F OM 1 1.632259E-03 7.510514E-07 + F OA 1 1.632259E-03 1.505529E-06 + F OE 1 1.632259E-03 9.594200E-07 + F OW 1 1.755811E-03 1.991421E-06 + F N 1 1.694035E-03 2.384061E-06 + F NT 1 1.694035E-03 2.760750E-06 + F NL 1 1.694035E-03 3.764436E-06 + F NR 1 1.694035E-03 2.258907E-06 + F NZ 1 1.694035E-03 2.635596E-06 + F NE 1 1.694035E-03 2.434368E-06 + F C 1 1.660402E-03 1.938028E-06 + F CH0 1 1.680307E-03 1.249863E-05 + F CH1 1 2.673528E-03 8.591170E-06 + F CH2 1 2.965934E-03 5.083182E-06 + F CH3 1 3.365076E-03 4.502296E-06 + F CH4 1 3.939936E-03 5.112836E-06 + F CH2r 1 2.939165E-03 4.620043E-06 + F CR1 1 2.548260E-03 3.391114E-06 + F HC 1 3.157440E-04 1.072806E-07 + F H 1 0.000000E+00 0.000000E+00 + F DUM 1 0.000000E+00 0.000000E+00 + F S 1 3.429254E-03 3.153875E-06 + F CU1+ 1 7.018440E-04 2.760750E-07 + F CU2+ 1 7.018440E-04 5.019657E-07 + F FE 1 0.000000E+00 0.000000E+00 + F ZN2+ 1 7.018440E-04 1.192153E-07 + F MG2+ 1 2.773056E-04 7.163226E-08 + F CA2+ 1 1.087944E-03 8.658939E-07 + F P 1 4.166448E-03 5.780397E-06 + F AR 1 2.716428E-03 2.736964E-06 + CL O 1 4.452567E-03 3.911000E-06 + CL OM 1 4.452567E-03 3.367762E-06 + CL OA 1 4.452567E-03 4.798797E-06 + CL OE 1 4.452567E-03 4.302100E-06 + CL OW 1 4.789599E-03 6.347553E-06 + CL N 1 4.621083E-03 7.599073E-06 + CL NT 1 4.621083E-03 8.799750E-06 + CL NL 1 4.621083E-03 1.199895E-05 + CL NR 1 4.621083E-03 7.200151E-06 + CL NZ 1 4.621083E-03 8.400828E-06 + CL NE 1 4.621083E-03 7.759424E-06 + CL C 1 4.529336E-03 8.690242E-06 + CL CH0 1 4.583635E-03 5.604463E-05 + CL CH1 1 7.292998E-03 3.852335E-05 + CL CH2 1 8.090640E-03 2.279331E-05 + CL CH3 1 9.179441E-03 2.018858E-05 + CL CH4 1 1.074758E-02 2.292628E-05 + CL CH2r 1 8.017617E-03 2.071657E-05 + CL CR1 1 6.951285E-03 1.520597E-05 + CL HC 1 8.613040E-04 4.810530E-07 + CL H 1 0.000000E+00 0.000000E+00 + CL DUM 1 0.000000E+00 0.000000E+00 + CL S 1 9.354510E-03 1.414218E-05 + CL CU1+ 1 1.914529E-03 8.799750E-07 + CL CU2+ 1 1.914529E-03 1.599990E-06 + CL FE 1 0.000000E+00 0.000000E+00 + CL ZN2+ 1 1.914529E-03 3.799928E-07 + CL MG2+ 1 7.564496E-04 2.283242E-07 + CL CA2+ 1 2.967754E-03 2.759993E-06 + CL P 1 1.136547E-02 1.842472E-05 + CL AR 1 7.410023E-03 1.227272E-05 + CL F 1 3.213038E-03 3.411174E-06 + BR O 1 7.909228E-03 8.092000E-06 + BR OM 1 7.909228E-03 6.968021E-06 + BR OA 1 7.909228E-03 9.928884E-06 + BR OE 1 7.909228E-03 8.901200E-06 + BR OW 1 8.507908E-03 1.313332E-05 + BR N 1 8.208568E-03 1.572276E-05 + BR NT 1 8.208568E-03 1.820700E-05 + BR NL 1 8.208568E-03 2.482626E-05 + BR NR 1 8.208568E-03 1.489737E-05 + BR NZ 1 8.208568E-03 1.738162E-05 + BR NE 1 8.208568E-03 1.605453E-05 + BR C 1 8.045594E-03 1.798042E-05 + BR CH0 1 8.142048E-03 1.159584E-04 + BR CH1 1 1.295477E-02 7.970620E-05 + BR CH2 1 1.437165E-02 4.716018E-05 + BR CH3 1 1.630571E-02 4.177090E-05 + BR CH4 1 1.909124E-02 4.743530E-05 + BR CH2r 1 1.424193E-02 4.286332E-05 + BR CR1 1 1.234778E-02 3.146170E-05 + BR HC 1 1.529960E-03 9.953160E-07 + BR H 1 0.000000E+00 0.000000E+00 + BR DUM 1 0.000000E+00 0.000000E+00 + BR S 1 1.661670E-02 2.926067E-05 + BR CU1+ 1 3.400835E-03 1.820700E-06 + BR CU2+ 1 3.400835E-03 3.310437E-06 + BR FE 1 0.000000E+00 0.000000E+00 + BR ZN2+ 1 3.400835E-03 7.862187E-07 + BR MG2+ 1 1.343704E-03 4.724110E-07 + BR CA2+ 1 5.271710E-03 5.710524E-06 + BR P 1 2.018882E-02 3.812141E-05 + BR AR 1 1.316265E-02 2.539270E-05 + BR F 1 5.707416E-03 7.057842E-06 + BR CL 1 1.556901E-02 3.164781E-05 + CMet O 1 4.480628E-03 4.400000E-06 + CMet OM 1 4.480628E-03 3.788840E-06 + CMet OA 1 4.480628E-03 4.840000E-06 + CMet OE 1 4.480628E-03 4.840000E-06 + CMet OW 1 4.819784E-03 7.141200E-06 + CMet N 1 4.650206E-03 6.701200E-06 + CMet NT 1 4.650206E-03 6.701200E-06 + CMet NL 1 4.650206E-03 6.701200E-06 + CMet NR 1 4.650206E-03 6.701200E-06 + CMet NZ 1 4.650206E-03 6.701200E-06 + CMet NE 1 4.650206E-03 6.701200E-06 + CMet C 1 4.557880E-03 9.776800E-06 + CMet CH0 1 4.612522E-03 6.305200E-05 + CMet CH1 1 7.338959E-03 4.334000E-05 + CMet CH2 1 8.141628E-03 2.564320E-05 + CMet CH3 1 9.237291E-03 2.271280E-05 + CMet CH4 1 1.081531E-02 2.579280E-05 + CMet CH2r 1 8.068144E-03 2.330680E-05 + CMet CR1 1 6.995093E-03 1.710720E-05 + CMet HC 1 8.667320E-04 5.412000E-07 + CMet H 1 0.000000E+00 0.000000E+00 + CMet DUM 1 0.000000E+00 0.000000E+00 + CMet S 1 9.413463E-03 1.591040E-05 + CMet CU1+ 1 1.926594E-03 3.149960E-07 + CMet CU2+ 1 1.926594E-03 3.149960E-07 + CMet FE 1 0.000000E+00 0.000000E+00 + CMet ZN2+ 1 1.926594E-03 4.275040E-07 + CMet MG2+ 1 7.612168E-04 2.568720E-07 + CMet CA2+ 1 2.986457E-03 3.105080E-06 + CMet P 1 1.143709E-02 2.072840E-05 + CMet AR 1 7.456722E-03 1.380720E-05 + CMet F 1 3.233287E-03 3.837680E-06 + CMet CL 1 8.819940E-03 1.720840E-05 + CMet BR 1 1.566712E-02 3.560480E-05 + OMet O 1 2.261954E-03 1.723250E-06 + OMet OM 1 2.261954E-03 2.807525E-06 + OMet OA 1 2.261954E-03 1.871175E-06 + OMet OE 1 2.261954E-03 1.871175E-06 + OMet OW 1 2.433170E-03 2.475075E-06 + OMet N 1 2.347562E-03 2.963075E-06 + OMet NT 1 2.347562E-03 3.431250E-06 + OMet NL 1 2.347562E-03 4.678700E-06 + OMet NR 1 2.347562E-03 2.807525E-06 + OMet NZ 1 2.347562E-03 3.275700E-06 + OMet NE 1 2.347562E-03 3.025600E-06 + OMet C 1 2.300953E-03 3.388550E-06 + OMet CH0 1 2.328538E-03 2.185325E-05 + OMet CH1 1 3.704924E-03 1.502125E-05 + OMet CH2 1 4.110135E-03 8.887700E-06 + OMet CH3 1 4.663258E-03 7.872050E-06 + OMet CH4 1 5.459888E-03 8.939550E-06 + OMet CH2r 1 4.073038E-03 8.077925E-06 + OMet CR1 1 3.531330E-03 5.929200E-06 + OMet HC 1 4.375520E-04 1.875750E-07 + OMet H 1 0.000000E+00 0.000000E+00 + OMet DUM 1 0.000000E+00 0.000000E+00 + OMet S 1 4.752195E-03 5.514400E-06 + OMet CU1+ 1 9.726020E-04 3.431250E-07 + OMet CU2+ 1 9.726020E-04 6.238775E-07 + OMet FE 1 0.000000E+00 0.000000E+00 + OMet ZN2+ 1 9.726020E-04 1.481690E-07 + OMet MG2+ 1 3.842848E-04 8.902950E-08 + OMet CA2+ 1 1.507652E-03 1.076193E-06 + OMet P 1 5.773784E-03 7.184275E-06 + OMet AR 1 3.764374E-03 4.785450E-06 + OMet F 1 1.632259E-03 1.871175E-06 + OMet CL 1 4.452567E-03 5.964275E-06 + OMet BR 1 7.909228E-03 1.234030E-05 + OMet CMet 1 4.480628E-03 6.710000E-06 + NA+ O 1 4.222948E-04 3.051000E-07 + NA+ OM 1 4.222948E-04 8.283600E-07 + NA+ OA 1 4.222948E-04 3.312900E-07 + NA+ OE 1 4.222948E-04 3.312900E-07 + NA+ OW 1 4.542599E-04 4.382100E-07 + NA+ N 1 4.382773E-04 4.112100E-07 + NA+ NT 1 4.382773E-04 4.112100E-07 + NA+ NL 1 4.382773E-04 4.112100E-07 + NA+ NR 1 4.382773E-04 4.970700E-07 + NA+ NZ 1 4.382773E-04 4.112100E-07 + NA+ NE 1 4.382773E-04 4.112100E-07 + NA+ C 1 4.295757E-04 5.999400E-07 + NA+ CH0 1 4.347256E-04 3.869100E-06 + NA+ CH1 1 6.916897E-04 2.659500E-06 + NA+ CH2 1 7.673405E-04 1.573560E-06 + NA+ CH3 1 8.706056E-04 1.393740E-06 + NA+ CH4 1 1.019332E-03 1.582740E-06 + NA+ CH2r 1 7.604147E-04 1.430190E-06 + NA+ CR1 1 6.592806E-04 1.049760E-06 + NA+ HC 1 8.168864E-05 3.321000E-08 + NA+ H 1 0.000000E+00 0.000000E+00 + NA+ DUM 1 0.000000E+00 0.000000E+00 + NA+ S 1 8.872097E-04 9.763200E-07 + NA+ CU1+ 1 1.815796E-04 1.932930E-08 + NA+ CU2+ 1 1.815796E-04 1.932930E-08 + NA+ FE 1 0.000000E+00 0.000000E+00 + NA+ ZN2+ 1 1.815796E-04 2.623320E-08 + NA+ MG2+ 1 7.174394E-05 1.576260E-08 + NA+ CA2+ 1 2.814706E-04 1.905390E-07 + NA+ P 1 1.077935E-03 1.271970E-06 + NA+ AR 1 7.027887E-04 8.472600E-07 + NA+ F 1 3.047341E-04 3.312900E-07 + NA+ CL 1 8.312707E-04 1.055970E-06 + NA+ BR 1 1.476611E-03 2.184840E-06 + NA+ CMet 1 8.365094E-04 1.188000E-06 + NA+ OMet 1 4.222948E-04 4.117500E-07 + CL- O 1 5.382841E-03 7.776000E-06 + CL- OM 1 5.382841E-03 6.695914E-06 + CL- OA 1 5.382841E-03 9.541152E-06 + CL- OE 1 5.382841E-03 8.553600E-06 + CL- OW 1 5.790289E-03 1.262045E-05 + CL- N 1 5.586565E-03 1.510877E-05 + CL- NT 1 5.586565E-03 1.749600E-05 + CL- NL 1 5.586565E-03 2.385677E-05 + CL- NR 1 5.586565E-03 1.431562E-05 + CL- NZ 1 5.586565E-03 1.670285E-05 + CL- NE 1 5.586565E-03 1.542758E-05 + CL- C 1 5.475648E-03 1.727827E-05 + CL- CH0 1 5.541293E-03 1.114301E-04 + CL- CH1 1 8.816722E-03 7.659360E-05 + CL- CH2 1 9.781016E-03 4.531853E-05 + CL- CH3 1 1.109730E-02 4.013971E-05 + CL- CH4 1 1.299306E-02 4.558291E-05 + CL- CH2r 1 9.692735E-03 4.118947E-05 + CL- CR1 1 8.403615E-03 3.023309E-05 + CL- HC 1 1.041256E-03 9.564480E-07 + CL- H 1 0.000000E+00 0.000000E+00 + CL- DUM 1 0.000000E+00 0.000000E+00 + CL- S 1 1.130895E-02 2.811802E-05 + CL- CU1+ 1 2.314531E-03 1.749600E-06 + CL- CU2+ 1 2.314531E-03 3.181162E-06 + CL- FE 1 0.000000E+00 0.000000E+00 + CL- ZN2+ 1 2.314531E-03 7.555162E-07 + CL- MG2+ 1 9.144944E-04 4.539629E-07 + CL- CA2+ 1 3.587806E-03 5.487523E-06 + CL- P 1 1.374005E-02 3.663274E-05 + CL- AR 1 8.958197E-03 2.440109E-05 + CL- F 1 3.884338E-03 6.782227E-06 + CL- CL 1 1.059591E-02 3.041194E-05 + CL- BR 1 1.882183E-02 6.292339E-05 + CL- CMet 1 1.066269E-02 3.421440E-05 + CL- OMet 1 5.382841E-03 1.185840E-05 + CL- NA+ 1 1.004948E-03 2.099520E-06 + CChl O 1 2.439448E-03 2.016000E-06 + CChl OM 1 2.439448E-03 1.735978E-06 + CChl OA 1 2.439448E-03 2.217600E-06 + CChl OE 1 2.439448E-03 2.217600E-06 + CChl OW 1 2.624099E-03 3.271968E-06 + CChl N 1 2.531773E-03 3.070368E-06 + CChl NT 1 2.531773E-03 3.070368E-06 + CChl NL 1 2.531773E-03 3.070368E-06 + CChl NR 1 2.531773E-03 3.070368E-06 + CChl NZ 1 2.531773E-03 3.070368E-06 + CChl NE 1 2.531773E-03 3.070368E-06 + CChl C 1 2.481507E-03 4.479552E-06 + CChl CH0 1 2.511256E-03 2.888928E-05 + CChl CH1 1 3.995647E-03 1.985760E-05 + CChl CH2 1 4.432655E-03 1.174925E-05 + CChl CH3 1 5.029181E-03 1.040659E-05 + CChl CH4 1 5.888322E-03 1.181779E-05 + CChl CH2r 1 4.392647E-03 1.067875E-05 + CChl CR1 1 3.808431E-03 7.838208E-06 + CChl HC 1 4.718864E-04 2.479680E-07 + CChl H 1 0.000000E+00 0.000000E+00 + CChl DUM 1 0.000000E+00 0.000000E+00 + CChl S 1 5.125097E-03 7.289856E-06 + CChl CU1+ 1 1.048921E-03 1.443254E-07 + CChl CU2+ 1 1.048921E-03 1.443254E-07 + CChl FE 1 0.000000E+00 0.000000E+00 + CChl ZN2+ 1 1.048921E-03 1.958746E-07 + CChl MG2+ 1 4.144394E-04 1.176941E-07 + CChl CA2+ 1 1.625956E-03 1.422691E-06 + CChl P 1 6.226849E-03 9.497376E-06 + CChl AR 1 4.059762E-03 6.326208E-06 + CChl F 1 1.760341E-03 1.758355E-06 + CChl CL 1 4.801957E-03 7.884576E-06 + CChl BR 1 8.529860E-03 1.631347E-05 + CChl CMet 1 4.832219E-03 8.870400E-06 + CChl OMet 1 2.439448E-03 3.074400E-06 + CChl NA+ 1 4.554319E-04 5.443200E-07 + CChl CL- 1 5.805229E-03 1.567642E-05 + CLChl O 1 4.334666E-03 3.710100E-06 + CLChl OM 1 4.334666E-03 3.194767E-06 + CLChl OA 1 4.334666E-03 4.081110E-06 + CLChl OE 1 4.334666E-03 4.081110E-06 + CLChl OW 1 4.662774E-03 6.021492E-06 + CLChl N 1 4.498720E-03 5.650482E-06 + CLChl NT 1 4.498720E-03 5.650482E-06 + CLChl NL 1 4.498720E-03 5.650482E-06 + CLChl NR 1 4.498720E-03 5.650482E-06 + CLChl NZ 1 4.498720E-03 5.650482E-06 + CLChl NE 1 4.498720E-03 5.650482E-06 + CLChl C 1 4.409402E-03 8.243842E-06 + CLChl CH0 1 4.462263E-03 5.316573E-05 + CLChl CH1 1 7.099884E-03 3.654449E-05 + CLChl CH2 1 7.876405E-03 2.162246E-05 + CLChl CH3 1 8.936375E-03 1.915154E-05 + CLChl CH4 1 1.046299E-02 2.174861E-05 + CLChl CH2r 1 7.805315E-03 1.965240E-05 + CLChl CR1 1 6.767219E-03 1.442487E-05 + CLChl HC 1 8.384972E-04 4.563423E-07 + CLChl H 1 0.000000E+00 0.000000E+00 + CLChl DUM 1 0.000000E+00 0.000000E+00 + CLChl S 1 9.106809E-03 1.341572E-05 + CLChl CU1+ 1 1.863833E-03 2.656061E-07 + CLChl CU2+ 1 1.863833E-03 2.656061E-07 + CLChl FE 1 0.000000E+00 0.000000E+00 + CLChl ZN2+ 1 1.863833E-03 3.604733E-07 + CLChl MG2+ 1 7.364193E-04 2.165956E-07 + CLChl CA2+ 1 2.889170E-03 2.618218E-06 + CLChl P 1 1.106452E-02 1.747828E-05 + CLChl AR 1 7.213810E-03 1.164229E-05 + CLChl F 1 3.127959E-03 3.235949E-06 + CLChl CL 1 8.532620E-03 1.451020E-05 + CLChl BR 1 1.515675E-02 3.002213E-05 + CLChl CMet 1 8.586394E-03 1.632444E-05 + CLChl OMet 1 4.334666E-03 5.657903E-06 + CLChl NA+ 1 8.092592E-04 1.001727E-06 + CLChl CL- 1 1.031534E-02 2.884974E-05 + CLChl CChl 1 4.675400E-03 7.481300E-06 + HChl O 1 2.920184E-04 6.557400E-08 + HChl OM 1 2.920184E-04 5.646577E-08 + HChl OA 1 2.920184E-04 7.213140E-08 + HChl OE 1 2.920184E-04 7.213140E-08 + HChl OW 1 3.141224E-04 1.064266E-07 + HChl N 1 3.030704E-04 9.986920E-08 + HChl NT 1 3.030704E-04 9.986920E-08 + HChl NL 1 3.030704E-04 9.986920E-08 + HChl NR 1 3.030704E-04 9.986920E-08 + HChl NZ 1 3.030704E-04 9.986920E-08 + HChl NE 1 3.030704E-04 9.986920E-08 + HChl C 1 2.970532E-04 1.457054E-07 + HChl CH0 1 3.006144E-04 9.396754E-07 + HChl CH1 1 4.783060E-04 6.459039E-07 + HChl CH2 1 5.306188E-04 3.821653E-07 + HChl CH3 1 6.020270E-04 3.384930E-07 + HChl CH4 1 7.048720E-04 3.843948E-07 + HChl CH2r 1 5.258296E-04 3.473455E-07 + HChl CR1 1 4.558950E-04 2.549517E-07 + HChl HC 1 5.648800E-05 8.065602E-09 + HChl H 1 0.000000E+00 0.000000E+00 + HChl DUM 1 0.000000E+00 0.000000E+00 + HChl S 1 6.135088E-04 2.371156E-07 + HChl CU1+ 1 1.255630E-04 4.694443E-09 + HChl CU2+ 1 1.255630E-04 4.694443E-09 + HChl FE 1 0.000000E+00 0.000000E+00 + HChl ZN2+ 1 1.255630E-04 6.371170E-09 + HChl MG2+ 1 4.961120E-05 3.828210E-09 + HChl CA2+ 1 1.946380E-04 4.627557E-08 + HChl P 1 7.453960E-04 3.089191E-07 + HChl AR 1 4.859810E-04 2.057712E-07 + HChl F 1 2.107248E-04 5.719364E-08 + HChl CL 1 5.748268E-04 2.564599E-07 + HChl BR 1 1.021082E-03 5.306248E-07 + HChl CMet 1 5.784494E-04 2.885256E-07 + HChl OMet 1 2.920184E-04 1.000004E-07 + HChl NA+ 1 5.451829E-05 1.770498E-08 + HChl CL- 1 6.949252E-04 5.099034E-07 + HChl CChl 1 3.622000E-04 1.745000E-07 + HChl CLChl 1 6.493000E-04 3.266000E-07 + SDmso O 1 4.887741E-03 4.636600E-06 + SDmso OM 1 4.887741E-03 3.992576E-06 + SDmso OA 1 4.887741E-03 5.100260E-06 + SDmso OE 1 4.887741E-03 5.100260E-06 + SDmso OW 1 5.257713E-03 7.525202E-06 + SDmso N 1 5.072727E-03 7.061542E-06 + SDmso NT 1 5.072727E-03 7.061542E-06 + SDmso NL 1 5.072727E-03 7.061542E-06 + SDmso NR 1 5.072727E-03 7.061542E-06 + SDmso NZ 1 5.072727E-03 7.061542E-06 + SDmso NE 1 5.072727E-03 7.061542E-06 + SDmso C 1 4.972013E-03 1.030253E-05 + SDmso CH0 1 5.031619E-03 6.644248E-05 + SDmso CH1 1 8.005783E-03 4.567051E-05 + SDmso CH2 1 8.881383E-03 2.702210E-05 + SDmso CH3 1 1.007660E-02 2.393413E-05 + SDmso CH4 1 1.179800E-02 2.717975E-05 + SDmso CH2r 1 8.801223E-03 2.456007E-05 + SDmso CR1 1 7.630672E-03 1.802710E-05 + SDmso HC 1 9.454840E-04 5.703018E-07 + SDmso H 1 0.000000E+00 0.000000E+00 + SDmso DUM 1 0.000000E+00 0.000000E+00 + SDmso S 1 1.026878E-02 1.676595E-05 + SDmso CU1+ 1 2.101647E-03 3.319342E-07 + SDmso CU2+ 1 2.101647E-03 3.319342E-07 + SDmso FE 1 0.000000E+00 0.000000E+00 + SDmso ZN2+ 1 2.101647E-03 4.504921E-07 + SDmso MG2+ 1 8.303816E-04 2.706847E-07 + SDmso CA2+ 1 3.257809E-03 3.272049E-06 + SDmso P 1 1.247628E-02 2.184302E-05 + SDmso AR 1 8.134245E-03 1.454965E-05 + SDmso F 1 3.527066E-03 4.044043E-06 + SDmso CL 1 9.621327E-03 1.813374E-05 + SDmso BR 1 1.709065E-02 3.751937E-05 + SDmso CMet 1 9.681962E-03 2.040104E-05 + SDmso OMet 1 4.887741E-03 7.070815E-06 + SDmso NA+ 1 9.125154E-04 1.251882E-06 + SDmso CL- 1 1.163151E-02 3.605420E-05 + SDmso CChl 1 5.271279E-03 9.347386E-06 + SDmso CLChl 1 9.366561E-03 1.720225E-05 + SDmso HChl 1 6.310078E-04 3.040404E-07 + CDmso O 1 4.663258E-03 5.162000E-06 + CDmso OM 1 4.663258E-03 4.444998E-06 + CDmso OA 1 4.663258E-03 5.678200E-06 + CDmso OE 1 4.663258E-03 5.678200E-06 + CDmso OW 1 5.016238E-03 8.377926E-06 + CDmso N 1 4.839748E-03 7.861726E-06 + CDmso NT 1 4.839748E-03 7.861726E-06 + CDmso NL 1 4.839748E-03 7.861726E-06 + CDmso NR 1 4.839748E-03 7.861726E-06 + CDmso NZ 1 4.839748E-03 7.861726E-06 + CDmso NE 1 4.839748E-03 7.861726E-06 + CDmso C 1 4.743659E-03 1.146996E-05 + CDmso CH0 1 4.800528E-03 7.397146E-05 + CDmso CH1 1 7.638095E-03 5.084570E-05 + CDmso CH2 1 8.473481E-03 3.008414E-05 + CDmso CH3 1 9.613802E-03 2.664624E-05 + CDmso CH4 1 1.125614E-02 3.025964E-05 + CDmso CH2r 1 8.397002E-03 2.734311E-05 + CDmso CR1 1 7.280212E-03 2.006986E-05 + CDmso HC 1 9.020600E-04 6.349260E-07 + CDmso H 1 0.000000E+00 0.000000E+00 + CDmso DUM 1 0.000000E+00 0.000000E+00 + CDmso S 1 9.797156E-03 1.866579E-05 + CDmso CU1+ 1 2.005122E-03 3.695476E-07 + CDmso CU2+ 1 2.005122E-03 3.695476E-07 + CDmso FE 1 0.000000E+00 0.000000E+00 + CDmso ZN2+ 1 2.005122E-03 5.015399E-07 + CDmso MG2+ 1 7.922440E-04 3.013576E-07 + CDmso CA2+ 1 3.108185E-03 3.642823E-06 + CDmso P 1 1.190327E-02 2.431818E-05 + CDmso AR 1 7.760657E-03 1.619836E-05 + CDmso F 1 3.365076E-03 4.502296E-06 + CDmso CL 1 9.179441E-03 2.018858E-05 + CDmso BR 1 1.630571E-02 4.177090E-05 + CDmso CMet 1 9.237291E-03 2.271280E-05 + CDmso OMet 1 4.663258E-03 7.872050E-06 + CDmso NA+ 1 8.706056E-04 1.393740E-06 + CDmso CL- 1 1.109730E-02 4.013971E-05 + CDmso CChl 1 5.029181E-03 1.040659E-05 + CDmso CLChl 1 8.936375E-03 1.915154E-05 + CDmso HChl 1 6.020270E-04 3.384930E-07 + CDmso SDmso 1 1.007660E-02 2.393413E-05 + ODmso O 1 2.266329E-03 8.668600E-07 + ODmso OM 1 2.266329E-03 7.464531E-07 + ODmso OA 1 2.266329E-03 1.380375E-06 + ODmso OE 1 2.266329E-03 9.535460E-07 + ODmso OW 1 2.437876E-03 1.825875E-06 + ODmso N 1 2.352103E-03 2.185875E-06 + ODmso NT 1 2.352103E-03 2.531250E-06 + ODmso NL 1 2.352103E-03 3.451500E-06 + ODmso NR 1 2.352103E-03 2.071125E-06 + ODmso NZ 1 2.352103E-03 2.416500E-06 + ODmso NE 1 2.352103E-03 2.232000E-06 + ODmso C 1 2.305404E-03 1.926163E-06 + ODmso CH0 1 2.333042E-03 1.242210E-05 + ODmso CH1 1 3.712091E-03 8.538571E-06 + ODmso CH2 1 4.118086E-03 5.052060E-06 + ODmso CH3 1 4.672279E-03 4.474731E-06 + ODmso CH4 1 5.470450E-03 5.081533E-06 + ODmso CH2r 1 4.080917E-03 4.591757E-06 + ODmso CR1 1 3.538161E-03 3.370352E-06 + ODmso HC 1 4.383984E-04 1.066238E-07 + ODmso H 1 0.000000E+00 0.000000E+00 + ODmso DUM 1 0.000000E+00 0.000000E+00 + ODmso S 1 4.761388E-03 3.134566E-06 + ODmso CU1+ 1 9.744834E-04 2.531250E-07 + ODmso CU2+ 1 9.744834E-04 4.602375E-07 + ODmso FE 1 0.000000E+00 0.000000E+00 + ODmso ZN2+ 1 9.744834E-04 1.093050E-07 + ODmso MG2+ 1 3.850282E-04 6.567750E-08 + ODmso CA2+ 1 1.510568E-03 7.939125E-07 + ODmso P 1 5.784953E-03 5.299875E-06 + ODmso AR 1 3.771656E-03 2.720207E-06 + ODmso F 1 1.635417E-03 7.560753E-07 + ODmso CL 1 4.461180E-03 3.390289E-06 + ODmso BR 1 7.924528E-03 7.014631E-06 + ODmso CMet 1 4.489295E-03 3.814184E-06 + ODmso OMet 1 2.266329E-03 1.715625E-06 + ODmso NA+ 1 4.231116E-04 3.037500E-07 + ODmso CL- 1 5.393253E-03 6.740703E-06 + ODmso CChl 1 2.444166E-03 1.747590E-06 + ODmso CLChl 1 4.343051E-03 3.216137E-06 + ODmso HChl 1 2.925833E-04 5.684348E-08 + ODmso SDmso 1 4.897196E-03 4.019283E-06 + ODmso CDmso 1 4.672279E-03 4.474731E-06 + CCl4 O 1 2.439448E-03 2.756800E-06 + CCl4 OM 1 2.439448E-03 2.373880E-06 + CCl4 OA 1 2.439448E-03 3.032480E-06 + CCl4 OE 1 2.439448E-03 3.032480E-06 + CCl4 OW 1 2.624099E-03 4.474286E-06 + CCl4 N 1 2.531773E-03 4.198606E-06 + CCl4 NT 1 2.531773E-03 4.198606E-06 + CCl4 NL 1 2.531773E-03 4.198606E-06 + CCl4 NR 1 2.531773E-03 4.198606E-06 + CCl4 NZ 1 2.531773E-03 4.198606E-06 + CCl4 NE 1 2.531773E-03 4.198606E-06 + CCl4 C 1 2.481507E-03 6.125610E-06 + CCl4 CH0 1 2.511256E-03 3.950494E-05 + CCl4 CH1 1 3.995647E-03 2.715448E-05 + CCl4 CH2 1 4.432655E-03 1.606663E-05 + CCl4 CH3 1 5.029181E-03 1.423060E-05 + CCl4 CH4 1 5.888322E-03 1.616036E-05 + CCl4 CH2r 1 4.392647E-03 1.460277E-05 + CCl4 CR1 1 3.808431E-03 1.071844E-05 + CCl4 HC 1 4.718864E-04 3.390864E-07 + CCl4 H 1 0.000000E+00 0.000000E+00 + CCl4 DUM 1 0.000000E+00 0.000000E+00 + CCl4 S 1 5.125097E-03 9.968589E-06 + CCl4 CU1+ 1 1.048921E-03 1.973593E-07 + CCl4 CU2+ 1 1.048921E-03 1.973593E-07 + CCl4 FE 1 0.000000E+00 0.000000E+00 + CCl4 ZN2+ 1 1.048921E-03 2.678507E-07 + CCl4 MG2+ 1 4.144394E-04 1.609420E-07 + CCl4 CA2+ 1 1.625956E-03 1.945474E-06 + CCl4 P 1 6.226849E-03 1.298728E-05 + CCl4 AR 1 4.059762E-03 8.650838E-06 + CCl4 F 1 1.760341E-03 2.404481E-06 + CCl4 CL 1 4.801957E-03 1.078184E-05 + CCl4 BR 1 8.529860E-03 2.230803E-05 + CCl4 CMet 1 4.832219E-03 1.212992E-05 + CCl4 OMet 1 2.439448E-03 4.204120E-06 + CCl4 NA+ 1 4.554319E-04 7.443360E-07 + CCl4 CL- 1 5.805229E-03 2.143688E-05 + CCl4 CChl 1 2.630869E-03 5.557709E-06 + CCl4 CLChl 1 4.674804E-03 1.022800E-05 + CCl4 HChl 1 3.149329E-04 1.807744E-07 + CCl4 SDmso 1 5.271279E-03 1.278218E-05 + CCl4 CDmso 1 5.029181E-03 1.423060E-05 + CCl4 ODmso 1 2.444166E-03 2.389760E-06 + CLCl4 O 1 4.147280E-03 3.573200E-06 + CLCl4 OM 1 4.147280E-03 3.076883E-06 + CLCl4 OA 1 4.147280E-03 3.930520E-06 + CLCl4 OE 1 4.147280E-03 3.930520E-06 + CLCl4 OW 1 4.461203E-03 5.799304E-06 + CLCl4 N 1 4.304241E-03 5.441984E-06 + CLCl4 NT 1 4.304241E-03 5.441984E-06 + CLCl4 NL 1 4.304241E-03 5.441984E-06 + CLCl4 NR 1 4.304241E-03 5.441984E-06 + CLCl4 NZ 1 4.304241E-03 5.441984E-06 + CLCl4 NE 1 4.304241E-03 5.441984E-06 + CLCl4 C 1 4.218784E-03 7.939650E-06 + CLCl4 CH0 1 4.269361E-03 5.120396E-05 + CLCl4 CH1 1 6.792958E-03 3.519602E-05 + CLCl4 CH2 1 7.535910E-03 2.082461E-05 + CLCl4 CH3 1 8.550058E-03 1.844486E-05 + CLCl4 CH4 1 1.001067E-02 2.094610E-05 + CLCl4 CH2r 1 7.467894E-03 1.892724E-05 + CLCl4 CR1 1 6.474674E-03 1.389260E-05 + CLCl4 HC 1 8.022492E-04 4.395036E-07 + CLCl4 H 1 0.000000E+00 0.000000E+00 + CLCl4 DUM 1 0.000000E+00 0.000000E+00 + CLCl4 S 1 8.713124E-03 1.292069E-05 + CLCl4 CU1+ 1 1.783260E-03 2.558054E-07 + CLCl4 CU2+ 1 1.783260E-03 2.558054E-07 + CLCl4 FE 1 0.000000E+00 0.000000E+00 + CLCl4 ZN2+ 1 1.783260E-03 3.471721E-07 + CLCl4 MG2+ 1 7.045841E-04 2.086034E-07 + CLCl4 CA2+ 1 2.764272E-03 2.521607E-06 + CLCl4 P 1 1.058620E-02 1.683335E-05 + CLCl4 AR 1 6.901959E-03 1.121270E-05 + CLCl4 F 1 2.992738E-03 3.116545E-06 + CLCl4 CL 1 8.163758E-03 1.397479E-05 + CLCl4 BR 1 1.450153E-02 2.891433E-05 + CLCl4 CMet 1 8.215206E-03 1.572208E-05 + CLCl4 OMet 1 4.147280E-03 5.449130E-06 + CLCl4 NA+ 1 7.742751E-04 9.647640E-07 + CLCl4 CL- 1 9.869409E-03 2.778520E-05 + CLCl4 CChl 1 4.472714E-03 7.203571E-06 + CLCl4 CLChl 1 7.947586E-03 1.325693E-05 + CLCl4 HChl 1 5.354141E-04 2.343090E-07 + CLCl4 SDmso 1 8.961647E-03 1.656750E-05 + CLCl4 CDmso 1 8.550058E-03 1.844486E-05 + CLCl4 ODmso 1 4.155302E-03 3.097464E-06 + CLCl4 CCl4 1 4.472714E-03 9.850598E-06 + FTFE O 1 1.632259E-03 1.000000E-06 + FTFE OM 1 1.632259E-03 8.611000E-07 + FTFE OA 1 1.632259E-03 1.227000E-06 + FTFE OE 1 1.632259E-03 1.100000E-06 + FTFE OW 1 1.755811E-03 1.623000E-06 + FTFE N 1 1.694035E-03 1.943000E-06 + FTFE NT 1 1.694035E-03 2.250000E-06 + FTFE NL 1 1.694035E-03 3.068000E-06 + FTFE NR 1 1.694035E-03 1.841000E-06 + FTFE NZ 1 1.694035E-03 2.148000E-06 + FTFE NE 1 1.694035E-03 1.984000E-06 + FTFE C 1 1.660402E-03 2.222000E-06 + FTFE CH0 1 1.680307E-03 1.433000E-05 + FTFE CH1 1 2.673528E-03 9.850000E-06 + FTFE CH2 1 2.965934E-03 5.828000E-06 + FTFE CH3 1 3.365076E-03 5.162000E-06 + FTFE CH4 1 3.939936E-03 5.862000E-06 + FTFE CH2r 1 2.939165E-03 5.297000E-06 + FTFE CR1 1 2.548260E-03 3.888000E-06 + FTFE HC 1 3.157440E-04 1.230000E-07 + FTFE H 1 0.000000E+00 0.000000E+00 + FTFE DUM 1 0.000000E+00 0.000000E+00 + FTFE S 1 3.429254E-03 3.616000E-06 + FTFE CU1+ 1 7.018440E-04 2.250000E-07 + FTFE CU2+ 1 7.018440E-04 4.091000E-07 + FTFE FE 1 0.000000E+00 0.000000E+00 + FTFE ZN2+ 1 7.018440E-04 9.716000E-08 + FTFE MG2+ 1 2.773056E-04 5.838000E-08 + FTFE CA2+ 1 1.087944E-03 7.057000E-07 + FTFE P 1 4.166448E-03 4.711000E-06 + FTFE AR 1 2.716428E-03 3.138000E-06 + FTFE F 1 1.177862E-03 8.722000E-07 + FTFE CL 1 3.213038E-03 3.911000E-06 + FTFE BR 1 5.707416E-03 8.092000E-06 + FTFE CMet 1 3.233287E-03 4.400000E-06 + FTFE OMet 1 1.632259E-03 1.525000E-06 + FTFE NA+ 1 3.047341E-04 2.700000E-07 + FTFE CL- 1 3.884338E-03 7.776000E-06 + FTFE CChl 1 1.760341E-03 2.016000E-06 + FTFE CLChl 1 3.127959E-03 3.710100E-06 + FTFE HChl 1 2.107248E-04 6.557400E-08 + FTFE SDmso 1 3.527066E-03 4.636600E-06 + FTFE CDmso 1 3.365076E-03 5.162000E-06 + FTFE ODmso 1 1.635417E-03 8.668600E-07 + FTFE CCl4 1 1.760341E-03 2.756800E-06 + FTFE CLCl4 1 2.992738E-03 3.573200E-06 + CTFE O 1 2.300953E-03 1.837000E-06 + CTFE OM 1 2.300953E-03 1.581841E-06 + CTFE OA 1 2.300953E-03 2.020700E-06 + CTFE OE 1 2.300953E-03 2.020700E-06 + CTFE OW 1 2.475121E-03 2.981451E-06 + CTFE N 1 2.388037E-03 2.797751E-06 + CTFE NT 1 2.388037E-03 2.797751E-06 + CTFE NL 1 2.388037E-03 2.797751E-06 + CTFE NR 1 2.388037E-03 2.797751E-06 + CTFE NZ 1 2.388037E-03 2.797751E-06 + CTFE NE 1 2.388037E-03 2.797751E-06 + CTFE C 1 2.340624E-03 4.081814E-06 + CTFE CH0 1 2.368685E-03 2.632421E-05 + CTFE CH1 1 3.768802E-03 1.809445E-05 + CTFE CH2 1 4.181000E-03 1.070604E-05 + CTFE CH3 1 4.743659E-03 9.482594E-06 + CTFE CH4 1 5.554024E-03 1.076849E-05 + CTFE CH2r 1 4.143263E-03 9.730589E-06 + CTFE CR1 1 3.592215E-03 7.142256E-06 + CTFE HC 1 4.450960E-04 2.259510E-07 + CTFE H 1 0.000000E+00 0.000000E+00 + CTFE DUM 1 0.000000E+00 0.000000E+00 + CTFE S 1 4.834130E-03 6.642592E-06 + CTFE CU1+ 1 9.893710E-04 1.315108E-07 + CTFE CU2+ 1 9.893710E-04 1.315108E-07 + CTFE FE 1 0.000000E+00 0.000000E+00 + CTFE ZN2+ 1 9.893710E-04 1.784829E-07 + CTFE MG2+ 1 3.909104E-04 1.072441E-07 + CTFE CA2+ 1 1.533646E-03 1.296371E-06 + CTFE P 1 5.873332E-03 8.654107E-06 + CTFE AR 1 3.829277E-03 5.764506E-06 + CTFE F 1 1.660402E-03 1.602231E-06 + CTFE CL 1 4.529336E-03 7.184507E-06 + CTFE BR 1 8.045594E-03 1.486500E-05 + CTFE CMet 1 4.557880E-03 8.082800E-06 + CTFE OMet 1 2.300953E-03 2.801425E-06 + CTFE NA+ 1 4.295757E-04 4.959900E-07 + CTFE CL- 1 5.475648E-03 1.428451E-05 + CTFE CChl 1 2.481507E-03 3.703392E-06 + CTFE CLChl 1 4.409402E-03 6.815454E-06 + CTFE HChl 1 2.970532E-04 1.204594E-07 + CTFE SDmso 1 4.972013E-03 8.517434E-06 + CTFE CDmso 1 4.743659E-03 9.482594E-06 + CTFE ODmso 1 2.305404E-03 1.592422E-06 + CTFE CCl4 1 2.481507E-03 5.064242E-06 + CTFE CLCl4 1 4.218784E-03 6.563968E-06 + CTFE FTFE 1 1.660402E-03 1.837000E-06 + CHTFE O 1 4.008832E-03 5.077000E-06 + CHTFE OM 1 4.008832E-03 4.371805E-06 + CHTFE OA 1 4.008832E-03 5.584700E-06 + CHTFE OE 1 4.008832E-03 5.584700E-06 + CHTFE OW 1 4.312276E-03 8.239971E-06 + CHTFE N 1 4.160554E-03 7.732271E-06 + CHTFE NT 1 4.160554E-03 7.732271E-06 + CHTFE NL 1 4.160554E-03 7.732271E-06 + CHTFE NR 1 4.160554E-03 7.732271E-06 + CHTFE NZ 1 4.160554E-03 7.732271E-06 + CHTFE NE 1 4.160554E-03 7.732271E-06 + CHTFE C 1 4.077950E-03 1.128109E-05 + CHTFE CH0 1 4.126838E-03 7.275341E-05 + CHTFE CH1 1 6.566191E-03 5.000845E-05 + CHTFE CH2 1 7.284342E-03 2.958876E-05 + CHTFE CH3 1 8.264634E-03 2.620747E-05 + CHTFE CH4 1 9.676492E-03 2.976137E-05 + CHTFE CH2r 1 7.218596E-03 2.689287E-05 + CHTFE CR1 1 6.258533E-03 1.973938E-05 + CHTFE HC 1 7.754680E-04 6.244710E-07 + CHTFE H 1 0.000000E+00 0.000000E+00 + CHTFE DUM 1 0.000000E+00 0.000000E+00 + CHTFE S 1 8.422257E-03 1.835843E-05 + CHTFE CU1+ 1 1.723731E-03 3.634624E-07 + CHTFE CU2+ 1 1.723731E-03 3.634624E-07 + CHTFE FE 1 0.000000E+00 0.000000E+00 + CHTFE ZN2+ 1 1.723731E-03 4.932813E-07 + CHTFE MG2+ 1 6.810632E-04 2.963953E-07 + CHTFE CA2+ 1 2.671993E-03 3.582839E-06 + CHTFE P 1 1.023281E-02 2.391775E-05 + CHTFE AR 1 6.671553E-03 1.593163E-05 + CHTFE F 1 2.892833E-03 4.428159E-06 + CHTFE CL 1 7.891230E-03 1.985615E-05 + CHTFE BR 1 1.401743E-02 4.108308E-05 + CHTFE CMet 1 7.940961E-03 2.233880E-05 + CHTFE OMet 1 4.008832E-03 7.742425E-06 + CHTFE NA+ 1 7.484278E-04 1.370790E-06 + CHTFE CL- 1 9.539942E-03 3.947875E-05 + CHTFE CChl 1 4.323403E-03 1.023523E-05 + CHTFE CLChl 1 7.682275E-03 1.883618E-05 + CHTFE HChl 1 5.175406E-04 3.329192E-07 + CHTFE SDmso 1 8.662483E-03 2.354002E-05 + CHTFE CDmso 1 8.264634E-03 2.620747E-05 + CHTFE ODmso 1 4.016587E-03 4.401048E-06 + CHTFE CCl4 1 4.323403E-03 1.399627E-05 + CHTFE CLCl4 1 7.350172E-03 1.814114E-05 + CHTFE FTFE 1 2.892833E-03 5.077000E-06 + CHTFE CTFE 1 4.077950E-03 9.326449E-06 + OTFE O 1 2.261954E-03 1.227000E-06 + OTFE OM 1 2.261954E-03 1.056570E-06 + OTFE OA 1 2.261954E-03 1.505529E-06 + OTFE OE 1 2.261954E-03 1.349700E-06 + OTFE OW 1 2.433170E-03 1.991421E-06 + OTFE N 1 2.347562E-03 1.868721E-06 + OTFE NT 1 2.347562E-03 2.760750E-06 + OTFE NL 1 2.347562E-03 1.868721E-06 + OTFE NR 1 2.347562E-03 2.258907E-06 + OTFE NZ 1 2.347562E-03 1.868721E-06 + OTFE NE 1 2.347562E-03 1.868721E-06 + OTFE C 1 2.300953E-03 2.726394E-06 + OTFE CH0 1 2.328538E-03 1.758291E-05 + OTFE CH1 1 3.704924E-03 1.208595E-05 + OTFE CH2 1 4.110135E-03 7.150956E-06 + OTFE CH3 1 4.663258E-03 6.333774E-06 + OTFE CH4 1 5.459888E-03 7.192674E-06 + OTFE CH2r 1 4.073038E-03 6.499419E-06 + OTFE CR1 1 3.531330E-03 4.770576E-06 + OTFE HC 1 4.375520E-04 1.509210E-07 + OTFE H 1 0.000000E+00 0.000000E+00 + OTFE DUM 1 0.000000E+00 0.000000E+00 + OTFE S 1 4.752195E-03 4.436832E-06 + OTFE CU1+ 1 9.726020E-04 8.784093E-08 + OTFE CU2+ 1 9.726020E-04 8.784093E-08 + OTFE FE 1 0.000000E+00 0.000000E+00 + OTFE ZN2+ 1 9.726020E-04 1.192153E-07 + OTFE MG2+ 1 3.842848E-04 7.163226E-08 + OTFE CA2+ 1 1.507652E-03 8.658939E-07 + OTFE P 1 5.773784E-03 5.780397E-06 + OTFE AR 1 3.764374E-03 3.850326E-06 + OTFE F 1 1.632259E-03 1.070189E-06 + OTFE CL 1 4.452567E-03 4.798797E-06 + OTFE BR 1 7.909228E-03 9.928884E-06 + OTFE CMet 1 4.480628E-03 5.398800E-06 + OTFE OMet 1 2.261954E-03 1.871175E-06 + OTFE NA+ 1 4.222948E-04 3.312900E-07 + OTFE CL- 1 5.382841E-03 9.541152E-06 + OTFE CChl 1 2.439448E-03 2.473632E-06 + OTFE CLChl 1 4.334666E-03 4.552293E-06 + OTFE HChl 1 2.920184E-04 8.045930E-08 + OTFE SDmso 1 4.887741E-03 5.689108E-06 + OTFE CDmso 1 4.663258E-03 6.333774E-06 + OTFE ODmso 1 2.266329E-03 1.380375E-06 + OTFE CCl4 1 2.439448E-03 3.382594E-06 + OTFE CLCl4 1 4.147280E-03 4.384316E-06 + OTFE FTFE 1 1.632259E-03 1.227000E-06 + OTFE CTFE 1 2.300953E-03 2.253999E-06 + OTFE CHTFE 1 4.008832E-03 6.229479E-06 + CUrea O 1 3.324729E-03 3.686400E-06 + CUrea OM 1 3.324729E-03 3.174359E-06 + CUrea OA 1 3.324729E-03 4.055040E-06 + CUrea OE 1 3.324729E-03 4.055040E-06 + CUrea OW 1 3.576391E-03 5.983027E-06 + CUrea N 1 3.450560E-03 5.614387E-06 + CUrea NT 1 3.450560E-03 5.614387E-06 + CUrea NL 1 3.450560E-03 5.614387E-06 + CUrea NR 1 3.450560E-03 5.614387E-06 + CUrea NZ 1 3.450560E-03 5.614387E-06 + CUrea NE 1 3.450560E-03 5.614387E-06 + CUrea C 1 3.382052E-03 8.191181E-06 + CUrea CH0 1 3.422598E-03 5.282611E-05 + CUrea CH1 1 5.445677E-03 3.631104E-05 + CUrea CH2 1 6.041277E-03 2.148434E-05 + CUrea CH3 1 6.854283E-03 1.902920E-05 + CUrea CH4 1 8.025209E-03 2.160968E-05 + CUrea CH2r 1 5.986750E-03 1.952686E-05 + CUrea CR1 1 5.190520E-03 1.433272E-05 + CUrea HC 1 6.431352E-04 4.534272E-07 + CUrea H 1 0.000000E+00 0.000000E+00 + CUrea DUM 1 0.000000E+00 0.000000E+00 + CUrea S 1 6.985008E-03 1.333002E-05 + CUrea CU1+ 1 1.429578E-03 2.639094E-07 + CUrea CU2+ 1 1.429578E-03 2.639094E-07 + CUrea FE 1 0.000000E+00 0.000000E+00 + CUrea ZN2+ 1 1.429578E-03 3.581706E-07 + CUrea MG2+ 1 5.648405E-04 2.152120E-07 + CUrea CA2+ 1 2.216020E-03 2.601492E-06 + CUrea P 1 8.486588E-03 1.736663E-05 + CUrea AR 1 5.533060E-03 1.156792E-05 + CUrea F 1 2.399174E-03 3.215278E-06 + CUrea CL 1 6.544600E-03 1.441751E-05 + CUrea BR 1 1.162537E-02 2.983035E-05 + CUrea CMet 1 6.585844E-03 1.622016E-05 + CUrea OMet 1 3.324729E-03 5.621760E-06 + CUrea NA+ 1 6.207094E-04 9.953280E-07 + CUrea CL- 1 7.911961E-03 2.866545E-05 + CUrea CChl 1 3.585619E-03 7.431782E-06 + CUrea CLChl 1 6.371303E-03 1.367691E-05 + CUrea HChl 1 4.292228E-04 2.417320E-07 + CUrea SDmso 1 7.184240E-03 1.709236E-05 + CUrea CDmso 1 6.854283E-03 1.902920E-05 + CUrea ODmso 1 3.331161E-03 3.195593E-06 + CUrea CCl4 1 3.585619E-03 1.016267E-05 + CUrea CLCl4 1 6.095873E-03 1.317224E-05 + CUrea FTFE 1 2.399174E-03 3.686400E-06 + CUrea CTFE 1 3.382052E-03 6.771917E-06 + CUrea CHTFE 1 5.892377E-03 1.871585E-05 + CUrea OTFE 1 3.324729E-03 4.523213E-06 + OUrea O 1 2.312367E-03 1.260900E-06 + OUrea OM 1 2.312367E-03 1.085761E-06 + OUrea OA 1 2.312367E-03 1.547124E-06 + OUrea OE 1 2.312367E-03 1.386990E-06 + OUrea OW 1 2.487399E-03 2.046441E-06 + OUrea N 1 2.399883E-03 2.449929E-06 + OUrea NT 1 2.399883E-03 2.837025E-06 + OUrea NL 1 2.399883E-03 3.868441E-06 + OUrea NR 1 2.399883E-03 2.321317E-06 + OUrea NZ 1 2.399883E-03 2.708413E-06 + OUrea NE 1 2.399883E-03 2.501626E-06 + OUrea C 1 2.352236E-03 2.801720E-06 + OUrea CH0 1 2.380435E-03 1.806870E-05 + OUrea CH1 1 3.787498E-03 1.241986E-05 + OUrea CH2 1 4.201740E-03 7.348525E-06 + OUrea CH3 1 4.767191E-03 6.508766E-06 + OUrea CH4 1 5.581576E-03 7.391396E-06 + OUrea CH2r 1 4.163817E-03 6.678987E-06 + OUrea CR1 1 3.610035E-03 4.902379E-06 + OUrea HC 1 4.473040E-04 1.550907E-07 + OUrea H 1 0.000000E+00 0.000000E+00 + OUrea DUM 1 0.000000E+00 0.000000E+00 + OUrea S 1 4.858110E-03 4.559414E-06 + OUrea CU1+ 1 9.942790E-04 2.837025E-07 + OUrea CU2+ 1 9.942790E-04 5.158342E-07 + OUrea FE 1 0.000000E+00 0.000000E+00 + OUrea ZN2+ 1 9.942790E-04 1.225090E-07 + OUrea MG2+ 1 3.928496E-04 7.361134E-08 + OUrea CA2+ 1 1.541254E-03 8.898171E-07 + OUrea P 1 5.902468E-03 5.940100E-06 + OUrea AR 1 3.848273E-03 3.956704E-06 + OUrea F 1 1.668638E-03 1.099757E-06 + OUrea CL 1 4.551804E-03 4.931380E-06 + OUrea BR 1 8.085506E-03 1.020320E-05 + OUrea CMet 1 4.580490E-03 5.547960E-06 + OUrea OMet 1 2.312367E-03 1.922873E-06 + OUrea NA+ 1 4.317067E-04 3.404430E-07 + OUrea CL- 1 5.502812E-03 9.804758E-06 + OUrea CChl 1 2.493817E-03 2.541974E-06 + OUrea CLChl 1 4.431275E-03 4.678065E-06 + OUrea HChl 1 2.985268E-04 8.268226E-08 + OUrea SDmso 1 4.996677E-03 5.846289E-06 + OUrea CDmso 1 4.767191E-03 6.508766E-06 + OUrea ODmso 1 2.316840E-03 1.093024E-06 + OUrea CCl4 1 2.493817E-03 3.476049E-06 + OUrea CLCl4 1 4.239713E-03 4.505448E-06 + OUrea FTFE 1 1.668638E-03 1.260900E-06 + OUrea CTFE 1 2.352236E-03 2.316273E-06 + OUrea CHTFE 1 4.098180E-03 6.401589E-06 + OUrea OTFE 1 2.312367E-03 1.547124E-06 + OUrea CUrea 1 3.398830E-03 4.648182E-06 + NUrea O 1 2.753867E-03 2.246101E-06 + NUrea OM 1 2.753867E-03 3.659356E-06 + NUrea OA 1 2.753867E-03 2.438908E-06 + NUrea OE 1 2.753867E-03 2.438908E-06 + NUrea OW 1 2.962317E-03 3.226037E-06 + NUrea N 1 2.858092E-03 3.862101E-06 + NUrea NT 1 2.858092E-03 4.472325E-06 + NUrea NL 1 2.858092E-03 6.098264E-06 + NUrea NR 1 2.858092E-03 3.659356E-06 + NUrea NZ 1 2.858092E-03 4.269580E-06 + NUrea NE 1 2.858092E-03 3.943597E-06 + NUrea C 1 2.801347E-03 4.416669E-06 + NUrea CH0 1 2.834931E-03 2.848374E-05 + NUrea CH1 1 4.510644E-03 1.957884E-05 + NUrea CH2 1 5.003977E-03 1.158432E-05 + NUrea CH3 1 5.677389E-03 1.026051E-05 + NUrea CH4 1 6.647264E-03 1.165190E-05 + NUrea CH2r 1 4.958813E-03 1.052885E-05 + NUrea CR1 1 4.299298E-03 7.728178E-06 + NUrea HC 1 5.327076E-04 2.444871E-07 + NUrea H 1 0.000000E+00 0.000000E+00 + NUrea DUM 1 0.000000E+00 0.000000E+00 + NUrea S 1 5.785668E-03 7.187523E-06 + NUrea CU1+ 1 1.184116E-03 1.422994E-07 + NUrea CU2+ 1 1.184116E-03 1.422994E-07 + NUrea FE 1 0.000000E+00 0.000000E+00 + NUrea ZN2+ 1 1.184116E-03 1.931249E-07 + NUrea MG2+ 1 4.678562E-04 1.160419E-07 + NUrea CA2+ 1 1.835525E-03 1.402720E-06 + NUrea P 1 7.029424E-03 9.364055E-06 + NUrea AR 1 4.583022E-03 6.237403E-06 + NUrea F 1 1.987231E-03 2.438908E-06 + NUrea CL 1 5.420879E-03 7.773895E-06 + NUrea BR 1 9.629269E-03 1.608447E-05 + NUrea CMet 1 5.455042E-03 8.745880E-06 + NUrea OMet 1 2.753867E-03 3.031242E-06 + NUrea NA+ 1 5.141323E-04 5.366790E-07 + NUrea CL- 1 6.553462E-03 1.545636E-05 + NUrea CChl 1 2.969961E-03 4.007203E-06 + NUrea CLChl 1 5.277337E-03 7.374566E-06 + NUrea HChl 1 3.555244E-04 1.303414E-07 + NUrea SDmso 1 5.950691E-03 9.216170E-06 + NUrea CDmso 1 5.677389E-03 1.026051E-05 + NUrea ODmso 1 2.759194E-03 2.236162E-06 + NUrea CCl4 1 2.969961E-03 5.479691E-06 + NUrea CLCl4 1 5.049200E-03 7.102450E-06 + NUrea FTFE 1 1.987231E-03 1.987700E-06 + NUrea CTFE 1 2.801347E-03 3.651405E-06 + NUrea CHTFE 1 4.880644E-03 1.009155E-05 + NUrea OTFE 1 2.753867E-03 2.438908E-06 + NUrea CUrea 1 4.047767E-03 7.327457E-06 + NUrea OUrea 1 2.815244E-03 2.506291E-06 + CH3p O 1 4.663258E-03 5.162000E-06 + CH3p OM 1 4.663258E-03 1.583702E-05 + CH3p OA 1 4.663258E-03 5.678200E-06 + CH3p OE 1 4.663258E-03 5.678200E-06 + CH3p OW 1 5.016238E-03 8.377926E-06 + CH3p N 1 4.839748E-03 7.861726E-06 + CH3p NT 1 4.839748E-03 7.861726E-06 + CH3p NL 1 4.839748E-03 7.861726E-06 + CH3p NR 1 4.839748E-03 7.861726E-06 + CH3p NZ 1 4.839748E-03 7.861726E-06 + CH3p NE 1 4.839748E-03 7.861726E-06 + CH3p C 1 4.743659E-03 1.146996E-05 + CH3p CH0 1 4.800528E-03 7.397146E-05 + CH3p CH1 1 7.638095E-03 5.084570E-05 + CH3p CH2 1 8.473481E-03 3.008414E-05 + CH3p CH3 1 9.613802E-03 2.664624E-05 + CH3p CH4 1 1.125614E-02 3.025964E-05 + CH3p CH2r 1 8.397002E-03 2.734311E-05 + CH3p CR1 1 7.280212E-03 2.006986E-05 + CH3p HC 1 9.020600E-04 6.349260E-07 + CH3p H 1 0.000000E+00 0.000000E+00 + CH3p DUM 1 0.000000E+00 0.000000E+00 + CH3p S 1 9.797156E-03 1.866579E-05 + CH3p CU1+ 1 2.005122E-03 3.695476E-07 + CH3p CU2+ 1 2.005122E-03 3.695476E-07 + CH3p FE 1 0.000000E+00 0.000000E+00 + CH3p ZN2+ 1 2.005122E-03 5.015399E-07 + CH3p MG2+ 1 7.922440E-04 3.013576E-07 + CH3p CA2+ 1 3.108185E-03 3.642823E-06 + CH3p P 1 1.190327E-02 2.431818E-05 + CH3p AR 1 7.760657E-03 1.619836E-05 + CH3p F 1 3.365076E-03 4.502296E-06 + CH3p CL 1 9.179441E-03 2.018858E-05 + CH3p BR 1 1.630571E-02 4.177090E-05 + CH3p CMet 1 9.237291E-03 2.271280E-05 + CH3p OMet 1 4.663258E-03 7.872050E-06 + CH3p NA+ 1 8.706056E-04 1.393740E-06 + CH3p CL- 1 1.109730E-02 4.013971E-05 + CH3p CChl 1 5.029181E-03 1.040659E-05 + CH3p CLChl 1 8.936375E-03 1.915154E-05 + CH3p HChl 1 6.020270E-04 3.384930E-07 + CH3p SDmso 1 1.007660E-02 2.393413E-05 + CH3p CDmso 1 9.613802E-03 2.664624E-05 + CH3p ODmso 1 4.672279E-03 4.474731E-06 + CH3p CCl4 1 5.029181E-03 1.423060E-05 + CH3p CLCl4 1 8.550058E-03 1.844486E-05 + CH3p FTFE 1 3.365076E-03 5.162000E-06 + CH3p CTFE 1 4.743659E-03 9.482594E-06 + CH3p CHTFE 1 8.264634E-03 2.620747E-05 + CH3p OTFE 1 4.663258E-03 6.333774E-06 + CH3p CUrea 1 6.854283E-03 1.902920E-05 + CH3p OUrea 1 4.767191E-03 6.508766E-06 + CH3p NUrea 1 5.677389E-03 1.026051E-05 + SI O 1 5.773784E-03 5.323430E-06 + SI OM 1 5.773784E-03 1.445335E-05 + SI OA 1 5.773784E-03 5.780397E-06 + SI OE 1 5.773784E-03 5.780397E-06 + SI OW 1 6.210824E-03 7.645953E-06 + SI N 1 5.992304E-03 7.174853E-06 + SI NT 1 5.992304E-03 7.174853E-06 + SI NL 1 5.992304E-03 7.174853E-06 + SI NR 1 5.992304E-03 8.672951E-06 + SI NZ 1 5.992304E-03 7.174853E-06 + SI NE 1 5.992304E-03 7.174853E-06 + SI C 1 5.873332E-03 1.046784E-05 + SI CH0 1 5.943744E-03 6.750863E-05 + SI CH1 1 9.457060E-03 4.640335E-05 + SI CH2 1 1.049139E-02 2.745571E-05 + SI CH3 1 1.190327E-02 2.431818E-05 + SI CH4 1 1.393672E-02 2.761588E-05 + SI CH2r 1 1.039670E-02 2.495417E-05 + SI CR1 1 9.013950E-03 1.831637E-05 + SI HC 1 1.116880E-03 5.794530E-07 + SI H 1 0.000000E+00 0.000000E+00 + SI DUM 1 0.000000E+00 0.000000E+00 + SI S 1 1.213029E-02 1.703498E-05 + SI CU1+ 1 2.482630E-03 3.372605E-07 + SI CU2+ 1 2.482630E-03 3.372605E-07 + SI FE 1 0.000000E+00 0.000000E+00 + SI ZN2+ 1 2.482630E-03 4.577208E-07 + SI MG2+ 1 9.809120E-04 2.750282E-07 + SI CA2+ 1 3.848380E-03 3.324553E-06 + SI P 1 1.473796E-02 2.2193521E-05 + SI AR 1 9.608810E-03 1.478312E-05 + SI F 1 4.166448E-03 5.780397E-06 + SI CL 1 1.136547E-02 1.842472E-05 + SI BR 1 2.018882E-02 3.812141E-05 + SI CMet 1 1.143709E-02 2.072840E-05 + SI OMet 1 5.773784E-03 7.184275E-06 + SI NA+ 1 1.077935e-03 1.271970e-06 + SI CL- 1 1.374005e-02 3.663274e-05 + SI CChl 1 6.226849E-03 9.497376E-06 + SI CLChl 1 1.106452E-02 1.747828E-05 + SI HChl 1 7.453960E-04 3.089191E-07 + SI SDmso 1 1.247628E-02 2.184302E-05 + SI CDmso 1 1.190327E-02 2.431818E-05 + SI ODmso 1 5.784953E-03 5.299875E-06 + SI CCl4 1 6.226849E-03 1.298729E-05 + SI CLCl4 1 1.058620E-02 1.683335E-05 + SI FTFE 1 4.166448E-03 4.711000E-06 + SI CTFE 1 5.873332E-03 8.654107E-06 + SI CHTFE 1 1.023281E-02 2.391775E-05 + SI OTFE 1 5.773784E-03 5.780397E-06 + SI CUrea 1 8.486588E-03 1.736663E-05 + SI OUrea 1 5.902468E-03 5.940100E-06 + SI NUrea 1 7.029424E-03 9.364055E-06 + SI CH3p 1 1.190327E-02 2.431818E-05 + +[ pairtypes ] +; i j func c6 c12 + O O 1 2.261954E-03 7.414932E-07 + OM O 1 2.261954E-03 7.414932E-07 + OM OM 1 2.261954E-03 7.414932E-07 + OA O 1 2.261954E-03 9.687375E-07 + OA OM 1 2.261954E-03 9.687375E-07 + OA OA 1 2.261954E-03 1.265625E-06 + OE O 1 2.261954E-03 9.687375E-07 + OE OM 1 2.261954E-03 9.687375E-07 + OE OA 1 2.261954E-03 1.265625E-06 + OE OE 1 2.261954E-03 1.265625E-06 + OW O 1 2.433170E-03 1.397565E-06 + OW OM 1 2.433170E-03 1.397565E-06 + OW OA 1 2.433170E-03 1.825875E-06 + OW OE 1 2.433170E-03 1.825875E-06 + OW OW 1 2.617346E-03 2.634129E-06 + N O 1 2.347562E-03 1.120291E-06 + N OM 1 2.347562E-03 1.120291E-06 + N OA 1 2.347562E-03 1.463625E-06 + N OE 1 2.347562E-03 1.463625E-06 + N OW 1 2.525258E-03 2.111523E-06 + N N 1 2.436410E-03 1.692601E-06 + NT O 1 2.347562E-03 1.120291E-06 + NT OM 1 2.347562E-03 1.120291E-06 + NT OA 1 2.347562E-03 1.463625E-06 + NT OE 1 2.347562E-03 1.463625E-06 + NT OW 1 2.525258E-03 2.111523E-06 + NT N 1 2.436410E-03 1.692601E-06 + NT NT 1 2.436410E-03 1.692601E-06 + NL O 1 2.347562E-03 1.120291E-06 + NL OM 1 2.347562E-03 1.120291E-06 + NL OA 1 2.347562E-03 1.463625E-06 + NL OE 1 2.347562E-03 1.463625E-06 + NL OW 1 2.525258E-03 2.111523E-06 + NL N 1 2.436410E-03 1.692601E-06 + NL NT 1 2.436410E-03 1.692601E-06 + NL NL 1 2.436410E-03 1.692601E-06 + NR O 1 2.347562E-03 1.120291E-06 + NR OM 1 2.347562E-03 1.120291E-06 + NR OA 1 2.347562E-03 1.463625E-06 + NR OE 1 2.347562E-03 1.463625E-06 + NR OW 1 2.525258E-03 2.111523E-06 + NR N 1 2.436410E-03 1.692601E-06 + NR NT 1 2.436410E-03 1.692601E-06 + NR NL 1 2.436410E-03 1.692601E-06 + NR NR 1 2.436410E-03 1.692601E-06 + NZ O 1 2.347562E-03 1.120291E-06 + NZ OM 1 2.347562E-03 1.120291E-06 + NZ OA 1 2.347562E-03 1.463625E-06 + NZ OE 1 2.347562E-03 1.463625E-06 + NZ OW 1 2.525258E-03 2.111523E-06 + NZ N 1 2.436410E-03 1.692601E-06 + NZ NT 1 2.436410E-03 1.692601E-06 + NZ NL 1 2.436410E-03 1.692601E-06 + NZ NR 1 2.436410E-03 1.692601E-06 + NZ NZ 1 2.436410E-03 1.692601E-06 + NE O 1 2.347562E-03 1.120291E-06 + NE OM 1 2.347562E-03 1.120291E-06 + NE OA 1 2.347562E-03 1.463625E-06 + NE OE 1 2.347562E-03 1.463625E-06 + NE OW 1 2.525258E-03 2.111523E-06 + NE N 1 2.436410E-03 1.692601E-06 + NE NT 1 2.436410E-03 1.692601E-06 + NE NL 1 2.436410E-03 1.692601E-06 + NE NR 1 2.436410E-03 1.692601E-06 + NE NZ 1 2.436410E-03 1.692601E-06 + NE NE 1 2.436410E-03 1.692601E-06 + C O 1 2.300953E-03 1.581841E-06 + C OM 1 2.300953E-03 1.581841E-06 + C OA 1 2.300953E-03 2.066625E-06 + C OE 1 2.300953E-03 2.066625E-06 + C OW 1 2.475121E-03 2.981451E-06 + C N 1 2.388037E-03 2.389937E-06 + C NT 1 2.388037E-03 2.389937E-06 + C NL 1 2.388037E-03 2.389937E-06 + C NR 1 2.388037E-03 2.389937E-06 + C NZ 1 2.388037E-03 2.389937E-06 + C NE 1 2.388037E-03 2.389937E-06 + C C 1 2.340624E-03 3.374569E-06 + CH0 O 1 2.300953E-03 1.581841E-06 + CH0 OM 1 2.300953E-03 1.581841E-06 + CH0 OA 1 2.300953E-03 2.066625E-06 + CH0 OE 1 2.300953E-03 2.066625E-06 + CH0 OW 1 2.475121E-03 2.981451E-06 + CH0 N 1 2.388037E-03 2.389937E-06 + CH0 NT 1 2.388037E-03 2.389937E-06 + CH0 NL 1 2.388037E-03 2.389937E-06 + CH0 NR 1 2.388037E-03 2.389937E-06 + CH0 NZ 1 2.388037E-03 2.389937E-06 + CH0 NE 1 2.388037E-03 2.389937E-06 + CH0 C 1 2.340624E-03 3.374569E-06 + CH0 CH0 1 2.340624E-03 3.374569E-06 + CH1 O 1 2.566338E-03 1.664506E-06 + CH1 OM 1 2.566338E-03 1.664506E-06 + CH1 OA 1 2.566338E-03 2.174625E-06 + CH1 OE 1 2.566338E-03 2.174625E-06 + CH1 OW 1 2.760594E-03 3.137259E-06 + CH1 N 1 2.663466E-03 2.514833E-06 + CH1 NT 1 2.663466E-03 2.514833E-06 + CH1 NL 1 2.663466E-03 2.514833E-06 + CH1 NR 1 2.663466E-03 2.514833E-06 + CH1 NZ 1 2.663466E-03 2.514833E-06 + CH1 NE 1 2.663466E-03 2.514833E-06 + CH1 C 1 2.610585E-03 3.550921E-06 + CH1 CH0 1 2.610585E-03 3.550921E-06 + CH1 CH1 1 2.911682E-03 3.736489E-06 + CH2 O 1 3.268799E-03 1.875128E-06 + CH2 OM 1 3.268799E-03 1.875128E-06 + CH2 OA 1 3.268799E-03 2.449796E-06 + CH2 OE 1 3.268799E-03 2.449796E-06 + CH2 OW 1 3.516227E-03 3.534239E-06 + CH2 N 1 3.392513E-03 2.833053E-06 + CH2 NT 1 3.392513E-03 2.833053E-06 + CH2 NL 1 3.392513E-03 2.833053E-06 + CH2 NR 1 3.392513E-03 2.833053E-06 + CH2 NZ 1 3.392513E-03 2.833053E-06 + CH2 NE 1 3.392513E-03 2.833053E-06 + CH2 C 1 3.325157E-03 4.000245E-06 + CH2 CH0 1 3.325157E-03 4.000245E-06 + CH2 CH1 1 3.708671E-03 4.209294E-06 + CH2 CH2 1 4.723813E-03 4.741926E-06 + CH3 O 1 3.937017E-03 2.114674E-06 + CH3 OM 1 3.937017E-03 2.114674E-06 + CH3 OA 1 3.937017E-03 2.762755E-06 + CH3 OE 1 3.937017E-03 2.762755E-06 + CH3 OW 1 4.235025E-03 3.985734E-06 + CH3 N 1 4.086021E-03 3.194972E-06 + CH3 NT 1 4.086021E-03 3.194972E-06 + CH3 NL 1 4.086021E-03 3.194972E-06 + CH3 NR 1 4.086021E-03 3.194972E-06 + CH3 NZ 1 4.086021E-03 3.194972E-06 + CH3 NE 1 4.086021E-03 3.194972E-06 + CH3 C 1 4.004896E-03 4.511272E-06 + CH3 CH0 1 4.004896E-03 4.511272E-06 + CH3 CH1 1 4.466809E-03 4.747027E-06 + CH3 CH2 1 5.689469E-03 5.347702E-06 + CH3 CH3 1 6.852528E-03 6.030865E-06 + CH4 O 1 5.459888E-03 5.047768E-06 + CH4 OM 1 5.459888E-03 5.047768E-06 + CH4 OA 1 5.459888E-03 6.594750E-06 + CH4 OE 1 5.459888E-03 6.594750E-06 + CH4 OW 1 5.873168E-03 9.514026E-06 + CH4 N 1 5.666528E-03 7.626462E-06 + CH4 NT 1 5.666528E-03 7.626462E-06 + CH4 NL 1 5.666528E-03 7.626462E-06 + CH4 NR 1 5.666528E-03 7.626462E-06 + CH4 NZ 1 5.666528E-03 7.626462E-06 + CH4 NE 1 5.666528E-03 7.626462E-06 + CH4 C 1 5.554024E-03 1.076849E-05 + CH4 CH0 1 5.554024E-03 1.076849E-05 + CH4 CH1 1 6.194608E-03 1.133125E-05 + CH4 CH2 1 7.890204E-03 1.276507E-05 + CH4 CH3 1 9.503144E-03 1.439579E-05 + CH4 CH4 1 1.317904E-02 3.436304E-05 + CH2r O 1 3.268799E-03 1.875128E-06 + CH2r OM 1 3.268799E-03 1.875128E-06 + CH2r OA 1 3.268799E-03 2.449796E-06 + CH2r OE 1 3.268799E-03 2.449796E-06 + CH2r OW 1 3.516227E-03 3.534239E-06 + CH2r N 1 3.392513E-03 2.833053E-06 + CH2r NT 1 3.392513E-03 2.833053E-06 + CH2r NL 1 3.392513E-03 2.833053E-06 + CH2r NR 1 3.392513E-03 2.833053E-06 + CH2r NZ 1 3.392513E-03 2.833053E-06 + CH2r NE 1 3.392513E-03 2.833053E-06 + CH2r C 1 3.325157E-03 4.000245E-06 + CH2r CH0 1 3.325157E-03 4.000245E-06 + CH2r CH1 1 3.708671E-03 4.209294E-06 + CH2r CH2 1 4.723813E-03 4.741926E-06 + CH2r CH3 1 5.689469E-03 5.347702E-06 + CH2r CH4 1 7.890204E-03 1.276507E-05 + CH2r CH2r 1 4.723813E-03 4.741926E-06 + CR1 O 1 3.536086E-03 2.485135E-06 + CR1 OM 1 3.536086E-03 2.485135E-06 + CR1 OA 1 3.536086E-03 3.246750E-06 + CR1 OE 1 3.536086E-03 3.246750E-06 + CR1 OW 1 3.803746E-03 4.683978E-06 + CR1 N 1 3.669916E-03 3.754686E-06 + CR1 NT 1 3.669916E-03 3.754686E-06 + CR1 NL 1 3.669916E-03 3.754686E-06 + CR1 NR 1 3.669916E-03 3.754686E-06 + CR1 NZ 1 3.669916E-03 3.754686E-06 + CR1 NE 1 3.669916E-03 3.754686E-06 + CR1 C 1 3.597053E-03 5.301582E-06 + CR1 CH0 1 3.597053E-03 5.301582E-06 + CR1 CH1 1 4.011926E-03 5.578638E-06 + CR1 CH2 1 5.110076E-03 6.284543E-06 + CR1 CH3 1 6.154693E-03 7.087387E-06 + CR1 CH4 1 8.535380E-03 1.691773E-05 + CR1 CH2r 1 5.110076E-03 6.284543E-06 + CR1 CR1 1 5.527922E-03 8.328996E-06 + HC O 1 4.375520E-04 1.059153E-07 + HC OM 1 4.375520E-04 1.059153E-07 + HC OA 1 4.375520E-04 1.383750E-07 + HC OE 1 4.375520E-04 1.383750E-07 + HC OW 1 4.706720E-04 1.996290E-07 + HC N 1 4.541120E-04 1.600230E-07 + HC NT 1 4.541120E-04 1.600230E-07 + HC NL 1 4.541120E-04 1.600230E-07 + HC NR 1 4.541120E-04 1.600230E-07 + HC NZ 1 4.541120E-04 1.600230E-07 + HC NE 1 4.541120E-04 1.600230E-07 + HC C 1 4.450960E-04 2.259510E-07 + HC CH0 1 4.450960E-04 2.259510E-07 + HC CH1 1 4.964320E-04 2.377590E-07 + HC CH2 1 6.323160E-04 2.678444E-07 + HC CH3 1 7.615760E-04 3.020612E-07 + HC CH4 1 1.056160E-03 7.210260E-07 + HC CH2r 1 6.323160E-04 2.678444E-07 + HC CR1 1 6.840200E-04 3.549780E-07 + HC HC 1 8.464000E-05 1.512900E-08 + H O 1 0.000000E+00 0.000000E+00 + H OM 1 0.000000E+00 0.000000E+00 + H OA 1 0.000000E+00 0.000000E+00 + H OE 1 0.000000E+00 0.000000E+00 + H OW 1 0.000000E+00 0.000000E+00 + H N 1 0.000000E+00 0.000000E+00 + H NT 1 0.000000E+00 0.000000E+00 + H NL 1 0.000000E+00 0.000000E+00 + H NR 1 0.000000E+00 0.000000E+00 + H NZ 1 0.000000E+00 0.000000E+00 + H NE 1 0.000000E+00 0.000000E+00 + H C 1 0.000000E+00 0.000000E+00 + H CH0 1 0.000000E+00 0.000000E+00 + H CH1 1 0.000000E+00 0.000000E+00 + H CH2 1 0.000000E+00 0.000000E+00 + H CH3 1 0.000000E+00 0.000000E+00 + H CH4 1 0.000000E+00 0.000000E+00 + H CH2r 1 0.000000E+00 0.000000E+00 + H CR1 1 0.000000E+00 0.000000E+00 + H HC 1 0.000000E+00 0.000000E+00 + H H 1 0.000000E+00 0.000000E+00 + DUM O 1 0.000000E+00 0.000000E+00 + DUM OM 1 0.000000E+00 0.000000E+00 + DUM OA 1 0.000000E+00 0.000000E+00 + DUM OE 1 0.000000E+00 0.000000E+00 + DUM OW 1 0.000000E+00 0.000000E+00 + DUM N 1 0.000000E+00 0.000000E+00 + DUM NT 1 0.000000E+00 0.000000E+00 + DUM NL 1 0.000000E+00 0.000000E+00 + DUM NR 1 0.000000E+00 0.000000E+00 + DUM NZ 1 0.000000E+00 0.000000E+00 + DUM NE 1 0.000000E+00 0.000000E+00 + DUM C 1 0.000000E+00 0.000000E+00 + DUM CH0 1 0.000000E+00 0.000000E+00 + DUM CH1 1 0.000000E+00 0.000000E+00 + DUM CH2 1 0.000000E+00 0.000000E+00 + DUM CH3 1 0.000000E+00 0.000000E+00 + DUM CH4 1 0.000000E+00 0.000000E+00 + DUM CH2r 1 0.000000E+00 0.000000E+00 + DUM CR1 1 0.000000E+00 0.000000E+00 + DUM HC 1 0.000000E+00 0.000000E+00 + DUM H 1 0.000000E+00 0.000000E+00 + DUM DUM 1 0.000000E+00 0.000000E+00 + S O 1 4.752195E-03 3.113738E-06 + S OM 1 4.752195E-03 3.113738E-06 + S OA 1 4.752195E-03 4.068000E-06 + S OE 1 4.752195E-03 4.068000E-06 + S OW 1 5.111907E-03 5.868768E-06 + S N 1 4.932051E-03 4.704416E-06 + S NT 1 4.932051E-03 4.704416E-06 + S NL 1 4.932051E-03 4.704416E-06 + S NR 1 4.932051E-03 4.704416E-06 + S NZ 1 4.932051E-03 4.704416E-06 + S NE 1 4.932051E-03 4.704416E-06 + S C 1 4.834130E-03 6.642592E-06 + S CH0 1 4.834130E-03 6.642592E-06 + S CH1 1 5.391683E-03 6.989728E-06 + S CH2 1 6.867502E-03 7.874189E-06 + S CH3 1 8.271378E-03 8.880108E-06 + S CH4 1 1.147082E-02 2.119699E-05 + S CH2r 1 6.867502E-03 7.874189E-06 + S CR1 1 7.429052E-03 1.043578E-05 + S HC 1 9.192640E-04 4.447680E-07 + S H 1 0.000000E+00 0.000000E+00 + S DUM 1 0.000000E+00 0.000000E+00 + S S 1 9.984006E-03 1.307546E-05 + CU1+ O 1 9.726020E-04 6.164615E-08 + CU1+ OM 1 9.726020E-04 6.164615E-08 + CU1+ OA 1 9.726020E-04 8.053875E-08 + CU1+ OE 1 9.726020E-04 8.053875E-08 + CU1+ OW 1 1.046222E-03 1.161906E-07 + CU1+ N 1 1.009412E-03 9.313859E-08 + CU1+ NT 1 1.009412E-03 9.313859E-08 + CU1+ NL 1 1.009412E-03 9.313859E-08 + CU1+ NR 1 1.009412E-03 9.313859E-08 + CU1+ NZ 1 1.009412E-03 9.313859E-08 + CU1+ NE 1 1.009412E-03 9.313859E-08 + CU1+ C 1 9.893710E-04 1.315108E-07 + CU1+ CH0 1 9.893710E-04 1.315108E-07 + CU1+ CH1 1 1.103482E-03 1.383835E-07 + CU1+ CH2 1 1.405529E-03 1.558941E-07 + CU1+ CH3 1 1.692851E-03 1.758094E-07 + CU1+ CH4 1 2.347660E-03 4.196606E-07 + CU1+ CH2r 1 1.405529E-03 1.558941E-07 + CU1+ CR1 1 1.520457E-03 2.066087E-07 + CU1+ HC 1 1.881400E-04 8.805570E-09 + CU1+ H 1 0.000000E+00 0.000000E+00 + CU1+ DUM 1 0.000000E+00 0.000000E+00 + CU1+ S 1 2.043364E-03 2.588694E-07 + CU1+ CU1+ 1 4.182025E-04 5.125128E-09 + CU2+ O 1 9.726020E-04 6.164615E-08 + CU2+ OM 1 9.726020E-04 6.164615E-08 + CU2+ OA 1 9.726020E-04 8.053875E-08 + CU2+ OE 1 9.726020E-04 8.053875E-08 + CU2+ OW 1 1.046222E-03 1.161906E-07 + CU2+ N 1 1.009412E-03 9.313859E-08 + CU2+ NT 1 1.009412E-03 9.313859E-08 + CU2+ NL 1 1.009412E-03 9.313859E-08 + CU2+ NR 1 1.009412E-03 9.313859E-08 + CU2+ NZ 1 1.009412E-03 9.313859E-08 + CU2+ NE 1 1.009412E-03 9.313859E-08 + CU2+ C 1 9.893710E-04 1.315108E-07 + CU2+ CH0 1 9.893710E-04 1.315108E-07 + CU2+ CH1 1 1.103482E-03 1.383835E-07 + CU2+ CH2 1 1.405529E-03 1.558941E-07 + CU2+ CH3 1 1.692851E-03 1.758094E-07 + CU2+ CH4 1 2.347660E-03 4.196606E-07 + CU2+ CH2r 1 1.405529E-03 1.558941E-07 + CU2+ CR1 1 1.520457E-03 2.066087E-07 + CU2+ HC 1 1.881400E-04 8.805570E-09 + CU2+ H 1 0.000000E+00 0.000000E+00 + CU2+ DUM 1 0.000000E+00 0.000000E+00 + CU2+ S 1 2.043364E-03 2.588694E-07 + CU2+ CU1+ 1 4.182025E-04 5.125128E-09 + CU2+ CU2+ 1 4.182025E-04 5.125128E-09 + FE O 1 0.000000E+00 0.000000E+00 + FE OM 1 0.000000E+00 0.000000E+00 + FE OA 1 0.000000E+00 0.000000E+00 + FE OE 1 0.000000E+00 0.000000E+00 + FE OW 1 0.000000E+00 0.000000E+00 + FE N 1 0.000000E+00 0.000000E+00 + FE NT 1 0.000000E+00 0.000000E+00 + FE NL 1 0.000000E+00 0.000000E+00 + FE NR 1 0.000000E+00 0.000000E+00 + FE NZ 1 0.000000E+00 0.000000E+00 + FE NE 1 0.000000E+00 0.000000E+00 + FE C 1 0.000000E+00 0.000000E+00 + FE CH0 1 0.000000E+00 0.000000E+00 + FE CH1 1 0.000000E+00 0.000000E+00 + FE CH2 1 0.000000E+00 0.000000E+00 + FE CH3 1 0.000000E+00 0.000000E+00 + FE CH4 1 0.000000E+00 0.000000E+00 + FE CH2r 1 0.000000E+00 0.000000E+00 + FE CR1 1 0.000000E+00 0.000000E+00 + FE HC 1 0.000000E+00 0.000000E+00 + FE H 1 0.000000E+00 0.000000E+00 + FE DUM 1 0.000000E+00 0.000000E+00 + FE S 1 0.000000E+00 0.000000E+00 + FE CU1+ 1 0.000000E+00 0.000000E+00 + FE CU2+ 1 0.000000E+00 0.000000E+00 + FE FE 1 0.000000E+00 0.000000E+00 + ZN2+ O 1 9.726020E-04 8.366448E-08 + ZN2+ OM 1 9.726020E-04 8.366448E-08 + ZN2+ OA 1 9.726020E-04 1.093050E-07 + ZN2+ OE 1 9.726020E-04 1.093050E-07 + ZN2+ OW 1 1.046222E-03 1.576907E-07 + ZN2+ N 1 1.009412E-03 1.264052E-07 + ZN2+ NT 1 1.009412E-03 1.264052E-07 + ZN2+ NL 1 1.009412E-03 1.264052E-07 + ZN2+ NR 1 1.009412E-03 1.264052E-07 + ZN2+ NZ 1 1.009412E-03 1.264052E-07 + ZN2+ NE 1 1.009412E-03 1.264052E-07 + ZN2+ C 1 9.893710E-04 1.784829E-07 + ZN2+ CH0 1 9.893710E-04 1.784829E-07 + ZN2+ CH1 1 1.103482E-03 1.878103E-07 + ZN2+ CH2 1 1.405529E-03 2.115753E-07 + ZN2+ CH3 1 1.692851E-03 2.386038E-07 + ZN2+ CH4 1 2.347660E-03 5.695519E-07 + ZN2+ CH2r 1 1.405529E-03 2.115753E-07 + ZN2+ CR1 1 1.520457E-03 2.804038E-07 + ZN2+ HC 1 1.881400E-04 1.195068E-08 + ZN2+ H 1 0.000000E+00 0.000000E+00 + ZN2+ DUM 1 0.000000E+00 0.000000E+00 + ZN2+ S 1 2.043364E-03 3.513306E-07 + ZN2+ CU1+ 1 4.182025E-04 6.955684E-09 + ZN2+ CU2+ 1 4.182025E-04 6.955684E-09 + ZN2+ FE 1 0.000000E+00 0.000000E+00 + ZN2+ ZN2+ 1 4.182025E-04 9.440066E-09 + MG2+ O 1 3.842848E-04 5.027102E-08 + MG2+ OM 1 3.842848E-04 5.027102E-08 + MG2+ OA 1 3.842848E-04 6.567750E-08 + MG2+ OE 1 3.842848E-04 6.567750E-08 + MG2+ OW 1 4.133728E-04 9.475074E-08 + MG2+ N 1 3.988288E-04 7.595238E-08 + MG2+ NT 1 3.988288E-04 7.595238E-08 + MG2+ NL 1 3.988288E-04 7.595238E-08 + MG2+ NR 1 3.988288E-04 7.595238E-08 + MG2+ NZ 1 3.988288E-04 7.595238E-08 + MG2+ NE 1 3.988288E-04 7.595238E-08 + MG2+ C 1 3.909104E-04 1.072441E-07 + MG2+ CH0 1 3.909104E-04 1.072441E-07 + MG2+ CH1 1 4.359968E-04 1.128485E-07 + MG2+ CH2 1 5.553384E-04 1.271281E-07 + MG2+ CH3 1 6.688624E-04 1.433686E-07 + MG2+ CH4 1 9.275840E-04 3.422236E-07 + MG2+ CH2r 1 5.553384E-04 1.271281E-07 + MG2+ CR1 1 6.007480E-04 1.684847E-07 + MG2+ HC 1 7.433600E-05 7.180740E-09 + MG2+ H 1 0.000000E+00 0.000000E+00 + MG2+ DUM 1 0.000000E+00 0.000000E+00 + MG2+ S 1 8.073536E-04 2.111021E-07 + MG2+ CU1+ 1 1.652360E-04 4.179424E-09 + MG2+ CU2+ 1 1.652360E-04 4.179424E-09 + MG2+ FE 1 0.000000E+00 0.000000E+00 + MG2+ ZN2+ 1 1.652360E-04 5.672201E-09 + MG2+ MG2+ 1 6.528640E-05 3.408224E-09 + CA2+ O 1 1.507652E-03 6.076783E-07 + CA2+ OM 1 1.507652E-03 6.076783E-07 + CA2+ OA 1 1.507652E-03 7.939125E-07 + CA2+ OE 1 1.507652E-03 7.939125E-07 + CA2+ OW 1 1.621772E-03 1.145351E-06 + CA2+ N 1 1.564712E-03 9.181157E-07 + CA2+ NT 1 1.564712E-03 9.181157E-07 + CA2+ NL 1 1.564712E-03 9.181157E-07 + CA2+ NR 1 1.564712E-03 9.181157E-07 + CA2+ NZ 1 1.564712E-03 9.181157E-07 + CA2+ NE 1 1.564712E-03 9.181157E-07 + CA2+ C 1 1.533646E-03 1.296371E-06 + CA2+ CH0 1 1.533646E-03 1.296371E-06 + CA2+ CH1 1 1.710532E-03 1.364118E-06 + CA2+ CH2 1 2.178741E-03 1.536730E-06 + CA2+ CH3 1 2.624126E-03 1.733045E-06 + CA2+ CH4 1 3.639160E-03 4.136813E-06 + CA2+ CH2r 1 2.178741E-03 1.536730E-06 + CA2+ CR1 1 2.356895E-03 2.036650E-06 + CA2+ HC 1 2.916400E-04 8.680110E-08 + CA2+ H 1 0.000000E+00 0.000000E+00 + CA2+ DUM 1 0.000000E+00 0.000000E+00 + CA2+ S 1 3.167464E-03 2.551811E-06 + CA2+ CU1+ 1 6.482650E-04 5.052106E-08 + CA2+ CU2+ 1 6.482650E-04 5.052106E-08 + CA2+ FE 1 0.000000E+00 0.000000E+00 + CA2+ ZN2+ 1 6.482650E-04 6.856581E-08 + CA2+ MG2+ 1 2.561360E-04 4.119877E-08 + CA2+ CA2+ 1 1.004890E-03 4.980125E-07 + P O 1 5.773784E-03 4.056642E-06 + P OM 1 5.773784E-03 4.056642E-06 + P OA 1 5.773784E-03 5.299875E-06 + P OE 1 5.773784E-03 5.299875E-06 + P OW 1 6.210824E-03 7.645953E-06 + P N 1 5.992304E-03 6.129011E-06 + P NT 1 5.992304E-03 6.129011E-06 + P NL 1 5.992304E-03 6.129011E-06 + P NR 1 5.992304E-03 6.129011E-06 + P NZ 1 5.992304E-03 6.129011E-06 + P NE 1 5.992304E-03 6.129011E-06 + P C 1 5.873332E-03 8.654107E-06 + P CH0 1 5.873332E-03 8.654107E-06 + P CH1 1 6.550744E-03 9.106363E-06 + P CH2 1 8.343822E-03 1.025866E-05 + P CH3 1 1.004949E-02 1.156919E-05 + P CH4 1 1.393672E-02 2.761588E-05 + P CH2r 1 8.343822E-03 1.025866E-05 + P CR1 1 9.026090E-03 1.359595E-05 + P HC 1 1.116880E-03 5.794530E-07 + P H 1 0.000000E+00 0.000000E+00 + P DUM 1 0.000000E+00 0.000000E+00 + P S 1 1.213029E-02 1.703498E-05 + P CU1+ 1 2.482630E-03 3.372605E-07 + P CU2+ 1 2.482630E-03 3.372605E-07 + P FE 1 0.000000E+00 0.000000E+00 + P ZN2+ 1 2.482630E-03 4.577208E-07 + P MG2+ 1 9.809120E-04 2.750282E-07 + P CA2+ 1 3.848380E-03 3.324553E-06 + P P 1 1.473796E-02 2.219352E-05 + AR O 1 3.764374E-03 2.702132E-06 + AR OM 1 3.764374E-03 2.702132E-06 + AR OA 1 3.764374E-03 3.530250E-06 + AR OE 1 3.764374E-03 3.530250E-06 + AR OW 1 4.049314E-03 5.092974E-06 + AR N 1 3.906844E-03 4.082538E-06 + AR NT 1 3.906844E-03 4.082538E-06 + AR NL 1 3.906844E-03 4.082538E-06 + AR NR 1 3.906844E-03 4.082538E-06 + AR NZ 1 3.906844E-03 4.082538E-06 + AR NE 1 3.906844E-03 4.082538E-06 + AR C 1 3.829277E-03 5.764506E-06 + AR CH0 1 3.829277E-03 5.764506E-06 + AR CH1 1 4.270934E-03 6.065754E-06 + AR CH2 1 5.439979E-03 6.833298E-06 + AR CH3 1 6.552037E-03 7.706244E-06 + AR CH4 1 9.086420E-03 1.839496E-05 + AR CH2r 1 5.439979E-03 6.833298E-06 + AR CR1 1 5.884802E-03 9.056268E-06 + AR HC 1 7.281800E-04 3.859740E-07 + AR H 1 0.000000E+00 0.000000E+00 + AR DUM 1 0.000000E+00 0.000000E+00 + AR S 1 7.908668E-03 1.134701E-05 + AR CU1+ 1 1.618617E-03 2.246494E-07 + AR CU2+ 1 1.618617E-03 2.246494E-07 + AR FE 1 0.000000E+00 0.000000E+00 + AR ZN2+ 1 1.618617E-03 3.048881E-07 + AR MG2+ 1 6.395320E-04 1.831964E-07 + AR CA2+ 1 2.509055E-03 2.214487E-06 + AR P 1 9.608810E-03 1.478312E-05 + AR AR 1 6.264723E-03 9.847044E-06 + F O 1 1.632259E-03 7.510514E-07 + F OM 1 1.632259E-03 7.510514E-07 + F OA 1 1.632259E-03 9.812250E-07 + F OE 1 1.632259E-03 9.812250E-07 + F OW 1 1.755811E-03 1.415581E-06 + F N 1 1.694035E-03 1.134732E-06 + F NT 1 1.694035E-03 1.134732E-06 + F NL 1 1.694035E-03 1.134732E-06 + F NR 1 1.694035E-03 1.134732E-06 + F NZ 1 1.694035E-03 1.134732E-06 + F NE 1 1.694035E-03 1.134732E-06 + F C 1 1.660402E-03 1.602231E-06 + F CH0 1 1.660402E-03 1.602231E-06 + F CH1 1 1.851907E-03 1.685963E-06 + F CH2 1 2.358814E-03 1.899300E-06 + F CH3 1 2.841010E-03 2.141933E-06 + F CH4 1 3.939936E-03 5.112836E-06 + F CH2r 1 2.358814E-03 1.899300E-06 + F CR1 1 2.551692E-03 2.517169E-06 + F HC 1 3.157440E-04 1.072806E-07 + F H 1 0.000000E+00 0.000000E+00 + F DUM 1 0.000000E+00 0.000000E+00 + F S 1 3.429254E-03 3.153875E-06 + F CU1+ 1 7.018440E-04 6.244080E-08 + F CU2+ 1 7.018440E-04 6.244080E-08 + F FE 1 0.000000E+00 0.000000E+00 + F ZN2+ 1 7.018440E-04 8.474295E-08 + F MG2+ 1 2.773056E-04 5.091904E-08 + F CA2+ 1 1.087944E-03 6.155115E-07 + F P 1 4.166448E-03 4.108934E-06 + F AR 1 2.716428E-03 2.736964E-06 + F F 1 1.177862E-03 7.607328E-07 + CL O 1 4.452567E-03 3.367762E-06 + CL OM 1 4.452567E-03 3.367762E-06 + CL OA 1 4.452567E-03 4.399875E-06 + CL OE 1 4.452567E-03 4.399875E-06 + CL OW 1 4.789599E-03 6.347553E-06 + CL N 1 4.621083E-03 5.088211E-06 + CL NT 1 4.621083E-03 5.088211E-06 + CL NL 1 4.621083E-03 5.088211E-06 + CL NR 1 4.621083E-03 5.088211E-06 + CL NZ 1 4.621083E-03 5.088211E-06 + CL NE 1 4.621083E-03 5.088211E-06 + CL C 1 4.529336E-03 7.184507E-06 + CL CH0 1 4.529336E-03 7.184507E-06 + CL CH1 1 5.051735E-03 7.559963E-06 + CL CH2 1 6.434503E-03 8.516580E-06 + CL CH3 1 7.749864E-03 9.604563E-06 + CL CH4 1 1.074758E-02 2.292628E-05 + CL CH2r 1 6.434503E-03 8.516580E-06 + CL CR1 1 6.960647E-03 1.128715E-05 + CL HC 1 8.613040E-04 4.810530E-07 + CL H 1 0.000000E+00 0.000000E+00 + CL DUM 1 0.000000E+00 0.000000E+00 + CL S 1 9.354510E-03 1.414218E-05 + CL CU1+ 1 1.914529E-03 2.799885E-07 + CL CU2+ 1 1.914529E-03 2.799885E-07 + CL FE 1 0.000000E+00 0.000000E+00 + CL ZN2+ 1 1.914529E-03 3.799928E-07 + CL MG2+ 1 7.564496E-04 2.283242E-07 + CL CA2+ 1 2.967754E-03 2.759993E-06 + CL P 1 1.136547E-02 1.842472E-05 + CL AR 1 7.410023E-03 1.227272E-05 + CL F 1 3.213038E-03 3.411174E-06 + CL CL 1 8.764704E-03 1.529592E-05 + BR O 1 7.909228E-03 6.968021E-06 + BR OM 1 7.909228E-03 6.968021E-06 + BR OA 1 7.909228E-03 9.103500E-06 + BR OE 1 7.909228E-03 9.103500E-06 + BR OW 1 8.507908E-03 1.313332E-05 + BR N 1 8.208568E-03 1.052769E-05 + BR NT 1 8.208568E-03 1.052769E-05 + BR NL 1 8.208568E-03 1.052769E-05 + BR NR 1 8.208568E-03 1.052769E-05 + BR NZ 1 8.208568E-03 1.052769E-05 + BR NE 1 8.208568E-03 1.052769E-05 + BR C 1 8.045594E-03 1.486500E-05 + BR CH0 1 8.045594E-03 1.486500E-05 + BR CH1 1 8.973548E-03 1.564184E-05 + BR CH2 1 1.142980E-02 1.762111E-05 + BR CH3 1 1.376631E-02 1.987219E-05 + BR CH4 1 1.909124E-02 4.743530E-05 + BR CH2r 1 1.142980E-02 1.762111E-05 + BR CR1 1 1.236441E-02 2.335351E-05 + BR HC 1 1.529960E-03 9.953160E-07 + BR H 1 0.000000E+00 0.000000E+00 + BR DUM 1 0.000000E+00 0.000000E+00 + BR S 1 1.661670E-02 2.926067E-05 + BR CU1+ 1 3.400835E-03 5.793063E-07 + BR CU2+ 1 3.400835E-03 5.793063E-07 + BR FE 1 0.000000E+00 0.000000E+00 + BR ZN2+ 1 3.400835E-03 7.862187E-07 + BR MG2+ 1 1.343704E-03 4.724110E-07 + BR CA2+ 1 5.271710E-03 5.710524E-06 + BR P 1 2.018882E-02 3.812141E-05 + BR AR 1 1.316265E-02 2.539270E-05 + BR F 1 5.707416E-03 7.057842E-06 + BR CL 1 1.556901E-02 3.164781E-05 + BR BR 1 2.765569E-02 6.548046E-05 + CMet O 1 4.480628E-03 3.788840E-06 + CMet OM 1 4.480628E-03 3.788840E-06 + CMet OA 1 4.480628E-03 4.950000E-06 + CMet OE 1 4.480628E-03 4.950000E-06 + CMet OW 1 4.819784E-03 7.141200E-06 + CMet N 1 4.650206E-03 5.724400E-06 + CMet NT 1 4.650206E-03 5.724400E-06 + CMet NL 1 4.650206E-03 5.724400E-06 + CMet NR 1 4.650206E-03 5.724400E-06 + CMet NZ 1 4.650206E-03 5.724400E-06 + CMet NE 1 4.650206E-03 5.724400E-06 + CMet C 1 4.557880E-03 8.082800E-06 + CMet CH0 1 4.557880E-03 8.082800E-06 + CMet CH1 1 5.083572E-03 8.505200E-06 + CMet CH2 1 6.475053E-03 9.581424E-06 + CMet CH3 1 7.798704E-03 1.080544E-05 + CMet CH4 1 1.081531E-02 2.579280E-05 + CMet CH2r 1 6.475053E-03 9.581424E-06 + CMet CR1 1 7.004514E-03 1.269840E-05 + CMet HC 1 8.667320E-04 5.412000E-07 + CMet H 1 0.000000E+00 0.000000E+00 + CMet DUM 1 0.000000E+00 0.000000E+00 + CMet S 1 9.413463E-03 1.591040E-05 + CMet CU1+ 1 1.926594E-03 3.149960E-07 + CMet CU2+ 1 1.926594E-03 3.149960E-07 + CMet FE 1 0.000000E+00 0.000000E+00 + CMet ZN2+ 1 1.926594E-03 4.275040E-07 + CMet MG2+ 1 7.612168E-04 2.568720E-07 + CMet CA2+ 1 2.986457E-03 3.105080E-06 + CMet P 1 1.143709E-02 2.072840E-05 + CMet AR 1 7.456722E-03 1.380720E-05 + CMet F 1 3.233287E-03 3.837680E-06 + CMet CL 1 8.819940E-03 1.720840E-05 + CMet BR 1 1.566712E-02 3.560480E-05 + CMet CMet 1 8.875524E-03 1.936000E-05 + OMet O 1 2.261954E-03 1.313178E-06 + OMet OM 1 2.261954E-03 1.313178E-06 + OMet OA 1 2.261954E-03 1.715625E-06 + OMet OE 1 2.261954E-03 1.715625E-06 + OMet OW 1 2.433170E-03 2.475075E-06 + OMet N 1 2.347562E-03 1.984025E-06 + OMet NT 1 2.347562E-03 1.984025E-06 + OMet NL 1 2.347562E-03 1.984025E-06 + OMet NR 1 2.347562E-03 1.984025E-06 + OMet NZ 1 2.347562E-03 1.984025E-06 + OMet NE 1 2.347562E-03 1.984025E-06 + OMet C 1 2.300953E-03 2.801425E-06 + OMet CH0 1 2.300953E-03 2.801425E-06 + OMet CH1 1 2.566338E-03 2.947825E-06 + OMet CH2 1 3.268799E-03 3.320835E-06 + OMet CH3 1 3.937017E-03 3.745068E-06 + OMet CH4 1 5.459888E-03 8.939550E-06 + OMet CH2r 1 3.268799E-03 3.320835E-06 + OMet CR1 1 3.536086E-03 4.401150E-06 + OMet HC 1 4.375520E-04 1.875750E-07 + OMet H 1 0.000000E+00 0.000000E+00 + OMet DUM 1 0.000000E+00 0.000000E+00 + OMet S 1 4.752195E-03 5.514400E-06 + OMet CU1+ 1 9.726020E-04 1.091748E-07 + OMet CU2+ 1 9.726020E-04 1.091748E-07 + OMet FE 1 0.000000E+00 0.000000E+00 + OMet ZN2+ 1 9.726020E-04 1.481690E-07 + OMet MG2+ 1 3.842848E-04 8.902950E-08 + OMet CA2+ 1 1.507652E-03 1.076193E-06 + OMet P 1 5.773784E-03 7.184275E-06 + OMet AR 1 3.764374E-03 4.785450E-06 + OMet F 1 1.632259E-03 1.330105E-06 + OMet CL 1 4.452567E-03 5.964275E-06 + OMet BR 1 7.909228E-03 1.234030E-05 + OMet CMet 1 4.480628E-03 6.710000E-06 + OMet OMet 1 2.261954E-03 2.325625E-06 + NA+ O 1 4.222948E-04 2.324970E-07 + NA+ OM 1 4.222948E-04 2.324970E-07 + NA+ OA 1 4.222948E-04 3.037500E-07 + NA+ OE 1 4.222948E-04 3.037500E-07 + NA+ OW 1 4.542599E-04 4.382100E-07 + NA+ N 1 4.382773E-04 3.512700E-07 + NA+ NT 1 4.382773E-04 3.512700E-07 + NA+ NL 1 4.382773E-04 3.512700E-07 + NA+ NR 1 4.382773E-04 3.512700E-07 + NA+ NZ 1 4.382773E-04 3.512700E-07 + NA+ NE 1 4.382773E-04 3.512700E-07 + NA+ C 1 4.295757E-04 4.959900E-07 + NA+ CH0 1 4.295757E-04 4.959900E-07 + NA+ CH1 1 4.791216E-04 5.219100E-07 + NA+ CH2 1 6.102674E-04 5.879510E-07 + NA+ CH3 1 7.350202E-04 6.630611E-07 + NA+ CH4 1 1.019332E-03 1.582740E-06 + NA+ CH2r 1 6.102674E-04 5.879510E-07 + NA+ CR1 1 6.601685E-04 7.792200E-07 + NA+ HC 1 8.168864E-05 3.321000E-08 + NA+ H 1 0.000000E+00 0.000000E+00 + NA+ DUM 1 0.000000E+00 0.000000E+00 + NA+ S 1 8.872097E-04 9.763200E-07 + NA+ CU1+ 1 1.815796E-04 1.932930E-08 + NA+ CU2+ 1 1.815796E-04 1.932930E-08 + NA+ FE 1 0.000000E+00 0.000000E+00 + NA+ ZN2+ 1 1.815796E-04 2.623320E-08 + NA+ MG2+ 1 7.174394E-05 1.576260E-08 + NA+ CA2+ 1 2.814706E-04 1.905390E-07 + NA+ P 1 1.077935E-03 1.271970E-06 + NA+ AR 1 7.027887E-04 8.472600E-07 + NA+ F 1 3.047341E-04 2.354940E-07 + NA+ CL 1 8.312707E-04 1.055970E-06 + NA+ BR 1 1.476611E-03 2.184840E-06 + NA+ CMet 1 8.365094E-04 1.188000E-06 + NA+ OMet 1 4.222948E-04 4.117500E-07 + NA+ NA+ 1 7.884019E-05 7.290000E-08 + CL- O 1 5.382841E-03 6.695914E-06 + CL- OM 1 5.382841E-03 6.695914E-06 + CL- OA 1 5.382841E-03 8.748000E-06 + CL- OE 1 5.382841E-03 8.748000E-06 + CL- OW 1 5.790289E-03 1.262045E-05 + CL- N 1 5.586565E-03 1.011658E-05 + CL- NT 1 5.586565E-03 1.011658E-05 + CL- NL 1 5.586565E-03 1.011658E-05 + CL- NR 1 5.586565E-03 1.011658E-05 + CL- NZ 1 5.586565E-03 1.011658E-05 + CL- NE 1 5.586565E-03 1.011658E-05 + CL- C 1 5.475648E-03 1.428451E-05 + CL- CH0 1 5.475648E-03 1.428451E-05 + CL- CH1 1 6.107193E-03 1.503101E-05 + CL- CH2 1 7.778861E-03 1.693299E-05 + CL- CH3 1 9.369040E-03 1.909616E-05 + CL- CH4 1 1.299306E-02 4.558291E-05 + CL- CH2r 1 7.778861E-03 1.693299E-05 + CL- CR1 1 8.414933E-03 2.244154E-05 + CL- HC 1 1.041256E-03 9.564480E-07 + CL- H 1 0.000000E+00 0.000000E+00 + CL- DUM 1 0.000000E+00 0.000000E+00 + CL- S 1 1.130895E-02 2.811802E-05 + CL- CU1+ 1 2.314531E-03 5.566838E-07 + CL- CU2+ 1 2.314531E-03 5.566838E-07 + CL- FE 1 0.000000E+00 0.000000E+00 + CL- ZN2+ 1 2.314531E-03 7.555162E-07 + CL- MG2+ 1 9.144944E-04 4.539629E-07 + CL- CA2+ 1 3.587806E-03 5.487523E-06 + CL- P 1 1.374005E-02 3.663274E-05 + CL- AR 1 8.958197E-03 2.440109E-05 + CL- F 1 3.884338E-03 6.782227E-06 + CL- CL 1 1.059591E-02 3.041194E-05 + CL- BR 1 1.882183E-02 6.292339E-05 + CL- CMet 1 1.066269E-02 3.421440E-05 + CL- OMet 1 5.382841E-03 1.185840E-05 + CL- NA+ 1 1.004948E-03 2.099520E-06 + CL- CL- 1 1.280971E-02 6.046618E-05 + CChl O 1 2.439448E-03 1.735978E-06 + CChl OM 1 2.439448E-03 1.735978E-06 + CChl OA 1 2.439448E-03 2.268000E-06 + CChl OE 1 2.439448E-03 2.268000E-06 + CChl OW 1 2.624099E-03 3.271968E-06 + CChl N 1 2.531773E-03 2.622816E-06 + CChl NT 1 2.531773E-03 2.622816E-06 + CChl NL 1 2.531773E-03 2.622816E-06 + CChl NR 1 2.531773E-03 2.622816E-06 + CChl NZ 1 2.531773E-03 2.622816E-06 + CChl NE 1 2.531773E-03 2.622816E-06 + CChl C 1 2.481507E-03 3.703392E-06 + CChl CH0 1 2.481507E-03 3.703392E-06 + CChl CH1 1 2.767716E-03 3.896928E-06 + CChl CH2 1 3.525299E-03 4.390034E-06 + CChl CH3 1 4.245952E-03 4.950857E-06 + CChl CH4 1 5.888322E-03 1.181779E-05 + CChl CH2r 1 3.525299E-03 4.390034E-06 + CChl CR1 1 3.813560E-03 5.818176E-06 + CChl HC 1 4.718864E-04 2.479680E-07 + CChl H 1 0.000000E+00 0.000000E+00 + CChl DUM 1 0.000000E+00 0.000000E+00 + CChl S 1 5.125097E-03 7.289856E-06 + CChl CU1+ 1 1.048921E-03 1.443254E-07 + CChl CU2+ 1 1.048921E-03 1.443254E-07 + CChl FE 1 0.000000E+00 0.000000E+00 + CChl ZN2+ 1 1.048921E-03 1.958746E-07 + CChl MG2+ 1 4.144394E-04 1.176941E-07 + CChl CA2+ 1 1.625956E-03 1.422691E-06 + CChl P 1 6.226849E-03 9.497376E-06 + CChl AR 1 4.059762E-03 6.326208E-06 + CChl F 1 1.760341E-03 1.758355E-06 + CChl CL 1 4.801957E-03 7.884576E-06 + CChl BR 1 8.529860E-03 1.631347E-05 + CChl CMet 1 4.832219E-03 8.870400E-06 + CChl OMet 1 2.439448E-03 3.074400E-06 + CChl NA+ 1 4.554319E-04 5.443200E-07 + CChl CL- 1 5.805229E-03 1.567642E-05 + CChl CChl 1 2.630869E-03 4.064256E-06 + CLChl O 1 4.334666E-03 3.194767E-06 + CLChl OM 1 4.334666E-03 3.194767E-06 + CLChl OA 1 4.334666E-03 4.173862E-06 + CLChl OE 1 4.334666E-03 4.173862E-06 + CLChl OW 1 4.662774E-03 6.021492E-06 + CLChl N 1 4.498720E-03 4.826840E-06 + CLChl NT 1 4.498720E-03 4.826840E-06 + CLChl NL 1 4.498720E-03 4.826840E-06 + CLChl NR 1 4.498720E-03 4.826840E-06 + CLChl NZ 1 4.498720E-03 4.826840E-06 + CLChl NE 1 4.498720E-03 4.826840E-06 + CLChl C 1 4.409402E-03 6.815454E-06 + CLChl CH0 1 4.409402E-03 6.815454E-06 + CLChl CH1 1 4.917968E-03 7.171623E-06 + CLChl CH2 1 6.264121E-03 8.079100E-06 + CLChl CH3 1 7.544652E-03 9.111197E-06 + CLChl CH4 1 1.046299E-02 2.174861E-05 + CLChl CH2r 1 6.264121E-03 8.079100E-06 + CLChl CR1 1 6.776333E-03 1.070735E-05 + CLChl HC 1 8.384972E-04 4.563423E-07 + CLChl H 1 0.000000E+00 0.000000E+00 + CLChl DUM 1 0.000000E+00 0.000000E+00 + CLChl S 1 9.106809E-03 1.341572E-05 + CLChl CU1+ 1 1.863833E-03 2.656061E-07 + CLChl CU2+ 1 1.863833E-03 2.656061E-07 + CLChl FE 1 0.000000E+00 0.000000E+00 + CLChl ZN2+ 1 1.863833E-03 3.604733E-07 + CLChl MG2+ 1 7.364193E-04 2.165956E-07 + CLChl CA2+ 1 2.889170E-03 2.618218E-06 + CLChl P 1 1.106452E-02 1.747828E-05 + CLChl AR 1 7.213810E-03 1.164229E-05 + CLChl F 1 3.127959E-03 3.235949E-06 + CLChl CL 1 8.532620E-03 1.451020E-05 + CLChl BR 1 1.515675E-02 3.002213E-05 + CLChl CMet 1 8.586394E-03 1.632444E-05 + CLChl OMet 1 4.334666E-03 5.657903E-06 + CLChl NA+ 1 8.092592E-04 1.001727E-06 + CLChl CL- 1 1.031534E-02 2.884974E-05 + CLChl CChl 1 4.675400E-03 7.481300E-06 + CLChl CLChl 1 8.306682E-03 1.376484E-05 + HChl O 1 2.920184E-04 5.646577E-08 + HChl OM 1 2.920184E-04 5.646577E-08 + HChl OA 1 2.920184E-04 7.377075E-08 + HChl OE 1 2.920184E-04 7.377075E-08 + HChl OW 1 3.141224E-04 1.064266E-07 + HChl N 1 3.030704E-04 8.531177E-08 + HChl NT 1 3.030704E-04 8.531177E-08 + HChl NL 1 3.030704E-04 8.531177E-08 + HChl NR 1 3.030704E-04 8.531177E-08 + HChl NZ 1 3.030704E-04 8.531177E-08 + HChl NE 1 3.030704E-04 8.531177E-08 + HChl C 1 2.970532E-04 1.204594E-07 + HChl CH0 1 2.970532E-04 1.204594E-07 + HChl CH1 1 3.313144E-04 1.267545E-07 + HChl CH2 1 4.220022E-04 1.427937E-07 + HChl CH3 1 5.082692E-04 1.610354E-07 + HChl CH4 1 7.048720E-04 3.843948E-07 + HChl CH2r 1 4.220022E-04 1.427937E-07 + HChl CR1 1 4.565090E-04 1.892466E-07 + HChl HC 1 5.648800E-05 8.065602E-09 + HChl H 1 0.000000E+00 0.000000E+00 + HChl DUM 1 0.000000E+00 0.000000E+00 + HChl S 1 6.135088E-04 2.371156E-07 + HChl CU1+ 1 1.255630E-04 4.694443E-09 + HChl CU2+ 1 1.255630E-04 4.694443E-09 + HChl FE 1 0.000000E+00 0.000000E+00 + HChl ZN2+ 1 1.255630E-04 6.371170E-09 + HChl MG2+ 1 4.961120E-05 3.828210E-09 + HChl CA2+ 1 1.946380E-04 4.627557E-08 + HChl P 1 7.453960E-04 3.089191E-07 + HChl AR 1 4.859810E-04 2.057712E-07 + HChl F 1 2.107248E-04 5.719364E-08 + HChl CL 1 5.748268E-04 2.564599E-07 + HChl BR 1 1.021082E-03 5.306248E-07 + HChl CMet 1 5.784494E-04 2.885256E-07 + HChl OMet 1 2.920184E-04 1.000004E-07 + HChl NA+ 1 5.451829E-05 1.770498E-08 + HChl CL- 1 6.949252E-04 5.099034E-07 + HChl CChl 1 3.622000E-04 1.745000E-07 + HChl CLChl 1 6.493000E-04 3.266000E-07 + HChl HChl 1 3.769960E-05 4.299949E-09 + SDmso O 1 4.887741E-03 3.992576E-06 + SDmso OM 1 4.887741E-03 3.992576E-06 + SDmso OA 1 4.887741E-03 5.216175E-06 + SDmso OE 1 4.887741E-03 5.216175E-06 + SDmso OW 1 5.257713E-03 7.525202E-06 + SDmso N 1 5.072727E-03 6.032217E-06 + SDmso NT 1 5.072727E-03 6.032217E-06 + SDmso NL 1 5.072727E-03 6.032217E-06 + SDmso NR 1 5.072727E-03 6.032217E-06 + SDmso NZ 1 5.072727E-03 6.032217E-06 + SDmso NE 1 5.072727E-03 6.032217E-06 + SDmso C 1 4.972013E-03 8.517434E-06 + SDmso CH0 1 4.972013E-03 8.517434E-06 + SDmso CH1 1 5.545469E-03 8.962548E-06 + SDmso CH2 1 7.063382E-03 1.009664E-05 + SDmso CH3 1 8.507301E-03 1.138648E-05 + SDmso CH4 1 1.179800E-02 2.717975E-05 + SDmso CH2r 1 7.063382E-03 1.009664E-05 + SDmso CR1 1 7.640949E-03 1.338123E-05 + SDmso HC 1 9.454840E-04 5.703018E-07 + SDmso H 1 0.000000E+00 0.000000E+00 + SDmso DUM 1 0.000000E+00 0.000000E+00 + SDmso S 1 1.026878E-02 1.676595E-05 + SDmso CU1+ 1 2.101647E-03 3.319342E-07 + SDmso CU2+ 1 2.101647E-03 3.319342E-07 + SDmso FE 1 0.000000E+00 0.000000E+00 + SDmso ZN2+ 1 2.101647E-03 4.504921E-07 + SDmso MG2+ 1 8.303816E-04 2.706847E-07 + SDmso CA2+ 1 3.257809E-03 3.272049E-06 + SDmso P 1 1.247628E-02 2.184302E-05 + SDmso AR 1 8.134245E-03 1.454965E-05 + SDmso F 1 3.527066E-03 4.044043E-06 + SDmso CL 1 9.621327E-03 1.813374E-05 + SDmso BR 1 1.709065E-02 3.751937E-05 + SDmso CMet 1 9.681962E-03 2.040104E-05 + SDmso OMet 1 4.887741E-03 7.070815E-06 + SDmso NA+ 1 9.125154E-04 1.251882E-06 + SDmso CL- 1 1.163151E-02 3.605420E-05 + SDmso CChl 1 5.271279E-03 9.347386E-06 + SDmso CLChl 1 9.366561E-03 1.720225E-05 + SDmso HChl 1 6.310078E-04 3.040404E-07 + SDmso SDmso 1 1.056167E-02 2.149806E-05 + CDmso O 1 4.663258E-03 4.444998E-06 + CDmso OM 1 4.663258E-03 4.444998E-06 + CDmso OA 1 4.663258E-03 5.807250E-06 + CDmso OE 1 4.663258E-03 5.807250E-06 + CDmso OW 1 5.016238E-03 8.377926E-06 + CDmso N 1 4.839748E-03 6.715762E-06 + CDmso NT 1 4.839748E-03 6.715762E-06 + CDmso NL 1 4.839748E-03 6.715762E-06 + CDmso NR 1 4.839748E-03 6.715762E-06 + CDmso NZ 1 4.839748E-03 6.715762E-06 + CDmso NE 1 4.839748E-03 6.715762E-06 + CDmso C 1 4.743659E-03 9.482594E-06 + CDmso CH0 1 4.743659E-03 9.482594E-06 + CDmso CH1 1 5.290778E-03 9.978146E-06 + CDmso CH2 1 6.738976E-03 1.124075E-05 + CDmso CH3 1 8.116579E-03 1.267675E-05 + CDmso CH4 1 1.125614E-02 3.025964E-05 + CDmso CH2r 1 6.738976E-03 1.124075E-05 + CDmso CR1 1 7.290017E-03 1.489753E-05 + CDmso HC 1 9.020600E-04 6.349260E-07 + CDmso H 1 0.000000E+00 0.000000E+00 + CDmso DUM 1 0.000000E+00 0.000000E+00 + CDmso S 1 9.797156E-03 1.866579E-05 + CDmso CU1+ 1 2.005122E-03 3.695476E-07 + CDmso CU2+ 1 2.005122E-03 3.695476E-07 + CDmso FE 1 0.000000E+00 0.000000E+00 + CDmso ZN2+ 1 2.005122E-03 5.015399E-07 + CDmso MG2+ 1 7.922440E-04 3.013576E-07 + CDmso CA2+ 1 3.108185E-03 3.642823E-06 + CDmso P 1 1.190327E-02 2.431818E-05 + CDmso AR 1 7.760657E-03 1.619836E-05 + CDmso F 1 3.365076E-03 4.502296E-06 + CDmso CL 1 9.179441E-03 2.018858E-05 + CDmso BR 1 1.630571E-02 4.177090E-05 + CDmso CMet 1 9.237291E-03 2.271280E-05 + CDmso OMet 1 4.663258E-03 7.872050E-06 + CDmso NA+ 1 8.706056E-04 1.393740E-06 + CDmso CL- 1 1.109730E-02 4.013971E-05 + CDmso CChl 1 5.029181E-03 1.040659E-05 + CDmso CLChl 1 8.936375E-03 1.915154E-05 + CDmso HChl 1 6.020270E-04 3.384930E-07 + CDmso SDmso 1 1.007660E-02 2.393413E-05 + CDmso CDmso 1 9.613802E-03 2.664624E-05 + ODmso O 1 2.266329E-03 7.464531E-07 + ODmso OM 1 2.266329E-03 7.464531E-07 + ODmso OA 1 2.266329E-03 9.752175E-07 + ODmso OE 1 2.266329E-03 9.752175E-07 + ODmso OW 1 2.437876E-03 1.406914E-06 + ODmso N 1 2.352103E-03 1.127785E-06 + ODmso NT 1 2.352103E-03 1.127785E-06 + ODmso NL 1 2.352103E-03 1.127785E-06 + ODmso NR 1 2.352103E-03 1.127785E-06 + ODmso NZ 1 2.352103E-03 1.127785E-06 + ODmso NE 1 2.352103E-03 1.127785E-06 + ODmso C 1 2.305404E-03 1.592422E-06 + ODmso CH0 1 2.305404E-03 1.592422E-06 + ODmso CH1 1 2.571302E-03 1.675640E-06 + ODmso CH2 1 3.275122E-03 1.887671E-06 + ODmso CH3 1 3.944633E-03 2.128819E-06 + ODmso CH4 1 5.470450E-03 5.081533E-06 + ODmso CH2r 1 3.275122E-03 1.887671E-06 + ODmso CR1 1 3.542926E-03 2.501758E-06 + ODmso HC 1 4.383984E-04 1.066238E-07 + ODmso H 1 0.000000E+00 0.000000E+00 + ODmso DUM 1 0.000000E+00 0.000000E+00 + ODmso S 1 4.761388E-03 3.134566E-06 + ODmso CU1+ 1 9.744834E-04 6.205851E-08 + ODmso CU2+ 1 9.744834E-04 6.205851E-08 + ODmso FE 1 0.000000E+00 0.000000E+00 + ODmso ZN2+ 1 9.744834E-04 8.422412E-08 + ODmso MG2+ 1 3.850282E-04 5.060729E-08 + ODmso CA2+ 1 1.510568E-03 6.117431E-07 + ODmso P 1 5.784953E-03 4.083777E-06 + ODmso AR 1 3.771656E-03 2.720207E-06 + ODmso F 1 1.635417E-03 7.560753E-07 + ODmso CL 1 4.461180E-03 3.390289E-06 + ODmso BR 1 7.924528E-03 7.014631E-06 + ODmso CMet 1 4.489295E-03 3.814184E-06 + ODmso OMet 1 2.266329E-03 1.321962E-06 + ODmso NA+ 1 4.231116E-04 2.340522E-07 + ODmso CL- 1 5.393253E-03 6.740703E-06 + ODmso CChl 1 2.444166E-03 1.747590E-06 + ODmso CLChl 1 4.343051E-03 3.216137E-06 + ODmso HChl 1 2.925833E-04 5.684348E-08 + ODmso SDmso 1 4.897196E-03 4.019283E-06 + ODmso CDmso 1 4.672279E-03 4.474731E-06 + ODmso ODmso 1 2.270713E-03 7.514463E-07 + CCl4 O 1 2.439448E-03 2.373880E-06 + CCl4 OM 1 2.439448E-03 2.373880E-06 + CCl4 OA 1 2.439448E-03 3.101400E-06 + CCl4 OE 1 2.439448E-03 3.101400E-06 + CCl4 OW 1 2.624099E-03 4.474286E-06 + CCl4 N 1 2.531773E-03 3.586597E-06 + CCl4 NT 1 2.531773E-03 3.586597E-06 + CCl4 NL 1 2.531773E-03 3.586597E-06 + CCl4 NR 1 2.531773E-03 3.586597E-06 + CCl4 NZ 1 2.531773E-03 3.586597E-06 + CCl4 NE 1 2.531773E-03 3.586597E-06 + CCl4 C 1 2.481507E-03 5.064242E-06 + CCl4 CH0 1 2.481507E-03 5.064242E-06 + CCl4 CH1 1 2.767716E-03 5.328894E-06 + CCl4 CH2 1 3.525299E-03 6.003198E-06 + CCl4 CH3 1 4.245952E-03 6.770100E-06 + CCl4 CH4 1 5.888322E-03 1.616036E-05 + CCl4 CH2r 1 3.525299E-03 6.003198E-06 + CCl4 CR1 1 3.813560E-03 7.956125E-06 + CCl4 HC 1 4.718864E-04 3.390864E-07 + CCl4 H 1 0.000000E+00 0.000000E+00 + CCl4 DUM 1 0.000000E+00 0.000000E+00 + CCl4 S 1 5.125097E-03 9.968589E-06 + CCl4 CU1+ 1 1.048921E-03 1.973593E-07 + CCl4 CU2+ 1 1.048921E-03 1.973593E-07 + CCl4 FE 1 0.000000E+00 0.000000E+00 + CCl4 ZN2+ 1 1.048921E-03 2.678507E-07 + CCl4 MG2+ 1 4.144394E-04 1.609420E-07 + CCl4 CA2+ 1 1.625956E-03 1.945474E-06 + CCl4 P 1 6.226849E-03 1.298728E-05 + CCl4 AR 1 4.059762E-03 8.650838E-06 + CCl4 F 1 1.760341E-03 2.404481E-06 + CCl4 CL 1 4.801957E-03 1.078184E-05 + CCl4 BR 1 8.529860E-03 2.230803E-05 + CCl4 CMet 1 4.832219E-03 1.212992E-05 + CCl4 OMet 1 2.439448E-03 4.204120E-06 + CCl4 NA+ 1 4.554319E-04 7.443360E-07 + CCl4 CL- 1 5.805229E-03 2.143688E-05 + CCl4 CChl 1 2.630869E-03 5.557709E-06 + CCl4 CLChl 1 4.674804E-03 1.022800E-05 + CCl4 HChl 1 3.149329E-04 1.807744E-07 + CCl4 SDmso 1 5.271279E-03 1.278218E-05 + CCl4 CDmso 1 5.029181E-03 1.423060E-05 + CCl4 ODmso 1 2.444166E-03 2.389760E-06 + CCl4 CCl4 1 2.630869E-03 7.599946E-06 + CLCl4 O 1 4.147280E-03 3.076883E-06 + CLCl4 OM 1 4.147280E-03 3.076883E-06 + CLCl4 OA 1 4.147280E-03 4.019850E-06 + CLCl4 OE 1 4.147280E-03 4.019850E-06 + CLCl4 OW 1 4.461203E-03 5.799304E-06 + CLCl4 N 1 4.304241E-03 4.648733E-06 + CLCl4 NT 1 4.304241E-03 4.648733E-06 + CLCl4 NL 1 4.304241E-03 4.648733E-06 + CLCl4 NR 1 4.304241E-03 4.648733E-06 + CLCl4 NZ 1 4.304241E-03 4.648733E-06 + CLCl4 NE 1 4.304241E-03 4.648733E-06 + CLCl4 C 1 4.218784E-03 6.563968E-06 + CLCl4 CH0 1 4.218784E-03 6.563968E-06 + CLCl4 CH1 1 4.705366E-03 6.906996E-06 + CLCl4 CH2 1 5.993325E-03 7.780987E-06 + CLCl4 CH3 1 7.218499E-03 8.775000E-06 + CLCl4 CH4 1 1.001067E-02 2.094610E-05 + CLCl4 CH2r 1 5.993325E-03 7.780987E-06 + CLCl4 CR1 1 6.483394E-03 1.031226E-05 + CLCl4 HC 1 8.022492E-04 4.395036E-07 + CLCl4 H 1 0.000000E+00 0.000000E+00 + CLCl4 DUM 1 0.000000E+00 0.000000E+00 + CLCl4 S 1 8.713124E-03 1.292069E-05 + CLCl4 CU1+ 1 1.783260E-03 2.558054E-07 + CLCl4 CU2+ 1 1.783260E-03 2.558054E-07 + CLCl4 FE 1 0.000000E+00 0.000000E+00 + CLCl4 ZN2+ 1 1.783260E-03 3.471721E-07 + CLCl4 MG2+ 1 7.045841E-04 2.086034E-07 + CLCl4 CA2+ 1 2.764272E-03 2.521607E-06 + CLCl4 P 1 1.058620E-02 1.683335E-05 + CLCl4 AR 1 6.901959E-03 1.121270E-05 + CLCl4 F 1 2.992738E-03 3.116545E-06 + CLCl4 CL 1 8.163758E-03 1.397479E-05 + CLCl4 BR 1 1.450153E-02 2.891433E-05 + CLCl4 CMet 1 8.215206E-03 1.572208E-05 + CLCl4 OMet 1 4.147280E-03 5.449130E-06 + CLCl4 NA+ 1 7.742751E-04 9.647640E-07 + CLCl4 CL- 1 9.869409E-03 2.778520E-05 + CLCl4 CChl 1 4.472714E-03 7.203571E-06 + CLCl4 CLChl 1 7.947586E-03 1.325693E-05 + CLCl4 HChl 1 5.354141E-04 2.343090E-07 + CLCl4 SDmso 1 8.961647E-03 1.656750E-05 + CLCl4 CDmso 1 8.550058E-03 1.844486E-05 + CLCl4 ODmso 1 4.155302E-03 3.097464E-06 + CLCl4 CCl4 1 4.472714E-03 9.850598E-06 + CLCl4 CLCl4 1 7.604014E-03 1.276776E-05 + FTFE O 1 1.632259E-03 8.611000E-07 + FTFE OM 1 1.632259E-03 8.611000E-07 + FTFE OA 1 1.632259E-03 1.125000E-06 + FTFE OE 1 1.632259E-03 1.125000E-06 + FTFE OW 1 1.755811E-03 1.623000E-06 + FTFE N 1 1.694035E-03 1.301000E-06 + FTFE NT 1 1.694035E-03 1.301000E-06 + FTFE NL 1 1.694035E-03 1.301000E-06 + FTFE NR 1 1.694035E-03 1.301000E-06 + FTFE NZ 1 1.694035E-03 1.301000E-06 + FTFE NE 1 1.694035E-03 1.301000E-06 + FTFE C 1 1.660402E-03 1.837000E-06 + FTFE CH0 1 1.660402E-03 1.837000E-06 + FTFE CH1 1 1.851907E-03 1.933000E-06 + FTFE CH2 1 2.358814E-03 2.177596E-06 + FTFE CH3 1 2.841010E-03 2.455782E-06 + FTFE CH4 1 3.939936E-03 5.862000E-06 + FTFE CH2r 1 2.358814E-03 2.177596E-06 + FTFE CR1 1 2.551692E-03 2.886000E-06 + FTFE HC 1 3.157440E-04 1.230000E-07 + FTFE H 1 0.000000E+00 0.000000E+00 + FTFE DUM 1 0.000000E+00 0.000000E+00 + FTFE S 1 3.429254E-03 3.616000E-06 + FTFE CU1+ 1 7.018440E-04 7.159000E-08 + FTFE CU2+ 1 7.018440E-04 7.159000E-08 + FTFE FE 1 0.000000E+00 0.000000E+00 + FTFE ZN2+ 1 7.018440E-04 9.716000E-08 + FTFE MG2+ 1 2.773056E-04 5.838000E-08 + FTFE CA2+ 1 1.087944E-03 7.057000E-07 + FTFE P 1 4.166448E-03 4.711000E-06 + FTFE AR 1 2.716428E-03 3.138000E-06 + FTFE F 1 1.177862E-03 8.722000E-07 + FTFE CL 1 3.213038E-03 3.911000E-06 + FTFE BR 1 5.707416E-03 8.092000E-06 + FTFE CMet 1 3.233287E-03 4.400000E-06 + FTFE OMet 1 1.632259E-03 1.525000E-06 + FTFE NA+ 1 3.047341E-04 2.700000E-07 + FTFE CL- 1 3.884338E-03 7.776000E-06 + FTFE CChl 1 1.760341E-03 2.016000E-06 + FTFE CLChl 1 3.127959E-03 3.710100E-06 + FTFE HChl 1 2.107248E-04 6.557400E-08 + FTFE SDmso 1 3.527066E-03 4.636600E-06 + FTFE CDmso 1 3.365076E-03 5.162000E-06 + FTFE ODmso 1 1.635417E-03 8.668600E-07 + FTFE CCl4 1 1.760341E-03 2.756800E-06 + FTFE CLCl4 1 2.992738E-03 3.573200E-06 + FTFE FTFE 1 1.177862E-03 1.000000E-06 + CTFE O 1 2.300953E-03 1.581841E-06 + CTFE OM 1 2.300953E-03 1.581841E-06 + CTFE OA 1 2.300953E-03 2.066625E-06 + CTFE OE 1 2.300953E-03 2.066625E-06 + CTFE OW 1 2.475121E-03 2.981451E-06 + CTFE N 1 2.388037E-03 2.389937E-06 + CTFE NT 1 2.388037E-03 2.389937E-06 + CTFE NL 1 2.388037E-03 2.389937E-06 + CTFE NR 1 2.388037E-03 2.389937E-06 + CTFE NZ 1 2.388037E-03 2.389937E-06 + CTFE NE 1 2.388037E-03 2.389937E-06 + CTFE C 1 2.340624E-03 3.374569E-06 + CTFE CH0 1 2.340624E-03 3.374569E-06 + CTFE CH1 1 2.610585E-03 3.550921E-06 + CTFE CH2 1 3.325157E-03 4.000245E-06 + CTFE CH3 1 4.004896E-03 4.511272E-06 + CTFE CH4 1 5.554024E-03 1.076849E-05 + CTFE CH2r 1 3.325157E-03 4.000245E-06 + CTFE CR1 1 3.597053E-03 5.301582E-06 + CTFE HC 1 4.450960E-04 2.259510E-07 + CTFE H 1 0.000000E+00 0.000000E+00 + CTFE DUM 1 0.000000E+00 0.000000E+00 + CTFE S 1 4.834130E-03 6.642592E-06 + CTFE CU1+ 1 9.893710E-04 1.315108E-07 + CTFE CU2+ 1 9.893710E-04 1.315108E-07 + CTFE FE 1 0.000000E+00 0.000000E+00 + CTFE ZN2+ 1 9.893710E-04 1.784829E-07 + CTFE MG2+ 1 3.909104E-04 1.072441E-07 + CTFE CA2+ 1 1.533646E-03 1.296371E-06 + CTFE P 1 5.873332E-03 8.654107E-06 + CTFE AR 1 3.829277E-03 5.764506E-06 + CTFE F 1 1.660402E-03 1.602231E-06 + CTFE CL 1 4.529336E-03 7.184507E-06 + CTFE BR 1 8.045594E-03 1.486500E-05 + CTFE CMet 1 4.557880E-03 8.082800E-06 + CTFE OMet 1 2.300953E-03 2.801425E-06 + CTFE NA+ 1 4.295757E-04 4.959900E-07 + CTFE CL- 1 5.475648E-03 1.428451E-05 + CTFE CChl 1 2.481507E-03 3.703392E-06 + CTFE CLChl 1 4.409402E-03 6.815454E-06 + CTFE HChl 1 2.970532E-04 1.204594E-07 + CTFE SDmso 1 4.972013E-03 8.517434E-06 + CTFE CDmso 1 4.743659E-03 9.482594E-06 + CTFE ODmso 1 2.305404E-03 1.592422E-06 + CTFE CCl4 1 2.481507E-03 5.064242E-06 + CTFE CLCl4 1 4.218784E-03 6.563968E-06 + CTFE FTFE 1 1.660402E-03 1.837000E-06 + CTFE CTFE 1 2.340624E-03 3.374569E-06 + CHTFE O 1 4.008832E-03 4.371805E-06 + CHTFE OM 1 4.008832E-03 4.371805E-06 + CHTFE OA 1 4.008832E-03 5.711625E-06 + CHTFE OE 1 4.008832E-03 5.711625E-06 + CHTFE OW 1 4.312276E-03 8.239971E-06 + CHTFE N 1 4.160554E-03 6.605177E-06 + CHTFE NT 1 4.160554E-03 6.605177E-06 + CHTFE NL 1 4.160554E-03 6.605177E-06 + CHTFE NR 1 4.160554E-03 6.605177E-06 + CHTFE NZ 1 4.160554E-03 6.605177E-06 + CHTFE NE 1 4.160554E-03 6.605177E-06 + CHTFE C 1 4.077950E-03 9.326449E-06 + CHTFE CH0 1 4.077950E-03 9.326449E-06 + CHTFE CH1 1 4.548288E-03 9.813841E-06 + CHTFE CH2 1 5.793252E-03 1.105566E-05 + CHTFE CH3 1 6.977526E-03 1.246801E-05 + CHTFE CH4 1 9.676492E-03 2.976137E-05 + CHTFE CH2r 1 5.793252E-03 1.105566E-05 + CHTFE CR1 1 6.266962E-03 1.465222E-05 + CHTFE HC 1 7.754680E-04 6.244710E-07 + CHTFE H 1 0.000000E+00 0.000000E+00 + CHTFE DUM 1 0.000000E+00 0.000000E+00 + CHTFE S 1 8.422257E-03 1.835843E-05 + CHTFE CU1+ 1 1.723731E-03 3.634624E-07 + CHTFE CU2+ 1 1.723731E-03 3.634624E-07 + CHTFE FE 1 0.000000E+00 0.000000E+00 + CHTFE ZN2+ 1 1.723731E-03 4.932813E-07 + CHTFE MG2+ 1 6.810632E-04 2.963953E-07 + CHTFE CA2+ 1 2.671993E-03 3.582839E-06 + CHTFE P 1 1.023281E-02 2.391775E-05 + CHTFE AR 1 6.671553E-03 1.593163E-05 + CHTFE F 1 2.892833E-03 4.428159E-06 + CHTFE CL 1 7.891230E-03 1.985615E-05 + CHTFE BR 1 1.401743E-02 4.108308E-05 + CHTFE CMet 1 7.940961E-03 2.233880E-05 + CHTFE OMet 1 4.008832E-03 7.742425E-06 + CHTFE NA+ 1 7.484278E-04 1.370790E-06 + CHTFE CL- 1 9.539942E-03 3.947875E-05 + CHTFE CChl 1 4.323403E-03 1.023523E-05 + CHTFE CLChl 1 7.682275E-03 1.883618E-05 + CHTFE HChl 1 5.175406E-04 3.329192E-07 + CHTFE SDmso 1 8.662483E-03 2.354002E-05 + CHTFE CDmso 1 8.264634E-03 2.620747E-05 + CHTFE ODmso 1 4.016587E-03 4.401048E-06 + CHTFE CCl4 1 4.323403E-03 1.399627E-05 + CHTFE CLCl4 1 7.350172E-03 1.814114E-05 + CHTFE FTFE 1 2.892833E-03 5.077000E-06 + CHTFE CTFE 1 4.077950E-03 9.326449E-06 + CHTFE CHTFE 1 7.104804E-03 2.577593E-05 + OTFE O 1 2.261954E-03 1.056570E-06 + OTFE OM 1 2.261954E-03 1.056570E-06 + OTFE OA 1 2.261954E-03 1.380375E-06 + OTFE OE 1 2.261954E-03 1.380375E-06 + OTFE OW 1 2.433170E-03 1.991421E-06 + OTFE N 1 2.347562E-03 1.596327E-06 + OTFE NT 1 2.347562E-03 1.596327E-06 + OTFE NL 1 2.347562E-03 1.596327E-06 + OTFE NR 1 2.347562E-03 1.596327E-06 + OTFE NZ 1 2.347562E-03 1.596327E-06 + OTFE NE 1 2.347562E-03 1.596327E-06 + OTFE C 1 2.300953E-03 2.253999E-06 + OTFE CH0 1 2.300953E-03 2.253999E-06 + OTFE CH1 1 2.566338E-03 2.371791E-06 + OTFE CH2 1 3.268799E-03 2.671911E-06 + OTFE CH3 1 3.937017E-03 3.013245E-06 + OTFE CH4 1 5.459888E-03 7.192674E-06 + OTFE CH2r 1 3.268799E-03 2.671911E-06 + OTFE CR1 1 3.536086E-03 3.541122E-06 + OTFE HC 1 4.375520E-04 1.509210E-07 + OTFE H 1 0.000000E+00 0.000000E+00 + OTFE DUM 1 0.000000E+00 0.000000E+00 + OTFE S 1 4.752195E-03 4.436832E-06 + OTFE CU1+ 1 9.726020E-04 8.784093E-08 + OTFE CU2+ 1 9.726020E-04 8.784093E-08 + OTFE FE 1 0.000000E+00 0.000000E+00 + OTFE ZN2+ 1 9.726020E-04 1.192153E-07 + OTFE MG2+ 1 3.842848E-04 7.163226E-08 + OTFE CA2+ 1 1.507652E-03 8.658939E-07 + OTFE P 1 5.773784E-03 5.780397E-06 + OTFE AR 1 3.764374E-03 3.850326E-06 + OTFE F 1 1.632259E-03 1.070189E-06 + OTFE CL 1 4.452567E-03 4.798797E-06 + OTFE BR 1 7.909228E-03 9.928884E-06 + OTFE CMet 1 4.480628E-03 5.398800E-06 + OTFE OMet 1 2.261954E-03 1.871175E-06 + OTFE NA+ 1 4.222948E-04 3.312900E-07 + OTFE CL- 1 5.382841E-03 9.541152E-06 + OTFE CChl 1 2.439448E-03 2.473632E-06 + OTFE CLChl 1 4.334666E-03 4.552293E-06 + OTFE HChl 1 2.920184E-04 8.045930E-08 + OTFE SDmso 1 4.887741E-03 5.689108E-06 + OTFE CDmso 1 4.663258E-03 6.333774E-06 + OTFE ODmso 1 2.266329E-03 1.063637E-06 + OTFE CCl4 1 2.439448E-03 3.382594E-06 + OTFE CLCl4 1 4.147280E-03 4.384316E-06 + OTFE FTFE 1 1.632259E-03 1.227000E-06 + OTFE CTFE 1 2.300953E-03 2.253999E-06 + OTFE CHTFE 1 4.008832E-03 6.229479E-06 + OTFE OTFE 1 2.261954E-03 1.505529E-06 + CUrea O 1 3.324729E-03 3.174359E-06 + CUrea OM 1 3.324729E-03 3.174359E-06 + CUrea OA 1 3.324729E-03 4.147200E-06 + CUrea OE 1 3.324729E-03 4.147200E-06 + CUrea OW 1 3.576391E-03 5.983027E-06 + CUrea N 1 3.450560E-03 4.796006E-06 + CUrea NT 1 3.450560E-03 4.796006E-06 + CUrea NL 1 3.450560E-03 4.796006E-06 + CUrea NR 1 3.450560E-03 4.796006E-06 + CUrea NZ 1 3.450560E-03 4.796006E-06 + CUrea NE 1 3.450560E-03 4.796006E-06 + CUrea C 1 3.382052E-03 6.771917E-06 + CUrea CH0 1 3.382052E-03 6.771917E-06 + CUrea CH1 1 3.772128E-03 7.125811E-06 + CUrea CH2 1 4.804639E-03 8.027491E-06 + CUrea CH3 1 5.786819E-03 9.052995E-06 + CUrea CH4 1 8.025209E-03 2.160968E-05 + CUrea CH2r 1 4.804639E-03 8.027491E-06 + CUrea CR1 1 5.197511E-03 1.063895E-05 + CUrea HC 1 6.431352E-04 4.534272E-07 + CUrea H 1 0.000000E+00 0.000000E+00 + CUrea DUM 1 0.000000E+00 0.000000E+00 + CUrea S 1 6.985008E-03 1.333002E-05 + CUrea CU1+ 1 1.429578E-03 2.639094E-07 + CUrea CU2+ 1 1.429578E-03 2.639094E-07 + CUrea FE 1 0.000000E+00 0.000000E+00 + CUrea ZN2+ 1 1.429578E-03 3.581706E-07 + CUrea MG2+ 1 5.648405E-04 2.152120E-07 + CUrea CA2+ 1 2.216020E-03 2.601492E-06 + CUrea P 1 8.486588E-03 1.736663E-05 + CUrea AR 1 5.533060E-03 1.156792E-05 + CUrea F 1 2.399174E-03 3.215278E-06 + CUrea CL 1 6.544600E-03 1.441751E-05 + CUrea BR 1 1.162537E-02 2.983035E-05 + CUrea CMet 1 6.585844E-03 1.622016E-05 + CUrea OMet 1 3.324729E-03 5.621760E-06 + CUrea NA+ 1 6.207094E-04 9.953280E-07 + CUrea CL- 1 7.911961E-03 2.866545E-05 + CUrea CChl 1 3.585619E-03 7.431782E-06 + CUrea CLChl 1 6.371303E-03 1.367691E-05 + CUrea HChl 1 4.292228E-04 2.417320E-07 + CUrea SDmso 1 7.184240E-03 1.709236E-05 + CUrea CDmso 1 6.854283E-03 1.902920E-05 + CUrea ODmso 1 3.331161E-03 3.195593E-06 + CUrea CCl4 1 3.585619E-03 1.016267E-05 + CUrea CLCl4 1 6.095873E-03 1.317224E-05 + CUrea FTFE 1 2.399174E-03 3.686400E-06 + CUrea CTFE 1 3.382052E-03 6.771917E-06 + CUrea CHTFE 1 5.892377E-03 1.871585E-05 + CUrea OTFE 1 3.324729E-03 4.523213E-06 + CUrea CUrea 1 4.886849E-03 1.358954E-05 + OUrea O 1 2.312367E-03 1.085761E-06 + OUrea OM 1 2.312367E-03 1.085761E-06 + OUrea OA 1 2.312367E-03 1.418512E-06 + OUrea OE 1 2.312367E-03 1.418512E-06 + OUrea OW 1 2.487399E-03 2.046441E-06 + OUrea N 1 2.399883E-03 1.640431E-06 + OUrea NT 1 2.399883E-03 1.640431E-06 + OUrea NL 1 2.399883E-03 1.640431E-06 + OUrea NR 1 2.399883E-03 1.640431E-06 + OUrea NZ 1 2.399883E-03 1.640431E-06 + OUrea NE 1 2.399883E-03 1.640431E-06 + OUrea C 1 2.352236E-03 2.316273E-06 + OUrea CH0 1 2.352236E-03 2.316273E-06 + OUrea CH1 1 2.623535E-03 2.437320E-06 + OUrea CH2 1 3.341653E-03 2.745731E-06 + OUrea CH3 1 4.024764E-03 3.096496E-06 + OUrea CH4 1 5.581576E-03 7.391396E-06 + OUrea CH2r 1 3.341653E-03 2.745731E-06 + OUrea CR1 1 3.614897E-03 3.638957E-06 + OUrea HC 1 4.473040E-04 1.550907E-07 + OUrea H 1 0.000000E+00 0.000000E+00 + OUrea DUM 1 0.000000E+00 0.000000E+00 + OUrea S 1 4.858110E-03 4.559414E-06 + OUrea CU1+ 1 9.942790E-04 9.026783E-08 + OUrea CU2+ 1 9.942790E-04 9.026783E-08 + OUrea FE 1 0.000000E+00 0.000000E+00 + OUrea ZN2+ 1 9.942790E-04 1.225090E-07 + OUrea MG2+ 1 3.928496E-04 7.361134E-08 + OUrea CA2+ 1 1.541254E-03 8.898171E-07 + OUrea P 1 5.902468E-03 5.940100E-06 + OUrea AR 1 3.848273E-03 3.956704E-06 + OUrea F 1 1.668638E-03 1.099757E-06 + OUrea CL 1 4.551804E-03 4.931380E-06 + OUrea BR 1 8.085506E-03 1.020320E-05 + OUrea CMet 1 4.580490E-03 5.547960E-06 + OUrea OMet 1 2.312367E-03 1.922873E-06 + OUrea NA+ 1 4.317067E-04 3.404430E-07 + OUrea CL- 1 5.502812E-03 9.804758E-06 + OUrea CChl 1 2.493817E-03 2.541974E-06 + OUrea CLChl 1 4.431275E-03 4.678065E-06 + OUrea HChl 1 2.985268E-04 8.268226E-08 + OUrea SDmso 1 4.996677E-03 5.846289E-06 + OUrea CDmso 1 4.767191E-03 6.508766E-06 + OUrea ODmso 1 2.316840E-03 1.093024E-06 + OUrea CCl4 1 2.493817E-03 3.476049E-06 + OUrea CLCl4 1 4.239713E-03 4.505448E-06 + OUrea FTFE 1 1.668638E-03 1.260900E-06 + OUrea CTFE 1 2.352236E-03 2.316273E-06 + OUrea CHTFE 1 4.098180E-03 6.401589E-06 + OUrea OTFE 1 2.312367E-03 1.547124E-06 + OUrea CUrea 1 3.398830E-03 4.648182E-06 + OUrea OUrea 1 2.363904E-03 1.589869E-06 + NUrea O 1 2.753867E-03 1.711608E-06 + NUrea OM 1 2.753867E-03 1.711608E-06 + NUrea OA 1 2.753867E-03 2.236162E-06 + NUrea OE 1 2.753867E-03 2.236162E-06 + NUrea OW 1 2.962317E-03 3.226037E-06 + NUrea N 1 2.858092E-03 2.585998E-06 + NUrea NT 1 2.858092E-03 2.585998E-06 + NUrea NL 1 2.858092E-03 2.585998E-06 + NUrea NR 1 2.858092E-03 2.585998E-06 + NUrea NZ 1 2.858092E-03 2.585998E-06 + NUrea NE 1 2.858092E-03 2.585998E-06 + NUrea C 1 2.801347E-03 3.651405E-06 + NUrea CH0 1 2.801347E-03 3.651405E-06 + NUrea CH1 1 3.124446E-03 3.842224E-06 + NUrea CH2 1 3.979673E-03 4.328408E-06 + NUrea CH3 1 4.793210E-03 4.881358E-06 + NUrea CH4 1 6.647264E-03 1.165190E-05 + NUrea CH2r 1 3.979673E-03 4.328408E-06 + NUrea CR1 1 4.305088E-03 5.736502E-06 + NUrea HC 1 5.327076E-04 2.444871E-07 + NUrea H 1 0.000000E+00 0.000000E+00 + NUrea DUM 1 0.000000E+00 0.000000E+00 + NUrea S 1 5.785668E-03 7.187523E-06 + NUrea CU1+ 1 1.184116E-03 1.422994E-07 + NUrea CU2+ 1 1.184116E-03 1.422994E-07 + NUrea FE 1 0.000000E+00 0.000000E+00 + NUrea ZN2+ 1 1.184116E-03 1.931249E-07 + NUrea MG2+ 1 4.678562E-04 1.160419E-07 + NUrea CA2+ 1 1.835525E-03 1.402720E-06 + NUrea P 1 7.029424E-03 9.364055E-06 + NUrea AR 1 4.583022E-03 6.237403E-06 + NUrea F 1 1.987231E-03 1.733672E-06 + NUrea CL 1 5.420879E-03 7.773895E-06 + NUrea BR 1 9.629269E-03 1.608447E-05 + NUrea CMet 1 5.455042E-03 8.745880E-06 + NUrea OMet 1 2.753867E-03 3.031242E-06 + NUrea NA+ 1 5.141323E-04 5.366790E-07 + NUrea CL- 1 6.553462E-03 1.545636E-05 + NUrea CChl 1 2.969961E-03 4.007203E-06 + NUrea CLChl 1 5.277337E-03 7.374566E-06 + NUrea HChl 1 3.555244E-04 1.303414E-07 + NUrea SDmso 1 5.950691E-03 9.216170E-06 + NUrea CDmso 1 5.677389E-03 1.026051E-05 + NUrea ODmso 1 2.759194E-03 1.723058E-06 + NUrea CCl4 1 2.969961E-03 5.479691E-06 + NUrea CLCl4 1 5.049200E-03 7.102450E-06 + NUrea FTFE 1 1.987231E-03 1.987700E-06 + NUrea CTFE 1 2.801347E-03 3.651405E-06 + NUrea CHTFE 1 4.880644E-03 1.009155E-05 + NUrea OTFE 1 2.753867E-03 2.438908E-06 + NUrea CUrea 1 4.047767E-03 7.327457E-06 + NUrea OUrea 1 2.815244E-03 2.506291E-06 + NUrea NUrea 1 3.352757E-03 3.950951E-06 + CH3p O 1 3.937017E-03 2.114674E-06 + CH3p OM 1 3.937017E-03 2.114674E-06 + CH3p OA 1 3.937017E-03 2.762755E-06 + CH3p OE 1 3.937017E-03 2.762755E-06 + CH3p OW 1 4.235025E-03 3.985734E-06 + CH3p N 1 4.086021E-03 3.194972E-06 + CH3p NT 1 4.086021E-03 3.194972E-06 + CH3p NL 1 4.086021E-03 3.194972E-06 + CH3p NR 1 4.086021E-03 3.194972E-06 + CH3p NZ 1 4.086021E-03 3.194972E-06 + CH3p NE 1 4.086021E-03 3.194972E-06 + CH3p C 1 4.004896E-03 4.511272E-06 + CH3p CH0 1 4.004896E-03 4.511272E-06 + CH3p CH1 1 4.466809E-03 4.747027E-06 + CH3p CH2 1 5.689469E-03 5.347702E-06 + CH3p CH3 1 6.852528E-03 6.030865E-06 + CH3p CH4 1 9.503144E-03 1.439579E-05 + CH3p CH2r 1 5.689469E-03 5.347702E-06 + CH3p CR1 1 6.154693E-03 7.087387E-06 + CH3p HC 1 7.615760E-04 3.020612E-07 + CH3p H 1 0.000000E+00 0.000000E+00 + CH3p DUM 1 0.000000E+00 0.000000E+00 + CH3p S 1 8.271378E-03 8.880108E-06 + CH3p CU1+ 1 1.692851E-03 1.758094E-07 + CH3p CU2+ 1 1.692851E-03 1.758094E-07 + CH3p FE 1 0.000000E+00 0.000000E+00 + CH3p ZN2+ 1 1.692851E-03 2.386038E-07 + CH3p MG2+ 1 6.688624E-04 1.433686E-07 + CH3p CA2+ 1 2.624126E-03 1.733045E-06 + CH3p P 1 1.004949E-02 1.156919E-05 + CH3p AR 1 6.552037E-03 7.706244E-06 + CH3p F 1 2.841010E-03 2.141933E-06 + CH3p CL 1 7.749864E-03 9.604563E-06 + CH3p BR 1 1.376631E-02 1.987219E-05 + CH3p CMet 1 7.798704E-03 1.080544E-05 + CH3p OMet 1 3.937017E-03 3.745068E-06 + CH3p NA+ 1 7.350202E-04 6.630611E-07 + CH3p CL- 1 9.369040E-03 1.909616E-05 + CH3p CChl 1 4.245952E-03 4.950857E-06 + CH3p CLChl 1 7.544652E-03 9.111197E-06 + CH3p HChl 1 5.082692E-04 1.610354E-07 + CH3p SDmso 1 8.507301E-03 1.138648E-05 + CH3p CDmso 1 8.116579E-03 1.267675E-05 + CH3p ODmso 1 3.944633E-03 2.128819E-06 + CH3p CCl4 1 4.245952E-03 6.770100E-06 + CH3p CLCl4 1 7.218499E-03 8.775000E-06 + CH3p FTFE 1 2.841010E-03 2.455782E-06 + CH3p CTFE 1 4.004896E-03 4.511272E-06 + CH3p CHTFE 1 6.977526E-03 1.246801E-05 + CH3p OTFE 1 3.937017E-03 3.013245E-06 + CH3p CUrea 1 5.786819E-03 9.052995E-06 + CH3p OUrea 1 4.024764E-03 3.096496E-06 + CH3p NUrea 1 4.793210E-03 4.881358E-06 + CH3p CH3p 1 6.852528E-03 6.030865E-06 + SI O 1 5.773784E-03 4.056642E-06 + SI OM 1 5.773784E-03 4.056642E-06 + SI OA 1 5.773784E-03 5.299875E-06 + SI OE 1 5.773784E-03 5.299875E-06 + SI OW 1 6.210824E-03 7.645953E-06 + SI N 1 5.992304E-03 6.129011E-06 + SI NT 1 5.992304E-03 6.129011E-06 + SI NL 1 5.992304E-03 6.129011E-06 + SI NR 1 5.992304E-03 6.129011E-06 + SI NZ 1 5.992304E-03 6.129011E-06 + SI NE 1 5.992304E-03 6.129011E-06 + SI C 1 5.873332E-03 8.654107E-06 + SI CH0 1 5.873332E-03 8.654107E-06 + SI CH1 1 6.550744E-03 9.106363E-06 + SI CH2 1 8.343822E-03 1.025866E-05 + SI CH3 1 1.004949E-02 1.156919E-05 + SI CH4 1 1.393672E-02 2.761588E-05 + SI CH2r 1 8.343822E-03 1.025866E-05 + SI CR1 1 9.026090E-03 1.359595E-05 + SI HC 1 1.116880E-03 5.794530E-07 + SI H 1 0.000000E+00 0.000000E+00 + SI DUM 1 0.000000E+00 0.000000E+00 + SI S 1 1.213029E-02 1.703498E-05 + SI CU1+ 1 2.482630E-03 3.372605E-07 + SI CU2+ 1 2.482630E-03 3.372605E-07 + SI FE 1 0.000000E+00 0.000000E+00 + SI ZN2+ 1 2.482630E-03 4.577208E-07 + SI MG2+ 1 9.809120E-04 2.750282E-07 + SI CA2+ 1 3.848380E-03 3.324553E-06 + SI P 1 1.473796E-02 2.219352E-05 + SI AR 1 9.608810E-03 1.478312E-05 + SI F 1 4.166448E-03 4.108934E-06 + SI CL 1 1.136547E-02 1.842472E-05 + SI BR 1 2.018882E-02 3.812141E-05 + SI CMet 1 1.143709E-02 2.072840E-05 + SI OMet 1 5.773784E-03 7.184275E-06 + SI NA+ 1 1.077935e-03 1.271970e-06 + SI CL- 1 1.374005e-02 3.663274e-05 + SI CChl 1 6.226849E-03 9.497376E-06 + SI CLChl 1 1.106452E-02 1.747828E-05 + SI HChl 1 7.453960E-04 3.089191E-07 + SI SDmso 1 1.247628E-02 2.184302E-05 + SI CDmso 1 1.190327E-02 2.431818E-05 + SI ODmso 1 5.784953E-03 4.083778E-06 + SI CCl4 1 6.226849E-03 1.298729E-05 + SI CLCl4 1 1.058620E-02 1.683335E-05 + SI FTFE 1 4.166448E-03 4.711000E-06 + SI CTFE 1 5.873332E-03 8.654107E-06 + SI CHTFE 1 1.023281E-02 2.391775E-05 + SI OTFE 1 5.773784E-03 5.780397E-06 + SI CUrea 1 8.486588E-03 1.736663E-05 + SI OUrea 1 5.902468E-03 5.940100E-06 + SI NUrea 1 7.029424E-03 9.364055E-06 + SI CH3p 1 1.004949E-02 1.156919E-05 + SI SI 1 1.473796E-02 2.219352E-05 + diff --git a/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/forcefield.itp b/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/forcefield.itp new file mode 100644 index 00000000000..f440eb4ce32 --- /dev/null +++ b/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/forcefield.itp @@ -0,0 +1,10 @@ +#define _FF_GROMOS96 +#define _FF_GROMOS54A7 + +[ defaults ] +; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ + 1 1 no 1.0 1.0 + +#include "ffnonbonded.itp" +#include "ffbonded.itp" + diff --git a/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ions.itp b/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ions.itp new file mode 100644 index 00000000000..07c3d06eb1e --- /dev/null +++ b/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/ions.itp @@ -0,0 +1,55 @@ +[ moleculetype ] +; molname nrexcl +CU1 1 + +[ atoms ] +; id at type res nr residu name at name cg nr charge mass +1 CU1+ 1 CU1 CU 1 1 63.54600 + +[ moleculetype ] +; molname nrexcl +CU 1 + +[ atoms ] +; id at type res nr residu name at name cg nr charge mass +1 CU2+ 1 CU CU 1 2 63.54600 + +[ moleculetype ] +; molname nrexcl +ZN 1 + +[ atoms ] +; id at type res nr residu name at name cg nr charge mass +1 ZN2+ 1 ZN ZN 1 2 65.37000 + +[ moleculetype ] +; molname nrexcl +MG 1 + +[ atoms ] +; id at type res nr residu name at name cg nr charge mass +1 MG2+ 1 MG MG 1 2 24.30500 + +[ moleculetype ] +; molname nrexcl +CA 1 + +[ atoms ] +; id at type res nr residu name at name cg nr charge mass +1 CA2+ 1 CA CA 1 2 40.08000 + +[ moleculetype ] +; molname nrexcl +NA 1 + +[ atoms ] +; id at type res nr residu name at name cg nr charge mass +1 NA+ 1 NA NA 1 1 22.9898 + +[ moleculetype ] +; molname nrexcl +CL 1 + +[ atoms ] +; id at type res nr residu name at name cg nr charge mass +1 CL- 1 CL CL 1 -1 35.45300 diff --git a/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/spc.itp b/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/spc.itp new file mode 100644 index 00000000000..652629b8738 --- /dev/null +++ b/testsuite/MDAnalysisTests/data/gromacs/gromos54a7_edited.ff/spc.itp @@ -0,0 +1,35 @@ +[ moleculetype ] +; molname nrexcl +SOL 2 + +[ atoms ] +; nr type resnr residue atom cgnr charge mass +#ifndef HEAVY_H + 1 OW 1 SOL OW 1 -0.82 15.99940 + 2 H 1 SOL HW1 1 0.41 1.00800 + 3 H 1 SOL HW2 1 0.41 1.00800 +#else + 1 OW 1 SOL OW 1 -0.82 9.95140 + 2 H 1 SOL HW1 1 0.41 4.03200 + 3 H 1 SOL HW2 1 0.41 4.03200 +#endif + +#ifndef FLEXIBLE +[ settles ] +; OW funct doh dhh +1 1 0.1 0.16330 + +[ exclusions ] +1 2 3 +2 1 3 +3 1 2 +#else +[ bonds ] +; i j funct length force.c. +1 2 1 0.1 345000 0.1 345000 +1 3 1 0.1 345000 0.1 345000 + +[ angles ] +; i j k funct angle force.c. +2 1 3 1 109.47 383 109.47 383 +#endif diff --git a/testsuite/MDAnalysisTests/data/gromacs_ala10.top b/testsuite/MDAnalysisTests/data/gromacs_ala10.top new file mode 100644 index 00000000000..31ad5e1893a --- /dev/null +++ b/testsuite/MDAnalysisTests/data/gromacs_ala10.top @@ -0,0 +1,45 @@ +; +; File 'topol.top' was generated +; By user: lily (501) +; On host: MacBook-Pro-3.local +; At date: Thu Jul 18 15:55:33 2019 + +; +; This is a standalone topology file +; +; Created by: +; :-) GROMACS - gmx pdb2gmx, 2016.1 (-: +; +; Executable: /usr/local/gromacs/bin/gmx +; Data prefix: /usr/local/gromacs +; Working dir: /Users/lily/Documents/ala +; Command line: +; gmx pdb2gmx -f 00_ala10.pdb -o 01_ala.gro -ignh -ter +; Force field was read from the standard GROMACS share directory. +; + +; Include forcefield parameters +#include "gromos54a7_edited.ff/forcefield.itp" +#include "gromacs_ala10.itp" + +; Include water topology +#include "gromos54a7_edited.ff/spc.itp" + +#ifdef POSRES_WATER +; Position restraint for each water oxygen +[ position_restraints ] +; i funct fcx fcy fcz + 1 1 1000 1000 1000 +#endif + +; Include topology for ions +#include "gromos54a7_edited.ff/ions.itp" + +[ system ] +; Name +Protein + +[ molecules ] +; Compound #mols +Protein 2 +SOL 3 diff --git a/testsuite/MDAnalysisTests/data/no_endif_spc.itp b/testsuite/MDAnalysisTests/data/no_endif_spc.itp new file mode 100644 index 00000000000..2ce61b46c93 --- /dev/null +++ b/testsuite/MDAnalysisTests/data/no_endif_spc.itp @@ -0,0 +1,35 @@ +[ moleculetype ] +; molname nrexcl +SOL 2 + +[ atoms ] +; nr type resnr residue atom cgnr charge mass +#ifndef HEAVY_H + 1 OW 1 SOL OW 1 -0.82 15.99940 + 2 H 1 SOL HW1 1 0.41 1.00800 + 3 H 1 SOL HW2 1 0.41 1.00800 +#else + 1 OW 1 SOL OW 1 -0.82 9.95140 + 2 H 1 SOL HW1 1 0.41 4.03200 + 3 H 1 SOL HW2 1 0.41 4.03200 + + +#ifndef FLEXIBLE +[ settles ] +; OW funct doh dhh +1 1 0.1 0.16330 + +[ exclusions ] +1 2 3 +2 1 3 +3 1 2 +#else +[ bonds ] +; i j funct length force.c. +1 2 1 0.1 345000 0.1 345000 +1 3 1 0.1 345000 0.1 345000 +#endif +[ angles ] +; i j k funct angle force.c. +2 1 3 1 109.47 383 109.47 383 + diff --git a/testsuite/MDAnalysisTests/data/tip5p.itp b/testsuite/MDAnalysisTests/data/tip5p.itp index 751abfa10e8..c1e7d659a03 100644 --- a/testsuite/MDAnalysisTests/data/tip5p.itp +++ b/testsuite/MDAnalysisTests/data/tip5p.itp @@ -7,11 +7,17 @@ ; molname nrexcl SOL 2 +#ifndef HW1_CHARGE + #define HW1_CHARGE 0.241 +#endif + +#define HW2_CHARGE 0.241 + [ atoms ] ; id at type res nr residu name at name cg nr charge 1 opls_118 1 SOL OW 1 0 -2 opls_119 1 SOL HW1 1 0.241 -3 opls_119 1 SOL HW2 1 0.241 +2 opls_119 1 SOL HW1 1 HW1_CHARGE +3 opls_119 1 SOL HW2 1 HW2_CHARGE 4 opls_120 1 SOL LP1 1 -0.241 5 opls_120 1 SOL LP2 1 -0.241 #ifdef EXTRA_ATOMS ; added for keyword tests diff --git a/testsuite/MDAnalysisTests/datafiles.py b/testsuite/MDAnalysisTests/datafiles.py index 1eb6cf3216b..f77ac80bbeb 100644 --- a/testsuite/MDAnalysisTests/datafiles.py +++ b/testsuite/MDAnalysisTests/datafiles.py @@ -176,7 +176,11 @@ "ITP_nomass", # for ATB generated itps "ITP_edited", # to check different directives are read properly "ITP_tip5p", # tip5p water from opls-aa, edited with additional keywords - "ITP_spce", # spce water from gromos54a7, edited with additional keywords + "ITP_spce", # spce water from gromos54a7, edited with additional keywords, + "GMX_TOP", # 2 ala10 chains + 3 spc water + "GMX_DIR", # GROMACS directory + "GMX_TOP_BAD", # file with an #include that doesn't exist + "ITP_no_endif", # file missing an #endif ] from pkg_resources import resource_filename @@ -486,6 +490,10 @@ ITP_edited = resource_filename(__name__, 'data/edited_itp.itp') ITP_tip5p = resource_filename(__name__, "data/tip5p.itp") ITP_spce = resource_filename(__name__, 'data/spce.itp') +GMX_TOP = resource_filename(__name__, 'data/gromacs_ala10.top') +GMX_DIR = resource_filename(__name__, 'data/gromacs/') +GMX_TOP_BAD = resource_filename(__name__, 'data/bad_top.top') +ITP_no_endif = resource_filename(__name__, 'data/no_endif_spc.itp') # This should be the last line: clean up namespace del resource_filename diff --git a/testsuite/MDAnalysisTests/topology/test_itp.py b/testsuite/MDAnalysisTests/topology/test_itp.py index b110c0acb92..00714b5574d 100644 --- a/testsuite/MDAnalysisTests/topology/test_itp.py +++ b/testsuite/MDAnalysisTests/topology/test_itp.py @@ -24,6 +24,7 @@ import pytest import MDAnalysis as mda +from numpy.testing import assert_almost_equal from MDAnalysisTests.topology.base import ParserBase from MDAnalysisTests.datafiles import ( @@ -32,6 +33,10 @@ ITP_edited, ITP_tip5p, ITP_spce, + GMX_TOP, + GMX_DIR, + GMX_TOP_BAD, + ITP_no_endif ) class BaseITP(ParserBase): @@ -39,7 +44,7 @@ class BaseITP(ParserBase): expected_attrs = ['ids', 'names', 'types', 'masses', 'charges', 'chargegroups', 'resids', 'resnames', - 'segids', 'moltypes', + 'segids', 'moltypes', 'molnums', 'bonds', 'angles', 'dihedrals', 'impropers'] expected_n_atoms = 63 expected_n_residues = 10 @@ -139,7 +144,7 @@ class TestITPNoMass(ParserBase): expected_attrs = ['ids', 'names', 'types', 'masses', 'charges', 'chargegroups', 'resids', 'resnames', - 'segids', 'moltypes', + 'segids', 'moltypes', 'molnums', 'bonds', 'angles', 'dihedrals', 'impropers'] guessed_attrs = ['masses'] expected_n_atoms = 60 @@ -181,6 +186,16 @@ def test_dihedrals_identity(self, universe): class TestITPNoKeywords(BaseITP): """ Test reading ITP files *without* defined keywords. + + tip5p.itp has the lines: + + #ifndef HW1_CHARGE + #define HW1_CHARGE 0.241 + #endif + + [ atoms ] + 1 opls_118 1 SOL OW 1 0 + 2 opls_119 1 SOL HW1 1 HW1_CHARGE """ ref_filename = ITP_tip5p expected_n_atoms = 5 @@ -206,6 +221,10 @@ def test_bonds_values(self, top): def test_angles_values(self, top): assert (1, 0, 2) in top.angles.values + def test_defines(self, top): + assert_almost_equal(top.charges.values[1], 0.241) + assert_almost_equal(top.charges.values[2], 0.241) + class TestITPKeywords(TestITPNoKeywords): """ @@ -216,17 +235,25 @@ class TestITPKeywords(TestITPNoKeywords): @pytest.fixture def universe(self, filename): - return mda.Universe(filename, FLEXIBLE=True, EXTRA_ATOMS=True) + return mda.Universe(filename, FLEXIBLE=True, EXTRA_ATOMS=True, + HW1_CHARGE=1, HW2_CHARGE=3) @pytest.fixture() def top(self, filename): with self.parser(filename) as p: - yield p.parse(FLEXIBLE=True, EXTRA_ATOMS=True) + yield p.parse(FLEXIBLE=True, EXTRA_ATOMS=True, + HW1_CHARGE=1, HW2_CHARGE=3) def test_whether_settles_types(self, universe): for param in list(universe.bonds) + list(universe.angles): assert param.type == 1 + def test_defines(self, top): + assert_almost_equal(top.charges.values[1], 1) + + def test_kwargs_overrides_defines(self, top): + assert_almost_equal(top.charges.values[2], 3) + class TestNestedIfs(BaseITP): @@ -254,3 +281,47 @@ def top(self, filename): def test_heavy_atom(self, universe): assert universe.atoms[5].mass > 40 + +class TestReadTop(BaseITP): + """ + Test reading top files + """ + + ref_filename = GMX_TOP + + expected_n_atoms = 135 + expected_n_residues = 23 + expected_n_segments = 5 + + expected_n_bonds = 130 + expected_n_angles = 185 + expected_n_dihedrals = 60 + expected_n_impropers = 58 + + @pytest.fixture() + def top(self, filename): + with self.parser(filename) as p: + yield p.parse(include_dir=GMX_DIR) + + def test_output(self, filename): + """Testing the call signature""" + with self.parser(filename) as p: + top = p.parse(include_dir=GMX_DIR) + + def test_creates_universe(self, filename): + """Check that Universe works with this Parser""" + u = mda.Universe(filename, topology_format='ITP', include_dir=GMX_DIR) + +class TestErrors: + + parser = mda.topology.ITPParser.ITPParser + + def test_no_include(self): + with pytest.raises(FileNotFoundError): + with self.parser(GMX_TOP_BAD) as p: + top = p.parse(include_dir=GMX_DIR) + + def test_missing_endif(self): + with pytest.raises(IOError): + with self.parser(ITP_no_endif) as p: + top = p.parse(include_dir=GMX_DIR) \ No newline at end of file From 0dac71e7ac658987377476b6a5c3232b2d3ac6b5 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Thu, 16 Jan 2020 18:27:18 +1100 Subject: [PATCH 11/15] switched pathlib for os.path --- package/MDAnalysis/topology/ITPParser.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/package/MDAnalysis/topology/ITPParser.py b/package/MDAnalysis/topology/ITPParser.py index 582a1d943a2..00a851ec3de 100644 --- a/package/MDAnalysis/topology/ITPParser.py +++ b/package/MDAnalysis/topology/ITPParser.py @@ -21,7 +21,7 @@ # J. Comput. Chem. 32 (2011), 2319--2327, doi:10.1002/jcc.21787 # -""" +r""" ITP topology parser =================== @@ -60,7 +60,6 @@ u = mda.Universe('topol.top', topology_format='ITP') - .. _itp-define-kwargs: Preprocessor variables @@ -123,7 +122,7 @@ """ from __future__ import absolute_import from collections import defaultdict -from pathlib import Path +import os import logging import numpy as np @@ -169,7 +168,7 @@ class GmxTopIterator: def __init__(self, path, include_dir, defines): self._original_defines = defines self.defines = dict(**defines) # copy - self.include_dir = Path(include_dir) + self.include_dir = include_dir self.file_stack = [path] self.if_stack = [] self.starting_file = path @@ -276,13 +275,13 @@ def find_path(self, path): except AttributeError: pass - current_path = Path(current_file) - dir_path = current_path.parent / path - if dir_path.exists(): - return str(dir_path) - include_path = self.include_dir / path - if include_path.exists(): - return str(include_path) + current_dir = os.path.dirname(current_file) + dir_path = os.path.join(current_dir, path) + if os.path.exists(dir_path): + return dir_path + include_path = os.path.join(self.include_dir, path) + if os.path.exists(include_path): + return include_path raise FileNotFoundError('Could not find {}'.format(path)) @@ -454,6 +453,7 @@ class ITPParser(TopologyReaderBase): - dihedrals - impropers + .. _ITP: http://manual.gromacs.org/current/reference-manual/topologies/topology-file-formats.html#molecule-itp-file .. _TOP: http://manual.gromacs.org/current/reference-manual/file-formats.html#top """ From 478a35e14ea75045d157dce642ca2ccb1002e032 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Thu, 16 Jan 2020 20:38:04 +1100 Subject: [PATCH 12/15] removed split keywords and updated docs --- package/MDAnalysis/topology/ITPParser.py | 44 +++++++++++++----------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/package/MDAnalysis/topology/ITPParser.py b/package/MDAnalysis/topology/ITPParser.py index 00a851ec3de..97d16202a9e 100644 --- a/package/MDAnalysis/topology/ITPParser.py +++ b/package/MDAnalysis/topology/ITPParser.py @@ -35,7 +35,7 @@ 1 molecule of each defined ``moleculetype``. If a ``[ molecules ]`` section is present, ``infer_system`` is ignored. -If files are included with the `#include` directive, they will also be read. If they are not in the working directory, :ref:`ITPParser will look for them` in the ``include_dir`` directory. By default, this is set to ``include_dir="/usr/local/gromacs/share/gromacs/top/"``. +If files are included with the `#include` directive, they will also be read. If they are not in the working directory, ITPParser will look for them in the ``include_dir`` directory. By default, this is set to ``include_dir="/usr/local/gromacs/share/gromacs/top/"``. Variables can be defined with the `#define` directive in files, or by passing in :ref:`keyword arguments `. @@ -68,27 +68,29 @@ ITP files are often defined with lines that depend on whether a keyword flag is given. For example, this modified TIP5P water file: - [ moleculetype ] - ; molname nrexcl - SOL 2 + .. code-block:: none - #ifndef HW1_CHARGE - #define HW1_CHARGE 0.241 - #endif + [ moleculetype ] + ; molname nrexcl + SOL 2 - #define HW2_CHARGE 0.241 + #ifndef HW1_CHARGE + #define HW1_CHARGE 0.241 + #endif - [ atoms ] - ; id at type res nr residu name at name cg nr charge - 1 opls_118 1 SOL OW 1 0 - 2 opls_119 1 SOL HW1 1 HW1_CHARGE - 3 opls_119 1 SOL HW2 1 HW2_CHARGE - 4 opls_120 1 SOL LP1 1 -0.241 - 5 opls_120 1 SOL LP2 1 -0.241 - #ifdef EXTRA_ATOMS ; added for keyword tests - 6 opls_120 1 SOL LP3 1 -0.241 - 7 opls_120 1 SOL LP4 1 0.241 - #endif + #define HW2_CHARGE 0.241 + + [ atoms ] + ; id at type res nr residu name at name cg nr charge + 1 opls_118 1 SOL OW 1 0 + 2 opls_119 1 SOL HW1 1 HW1_CHARGE + 3 opls_119 1 SOL HW2 1 HW2_CHARGE + 4 opls_120 1 SOL LP1 1 -0.241 + 5 opls_120 1 SOL LP2 1 -0.241 + #ifdef EXTRA_ATOMS ; added for keyword tests + 6 opls_120 1 SOL LP3 1 -0.241 + 7 opls_120 1 SOL LP4 1 0.241 + #endif Define these preprocessor variables by passing keyword arguments. Any arguments that you @@ -194,7 +196,7 @@ def iter_from_file(self, path): continue if line.startswith('#include'): - inc = line.split(maxsplit=1)[1][1:-1] + inc = line.split(None, 1)[1][1:-1] for line in self.iter_from_file(inc): yield line elif line.startswith('#define'): @@ -212,7 +214,7 @@ def iter_from_file(self, path): def define(self, line): try: - _, variable, value = line.split(maxsplit=2) + _, variable, value = line.split(None, 2) except ValueError: _, variable = line.split() value = True From 6bab7a443a4c29438014cf36740fbcd65af6a144 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Thu, 16 Jan 2020 22:17:50 +1100 Subject: [PATCH 13/15] added test for sequential values --- package/MDAnalysis/topology/ITPParser.py | 54 +++++++++++++------ .../MDAnalysisTests/topology/test_itp.py | 13 ++++- 2 files changed, 51 insertions(+), 16 deletions(-) diff --git a/package/MDAnalysis/topology/ITPParser.py b/package/MDAnalysis/topology/ITPParser.py index 97d16202a9e..d09a701f686 100644 --- a/package/MDAnalysis/topology/ITPParser.py +++ b/package/MDAnalysis/topology/ITPParser.py @@ -383,25 +383,41 @@ def resolve_residue_attrs(self): self.resolved_residue_attrs = True - def shift_indices(self, n_atoms=0, n_residues=0, n_chargegroups=0, n_mols=0): + def shift_indices(self, atomid=0, resid=0, molnum=0, cgnr=0, n_res=0, n_atoms=0): """ Get attributes ready for adding onto a larger topology. Shifts atom indices, residue indices, molnums, and chargegroup numbers. + + Returns + ------- + atom_attrs: list of lists + attributes in the [ atoms ] section + + new_params: list of dicts + Bonds, angles, dihedrals, impropers as dicts of shape {indices: parameters} + + molnums: list + moltypes: list + residx: list """ if not self.resolved_residue_attrs: self.resolve_residue_attrs() - self.resids = list(np.array(self.resids)+n_residues) - self.residx = list(np.array(self.residx)+n_residues) - self.molnums = list(np.array(self.molnums) + n_mols) - self.ids = list(np.array(self.ids, dtype=int) + n_atoms) + resids = list(np.array(self.resids)+resid) + residx = list(np.array(self.residx)+n_res) + molnums = list(np.array(self.molnums) + molnum) + ids = list(np.array(self.ids, dtype=int) + atomid) try: cg = np.array(self.chargegroups, dtype=int) except ValueError: cg = np.arange(1, len(self.chargegroups)+1) - self.chargegroups = list(cg+n_chargegroups) + chargegroups = list(cg+cgnr) + + atom_order = [ids, self.types, resids, self.resnames, + self.names, chargegroups, self.charges, + self.masses] new_params = [] for p in self.params: @@ -409,8 +425,10 @@ def shift_indices(self, n_atoms=0, n_residues=0, n_chargegroups=0, n_mols=0): for indices, values in p.items(): new[tuple(np.array(indices)+n_atoms)] = values new_params.append(new) + + return atom_order, new_params, molnums, self.moltypes, residx + - self.bonds, self.angles, self.dihedrals, self.impropers = new_params def add_param(self, line, container, n_funct=2, funct_values=[]): @@ -615,18 +633,24 @@ def build_system(self): for i, moltype in enumerate(self.system_molecules): mol = self.molecules[moltype] + + atomid = self.ids[-1] if self.ids else 0 + resid = self.resids[-1] if self.resids else 0 + cgnr = self.chargegroups[-1] if self.chargegroups else 0 + n_res = len(self.resids) n_atoms = len(self.ids) - n_res = len(self.resids), - n_cg = len(self.chargegroups) - mol.shift_indices(n_atoms, n_res, n_cg, i) + shifted = mol.shift_indices(atomid=atomid, resid=resid, + n_res=n_res, cgnr=cgnr, molnum=i, + n_atoms=n_atoms) + atom_order, params, molnums, moltypes, residx = shifted - for system_attr, mol_attr in zip(self.atom_order, mol.atom_order): + for system_attr, mol_attr in zip(self.atom_order, atom_order): system_attr.extend(mol_attr) - self.moltypes.extend(mol.moltypes) - self.molnums.extend(mol.molnums) - self.residx.extend(mol.residx) + self.moltypes.extend(moltypes) + self.molnums.extend(molnums) + self.residx.extend(residx) - for system_param, mol_param in zip(self.params, mol.params): + for system_param, mol_param in zip(self.params, params): system_param.update(mol_param) \ No newline at end of file diff --git a/testsuite/MDAnalysisTests/topology/test_itp.py b/testsuite/MDAnalysisTests/topology/test_itp.py index 00714b5574d..5f4b8c56605 100644 --- a/testsuite/MDAnalysisTests/topology/test_itp.py +++ b/testsuite/MDAnalysisTests/topology/test_itp.py @@ -24,7 +24,8 @@ import pytest import MDAnalysis as mda -from numpy.testing import assert_almost_equal +import numpy as np +from numpy.testing import assert_almost_equal, assert_equal from MDAnalysisTests.topology.base import ParserBase from MDAnalysisTests.datafiles import ( @@ -303,6 +304,10 @@ def top(self, filename): with self.parser(filename) as p: yield p.parse(include_dir=GMX_DIR) + @pytest.fixture() + def universe(self, filename): + return mda.Universe(filename, topology_format='ITP', include_dir=GMX_DIR) + def test_output(self, filename): """Testing the call signature""" with self.parser(filename) as p: @@ -312,6 +317,12 @@ def test_creates_universe(self, filename): """Check that Universe works with this Parser""" u = mda.Universe(filename, topology_format='ITP', include_dir=GMX_DIR) + def test_sequential(self, universe): + resids = np.array(list(range(2, 12)) + list(range(13, 23))) + assert_equal(universe.residues.resids[:20], resids) + assert_equal(universe.residues.resindices, np.arange(self.expected_n_residues)) + assert_equal(universe.atoms.chargegroups[-1], 63) + class TestErrors: parser = mda.topology.ITPParser.ITPParser From 2c858bf5d91660a804f2fa121c573bb0bcb24abb Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Fri, 17 Jan 2020 05:00:12 +1100 Subject: [PATCH 14/15] switched FileNotFoundError to IOError --- package/MDAnalysis/topology/ITPParser.py | 2 +- testsuite/MDAnalysisTests/topology/test_itp.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/MDAnalysis/topology/ITPParser.py b/package/MDAnalysis/topology/ITPParser.py index d09a701f686..f200ea7425b 100644 --- a/package/MDAnalysis/topology/ITPParser.py +++ b/package/MDAnalysis/topology/ITPParser.py @@ -284,7 +284,7 @@ def find_path(self, path): include_path = os.path.join(self.include_dir, path) if os.path.exists(include_path): return include_path - raise FileNotFoundError('Could not find {}'.format(path)) + raise IOError('Could not find {}'.format(path)) class Molecule: diff --git a/testsuite/MDAnalysisTests/topology/test_itp.py b/testsuite/MDAnalysisTests/topology/test_itp.py index 5f4b8c56605..424cabca9f3 100644 --- a/testsuite/MDAnalysisTests/topology/test_itp.py +++ b/testsuite/MDAnalysisTests/topology/test_itp.py @@ -328,7 +328,7 @@ class TestErrors: parser = mda.topology.ITPParser.ITPParser def test_no_include(self): - with pytest.raises(FileNotFoundError): + with pytest.raises(IOError): with self.parser(GMX_TOP_BAD) as p: top = p.parse(include_dir=GMX_DIR) From ce13299074690a2ce289e81705b93bb5f7ce9516 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Fri, 17 Jan 2020 23:43:17 +1100 Subject: [PATCH 15/15] removed if_stack in favour if nested skipping --- package/MDAnalysis/topology/ITPParser.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/package/MDAnalysis/topology/ITPParser.py b/package/MDAnalysis/topology/ITPParser.py index f200ea7425b..47c80c6ceaf 100644 --- a/package/MDAnalysis/topology/ITPParser.py +++ b/package/MDAnalysis/topology/ITPParser.py @@ -172,7 +172,6 @@ def __init__(self, path, include_dir, defines): self.defines = dict(**defines) # copy self.include_dir = include_dir self.file_stack = [path] - self.if_stack = [] self.starting_file = path @property @@ -189,12 +188,6 @@ def iter_from_file(self, path): self.file_stack.append(infile) for line in self.clean_file_lines(infile): - if self.if_stack: - while self.if_stack: - func = self.if_stack.pop() - func(infile) - continue - if line.startswith('#include'): inc = line.split(None, 1)[1][1:-1] for line in self.iter_from_file(inc): @@ -204,7 +197,7 @@ def iter_from_file(self, path): elif line.startswith('#if'): self.do_if(line, infile) elif line.startswith('#else'): - self.if_stack.append(self.skip_until_endif) + self.skip_until_endif(infile) elif line.startswith('#'): # ignore #if and others pass elif line: @@ -240,16 +233,16 @@ def do_if(self, line, infile): ifdef, variable = line.split() if ifdef == '#ifdef': if self.defines.get(variable) in (False, None): - self.if_stack.append(self.skip_until_else) + self.skip_until_else(infile) elif ifdef == '#ifndef': if self.defines.get(variable) not in (False, None): - self.if_stack.append(self.skip_until_else) + self.skip_until_else(infile) def skip_until_else(self, infile): """Skip lines until #if condition ends""" for line in self.clean_file_lines(infile): if line.startswith('#if'): - self.if_stack.append(self.skip_until_endif) + self.skip_until_endif(infile) elif line.startswith('#endif') or line.startswith('#else'): break else: @@ -259,7 +252,7 @@ def skip_until_endif(self, infile): """Skip lines until #endif""" for line in self.clean_file_lines(infile): if line.startswith('#if'): - self.if_stack.append(self.skip_until_endif) + self.skip_until_endif(infile) elif line.startswith('#endif'): break else: