Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
tsoc
openmm
Commits
eb232608
Commit
eb232608
authored
Apr 22, 2015
by
John Chodera (MSKCC)
Browse files
Merge remote-tracking branch 'upstream/master'
parents
62581e9c
7f8c5089
Changes
267
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1141 additions
and
170 deletions
+1141
-170
CMakeLists.txt
CMakeLists.txt
+2
-2
devtools/forcefield-scripts/residuesFinal.xml
devtools/forcefield-scripts/residuesFinal.xml
+945
-0
examples/benchmark.py
examples/benchmark.py
+6
-3
libraries/validate/include/ValidateOpenMM.h
libraries/validate/include/ValidateOpenMM.h
+2
-2
libraries/validate/include/ValidateOpenMMForces.h
libraries/validate/include/ValidateOpenMMForces.h
+36
-36
libraries/validate/src/ValidateOpenMM.cpp
libraries/validate/src/ValidateOpenMM.cpp
+2
-2
libraries/validate/src/ValidateOpenMMForces.cpp
libraries/validate/src/ValidateOpenMMForces.cpp
+12
-12
olla/include/openmm/kernels.h
olla/include/openmm/kernels.h
+3
-1
openmmapi/include/openmm/GBVIForce.h
openmmapi/include/openmm/GBVIForce.h
+4
-4
openmmapi/include/openmm/State.h
openmmapi/include/openmm/State.h
+4
-0
openmmapi/include/openmm/System.h
openmmapi/include/openmm/System.h
+13
-0
openmmapi/include/openmm/internal/vectorize_pnacl.h
openmmapi/include/openmm/internal/vectorize_pnacl.h
+74
-42
openmmapi/src/Context.cpp
openmmapi/src/Context.cpp
+3
-30
openmmapi/src/ContextImpl.cpp
openmmapi/src/ContextImpl.cpp
+10
-6
openmmapi/src/GBVIForce.cpp
openmmapi/src/GBVIForce.cpp
+4
-4
openmmapi/src/GBVIForceImpl.cpp
openmmapi/src/GBVIForceImpl.cpp
+0
-22
openmmapi/src/State.cpp
openmmapi/src/State.cpp
+3
-0
openmmapi/src/System.cpp
openmmapi/src/System.cpp
+13
-1
platforms/cpu/include/CpuKernels.h
platforms/cpu/include/CpuKernels.h
+3
-1
platforms/cpu/include/CpuLangevinDynamics.h
platforms/cpu/include/CpuLangevinDynamics.h
+2
-2
No files found.
CMakeLists.txt
View file @
eb232608
...
@@ -164,10 +164,10 @@ ENDIF (NOT CMAKE_CXX_FLAGS_RELEASE)
...
@@ -164,10 +164,10 @@ ENDIF (NOT CMAKE_CXX_FLAGS_RELEASE)
SET
(
OPENMM_LIBRARY_NAME OpenMM
)
SET
(
OPENMM_LIBRARY_NAME OpenMM
)
SET
(
OPENMM_MAJOR_VERSION 6
)
SET
(
OPENMM_MAJOR_VERSION 6
)
SET
(
OPENMM_MINOR_VERSION
2
)
SET
(
OPENMM_MINOR_VERSION
3
)
SET
(
OPENMM_BUILD_VERSION 0
)
SET
(
OPENMM_BUILD_VERSION 0
)
SET
(
OPENMM_COPYRIGHT_YEARS
"2008-201
4
"
)
SET
(
OPENMM_COPYRIGHT_YEARS
"2008-201
5
"
)
# underbar separated list of dotted authors, no spaces or commas
# underbar separated list of dotted authors, no spaces or commas
SET
(
OPENMM_AUTHORS
"Peter.Eastman"
)
SET
(
OPENMM_AUTHORS
"Peter.Eastman"
)
...
...
devtools/forcefield-scripts/residuesFinal.xml
0 → 100644
View file @
eb232608
<Residues>
<Residue
abbreviation=
"ALA"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Alanine"
fullName=
"Alanine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB1"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"HB1"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"H"
to=
"N"
/>
</Residue>
<Residue
abbreviation=
"ARG"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Arginine"
fullName=
"Arginine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD"
tinkerLookupName=
"CD"
bonds=
"4"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"4"
/>
<Atom
name=
"CZ"
tinkerLookupName=
"CZ"
bonds=
"3"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HD2"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HD3"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HE"
tinkerLookupName=
"HE"
bonds=
"1"
/>
<Atom
name=
"HG2"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"HG3"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"HH11"
tinkerLookupName=
"HH"
bonds=
"1"
/>
<Atom
name=
"HH12"
tinkerLookupName=
"HH"
bonds=
"1"
/>
<Atom
name=
"HH21"
tinkerLookupName=
"HH"
bonds=
"1"
/>
<Atom
name=
"HH22"
tinkerLookupName=
"HH"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"NE"
tinkerLookupName=
"NE"
bonds=
"3"
/>
<Atom
name=
"NH1"
tinkerLookupName=
"NH"
bonds=
"3"
/>
<Atom
name=
"NH2"
tinkerLookupName=
"NH"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CD"
to=
"HD3"
/>
<Bond
from=
"CD"
to=
"CG"
/>
<Bond
from=
"CD"
to=
"NE"
/>
<Bond
from=
"CD"
to=
"HD2"
/>
<Bond
from=
"CG"
to=
"HG2"
/>
<Bond
from=
"CG"
to=
"HG3"
/>
<Bond
from=
"CZ"
to=
"NH1"
/>
<Bond
from=
"CZ"
to=
"NE"
/>
<Bond
from=
"CZ"
to=
"NH2"
/>
<Bond
from=
"H"
to=
"N"
/>
<Bond
from=
"HE"
to=
"NE"
/>
<Bond
from=
"HH11"
to=
"NH1"
/>
<Bond
from=
"HH12"
to=
"NH1"
/>
<Bond
from=
"HH21"
to=
"NH2"
/>
<Bond
from=
"HH22"
to=
"NH2"
/>
</Residue>
<Residue
abbreviation=
"ASN"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Asparagine"
fullName=
"Asparagine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"3"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HD21"
tinkerLookupName=
"HD2"
bonds=
"1"
/>
<Atom
name=
"HD22"
tinkerLookupName=
"HD2"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"ND2"
tinkerLookupName=
"ND2"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Atom
name=
"OD1"
tinkerLookupName=
"OD1"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CG"
to=
"ND2"
/>
<Bond
from=
"CG"
to=
"OD1"
/>
<Bond
from=
"H"
to=
"N"
/>
<Bond
from=
"HD21"
to=
"ND2"
/>
<Bond
from=
"HD22"
to=
"ND2"
/>
</Residue>
<Residue
abbreviation=
"ASP"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Aspartic Acid"
fullName=
"Aspartic Acid"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"3"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Atom
name=
"OD1"
tinkerLookupName=
"OD"
bonds=
"1"
/>
<Atom
name=
"OD2"
tinkerLookupName=
"OD"
bonds=
"2"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CG"
to=
"OD2"
/>
<Bond
from=
"CG"
to=
"OD1"
/>
<Bond
from=
"H"
to=
"N"
/>
</Residue>
<Residue
abbreviation=
"ASH"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Aspartic Acid (COOH)"
fullName=
"Aspartic Acid"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"3"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HD2"
tinkerLookupName=
"HD2"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Atom
name=
"OD1"
tinkerLookupName=
"OD1"
bonds=
"1"
/>
<Atom
name=
"OD2"
tinkerLookupName=
"OD2"
bonds=
"2"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CG"
to=
"OD2"
/>
<Bond
from=
"CG"
to=
"OD1"
/>
<Bond
from=
"H"
to=
"N"
/>
<Bond
from=
"HD2"
to=
"OD2"
/>
</Residue>
<Residue
abbreviation=
"CYS"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Cysteine (SH)"
fullName=
"Cysteine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HG"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Atom
name=
"SG"
tinkerLookupName=
"SG"
bonds=
"2"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"SG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"H"
to=
"N"
/>
<Bond
from=
"HG"
to=
"SG"
/>
</Residue>
<Residue
abbreviation=
"CYD"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Cysteine (S-)"
fullName=
"Cysteine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Atom
name=
"SG"
tinkerLookupName=
"SG"
bonds=
"2"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"SG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"H"
to=
"N"
/>
</Residue>
<Residue
abbreviation=
"CYX"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Cystine (SS)"
fullName=
"Cystine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Atom
name=
"SG"
tinkerLookupName=
"SG"
bonds=
"2"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"SG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"H"
to=
"N"
/>
</Residue>
<Residue
abbreviation=
"GLN"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Glutamine"
fullName=
"Glutamine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD"
tinkerLookupName=
"CD"
bonds=
"3"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HE21"
tinkerLookupName=
"HE2"
bonds=
"1"
/>
<Atom
name=
"HE22"
tinkerLookupName=
"HE2"
bonds=
"1"
/>
<Atom
name=
"HG2"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"HG3"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"NE2"
tinkerLookupName=
"NE2"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Atom
name=
"OE1"
tinkerLookupName=
"OE1"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CD"
to=
"NE2"
/>
<Bond
from=
"CD"
to=
"OE1"
/>
<Bond
from=
"CD"
to=
"CG"
/>
<Bond
from=
"CG"
to=
"HG2"
/>
<Bond
from=
"CG"
to=
"HG3"
/>
<Bond
from=
"H"
to=
"N"
/>
<Bond
from=
"HE21"
to=
"NE2"
/>
<Bond
from=
"HE22"
to=
"NE2"
/>
</Residue>
<Residue
abbreviation=
"GLU"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Glutamic Acid"
fullName=
"Glutamic Acid"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD"
tinkerLookupName=
"CD"
bonds=
"3"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HG2"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"HG3"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Atom
name=
"OE1"
tinkerLookupName=
"OE"
bonds=
"1"
/>
<Atom
name=
"OE2"
tinkerLookupName=
"OE"
bonds=
"2"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CD"
to=
"OE2"
/>
<Bond
from=
"CD"
to=
"OE1"
/>
<Bond
from=
"CD"
to=
"CG"
/>
<Bond
from=
"CG"
to=
"HG2"
/>
<Bond
from=
"CG"
to=
"HG3"
/>
<Bond
from=
"H"
to=
"N"
/>
</Residue>
<Residue
abbreviation=
"GLH"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Glutamic Acid (COOH)"
fullName=
"Glutamic Acid"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD"
tinkerLookupName=
"CD"
bonds=
"3"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HE2"
tinkerLookupName=
"HE2"
bonds=
"1"
/>
<Atom
name=
"HG2"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"HG3"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Atom
name=
"OE1"
tinkerLookupName=
"OE1"
bonds=
"1"
/>
<Atom
name=
"OE2"
tinkerLookupName=
"OE2"
bonds=
"2"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CD"
to=
"OE2"
/>
<Bond
from=
"CD"
to=
"OE1"
/>
<Bond
from=
"CD"
to=
"CG"
/>
<Bond
from=
"CG"
to=
"HG2"
/>
<Bond
from=
"CG"
to=
"HG3"
/>
<Bond
from=
"H"
to=
"N"
/>
<Bond
from=
"HE2"
to=
"OE2"
/>
</Residue>
<Residue
abbreviation=
"GLY"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Glycine"
fullName=
"Glycine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA2"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HA3"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"HA3"
/>
<Bond
from=
"CA"
to=
"HA2"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"H"
to=
"N"
/>
</Residue>
<Residue
abbreviation=
"HIS"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Histidine (+)"
fullName=
"Histidine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD2"
tinkerLookupName=
"CD2"
bonds=
"3"
/>
<Atom
name=
"CE1"
tinkerLookupName=
"CE1"
bonds=
"3"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"3"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HD1"
tinkerLookupName=
"HD1"
bonds=
"1"
/>
<Atom
name=
"HD2"
tinkerLookupName=
"HD2"
bonds=
"1"
/>
<Atom
name=
"HE1"
tinkerLookupName=
"HE1"
bonds=
"1"
/>
<Atom
name=
"HE2"
tinkerLookupName=
"HE2"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"ND1"
tinkerLookupName=
"ND1"
bonds=
"3"
/>
<Atom
name=
"NE2"
tinkerLookupName=
"NE2"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CD2"
to=
"CG"
/>
<Bond
from=
"CD2"
to=
"NE2"
/>
<Bond
from=
"CD2"
to=
"HD2"
/>
<Bond
from=
"CE1"
to=
"ND1"
/>
<Bond
from=
"CE1"
to=
"NE2"
/>
<Bond
from=
"CE1"
to=
"HE1"
/>
<Bond
from=
"CG"
to=
"ND1"
/>
<Bond
from=
"H"
to=
"N"
/>
<Bond
from=
"HD1"
to=
"ND1"
/>
<Bond
from=
"HD2"
to=
"CD2"
/>
<Bond
from=
"HE2"
to=
"NE2"
/>
</Residue>
<Residue
abbreviation=
"HID"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Histidine (HD)"
fullName=
"Histidine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD2"
tinkerLookupName=
"CD2"
bonds=
"3"
/>
<Atom
name=
"CE1"
tinkerLookupName=
"CE1"
bonds=
"3"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"3"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HD1"
tinkerLookupName=
"HD1"
bonds=
"1"
/>
<Atom
name=
"HD2"
tinkerLookupName=
"HD2"
bonds=
"1"
/>
<Atom
name=
"HE1"
tinkerLookupName=
"HE1"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"ND1"
tinkerLookupName=
"ND1"
bonds=
"3"
/>
<Atom
name=
"NE2"
tinkerLookupName=
"NE2"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CD2"
to=
"CG"
/>
<Bond
from=
"CD2"
to=
"NE2"
/>
<Bond
from=
"CD2"
to=
"HD2"
/>
<Bond
from=
"CE1"
to=
"ND1"
/>
<Bond
from=
"CE1"
to=
"NE2"
/>
<Bond
from=
"CE1"
to=
"HE1"
/>
<Bond
from=
"CG"
to=
"ND1"
/>
<Bond
from=
"H"
to=
"N"
/>
<Bond
from=
"HD1"
to=
"ND1"
/>
</Residue>
<Residue
abbreviation=
"HIE"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Histidine (HE)"
fullName=
"Histidine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD2"
tinkerLookupName=
"CD2"
bonds=
"3"
/>
<Atom
name=
"CE1"
tinkerLookupName=
"CE1"
bonds=
"3"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"3"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HD2"
tinkerLookupName=
"HD2"
bonds=
"1"
/>
<Atom
name=
"HE1"
tinkerLookupName=
"HE1"
bonds=
"1"
/>
<Atom
name=
"HE2"
tinkerLookupName=
"HE2"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"ND1"
tinkerLookupName=
"ND1"
bonds=
"3"
/>
<Atom
name=
"NE2"
tinkerLookupName=
"NE2"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CD2"
to=
"CG"
/>
<Bond
from=
"CD2"
to=
"NE2"
/>
<Bond
from=
"CD2"
to=
"HD2"
/>
<Bond
from=
"CE1"
to=
"ND1"
/>
<Bond
from=
"CE1"
to=
"NE2"
/>
<Bond
from=
"CE1"
to=
"HE1"
/>
<Bond
from=
"CG"
to=
"ND1"
/>
<Bond
from=
"H"
to=
"N"
/>
<Bond
from=
"HE2"
to=
"NE2"
/>
</Residue>
<Residue
abbreviation=
"HOH"
loc=
"middle"
type=
"AmoebaWater"
tinkerLookupName=
"Water"
fullName=
"Water"
>
<Atom
name=
"H1"
tinkerLookupName=
"H"
bonds=
"1"
/>
<Atom
name=
"H2"
tinkerLookupName=
"H"
bonds=
"1"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"2"
/>
<Bond
from=
"O"
to=
"H1"
/>
<Bond
from=
"O"
to=
"H2"
/>
</Residue>
<Residue
abbreviation=
"ILE"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Isoleucine"
fullName=
"Isoleucine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD1"
tinkerLookupName=
"CD"
bonds=
"4"
/>
<Atom
name=
"CG1"
tinkerLookupName=
"CG1"
bonds=
"4"
/>
<Atom
name=
"CG2"
tinkerLookupName=
"CG2"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HD11"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HD12"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HD13"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HG12"
tinkerLookupName=
"HG1"
bonds=
"1"
/>
<Atom
name=
"HG13"
tinkerLookupName=
"HG1"
bonds=
"1"
/>
<Atom
name=
"HG21"
tinkerLookupName=
"HG2"
bonds=
"1"
/>
<Atom
name=
"HG22"
tinkerLookupName=
"HG2"
bonds=
"1"
/>
<Atom
name=
"HG23"
tinkerLookupName=
"HG2"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG1"
/>
<Bond
from=
"CB"
to=
"HB"
/>
<Bond
from=
"CB"
to=
"CG2"
/>
<Bond
from=
"CD1"
to=
"CG1"
/>
<Bond
from=
"CD1"
to=
"HD12"
/>
<Bond
from=
"CD1"
to=
"HD11"
/>
<Bond
from=
"CD1"
to=
"HD13"
/>
<Bond
from=
"CG1"
to=
"HG12"
/>
<Bond
from=
"CG1"
to=
"HG13"
/>
<Bond
from=
"CG2"
to=
"HG21"
/>
<Bond
from=
"CG2"
to=
"HG23"
/>
<Bond
from=
"CG2"
to=
"HG22"
/>
<Bond
from=
"H"
to=
"N"
/>
</Residue>
<Residue
abbreviation=
"LEU"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Leucine"
fullName=
"Leucine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD1"
tinkerLookupName=
"CD1"
bonds=
"4"
/>
<Atom
name=
"CD2"
tinkerLookupName=
"CD2"
bonds=
"4"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HD11"
tinkerLookupName=
"HD1"
bonds=
"1"
/>
<Atom
name=
"HD12"
tinkerLookupName=
"HD1"
bonds=
"1"
/>
<Atom
name=
"HD13"
tinkerLookupName=
"HD1"
bonds=
"1"
/>
<Atom
name=
"HD21"
tinkerLookupName=
"HD2"
bonds=
"1"
/>
<Atom
name=
"HD22"
tinkerLookupName=
"HD2"
bonds=
"1"
/>
<Atom
name=
"HD23"
tinkerLookupName=
"HD2"
bonds=
"1"
/>
<Atom
name=
"HG"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CD1"
to=
"HD13"
/>
<Bond
from=
"CD1"
to=
"HD12"
/>
<Bond
from=
"CD1"
to=
"HD11"
/>
<Bond
from=
"CD1"
to=
"CG"
/>
<Bond
from=
"CD2"
to=
"CG"
/>
<Bond
from=
"CD2"
to=
"HD22"
/>
<Bond
from=
"CD2"
to=
"HD23"
/>
<Bond
from=
"CD2"
to=
"HD21"
/>
<Bond
from=
"CG"
to=
"HG"
/>
<Bond
from=
"H"
to=
"N"
/>
</Residue>
<Residue
abbreviation=
"LYS"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Lysine"
fullName=
"Lysine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD"
tinkerLookupName=
"CD"
bonds=
"4"
/>
<Atom
name=
"CE"
tinkerLookupName=
"CE"
bonds=
"4"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HD2"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HD3"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HE2"
tinkerLookupName=
"HE"
bonds=
"1"
/>
<Atom
name=
"HE3"
tinkerLookupName=
"HE"
bonds=
"1"
/>
<Atom
name=
"HG2"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"HG3"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"HZ1"
tinkerLookupName=
"HZ"
bonds=
"1"
/>
<Atom
name=
"HZ2"
tinkerLookupName=
"HZ"
bonds=
"1"
/>
<Atom
name=
"HZ3"
tinkerLookupName=
"HZ"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"NZ"
tinkerLookupName=
"NZ"
bonds=
"4"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CD"
to=
"HD3"
/>
<Bond
from=
"CD"
to=
"CG"
/>
<Bond
from=
"CD"
to=
"HD2"
/>
<Bond
from=
"CD"
to=
"CE"
/>
<Bond
from=
"CE"
to=
"NZ"
/>
<Bond
from=
"CE"
to=
"HE2"
/>
<Bond
from=
"CE"
to=
"HE3"
/>
<Bond
from=
"CG"
to=
"HG2"
/>
<Bond
from=
"CG"
to=
"HG3"
/>
<Bond
from=
"H"
to=
"N"
/>
<Bond
from=
"HZ1"
to=
"NZ"
/>
<Bond
from=
"HZ2"
to=
"NZ"
/>
<Bond
from=
"HZ3"
to=
"NZ"
/>
</Residue>
<Residue
abbreviation=
"LYD"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Lysine (NH2)"
fullName=
"Lysine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD"
tinkerLookupName=
"CD"
bonds=
"4"
/>
<Atom
name=
"CE"
tinkerLookupName=
"CE"
bonds=
"4"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HD2"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HD3"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HE2"
tinkerLookupName=
"HE"
bonds=
"1"
/>
<Atom
name=
"HE3"
tinkerLookupName=
"HE"
bonds=
"1"
/>
<Atom
name=
"HG2"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"HG3"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"HZ1"
tinkerLookupName=
"HZ"
bonds=
"1"
/>
<Atom
name=
"HZ2"
tinkerLookupName=
"HZ"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"NZ"
tinkerLookupName=
"NZ"
bonds=
"4"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CD"
to=
"HD3"
/>
<Bond
from=
"CD"
to=
"CG"
/>
<Bond
from=
"CD"
to=
"HD2"
/>
<Bond
from=
"CD"
to=
"CE"
/>
<Bond
from=
"CE"
to=
"NZ"
/>
<Bond
from=
"CE"
to=
"HE2"
/>
<Bond
from=
"CE"
to=
"HE3"
/>
<Bond
from=
"CG"
to=
"HG2"
/>
<Bond
from=
"CG"
to=
"HG3"
/>
<Bond
from=
"H"
to=
"N"
/>
<Bond
from=
"HZ1"
to=
"NZ"
/>
<Bond
from=
"HZ2"
to=
"NZ"
/>
</Residue>
<Residue
abbreviation=
"MET"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Methionine"
fullName=
"Methionine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CE"
tinkerLookupName=
"CE"
bonds=
"4"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HE1"
tinkerLookupName=
"HE"
bonds=
"1"
/>
<Atom
name=
"HE2"
tinkerLookupName=
"HE"
bonds=
"1"
/>
<Atom
name=
"HE3"
tinkerLookupName=
"HE"
bonds=
"1"
/>
<Atom
name=
"HG2"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"HG3"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Atom
name=
"SD"
tinkerLookupName=
"SD"
bonds=
"2"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CE"
to=
"SD"
/>
<Bond
from=
"CE"
to=
"HE1"
/>
<Bond
from=
"CE"
to=
"HE2"
/>
<Bond
from=
"CE"
to=
"HE3"
/>
<Bond
from=
"CG"
to=
"HG2"
/>
<Bond
from=
"CG"
to=
"HG3"
/>
<Bond
from=
"CG"
to=
"SD"
/>
<Bond
from=
"H"
to=
"N"
/>
</Residue>
<Residue
abbreviation=
"PHE"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Phenylalanine"
fullName=
"Phenylalanine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD1"
tinkerLookupName=
"CD"
bonds=
"3"
/>
<Atom
name=
"CD2"
tinkerLookupName=
"CD"
bonds=
"3"
/>
<Atom
name=
"CE1"
tinkerLookupName=
"CE"
bonds=
"3"
/>
<Atom
name=
"CE2"
tinkerLookupName=
"CE"
bonds=
"3"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"3"
/>
<Atom
name=
"CZ"
tinkerLookupName=
"CZ"
bonds=
"3"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HD1"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HD2"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HE1"
tinkerLookupName=
"HE"
bonds=
"1"
/>
<Atom
name=
"HE2"
tinkerLookupName=
"HE"
bonds=
"1"
/>
<Atom
name=
"HZ"
tinkerLookupName=
"HZ"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CD1"
to=
"CG"
/>
<Bond
from=
"CD1"
to=
"CE1"
/>
<Bond
from=
"CD1"
to=
"HD1"
/>
<Bond
from=
"CD2"
to=
"CG"
/>
<Bond
from=
"CD2"
to=
"CE2"
/>
<Bond
from=
"CD2"
to=
"HD2"
/>
<Bond
from=
"CE1"
to=
"CZ"
/>
<Bond
from=
"CE1"
to=
"HE1"
/>
<Bond
from=
"CE2"
to=
"CZ"
/>
<Bond
from=
"CE2"
to=
"HE2"
/>
<Bond
from=
"CZ"
to=
"HZ"
/>
<Bond
from=
"H"
to=
"N"
/>
</Residue>
<Residue
abbreviation=
"PRO"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Proline"
fullName=
"Proline"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD"
tinkerLookupName=
"CD"
bonds=
"4"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"4"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HD2"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HD3"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HG2"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"HG3"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"4"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CD"
to=
"CG"
/>
<Bond
from=
"CD"
to=
"HD3"
/>
<Bond
from=
"CD"
to=
"HD2"
/>
<Bond
from=
"CD"
to=
"N"
/>
<Bond
from=
"CG"
to=
"HG2"
/>
<Bond
from=
"CG"
to=
"HG3"
/>
</Residue>
<Residue
abbreviation=
"SER"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Serine"
fullName=
"Serine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HG"
tinkerLookupName=
"HG"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Atom
name=
"OG"
tinkerLookupName=
"OG"
bonds=
"2"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"OG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"H"
to=
"N"
/>
<Bond
from=
"HG"
to=
"OG"
/>
</Residue>
<Residue
abbreviation=
"THR"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Threonine"
fullName=
"Threonine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CG2"
tinkerLookupName=
"CG2"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HG1"
tinkerLookupName=
"HG1"
bonds=
"1"
/>
<Atom
name=
"HG21"
tinkerLookupName=
"HG2"
bonds=
"1"
/>
<Atom
name=
"HG22"
tinkerLookupName=
"HG2"
bonds=
"1"
/>
<Atom
name=
"HG23"
tinkerLookupName=
"HG2"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Atom
name=
"OG1"
tinkerLookupName=
"OG1"
bonds=
"2"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"HB"
/>
<Bond
from=
"CB"
to=
"CG2"
/>
<Bond
from=
"CB"
to=
"OG1"
/>
<Bond
from=
"CG2"
to=
"HG21"
/>
<Bond
from=
"CG2"
to=
"HG23"
/>
<Bond
from=
"CG2"
to=
"HG22"
/>
<Bond
from=
"H"
to=
"N"
/>
<Bond
from=
"HG1"
to=
"OG1"
/>
</Residue>
<Residue
abbreviation=
"TRP"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Tryptophan"
fullName=
"Tryptophan"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD1"
tinkerLookupName=
"CD1"
bonds=
"3"
/>
<Atom
name=
"CD2"
tinkerLookupName=
"CD2"
bonds=
"3"
/>
<Atom
name=
"CE2"
tinkerLookupName=
"CE2"
bonds=
"3"
/>
<Atom
name=
"CE3"
tinkerLookupName=
"CE3"
bonds=
"3"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"3"
/>
<Atom
name=
"CH2"
tinkerLookupName=
"CH2"
bonds=
"3"
/>
<Atom
name=
"CZ2"
tinkerLookupName=
"CZ2"
bonds=
"3"
/>
<Atom
name=
"CZ3"
tinkerLookupName=
"CZ3"
bonds=
"3"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HD1"
tinkerLookupName=
"HD1"
bonds=
"1"
/>
<Atom
name=
"HE1"
tinkerLookupName=
"HE1"
bonds=
"1"
/>
<Atom
name=
"HE3"
tinkerLookupName=
"HE3"
bonds=
"1"
/>
<Atom
name=
"HH2"
tinkerLookupName=
"HH2"
bonds=
"1"
/>
<Atom
name=
"HZ2"
tinkerLookupName=
"HZ2"
bonds=
"1"
/>
<Atom
name=
"HZ3"
tinkerLookupName=
"HZ3"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"NE1"
tinkerLookupName=
"NE1"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CD1"
to=
"CG"
/>
<Bond
from=
"CD1"
to=
"HD1"
/>
<Bond
from=
"CD1"
to=
"NE1"
/>
<Bond
from=
"CD2"
to=
"CE3"
/>
<Bond
from=
"CD2"
to=
"CG"
/>
<Bond
from=
"CD2"
to=
"CE2"
/>
<Bond
from=
"CE2"
to=
"CZ2"
/>
<Bond
from=
"CE2"
to=
"NE1"
/>
<Bond
from=
"CE3"
to=
"CZ3"
/>
<Bond
from=
"CE3"
to=
"HE3"
/>
<Bond
from=
"CH2"
to=
"CZ2"
/>
<Bond
from=
"CH2"
to=
"HH2"
/>
<Bond
from=
"CH2"
to=
"CZ3"
/>
<Bond
from=
"CZ2"
to=
"HZ2"
/>
<Bond
from=
"CZ3"
to=
"HZ3"
/>
<Bond
from=
"H"
to=
"N"
/>
<Bond
from=
"HE1"
to=
"NE1"
/>
</Residue>
<Residue
abbreviation=
"TYR"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Tyrosine"
fullName=
"Tyrosine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD1"
tinkerLookupName=
"CD"
bonds=
"3"
/>
<Atom
name=
"CD2"
tinkerLookupName=
"CD"
bonds=
"3"
/>
<Atom
name=
"CE1"
tinkerLookupName=
"CE"
bonds=
"3"
/>
<Atom
name=
"CE2"
tinkerLookupName=
"CE"
bonds=
"3"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"3"
/>
<Atom
name=
"CZ"
tinkerLookupName=
"CZ"
bonds=
"3"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HD1"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HD2"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HE1"
tinkerLookupName=
"HE"
bonds=
"1"
/>
<Atom
name=
"HE2"
tinkerLookupName=
"HE"
bonds=
"1"
/>
<Atom
name=
"HH"
tinkerLookupName=
"HH"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Atom
name=
"OH"
tinkerLookupName=
"OH"
bonds=
"2"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CD1"
to=
"CG"
/>
<Bond
from=
"CD1"
to=
"CE1"
/>
<Bond
from=
"CD1"
to=
"HD1"
/>
<Bond
from=
"CD2"
to=
"CG"
/>
<Bond
from=
"CD2"
to=
"CE2"
/>
<Bond
from=
"CD2"
to=
"HD2"
/>
<Bond
from=
"CE1"
to=
"CZ"
/>
<Bond
from=
"CE1"
to=
"HE1"
/>
<Bond
from=
"CE2"
to=
"CZ"
/>
<Bond
from=
"CE2"
to=
"HE2"
/>
<Bond
from=
"CZ"
to=
"OH"
/>
<Bond
from=
"H"
to=
"N"
/>
<Bond
from=
"HH"
to=
"OH"
/>
</Residue>
<Residue
abbreviation=
"TYD"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Tyrosine (O-)"
fullName=
"Tyrosine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CD1"
tinkerLookupName=
"CD"
bonds=
"3"
/>
<Atom
name=
"CD2"
tinkerLookupName=
"CD"
bonds=
"3"
/>
<Atom
name=
"CE1"
tinkerLookupName=
"CE"
bonds=
"3"
/>
<Atom
name=
"CE2"
tinkerLookupName=
"CE"
bonds=
"3"
/>
<Atom
name=
"CG"
tinkerLookupName=
"CG"
bonds=
"3"
/>
<Atom
name=
"CZ"
tinkerLookupName=
"CZ"
bonds=
"3"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB2"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HB3"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HD1"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HD2"
tinkerLookupName=
"HD"
bonds=
"1"
/>
<Atom
name=
"HE1"
tinkerLookupName=
"HE"
bonds=
"1"
/>
<Atom
name=
"HE2"
tinkerLookupName=
"HE"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Atom
name=
"OH"
tinkerLookupName=
"OH"
bonds=
"2"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG"
/>
<Bond
from=
"CB"
to=
"HB3"
/>
<Bond
from=
"CB"
to=
"HB2"
/>
<Bond
from=
"CD1"
to=
"CG"
/>
<Bond
from=
"CD1"
to=
"CE1"
/>
<Bond
from=
"CD1"
to=
"HD1"
/>
<Bond
from=
"CD2"
to=
"CG"
/>
<Bond
from=
"CD2"
to=
"CE2"
/>
<Bond
from=
"CD2"
to=
"HD2"
/>
<Bond
from=
"CE1"
to=
"CZ"
/>
<Bond
from=
"CE1"
to=
"HE1"
/>
<Bond
from=
"CE2"
to=
"CZ"
/>
<Bond
from=
"CE2"
to=
"HE2"
/>
<Bond
from=
"CZ"
to=
"OH"
/>
<Bond
from=
"H"
to=
"N"
/>
</Residue>
<Residue
abbreviation=
"VAL"
loc=
"middle"
type=
"protein"
tinkerLookupName=
"Valine"
fullName=
"Valine"
>
<Atom
name=
"C"
tinkerLookupName=
"C"
bonds=
"3"
/>
<Atom
name=
"CA"
tinkerLookupName=
"CA"
bonds=
"4"
/>
<Atom
name=
"CB"
tinkerLookupName=
"CB"
bonds=
"4"
/>
<Atom
name=
"CG1"
tinkerLookupName=
"CG1"
bonds=
"4"
/>
<Atom
name=
"CG2"
tinkerLookupName=
"CG2"
bonds=
"4"
/>
<Atom
name=
"H"
tinkerLookupName=
"HN"
bonds=
"1"
/>
<Atom
name=
"HA"
tinkerLookupName=
"HA"
bonds=
"1"
/>
<Atom
name=
"HB"
tinkerLookupName=
"HB"
bonds=
"1"
/>
<Atom
name=
"HG11"
tinkerLookupName=
"HG1"
bonds=
"1"
/>
<Atom
name=
"HG12"
tinkerLookupName=
"HG1"
bonds=
"1"
/>
<Atom
name=
"HG13"
tinkerLookupName=
"HG1"
bonds=
"1"
/>
<Atom
name=
"HG21"
tinkerLookupName=
"HG2"
bonds=
"1"
/>
<Atom
name=
"HG22"
tinkerLookupName=
"HG2"
bonds=
"1"
/>
<Atom
name=
"HG23"
tinkerLookupName=
"HG2"
bonds=
"1"
/>
<Atom
name=
"N"
tinkerLookupName=
"N"
bonds=
"3"
/>
<Atom
name=
"O"
tinkerLookupName=
"O"
bonds=
"1"
/>
<Bond
from=
"C"
to=
"CA"
/>
<Bond
from=
"C"
to=
"O"
/>
<Bond
from=
"CA"
to=
"CB"
/>
<Bond
from=
"CA"
to=
"HA"
/>
<Bond
from=
"CA"
to=
"N"
/>
<Bond
from=
"CB"
to=
"CG1"
/>
<Bond
from=
"CB"
to=
"HB"
/>
<Bond
from=
"CB"
to=
"CG2"
/>
<Bond
from=
"CG1"
to=
"HG11"
/>
<Bond
from=
"CG1"
to=
"HG12"
/>
<Bond
from=
"CG1"
to=
"HG13"
/>
<Bond
from=
"CG2"
to=
"HG21"
/>
<Bond
from=
"CG2"
to=
"HG23"
/>
<Bond
from=
"CG2"
to=
"HG22"
/>
<Bond
from=
"H"
to=
"N"
/>
</Residue>
</Residues>
examples/benchmark.py
View file @
eb232608
...
@@ -6,9 +6,9 @@ import sys
...
@@ -6,9 +6,9 @@ import sys
from
datetime
import
datetime
from
datetime
import
datetime
from
optparse
import
OptionParser
from
optparse
import
OptionParser
def
timeIntegration
(
context
,
steps
):
def
timeIntegration
(
context
,
steps
,
initialSteps
):
"""Integrate a Context for a specified number of steps, then return how many seconds it took."""
"""Integrate a Context for a specified number of steps, then return how many seconds it took."""
context
.
getIntegrator
().
step
(
5
)
# Make sure everything is fully initialized
context
.
getIntegrator
().
step
(
initialSteps
)
# Make sure everything is fully initialized
context
.
getState
(
getEnergy
=
True
)
context
.
getState
(
getEnergy
=
True
)
start
=
datetime
.
now
()
start
=
datetime
.
now
()
context
.
getIntegrator
().
step
(
steps
)
context
.
getIntegrator
().
step
(
steps
)
...
@@ -79,11 +79,14 @@ def runOneTest(testName, options):
...
@@ -79,11 +79,14 @@ def runOneTest(testName, options):
system
=
ff
.
createSystem
(
pdb
.
topology
,
nonbondedMethod
=
method
,
nonbondedCutoff
=
cutoff
,
constraints
=
constraints
,
hydrogenMass
=
hydrogenMass
)
system
=
ff
.
createSystem
(
pdb
.
topology
,
nonbondedMethod
=
method
,
nonbondedCutoff
=
cutoff
,
constraints
=
constraints
,
hydrogenMass
=
hydrogenMass
)
print
(
'Step Size: %g fs'
%
dt
.
value_in_unit
(
unit
.
femtoseconds
))
print
(
'Step Size: %g fs'
%
dt
.
value_in_unit
(
unit
.
femtoseconds
))
properties
=
{}
properties
=
{}
initialSteps
=
5
if
options
.
device
is
not
None
:
if
options
.
device
is
not
None
:
if
platform
.
getName
()
==
'CUDA'
:
if
platform
.
getName
()
==
'CUDA'
:
properties
[
'CudaDeviceIndex'
]
=
options
.
device
properties
[
'CudaDeviceIndex'
]
=
options
.
device
elif
platform
.
getName
()
==
'OpenCL'
:
elif
platform
.
getName
()
==
'OpenCL'
:
properties
[
'OpenCLDeviceIndex'
]
=
options
.
device
properties
[
'OpenCLDeviceIndex'
]
=
options
.
device
if
','
in
options
.
device
or
' '
in
options
.
device
:
initialSteps
=
250
if
options
.
precision
is
not
None
:
if
options
.
precision
is
not
None
:
if
platform
.
getName
()
==
'CUDA'
:
if
platform
.
getName
()
==
'CUDA'
:
properties
[
'CudaPrecision'
]
=
options
.
precision
properties
[
'CudaPrecision'
]
=
options
.
precision
...
@@ -102,7 +105,7 @@ def runOneTest(testName, options):
...
@@ -102,7 +105,7 @@ def runOneTest(testName, options):
context
.
setVelocitiesToTemperature
(
300
*
unit
.
kelvin
)
context
.
setVelocitiesToTemperature
(
300
*
unit
.
kelvin
)
steps
=
20
steps
=
20
while
True
:
while
True
:
time
=
timeIntegration
(
context
,
steps
)
time
=
timeIntegration
(
context
,
steps
,
initialSteps
)
if
time
>=
0.5
*
options
.
seconds
:
if
time
>=
0.5
*
options
.
seconds
:
break
break
if
time
<
0.5
:
if
time
<
0.5
:
...
...
libraries/validate/include/ValidateOpenMM.h
View file @
eb232608
...
@@ -83,7 +83,7 @@ typedef StringStringVectorMap::const_iterator StringStringVectorMapCI;
...
@@ -83,7 +83,7 @@ typedef StringStringVectorMap::const_iterator StringStringVectorMapCI;
class
ValidateOpenMM
{
class
ValidateOpenMM
{
public:
public:
ValidateOpenMM
(
void
);
ValidateOpenMM
();
~
ValidateOpenMM
();
~
ValidateOpenMM
();
// force names
// force names
...
@@ -166,7 +166,7 @@ public:
...
@@ -166,7 +166,7 @@ public:
* @return log
* @return log
*
*
*/
*/
FILE
*
getLog
(
)
const
;
FILE
*
getLog
()
const
;
/**
/**
*
*
...
...
libraries/validate/include/ValidateOpenMMForces.h
View file @
eb232608
...
@@ -41,7 +41,7 @@ typedef MapIntInt::const_iterator MapIntIntCI;
...
@@ -41,7 +41,7 @@ typedef MapIntInt::const_iterator MapIntIntCI;
class
ForceValidationResult
{
class
ForceValidationResult
{
public:
public:
ForceValidationResult
(
const
Context
&
context1
,
const
Context
&
context2
,
StringUIntMap
&
forceNamesMap
);
ForceValidationResult
(
const
Context
&
context1
,
const
Context
&
context2
,
StringUIntMap
&
forceNamesMap
);
~
ForceValidationResult
();
~
ForceValidationResult
();
/**
/**
...
@@ -51,7 +51,7 @@ public:
...
@@ -51,7 +51,7 @@ public:
*
*
* @throws OpenMMException if energyIndex is not 0 or 1
* @throws OpenMMException if energyIndex is not 0 or 1
*/
*/
double
getPotentialEnergy
(
int
energyIndex
)
const
;
double
getPotentialEnergy
(
int
energyIndex
)
const
;
/**
/**
* Get array of forces at specified platform index (0 || 1)
* Get array of forces at specified platform index (0 || 1)
...
@@ -60,7 +60,7 @@ public:
...
@@ -60,7 +60,7 @@ public:
*
*
* @throws OpenMMException if forceIndex is not 0 or 1
* @throws OpenMMException if forceIndex is not 0 or 1
*/
*/
std
::
vector
<
double
>
getForceNorms
(
int
forceIndex
)
const
;
std
::
vector
<
double
>
getForceNorms
(
int
forceIndex
)
const
;
/**
/**
* Get array of forces at platform index (0 || 1)
* Get array of forces at platform index (0 || 1)
...
@@ -69,7 +69,7 @@ public:
...
@@ -69,7 +69,7 @@ public:
*
*
* @throws OpenMMException if forceIndex is not 0 or 1
* @throws OpenMMException if forceIndex is not 0 or 1
*/
*/
std
::
vector
<
Vec3
>
getForces
(
int
forceIndex
)
const
;
std
::
vector
<
Vec3
>
getForces
(
int
forceIndex
)
const
;
/**
/**
* Get maximum delta in force norm
* Get maximum delta in force norm
...
@@ -78,7 +78,7 @@ public:
...
@@ -78,7 +78,7 @@ public:
*
*
* @return max delta in norm of forces
* @return max delta in norm of forces
*/
*/
double
getMaxDeltaForceNorm
(
int
*
maxIndex
=
NULL
)
const
;
double
getMaxDeltaForceNorm
(
int
*
maxIndex
=
NULL
)
const
;
/**
/**
* Get maximum relative delta in force norm
* Get maximum relative delta in force norm
...
@@ -87,7 +87,7 @@ public:
...
@@ -87,7 +87,7 @@ public:
*
*
* @return max relative delta in norm of forces
* @return max relative delta in norm of forces
*/
*/
double
getMaxRelativeDeltaForceNorm
(
int
*
maxIndex
=
NULL
)
const
;
double
getMaxRelativeDeltaForceNorm
(
int
*
maxIndex
=
NULL
)
const
;
/**
/**
* Get maximum dot product between forces
* Get maximum dot product between forces
...
@@ -96,7 +96,7 @@ public:
...
@@ -96,7 +96,7 @@ public:
*
*
* @return max dot product between forces
* @return max dot product between forces
*/
*/
double
getMaxDotProduct
(
int
*
maxIndex
=
NULL
)
const
;
double
getMaxDotProduct
(
int
*
maxIndex
=
NULL
)
const
;
/**
/**
* Get name of force associated w/ computed results
* Get name of force associated w/ computed results
...
@@ -104,7 +104,7 @@ public:
...
@@ -104,7 +104,7 @@ public:
* @return force name(s); if more than one force active in computation,
* @return force name(s); if more than one force active in computation,
* then names are concatenated and separated by '::' (e.g., 'NB_FORCE::GBSA_OBC_FORCE')
* then names are concatenated and separated by '::' (e.g., 'NB_FORCE::GBSA_OBC_FORCE')
*/
*/
std
::
string
getForceName
(
void
)
const
;
std
::
string
getForceName
()
const
;
/**
/**
* Get platform name
* Get platform name
...
@@ -115,7 +115,7 @@ public:
...
@@ -115,7 +115,7 @@ public:
*
*
* @throws OpenMMException if index is not 0 or 1
* @throws OpenMMException if index is not 0 or 1
*/
*/
std
::
string
getPlatformName
(
int
index
)
const
;
std
::
string
getPlatformName
(
int
index
)
const
;
/**
/**
* Register index of two entries that differ by a specified tolerance
* Register index of two entries that differ by a specified tolerance
...
@@ -123,46 +123,46 @@ public:
...
@@ -123,46 +123,46 @@ public:
* @param index inconsistent index
* @param index inconsistent index
*
*
*/
*/
void
registerInconsistentForceIndex
(
int
index
,
int
value
=
1
);
void
registerInconsistentForceIndex
(
int
index
,
int
value
=
1
);
/**
/**
* Clear list of entries that differ by a specified tolerance
* Clear list of entries that differ by a specified tolerance
*
*
*/
*/
void
clearInconsistentForceIndexList
(
void
);
void
clearInconsistentForceIndexList
();
/**
/**
* Get list of entries that differ by a specified tolerance
* Get list of entries that differ by a specified tolerance
*
*
*/
*/
void
getInconsistentForceIndexList
(
std
::
vector
<
int
>&
inconsistentIndices
)
const
;
void
getInconsistentForceIndexList
(
std
::
vector
<
int
>&
inconsistentIndices
)
const
;
/**
/**
* Get number of entries in inconsistent index list
* Get number of entries in inconsistent index list
*
*
*/
*/
int
getNumberOfInconsistentForceEntries
(
void
)
const
;
int
getNumberOfInconsistentForceEntries
()
const
;
/**
/**
* Return true if nans were detected
* Return true if nans were detected
*
*
* @return true if nans were detected
* @return true if nans were detected
*/
*/
int
nansDetected
(
void
)
const
;
int
nansDetected
()
const
;
/**
/**
* Determine if force norms are valid
* Determine if force norms are valid
*
*
* @param tolerance tolerance
* @param tolerance tolerance
*/
*/
void
compareForceNorms
(
double
tolerance
);
void
compareForceNorms
(
double
tolerance
);
/**
/**
* Determine if forces are valid
* Determine if forces are valid
*
*
* @param tolerance tolerance
* @param tolerance tolerance
*/
*/
void
compareForces
(
double
tolerance
);
void
compareForces
(
double
tolerance
);
private:
private:
...
@@ -193,13 +193,13 @@ private:
...
@@ -193,13 +193,13 @@ private:
* Calculate norms of vectors
* Calculate norms of vectors
*
*
*/
*/
void
_calculateNorms
(
void
);
void
_calculateNorms
();
/**
/**
* Calculate norms of specified vector
* Calculate norms of specified vector
*
*
*/
*/
void
_calculateNormOfForceVector
(
int
forceIndex
);
void
_calculateNormOfForceVector
(
int
forceIndex
);
// stat indices
// stat indices
...
@@ -216,7 +216,7 @@ private:
...
@@ -216,7 +216,7 @@ private:
* Find vector stats
* Find vector stats
*
*
*/
*/
void
_findStatsForDouble
(
const
std
::
vector
<
double
>&
array
,
std
::
vector
<
double
>&
statVector
)
const
;
void
_findStatsForDouble
(
const
std
::
vector
<
double
>&
array
,
std
::
vector
<
double
>&
statVector
)
const
;
};
};
// Class used to compare forces/potential energies on two platforms
// Class used to compare forces/potential energies on two platforms
...
@@ -224,7 +224,7 @@ private:
...
@@ -224,7 +224,7 @@ private:
class
ValidateOpenMMForces
:
public
ValidateOpenMM
{
class
ValidateOpenMMForces
:
public
ValidateOpenMM
{
public:
public:
OPENMM_VALIDATE_EXPORT
ValidateOpenMMForces
(
void
);
OPENMM_VALIDATE_EXPORT
ValidateOpenMMForces
();
OPENMM_VALIDATE_EXPORT
~
ValidateOpenMMForces
();
OPENMM_VALIDATE_EXPORT
~
ValidateOpenMMForces
();
/**
/**
...
@@ -236,7 +236,7 @@ public:
...
@@ -236,7 +236,7 @@ public:
*
*
* @return number of inconsistent entries
* @return number of inconsistent entries
*/
*/
int
OPENMM_VALIDATE_EXPORT
compareWithReferencePlatform
(
Context
&
context
,
std
::
string
*
summaryString
=
NULL
);
int
OPENMM_VALIDATE_EXPORT
compareWithReferencePlatform
(
Context
&
context
,
std
::
string
*
summaryString
=
NULL
);
/**
/**
* Validate force/energy by comparing the results between the forces/energies computed on two different platforms
* Validate force/energy by comparing the results between the forces/energies computed on two different platforms
...
@@ -250,7 +250,7 @@ public:
...
@@ -250,7 +250,7 @@ public:
* on the two input platforms
* on the two input platforms
*/
*/
ForceValidationResult
*
compareForce
(
Context
&
context
,
std
::
vector
<
int
>&
compareForces
,
ForceValidationResult
*
compareForce
(
Context
&
context
,
std
::
vector
<
int
>&
compareForces
,
Platform
&
platform1
,
Platform
&
platform2
)
const
;
Platform
&
platform1
,
Platform
&
platform2
)
const
;
/**
/**
* Compare individual forces by comparing calculations across two platforms (platform associated w/ input context and
* Compare individual forces by comparing calculations across two platforms (platform associated w/ input context and
...
@@ -261,42 +261,42 @@ public:
...
@@ -261,42 +261,42 @@ public:
* @param forceValidationResults output vector of ForceValidationResult ptrs (user is responsible for deleting
* @param forceValidationResults output vector of ForceValidationResult ptrs (user is responsible for deleting
* individual ForceValidationResult objects)
* individual ForceValidationResult objects)
*/
*/
void
compareOpenMMForces
(
Context
&
context
,
Platform
&
comparisonPlatform
,
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
void
compareOpenMMForces
(
Context
&
context
,
Platform
&
comparisonPlatform
,
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
/**
/**
* Determine if results are consistent
* Determine if results are consistent
*
*
* @param forceValidationResults vector of ForceValidationResult ptrs to check if forces are consistent
* @param forceValidationResults vector of ForceValidationResult ptrs to check if forces are consistent
*/
*/
void
checkForInconsistentForceEntries
(
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
void
checkForInconsistentForceEntries
(
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
/**
/**
* Get total number of force entries that are inconsistent
* Get total number of force entries that are inconsistent
*
*
* @param forceValidationResults vector of ForceValidationResult ptrs to check if forces are consistent
* @param forceValidationResults vector of ForceValidationResult ptrs to check if forces are consistent
*/
*/
int
getTotalNumberOfInconsistentForceEntries
(
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
int
getTotalNumberOfInconsistentForceEntries
(
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
/**
/**
* Get summary string of results
* Get summary string of results
*
*
* @param forceValidationResults vector of ForceValidationResult ptrs
* @param forceValidationResults vector of ForceValidationResult ptrs
*/
*/
std
::
string
getSummary
(
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
std
::
string
getSummary
(
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
/**
/**
* Set force tolerance
* Set force tolerance
*
*
* @param tolerance force tolerance
* @param tolerance force tolerance
*/
*/
void
setForceTolerance
(
double
tolerance
);
void
setForceTolerance
(
double
tolerance
);
/**
/**
* Get force tolerance
* Get force tolerance
*
*
* @return force tolerance
* @return force tolerance
*/
*/
double
getForceTolerance
(
void
)
const
;
double
getForceTolerance
()
const
;
/*
/*
* Get force tolerance for specified force
* Get force tolerance for specified force
...
@@ -307,7 +307,7 @@ public:
...
@@ -307,7 +307,7 @@ public:
*
*
* */
* */
double
getForceTolerance
(
const
std
::
string
&
forceName
)
const
;
double
getForceTolerance
(
const
std
::
string
&
forceName
)
const
;
/*
/*
* Get max errors to print in summary string
* Get max errors to print in summary string
...
@@ -316,7 +316,7 @@ public:
...
@@ -316,7 +316,7 @@ public:
*
*
* */
* */
int
getMaxErrorsToPrint
(
void
)
const
;
int
getMaxErrorsToPrint
()
const
;
/*
/*
* Set max errors to print in summary string
* Set max errors to print in summary string
...
@@ -325,7 +325,7 @@ public:
...
@@ -325,7 +325,7 @@ public:
*
*
* */
* */
void
setMaxErrorsToPrint
(
int
maxErrorsToPrint
);
void
setMaxErrorsToPrint
(
int
maxErrorsToPrint
);
/*
/*
* Return true if force is not to be validated (Andersen thermostat, CM motion remover, ...)
* Return true if force is not to be validated (Andersen thermostat, CM motion remover, ...)
...
@@ -335,13 +335,13 @@ public:
...
@@ -335,13 +335,13 @@ public:
* @return true if force is not currently validated
* @return true if force is not currently validated
**/
**/
int
isExcludedForce
(
std
::
string
forceName
)
const
;
int
isExcludedForce
(
std
::
string
forceName
)
const
;
private:
private:
// initialize class entries
// initialize class entries
void
_initialize
(
void
);
void
_initialize
();
/*
/*
* Format output line
* Format output line
...
@@ -354,9 +354,9 @@ private:
...
@@ -354,9 +354,9 @@ private:
*
*
* */
* */
std
::
string
_getLine
(
const
std
::
string
&
tab
,
std
::
string
_getLine
(
const
std
::
string
&
tab
,
const
std
::
string
&
description
,
const
std
::
string
&
description
,
const
std
::
string
&
value
)
const
;
const
std
::
string
&
value
)
const
;
std
::
vector
<
ForceValidationResult
*>
_forceValidationResults
;
std
::
vector
<
ForceValidationResult
*>
_forceValidationResults
;
...
...
libraries/validate/src/ValidateOpenMM.cpp
View file @
eb232608
...
@@ -54,7 +54,7 @@ const std::string ValidateOpenMM::CUSTOM_EXTERNAL_FORCE = "CustomExter
...
@@ -54,7 +54,7 @@ const std::string ValidateOpenMM::CUSTOM_EXTERNAL_FORCE = "CustomExter
const
std
::
string
ValidateOpenMM
::
CUSTOM_NONBONDED_FORCE
=
"CustomNonBonded"
;
const
std
::
string
ValidateOpenMM
::
CUSTOM_NONBONDED_FORCE
=
"CustomNonBonded"
;
ValidateOpenMM
::
ValidateOpenMM
(
void
)
{
ValidateOpenMM
::
ValidateOpenMM
()
{
_log
=
NULL
;
_log
=
NULL
;
...
@@ -82,7 +82,7 @@ int ValidateOpenMM::isNanOrInfinity( double number ){
...
@@ -82,7 +82,7 @@ int ValidateOpenMM::isNanOrInfinity( double number ){
return
(
number
!=
number
||
number
==
std
::
numeric_limits
<
double
>::
infinity
()
||
number
==
-
std
::
numeric_limits
<
double
>::
infinity
())
?
1
:
0
;
return
(
number
!=
number
||
number
==
std
::
numeric_limits
<
double
>::
infinity
()
||
number
==
-
std
::
numeric_limits
<
double
>::
infinity
())
?
1
:
0
;
}
}
FILE
*
ValidateOpenMM
::
getLog
(
void
)
const
{
FILE
*
ValidateOpenMM
::
getLog
()
const
{
return
_log
;
return
_log
;
}
}
...
...
libraries/validate/src/ValidateOpenMMForces.cpp
View file @
eb232608
...
@@ -68,7 +68,7 @@ ForceValidationResult::ForceValidationResult( const Context& context1, const Con
...
@@ -68,7 +68,7 @@ ForceValidationResult::ForceValidationResult( const Context& context1, const Con
ForceValidationResult
::~
ForceValidationResult
(
){
ForceValidationResult
::~
ForceValidationResult
(
){
}
}
void
ForceValidationResult
::
_calculateNorms
(
void
){
void
ForceValidationResult
::
_calculateNorms
(){
// ---------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------
...
@@ -195,7 +195,7 @@ std::vector<double> ForceValidationResult::getForceNorms( int forceIndex ) cons
...
@@ -195,7 +195,7 @@ std::vector<double> ForceValidationResult::getForceNorms( int forceIndex ) cons
}
}
}
}
int
ForceValidationResult
::
nansDetected
(
void
)
const
{
int
ForceValidationResult
::
nansDetected
()
const
{
return
_nansDetected
;
return
_nansDetected
;
}
}
...
@@ -203,7 +203,7 @@ void ForceValidationResult::registerInconsistentForceIndex( int index, int value
...
@@ -203,7 +203,7 @@ void ForceValidationResult::registerInconsistentForceIndex( int index, int value
_inconsistentForceIndicies
[
index
]
=
value
;
_inconsistentForceIndicies
[
index
]
=
value
;
}
}
void
ForceValidationResult
::
clearInconsistentForceIndexList
(
void
){
void
ForceValidationResult
::
clearInconsistentForceIndexList
(){
_inconsistentForceIndicies
.
clear
();
_inconsistentForceIndicies
.
clear
();
}
}
...
@@ -213,7 +213,7 @@ void ForceValidationResult::getInconsistentForceIndexList( std::vector<int>& inc
...
@@ -213,7 +213,7 @@ void ForceValidationResult::getInconsistentForceIndexList( std::vector<int>& inc
}
}
}
}
int
ForceValidationResult
::
getNumberOfInconsistentForceEntries
(
void
)
const
{
int
ForceValidationResult
::
getNumberOfInconsistentForceEntries
()
const
{
return
static_cast
<
int
>
(
_inconsistentForceIndicies
.
size
()
);
return
static_cast
<
int
>
(
_inconsistentForceIndicies
.
size
()
);
}
}
...
@@ -329,7 +329,7 @@ double ForceValidationResult::getMaxDotProduct( int* maxIndex ) const {
...
@@ -329,7 +329,7 @@ double ForceValidationResult::getMaxDotProduct( int* maxIndex ) const {
return
maxDotProduct
;
return
maxDotProduct
;
}
}
std
::
string
ForceValidationResult
::
getForceName
(
void
)
const
{
std
::
string
ForceValidationResult
::
getForceName
()
const
{
// ---------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------
...
@@ -376,7 +376,7 @@ void ForceValidationResult::compareForces( double tolerance ){
...
@@ -376,7 +376,7 @@ void ForceValidationResult::compareForces( double tolerance ){
std
::
vector
<
Vec3
>
forces2
=
getForces
(
1
);
std
::
vector
<
Vec3
>
forces2
=
getForces
(
1
);
std
::
vector
<
double
>
forceNorms2
=
getForceNorms
(
1
);
std
::
vector
<
double
>
forceNorms2
=
getForceNorms
(
1
);
clearInconsistentForceIndexList
(
);
clearInconsistentForceIndexList
();
for
(
unsigned
int
jj
=
0
;
jj
<
forces1
.
size
();
jj
++
){
for
(
unsigned
int
jj
=
0
;
jj
<
forces1
.
size
();
jj
++
){
if
(
ValidateOpenMM
::
isNanOrInfinity
(
forceNorms1
[
jj
]
)
||
ValidateOpenMM
::
isNanOrInfinity
(
forceNorms2
[
jj
]
)
){
if
(
ValidateOpenMM
::
isNanOrInfinity
(
forceNorms1
[
jj
]
)
||
ValidateOpenMM
::
isNanOrInfinity
(
forceNorms2
[
jj
]
)
){
registerInconsistentForceIndex
(
jj
);
registerInconsistentForceIndex
(
jj
);
...
@@ -406,7 +406,7 @@ void ForceValidationResult::compareForceNorms( double tolerance ){
...
@@ -406,7 +406,7 @@ void ForceValidationResult::compareForceNorms( double tolerance ){
std
::
vector
<
double
>
forceNorms0
=
getForceNorms
(
0
);
std
::
vector
<
double
>
forceNorms0
=
getForceNorms
(
0
);
std
::
vector
<
double
>
forceNorms1
=
getForceNorms
(
1
);
std
::
vector
<
double
>
forceNorms1
=
getForceNorms
(
1
);
clearInconsistentForceIndexList
(
);
clearInconsistentForceIndexList
();
for
(
unsigned
int
jj
=
0
;
jj
<
forceNorms0
.
size
();
jj
++
){
for
(
unsigned
int
jj
=
0
;
jj
<
forceNorms0
.
size
();
jj
++
){
if
(
ValidateOpenMM
::
isNanOrInfinity
(
forceNorms0
[
jj
]
)
||
ValidateOpenMM
::
isNanOrInfinity
(
forceNorms1
[
jj
]
)
){
if
(
ValidateOpenMM
::
isNanOrInfinity
(
forceNorms0
[
jj
]
)
||
ValidateOpenMM
::
isNanOrInfinity
(
forceNorms1
[
jj
]
)
){
registerInconsistentForceIndex
(
jj
);
registerInconsistentForceIndex
(
jj
);
...
@@ -420,11 +420,11 @@ void ForceValidationResult::compareForceNorms( double tolerance ){
...
@@ -420,11 +420,11 @@ void ForceValidationResult::compareForceNorms( double tolerance ){
}
}
}
}
ValidateOpenMMForces
::
ValidateOpenMMForces
(
void
)
{
ValidateOpenMMForces
::
ValidateOpenMMForces
()
{
_initialize
();
_initialize
();
}
}
void
ValidateOpenMMForces
::
_initialize
(
void
){
void
ValidateOpenMMForces
::
_initialize
(){
_forceTolerance
=
1.0e-02
;
_forceTolerance
=
1.0e-02
;
_maxErrorsToPrint
=
25
;
_maxErrorsToPrint
=
25
;
...
@@ -450,7 +450,7 @@ void ValidateOpenMMForces::_initialize( void ){
...
@@ -450,7 +450,7 @@ void ValidateOpenMMForces::_initialize( void ){
_forcesToBeExcluded
[
ANDERSEN_THERMOSTAT
]
=
1
;
_forcesToBeExcluded
[
ANDERSEN_THERMOSTAT
]
=
1
;
}
}
ValidateOpenMMForces
::~
ValidateOpenMMForces
(
){
ValidateOpenMMForces
::~
ValidateOpenMMForces
(){
for
(
unsigned
int
ii
=
0
;
ii
<
_forceValidationResults
.
size
();
ii
++
){
for
(
unsigned
int
ii
=
0
;
ii
<
_forceValidationResults
.
size
();
ii
++
){
delete
_forceValidationResults
[
ii
];
delete
_forceValidationResults
[
ii
];
...
@@ -459,7 +459,7 @@ ValidateOpenMMForces::~ValidateOpenMMForces( ){
...
@@ -459,7 +459,7 @@ ValidateOpenMMForces::~ValidateOpenMMForces( ){
}
}
double
ValidateOpenMMForces
::
getForceTolerance
(
void
)
const
{
double
ValidateOpenMMForces
::
getForceTolerance
()
const
{
return
_forceTolerance
;
return
_forceTolerance
;
}
}
...
@@ -706,7 +706,7 @@ double ValidateOpenMMForces::getForceTolerance( const std::string& forceName ) c
...
@@ -706,7 +706,7 @@ double ValidateOpenMMForces::getForceTolerance( const std::string& forceName ) c
return
_forceTolerance
;
return
_forceTolerance
;
}
}
int
ValidateOpenMMForces
::
getMaxErrorsToPrint
(
void
)
const
{
int
ValidateOpenMMForces
::
getMaxErrorsToPrint
()
const
{
return
_maxErrorsToPrint
;
return
_maxErrorsToPrint
;
}
}
...
...
olla/include/openmm/kernels.h
View file @
eb232608
...
@@ -103,11 +103,13 @@ public:
...
@@ -103,11 +103,13 @@ public:
* @param includeForce true if forces should be computed
* @param includeForce true if forces should be computed
* @param includeEnergy true if potential energy should be computed
* @param includeEnergy true if potential energy should be computed
* @param groups a set of bit flags for which force groups to include
* @param groups a set of bit flags for which force groups to include
* @param valid the method may set this to false to indicate the results are invalid and the force/energy
* calculation should be repeated
* @return the potential energy of the system. This value is added to all values returned by ForceImpls'
* @return the potential energy of the system. This value is added to all values returned by ForceImpls'
* calcForcesAndEnergy() methods. That is, each force kernel may <i>either</i> return its contribution to the
* calcForcesAndEnergy() methods. That is, each force kernel may <i>either</i> return its contribution to the
* energy directly, <i>or</i> add it to an internal buffer so that it will be included here.
* energy directly, <i>or</i> add it to an internal buffer so that it will be included here.
*/
*/
virtual
double
finishComputation
(
ContextImpl
&
context
,
bool
includeForce
,
bool
includeEnergy
,
int
groups
)
=
0
;
virtual
double
finishComputation
(
ContextImpl
&
context
,
bool
includeForce
,
bool
includeEnergy
,
int
groups
,
bool
&
valid
)
=
0
;
};
};
/**
/**
...
...
openmmapi/include/openmm/GBVIForce.h
View file @
eb232608
...
@@ -157,7 +157,7 @@ public:
...
@@ -157,7 +157,7 @@ public:
*
*
* @return number of bonds
* @return number of bonds
*/
*/
int
getNumBonds
(
void
)
const
;
int
getNumBonds
()
const
;
/**
/**
* Get the dielectric constant for the solvent.
* Get the dielectric constant for the solvent.
...
@@ -208,7 +208,7 @@ public:
...
@@ -208,7 +208,7 @@ public:
/**
/**
* Get Born radius scaling method
* Get Born radius scaling method
*/
*/
BornRadiusScalingMethod
getBornRadiusScalingMethod
(
void
)
const
;
BornRadiusScalingMethod
getBornRadiusScalingMethod
()
const
;
/**
/**
* Set Born radius scaling method
* Set Born radius scaling method
*/
*/
...
@@ -216,7 +216,7 @@ public:
...
@@ -216,7 +216,7 @@ public:
/**
/**
* Get the lower limit factor used in the quintic spline scaling method (typically 0.5-0.8)
* Get the lower limit factor used in the quintic spline scaling method (typically 0.5-0.8)
*/
*/
double
getQuinticLowerLimitFactor
(
void
)
const
;
double
getQuinticLowerLimitFactor
()
const
;
/**
/**
* Set the lower limit factor used in the quintic spline scaling method (typically 0.5-0.8)
* Set the lower limit factor used in the quintic spline scaling method (typically 0.5-0.8)
*/
*/
...
@@ -224,7 +224,7 @@ public:
...
@@ -224,7 +224,7 @@ public:
/**
/**
* Get the upper limit used in the quintic spline scaling method, measured in nm (~5.0)
* Get the upper limit used in the quintic spline scaling method, measured in nm (~5.0)
*/
*/
double
getQuinticUpperBornRadiusLimit
(
void
)
const
;
double
getQuinticUpperBornRadiusLimit
()
const
;
/**
/**
* Set the upper limit used in the quintic spline scaling method, measured in nm (~5.0)
* Set the upper limit used in the quintic spline scaling method, measured in nm (~5.0)
*/
*/
...
...
openmmapi/include/openmm/State.h
View file @
eb232608
...
@@ -108,6 +108,10 @@ public:
...
@@ -108,6 +108,10 @@ public:
* Get a map containing the values of all parameters. If this State does not contain parameters, this will throw an exception.
* Get a map containing the values of all parameters. If this State does not contain parameters, this will throw an exception.
*/
*/
const
std
::
map
<
std
::
string
,
double
>&
getParameters
()
const
;
const
std
::
map
<
std
::
string
,
double
>&
getParameters
()
const
;
/**
* Get which data types are stored in this State. The return value is a sum of DataType flags.
*/
int
getDataTypes
()
const
;
private:
private:
State
(
double
time
);
State
(
double
time
);
void
setPositions
(
const
std
::
vector
<
Vec3
>&
pos
);
void
setPositions
(
const
std
::
vector
<
Vec3
>&
pos
);
...
...
openmmapi/include/openmm/System.h
View file @
eb232608
...
@@ -168,6 +168,12 @@ public:
...
@@ -168,6 +168,12 @@ public:
* @param distance the required distance between the two particles, measured in nm
* @param distance the required distance between the two particles, measured in nm
*/
*/
void
setConstraintParameters
(
int
index
,
int
particle1
,
int
particle2
,
double
distance
);
void
setConstraintParameters
(
int
index
,
int
particle1
,
int
particle2
,
double
distance
);
/**
* Remove a constraint from the System.
*
* @param index the index of the constraint to remove
*/
void
removeConstraint
(
int
index
);
/**
/**
* Add a Force to the System. The Force should have been created on the heap with the
* Add a Force to the System. The Force should have been created on the heap with the
* "new" operator. The System takes over ownership of it, and deletes the Force when the
* "new" operator. The System takes over ownership of it, and deletes the Force when the
...
@@ -198,6 +204,13 @@ public:
...
@@ -198,6 +204,13 @@ public:
* @param index the index of the Force to get
* @param index the index of the Force to get
*/
*/
Force
&
getForce
(
int
index
);
Force
&
getForce
(
int
index
);
/**
* Remove a Force from the System. The memory associated with the removed Force
* object is deleted.
*
* @param index the index of the Force to remove
*/
void
removeForce
(
int
index
);
/**
/**
* Get the default values of the vectors defining the axes of the periodic box (measured in nm). Any newly
* Get the default values of the vectors defining the axes of the periodic box (measured in nm). Any newly
* created Context will have its box vectors set to these. They will affect
* created Context will have its box vectors set to these. They will affect
...
...
openmmapi/include/openmm/internal/vectorize_pnacl.h
View file @
eb232608
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
* Biological Structures at Stanford, funded under the NIH Roadmap for *
* Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. *
* Medical Research, grant U54 GM072970. See https://simtk.org. *
* *
* *
* Portions copyright (c) 2013-201
4
Stanford University and the Authors. *
* Portions copyright (c) 2013-201
5
Stanford University and the Authors. *
* Authors: Peter Eastman *
* Authors: Peter Eastman *
* Contributors: *
* Contributors: *
* *
* *
...
@@ -109,24 +109,12 @@ public:
...
@@ -109,24 +109,12 @@ public:
fvec4
operator
|
(
const
fvec4
&
other
)
const
{
fvec4
operator
|
(
const
fvec4
&
other
)
const
{
return
(
fvec4
)
(((
__m128i
)
val
)
|
((
__m128i
)
other
.
val
));
return
(
fvec4
)
(((
__m128i
)
val
)
|
((
__m128i
)
other
.
val
));
}
}
fvec4
operator
==
(
const
fvec4
&
other
)
const
{
ivec4
operator
==
(
const
fvec4
&
other
)
const
;
return
(
val
==
other
.
val
);
ivec4
operator
!=
(
const
fvec4
&
other
)
const
;
}
ivec4
operator
>
(
const
fvec4
&
other
)
const
;
fvec4
operator
!=
(
const
fvec4
&
other
)
const
{
ivec4
operator
<
(
const
fvec4
&
other
)
const
;
return
(
val
!=
other
.
val
);
ivec4
operator
>=
(
const
fvec4
&
other
)
const
;
}
ivec4
operator
<=
(
const
fvec4
&
other
)
const
;
fvec4
operator
>
(
const
fvec4
&
other
)
const
{
return
(
val
>
other
.
val
);
}
fvec4
operator
<
(
const
fvec4
&
other
)
const
{
return
(
val
<
other
.
val
);
}
fvec4
operator
>=
(
const
fvec4
&
other
)
const
{
return
(
val
>=
other
.
val
);
}
fvec4
operator
<=
(
const
fvec4
&
other
)
const
{
return
(
val
<=
other
.
val
);
}
operator
ivec4
()
const
;
operator
ivec4
()
const
;
};
};
...
@@ -207,42 +195,42 @@ public:
...
@@ -207,42 +195,42 @@ public:
// Conversion operators.
// Conversion operators.
inline
fvec4
::
operator
ivec4
(
)
const
{
inline
ivec4
fvec4
::
operator
==
(
const
fvec4
&
other
)
const
{
return
__
builtin_convertvector
(
val
,
__m128i
);
return
(
__
m128i
)
(
val
==
other
.
val
);
}
}
inline
ivec4
::
operator
fvec4
(
)
const
{
inline
ivec4
fvec4
::
operator
!=
(
const
fvec4
&
other
)
const
{
return
__
builtin_convertvector
(
val
,
__m128
);
return
(
__
m128i
)
(
val
!=
other
.
val
);
}
}
// Functions that operate on fvec4s.
inline
ivec4
fvec4
::
operator
>
(
const
fvec4
&
other
)
const
{
return
(
__m128i
)
(
val
>
other
.
val
);
static
inline
fvec4
floor
(
const
fvec4
&
v
)
{
return
fvec4
(
std
::
floor
(
v
[
0
]),
std
::
floor
(
v
[
1
]),
std
::
floor
(
v
[
2
]),
std
::
floor
(
v
[
3
]));
}
}
static
inline
f
vec4
ceil
(
const
fvec4
&
v
)
{
inline
i
vec4
fvec4
::
operator
<
(
const
fvec4
&
other
)
const
{
return
fvec4
(
std
::
ceil
(
v
[
0
]),
std
::
ceil
(
v
[
1
]),
std
::
ceil
(
v
[
2
]),
std
::
ceil
(
v
[
3
])
);
return
(
__m128i
)
(
val
<
other
.
val
);
}
}
static
inline
f
vec4
round
(
const
fvec4
&
v
)
{
inline
i
vec4
fvec4
::
operator
>=
(
const
fvec4
&
other
)
const
{
return
fvec4
(
std
::
round
(
v
[
0
]),
std
::
round
(
v
[
1
]),
std
::
round
(
v
[
2
]),
std
::
round
(
v
[
3
])
);
return
(
__m128i
)
(
val
>=
other
.
val
);
}
}
static
inline
fvec4
min
(
const
fvec4
&
v1
,
const
fvec4
&
v2
)
{
inline
ivec4
fvec4
::
operator
<=
(
const
fvec4
&
other
)
const
{
return
fvec4
(
std
::
min
(
v1
[
0
],
v2
[
0
]),
std
::
min
(
v1
[
1
],
v2
[
1
]),
std
::
min
(
v1
[
2
],
v2
[
2
]),
std
::
min
(
v1
[
3
],
v2
[
3
])
);
return
(
__m128i
)
(
val
<=
other
.
val
);
}
}
static
inline
fvec4
max
(
const
fvec4
&
v1
,
const
fvec4
&
v2
)
{
inline
fvec4
::
operator
ivec4
()
const
{
return
fvec4
(
std
::
max
(
v1
[
0
],
v2
[
0
]),
std
::
max
(
v1
[
1
],
v2
[
1
]),
std
::
max
(
v1
[
2
],
v2
[
2
]),
std
::
max
(
v1
[
3
],
v2
[
3
])
);
return
__builtin_convertvector
(
val
,
__m128i
);
}
}
static
inline
f
vec4
abs
(
const
fvec4
&
v
)
{
inline
i
vec4
::
operator
fvec4
()
const
{
return
fvec4
(
std
::
abs
(
v
[
0
]),
std
::
abs
(
v
[
1
]),
std
::
abs
(
v
[
2
]),
std
::
abs
(
v
[
3
])
);
return
__builtin_convertvector
(
val
,
__m128
);
}
}
static
inline
fvec4
sqrt
(
const
fvec4
&
v
)
{
// Functions that operate on fvec4s.
return
fvec4
(
std
::
sqrt
(
v
[
0
]),
std
::
sqrt
(
v
[
1
]),
std
::
sqrt
(
v
[
2
]),
std
::
sqrt
(
v
[
3
]));
static
inline
fvec4
abs
(
const
fvec4
&
v
)
{
return
v
&
(
__m128
)
ivec4
(
0x7FFFFFFF
);
}
}
static
inline
float
dot3
(
const
fvec4
&
v1
,
const
fvec4
&
v2
)
{
static
inline
float
dot3
(
const
fvec4
&
v1
,
const
fvec4
&
v2
)
{
...
@@ -252,7 +240,8 @@ static inline float dot3(const fvec4& v1, const fvec4& v2) {
...
@@ -252,7 +240,8 @@ static inline float dot3(const fvec4& v1, const fvec4& v2) {
static
inline
float
dot4
(
const
fvec4
&
v1
,
const
fvec4
&
v2
)
{
static
inline
float
dot4
(
const
fvec4
&
v1
,
const
fvec4
&
v2
)
{
fvec4
r
=
v1
*
v2
;
fvec4
r
=
v1
*
v2
;
return
r
[
0
]
+
r
[
1
]
+
r
[
2
]
+
r
[
3
];
fvec4
temp
=
__builtin_shufflevector
(
r
.
val
,
r
.
val
,
0
,
1
,
-
1
,
-
1
)
+
__builtin_shufflevector
(
r
.
val
,
r
.
val
,
2
,
3
,
-
1
,
-
1
);
return
temp
[
0
]
+
temp
[
1
];
}
}
static
inline
fvec4
cross
(
const
fvec4
&
v1
,
const
fvec4
&
v2
)
{
static
inline
fvec4
cross
(
const
fvec4
&
v1
,
const
fvec4
&
v2
)
{
...
@@ -287,7 +276,8 @@ static inline ivec4 abs(const ivec4& v) {
...
@@ -287,7 +276,8 @@ static inline ivec4 abs(const ivec4& v) {
}
}
static
inline
bool
any
(
const
__m128i
&
v
)
{
static
inline
bool
any
(
const
__m128i
&
v
)
{
return
(
v
[
0
]
||
v
[
1
]
||
v
[
2
]
||
v
[
3
]);
ivec4
temp
=
__builtin_shufflevector
(
v
,
v
,
0
,
1
,
-
1
,
-
1
)
|
__builtin_shufflevector
(
v
,
v
,
2
,
3
,
-
1
,
-
1
);
return
(
temp
[
0
]
||
temp
[
1
]);
}
}
// Mathematical operators involving a scalar and a vector.
// Mathematical operators involving a scalar and a vector.
...
@@ -311,7 +301,49 @@ static inline fvec4 operator/(float v1, const fvec4& v2) {
...
@@ -311,7 +301,49 @@ static inline fvec4 operator/(float v1, const fvec4& v2) {
// Operations for blending fvec4s based on an ivec4.
// Operations for blending fvec4s based on an ivec4.
static
inline
fvec4
blend
(
const
fvec4
&
v1
,
const
fvec4
&
v2
,
const
__m128i
&
mask
)
{
static
inline
fvec4
blend
(
const
fvec4
&
v1
,
const
fvec4
&
v2
,
const
__m128i
&
mask
)
{
return
fvec4
(
mask
[
0
]
?
v2
[
0
]
:
v1
[
0
],
mask
[
1
]
?
v2
[
1
]
:
v1
[
1
],
mask
[
2
]
?
v2
[
2
]
:
v1
[
2
],
mask
[
3
]
?
v2
[
3
]
:
v1
[
3
]);
return
(
__m128
)
((
mask
&
(
__m128i
)
v2
)
+
((
ivec4
(
0xFFFFFFFF
)
-
ivec4
(
mask
))
&
(
__m128i
)
v1
));
}
// These are at the end since they involve other functions defined above.
static
inline
fvec4
min
(
const
fvec4
&
v1
,
const
fvec4
&
v2
)
{
return
blend
(
v1
,
v2
,
v1
>
v2
);
}
static
inline
fvec4
max
(
const
fvec4
&
v1
,
const
fvec4
&
v2
)
{
return
blend
(
v1
,
v2
,
v1
<
v2
);
}
static
inline
fvec4
round
(
const
fvec4
&
v
)
{
fvec4
shift
(
0x1
.0
p23f
);
fvec4
absResult
=
(
abs
(
v
)
+
shift
)
-
shift
;
return
(
__m128
)
((
ivec4
(
0x80000000
)
&
(
__m128i
)
v
)
+
(
ivec4
(
0x7FFFFFFF
)
&
(
__m128i
)
absResult
));
}
static
inline
fvec4
floor
(
const
fvec4
&
v
)
{
fvec4
truncated
=
__builtin_convertvector
(
__builtin_convertvector
(
v
.
val
,
__m128i
),
__m128
);
return
truncated
+
blend
(
0.0
f
,
-
1.0
f
,
truncated
>
v
);
}
static
inline
fvec4
ceil
(
const
fvec4
&
v
)
{
fvec4
truncated
=
__builtin_convertvector
(
__builtin_convertvector
(
v
.
val
,
__m128i
),
__m128
);
return
truncated
+
blend
(
0.0
f
,
1.0
f
,
truncated
<
v
);
}
static
inline
fvec4
sqrt
(
const
fvec4
&
v
)
{
// Initial estimate of rsqrt().
ivec4
i
=
(
__m128i
)
v
;
i
=
ivec4
(
0x5f375a86
)
-
ivec4
(
i
.
val
>>
ivec4
(
1
).
val
);
fvec4
y
=
(
__m128
)
i
;
// Perform three iterations of Newton refinement.
fvec4
x2
=
0.5
f
*
v
;
y
*=
1.5
f
-
x2
*
y
*
y
;
y
*=
1.5
f
-
x2
*
y
*
y
;
y
*=
1.5
f
-
x2
*
y
*
y
;
return
y
*
v
;
}
}
#endif
/*OPENMM_VECTORIZE_PNACL_H_*/
#endif
/*OPENMM_VECTORIZE_PNACL_H_*/
...
...
openmmapi/src/Context.cpp
View file @
eb232608
...
@@ -143,42 +143,15 @@ State Context::getState(int types, bool enforcePeriodicBox, int groups) const {
...
@@ -143,42 +143,15 @@ State Context::getState(int types, bool enforcePeriodicBox, int groups) const {
}
}
void
Context
::
setState
(
const
State
&
state
)
{
void
Context
::
setState
(
const
State
&
state
)
{
// Determine what information the state contains.
bool
hasPositions
=
false
,
hasVelocities
=
false
,
hasParameters
=
false
;
try
{
state
.
getPositions
();
hasPositions
=
true
;
}
catch
(
OpenMMException
&
ex
)
{
// The State does not include positions.
}
try
{
state
.
getVelocities
();
hasVelocities
=
true
;
}
catch
(
OpenMMException
&
ex
)
{
// The State does not include velocities.
}
try
{
state
.
getParameters
();
hasParameters
=
true
;
}
catch
(
OpenMMException
&
ex
)
{
// The State does not include parameters.
}
// Copy it over.
setTime
(
state
.
getTime
());
setTime
(
state
.
getTime
());
Vec3
a
,
b
,
c
;
Vec3
a
,
b
,
c
;
state
.
getPeriodicBoxVectors
(
a
,
b
,
c
);
state
.
getPeriodicBoxVectors
(
a
,
b
,
c
);
setPeriodicBoxVectors
(
a
,
b
,
c
);
setPeriodicBoxVectors
(
a
,
b
,
c
);
if
(
has
Positions
)
if
(
(
state
.
getDataTypes
()
&
State
::
Positions
)
!=
0
)
setPositions
(
state
.
getPositions
());
setPositions
(
state
.
getPositions
());
if
(
has
Velocities
)
if
(
(
state
.
getDataTypes
()
&
State
::
Velocities
)
!=
0
)
setVelocities
(
state
.
getVelocities
());
setVelocities
(
state
.
getVelocities
());
if
(
has
Parameters
)
if
(
(
state
.
getDataTypes
()
&
State
::
Parameters
)
!=
0
)
for
(
map
<
string
,
double
>::
const_iterator
iter
=
state
.
getParameters
().
begin
();
iter
!=
state
.
getParameters
().
end
();
++
iter
)
for
(
map
<
string
,
double
>::
const_iterator
iter
=
state
.
getParameters
().
begin
();
iter
!=
state
.
getParameters
().
end
();
++
iter
)
setParameter
(
iter
->
first
,
iter
->
second
);
setParameter
(
iter
->
first
,
iter
->
second
);
}
}
...
...
openmmapi/src/ContextImpl.cpp
View file @
eb232608
...
@@ -260,12 +260,16 @@ double ContextImpl::calcForcesAndEnergy(bool includeForces, bool includeEnergy,
...
@@ -260,12 +260,16 @@ double ContextImpl::calcForcesAndEnergy(bool includeForces, bool includeEnergy,
throw
OpenMMException
(
"Particle positions have not been set"
);
throw
OpenMMException
(
"Particle positions have not been set"
);
lastForceGroups
=
groups
;
lastForceGroups
=
groups
;
CalcForcesAndEnergyKernel
&
kernel
=
initializeForcesKernel
.
getAs
<
CalcForcesAndEnergyKernel
>
();
CalcForcesAndEnergyKernel
&
kernel
=
initializeForcesKernel
.
getAs
<
CalcForcesAndEnergyKernel
>
();
double
energy
=
0.0
;
while
(
true
)
{
kernel
.
beginComputation
(
*
this
,
includeForces
,
includeEnergy
,
groups
);
double
energy
=
0.0
;
for
(
int
i
=
0
;
i
<
(
int
)
forceImpls
.
size
();
++
i
)
kernel
.
beginComputation
(
*
this
,
includeForces
,
includeEnergy
,
groups
);
energy
+=
forceImpls
[
i
]
->
calcForcesAndEnergy
(
*
this
,
includeForces
,
includeEnergy
,
groups
);
for
(
int
i
=
0
;
i
<
(
int
)
forceImpls
.
size
();
++
i
)
energy
+=
kernel
.
finishComputation
(
*
this
,
includeForces
,
includeEnergy
,
groups
);
energy
+=
forceImpls
[
i
]
->
calcForcesAndEnergy
(
*
this
,
includeForces
,
includeEnergy
,
groups
);
return
energy
;
bool
valid
=
true
;
energy
+=
kernel
.
finishComputation
(
*
this
,
includeForces
,
includeEnergy
,
groups
,
valid
);
if
(
valid
)
return
energy
;
}
}
}
int
ContextImpl
::
getLastForceGroups
()
const
{
int
ContextImpl
::
getLastForceGroups
()
const
{
...
...
openmmapi/src/GBVIForce.cpp
View file @
eb232608
...
@@ -77,7 +77,7 @@ void GBVIForce::setCutoffDistance(double distance) {
...
@@ -77,7 +77,7 @@ void GBVIForce::setCutoffDistance(double distance) {
cutoffDistance
=
distance
;
cutoffDistance
=
distance
;
}
}
GBVIForce
::
BornRadiusScalingMethod
GBVIForce
::
getBornRadiusScalingMethod
(
void
)
const
{
GBVIForce
::
BornRadiusScalingMethod
GBVIForce
::
getBornRadiusScalingMethod
()
const
{
return
scalingMethod
;
return
scalingMethod
;
}
}
...
@@ -85,7 +85,7 @@ void GBVIForce::setBornRadiusScalingMethod(BornRadiusScalingMethod method) {
...
@@ -85,7 +85,7 @@ void GBVIForce::setBornRadiusScalingMethod(BornRadiusScalingMethod method) {
scalingMethod
=
method
;
scalingMethod
=
method
;
}
}
double
GBVIForce
::
getQuinticLowerLimitFactor
(
void
)
const
{
double
GBVIForce
::
getQuinticLowerLimitFactor
()
const
{
return
quinticLowerLimitFactor
;
return
quinticLowerLimitFactor
;
}
}
...
@@ -93,7 +93,7 @@ void GBVIForce::setQuinticLowerLimitFactor(double inputQuinticLowerLimitFactor )
...
@@ -93,7 +93,7 @@ void GBVIForce::setQuinticLowerLimitFactor(double inputQuinticLowerLimitFactor )
quinticLowerLimitFactor
=
inputQuinticLowerLimitFactor
;
quinticLowerLimitFactor
=
inputQuinticLowerLimitFactor
;
}
}
double
GBVIForce
::
getQuinticUpperBornRadiusLimit
(
void
)
const
{
double
GBVIForce
::
getQuinticUpperBornRadiusLimit
()
const
{
return
quinticUpperBornRadiusLimit
;
return
quinticUpperBornRadiusLimit
;
}
}
...
@@ -113,7 +113,7 @@ void GBVIForce::setBondParameters( int index, int particle1, int particle2, doub
...
@@ -113,7 +113,7 @@ void GBVIForce::setBondParameters( int index, int particle1, int particle2, doub
bonds
[
index
].
bondLength
=
bondLength
;
bonds
[
index
].
bondLength
=
bondLength
;
}
}
int
GBVIForce
::
getNumBonds
(
void
)
const
{
int
GBVIForce
::
getNumBonds
()
const
{
return
(
int
)
bonds
.
size
();
return
(
int
)
bonds
.
size
();
}
}
...
...
openmmapi/src/GBVIForceImpl.cpp
View file @
eb232608
...
@@ -145,8 +145,6 @@ int GBVIForceImpl::getBondsFromForces(ContextImpl& context) {
...
@@ -145,8 +145,6 @@ int GBVIForceImpl::getBondsFromForces(ContextImpl& context) {
}
}
*/
*/
#define GBVIDebug 0
void
GBVIForceImpl
::
findScaledRadii
(
int
numberOfParticles
,
const
std
::
vector
<
std
::
vector
<
int
>
>&
bondIndices
,
void
GBVIForceImpl
::
findScaledRadii
(
int
numberOfParticles
,
const
std
::
vector
<
std
::
vector
<
int
>
>&
bondIndices
,
const
std
::
vector
<
double
>
&
bondLengths
,
std
::
vector
<
double
>
&
scaledRadii
)
const
{
const
std
::
vector
<
double
>
&
bondLengths
,
std
::
vector
<
double
>
&
scaledRadii
)
const
{
...
@@ -219,26 +217,6 @@ void GBVIForceImpl::findScaledRadii( int numberOfParticles, const std::vector<st
...
@@ -219,26 +217,6 @@ void GBVIForceImpl::findScaledRadii( int numberOfParticles, const std::vector<st
if
(
errors
){
if
(
errors
){
throw
OpenMMException
(
"GBVIForceImpl::findScaledRadii errors -- aborting"
);
throw
OpenMMException
(
"GBVIForceImpl::findScaledRadii errors -- aborting"
);
}
}
#if GBVIDebug
(
void
)
fprintf
(
stderr
,
" R q gamma scaled radii no. bnds
\n
"
);
double
totalQ
=
0.0
;
for
(
int
i
=
0
;
i
<
(
int
)
scaledRadii
.
size
();
i
++
){
double
charge
;
double
gamma
;
double
radiusI
;
owner
.
getParticleParameters
(
i
,
charge
,
radiusI
,
gamma
);
totalQ
+=
charge
;
(
void
)
fprintf
(
stderr
,
"%4d %14.5e %14.5e %14.5e %14.5e %d
\n
"
,
i
,
radiusI
,
charge
,
gamma
,
scaledRadii
[
i
],
(
int
)
bonded12
[
i
].
size
()
);
}
(
void
)
fprintf
(
stderr
,
"Total charge=%e
\n
"
,
totalQ
);
(
void
)
fflush
(
stderr
);
#endif
#undef GBVIDebug
}
}
double
GBVIForceImpl
::
calcForcesAndEnergy
(
ContextImpl
&
context
,
bool
includeForces
,
bool
includeEnergy
,
int
groups
)
{
double
GBVIForceImpl
::
calcForcesAndEnergy
(
ContextImpl
&
context
,
bool
includeForces
,
bool
includeEnergy
,
int
groups
)
{
...
...
openmmapi/src/State.cpp
View file @
eb232608
...
@@ -76,6 +76,9 @@ const map<string, double>& State::getParameters() const {
...
@@ -76,6 +76,9 @@ const map<string, double>& State::getParameters() const {
throw
OpenMMException
(
"Invoked getParameters() on a State which does not contain parameters."
);
throw
OpenMMException
(
"Invoked getParameters() on a State which does not contain parameters."
);
return
parameters
;
return
parameters
;
}
}
int
State
::
getDataTypes
()
const
{
return
types
;
}
State
::
State
(
double
time
)
:
types
(
0
),
time
(
time
),
ke
(
0
),
pe
(
0
)
{
State
::
State
(
double
time
)
:
types
(
0
),
time
(
time
),
ke
(
0
),
pe
(
0
)
{
}
}
State
::
State
()
:
types
(
0
),
time
(
0.0
),
ke
(
0
),
pe
(
0
)
{
State
::
State
()
:
types
(
0
),
time
(
0.0
),
ke
(
0
),
pe
(
0
)
{
...
...
openmmapi/src/System.cpp
View file @
eb232608
...
@@ -61,10 +61,11 @@ void System::setParticleMass(int index, double mass) {
...
@@ -61,10 +61,11 @@ void System::setParticleMass(int index, double mass) {
masses
[
index
]
=
mass
;
masses
[
index
]
=
mass
;
}
}
void
System
::
setVirtualSite
(
int
index
,
VirtualSite
*
virtualSite
)
{
void
System
::
setVirtualSite
(
int
index
,
VirtualSite
*
virtualSite
)
{
if
(
index
>=
(
int
)
virtualSites
.
size
())
if
(
index
>=
(
int
)
virtualSites
.
size
())
virtualSites
.
resize
(
getNumParticles
(),
NULL
);
virtualSites
.
resize
(
getNumParticles
(),
NULL
);
if
(
virtualSites
[
index
]
!=
NULL
)
delete
virtualSites
[
index
];
virtualSites
[
index
]
=
virtualSite
;
virtualSites
[
index
]
=
virtualSite
;
}
}
...
@@ -93,6 +94,11 @@ void System::setConstraintParameters(int index, int particle1, int particle2, do
...
@@ -93,6 +94,11 @@ void System::setConstraintParameters(int index, int particle1, int particle2, do
constraints
[
index
].
distance
=
distance
;
constraints
[
index
].
distance
=
distance
;
}
}
void
System
::
removeConstraint
(
int
index
)
{
ASSERT_VALID_INDEX
(
index
,
constraints
);
constraints
.
erase
(
constraints
.
begin
()
+
index
);
}
const
Force
&
System
::
getForce
(
int
index
)
const
{
const
Force
&
System
::
getForce
(
int
index
)
const
{
ASSERT_VALID_INDEX
(
index
,
forces
);
ASSERT_VALID_INDEX
(
index
,
forces
);
return
*
forces
[
index
];
return
*
forces
[
index
];
...
@@ -103,6 +109,12 @@ Force& System::getForce(int index) {
...
@@ -103,6 +109,12 @@ Force& System::getForce(int index) {
return
*
forces
[
index
];
return
*
forces
[
index
];
}
}
void
System
::
removeForce
(
int
index
)
{
ASSERT_VALID_INDEX
(
index
,
forces
);
delete
forces
[
index
];
forces
.
erase
(
forces
.
begin
()
+
index
);
}
void
System
::
getDefaultPeriodicBoxVectors
(
Vec3
&
a
,
Vec3
&
b
,
Vec3
&
c
)
const
{
void
System
::
getDefaultPeriodicBoxVectors
(
Vec3
&
a
,
Vec3
&
b
,
Vec3
&
c
)
const
{
a
=
periodicBoxVectors
[
0
];
a
=
periodicBoxVectors
[
0
];
b
=
periodicBoxVectors
[
1
];
b
=
periodicBoxVectors
[
1
];
...
...
platforms/cpu/include/CpuKernels.h
View file @
eb232608
...
@@ -80,11 +80,13 @@ public:
...
@@ -80,11 +80,13 @@ public:
* @param includeForce true if forces should be computed
* @param includeForce true if forces should be computed
* @param includeEnergy true if potential energy should be computed
* @param includeEnergy true if potential energy should be computed
* @param groups a set of bit flags for which force groups to include
* @param groups a set of bit flags for which force groups to include
* @param valid the method may set this to false to indicate the results are invalid and the force/energy
* calculation should be repeated
* @return the potential energy of the system. This value is added to all values returned by ForceImpls'
* @return the potential energy of the system. This value is added to all values returned by ForceImpls'
* calcForcesAndEnergy() methods. That is, each force kernel may <i>either</i> return its contribution to the
* calcForcesAndEnergy() methods. That is, each force kernel may <i>either</i> return its contribution to the
* energy directly, <i>or</i> add it to an internal buffer so that it will be included here.
* energy directly, <i>or</i> add it to an internal buffer so that it will be included here.
*/
*/
double
finishComputation
(
ContextImpl
&
context
,
bool
includeForce
,
bool
includeEnergy
,
int
groups
);
double
finishComputation
(
ContextImpl
&
context
,
bool
includeForce
,
bool
includeEnergy
,
int
groups
,
bool
&
valid
);
private:
private:
CpuPlatform
::
PlatformData
&
data
;
CpuPlatform
::
PlatformData
&
data
;
Kernel
referenceKernel
;
Kernel
referenceKernel
;
...
...
platforms/cpu/include/CpuLangevinDynamics.h
View file @
eb232608
...
@@ -31,7 +31,7 @@
...
@@ -31,7 +31,7 @@
#include "openmm/internal/ThreadPool.h"
#include "openmm/internal/ThreadPool.h"
#include "sfmt/SFMT.h"
#include "sfmt/SFMT.h"
// ---------------------------------------------------------------------------------------
namespace
OpenMM
{
class
CpuLangevinDynamics
:
public
ReferenceStochasticDynamics
{
class
CpuLangevinDynamics
:
public
ReferenceStochasticDynamics
{
public:
public:
...
@@ -95,6 +95,6 @@ private:
...
@@ -95,6 +95,6 @@ private:
OpenMM
::
RealVec
*
xPrime
;
OpenMM
::
RealVec
*
xPrime
;
};
};
//
---------------------------------------------------------------------------------------
}
//
namespace OpenMM
#endif // __CPU_LANGEVIN_DYNAMICS_H__
#endif // __CPU_LANGEVIN_DYNAMICS_H__
Prev
1
2
3
4
5
…
14
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment