<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/d062ce04e78ae04cf7780196cfacfd67ae042f83">https://github.com/macports/macports-ports/commit/d062ce04e78ae04cf7780196cfacfd67ae042f83</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new d062ce0 pymol: update to 2.4.0
</span>d062ce0 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit d062ce04e78ae04cf7780196cfacfd67ae042f83
</span>Author: jwhowarth <howarth.mailing.lists@gmail.com>
AuthorDate: Sun May 24 10:00:43 2020 -0400
<span style='display:block; white-space:pre;color:#404040;'> pymol: update to 2.4.0
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> - introduces x11/python38 variants
</span><span style='display:block; white-space:pre;color:#404040;'> - add string.split patch
</span><span style='display:block; white-space:pre;color:#404040;'> - use mmtf-cpp and msgpack
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> The APBS Tools plugin requires pmg_tk (X11) in order to run. The pdb2pqr functionality of APBS Tools also requires Python 2.7. So the x11 variant defaults to python27 while the -x11 variant defaults to python38. The x11 variant switches the default options.gui to pmg_tk to prevent pymol from favoring the pmg_qt gui.
</span>---
science/pymol/Portfile | 107 +++--
science/pymol/files/python_string_split.patch | 580 ++++++++++++++++++++++++++
2 files changed, 642 insertions(+), 45 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/science/pymol/Portfile b/science/pymol/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 03743d0..7d11dd0 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/science/pymol/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/science/pymol/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3,10 +3,9 @@
</span> PortSystem 1.0
PortGroup python 1.0
PortGroup active_variants 1.1
<span style='display:block; white-space:pre;background:#ffe0e0;'>-PortGroup compilers 1.0
</span> PortGroup github 1.0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup schrodinger pymol-open-source 2.3.0 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup schrodinger pymol-open-source 2.4.0 v
</span> name pymol
categories science chemistry
license PSF
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -20,17 +19,17 @@ platforms darwin
</span>
homepage https://www.pymol.org/
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums rmd160 2ff2f0035e3ff089a77c5e705d031fe2ac2848b4 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 802a30e638a3bdc6254ece60bef3e9739a619335ce55c36b3a4c51adf5d646d5 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 10448291
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 e7a962473732172b370e6c7a880384e7a1ffa62e \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 b0af15082c44c92c285cab341506da50407619f5dee09d98fdf2802e356219fd \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 10552074
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-compilers.choose cc cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-compilers.setup
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.cxx_standard 2011
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-variant python27 conflicts python35 python36 python37 description {Use Python 2.7} {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-variant python35 conflicts python27 python36 python37 description {Use Python 3.5} {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-variant python36 conflicts python27 python35 python37 description {Use Python 3.6} {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-variant python37 conflicts python27 python35 python36 description {Use Python 3.7} {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant python27 conflicts python35 python36 python37 python38 description {Use Python 2.7} {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant python35 conflicts python27 python36 python37 python38 description {Use Python 3.5} {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant python36 conflicts python27 python35 python37 python38 description {Use Python 3.6} {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant python37 conflicts python27 python35 python36 python38 description {Use Python 3.7} {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant python38 conflicts python27 python35 python36 python37 description {Use Python 3.8} {}
</span>
if {[variant_isset python35]} {
python.default_version 35
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -38,39 +37,58 @@ if {[variant_isset python35]} {
</span> python.default_version 36
} elseif {[variant_isset python37]} {
python.default_version 37
<span style='display:block; white-space:pre;background:#e0ffe0;'>+} elseif {[variant_isset python38]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ python.default_version 38
</span> } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- default_variants +python27
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- python.default_version 27
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[variant_isset x11]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # The APBS Tools plugin requires pdb2pqr
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # which can't be run under python3 yet
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default_variants +python27
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ python.default_version 27
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default_variants +python38
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ python.default_version 38
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
python.link_binaries no
<span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_lib-append port:freeglut \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:freetype \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:glew \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:glm \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:libpng \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:libGLU \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:libxml2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:mesa \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:py${python.version}-numpy \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:py${python.version}-pmw \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:py${python.version}-pyqt5 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:py${python.version}-tkinter \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:tcl \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:tk
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_run port:xdpyinfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append port:freetype \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:glew \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:glm \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libpng \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libGLU \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libxml2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:msgpack \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:mmtf-cpp \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:netcdf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python.version}-numpy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {![variant_isset x11]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append port:py${python.version}-pyqt5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# py-scipy is not universal
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-universal_variant no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant x11 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append port:freeglut \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:mesa \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python.version}-pmw \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python.version}-tkinter \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python.version}-tkinter \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:tcl \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:tk
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ require_active_variants tcl "" corefoundation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ require_active_variants tk "" quartz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles pymol_shell.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- pmg_tk_platform.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- apbs-psize.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- pdb2pqr.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- setup.py.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# py-scipy is not universal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+universal_variant no
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-require_active_variants tcl "" corefoundation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-require_active_variants tk "" quartz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles pymol_shell.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pmg_tk_platform.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ apbs-psize.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ python_string_split.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pdb2pqr.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ setup.py.diff
</span>
post-patch {
reinplace "s|@PREFIX@|${prefix}|g" ${worksrcpath}/setup.py ${worksrcpath}/modules/pmg_tk/startup/apbs_tools.py
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -81,22 +99,21 @@ post-patch {
</span>
use_parallel_build yes
<span style='display:block; white-space:pre;background:#ffe0e0;'>-build {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-destroot.cmd ${python.bin} setup.py --no-user-cfg --osx-frameworks --glut --use-msgpackc=no
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-pre-destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- destroot.env CC=${configure.cc} CXX=${configure.cxx} PREFIX_PATH=${prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {[variant_isset x11]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build.cmd ${python.bin} setup.py --no-user-cfg --no-osx-frameworks --glut
</span> }
post-destroot {
file copy ${worksrcpath}/setup/pymol_macports ${destroot}${prefix}/bin/pymol
file attributes ${destroot}${prefix}/bin/pymol -permissions a+x
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![variant_isset x11]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file delete ${destroot}${python.pkgd}/pmg_tk/startup/apbs_tools.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s|options.gui \= \'pmg_qt\'|options.gui \= \'pmg_tk\'|g" ${destroot}${python.pkgd}/pymol/invocation.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
test.run yes
test.dir ${worksrcpath}/test
test.cmd ${python.bin}
test.target run
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-notes "Pymol can be started with the classic Tk GUI by appending the '-N pmg_tk' runtime option."
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/science/pymol/files/python_string_split.patch b/science/pymol/files/python_string_split.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..e6f7c28
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/science/pymol/files/python_string_split.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,580 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From aa0645e90fb6aab6180cca726e3f2a2453cde829 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Thomas Holder <thomas.holder@schrodinger.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 22 May 2020 08:45:20 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Fix #101 `string.split()` usage in apbs_tools.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Patch by @jwhowarth
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ modules/pmg_tk/startup/apbs_tools.py | 3 +--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git modules/pmg_tk/startup/apbs_tools.py modules/pmg_tk/startup/apbs_tools.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 75f06f22..473379bc 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- modules/pmg_tk/startup/apbs_tools.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ modules/pmg_tk/startup/apbs_tools.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -145,7 +145,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tempfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import os,math,re
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import sys
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if sys.version_info[0] < 3:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -269,7 +268,7 @@ def verify(name,f):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ searchDirs.append(os.path.join("/sw", "share", "apbs-mpi-lammpi", "tools", "manip"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ searchDirs.append(os.path.join("/usr", "local", "share", "tools", "manip"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- searchDirs.extend(string.split(os.environ["PATH"], ":"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ searchDirs.extend(os.environ["PATH"].split(":"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ searchDirs.append(os.path.join("/usr", "local", "bin"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ searchDirs.append(os.path.join("/opt", "local", "bin"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ searchDirs.append(os.path.join("/sw", "bin"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From e1122b078e43fb7e503a32ed5c6176e8d36ec4ea Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Thomas Holder <thomas.holder@schrodinger.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 22 May 2020 08:52:37 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Fix remaining `string` module uses
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ examples/devel/importing.py | 3 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ examples/devel/syncmol.py | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ modules/chempy/cc1.py | 8 +--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ modules/chempy/mmd.py | 15 +++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ modules/chempy/mol.py | 11 ++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ modules/chempy/pdb.py | 15 +++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ modules/chempy/sdf.py | 7 +--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ modules/chempy/tinker/amber.py | 101 ++++++++++++++++-----------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ modules/chempy/tinker/state.py | 9 ++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 9 files changed, 81 insertions(+), 90 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git examples/devel/importing.py examples/devel/importing.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f704356f..2daadf58 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- examples/devel/importing.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ examples/devel/importing.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -12,13 +12,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # sleep a second after importing.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import __main__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # note that passing in a "-z" option would keep the window hidden
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # until you called pymol.cmd.window("show").
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-__main__.pymol_argv= string.split("pymol -qxiF -X 300 -Y 100 -H 400 -W 400")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++__main__.pymol_argv= "pymol -qxiF -X 300 -Y 100 -H 400 -W 400".split()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import pymol
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # give PyMOL enough time to initialize (we need to find a safe and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git examples/devel/syncmol.py examples/devel/syncmol.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ef55cd24..bbce8926 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- examples/devel/syncmol.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ examples/devel/syncmol.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -195,7 +195,7 @@ def handle(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ _stdin_reader_thread.setDaemon(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ _stdin_reader_thread.start()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ elif tok == 'send':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- addr = string.split(sys.argv.pop(),':')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ addr = sys.argv.pop().split(':')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if len(addr)==1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ host = 'localhost'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port = int(addr[0])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git modules/chempy/cc1.py modules/chempy/cc1.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 199fff4a..2328c988 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- modules/chempy/cc1.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ modules/chempy/cc1.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -15,8 +15,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from chempy.models import Indexed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from chempy import Storage,Atom,Bond
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class CC1(Storage): # ChemDraw3D 5.0 std., cartesian coordinates
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def fromList(self,molList):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -33,12 +31,12 @@ def fromList(self,molList):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for a in range(nAtom):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at = Atom()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.index = cnt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- id_dict[string.strip(molList[irec][3:8])] = at.index
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ id_dict[molList[irec][3:8].strip()] = at.index
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.coord = [float(molList[irec][8:20]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ float(molList[irec][20:32]),float(molList[irec][32:44])]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- at.symbol = string.strip(molList[irec][0:3])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ at.symbol = molList[irec][0:3].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.numeric_type = int(molList[irec][44:49])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- lst = string.split(string.strip(molList[irec][49:]))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lst = molList[irec][49:].split()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.bonds = lst
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ irec = irec + 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cnt = cnt + 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git modules/chempy/mmd.py modules/chempy/mmd.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ef8e16fe..a93262c3 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- modules/chempy/mmd.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ modules/chempy/mmd.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -17,7 +17,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from chempy.models import Indexed,Connected
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from chempy import Storage,Atom,Bond
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import copy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class MMD(Storage):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -29,7 +28,7 @@ def fromList(self,MMODList):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # get header information
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ nAtom = int(MMODList[0][1:6])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- model.molecule.title = string.strip(MMODList[0][8:])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ model.molecule.title = MMODList[0][8:].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ irec = 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # loop through atoms
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -42,7 +41,7 @@ def fromList(self,MMODList):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.numeric_type = int(MMODList[irec][1:4])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # extract connectivity information
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- tokens = string.splitfields(MMODList[irec][5:52])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ tokens = MMODList[irec][5:52].split()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.neighbor = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.bondorder = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -61,20 +60,20 @@ def fromList(self,MMODList):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # extract other information
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.coord = [float(MMODList[irec][53:64]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ float(MMODList[irec][65:76]), float(MMODList[irec][77:88])]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- at.resi = string.strip(MMODList[irec][89:94])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ at.resi = MMODList[irec][89:94].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.resi_number = int(at.resi)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- resn_code = string.strip(MMODList[irec][94:95])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ resn_code = MMODList[irec][94:95].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if len(resn_code): at.resn_code = resn_code
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- color_code = string.strip(MMODList[irec][96:100])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ color_code = MMODList[irec][96:100].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if color_code!='':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.color_code = int(color_code)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.color_code = 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- chain = string.strip(MMODList[irec][95:96])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ chain = MMODList[irec][95:96].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if len(chain): at.chain = chain
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.partial_charge = float(MMODList[irec][100:109])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.resn = MMODList[irec][119:123]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- name = string.strip(MMODList[irec][124:128])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ name = MMODList[irec][124:128].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if len(name): at.name = name
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ model.atom.append(at)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ irec = irec + 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git modules/chempy/mol.py modules/chempy/mol.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 175a248f..748a0aed 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- modules/chempy/mol.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ modules/chempy/mol.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -20,7 +20,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ except ImportError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CmdException = Exception
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class MOL(Storage):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -29,9 +28,9 @@ def fromList(self,molList):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ model = Indexed()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # read header information
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- model.molecule.title = string.strip(molList[0])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- model.molecule.dim_code = string.strip(molList[1][20:22])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- model.molecule.comments = string.strip(molList[2])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ model.molecule.title = molList[0].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ model.molecule.dim_code = molList[1][20:22].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ model.molecule.comments = molList[2].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ model.molecule.chiral = int(molList[3][12:15])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ except:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -48,7 +47,7 @@ def fromList(self,molList):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.index = cnt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.coord = [float(molList[irec][0:10]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ float(molList[irec][10:20]),float(molList[irec][20:30])]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- at.symbol = string.strip(molList[irec][31:33])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ at.symbol = molList[irec][31:33].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.stereo = int(molList[irec][39:42])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ except:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -75,7 +74,7 @@ def fromList(self,molList):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # obtain formal charges from M CHG record
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while molList[irec][0:6]!='M END':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if molList[irec][0:6]=='M CHG':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- cl = string.split(string.strip(molList[irec][6:]))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cl = molList[irec][6:].split()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cll = int(cl[0])*2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a=1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while a<=cll:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git modules/chempy/pdb.py modules/chempy/pdb.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 505731e2..0d061be3 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- modules/chempy/pdb.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ modules/chempy/pdb.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -14,7 +14,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from chempy import Storage,Atom
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from chempy.models import Indexed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class PDB(Storage):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -31,11 +30,11 @@ def fromList(self,list): # currently no handling of conect records
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at = Atom()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if rec[0]=='A': at.hetatm=0 # default is 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.index = cnt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- at.name = string.strip(rec[12:16])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- at.alt = string.strip(rec[16:17])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- at.resn = string.strip(rec[17:20])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- at.chain = string.strip(rec[21:22])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- at.resi = string.strip(rec[22:27]) # note: insertion is part of resi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ at.name = rec[12:16].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ at.alt = rec[16:17].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ at.resn = rec[17:20].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ at.chain = rec[21:22].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ at.resi = rec[22:27].strip() # note: insertion is part of resi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.resi_number = int(rec[22:26])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.coord = [float(rec[30:38]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ float(rec[38:46]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -48,8 +47,8 @@ def fromList(self,list): # currently no handling of conect records
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.b = float(rec[60:66])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ except ValueError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.b = 0.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- at.segi = string.strip(rec[72:76])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- at.symbol = string.strip(rec[76:78])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ at.segi = rec[72:76].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ at.symbol = rec[76:78].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if not len(at.symbol):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ at.symbol = at.name[0:1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if at.symbol in '012345678':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git modules/chempy/sdf.py modules/chempy/sdf.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index a36cd8d3..78e462f8 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- modules/chempy/sdf.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ modules/chempy/sdf.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -14,7 +14,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from __future__ import print_function
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import re
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import copy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -66,7 +65,7 @@ def __init__(self,sdflist):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sd = self.data[kee]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ l = l + 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while l<ll:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if len(string.strip(sdflist[l]))!=0:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if sdflist[l].strip():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sd.append(sdflist[l])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ l = l + 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -98,7 +97,7 @@ def get_single(self,kee): # automatic stripping
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if kee in self.data:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sdk = self.data[kee]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if len(sdk):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return string.strip(sdk[0])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return sdk[0].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -142,7 +141,7 @@ def __init__(*args):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if mode=='pf': # pseudofile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.file = fname
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- elif (mode[0:1]=='r') and (string.find(fname,':')>1):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ elif mode[0:1] == 'r' and '://' in fname:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # does this look like a URL? (but not a DOS path)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from urllib import urlopen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git modules/chempy/tinker/amber.py modules/chempy/tinker/amber.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7ded34b2..1f4deec0 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- modules/chempy/tinker/amber.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ modules/chempy/tinker/amber.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -16,7 +16,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from chempy import feedback
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import copy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default_extra = { # atomic number, and normal valency (for tinker)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -126,33 +125,33 @@ def __init__(self,fname):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.type = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.mw = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while 1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- l = string.strip(f.readline())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l = f.readline().strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if not len(l): break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- a2 = string.strip(l[0:2])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ a2 = l[0:2].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.type.append(a2)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- self.mw[a2] = [float(l[3:13]),string.strip(l[34:])]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ self.mw[a2] = [float(l[3:13]),l[34:].strip()]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # skip 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ l = f.readline()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # read bonds
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.bond = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while 1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- l = string.strip(f.readline())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l = f.readline().strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if not len(l): break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a5 = l[0:5]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.bond[a5] = [float(l[5:12]),float(l[12:22]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- string.strip(l[22:])]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l[22:].strip()]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # read angles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.angle = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while 1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- l = string.strip(f.readline())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l = f.readline().strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if not len(l): break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a5 = l[0:8]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.angle[a5] = [float(l[8:16]),float(l[16:28]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- string.strip(l[28:])]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l[28:].strip()]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # read torsion
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.torsion = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while 1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- l = string.strip(f.readline())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l = f.readline().strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if not len(l): break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a5 = l[0:11]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if a5 in self.torsion:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -161,49 +160,49 @@ def __init__(self,fname):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ float(l[15:27]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ float(l[27:36]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ abs(int(float(l[40:52]))),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- string.strip(l[52:])])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l[52:].strip()])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.torsion[a5] = [int(l[11:15]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ float(l[15:27]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ float(l[27:36]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ abs(int(float(l[40:52]))),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- string.strip(l[52:])]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l[52:].strip()]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # read impropers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.improper = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while 1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- l = string.strip(f.readline())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l = f.readline().strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if not len(l): break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a5 = l[0:11]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.improper[a5] = [float(l[15:27]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ float(l[27:40]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ abs(int(float(l[40:51]))),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- string.strip(l[51:])]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l[51:].strip()]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # skip
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while 1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- l = string.strip(f.readline())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l = f.readline().strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if not len(l): break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # read vdw equivalents
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.vdw_eq = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while 1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- l = string.strip(f.readline())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l = f.readline().strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if not len(l): break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- a4 = string.strip(l[0:4])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ a4 = l[0:4].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ l = l[4:]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while len(l):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- self.vdw_eq[string.strip(l[0:4])] = a4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ self.vdw_eq[l[0:4].strip()] = a4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ l = l[4:]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # skip
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- l = string.strip(f.readline())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l = f.readline().strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # read vdw parameters
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.vdw = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while 1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- l = string.strip(f.readline())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l = f.readline().strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if not len(l): break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ l = ' ' + l
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- a4 = string.strip(l[0:4])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ a4 = l[0:4].strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.vdw[a4] = [float(l[4:20]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ float(l[20:37]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- string.strip(l[37:])]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l[37:].strip()]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # read extra tinker information if present
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.extra = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -211,7 +210,7 @@ def __init__(self,fname):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ l = f.readline()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if not l: break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if l[0:6] == 'TINKER':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- self.extra[string.strip(l[6:12])] = [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ self.extra[l[6:12].strip()] = [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int(l[12:18]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int(l[18:24])]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if not self.extra:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -757,7 +756,7 @@ def write_tinker_prm(self,fname,proofread=None,smooth=None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # bonds
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bond = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for a in list(self.bond.keys()):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- kee = (map[string.strip(a[0:2])],map[string.strip(a[3:5])])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kee = (map[a[0:2].strip()],map[a[3:5].strip()])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bond[kee] = a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kees = list(bond.keys())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kees.sort()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -768,9 +767,9 @@ def write_tinker_prm(self,fname,proofread=None,smooth=None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # angles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ angle = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for a in list(self.angle.keys()):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- kee = (map[string.strip(a[0:2])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[3:5])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[6:8])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kee = (map[a[0:2].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[3:5].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[6:8].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ angle[kee] = a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kees = list(angle.keys())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -783,10 +782,10 @@ def write_tinker_prm(self,fname,proofread=None,smooth=None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if not smooth:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ improper = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for a in self.improper.keys():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- kee = (map[string.strip(a[0:2])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[3:5])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[6:8])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[9:11])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kee = (map[a[0:2].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[3:5].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[6:8].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[9:11].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ improper[kee] = a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kees = list(improper.keys())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -799,10 +798,10 @@ def write_tinker_prm(self,fname,proofread=None,smooth=None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ improper = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for a in self.improper.keys():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- kee = (map[string.strip(a[0:2])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[3:5])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[6:8])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[9:11])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kee = (map[a[0:2].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[3:5].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[6:8].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[9:11].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ improper[kee] = a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kees = list(improper.keys())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -814,10 +813,10 @@ def write_tinker_prm(self,fname,proofread=None,smooth=None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # torsions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ torsion = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for a in self.torsion.keys():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- kee = (map[string.strip(a[0:2])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[3:5])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[6:8])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[9:11])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kee = (map[a[0:2].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[3:5].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[6:8].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[9:11].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ torsion[kee] = a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kees = list(torsion.keys())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -834,7 +833,7 @@ def write_tinker_prm(self,fname,proofread=None,smooth=None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lst[0]/div,lst[1],lst[2])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lst = lst[5:]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while len(st)>79:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- st = string.replace(st,' ',' ')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ st = st.replace(' ',' ')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f.write(st+"\n")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # null charge records
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for c in range(len(self.present)):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -876,7 +875,7 @@ def get_list(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bnd_list = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bond = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for a in list(self.bond.keys()):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- kee = (map[string.strip(a[0:2])],map[string.strip(a[3:5])])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kee = (map[a[0:2].strip()],map[a[3:5].strip()])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bond[kee] = a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kees = list(bond.keys())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kees.sort()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -888,9 +887,9 @@ def get_list(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ang_list = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ angle = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for a in self.angle.keys():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- kee = (map[string.strip(a[0:2])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[3:5])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[6:8])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kee = (map[a[0:2].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[3:5].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[6:8].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ angle[kee] = a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kees = list(angle.keys())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -903,10 +902,10 @@ def get_list(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ imp_list = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ improper = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for a in self.improper.keys():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- kee = (map[string.strip(a[0:2])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[3:5])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[6:8])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[9:11])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kee = (map[a[0:2].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[3:5].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[6:8].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[9:11].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ improper[kee] = a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kees = list(improper.keys())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -920,10 +919,10 @@ def get_list(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tor_list = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ torsion = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for a in self.torsion.keys():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- kee = (map[string.strip(a[0:2])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[3:5])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[6:8])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- map[string.strip(a[9:11])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kee = (map[a[0:2].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[3:5].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[6:8].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ map[a[9:11].strip()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ torsion[kee] = a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kees = list(torsion.keys())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git modules/chempy/tinker/state.py modules/chempy/tinker/state.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 93e3f286..2df7187e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- modules/chempy/tinker/state.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ modules/chempy/tinker/state.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -17,7 +17,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from chempy import tinker,io,feedback
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from chempy.tinker import keyword
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import copy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class State:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -81,15 +80,15 @@ def analyze(self,kw=None,summary=1):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if not flag:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if lin[0:25]==' Total Potential Energy :':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.summary.append([
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- string.strip(lin[0:23]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lin[0:23].strip(),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ float(lin[25:49])])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ flag = 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- tok = string.split(string.strip(lin))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ tok = lin.split()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if len(tok):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(tok[0]!='Energy'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.summary.append([
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- string.strip(lin[0:23]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lin[0:23].strip(),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ float(lin[25:49]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int(lin[49:64])])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f.close()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -150,7 +149,7 @@ def minimize(self,gradient=0.1,max_iter=100,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ float(lin[41:51]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ float(lin[51:60]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int(lin[60:67]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- string.strip(lin[67:])])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lin[67:].strip()])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ except ValueError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pass
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f.close()
</span></pre><pre style='margin:0'>
</pre>