<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>