From e97a8222944faeba7da3404701f076a12ecb6765 Mon Sep 17 00:00:00 2001
From: Gerardo Tauriello <gerardo.tauriello@unibas.ch>
Date: Fri, 12 Jul 2019 12:08:23 +0200
Subject: [PATCH] Updated compiled doc.

---
 doc/html/_modules/index.html                  |  167 --
 doc/html/_modules/promod3.html                |  177 --
 doc/html/_modules/promod3/core/helper.html    |  263 ---
 .../_modules/promod3/core/pm3argparse.html    |  858 ---------
 .../promod3/modelling/_closegaps.html         | 1659 -----------------
 .../_modules/promod3/modelling/_denovo.html   |  232 ---
 .../promod3/modelling/_fragger_handle.html    |  455 -----
 .../promod3/modelling/_molprobity.html        |  221 ---
 .../promod3/modelling/_monte_carlo.html       |  194 --
 .../_modules/promod3/modelling/_pipeline.html |  601 ------
 .../modelling/_reconstruct_sidechains.html    |  625 -------
 .../promod3/modelling/_ring_punches.html      |  340 ----
 doc/html/_modules/test_actions.html           |  229 ---
 doc/html/_sources/actions/index.txt           |   23 +
 doc/html/_sources/buildsystem.txt             |   13 +-
 doc/html/_sources/changelog.txt               |   18 +
 doc/html/_sources/container/docker.txt        |   13 +-
 doc/html/_sources/container/singularity.txt   |   23 +-
 doc/html/_sources/contributing.txt            |   27 +-
 doc/html/_sources/gettingstarted.txt          |    7 +
 doc/html/_sources/index.txt                   |    2 +
 doc/html/_sources/modelling/pipeline.txt      |   22 +
 doc/html/_sources/portableIO.txt              |    2 +-
 doc/html/_sources/sidechain/rotamer.txt       |  131 +-
 .../sidechain/rotamer_constructor.txt         |  201 +-
 doc/html/_sources/user_contributions.txt      |   26 +
 doc/html/_sources/users.txt                   |    1 +
 doc/html/actions/index.html                   |   36 +-
 doc/html/actions/index_dev.html               |   18 +-
 doc/html/buildsystem.html                     |   21 +-
 doc/html/changelog.html                       |   27 +-
 doc/html/cmake/index.html                     |    8 +-
 doc/html/container/docker.html                |   23 +-
 doc/html/container/index.html                 |    8 +-
 doc/html/container/singularity.html           |   25 +-
 doc/html/contributing.html                    |   38 +-
 doc/html/core/geometry.html                   |   50 +-
 doc/html/core/graph_minimizer.html            |    8 +-
 doc/html/core/helper.html                     |   18 +-
 doc/html/core/index.html                      |    8 +-
 doc/html/core/pm3argparse.html                |   66 +-
 doc/html/core/runtime_profiling.html          |    8 +-
 doc/html/core/setcompoundschemlib.html        |   14 +-
 doc/html/dev_setup.html                       |    8 +-
 doc/html/developers.html                      |   15 +-
 doc/html/genindex.html                        |  175 +-
 doc/html/gettingstarted.html                  |   31 +-
 doc/html/index.html                           |   10 +-
 doc/html/license.html                         |    8 +-
 doc/html/loop/all_atom.html                   |   56 +-
 doc/html/loop/backbone.html                   |   72 +-
 doc/html/loop/index.html                      |    8 +-
 doc/html/loop/load_loop_objects.html          |    8 +-
 doc/html/loop/mm_system_creation.html         |   48 +-
 doc/html/loop/structure_db.html               |   40 +-
 doc/html/loop/torsion_sampler.html            |   52 +-
 doc/html/modelling/algorithms.html            |   42 +-
 doc/html/modelling/gap_handling.html          |   24 +-
 doc/html/modelling/index.html                 |    8 +-
 doc/html/modelling/loop_candidates.html       |   28 +-
 doc/html/modelling/loop_closing.html          |   26 +-
 doc/html/modelling/model_checking.html        |   44 +-
 doc/html/modelling/monte_carlo.html           |   26 +-
 doc/html/modelling/pipeline.html              |  274 ++-
 .../modelling/sidechain_reconstruction.html   |   18 +-
 doc/html/objects.inv                          |  Bin 7474 -> 7606 bytes
 doc/html/portableIO.html                      |   14 +-
 doc/html/py-modindex.html                     |    8 +-
 doc/html/references.html                      |    8 +-
 doc/html/scoring/all_atom_scorers.html        |    8 +-
 doc/html/scoring/backbone_score_env.html      |   22 +-
 doc/html/scoring/backbone_scorers.html        |   18 +-
 doc/html/scoring/index.html                   |    8 +-
 doc/html/scoring/other_scoring_functions.html |    8 +-
 doc/html/search.html                          |    8 +-
 doc/html/searchindex.js                       |    2 +-
 doc/html/sidechain/disulfid.html              |   20 +-
 doc/html/sidechain/frame.html                 |    8 +-
 doc/html/sidechain/graph.html                 |    8 +-
 doc/html/sidechain/index.html                 |   18 +-
 doc/html/sidechain/loading.html               |    8 +-
 doc/html/sidechain/rotamer.html               |  194 +-
 doc/html/sidechain/rotamer_constructor.html   |  228 ++-
 doc/html/sidechain/rotamer_id.html            |   14 +-
 doc/html/sidechain/rotamer_lib.html           |   12 +-
 doc/html/sidechain/subrotamer_optimizer.html  |    8 +-
 doc/html/user_contributions.html              |  110 ++
 doc/html/users.html                           |    9 +-
 88 files changed, 1673 insertions(+), 6995 deletions(-)
 delete mode 100644 doc/html/_modules/index.html
 delete mode 100644 doc/html/_modules/promod3.html
 delete mode 100644 doc/html/_modules/promod3/core/helper.html
 delete mode 100644 doc/html/_modules/promod3/core/pm3argparse.html
 delete mode 100644 doc/html/_modules/promod3/modelling/_closegaps.html
 delete mode 100644 doc/html/_modules/promod3/modelling/_denovo.html
 delete mode 100644 doc/html/_modules/promod3/modelling/_fragger_handle.html
 delete mode 100644 doc/html/_modules/promod3/modelling/_molprobity.html
 delete mode 100644 doc/html/_modules/promod3/modelling/_monte_carlo.html
 delete mode 100644 doc/html/_modules/promod3/modelling/_pipeline.html
 delete mode 100644 doc/html/_modules/promod3/modelling/_reconstruct_sidechains.html
 delete mode 100644 doc/html/_modules/promod3/modelling/_ring_punches.html
 delete mode 100644 doc/html/_modules/test_actions.html
 create mode 100644 doc/html/_sources/user_contributions.txt
 create mode 100644 doc/html/user_contributions.html

diff --git a/doc/html/_modules/index.html b/doc/html/_modules/index.html
deleted file mode 100644
index 34b3643f..00000000
--- a/doc/html/_modules/index.html
+++ /dev/null
@@ -1,167 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>Overview: module code &mdash; ProMod3 1.3.0 documentation</title>
-    
-    <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
-    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../',
-        VERSION:     '1.3.0',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../_static/jquery.js"></script>
-    <script type="text/javascript" src="../_static/underscore.js"></script>
-    <script type="text/javascript" src="../_static/doctools.js"></script>
-    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
-   
-  <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
-  
-  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
-
-  </head>
-  <body role="document">
-  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body" role="main">
-            
-  <h1>All modules for which code is available</h1>
-<ul><li><a href="AllAtomClashScorer.html">AllAtomClashScorer</a></li>
-<li><a href="AllAtomEnv.html">AllAtomEnv</a></li>
-<li><a href="AllAtomInteractionScorer.html">AllAtomInteractionScorer</a></li>
-<li><a href="AllAtomOverallScorer.html">AllAtomOverallScorer</a></li>
-<li><a href="AllAtomPackingScorer.html">AllAtomPackingScorer</a></li>
-<li><a href="AllAtomPositions.html">AllAtomPositions</a></li>
-<li><a href="AllAtomRelaxer.html">AllAtomRelaxer</a></li>
-<li><a href="AllAtomScorer.html">AllAtomScorer</a></li>
-<li><a href="AminoAcidLookup.html">AminoAcidLookup</a></li>
-<li><a href="BBDepRotamerLib.html">BBDepRotamerLib</a></li>
-<li><a href="BackboneList.html">BackboneList</a></li>
-<li><a href="BackboneOverallScorer.html">BackboneOverallScorer</a></li>
-<li><a href="BackboneRelaxer.html">BackboneRelaxer</a></li>
-<li><a href="BackboneScoreEnv.html">BackboneScoreEnv</a></li>
-<li><a href="BackboneScorer.html">BackboneScorer</a></li>
-<li><a href="CBPackingScorer.html">CBPackingScorer</a></li>
-<li><a href="CBetaScorer.html">CBetaScorer</a></li>
-<li><a href="CCD.html">CCD</a></li>
-<li><a href="CCDCloser.html">CCDCloser</a></li>
-<li><a href="CTerminalCloser.html">CTerminalCloser</a></li>
-<li><a href="ClashScorer.html">ClashScorer</a></li>
-<li><a href="DeNovoCloser.html">DeNovoCloser</a></li>
-<li><a href="DirtyCCDCloser.html">DirtyCCDCloser</a></li>
-<li><a href="DiscoContainer.html">DiscoContainer</a></li>
-<li><a href="ExponentialCooler.html">ExponentialCooler</a></li>
-<li><a href="FRMRotamer.html">FRMRotamer</a></li>
-<li><a href="FRMRotamerGroup.html">FRMRotamerGroup</a></li>
-<li><a href="ForcefieldLookup.html">ForcefieldLookup</a></li>
-<li><a href="FragDB.html">FragDB</a></li>
-<li><a href="Fragger.html">Fragger</a></li>
-<li><a href="FraggerMap.html">FraggerMap</a></li>
-<li><a href="FragmentSampler.html">FragmentSampler</a></li>
-<li><a href="FrameResidue.html">FrameResidue</a></li>
-<li><a href="FullGapExtender.html">FullGapExtender</a></li>
-<li><a href="GapExtender.html">GapExtender</a></li>
-<li><a href="GraphMinimizer.html">GraphMinimizer</a></li>
-<li><a href="HBondScorer.html">HBondScorer</a></li>
-<li><a href="KIC.html">KIC</a></li>
-<li><a href="KICCloser.html">KICCloser</a></li>
-<li><a href="LinearScorer.html">LinearScorer</a></li>
-<li><a href="LoopCandidates.html">LoopCandidates</a></li>
-<li><a href="MmSystemCreator.html">MmSystemCreator</a></li>
-<li><a href="ModellingHandle.html">ModellingHandle</a></li>
-<li><a href="NTerminalCloser.html">NTerminalCloser</a></li>
-<li><a href="PairwiseScorer.html">PairwiseScorer</a></li>
-<li><a href="Particle.html">Particle</a></li>
-<li><a href="PhiPsiSampler.html">PhiPsiSampler</a></li>
-<li><a href="PsipredPrediction.html">PsipredPrediction</a></li>
-<li><a href="RRMRotamer.html">RRMRotamer</a></li>
-<li><a href="RRMRotamerGroup.html">RRMRotamerGroup</a></li>
-<li><a href="ReducedScorer.html">ReducedScorer</a></li>
-<li><a href="RotamerGraph.html">RotamerGraph</a></li>
-<li><a href="RotamerLib.html">RotamerLib</a></li>
-<li><a href="RotamerLibEntry.html">RotamerLibEntry</a></li>
-<li><a href="SCWRLRotamerConstructor.html">SCWRLRotamerConstructor</a></li>
-<li><a href="SSAgreementScorer.html">SSAgreementScorer</a></li>
-<li><a href="ScoreContainer.html">ScoreContainer</a></li>
-<li><a href="ScoringGapExtender.html">ScoringGapExtender</a></li>
-<li><a href="ScoringWeights.html">ScoringWeights</a></li>
-<li><a href="ShiftExtension.html">ShiftExtension</a></li>
-<li><a href="SidechainReconstructor.html">SidechainReconstructor</a></li>
-<li><a href="SoftSampler.html">SoftSampler</a></li>
-<li><a href="StaticRuntimeProfiler.html">StaticRuntimeProfiler</a></li>
-<li><a href="StructuralGap.html">StructuralGap</a></li>
-<li><a href="StructureDB.html">StructureDB</a></li>
-<li><a href="TorsionSampler.html">TorsionSampler</a></li>
-<li><a href="TorsionScorer.html">TorsionScorer</a></li>
-<li><a href="promod3.html">promod3</a></li>
-<ul><li><a href="promod3/core/_core.html">promod3.core._core</a></li>
-<li><a href="promod3/core/helper.html">promod3.core.helper</a></li>
-<li><a href="promod3/core/pm3argparse.html">promod3.core.pm3argparse</a></li>
-<li><a href="promod3/loop/_loop.html">promod3.loop._loop</a></li>
-<li><a href="promod3/modelling/_closegaps.html">promod3.modelling._closegaps</a></li>
-<li><a href="promod3/modelling/_denovo.html">promod3.modelling._denovo</a></li>
-<li><a href="promod3/modelling/_fragger_handle.html">promod3.modelling._fragger_handle</a></li>
-<li><a href="promod3/modelling/_modelling.html">promod3.modelling._modelling</a></li>
-<li><a href="promod3/modelling/_molprobity.html">promod3.modelling._molprobity</a></li>
-<li><a href="promod3/modelling/_monte_carlo.html">promod3.modelling._monte_carlo</a></li>
-<li><a href="promod3/modelling/_pipeline.html">promod3.modelling._pipeline</a></li>
-<li><a href="promod3/modelling/_reconstruct_sidechains.html">promod3.modelling._reconstruct_sidechains</a></li>
-<li><a href="promod3/modelling/_ring_punches.html">promod3.modelling._ring_punches</a></li>
-<li><a href="promod3/scoring/_scoring.html">promod3.scoring._scoring</a></li>
-<li><a href="promod3/sidechain/_sidechain.html">promod3.sidechain._sidechain</a></li>
-</ul><li><a href="test_actions.html">test_actions</a></li>
-</ul>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
-        <div class="sphinxsidebarwrapper"><div class="relations">
-<h3>Related Topics</h3>
-<ul>
-  <li><a href="../index.html">Documentation overview</a><ul>
-  </ul></li>
-</ul>
-</div>
-<div id="searchbox" style="display: none" role="search">
-  <h3>Quick search</h3>
-    <form class="search" action="../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
-      
-      |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
-      
-    </div>
-
-    
-
-    
-  </body>
-</html>
\ No newline at end of file
diff --git a/doc/html/_modules/promod3.html b/doc/html/_modules/promod3.html
deleted file mode 100644
index 8a204800..00000000
--- a/doc/html/_modules/promod3.html
+++ /dev/null
@@ -1,177 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>promod3 &mdash; ProMod3 1.3.0 documentation</title>
-    
-    <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
-    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../',
-        VERSION:     '1.3.0',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../_static/jquery.js"></script>
-    <script type="text/javascript" src="../_static/underscore.js"></script>
-    <script type="text/javascript" src="../_static/doctools.js"></script>
-    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
-    <link rel="up" title="Module code" href="index.html" />
-   
-  <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
-  
-  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
-
-  </head>
-  <body role="document">
-  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body" role="main">
-            
-  <h1>Source code for promod3</h1><div class="highlight"><pre>
-<span></span><span class="c1"># Copyright (c) 2013-2018, SIB - Swiss Institute of Bioinformatics and </span>
-<span class="c1">#                          Biozentrum - University of Basel</span>
-<span class="c1"># </span>
-<span class="c1"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<span class="c1"># you may not use this file except in compliance with the License.</span>
-<span class="c1"># You may obtain a copy of the License at</span>
-<span class="c1"># </span>
-<span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
-<span class="c1"># </span>
-<span class="c1"># Unless required by applicable law or agreed to in writing, software</span>
-<span class="c1"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<span class="c1"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<span class="c1"># See the License for the specific language governing permissions and</span>
-<span class="c1"># limitations under the License.</span>
-
-<span class="c1"># enable access to loop and modelling via &quot;import promod3&quot;</span>
-<span class="kn">import</span> <span class="nn">promod3.core</span>
-<span class="kn">import</span> <span class="nn">promod3.sidechain</span>
-<span class="kn">import</span> <span class="nn">promod3.loop</span>
-<span class="kn">import</span> <span class="nn">promod3.scoring</span>
-<span class="kn">import</span> <span class="nn">promod3.modelling</span>
-
-<span class="c1"># load compounds library</span>
-<span class="c1"># That way we do not need to call our scripts with the OST starter and are more</span>
-<span class="c1"># flexible.</span>
-<span class="kn">import</span> <span class="nn">os</span>
-<span class="kn">import</span> <span class="nn">ost</span>
-<span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">conop</span>
-<span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">io</span>
-
-<div class="viewcode-block" id="SetCompoundsChemlib"><a class="viewcode-back" href="../core/setcompoundschemlib.html#promod3.SetCompoundsChemlib">[docs]</a><span class="k">def</span> <span class="nf">SetCompoundsChemlib</span><span class="p">(</span><span class="n">path_to_chemlib</span><span class="o">=</span><span class="s2">&quot;/home/taurielg/GT/Code/ost/build/stage/share/openstructure/compounds.chemlib&quot;</span><span class="p">):</span>
-    <span class="sd">&quot;&quot;&quot;SetCompoundsChemlib(path_to_chemlib)</span>
-<span class="sd">    Load a compounds library. Does not return anything, the library is just</span>
-<span class="sd">    enabled globally.</span>
-
-<span class="sd">    :param path_to_chemlib: Points to the file to be loaded.</span>
-<span class="sd">    :type path_to_chemlib: :class:`str`</span>
-<span class="sd">    &quot;&quot;&quot;</span>
-    <span class="k">if</span> <span class="ow">not</span> <span class="n">path_to_chemlib</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">path_to_chemlib</span><span class="p">):</span>
-        <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;Invalid path to chemlib &#39;&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">path_to_chemlib</span><span class="p">)</span>
-                           <span class="o">+</span> <span class="s2">&quot;&#39; specified!</span><span class="se">\n</span><span class="s2">A compounds library must either be &quot;</span>
-                           <span class="o">+</span> <span class="s2">&quot;set at compile-time (&#39;compounds.chemlib&#39; file in &quot;</span>
-                           <span class="o">+</span> <span class="s2">&quot;$OST_ROOT/share or below) or set in OST with &quot;</span>
-                           <span class="o">+</span> <span class="s2">&quot;ost.conop.SetDefaultLib before importing any &quot;</span>
-                           <span class="o">+</span> <span class="s2">&quot;promod3 module!&quot;</span><span class="p">)</span>
-    <span class="n">compound_lib_path</span> <span class="o">=</span> <span class="n">path_to_chemlib</span>
-    <span class="n">compound_lib</span> <span class="o">=</span> <span class="n">conop</span><span class="o">.</span><span class="n">CompoundLib</span><span class="o">.</span><span class="n">Load</span><span class="p">(</span><span class="n">compound_lib_path</span><span class="p">)</span>
-    <span class="n">conop</span><span class="o">.</span><span class="n">SetDefaultLib</span><span class="p">(</span><span class="n">compound_lib</span><span class="p">)</span>
-    <span class="n">io</span><span class="o">.</span><span class="n">profiles</span><span class="p">[</span><span class="s1">&#39;DEFAULT&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">processor</span> <span class="o">=</span> <span class="n">conop</span><span class="o">.</span><span class="n">RuleBasedProcessor</span><span class="p">(</span><span class="n">compound_lib</span><span class="p">)</span></div>
-
-<span class="k">def</span> <span class="nf">GetProMod3SharedDataPath</span><span class="p">():</span>
-    <span class="sd">&quot;&quot;&quot;Get path to the shared data folder. Used for binaries.</span>
-<span class="sd">    Returns None if not set.</span>
-<span class="sd">    &quot;&quot;&quot;</span>
-    <span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;PROMOD3_SHARED_DATA_PATH&quot;</span><span class="p">)</span>
-
-<span class="k">def</span> <span class="nf">SetProMod3SharedDataPath</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
-    <span class="sd">&quot;&quot;&quot;Set path to the shared data folder. Used for binaries.&quot;&quot;&quot;</span>
-    <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">&quot;PROMOD3_SHARED_DATA_PATH&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">path</span>
-
-<span class="c1"># check if we already have an OST PrefixPath</span>
-<span class="k">try</span><span class="p">:</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">GetSharedDataPath</span><span class="p">()</span>
-<span class="k">except</span> <span class="ne">RuntimeError</span><span class="p">,</span> <span class="n">rt_err</span><span class="p">:</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">SetPrefixPath</span><span class="p">(</span><span class="s2">&quot;/home/taurielg/GT/Code/ost/build/stage&quot;</span><span class="p">)</span>
-<span class="k">except</span><span class="p">:</span>
-    <span class="k">raise</span>
-
-<span class="c1"># check if we do have a compounds library</span>
-<span class="k">if</span> <span class="ow">not</span> <span class="n">conop</span><span class="o">.</span><span class="n">GetDefaultLib</span><span class="p">():</span>
-    <span class="n">SetCompoundsChemlib</span><span class="p">()</span>
-
-<span class="c1"># ensure that PROMOD3_SHARED_DATA_PATH env. var. set and override if needed</span>
-<span class="k">if</span> <span class="n">GetProMod3SharedDataPath</span><span class="p">()</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
-    <span class="c1"># module_path = PROMOD3_ROOT/lib64/python2.7/site-packages/promod3</span>
-    <span class="n">module_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">__file__</span><span class="p">))</span>
-    <span class="c1"># get PROMOD3_ROOT</span>
-    <span class="n">promod3_lib</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">module_path</span><span class="p">)))</span>
-    <span class="n">promod3_root</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">promod3_lib</span><span class="p">)</span>
-    <span class="n">SetProMod3SharedDataPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">promod3_root</span><span class="p">,</span> <span class="s2">&quot;share&quot;</span><span class="p">,</span> <span class="s2">&quot;promod3&quot;</span><span class="p">))</span>
-
-<span class="c1"># set version</span>
-<span class="n">__version__</span> <span class="o">=</span> <span class="s2">&quot;1.3.0&quot;</span>
-<span class="n">__version_extended__</span> <span class="o">=</span> <span class="s2">&quot;1.3.0 (release-1.3.0|01e00a8)&quot;</span>
-
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;SetCompoundsChemlib&#39;</span><span class="p">,</span> <span class="s1">&#39;GetProMod3SharedDataPath&#39;</span><span class="p">,</span>
-           <span class="s1">&#39;SetProMod3SharedDataPath&#39;</span><span class="p">)</span>
-
-<span class="c1">#  LocalWords:  OST os ost conop io SetCompoundsChemlib CHEMLIB param chemlib</span>
-<span class="c1">#  LocalWords:  str SetDefaultLib RuleBasedProcessor PrefixPath RuntimeError</span>
-<span class="c1">#  LocalWords:  GetSharedDataPath SetPrefixPath GetDefaultLib</span>
-</pre></div>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
-        <div class="sphinxsidebarwrapper"><div class="relations">
-<h3>Related Topics</h3>
-<ul>
-  <li><a href="../index.html">Documentation overview</a><ul>
-  <li><a href="index.html">Module code</a><ul>
-  </ul></li>
-  </ul></li>
-</ul>
-</div>
-<div id="searchbox" style="display: none" role="search">
-  <h3>Quick search</h3>
-    <form class="search" action="../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
-      
-      |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
-      
-    </div>
-
-    
-
-    
-  </body>
-</html>
\ No newline at end of file
diff --git a/doc/html/_modules/promod3/core/helper.html b/doc/html/_modules/promod3/core/helper.html
deleted file mode 100644
index 6b8aadaa..00000000
--- a/doc/html/_modules/promod3/core/helper.html
+++ /dev/null
@@ -1,263 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>promod3.core.helper &mdash; ProMod3 1.3.0 documentation</title>
-    
-    <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
-    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../../../',
-        VERSION:     '1.3.0',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../../../_static/jquery.js"></script>
-    <script type="text/javascript" src="../../../_static/underscore.js"></script>
-    <script type="text/javascript" src="../../../_static/doctools.js"></script>
-    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../../../index.html" />
-    <link rel="up" title="promod3" href="../../promod3.html" />
-   
-  <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
-  
-  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
-
-  </head>
-  <body role="document">
-  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body" role="main">
-            
-  <h1>Source code for promod3.core.helper</h1><div class="highlight"><pre>
-<span></span><span class="c1"># Copyright (c) 2013-2018, SIB - Swiss Institute of Bioinformatics and </span>
-<span class="c1">#                          Biozentrum - University of Basel</span>
-<span class="c1"># </span>
-<span class="c1"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<span class="c1"># you may not use this file except in compliance with the License.</span>
-<span class="c1"># You may obtain a copy of the License at</span>
-<span class="c1"># </span>
-<span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
-<span class="c1"># </span>
-<span class="c1"># Unless required by applicable law or agreed to in writing, software</span>
-<span class="c1"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<span class="c1"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<span class="c1"># See the License for the specific language governing permissions and</span>
-<span class="c1"># limitations under the License.</span>
-
-
-<span class="sd">&quot;&quot;&quot;</span>
-<span class="sd">Uncategorised functions which may come handy at several places.</span>
-<span class="sd">&quot;&quot;&quot;</span>
-
-<span class="kn">import</span> <span class="nn">os</span>
-<span class="kn">import</span> <span class="nn">sys</span>
-<span class="kn">import</span> <span class="nn">ost</span>
-
-<div class="viewcode-block" id="MsgErrorAndExit"><a class="viewcode-back" href="../../../core/helper.html#promod3.core.helper.MsgErrorAndExit">[docs]</a><span class="k">def</span> <span class="nf">MsgErrorAndExit</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">exit_status</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;</span>
-<span class="sd">    Send a messages to the |ost_s| :ost_docs:`error log &lt;base/logging/&gt;` and</span>
-<span class="sd">    exit the Python interpreter.</span>
-
-<span class="sd">    :param msg: The message.</span>
-<span class="sd">    :type msg: :class:`str`</span>
-
-<span class="sd">    :param exit_status: Exit code, ends up in ``$?`` in the shell. ``0`` is</span>
-<span class="sd">                      traditionally reserved to successful commands.</span>
-<span class="sd">    :type exit_status: :class:`int`</span>
-
-<span class="sd">    :returns: No return value, exits script with value ``exit_status``.</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">LogError</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
-    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="n">exit_status</span><span class="p">)</span></div>
-
-<div class="viewcode-block" id="FileExists"><a class="viewcode-back" href="../../../core/helper.html#promod3.core.helper.FileExists">[docs]</a><span class="k">def</span> <span class="nf">FileExists</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">exit_status</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;</span>
-<span class="sd">    Checks if a file exists, terminates if not. The error message displayed is</span>
-<span class="sd">    fixed and only needs a *prefix* describing the specimen of file.</span>
-
-<span class="sd">    :param prefix: String to put in front of the failure-message</span>
-<span class="sd">                   &quot;file does not exist: ``file``&quot;.</span>
-<span class="sd">    :type prefix: :class:`str`</span>
-
-<span class="sd">    :param exit_status: Exit code on missing file, ends up in ``$?`` in the</span>
-<span class="sd">           shell. ``0`` is traditionally reserved to successful commands.</span>
-<span class="sd">    :type exit_status: :class:`int`</span>
-
-<span class="sd">    :param file: Path including file name to be checked.</span>
-<span class="sd">    :type file: :class:`str`</span>
-
-<span class="sd">    :returns: No return value, exits script with value ``exit_status`` if file</span>
-<span class="sd">              is missing.</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span>
-        <span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1"> file does not exist: </span><span class="si">%s</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">filename</span><span class="p">),</span>
-                        <span class="n">exit_status</span><span class="p">)</span></div>
-
-<div class="viewcode-block" id="FileGzip"><a class="viewcode-back" href="../../../core/helper.html#promod3.core.helper.FileGzip">[docs]</a><span class="k">def</span> <span class="nf">FileGzip</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">exit_status</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">allowed</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;</span>
-<span class="sd">    See if a file is gzipped or not. This is basically done by checking for a</span>
-<span class="sd">    &quot;gz&quot; suffix. May also be used to verify that a file is not compressed where</span>
-<span class="sd">    it does not apply. That is where *allowed* comes in. If &quot;gz&quot; is not allowed,</span>
-<span class="sd">    terminates the script on gzip files.</span>
-
-<span class="sd">    :param prefix: String to put in front of the failure-message where gzip</span>
-<span class="sd">                   files are not allowed.</span>
-<span class="sd">    :type prefix: :class:`str`</span>
-
-<span class="sd">    :param exit_status: Exit code on gzip files to be avoided, ends up in</span>
-<span class="sd">                        ``$?`` in the shell. ``0`` is traditionally reserved to</span>
-<span class="sd">                        successful commands.</span>
-<span class="sd">    :type exit_status: :class:`int`</span>
-
-<span class="sd">    :param filename: Path including file name to be checked.</span>
-<span class="sd">    :type filename: :class:`str`</span>
-
-<span class="sd">    :param allowed: Set to ``False`` if gzipped files are not allowed. Then the</span>
-<span class="sd">                    script will terminate if a gzip file is found.</span>
-<span class="sd">    :type allowed: :class:`bool`</span>
-
-<span class="sd">    :returns: Flag to indicate if file is gzipped (:class:`bool`).</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">_</span><span class="p">,</span> <span class="n">fileext</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
-    <span class="n">is_gz</span> <span class="o">=</span> <span class="bp">False</span>
-    <span class="k">if</span> <span class="n">fileext</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">&#39;.gz&#39;</span><span class="p">:</span>
-        <span class="n">is_gz</span> <span class="o">=</span> <span class="bp">True</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="n">allowed</span><span class="p">:</span>
-            <span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1"> file in Gzip not supported: </span><span class="si">%s</span><span class="s1">. &#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span>
-                                                                     <span class="n">filename</span><span class="p">),</span>
-                            <span class="n">exit_status</span><span class="p">)</span>
-    <span class="k">return</span> <span class="n">is_gz</span></div>
-
-<div class="viewcode-block" id="FileExtension"><a class="viewcode-back" href="../../../core/helper.html#promod3.core.helper.FileExtension">[docs]</a><span class="k">def</span> <span class="nf">FileExtension</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">exit_status</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">extensions</span><span class="p">,</span> <span class="n">gzip</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;</span>
-<span class="sd">    Checks a file to carry a known extension given by a list of strings. Since</span>
-<span class="sd">    files are very often compressed these days, an additional &quot;gz&quot; suffix can be</span>
-<span class="sd">    tracked automatically by this function. Thus, the list of *extensions* only</span>
-<span class="sd">    needs to contain what you are really looking for, e.g. (&quot;pdb&quot;) instead of</span>
-<span class="sd">    (&quot;pdb&quot;, &quot;pdb.gz&quot;). The *gzip* flag also determines the output of this</span>
-<span class="sd">    function. If enabled, a triple is returned: name of the file without</span>
-<span class="sd">    extension, its extension and a Boolean to tell whether the file carries the</span>
-<span class="sd">    gzip extension or not. If *gzip* detection is turned of, only a tuple is</span>
-<span class="sd">    returned: file name  and extension. If the tested file name has an</span>
-<span class="sd">    unrecognised extension, this function terminates the script.</span>
-
-<span class="sd">    :param prefix: String to put in front of the failure-message</span>
-<span class="sd">                   &quot;file extension not supported: ``filename``&quot;.</span>
-<span class="sd">    :type prefix: :class:`str`</span>
-
-<span class="sd">    :param exit_status: Exit code on missing file, ends up in ``$?`` in the</span>
-<span class="sd">           shell. ``0`` is traditionally reserved to successful commands.</span>
-<span class="sd">    :type exit_status: :class:`int`</span>
-
-<span class="sd">    :param filename: Path including file name to be checked.</span>
-<span class="sd">    :type filename: :class:`str`</span>
-
-<span class="sd">    :param extensions: List of strings without a leading &quot;.&quot;.</span>
-<span class="sd">    :type extensions: :class:`list`</span>
-
-<span class="sd">    :param gzip: Indicates whether to check for an additional &quot;gz&quot; extension.</span>
-<span class="sd">    :type gzip: :class:`bool`</span>
-
-<span class="sd">    :returns: (base name of ``filename`` (:class:`str`), extension of file</span>
-<span class="sd">              without a &quot;.gz&quot; (:class:`str`), flag to indicate an additional</span>
-<span class="sd">              &quot;.gz&quot; (:class:`bool`)) **if** ``gzip`` is set, (base name of</span>
-<span class="sd">              ``filename`` (:class:`str`), extension of file) **if not**.</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">pfilename</span><span class="p">,</span> <span class="n">fileext</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
-    <span class="n">is_gz</span> <span class="o">=</span> <span class="bp">False</span>
-    <span class="k">if</span> <span class="n">fileext</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">&#39;.gz&#39;</span><span class="p">:</span>
-        <span class="n">is_gz</span> <span class="o">=</span> <span class="bp">True</span>
-        <span class="n">pfilename</span><span class="p">,</span> <span class="n">fileext</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">pfilename</span><span class="p">)</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="n">gzip</span><span class="p">:</span>
-            <span class="n">extension_string</span> <span class="o">=</span> <span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">extensions</span><span class="p">)</span>
-            <span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1"> file extension not supported: </span><span class="si">%s</span><span class="s1">. &#39;</span> <span class="o">%</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span>
-                                                                      <span class="n">filename</span><span class="p">)</span><span class="o">+</span>
-                            <span class="s1">&#39;Allowed extensions are: </span><span class="si">%s</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">extension_string</span><span class="p">,</span>
-                            <span class="n">exit_status</span><span class="p">)</span>
-    <span class="k">if</span> <span class="n">fileext</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span><span class="p">:</span>
-        <span class="n">extension_string</span> <span class="o">=</span> <span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">extensions</span><span class="p">)</span>
-        <span class="k">if</span> <span class="n">gzip</span><span class="p">:</span>
-            <span class="n">extension_string</span> <span class="o">+=</span> <span class="s1">&#39;, &#39;</span> <span class="o">+</span> <span class="s1">&#39;.gz, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">extensions</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;.gz&#39;</span>
-            <span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1"> file extension not supported: </span><span class="si">%s</span><span class="s1">. &#39;</span> <span class="o">%</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span>
-                                                                      <span class="n">filename</span><span class="p">)</span><span class="o">+</span>
-                            <span class="s1">&#39;Allowed extensions are: </span><span class="si">%s</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">extension_string</span><span class="p">,</span>
-                            <span class="n">exit_status</span><span class="p">)</span>
-    <span class="n">fileext</span> <span class="o">=</span> <span class="n">fileext</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
-    <span class="k">for</span> <span class="n">ext</span> <span class="ow">in</span> <span class="n">extensions</span><span class="p">:</span>
-        <span class="k">if</span> <span class="n">fileext</span> <span class="o">==</span> <span class="n">ext</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
-            <span class="k">if</span> <span class="n">gzip</span><span class="p">:</span>
-                <span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">pfilename</span><span class="p">),</span> <span class="n">fileext</span><span class="p">,</span> <span class="n">is_gz</span>
-            <span class="k">else</span><span class="p">:</span>
-                <span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">pfilename</span><span class="p">),</span> <span class="n">fileext</span>
-    <span class="n">extension_string</span> <span class="o">=</span> <span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">extensions</span><span class="p">)</span>
-    <span class="k">if</span> <span class="n">gzip</span><span class="p">:</span>
-        <span class="n">extension_string</span> <span class="o">+=</span> <span class="s1">&#39;, &#39;</span> <span class="o">+</span> <span class="s1">&#39;.gz, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">extensions</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;.gz&#39;</span>
-    <span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1"> file extension not supported: </span><span class="si">%s</span><span class="s1">. &#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span>
-                                                               <span class="n">filename</span><span class="p">)</span><span class="o">+</span>
-                    <span class="s1">&#39;Allowed extensions are: </span><span class="si">%s</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">extension_string</span><span class="p">,</span>
-                    <span class="n">exit_status</span><span class="p">)</span></div>
-
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span>
-    <span class="s1">&#39;MsgErrorAndExit&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;FileExists&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;FileExtension&#39;</span><span class="p">,</span>
-<span class="p">)</span>
-
-<span class="c1">#  LocalWords:  gzipped gz param str gzip bool</span>
-</pre></div>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
-        <div class="sphinxsidebarwrapper"><div class="relations">
-<h3>Related Topics</h3>
-<ul>
-  <li><a href="../../../index.html">Documentation overview</a><ul>
-  <li><a href="../../index.html">Module code</a><ul>
-  <li><a href="../../promod3.html">promod3</a><ul>
-  </ul></li>
-  </ul></li>
-  </ul></li>
-</ul>
-</div>
-<div id="searchbox" style="display: none" role="search">
-  <h3>Quick search</h3>
-    <form class="search" action="../../../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
-      
-      |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
-      
-    </div>
-
-    
-
-    
-  </body>
-</html>
\ No newline at end of file
diff --git a/doc/html/_modules/promod3/core/pm3argparse.html b/doc/html/_modules/promod3/core/pm3argparse.html
deleted file mode 100644
index 8f04b467..00000000
--- a/doc/html/_modules/promod3/core/pm3argparse.html
+++ /dev/null
@@ -1,858 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>promod3.core.pm3argparse &mdash; ProMod3 1.3.0 documentation</title>
-    
-    <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
-    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../../../',
-        VERSION:     '1.3.0',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../../../_static/jquery.js"></script>
-    <script type="text/javascript" src="../../../_static/underscore.js"></script>
-    <script type="text/javascript" src="../../../_static/doctools.js"></script>
-    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../../../index.html" />
-    <link rel="up" title="promod3" href="../../promod3.html" />
-   
-  <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
-  
-  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
-
-  </head>
-  <body role="document">
-  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body" role="main">
-            
-  <h1>Source code for promod3.core.pm3argparse</h1><div class="highlight"><pre>
-<span></span><span class="c1"># Copyright (c) 2013-2018, SIB - Swiss Institute of Bioinformatics and </span>
-<span class="c1">#                          Biozentrum - University of Basel</span>
-<span class="c1"># </span>
-<span class="c1"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<span class="c1"># you may not use this file except in compliance with the License.</span>
-<span class="c1"># You may obtain a copy of the License at</span>
-<span class="c1"># </span>
-<span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
-<span class="c1"># </span>
-<span class="c1"># Unless required by applicable law or agreed to in writing, software</span>
-<span class="c1"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<span class="c1"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<span class="c1"># See the License for the specific language governing permissions and</span>
-<span class="c1"># limitations under the License.</span>
-
-
-<span class="sd">&quot;&quot;&quot;</span>
-<span class="sd">Extensions for the argparse module.</span>
-<span class="sd">&quot;&quot;&quot;</span>
-
-<span class="kn">import</span> <span class="nn">argparse</span>
-<span class="kn">import</span> <span class="nn">sys</span>
-<span class="kn">import</span> <span class="nn">os</span>
-<span class="kn">import</span> <span class="nn">gzip</span>
-<span class="kn">import</span> <span class="nn">tempfile</span>
-<span class="c1">#try:</span>
-<span class="c1">#    import ujson as json</span>
-<span class="c1">#except ImportError:</span>
-<span class="kn">import</span> <span class="nn">json</span>
-
-<span class="kn">import</span> <span class="nn">ost</span>
-<span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">io</span><span class="p">,</span> <span class="n">seq</span>
-
-<span class="kn">from</span> <span class="nn">promod3.core</span> <span class="kn">import</span> <span class="n">helper</span>
-
-<span class="k">def</span> <span class="nf">_TmpForGZip</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">suffix</span><span class="p">,</span> <span class="n">msg_prefix</span><span class="p">):</span>
-    <span class="sd">&quot;&quot;&quot;Unpack a file to a tmp file if gzipped.</span>
-<span class="sd">    &quot;&quot;&quot;</span>
-    <span class="n">helper</span><span class="o">.</span><span class="n">FileExists</span><span class="p">(</span><span class="n">msg_prefix</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="n">filename</span><span class="p">)</span>
-    <span class="k">try</span><span class="p">:</span>
-        <span class="n">zip_fh</span> <span class="o">=</span> <span class="n">gzip</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
-        <span class="n">unzip_str</span> <span class="o">=</span> <span class="n">zip_fh</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
-        <span class="n">zip_fh</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-    <span class="k">except</span> <span class="ne">IOError</span><span class="p">,</span> <span class="n">ioe</span><span class="p">:</span>
-        <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="n">msg_prefix</span> <span class="o">+</span> <span class="s2">&quot; gzip file &#39;&quot;</span> <span class="o">+</span> <span class="n">filename</span> <span class="o">+</span>
-                               <span class="s2">&quot;&#39; cannot be opened: &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">ioe</span><span class="p">),</span> <span class="mi">14</span><span class="p">)</span>
-    <span class="n">unzip_file</span> <span class="o">=</span> <span class="n">tempfile</span><span class="o">.</span><span class="n">NamedTemporaryFile</span><span class="p">(</span><span class="n">mode</span><span class="o">=</span><span class="s1">&#39;w&#39;</span><span class="p">,</span> <span class="n">suffix</span><span class="o">=</span><span class="n">suffix</span><span class="p">)</span>
-    <span class="n">unzip_file</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">unzip_str</span><span class="p">)</span>
-    <span class="n">unzip_file</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
-    <span class="k">return</span> <span class="n">unzip_file</span>
-
-<span class="k">def</span> <span class="nf">_CheckJSONAlnSeqKeyType</span><span class="p">(</span><span class="n">key_name</span><span class="p">,</span> <span class="n">val_type</span><span class="p">,</span> <span class="n">json_aln</span><span class="p">,</span> <span class="n">seqtype</span><span class="p">,</span> <span class="n">json_source</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Check a key/value in a sequence exists and is of certain type.</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="k">if</span> <span class="n">key_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">json_aln</span><span class="p">[</span><span class="n">seqtype</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
-        <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;JSON &#39;alignmentlist&#39; &#39;</span><span class="si">%s</span><span class="s2">&#39; &quot;</span> <span class="o">%</span> <span class="n">seqtype</span><span class="o">+</span>
-                               <span class="s2">&quot;from &#39;</span><span class="si">%s</span><span class="s2">&#39; is &quot;</span> <span class="o">%</span> <span class="n">json_source</span><span class="o">+</span>
-                               <span class="s2">&quot;missing the &#39;</span><span class="si">%s</span><span class="s2">&#39; key&quot;</span> <span class="o">%</span> <span class="n">key_name</span><span class="p">,</span> <span class="mi">27</span><span class="p">)</span>
-    <span class="n">altype</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">json_aln</span><span class="p">[</span><span class="n">seqtype</span><span class="p">][</span><span class="n">key_name</span><span class="p">])</span>
-
-    <span class="k">if</span> <span class="n">val_type</span> <span class="ow">is</span> <span class="nb">str</span> <span class="ow">or</span> <span class="n">val_type</span> <span class="ow">is</span> <span class="nb">unicode</span><span class="p">:</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">altype</span> <span class="ow">is</span> <span class="nb">unicode</span> <span class="ow">or</span> <span class="n">altype</span> <span class="ow">is</span> <span class="nb">str</span><span class="p">):</span>
-            <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;JSON &#39;alignmentlist&#39; &#39;</span><span class="si">%s</span><span class="s2">&#39; &quot;</span> <span class="o">%</span> <span class="n">seqtype</span><span class="o">+</span>
-                                   <span class="s2">&quot;&#39;</span><span class="si">%s</span><span class="s2">&#39; from&quot;</span> <span class="o">%</span> <span class="n">key_name</span><span class="o">+</span>
-                                   <span class="s2">&quot;&#39;</span><span class="si">%s</span><span class="s2">&#39; is not a &quot;</span> <span class="o">%</span> <span class="n">json_source</span><span class="o">+</span>
-                                   <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">val_type</span><span class="p">),</span> <span class="mi">28</span><span class="p">)</span>
-    <span class="k">elif</span> <span class="ow">not</span> <span class="n">altype</span> <span class="ow">is</span> <span class="n">val_type</span><span class="p">:</span>
-        <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;JSON &#39;alignmentlist&#39; &#39;</span><span class="si">%s</span><span class="s2">&#39; &quot;</span> <span class="o">%</span> <span class="n">seqtype</span><span class="o">+</span>
-                               <span class="s2">&quot;&#39;</span><span class="si">%s</span><span class="s2">&#39; from&quot;</span> <span class="o">%</span> <span class="n">key_name</span><span class="o">+</span>
-                               <span class="s2">&quot;&#39;</span><span class="si">%s</span><span class="s2">&#39; is not a &quot;</span> <span class="o">%</span> <span class="n">json_source</span><span class="o">+</span>
-                               <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">val_type</span><span class="p">),</span> <span class="mi">28</span><span class="p">)</span>
-
-<span class="k">def</span> <span class="nf">_GetAlnFromJSON</span><span class="p">(</span><span class="n">json_object</span><span class="p">,</span> <span class="n">json_source</span><span class="p">):</span>
-    <span class="sd">&quot;&quot;&quot;Create alignments from a JSON object.</span>
-
-<span class="sd">    Iterate the alignments in a JSON object and deliver OST alignments via the</span>
-<span class="sd">    yield operator.</span>
-<span class="sd">    &quot;&quot;&quot;</span>
-    <span class="c1"># alignments are stored via the &#39;alignmentlist&#39; key</span>
-    <span class="k">if</span> <span class="s1">&#39;alignmentlist&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">json_object</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
-        <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;JSON object from &#39;</span><span class="si">%s</span><span class="s2">&#39; does not &quot;</span> <span class="o">%</span> <span class="n">json_source</span><span class="o">+</span>
-                               <span class="s2">&quot;provide an &#39;alignmentlist&#39; key.&quot;</span><span class="p">,</span> <span class="mi">21</span><span class="p">)</span>
-    <span class="c1"># alignments come as lists, to enable hetero oligos</span>
-    <span class="k">if</span> <span class="ow">not</span> <span class="nb">type</span><span class="p">(</span><span class="n">json_object</span><span class="p">[</span><span class="s1">&#39;alignmentlist&#39;</span><span class="p">])</span> <span class="ow">is</span> <span class="nb">list</span><span class="p">:</span>
-        <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;JSON object from &#39;</span><span class="si">%s</span><span class="s2">&#39; does not&quot;</span> <span class="o">%</span> <span class="n">json_source</span><span class="o">+</span>
-                               <span class="s2">&quot;provide a list behind &#39;alignmentlist&#39;.&quot;</span><span class="p">,</span> <span class="mi">24</span><span class="p">)</span>
-    <span class="c1"># take the alignments apart, each alignment is a dictionary</span>
-    <span class="k">for</span> <span class="n">json_aln</span> <span class="ow">in</span> <span class="n">json_object</span><span class="p">[</span><span class="s1">&#39;alignmentlist&#39;</span><span class="p">]:</span>
-        <span class="c1"># json_aln needs to be a dictionary</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="nb">type</span><span class="p">(</span><span class="n">json_aln</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">dict</span><span class="p">:</span>
-            <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;JSON &#39;alignmentlist&#39; member from &quot;</span><span class="o">+</span>
-                                   <span class="s2">&quot;&#39;</span><span class="si">%s</span><span class="s2">&#39; is not a &#39; &quot;</span> <span class="o">%</span>  <span class="n">json_source</span><span class="o">+</span>
-                                   <span class="s2">&quot; dictionary: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">json_aln</span><span class="p">,</span> <span class="mi">25</span><span class="p">)</span>
-        <span class="c1"># an alignment has a &#39;target&#39; and a &#39;template&#39; dictionary</span>
-        <span class="c1"># each of them has a &#39;name&#39; and a &#39;seqres&#39; pair</span>
-        <span class="k">for</span> <span class="n">flav</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;target&#39;</span><span class="p">,</span> <span class="s1">&#39;template&#39;</span><span class="p">]:</span>
-            <span class="k">if</span> <span class="n">flav</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">json_aln</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
-                <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;JSON &#39;alignmentlist&#39; from &quot;</span><span class="o">+</span>
-                                       <span class="s2">&quot;&#39;</span><span class="si">%s</span><span class="s2">&#39; does not &quot;</span> <span class="o">%</span> <span class="n">json_source</span><span class="o">+</span>
-                                       <span class="s2">&quot;provide a &#39;</span><span class="si">%s</span><span class="s2">&#39; key.&quot;</span> <span class="o">%</span> <span class="n">flav</span><span class="p">,</span> <span class="mi">22</span><span class="p">)</span>
-            <span class="c1"># check sequence to be dictionary</span>
-            <span class="k">if</span> <span class="ow">not</span> <span class="nb">type</span><span class="p">(</span><span class="n">json_aln</span><span class="p">[</span><span class="n">flav</span><span class="p">])</span> <span class="ow">is</span> <span class="nb">dict</span><span class="p">:</span>
-                <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;JSON &#39;alignmentlist&#39; &#39;</span><span class="si">%s</span><span class="s2">&#39; from&quot;</span> <span class="o">%</span> <span class="n">flav</span><span class="o">+</span>
-                                       <span class="s2">&quot;&#39;</span><span class="si">%s</span><span class="s2">&#39; is not a &quot;</span> <span class="o">%</span> <span class="n">json_source</span><span class="o">+</span>
-                                       <span class="s2">&quot;dictionary: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">json_aln</span><span class="p">[</span><span class="n">flav</span><span class="p">],</span> <span class="mi">26</span><span class="p">)</span>
-            <span class="c1"># check for keys needed by both sequences:</span>
-            <span class="k">for</span> <span class="n">aln_key</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">,</span> <span class="s1">&#39;seqres&#39;</span><span class="p">]:</span>
-                <span class="n">_CheckJSONAlnSeqKeyType</span><span class="p">(</span><span class="n">aln_key</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">json_aln</span><span class="p">,</span> <span class="n">flav</span><span class="p">,</span>
-                                        <span class="n">json_source</span><span class="p">)</span>
-        <span class="n">_CheckJSONAlnSeqKeyType</span><span class="p">(</span><span class="s1">&#39;offset&#39;</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="n">json_aln</span><span class="p">,</span> <span class="s1">&#39;template&#39;</span><span class="p">,</span>
-                                <span class="n">json_source</span><span class="p">)</span>
-        <span class="c1"># create and yield alignment</span>
-        <span class="n">trg_name</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">json_aln</span><span class="p">[</span><span class="s1">&#39;target&#39;</span><span class="p">][</span><span class="s1">&#39;name&#39;</span><span class="p">])</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
-        <span class="n">trg_seq</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">json_aln</span><span class="p">[</span><span class="s1">&#39;target&#39;</span><span class="p">][</span><span class="s1">&#39;seqres&#39;</span><span class="p">])</span>
-        <span class="n">tpl_name</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">json_aln</span><span class="p">[</span><span class="s1">&#39;template&#39;</span><span class="p">][</span><span class="s1">&#39;name&#39;</span><span class="p">])</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
-        <span class="n">tpl_seq</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">json_aln</span><span class="p">[</span><span class="s1">&#39;template&#39;</span><span class="p">][</span><span class="s1">&#39;seqres&#39;</span><span class="p">])</span>
-        <span class="n">new_aln</span> <span class="o">=</span> <span class="n">seq</span><span class="o">.</span><span class="n">CreateAlignment</span><span class="p">(</span><span class="n">seq</span><span class="o">.</span><span class="n">CreateSequence</span><span class="p">(</span><span class="n">trg_name</span><span class="p">,</span> <span class="n">trg_seq</span><span class="p">),</span>
-                                      <span class="n">seq</span><span class="o">.</span><span class="n">CreateSequence</span><span class="p">(</span><span class="n">tpl_name</span><span class="p">,</span> <span class="n">tpl_seq</span><span class="p">))</span>
-        <span class="n">new_aln</span><span class="o">.</span><span class="n">SetSequenceRole</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s1">&#39;TARGET&#39;</span><span class="p">)</span>
-        <span class="n">new_aln</span><span class="o">.</span><span class="n">SetSequenceRole</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s1">&#39;TEMPLATE&#39;</span><span class="p">)</span>
-        <span class="n">new_aln</span><span class="o">.</span><span class="n">SetSequenceOffset</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">json_aln</span><span class="p">[</span><span class="s1">&#39;template&#39;</span><span class="p">][</span><span class="s1">&#39;offset&#39;</span><span class="p">])</span>
-        <span class="k">yield</span> <span class="n">new_aln</span>
-
-<span class="k">def</span> <span class="nf">_GetJSONOBject</span><span class="p">(</span><span class="n">json_input</span><span class="p">):</span>
-    <span class="sd">&quot;&quot;&quot;Get a JSON object out of a string which may be an object or a path.</span>
-
-<span class="sd">    If the input string starts with &#39;{&#39;, we assume its a JSON object. File names</span>
-<span class="sd">    starting with &#39;{&#39; would be a bit weird.</span>
-
-<span class="sd">    If we are looking at a file, check and load it.</span>
-
-<span class="sd">    For a JSON object, check that everything is there. No checks for</span>
-<span class="sd">    superfluous stuff.</span>
-
-<span class="sd">    As returnvalue we only use JSON objects.</span>
-<span class="sd">    &quot;&quot;&quot;</span>
-    <span class="k">if</span> <span class="n">json_input</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">&#39;{&#39;</span><span class="p">:</span>
-        <span class="n">helper</span><span class="o">.</span><span class="n">FileExists</span><span class="p">(</span><span class="s2">&quot;JSON Alignment&quot;</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="n">json_input</span><span class="p">)</span>
-        <span class="n">is_gz</span> <span class="o">=</span> <span class="n">helper</span><span class="o">.</span><span class="n">FileGzip</span><span class="p">(</span><span class="s2">&quot;JSON alignment&quot;</span><span class="p">,</span> <span class="mi">13</span><span class="p">,</span> <span class="n">json_input</span><span class="p">)</span>
-        <span class="n">readfile</span> <span class="o">=</span> <span class="n">json_input</span>
-        <span class="k">if</span> <span class="n">is_gz</span><span class="p">:</span>
-            <span class="n">unzip_file</span> <span class="o">=</span> <span class="n">_TmpForGZip</span><span class="p">(</span><span class="n">json_input</span><span class="p">,</span> <span class="s1">&#39;.json&#39;</span><span class="p">,</span> <span class="s2">&quot;JSON alignment&quot;</span><span class="p">)</span>
-            <span class="n">readfile</span> <span class="o">=</span> <span class="n">unzip_file</span><span class="o">.</span><span class="n">name</span>
-        <span class="k">try</span><span class="p">:</span>
-            <span class="n">jfh</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">readfile</span><span class="p">)</span>
-        <span class="k">except</span> <span class="ne">IOError</span><span class="p">,</span> <span class="n">ioe</span><span class="p">:</span>
-            <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;&#39;--json&#39; file &#39;</span><span class="si">%s</span><span class="s2">&#39; &quot;</span> <span class="o">%</span> <span class="n">json_input</span><span class="o">+</span>
-                                   <span class="s2">&quot;can not be processed: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">ioe</span><span class="o">.</span><span class="n">strerror</span><span class="p">,</span>
-                                   <span class="mi">19</span><span class="p">)</span>
-        <span class="k">except</span><span class="p">:</span>
-            <span class="k">raise</span>
-        <span class="k">try</span><span class="p">:</span>
-            <span class="n">json_object</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">jfh</span><span class="p">)</span>
-        <span class="k">except</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">vae</span><span class="p">:</span>
-            <span class="k">if</span> <span class="n">vae</span><span class="o">.</span><span class="n">message</span> <span class="o">==</span> <span class="s1">&#39;No JSON object could be decoded&#39;</span><span class="p">:</span>
-                <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;&#39;--json&#39; file &#39;</span><span class="si">%s</span><span class="s2">&#39; could &quot;</span> <span class="o">%</span> <span class="n">json_input</span><span class="o">+</span>
-                                       <span class="s2">&quot;not be processed into a JSON object, &quot;</span><span class="o">+</span>
-                                       <span class="s2">&quot;probably it&#39;s empty.&quot;</span><span class="p">,</span> <span class="mi">20</span><span class="p">)</span>
-            <span class="k">else</span><span class="p">:</span>
-                <span class="k">raise</span>
-        <span class="k">except</span><span class="p">:</span>
-            <span class="k">raise</span>
-        <span class="n">jfh</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="k">try</span><span class="p">:</span>
-            <span class="n">json_object</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">json_input</span><span class="p">)</span>
-        <span class="k">except</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">vae</span><span class="p">:</span>
-            <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;&#39;--json&#39; string &#39;</span><span class="si">%s</span><span class="s2">&#39; &quot;</span> <span class="o">%</span> <span class="n">json_input</span><span class="o">+</span>\
-                                   <span class="s2">&quot;could not be decoded: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">vae</span><span class="o">.</span><span class="n">message</span><span class="p">,</span> <span class="mi">23</span><span class="p">)</span>
-    <span class="k">return</span> <span class="n">json_object</span>
-
-<span class="k">def</span> <span class="nf">_FetchAlnFromFile</span><span class="p">(</span><span class="n">seqfile</span><span class="p">,</span> <span class="n">allow_multitemplate</span><span class="p">,</span> <span class="n">format</span><span class="p">):</span>
-    <span class="sd">&quot;&quot;&quot;Read alignment from seqfile and return it.&quot;&quot;&quot;</span>
-    <span class="n">argstr</span> <span class="o">=</span> <span class="s2">&quot;&#39;--&quot;</span> <span class="o">+</span> <span class="n">format</span> <span class="o">+</span> <span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="n">seqfile</span> <span class="o">+</span> <span class="s2">&quot;&#39;&quot;</span>
-    <span class="n">helper</span><span class="o">.</span><span class="n">FileExists</span><span class="p">(</span><span class="s2">&quot;Alignment&quot;</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="n">seqfile</span><span class="p">)</span>
-    <span class="c1"># checking if alignment file has &#39;gz&#39; extension</span>
-    <span class="n">is_gz</span> <span class="o">=</span> <span class="n">helper</span><span class="o">.</span><span class="n">FileGzip</span><span class="p">(</span><span class="s2">&quot;Alignment&quot;</span><span class="p">,</span> <span class="mi">13</span><span class="p">,</span> <span class="n">seqfile</span><span class="p">)</span>
-    <span class="c1"># loading the alignment, switch for gzip</span>
-    <span class="n">readfile</span> <span class="o">=</span> <span class="n">seqfile</span>
-    <span class="k">if</span> <span class="n">is_gz</span><span class="p">:</span>
-        <span class="n">unzip_file</span> <span class="o">=</span> <span class="n">_TmpForGZip</span><span class="p">(</span><span class="n">seqfile</span><span class="p">,</span> <span class="s1">&#39;.fas&#39;</span><span class="p">,</span> <span class="s2">&quot;Alignment&quot;</span><span class="p">)</span>
-        <span class="n">readfile</span> <span class="o">=</span> <span class="n">unzip_file</span><span class="o">.</span><span class="n">name</span>
-    <span class="k">try</span><span class="p">:</span>
-        <span class="n">aln</span> <span class="o">=</span> <span class="n">io</span><span class="o">.</span><span class="n">LoadAlignment</span><span class="p">(</span><span class="n">readfile</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="n">format</span><span class="p">)</span>
-    <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">exc</span><span class="p">:</span> <span class="c1">#pylint: disable=broad-except</span>
-        <span class="k">if</span> <span class="n">exc</span><span class="o">.</span><span class="n">message</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;Bad FASTA file: File is empty&#39;</span><span class="p">,</span>
-                           <span class="s1">&#39;Bad CLUSTAL file: File is empty&#39;</span><span class="p">]:</span>
-            <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="n">argstr</span> <span class="o">+</span>  <span class="s2">&quot; refers to an empty file or &quot;</span> <span class="o">+</span>
-                                   <span class="s2">&quot;its in the wrong format.&quot;</span><span class="p">,</span> <span class="mi">15</span><span class="p">)</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="n">argstr</span> <span class="o">+</span> <span class="s2">&quot;: error when reading alignment &quot;</span><span class="o">+</span>
-                                   <span class="s2">&quot;file: &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">exc</span><span class="p">),</span> <span class="mi">18</span><span class="p">)</span>
-    <span class="k">finally</span><span class="p">:</span>
-        <span class="k">if</span> <span class="n">is_gz</span><span class="p">:</span>
-            <span class="n">unzip_file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-    <span class="c1"># checking the alignment</span>
-    <span class="k">if</span> <span class="n">aln</span><span class="o">.</span><span class="n">GetCount</span><span class="p">()</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
-        <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="n">argstr</span> <span class="o">+</span> <span class="s2">&quot; points to an alignment with only &quot;</span> <span class="o">+</span>
-                               <span class="s2">&quot;1 sequence.&quot;</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span>
-    <span class="k">if</span> <span class="n">aln</span><span class="o">.</span><span class="n">GetCount</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">2</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">allow_multitemplate</span><span class="p">:</span>
-        <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="n">argstr</span> <span class="o">+</span> <span class="s2">&quot; points to an alignment with more &quot;</span> <span class="o">+</span>
-                               <span class="s2">&quot;than 2 sequences and we do not allow this.&quot;</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span>
-    <span class="c1"># identify target</span>
-    <span class="n">target_idx</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
-    <span class="n">sequences</span> <span class="o">=</span> <span class="p">[(</span><span class="n">s</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">strip</span><span class="p">(),</span><span class="n">s</span><span class="o">.</span><span class="n">string</span><span class="p">)</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">aln</span><span class="o">.</span><span class="n">sequences</span><span class="p">]</span>
-    <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">s</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sequences</span><span class="p">):</span>
-        <span class="k">if</span> <span class="n">s</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;trg&#39;</span><span class="p">,</span> <span class="s1">&#39;target&#39;</span><span class="p">]:</span>
-            <span class="k">if</span> <span class="n">target_idx</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span>
-                <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="n">argstr</span> <span class="o">+</span> <span class="s2">&quot;: multiple targets found!&quot;</span><span class="p">,</span> <span class="mi">17</span><span class="p">)</span>
-            <span class="n">target_idx</span> <span class="o">=</span> <span class="n">i</span>
-    <span class="c1"># reshuffle</span>
-    <span class="k">if</span> <span class="n">target_idx</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="n">sequences</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">sequences</span><span class="p">[</span><span class="n">target_idx</span><span class="p">])</span>
-        <span class="k">del</span> <span class="n">sequences</span><span class="p">[</span><span class="n">target_idx</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span>
-    <span class="c1"># generate alignment</span>
-    <span class="n">new_aln</span> <span class="o">=</span> <span class="n">seq</span><span class="o">.</span><span class="n">CreateAlignment</span><span class="p">()</span>
-    <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">sequences</span><span class="p">:</span>
-        <span class="n">new_aln</span><span class="o">.</span><span class="n">AddSequence</span><span class="p">(</span><span class="n">seq</span><span class="o">.</span><span class="n">CreateSequence</span><span class="p">(</span><span class="n">s</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">s</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
-    <span class="n">new_aln</span><span class="o">.</span><span class="n">SetSequenceRole</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s1">&#39;TARGET&#39;</span><span class="p">)</span>
-    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">new_aln</span><span class="o">.</span><span class="n">GetCount</span><span class="p">()):</span>
-        <span class="n">new_aln</span><span class="o">.</span><span class="n">SetSequenceRole</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="s1">&#39;TEMPLATE&#39;</span><span class="p">)</span>
-
-    <span class="k">return</span> <span class="n">new_aln</span>
-
-<span class="k">def</span> <span class="nf">_LoadPDB</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span>
-    <span class="sd">&quot;&quot;&quot;Load PDB file from filename and return it.&quot;&quot;&quot;</span>
-    <span class="n">argstr</span> <span class="o">=</span> <span class="s2">&quot;&#39;--pdb &quot;</span> <span class="o">+</span> <span class="n">filename</span> <span class="o">+</span> <span class="s2">&quot;&#39;&quot;</span>
-    <span class="n">helper</span><span class="o">.</span><span class="n">FileExists</span><span class="p">(</span><span class="s2">&quot;PDB Structure&quot;</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="n">filename</span><span class="p">)</span>
-    <span class="k">try</span><span class="p">:</span>
-        <span class="n">ent</span> <span class="o">=</span> <span class="n">io</span><span class="o">.</span><span class="n">LoadPDB</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
-    <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">exc</span><span class="p">:</span> <span class="c1">#pylint: disable=broad-except</span>
-        <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="n">argstr</span> <span class="o">+</span> <span class="s2">&quot;: failure to parse PDB file: &quot;</span> <span class="o">+</span>
-                               <span class="nb">str</span><span class="p">(</span><span class="n">exc</span><span class="p">),</span> <span class="mi">33</span><span class="p">)</span>
-    <span class="k">return</span> <span class="n">ent</span>
-
-<span class="k">def</span> <span class="nf">_LoadEntity</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span>
-    <span class="sd">&quot;&quot;&quot;Load generic structure file from filename and return it.&quot;&quot;&quot;</span>
-    <span class="n">argstr</span> <span class="o">=</span> <span class="s2">&quot;&#39;--entity &quot;</span> <span class="o">+</span> <span class="n">filename</span> <span class="o">+</span> <span class="s2">&quot;&#39;&quot;</span>
-    <span class="n">helper</span><span class="o">.</span><span class="n">FileExists</span><span class="p">(</span><span class="s2">&quot;Structure&quot;</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="n">filename</span><span class="p">)</span>
-    <span class="k">try</span><span class="p">:</span>
-        <span class="n">ent</span> <span class="o">=</span> <span class="n">io</span><span class="o">.</span><span class="n">LoadEntity</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
-    <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">exc</span><span class="p">:</span> <span class="c1">#pylint: disable=broad-except</span>
-        <span class="k">if</span> <span class="n">exc</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">&#39;no suitable entity io handler found&#39;</span><span class="p">):</span>
-            <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="n">argstr</span> <span class="o">+</span> <span class="s2">&quot;: not a supported format &quot;</span> <span class="o">+</span>
-                                   <span class="nb">str</span><span class="p">(</span><span class="n">exc</span><span class="p">),</span> <span class="mi">34</span><span class="p">)</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="n">argstr</span> <span class="o">+</span> <span class="s2">&quot;: failure to parse PDB file: &quot;</span> <span class="o">+</span>
-                                   <span class="nb">str</span><span class="p">(</span><span class="n">exc</span><span class="p">),</span> <span class="mi">33</span><span class="p">)</span>
-    <span class="k">return</span> <span class="n">ent</span>
-
-<span class="k">def</span> <span class="nf">_FetchProfileFromFile</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span>
-    <span class="sd">&quot;&quot;&quot;Load generic profile file from filename and return it.&quot;&quot;&quot;</span>
-    <span class="n">argstr</span> <span class="o">=</span> <span class="s2">&quot;&#39;--seqprof &quot;</span> <span class="o">+</span> <span class="n">filename</span> <span class="o">+</span> <span class="s2">&quot;&#39;&quot;</span>
-    <span class="n">helper</span><span class="o">.</span><span class="n">FileExists</span><span class="p">(</span><span class="s2">&quot;Profile&quot;</span><span class="p">,</span> <span class="mi">51</span><span class="p">,</span> <span class="n">filename</span><span class="p">)</span>
-    <span class="k">try</span><span class="p">:</span>
-        <span class="n">prof</span> <span class="o">=</span> <span class="n">io</span><span class="o">.</span><span class="n">LoadSequenceProfile</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
-    <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">exc</span><span class="p">:</span>
-        <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="n">argstr</span> <span class="o">+</span> <span class="s2">&quot;: failure to parse profile file: &quot;</span> <span class="o">+</span>
-                               <span class="nb">str</span><span class="p">(</span><span class="n">exc</span><span class="p">),</span> <span class="mi">52</span><span class="p">)</span>        
-    <span class="k">return</span> <span class="n">prof</span>
-
-<span class="k">def</span> <span class="nf">_GetChains</span><span class="p">(</span><span class="n">structures</span><span class="p">,</span> <span class="n">structure_sources</span><span class="p">):</span>
-    <span class="sd">&quot;&quot;&quot;Get chain id to entity view (single chain) mapping (dict).&quot;&quot;&quot;</span>
-    <span class="c1"># IDs: (file_base = base file name with no extensions)</span>
-    <span class="c1"># - file_base.chain_name</span>
-    <span class="c1"># - file_base (iff only one chain in file)</span>
-    <span class="c1"># - chain_name (iff only one file)</span>
-    <span class="c1"># - note: single entry with key &#39;UNIQUE&#39; created if only one chain in total!</span>
-    <span class="n">chain_entities</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">()</span>
-    <span class="n">single_file</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">structure_sources</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span>
-    <span class="c1"># parse structures</span>
-    <span class="k">for</span> <span class="n">file_name</span><span class="p">,</span> <span class="n">ent</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">structure_sources</span><span class="p">,</span> <span class="n">structures</span><span class="p">):</span>
-        <span class="c1"># get pure file name with no extension</span>
-        <span class="n">file_base</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">file_name</span><span class="p">)</span>
-        <span class="n">file_split</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">file_base</span><span class="p">)</span>
-        <span class="k">if</span> <span class="n">file_split</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;.gz&#39;</span><span class="p">:</span>
-            <span class="n">file_base</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">file_split</span><span class="p">[</span><span class="mi">0</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="n">file_base</span> <span class="o">=</span> <span class="n">file_split</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
-        <span class="c1"># get chainnames</span>
-        <span class="n">prot</span> <span class="o">=</span> <span class="n">ent</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s2">&quot;peptide=True&quot;</span><span class="p">)</span>
-        <span class="n">single_chain</span> <span class="o">=</span> <span class="n">prot</span><span class="o">.</span><span class="n">chain_count</span> <span class="o">==</span> <span class="mi">1</span>
-        <span class="n">chain_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">ch</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">ch</span> <span class="ow">in</span> <span class="n">prot</span><span class="o">.</span><span class="n">chains</span><span class="p">]</span>
-        <span class="c1"># fill dict</span>
-        <span class="k">if</span> <span class="n">single_file</span> <span class="ow">and</span> <span class="n">single_chain</span><span class="p">:</span>
-            <span class="n">chain_entities</span><span class="p">[</span><span class="s1">&#39;UNIQUE&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">prot</span>
-        <span class="k">elif</span> <span class="n">single_chain</span><span class="p">:</span>
-            <span class="n">chain_entities</span><span class="p">[</span><span class="n">file_base</span> <span class="o">+</span> <span class="s1">&#39;.&#39;</span> <span class="o">+</span> <span class="n">chain_names</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="n">prot</span>
-            <span class="n">chain_entities</span><span class="p">[</span><span class="n">file_base</span><span class="p">]</span> <span class="o">=</span> <span class="n">prot</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="k">for</span> <span class="n">chain_name</span> <span class="ow">in</span> <span class="n">chain_names</span><span class="p">:</span>
-                <span class="n">ch_ent</span> <span class="o">=</span> <span class="n">prot</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s2">&quot;cname=&quot;</span> <span class="o">+</span> <span class="n">chain_name</span><span class="p">)</span>
-                <span class="n">chain_entities</span><span class="p">[</span><span class="n">file_base</span> <span class="o">+</span> <span class="s1">&#39;.&#39;</span> <span class="o">+</span> <span class="n">chain_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">ch_ent</span>
-                <span class="k">if</span> <span class="n">single_file</span><span class="p">:</span>
-                    <span class="n">chain_entities</span><span class="p">[</span><span class="n">chain_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">ch_ent</span>
-    <span class="k">return</span> <span class="n">chain_entities</span>
-
-<span class="k">def</span> <span class="nf">_AttachViewsToAln</span><span class="p">(</span><span class="n">aln</span><span class="p">,</span> <span class="n">chain_entities</span><span class="p">):</span>
-    <span class="sd">&quot;&quot;&quot;Attach views to tpl. sequences in aln according to sequence names.&quot;&quot;&quot;</span>
-    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">aln</span><span class="o">.</span><span class="n">GetCount</span><span class="p">()):</span>
-        <span class="n">seq_name</span> <span class="o">=</span> <span class="n">aln</span><span class="o">.</span><span class="n">GetSequence</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">GetName</span><span class="p">()</span>
-        <span class="c1"># extract offset</span>
-        <span class="n">my_split</span> <span class="o">=</span> <span class="n">seq_name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;|&#39;</span><span class="p">)</span>
-        <span class="n">tpl_id</span> <span class="o">=</span> <span class="n">my_split</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
-        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">my_split</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span> <span class="ow">and</span> <span class="n">my_split</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span>
-            <span class="c1"># set offset</span>
-            <span class="n">tpl_offset</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">my_split</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
-            <span class="c1"># mismatch with existing one?</span>
-            <span class="n">old_offset</span> <span class="o">=</span> <span class="n">aln</span><span class="o">.</span><span class="n">GetSequenceOffset</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
-            <span class="k">if</span> <span class="n">old_offset</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">old_offset</span> <span class="o">!=</span> <span class="n">tpl_offset</span><span class="p">:</span>
-                <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;Inconsistent offsets between seq. name&quot;</span><span class="o">+</span>
-                                       <span class="s2">&quot; and seq. in alignment for &quot;</span> <span class="o">+</span> <span class="n">seq_name</span><span class="p">,</span>
-                                       <span class="mi">42</span><span class="p">)</span>
-            <span class="k">else</span><span class="p">:</span>
-                <span class="n">aln</span><span class="o">.</span><span class="n">SetSequenceOffset</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">tpl_offset</span><span class="p">)</span>
-        <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">my_split</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">my_split</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span>
-            <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;Non-integer offset defined in seq. name &quot;</span><span class="o">+</span>
-                                   <span class="n">seq_name</span><span class="p">,</span> <span class="mi">43</span><span class="p">)</span>
-        <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">my_split</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">2</span><span class="p">:</span>
-            <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;Too many &#39;|&#39; in seq. name &quot;</span> <span class="o">+</span> <span class="n">seq_name</span><span class="p">,</span> <span class="mi">44</span><span class="p">)</span>
-        <span class="c1"># identify chain and attach view</span>
-        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">chain_entities</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
-            <span class="n">aln</span><span class="o">.</span><span class="n">AttachView</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">chain_entities</span><span class="p">[</span><span class="s1">&#39;UNIQUE&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">CreateFullView</span><span class="p">())</span>
-        <span class="k">elif</span> <span class="n">chain_entities</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">tpl_id</span><span class="p">):</span>
-            <span class="n">aln</span><span class="o">.</span><span class="n">AttachView</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">chain_entities</span><span class="p">[</span><span class="n">tpl_id</span><span class="p">]</span><span class="o">.</span><span class="n">CreateFullView</span><span class="p">())</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;Could not find chain with ID &quot;</span> <span class="o">+</span> <span class="n">tpl_id</span> <span class="o">+</span>
-                                   <span class="s2">&quot; (should be &lt;FILE&gt;.&lt;CHAIN&gt;) to attach to&quot;</span><span class="o">+</span>
-                                   <span class="s2">&quot; sequence named &quot;</span> <span class="o">+</span> <span class="n">seq_name</span><span class="p">,</span> <span class="mi">45</span><span class="p">)</span>
-
-<div class="viewcode-block" id="PM3ArgumentParser"><a class="viewcode-back" href="../../../core/pm3argparse.html#promod3.core.pm3argparse.PM3ArgumentParser">[docs]</a><span class="k">class</span> <span class="nc">PM3ArgumentParser</span><span class="p">(</span><span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">):</span>
-    <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd">    This class is a child of :class:`argparse.ArgumentParser`. It provides a set</span>
-<span class="sd">    of standard arguments which can be activated with :meth:`Add*` methods and</span>
-<span class="sd">    then assembled with :meth:`AssembleParser`. This helps keeping up a common</span>
-<span class="sd">    naming scheme throughout all |project| actions. As a real extension, this</span>
-<span class="sd">    subclass provides checking of input parameters on :meth:`Parse`. Besides</span>
-<span class="sd">    this, everything you can do with a &#39;real&#39; :class:`~argparse.ArgumentParser`</span>
-<span class="sd">    instance is possible here.</span>
-
-<span class="sd">    Attributes beyond :class:`argparse.ArgumentParser`:</span>
-
-<span class="sd">    .. attribute:: action</span>
-
-<span class="sd">      Indicates if the calling script is a |project| action.</span>
-
-<span class="sd">      :type: :class:`bool`</span>
-<span class="sd">    &quot;&quot;&quot;</span>
-<div class="viewcode-block" id="PM3ArgumentParser.__init__"><a class="viewcode-back" href="../../../core/pm3argparse.html#promod3.core.pm3argparse.PM3ArgumentParser.__init__">[docs]</a>    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd">        Create a new instance of :class:`~pm3argparse.PM3ArgumentParser`.</span>
-
-<span class="sd">        :param description: Help text for this script, handed down to</span>
-<span class="sd">                            |descattr|_ of |argpinit|_.</span>
-<span class="sd">        :type description: :class:`str`</span>
-
-<span class="sd">        :param action: Indicates if the calling script is a |project| action.</span>
-<span class="sd">                       This influences |progattr|_ of</span>
-<span class="sd">                       :class:`~argparse.ArgumentParser` by clipping of the</span>
-<span class="sd">                       first 3 characters of the file name of the script. If</span>
-<span class="sd">                       ``False``, default behaviour of</span>
-<span class="sd">                       :class:`~argparse.ArgumentParser` kicks in.</span>
-<span class="sd">        :type action: :class:`bool`</span>
-
-<span class="sd">        :returns: :class:`argparse.ArgumentParser`.</span>
-<span class="sd">        &quot;&quot;&quot;</span>
-        <span class="n">prog</span> <span class="o">=</span> <span class="bp">None</span>
-        <span class="k">if</span> <span class="n">action</span><span class="p">:</span>
-            <span class="n">prog</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">])[</span><span class="mi">3</span><span class="p">:]</span>
-        <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prog</span><span class="o">=</span><span class="n">prog</span><span class="p">,</span>
-                                         <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">,</span>
-                                         <span class="n">formatter_class</span><span class="o">=</span>\
-                                         <span class="n">argparse</span><span class="o">.</span><span class="n">RawDescriptionHelpFormatter</span><span class="p">)</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">action</span> <span class="o">=</span> <span class="n">action</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">activate</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span></div>
-
-    <span class="k">def</span> <span class="nf">_print_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="nb">file</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
-        <span class="c1">#pylint: disable=redefined-builtin</span>
-        <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd">        This is like a welcome message to the &quot;country of bad style&quot;... we are</span>
-<span class="sd">        overwriting a &quot;_&quot; function from the parent-class. Those guys should not</span>
-<span class="sd">        be used outside of the housing module, never... but here it is a single</span>
-<span class="sd">        function to bend :mod:`argparse` to use :class:`ost.Logger`.</span>
-<span class="sd">        &quot;&quot;&quot;</span>
-        <span class="k">if</span> <span class="n">message</span><span class="p">:</span>
-            <span class="n">no_nl_msg</span> <span class="o">=</span> <span class="n">message</span>
-            <span class="k">if</span> <span class="n">message</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">:</span>
-                <span class="n">no_nl_msg</span> <span class="o">=</span> <span class="n">message</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
-            <span class="k">if</span> <span class="nb">file</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="nb">file</span> <span class="ow">is</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">:</span>
-                <span class="n">ost</span><span class="o">.</span><span class="n">LogError</span><span class="p">(</span><span class="n">no_nl_msg</span><span class="p">)</span>
-            <span class="k">else</span><span class="p">:</span>
-                <span class="n">ost</span><span class="o">.</span><span class="n">LogScript</span><span class="p">(</span><span class="n">no_nl_msg</span><span class="p">)</span>
-
-<div class="viewcode-block" id="PM3ArgumentParser.Parse"><a class="viewcode-back" href="../../../core/pm3argparse.html#promod3.core.pm3argparse.PM3ArgumentParser.Parse">[docs]</a>    <span class="k">def</span> <span class="nf">Parse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd">        Parse an argument string. See :meth:`Add*` methods.</span>
-
-<span class="sd">        Options/arguments added by default: ``-h/--help`` shows usage.</span>
-
-<span class="sd">        General exit codes:</span>
-
-<span class="sd">        * 1 - an unhandled exception was raised</span>
-<span class="sd">        * 2 - arguments cannot be parsed or required arguments are missing</span>
-
-<span class="sd">        :param args: The argument string. As default |sysargv|_ is used.</span>
-<span class="sd">        :type args: :class:`list`</span>
-
-<span class="sd">        :returns: Namespace filled with attributes (see :meth:`Add*` methods).</span>
-<span class="sd">        &quot;&quot;&quot;</span>
-        <span class="n">opts</span> <span class="o">=</span> <span class="n">PM3OptionsNamespace</span><span class="p">()</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">parse_args</span><span class="p">(</span><span class="n">args</span><span class="o">=</span><span class="n">args</span><span class="p">,</span> <span class="n">namespace</span><span class="o">=</span><span class="n">opts</span><span class="p">)</span>
-
-        <span class="n">opts</span><span class="o">.</span><span class="n">PostProcess</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">activate</span><span class="p">)</span>
-        <span class="k">return</span> <span class="n">opts</span></div>
-
-<div class="viewcode-block" id="PM3ArgumentParser.AssembleParser"><a class="viewcode-back" href="../../../core/pm3argparse.html#promod3.core.pm3argparse.PM3ArgumentParser.AssembleParser">[docs]</a>    <span class="k">def</span> <span class="nf">AssembleParser</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd">        When adding options via the :meth:`Add*` methods, call this after you</span>
-<span class="sd">        are done. Everything before just tells the parser that it should</span>
-<span class="sd">        contain those option sets but does not actually add anything.</span>
-<span class="sd">        :meth:`AssembleParser` will put everything in place, in the right order</span>
-<span class="sd">        and with the right constraints.</span>
-<span class="sd">        &quot;&quot;&quot;</span>
-        <span class="k">if</span> <span class="s1">&#39;ALIGNMENT&#39;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">activate</span><span class="p">:</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">_AssembleAlignment</span><span class="p">()</span>
-        <span class="k">if</span> <span class="s1">&#39;STRUCTURE&#39;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">activate</span><span class="p">:</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">_AssembleStructure</span><span class="p">()</span>
-        <span class="k">if</span> <span class="s1">&#39;PROFILE&#39;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">activate</span><span class="p">:</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">_AssembleProfile</span><span class="p">()</span></div>
-
-<div class="viewcode-block" id="PM3ArgumentParser.AddAlignment"><a class="viewcode-back" href="../../../core/pm3argparse.html#promod3.core.pm3argparse.PM3ArgumentParser.AddAlignment">[docs]</a>    <span class="k">def</span> <span class="nf">AddAlignment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">allow_multitemplate</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;Commandline options for alignments.</span>
-
-<span class="sd">        Activate everything needed to load alignments to the argument parser.</span>
-<span class="sd">        Command line arguments are then added in :meth:`AssembleParser` and the</span>
-<span class="sd">        input is post processed and checked in :meth:`Parse`.</span>
-
-<span class="sd">        :param allow_multitemplate: enable support for multitemplate alignments</span>
-<span class="sd">        :type allow_multitemplate:  :class:`bool`</span>
-
-<span class="sd">        Options/arguments added:</span>
-
-<span class="sd">        * ``-f/--fasta &lt;FILE&gt;`` - Target-template alignment in FASTA format.</span>
-<span class="sd">          Target sequence is either named &quot;trg&quot; or &quot;target&quot; or the first</span>
-<span class="sd">          sequence is used. File can be plain or gzipped.</span>
-
-<span class="sd">        * ``-c/--clustal &lt;FILE&gt;`` - Target-template alignment in CLUSTAL format.</span>
-<span class="sd">          Target sequence is either named &quot;trg&quot; or &quot;target&quot; or the first</span>
-<span class="sd">          sequence is used. File can be plain or gzipped.</span>
-
-<span class="sd">        * ``-j/--json &lt;OBJECT&gt;|&lt;FILE&gt;`` - Alignments provided as JSON</span>
-<span class="sd">          file/object. File can be plain or gzipped.</span>
-
-<span class="sd">        See :ref:`here &lt;promod-build-model&gt;` for details on the file formats.</span>
-
-<span class="sd">        Attributes added to the namespace returned by :meth:`Parse`:</span>
-
-<span class="sd">        * :attr:`fasta` - filled with the input of the ``--fasta`` option, a</span>
-<span class="sd">          :class:`list` of :class:`str` (filenames).</span>
-
-<span class="sd">        * :attr:`clustal` - filled with the input of the ``--clustal`` option, a</span>
-<span class="sd">          :class:`list` of :class:`str` (filenames).</span>
-
-<span class="sd">        * :attr:`json` - filled with the input of the ``--json`` option, a</span>
-<span class="sd">          :class:`list` of :class:`str`, where each string may be a filename</span>
-<span class="sd">          or a JSON object string.</span>
-
-<span class="sd">        * :attr:`alignments` - :class:`ost.AlignmentList`, same order as given.</span>
-<span class="sd">          First sequence of the alignment is the target sequence, if in doubt,</span>
-<span class="sd">          check for sequence roles ``TARGET`` or ``TEMPLATE``</span>
-
-<span class="sd">        * :attr:`aln_sources` - :class:`list` of :class:`str` with the original</span>
-<span class="sd">          source(s) of the alignment: may be filename(s) or JSON strings.</span>
-
-<span class="sd">        Exit codes related to alignment input:</span>
-
-<span class="sd">        * 12 - a given alignment file does not exist</span>
-<span class="sd">        * 13 - never raised (parameter for checking gzip files)</span>
-<span class="sd">        * 14 - gzip file cannot be opened</span>
-<span class="sd">        * 15 - found an empty alignment file</span>
-<span class="sd">        * 16 - unsupported number of sequences in alignment: only 1 sequence or</span>
-<span class="sd">          (unless *allow_multitemplate* = True) more than 2 sequences</span>
-<span class="sd">        * 17 - mutliple target sequences found in alignment</span>
-<span class="sd">        * 18 - error when reading fasta/clustal file</span>
-<span class="sd">        * 19 - problem with a JSON formatted file handed over to ``--json``</span>
-<span class="sd">        * 20 - JSON file could not be decoded into a JSON object</span>
-<span class="sd">        * 21 - JSON object has no &#39;alignmentlist&#39; key</span>
-<span class="sd">        * 22 - JSON object has no &#39;target&#39;/&#39;template&#39; in the &#39;alignmentlist&#39;</span>
-<span class="sd">        * 23 - JSON string could not be decoded</span>
-<span class="sd">        * 24 - JSON object &#39;alignmentlist&#39; does not point to a list</span>
-<span class="sd">        * 25 - JSON object &#39;alignmentlist&#39; member is not a dictionary</span>
-<span class="sd">        * 26 - JSON object &#39;alignmentlist&#39; &#39;target&#39;/&#39;template&#39; does not point</span>
-<span class="sd">          to a dictionary</span>
-<span class="sd">        * 27 - JSON  object &#39;alignmentlist&#39; &#39;target&#39;/&#39;template&#39; does not have</span>
-<span class="sd">          a needed key</span>
-<span class="sd">        * 28 - JSON  object &#39;alignmentlist&#39; &#39;target&#39;/&#39;template&#39; has a value of</span>
-<span class="sd">          wrong type</span>
-<span class="sd">        &quot;&quot;&quot;</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">activate</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s1">&#39;ALIGNMENT&#39;</span><span class="p">)</span>
-        <span class="k">if</span> <span class="n">allow_multitemplate</span><span class="p">:</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">activate</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s1">&#39;ALLOW_MULTITEMPLATE&#39;</span><span class="p">)</span></div>
-
-<div class="viewcode-block" id="PM3ArgumentParser.AddStructure"><a class="viewcode-back" href="../../../core/pm3argparse.html#promod3.core.pm3argparse.PM3ArgumentParser.AddStructure">[docs]</a>    <span class="k">def</span> <span class="nf">AddStructure</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attach_views</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;Commandline options for structures.</span>
-
-<span class="sd">        Activate everything needed to load structures to the argument parser.</span>
-<span class="sd">        Command line arguments are then added in :meth:`AssembleParser` and the</span>
-<span class="sd">        input is post processed and checked in :meth:`Parse`.</span>
-
-<span class="sd">        :param attach_views: if True: attach views to alignments. Requires call</span>
-<span class="sd">                             to :meth:`AddAlignment`. Chains for each sequence</span>
-<span class="sd">                             are identified based on the sequence name of the</span>
-<span class="sd">                             templates in the alignments (see </span>
-<span class="sd">                             :ref:`here &lt;promod-build-model&gt;` for details).</span>
-<span class="sd">        :type attach_views:  :class:`bool`</span>
-
-<span class="sd">        Options/arguments added:</span>
-
-<span class="sd">        * ``-p/--pdb &lt;FILE&gt;`` - Structure in PDB format. File can be plain or</span>
-<span class="sd">          gzipped.</span>
-
-<span class="sd">        * ``-e/--entity &lt;FILE&gt;`` - Structure in any format readable by the</span>
-<span class="sd">          :meth:`ost.io.LoadEntity` method. Format is chosen by file ending.</span>
-<span class="sd">          Recognized File Extensions: .ent, .pdb, .ent.gz, .pdb.gz, .cif, .cif.gz.</span>
-
-<span class="sd">        Notes:</span>
-
-<span class="sd">        * one of the inputs must be given and only one type of input acceptable</span>
-
-<span class="sd">        * callable multiple times (structures appended in given order)</span>
-
-<span class="sd">        Attributes added to the namespace returned by :meth:`Parse`:</span>
-
-<span class="sd">        * :attr:`pdb` - filled with the input of the ``--pdb`` option, a</span>
-<span class="sd">          :class:`list` of :class:`str` (filenames).</span>
-
-<span class="sd">        * :attr:`entity` - filled with the input of the ``--entity`` option, a</span>
-<span class="sd">          :class:`list` of :class:`str` (filenames).</span>
-
-<span class="sd">        * :attr:`structures` - :class:`list` of :class:`ost.EntityHandle`, same</span>
-<span class="sd">          order as given.</span>
-
-<span class="sd">        * :attr:`structure_sources` - :class:`list` of :class:`str` with the</span>
-<span class="sd">          original filenames of the structures.</span>
-
-<span class="sd">        Exit codes related to alignment input:</span>
-
-<span class="sd">        * 32 - a given structure file does not exist</span>
-<span class="sd">        * 33 - failure to read a given structure file</span>
-<span class="sd">        * 34 - file ending is not a supported format</span>
-
-<span class="sd">        Exit codes if *attach_views* = True:</span>
-
-<span class="sd">        * 41 - attach_views used without adding alignments</span>
-<span class="sd">        * 42 - inconsistent offsets between seq. name and seq. in alignment</span>
-<span class="sd">        * 43 - non-integer offset defined in seq. name</span>
-<span class="sd">        * 44 - too many &quot;|&quot; in seq. name</span>
-<span class="sd">        * 45 - chain to attach to sequence could not be identified</span>
-<span class="sd">        &quot;&quot;&quot;</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">activate</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s1">&#39;STRUCTURE&#39;</span><span class="p">)</span>
-        <span class="k">if</span> <span class="n">attach_views</span><span class="p">:</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">activate</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s1">&#39;ATTACH_VIEWS&#39;</span><span class="p">)</span></div>
-
-<div class="viewcode-block" id="PM3ArgumentParser.AddProfile"><a class="viewcode-back" href="../../../core/pm3argparse.html#promod3.core.pm3argparse.PM3ArgumentParser.AddProfile">[docs]</a>    <span class="k">def</span> <span class="nf">AddProfile</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;Commandline options for profiles</span>
-
-<span class="sd">        Activate everything needed to load profiles to the argument parser.</span>
-<span class="sd">        Command line arguments are then added in :meth:`AssembleParser` and the</span>
-<span class="sd">        input is post processed and checked in :meth:`Parse`.</span>
-
-<span class="sd">        Options/arguments added:</span>
-
-<span class="sd">        * ``-s/--seqprof &lt;FILE&gt;`` - Sequence profile in any format readable</span>
-<span class="sd">          by the :meth:`ost.io.LoadSequenceProfile` method. Format is chosen by </span>
-<span class="sd">          file ending. Recognized file extensions: .hhm, .hhm.gz, .pssm, </span>
-<span class="sd">          .pssm.gz. Consider to use </span>
-<span class="sd">          :meth:`ost.bindings.hhblits.HHblits.A3MToProfile` if you have a file </span>
-<span class="sd">          in a3m format at hand. </span>
-
-<span class="sd">        Notes:</span>
-
-<span class="sd">        * the profiles are mapped based on exact matches towards the gapless</span>
-<span class="sd">          target sequences, i.e. one profile is mapped to several chains in</span>
-<span class="sd">          case of homo-oligomers</span>
-
-<span class="sd">        * every profile must have a unique sequence to avoid ambiguities</span>
-
-<span class="sd">        * all or nothing - you cannot provide profiles for only a subset of</span>
-<span class="sd">          target sequences</span>
-
-<span class="sd">        Attributes added to the namespace returned by :meth:`Parse`:</span>
-
-<span class="sd">        * :attr:`profiles` - :class:`list` of :class:`ost.seq.ProfileHandle`, </span>
-<span class="sd">          ordered to match the target sequences.</span>
-
-<span class="sd">        Exit codes related to profile input:</span>
-
-<span class="sd">        * 51 - a given profile file does not exist</span>
-<span class="sd">        * 52 - failure to read a given profile file </span>
-<span class="sd">        * 53 - a profile cannot be mapped to any target sequence</span>
-<span class="sd">        * 54 - profile sequences are not unique</span>
-<span class="sd">        * 55 - only subset of target sequences is covered by profile</span>
-<span class="sd">        &quot;&quot;&quot;</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">activate</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s1">&#39;PROFILE&#39;</span><span class="p">)</span></div>
-
-    <span class="k">def</span> <span class="nf">_AssembleAlignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;Actually add alignment arguments/options.&quot;&quot;&quot;</span>
-        <span class="n">aln_grp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">add_mutually_exclusive_group</span><span class="p">(</span><span class="n">required</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
-        <span class="c1"># fasta input</span>
-        <span class="n">aln_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s1">&#39;-f&#39;</span><span class="p">,</span> <span class="s1">&#39;--fasta&#39;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;&lt;FILE&gt;&#39;</span><span class="p">),</span>
-                             <span class="n">help</span><span class="o">=</span><span class="s1">&#39;Target-template alignment in FASTA format. &#39;</span><span class="o">+</span>
-                             <span class="s1">&#39;Target sequence is either named &quot;trg&quot; or &#39;</span><span class="o">+</span>
-                             <span class="s1">&#39;&quot;target&quot; or the first sequence is used. &#39;</span><span class="o">+</span>
-                             <span class="s1">&#39;File can be plain or gzipped.&#39;</span><span class="p">,</span>
-                             <span class="n">action</span><span class="o">=</span><span class="s1">&#39;append&#39;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="nb">list</span><span class="p">())</span>
-        <span class="c1"># clustal input</span>
-        <span class="n">aln_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s1">&#39;-c&#39;</span><span class="p">,</span> <span class="s1">&#39;--clustal&#39;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;&lt;FILE&gt;&#39;</span><span class="p">),</span>
-                             <span class="n">help</span><span class="o">=</span><span class="s1">&#39;Target-template alignment in CLUSTAL format. &#39;</span><span class="o">+</span>
-                             <span class="s1">&#39;Target sequence is either named &quot;trg&quot; or &#39;</span><span class="o">+</span>
-                             <span class="s1">&#39;&quot;target&quot; or the first sequence is used. &#39;</span><span class="o">+</span>
-                             <span class="s1">&#39;File can be plain or gzipped.&#39;</span><span class="p">,</span>
-                             <span class="n">action</span><span class="o">=</span><span class="s1">&#39;append&#39;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="nb">list</span><span class="p">())</span>
-        <span class="c1"># JSON input</span>
-        <span class="n">aln_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s1">&#39;-j&#39;</span><span class="p">,</span> <span class="s1">&#39;--json&#39;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="s1">&#39;&lt;OBJECT&gt;|&lt;FILE&gt;&#39;</span><span class="p">,</span>
-                             <span class="n">help</span><span class="o">=</span><span class="s1">&#39;Alignments provided as JSON file/object. &#39;</span><span class="o">+</span>
-                             <span class="s1">&#39;File can be plain or gzipped.&#39;</span><span class="p">,</span>
-                             <span class="n">action</span><span class="o">=</span><span class="s1">&#39;append&#39;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="nb">list</span><span class="p">())</span>
-
-    <span class="k">def</span> <span class="nf">_AssembleStructure</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;Actually add structure arguments/options.&quot;&quot;&quot;</span>
-        <span class="n">aln_grp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">add_mutually_exclusive_group</span><span class="p">(</span><span class="n">required</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
-        <span class="c1"># pdb input</span>
-        <span class="n">aln_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s1">&#39;-p&#39;</span><span class="p">,</span> <span class="s1">&#39;--pdb&#39;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;&lt;FILE&gt;&#39;</span><span class="p">),</span>
-                             <span class="n">help</span><span class="o">=</span><span class="s1">&#39;Structure in PDB format. &#39;</span><span class="o">+</span>
-                             <span class="s1">&#39;File can be plain or gzipped.&#39;</span><span class="p">,</span>
-                             <span class="n">action</span><span class="o">=</span><span class="s1">&#39;append&#39;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="nb">list</span><span class="p">())</span>
-        <span class="c1"># any OST entity</span>
-        <span class="n">aln_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s1">&#39;-e&#39;</span><span class="p">,</span> <span class="s1">&#39;--entity&#39;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;&lt;FILE&gt;&#39;</span><span class="p">),</span>
-                             <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Structure in any format readable by OST&#39;s &quot;</span><span class="o">+</span>
-                             <span class="s2">&quot;io.LoadEntity method. Format is chosen by file &quot;</span><span class="o">+</span>
-                             <span class="s2">&quot;ending. Recognized File Extensions: .ent, .pdb, &quot;</span><span class="o">+</span>
-                             <span class="s2">&quot;.ent.gz, .pdb.gz, .cif, .cif.gz.&quot;</span><span class="p">,</span>
-                             <span class="n">action</span><span class="o">=</span><span class="s1">&#39;append&#39;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="nb">list</span><span class="p">())</span>
-
-    <span class="k">def</span> <span class="nf">_AssembleProfile</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s1">&#39;-s&#39;</span><span class="p">,</span> <span class="s1">&#39;--seqprof&#39;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;&lt;FILE&gt;&#39;</span><span class="p">),</span>
-                          <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Sequence profile in any format readable by &quot;</span><span class="o">+</span>
-                          <span class="s2">&quot;OST&#39;s io.LoadSequenceProfile method. Format is &quot;</span><span class="o">+</span>
-                          <span class="s2">&quot;chosen by file ending. Recognized File Extensions: &quot;</span><span class="o">+</span>
-                          <span class="s2">&quot;.hhm, .hhm.gz, .pssm, .pssm.gz&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s1">&#39;append&#39;</span><span class="p">,</span>
-                          <span class="n">default</span><span class="o">=</span><span class="nb">list</span><span class="p">())</span></div>
-
-<span class="k">class</span> <span class="nc">PM3OptionsNamespace</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
-    <span class="c1"># class will grow, so for the moment pylint is ignored</span>
-    <span class="c1">#pylint: disable=too-few-public-methods</span>
-    <span class="sd">&quot;&quot;&quot;Output of :meth:`PM3ArgumentParser.Parse`.</span>
-
-<span class="sd">    Like output of :meth:`argparse.ArgumentParser.parse_args` with additional</span>
-<span class="sd">    functions for convenience.</span>
-<span class="sd">    &quot;&quot;&quot;</span>
-    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="k">pass</span>
-
-    <span class="k">def</span> <span class="nf">PostProcess</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">activated</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;Post processing of activated option packs.&quot;&quot;&quot;</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">allow_multitemplate</span> <span class="o">=</span> <span class="s1">&#39;ALLOW_MULTITEMPLATE&#39;</span> <span class="ow">in</span> <span class="n">activated</span>
-        <span class="k">if</span> <span class="s1">&#39;ALIGNMENT&#39;</span> <span class="ow">in</span> <span class="n">activated</span><span class="p">:</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">_PostProcessAlignment</span><span class="p">()</span>
-        <span class="k">if</span> <span class="s1">&#39;STRUCTURE&#39;</span> <span class="ow">in</span> <span class="n">activated</span><span class="p">:</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">_PostProcessStructure</span><span class="p">()</span>
-        <span class="k">if</span> <span class="s1">&#39;ATTACH_VIEWS&#39;</span> <span class="ow">in</span> <span class="n">activated</span><span class="p">:</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">_AttachViews</span><span class="p">()</span>
-        <span class="k">if</span> <span class="s1">&#39;PROFILE&#39;</span> <span class="ow">in</span> <span class="n">activated</span><span class="p">:</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">_PostProcessProfile</span><span class="p">()</span>
-
-    <span class="k">def</span> <span class="nf">_PostProcessAlignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="c1">#pylint: disable=no-member</span>
-        <span class="c1">#pylint: disable=attribute-defined-outside-init</span>
-        <span class="sd">&quot;&quot;&quot;Get alignments from command line input.&quot;&quot;&quot;</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">aln_sources</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">alignments</span> <span class="o">=</span> <span class="n">seq</span><span class="o">.</span><span class="n">AlignmentList</span><span class="p">()</span>
-        <span class="c1"># parse fasta files</span>
-        <span class="k">for</span> <span class="n">src</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">fasta</span><span class="p">:</span>
-            <span class="n">new_aln</span> <span class="o">=</span> <span class="n">_FetchAlnFromFile</span><span class="p">(</span><span class="n">src</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">allow_multitemplate</span><span class="p">,</span> <span class="s2">&quot;fasta&quot;</span><span class="p">)</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">alignments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_aln</span><span class="p">)</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">aln_sources</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">src</span><span class="p">)</span>
-        <span class="c1"># parse clustal files</span>
-        <span class="k">for</span> <span class="n">src</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">clustal</span><span class="p">:</span>
-            <span class="n">new_aln</span> <span class="o">=</span> <span class="n">_FetchAlnFromFile</span><span class="p">(</span><span class="n">src</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">allow_multitemplate</span><span class="p">,</span> <span class="s2">&quot;clustal&quot;</span><span class="p">)</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">alignments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_aln</span><span class="p">)</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">aln_sources</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">src</span><span class="p">)</span>
-        <span class="c1"># parse JSON input</span>
-        <span class="k">for</span> <span class="n">src</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">json</span><span class="p">:</span>
-            <span class="n">json_obj</span> <span class="o">=</span> <span class="n">_GetJSONOBject</span><span class="p">(</span><span class="n">src</span><span class="p">)</span>
-            <span class="k">for</span> <span class="n">aln</span> <span class="ow">in</span> <span class="n">_GetAlnFromJSON</span><span class="p">(</span><span class="n">json_obj</span><span class="p">,</span> <span class="n">src</span><span class="p">):</span>
-                <span class="bp">self</span><span class="o">.</span><span class="n">alignments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">aln</span><span class="p">)</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">aln_sources</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">src</span><span class="p">)</span>
-
-    <span class="k">def</span> <span class="nf">_PostProcessStructure</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="c1">#pylint: disable=attribute-defined-outside-init</span>
-        <span class="sd">&quot;&quot;&quot;Get structures from command line input.&quot;&quot;&quot;</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">structures</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">structure_sources</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-        <span class="c1"># parse pdb files</span>
-        <span class="k">for</span> <span class="n">src</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">pdb</span><span class="p">:</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">structures</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_LoadPDB</span><span class="p">(</span><span class="n">src</span><span class="p">))</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">structure_sources</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">src</span><span class="p">)</span>
-        <span class="c1"># parse generic structures</span>
-        <span class="k">for</span> <span class="n">src</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">entity</span><span class="p">:</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">structures</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_LoadEntity</span><span class="p">(</span><span class="n">src</span><span class="p">))</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">structure_sources</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">src</span><span class="p">)</span>
-
-    <span class="k">def</span> <span class="nf">_AttachViews</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;Attach views to tpl. sequences according to sequence names.&quot;&quot;&quot;</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;structures&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;alignments&#39;</span><span class="p">)):</span>
-            <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;Need to have structures and alignments to &quot;</span><span class="o">+</span>
-                                   <span class="s2">&quot;attach views.&quot;</span><span class="p">,</span> <span class="mi">41</span><span class="p">)</span>
-        <span class="c1"># get chain id to entity view (single chain) mapping (dict)</span>
-        <span class="n">chain_entities</span> <span class="o">=</span> <span class="n">_GetChains</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">structures</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">structure_sources</span><span class="p">)</span>
-        <span class="c1"># go through all templates in all alignments</span>
-        <span class="k">for</span> <span class="n">aln</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">alignments</span><span class="p">:</span>
-            <span class="n">_AttachViewsToAln</span><span class="p">(</span><span class="n">aln</span><span class="p">,</span> <span class="n">chain_entities</span><span class="p">)</span>
-
-    <span class="k">def</span> <span class="nf">_PostProcessProfile</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;Get Profiles from command line input.&quot;&quot;&quot;</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">profiles</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-
-        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">seqprof</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
-            <span class="c1"># no profiles provided, remember the all or nothing principle</span>
-            <span class="c1"># so not having any profile is fine</span>
-            <span class="k">return</span>
-
-        <span class="n">loaded_profiles</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-        <span class="k">for</span> <span class="n">src</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">seqprof</span><span class="p">:</span>
-            <span class="n">loaded_profiles</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_FetchProfileFromFile</span><span class="p">(</span><span class="n">src</span><span class="p">))</span>
-
-        <span class="n">prof_sequences</span> <span class="o">=</span> <span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="n">sequence</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">loaded_profiles</span><span class="p">]</span>
-
-        <span class="c1"># check uniqueness of loaded profiles</span>
-        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">prof_sequences</span><span class="p">))</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">prof_sequences</span><span class="p">):</span>
-            <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;All sequence profiles must have unique &quot;</span> <span class="o">+</span>
-                                   <span class="s2">&quot;sequence.&quot;</span><span class="p">,</span> <span class="mi">54</span><span class="p">)</span>
-
-        <span class="c1"># map onto alignment target sequences</span>
-        <span class="n">trg_sequences</span> <span class="o">=</span> <span class="p">[</span><span class="n">aln</span><span class="o">.</span><span class="n">GetSequence</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">GetGaplessString</span><span class="p">()</span> \
-                         <span class="k">for</span> <span class="n">aln</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">alignments</span><span class="p">]</span>
-        <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">trg_sequences</span><span class="p">:</span>
-            <span class="k">try</span><span class="p">:</span>
-                <span class="bp">self</span><span class="o">.</span><span class="n">profiles</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">loaded_profiles</span><span class="p">[</span><span class="n">prof_sequences</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">s</span><span class="p">)])</span>
-            <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">exc</span><span class="p">:</span>
-                <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;Could not find profile with sequence &quot;</span> <span class="o">+</span>
-                                       <span class="s2">&quot;that exactly matches trg seq: &quot;</span> <span class="o">+</span> <span class="n">s</span><span class="p">,</span> <span class="mi">55</span><span class="p">)</span>
-
-        <span class="c1"># We found a profile for every target sequence. So if the size of unique </span>
-        <span class="c1"># target sequences is not the same as for unique profile sequences, </span>
-        <span class="c1"># we know that we have additional profiles that never got mapped</span>
-        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">trg_sequences</span><span class="p">))</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">prof_sequences</span><span class="p">)):</span>
-            <span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s2">&quot;Could not map every profile to a target &quot;</span> <span class="o">+</span>
-                                   <span class="s2">&quot;sequence&quot;</span><span class="p">,</span> <span class="mi">53</span><span class="p">)</span>
-
-<span class="c1">#  LocalWords:  param attr prog argparse ArgumentParser bool sys os init str</span>
-<span class="c1">#  LocalWords:  progattr descattr argpinit argv formatter meth args namespace</span>
-<span class="c1">#  LocalWords:  ArgumentDefaultsHelpFormatter sysargv AssembleParser fasta io</span>
-<span class="c1">#  LocalWords:  metavar trg tpl FastA gzip tempfile ost promod aln stderr src</span>
-<span class="c1">#  LocalWords:  AssembleTrgTplAln CreateSequence SetSequenceOffset LogError</span>
-<span class="c1">#  LocalWords:  LogScript OptionsNamespace PostProcess AssembleAlignment JSON</span>
-<span class="c1">#  LocalWords:  AddAlignment AlignmentList SEQNAME whitespaces nargs trgname</span>
-<span class="c1">#  LocalWords:  PostProcessAlignment startswith seqfile elif MsgErrorAndExit</span>
-<span class="c1">#  LocalWords:  len FileExists gz FileGzip readfile fh NamedTemporaryFile fas</span>
-<span class="c1">#  LocalWords:  LoadAlignment exc GetCount fst GetSequence snd</span>
-</pre></div>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
-        <div class="sphinxsidebarwrapper"><div class="relations">
-<h3>Related Topics</h3>
-<ul>
-  <li><a href="../../../index.html">Documentation overview</a><ul>
-  <li><a href="../../index.html">Module code</a><ul>
-  <li><a href="../../promod3.html">promod3</a><ul>
-  </ul></li>
-  </ul></li>
-  </ul></li>
-</ul>
-</div>
-<div id="searchbox" style="display: none" role="search">
-  <h3>Quick search</h3>
-    <form class="search" action="../../../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
-      
-      |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
-      
-    </div>
-
-    
-
-    
-  </body>
-</html>
\ No newline at end of file
diff --git a/doc/html/_modules/promod3/modelling/_closegaps.html b/doc/html/_modules/promod3/modelling/_closegaps.html
deleted file mode 100644
index f7cc176c..00000000
--- a/doc/html/_modules/promod3/modelling/_closegaps.html
+++ /dev/null
@@ -1,1659 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>promod3.modelling._closegaps &mdash; ProMod3 1.3.0 documentation</title>
-    
-    <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
-    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../../../',
-        VERSION:     '1.3.0',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../../../_static/jquery.js"></script>
-    <script type="text/javascript" src="../../../_static/underscore.js"></script>
-    <script type="text/javascript" src="../../../_static/doctools.js"></script>
-    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../../../index.html" />
-    <link rel="up" title="promod3" href="../../promod3.html" />
-   
-  <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
-  
-  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
-
-  </head>
-  <body role="document">
-  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body" role="main">
-            
-  <h1>Source code for promod3.modelling._closegaps</h1><div class="highlight"><pre>
-<span></span><span class="c1"># Copyright (c) 2013-2018, SIB - Swiss Institute of Bioinformatics and </span>
-<span class="c1">#                          Biozentrum - University of Basel</span>
-<span class="c1"># </span>
-<span class="c1"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<span class="c1"># you may not use this file except in compliance with the License.</span>
-<span class="c1"># You may obtain a copy of the License at</span>
-<span class="c1"># </span>
-<span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
-<span class="c1"># </span>
-<span class="c1"># Unless required by applicable law or agreed to in writing, software</span>
-<span class="c1"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<span class="c1"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<span class="c1"># See the License for the specific language governing permissions and</span>
-<span class="c1"># limitations under the License.</span>
-
-
-<span class="sd">&#39;&#39;&#39;High-level functionality for modelling module to close gaps. Added in the</span>
-<span class="sd">__init__.py file. To be used directly by passing a ModellingHandle instance</span>
-<span class="sd">as argument.</span>
-<span class="sd">&#39;&#39;&#39;</span>
-
-<span class="c1"># internal</span>
-<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">loop</span><span class="p">,</span> <span class="n">core</span><span class="p">,</span> <span class="n">scoring</span>
-<span class="kn">from</span> <span class="nn">_modelling</span> <span class="kn">import</span> <span class="o">*</span>
-<span class="kn">from</span> <span class="nn">_ring_punches</span> <span class="kn">import</span> <span class="o">*</span>
-<span class="kn">from</span> <span class="nn">_reconstruct_sidechains</span> <span class="kn">import</span> <span class="o">*</span>
-<span class="c1"># external</span>
-<span class="kn">import</span> <span class="nn">ost</span>
-<span class="kn">import</span> <span class="nn">sys</span>
-
-<span class="c1">###############################################################################</span>
-<span class="c1"># loop candidate selection setup</span>
-<span class="k">def</span> <span class="nf">_GetBestLC</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">loop_candidates</span><span class="p">,</span> <span class="n">start_resnum</span><span class="p">,</span> <span class="n">chain_idx</span><span class="p">,</span>
-               <span class="n">db_scores</span><span class="p">,</span> <span class="n">max_num_all_atom</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">length_dep_weights</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
-    <span class="c1"># returns (min_idx, min_score)</span>
-
-    <span class="c1"># dummy check</span>
-    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">loop_candidates</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;Need at least 1 candidate to choose from!&quot;</span><span class="p">)</span>
-    
-    <span class="c1"># setup weights</span>
-    <span class="n">with_db</span> <span class="o">=</span> <span class="p">(</span><span class="ow">not</span> <span class="n">db_scores</span><span class="o">.</span><span class="n">IsEmpty</span><span class="p">())</span>
-    <span class="n">with_aa</span> <span class="o">=</span> <span class="p">(</span><span class="n">max_num_all_atom</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
-    <span class="n">weights</span> <span class="o">=</span> <span class="n">ScoringWeights</span><span class="o">.</span><span class="n">GetWeights</span><span class="p">(</span><span class="n">with_db</span><span class="p">,</span> <span class="n">with_aa</span><span class="p">,</span> 
-                                        <span class="n">length_dep_weights</span><span class="p">,</span> 
-                                        <span class="nb">len</span><span class="p">(</span><span class="n">loop_candidates</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span>
-
-    <span class="c1"># setup all scores object (we collect needed scores there)</span>
-    <span class="n">all_scores</span> <span class="o">=</span> <span class="n">db_scores</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>  <span class="c1"># copy to avoid changing db_scores</span>
-
-    <span class="c1"># add backbone scores</span>
-    <span class="n">loop_candidates</span><span class="o">.</span><span class="n">CalculateBackboneScores</span><span class="p">(</span><span class="n">all_scores</span><span class="p">,</span> <span class="n">mhandle</span><span class="p">,</span>
-                                            <span class="n">start_resnum</span><span class="p">,</span> <span class="n">chain_idx</span><span class="p">)</span>
-
-    <span class="c1"># add all atom scores?</span>
-    <span class="k">if</span> <span class="n">with_aa</span><span class="p">:</span>
-        <span class="c1"># get best ones based on previous scores</span>
-        <span class="n">non_aa_weights</span> <span class="o">=</span> <span class="n">ScoringWeights</span><span class="o">.</span><span class="n">GetWeights</span><span class="p">(</span><span class="n">with_db</span><span class="p">,</span> <span class="bp">False</span><span class="p">,</span> 
-                                                   <span class="n">length_dep_weights</span><span class="p">,</span>
-                                                   <span class="nb">len</span><span class="p">(</span><span class="n">loop_candidates</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span>
-
-        <span class="n">non_aa_scores</span> <span class="o">=</span> <span class="n">all_scores</span><span class="o">.</span><span class="n">LinearCombine</span><span class="p">(</span><span class="n">non_aa_weights</span><span class="p">)</span>
-        <span class="n">arg_sorted_scores</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">([(</span><span class="n">v</span><span class="p">,</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">v</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">non_aa_scores</span><span class="p">)])</span>
-        <span class="n">min_indices</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">v</span><span class="p">,</span><span class="n">i</span> <span class="ow">in</span> <span class="n">arg_sorted_scores</span><span class="p">[:</span><span class="n">max_num_all_atom</span><span class="p">]]</span>
-        <span class="c1"># extract relevant loop candidates and scores</span>
-        <span class="n">aa_loop_candidates</span> <span class="o">=</span> <span class="n">loop_candidates</span><span class="o">.</span><span class="n">Extract</span><span class="p">(</span><span class="n">min_indices</span><span class="p">)</span>
-        <span class="n">all_scores</span> <span class="o">=</span> <span class="n">all_scores</span><span class="o">.</span><span class="n">Extract</span><span class="p">(</span><span class="n">min_indices</span><span class="p">)</span>
-        <span class="c1"># add all atom scores</span>
-        <span class="n">aa_loop_candidates</span><span class="o">.</span><span class="n">CalculateAllAtomScores</span><span class="p">(</span><span class="n">all_scores</span><span class="p">,</span> <span class="n">mhandle</span><span class="p">,</span>
-                                                  <span class="n">start_resnum</span><span class="p">,</span> <span class="n">chain_idx</span><span class="p">)</span>
-
-    <span class="c1"># get / return best</span>
-    <span class="n">scores</span> <span class="o">=</span> <span class="n">all_scores</span><span class="o">.</span><span class="n">LinearCombine</span><span class="p">(</span><span class="n">weights</span><span class="p">)</span>
-    <span class="n">min_score</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">scores</span><span class="p">)</span>
-    <span class="n">min_idx</span> <span class="o">=</span> <span class="n">scores</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">min_score</span><span class="p">)</span>
-    <span class="c1"># translate to original indexing for all atom</span>
-    <span class="k">if</span> <span class="n">with_aa</span><span class="p">:</span>
-        <span class="n">min_idx</span> <span class="o">=</span> <span class="n">min_indices</span><span class="p">[</span><span class="n">min_idx</span><span class="p">]</span>
-    <span class="k">return</span> <span class="p">(</span><span class="n">min_idx</span><span class="p">,</span> <span class="n">min_score</span><span class="p">)</span>
-
-<span class="c1">###############################################################################</span>
-<span class="c1"># helper functions</span>
-<span class="k">def</span> <span class="nf">_GetGapExtender</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">actual_gap</span><span class="p">,</span> <span class="n">use_scoring_extender</span><span class="p">,</span>
-                    <span class="n">use_full_extender</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=-</span><span class="mi">1</span><span class="p">):</span>
-    <span class="c1"># DO NOT USE full ext. with max_len = -1 as this can use LOTS of memory</span>
-    <span class="k">if</span> <span class="n">use_full_extender</span> <span class="ow">and</span> <span class="n">max_length</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;Cannot use neg. max_length with full extender!&quot;</span><span class="p">)</span>
-    <span class="c1"># return appropriate gap extender</span>
-    <span class="n">actual_chain_idx</span> <span class="o">=</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">GetChainIndex</span><span class="p">()</span>
-    <span class="k">if</span> <span class="n">use_scoring_extender</span><span class="p">:</span>
-        <span class="c1"># get extender_penalties (note: changes as gaps filled)</span>
-        <span class="n">extender_penalties</span> <span class="o">=</span> <span class="p">[</span><span class="mf">0.0</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">seqres</span><span class="p">[</span><span class="n">actual_chain_idx</span><span class="p">])</span>
-        <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">chains</span><span class="p">[</span><span class="n">actual_chain_idx</span><span class="p">]</span><span class="o">.</span><span class="n">residues</span><span class="p">:</span>
-            <span class="k">if</span> <span class="n">r</span><span class="o">.</span><span class="n">GetSecStructure</span><span class="p">()</span><span class="o">.</span><span class="n">IsHelical</span><span class="p">()</span> <span class="ow">or</span> \
-               <span class="n">r</span><span class="o">.</span><span class="n">GetSecStructure</span><span class="p">()</span><span class="o">.</span><span class="n">IsExtended</span><span class="p">():</span>
-                <span class="n">num</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span>
-                <span class="n">extender_penalties</span><span class="p">[</span><span class="n">num</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mf">1.0</span>
-        <span class="c1"># setup scoring extender</span>
-        <span class="k">if</span> <span class="n">use_full_extender</span><span class="p">:</span>
-            <span class="k">return</span> <span class="n">ScoringGapExtender</span><span class="p">(</span><span class="n">actual_gap</span><span class="p">,</span> <span class="mf">0.8</span><span class="p">,</span>
-                                      <span class="n">extender_penalties</span><span class="p">,</span>
-                                      <span class="n">mhandle</span><span class="o">.</span><span class="n">seqres</span><span class="p">[</span><span class="n">actual_chain_idx</span><span class="p">],</span>
-                                      <span class="n">max_length</span><span class="p">)</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;Cannot use ScoringGapExtender w/o max_length.&quot;</span><span class="p">)</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="k">if</span> <span class="n">use_full_extender</span><span class="p">:</span>
-            <span class="k">return</span> <span class="n">FullGapExtender</span><span class="p">(</span><span class="n">actual_gap</span><span class="p">,</span>
-                                   <span class="n">mhandle</span><span class="o">.</span><span class="n">seqres</span><span class="p">[</span><span class="n">actual_chain_idx</span><span class="p">],</span>
-                                   <span class="n">max_length</span><span class="p">)</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="k">return</span> <span class="n">GapExtender</span><span class="p">(</span><span class="n">actual_gap</span><span class="p">,</span>
-                               <span class="n">mhandle</span><span class="o">.</span><span class="n">seqres</span><span class="p">[</span><span class="n">actual_chain_idx</span><span class="p">])</span>
-
-<span class="k">def</span> <span class="nf">_ResolveLogInfo</span><span class="p">(</span><span class="n">gap_orig</span><span class="p">,</span> <span class="n">optimal_gap</span><span class="p">,</span> <span class="n">n_candidates</span><span class="p">,</span> <span class="n">with_db</span><span class="p">,</span> <span class="n">with_aa</span><span class="p">):</span>
-    <span class="c1"># helper for consistent logging...</span>
-    <span class="n">scor_str</span> <span class="o">=</span> <span class="s2">&quot;BB&quot;</span>
-    <span class="k">if</span> <span class="n">with_db</span><span class="p">:</span>
-        <span class="n">scor_str</span> <span class="o">+=</span> <span class="s2">&quot;_DB&quot;</span>
-    <span class="k">if</span> <span class="n">with_aa</span><span class="p">:</span>
-        <span class="n">scor_str</span> <span class="o">+=</span> <span class="s2">&quot;_AA&quot;</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Resolved </span><span class="si">%s</span><span class="s2"> by filling </span><span class="si">%s</span><span class="s2"> (</span><span class="si">%d</span><span class="s2"> candidates, </span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> \
-                <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">gap_orig</span><span class="p">),</span> <span class="nb">str</span><span class="p">(</span><span class="n">optimal_gap</span><span class="p">),</span> <span class="n">n_candidates</span><span class="p">,</span> <span class="n">scor_str</span><span class="p">))</span>
-
-<span class="k">def</span> <span class="nf">_CloseLoopFrame</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">gap_orig</span><span class="p">,</span> <span class="n">actual_candidates</span><span class="p">,</span> <span class="n">actual_extended_gaps</span><span class="p">,</span>
-                    <span class="n">actual_db_scores</span><span class="o">=</span><span class="p">[],</span> <span class="n">max_num_all_atom</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> 
-                    <span class="n">length_dep_weights</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Rank candidates with &quot;frame-approach&quot;.</span>
-<span class="sd">    All found candidates are extended prior to scoring so they match in size.</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="c1"># get chain for gap</span>
-    <span class="n">actual_chain_idx</span> <span class="o">=</span> <span class="n">actual_extended_gaps</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">GetChainIndex</span><span class="p">()</span>
-    <span class="n">actual_chain</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">chains</span><span class="p">[</span><span class="n">actual_chain_idx</span><span class="p">]</span>
-    <span class="c1"># get min_res_num, max_after_resnum</span>
-    <span class="n">min_before_resnum</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">maxint</span>
-    <span class="n">max_after_resnum</span> <span class="o">=</span> <span class="o">-</span><span class="n">sys</span><span class="o">.</span><span class="n">maxint</span><span class="o">-</span><span class="mi">1</span>
-    <span class="k">for</span> <span class="n">g</span> <span class="ow">in</span> <span class="n">actual_extended_gaps</span><span class="p">:</span>
-        <span class="n">min_before_resnum</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">min_before_resnum</span><span class="p">,</span>
-                                <span class="n">g</span><span class="o">.</span><span class="n">before</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">())</span>
-        <span class="n">max_after_resnum</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">max_after_resnum</span><span class="p">,</span>
-                               <span class="n">g</span><span class="o">.</span><span class="n">after</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">())</span>
-    
-    <span class="c1"># all loop candidates will be scored along the full max. extension ever</span>
-    <span class="c1"># reached in the search before, so we build an overall frame, where we</span>
-    <span class="c1"># insert the loops</span>
-    <span class="n">frame_seq</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">seqres</span><span class="p">[</span><span class="n">actual_chain_idx</span><span class="p">]</span>\
-                <span class="p">[</span><span class="n">min_before_resnum</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span><span class="n">max_after_resnum</span><span class="p">]</span>
-    <span class="n">frame_backbone_list</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">BackboneList</span><span class="p">(</span><span class="n">frame_seq</span><span class="p">)</span>
-    <span class="n">actual_res_num</span> <span class="o">=</span> <span class="n">ost</span><span class="o">.</span><span class="n">mol</span><span class="o">.</span><span class="n">ResNum</span><span class="p">(</span><span class="n">min_before_resnum</span><span class="p">)</span>
-    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">frame_seq</span><span class="p">)):</span>
-        <span class="n">actual_res</span> <span class="o">=</span> <span class="n">actual_chain</span><span class="o">.</span><span class="n">FindResidue</span><span class="p">(</span><span class="n">actual_res_num</span><span class="p">)</span>
-        <span class="k">if</span> <span class="n">actual_res</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
-            <span class="n">frame_backbone_list</span><span class="o">.</span><span class="n">Set</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">actual_res</span><span class="p">,</span> <span class="n">frame_seq</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
-        <span class="n">actual_res_num</span> <span class="o">+=</span> <span class="mi">1</span>
-
-    <span class="c1"># prepare loop candidates for scoring</span>
-    <span class="n">final_loop_candidates</span> <span class="o">=</span> <span class="n">LoopCandidates</span><span class="p">(</span><span class="n">frame_seq</span><span class="p">)</span>
-    <span class="n">back_mapper</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-    <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">loop_candidates</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">actual_candidates</span><span class="p">):</span>
-        <span class="n">start_index</span> <span class="o">=</span> <span class="n">actual_extended_gaps</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">before</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span>\
-                      <span class="o">-</span> <span class="n">min_before_resnum</span>
-        <span class="k">for</span> <span class="n">j</span><span class="p">,</span> <span class="n">loop_candidate</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">loop_candidates</span><span class="p">):</span>
-            <span class="n">actual_frame_backbone_list</span> <span class="o">=</span> <span class="n">frame_backbone_list</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-            <span class="n">actual_frame_backbone_list</span><span class="o">.</span><span class="n">ReplaceFragment</span><span class="p">(</span>
-                <span class="n">loop_candidate</span><span class="p">,</span> <span class="n">start_index</span><span class="p">,</span> <span class="bp">False</span><span class="p">)</span>
-            <span class="n">final_loop_candidates</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">actual_frame_backbone_list</span><span class="p">)</span>
-            <span class="n">back_mapper</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">))</span>
-
-    <span class="c1"># db scores requested</span>
-    <span class="n">db_scores</span> <span class="o">=</span> <span class="n">ScoreContainer</span><span class="p">()</span>
-    <span class="k">for</span> <span class="n">actual_scores</span> <span class="ow">in</span> <span class="n">actual_db_scores</span><span class="p">:</span>
-        <span class="n">db_scores</span><span class="o">.</span><span class="n">Extend</span><span class="p">(</span><span class="n">actual_scores</span><span class="p">)</span>
-    
-    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">final_loop_candidates</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="c1"># get best</span>
-        <span class="n">min_idx</span><span class="p">,</span> <span class="n">min_score</span> <span class="o">=</span> <span class="n">_GetBestLC</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">final_loop_candidates</span><span class="p">,</span>
-                                        <span class="n">min_before_resnum</span><span class="p">,</span> <span class="n">actual_chain_idx</span><span class="p">,</span>
-                                        <span class="n">db_scores</span><span class="p">,</span> <span class="n">max_num_all_atom</span><span class="p">,</span> 
-                                        <span class="n">length_dep_weights</span><span class="p">)</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogVerbose</span><span class="p">(</span><span class="s2">&quot;Gap </span><span class="si">%s</span><span class="s2"> - </span><span class="si">%d</span><span class="s2"> candidates, best (min) score </span><span class="si">%g</span><span class="s2">&quot;</span> <span class="o">%</span>
-                       <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">gap_orig</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">final_loop_candidates</span><span class="p">),</span> <span class="n">min_score</span><span class="p">))</span>
-        <span class="c1"># resolve loop</span>
-        <span class="n">idx_a</span> <span class="o">=</span> <span class="n">back_mapper</span><span class="p">[</span><span class="n">min_idx</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
-        <span class="n">idx_b</span> <span class="o">=</span> <span class="n">back_mapper</span><span class="p">[</span><span class="n">min_idx</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>
-        <span class="n">_ResolveLogInfo</span><span class="p">(</span><span class="n">gap_orig</span><span class="p">,</span> <span class="n">actual_extended_gaps</span><span class="p">[</span><span class="n">idx_a</span><span class="p">],</span>
-                        <span class="nb">len</span><span class="p">(</span><span class="n">final_loop_candidates</span><span class="p">),</span> <span class="nb">bool</span><span class="p">(</span><span class="n">actual_db_scores</span><span class="p">),</span>
-                        <span class="n">max_num_all_atom</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
-        <span class="c1"># update model and clear gaps</span>
-        <span class="n">bb_list</span> <span class="o">=</span> <span class="n">actual_candidates</span><span class="p">[</span><span class="n">idx_a</span><span class="p">][</span><span class="n">idx_b</span><span class="p">]</span>
-        <span class="n">actual_gap</span> <span class="o">=</span> <span class="n">actual_extended_gaps</span><span class="p">[</span><span class="n">idx_a</span><span class="p">]</span>
-        <span class="c1"># will return -1 if last gap removed, else next gap idx</span>
-        <span class="k">return</span> <span class="n">InsertLoopClearGaps</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">bb_list</span><span class="p">,</span> <span class="n">actual_gap</span><span class="p">)</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Failed at loop insertion (</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">gap_orig</span><span class="p">))</span>
-        <span class="k">return</span> <span class="o">-</span><span class="mi">2</span>
-
-
-<span class="k">def</span> <span class="nf">_CloseLoopBare</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">gap_orig</span><span class="p">,</span> <span class="n">actual_candidates</span><span class="p">,</span> <span class="n">actual_extended_gaps</span><span class="p">,</span>
-                   <span class="n">actual_db_scores</span><span class="o">=</span><span class="p">[],</span> <span class="n">penalize_length</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
-                   <span class="n">max_num_all_atom</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">length_dep_weights</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Rank candidates directly.</span>
-<span class="sd">    All candidates are scored directly and optionally penalized for gap length.</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="c1"># get chain for gap</span>
-    <span class="n">actual_chain_idx</span> <span class="o">=</span> <span class="n">actual_extended_gaps</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">GetChainIndex</span><span class="p">()</span>
-    
-    <span class="c1"># score loops as they are</span>
-    <span class="n">min_score</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="s2">&quot;inf&quot;</span><span class="p">)</span>
-    <span class="n">optimal_gap</span> <span class="o">=</span> <span class="bp">None</span>
-    <span class="n">optimal_candidate</span> <span class="o">=</span> <span class="bp">None</span>
-    <span class="n">n_candidates</span> <span class="o">=</span> <span class="mi">0</span>
-    <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">loop_candidates</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">actual_candidates</span><span class="p">):</span>
-        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">loop_candidates</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> <span class="k">continue</span>
-        <span class="n">n_candidates</span> <span class="o">+=</span> <span class="nb">len</span><span class="p">(</span><span class="n">loop_candidates</span><span class="p">)</span>
-        <span class="c1"># get current best</span>
-        <span class="n">before_resnum</span> <span class="o">=</span> <span class="n">actual_extended_gaps</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">before</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span>
-        <span class="n">db_scores</span> <span class="o">=</span> <span class="n">ScoreContainer</span><span class="p">()</span>
-        <span class="k">if</span> <span class="n">actual_db_scores</span><span class="p">:</span>
-            <span class="n">db_scores</span> <span class="o">=</span> <span class="n">actual_db_scores</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
-        <span class="n">best_idx</span><span class="p">,</span> <span class="n">score</span> <span class="o">=</span> <span class="n">_GetBestLC</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">loop_candidates</span><span class="p">,</span> <span class="n">before_resnum</span><span class="p">,</span>
-                                     <span class="n">actual_chain_idx</span><span class="p">,</span> <span class="n">db_scores</span><span class="p">,</span>
-                                     <span class="n">max_num_all_atom</span><span class="p">,</span> <span class="n">length_dep_weights</span><span class="p">)</span>
-        <span class="c1"># compare with others</span>
-        <span class="k">if</span> <span class="n">penalize_length</span><span class="p">:</span>
-            <span class="c1"># penalized by gap length</span>
-            <span class="n">score</span> <span class="o">=</span> <span class="n">score</span> <span class="o">*</span> <span class="n">actual_extended_gaps</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">length</span>
-        <span class="k">if</span> <span class="n">score</span> <span class="o">&lt;</span> <span class="n">min_score</span><span class="p">:</span>
-            <span class="c1"># keep best one</span>
-            <span class="n">min_score</span> <span class="o">=</span> <span class="n">score</span>
-            <span class="n">optimal_gap</span> <span class="o">=</span> <span class="n">actual_extended_gaps</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
-            <span class="n">optimal_candidate</span> <span class="o">=</span> <span class="n">loop_candidates</span><span class="p">[</span><span class="n">best_idx</span><span class="p">]</span>
-
-    <span class="n">ost</span><span class="o">.</span><span class="n">LogVerbose</span><span class="p">(</span><span class="s2">&quot;Gap </span><span class="si">%s</span><span class="s2"> - </span><span class="si">%d</span><span class="s2"> candidates, best (min) score </span><span class="si">%g</span><span class="s2">&quot;</span> <span class="o">%</span>
-                   <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">gap_orig</span><span class="p">),</span> <span class="n">n_candidates</span><span class="p">,</span> <span class="n">min_score</span><span class="p">))</span>
-
-    <span class="c1"># finally resolve loop</span>
-    <span class="k">if</span> <span class="n">optimal_candidate</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
-        <span class="c1"># report</span>
-        <span class="n">_ResolveLogInfo</span><span class="p">(</span><span class="n">gap_orig</span><span class="p">,</span> <span class="n">optimal_gap</span><span class="p">,</span> <span class="n">n_candidates</span><span class="p">,</span>
-                        <span class="nb">bool</span><span class="p">(</span><span class="n">actual_db_scores</span><span class="p">),</span> <span class="n">max_num_all_atom</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
-        <span class="c1"># update model and clear gaps</span>
-        <span class="c1"># will return -1 if last gap removed, else next gap idx</span>
-        <span class="k">return</span> <span class="n">InsertLoopClearGaps</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">optimal_candidate</span><span class="p">,</span> <span class="n">optimal_gap</span><span class="p">)</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Failed at loop insertion (</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">gap_orig</span><span class="p">))</span>
-        <span class="k">return</span> <span class="o">-</span><span class="mi">2</span>
-
-<span class="k">def</span> <span class="nf">_CloseLoop</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">gap_orig</span><span class="p">,</span> <span class="n">actual_candidates</span><span class="p">,</span>
-               <span class="n">actual_extended_gaps</span><span class="p">,</span> <span class="n">variant</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">actual_db_scores</span><span class="o">=</span><span class="p">[],</span>
-               <span class="n">max_num_all_atom</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">length_dep_weights</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Choose best scoring loop candidate and close loop in mhandle.</span>
-<span class="sd">    :param gap_orig: Gap we actually wanted to close</span>
-<span class="sd">    :param actual_candidates: List of LoopCandidates</span>
-<span class="sd">    :param actual_extended_gaps: List of gaps (same size as actual_candidates)</span>
-<span class="sd">    :param variant: 0 = _CloseLoopFrame()</span>
-<span class="sd">                    1 = _CloseLoopBare(penalize_length=False)</span>
-<span class="sd">                    2 = _CloseLoopBare(penalize_length=True)</span>
-<span class="sd">    :param actual_db_scores: List of DB scores (same size as actual_candidates)</span>
-<span class="sd">    :param max_num_all_atom: Num. of all atom LC to consider</span>
-<span class="sd">    :return: gap-index as returned by ClearGaps or -2 if fail.</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="s1">&#39;closegaps::_CloseLoop&#39;</span><span class="p">)</span>
-    <span class="c1"># check consistency</span>
-    <span class="n">N</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">actual_extended_gaps</span><span class="p">)</span>
-    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">actual_candidates</span><span class="p">)</span> <span class="o">!=</span> <span class="n">N</span><span class="p">:</span>
-        <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;Inconsistent list-lengths in _CloseLoop &quot;</span> \
-                           <span class="s2">&quot;(</span><span class="si">%d</span><span class="s2">, </span><span class="si">%d</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">actual_candidates</span><span class="p">),</span> <span class="n">N</span><span class="p">))</span>
-    <span class="c1"># check for empty candidate list</span>
-    <span class="k">if</span> <span class="n">N</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Failed at loop insertion (</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">gap_orig</span><span class="p">))</span>
-        <span class="k">return</span> <span class="o">-</span><span class="mi">2</span>
-    <span class="c1"># choose variant</span>
-    <span class="k">if</span> <span class="n">variant</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="k">return</span> <span class="n">_CloseLoopFrame</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">gap_orig</span><span class="p">,</span> <span class="n">actual_candidates</span><span class="p">,</span>
-                               <span class="n">actual_extended_gaps</span><span class="p">,</span> <span class="n">actual_db_scores</span><span class="p">,</span>
-                               <span class="n">max_num_all_atom</span><span class="p">,</span> <span class="n">length_dep_weights</span><span class="p">)</span>
-    <span class="k">elif</span> <span class="n">variant</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">]:</span>
-        <span class="k">return</span> <span class="n">_CloseLoopBare</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">gap_orig</span><span class="p">,</span> <span class="n">actual_candidates</span><span class="p">,</span>
-                              <span class="n">actual_extended_gaps</span><span class="p">,</span> <span class="n">actual_db_scores</span><span class="p">,</span>
-                              <span class="n">variant</span> <span class="o">==</span> <span class="mi">2</span><span class="p">,</span> <span class="n">max_num_all_atom</span><span class="p">,</span>
-                              <span class="n">length_dep_weights</span><span class="p">)</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;Unknown variant </span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">variant</span><span class="p">);</span>
-
-<span class="k">def</span> <span class="nf">_InRange</span><span class="p">(</span><span class="n">gap</span><span class="p">,</span> <span class="n">chain_idx</span><span class="p">,</span> <span class="n">resnum_range</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Check if gap is in range to be processed.&#39;&#39;&#39;</span>
-    <span class="c1"># It is possible to specify exact ranges that should be resolved by</span>
-    <span class="c1"># the chain_idx and resnum_range parameters.</span>
-    <span class="c1"># Let&#39;s check whether we care for that particular gap in case of one</span>
-    <span class="c1"># parameter being set.</span>
-    <span class="k">if</span> <span class="n">chain_idx</span> <span class="o">!=</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">gap</span><span class="o">.</span><span class="n">GetChainIndex</span><span class="p">()</span> <span class="o">!=</span> <span class="n">chain_idx</span><span class="p">:</span>
-        <span class="k">return</span> <span class="bp">False</span>
-    <span class="k">elif</span> <span class="n">resnum_range</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
-        <span class="k">if</span> <span class="n">gap</span><span class="o">.</span><span class="n">IsNTerminal</span><span class="p">():</span>
-            <span class="n">c_stem_num</span> <span class="o">=</span> <span class="n">gap</span><span class="o">.</span><span class="n">after</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span>
-            <span class="k">return</span> <span class="n">c_stem_num</span> <span class="o">&gt;</span> <span class="n">resnum_range</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
-        <span class="k">if</span> <span class="n">gap</span><span class="o">.</span><span class="n">IsCTerminal</span><span class="p">():</span>
-            <span class="n">n_stem_num</span> <span class="o">=</span> <span class="n">gap</span><span class="o">.</span><span class="n">before</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span>
-            <span class="k">return</span> <span class="n">n_stem_num</span> <span class="o">&lt;</span> <span class="n">resnum_range</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
-        <span class="n">n_stem_num</span> <span class="o">=</span> <span class="n">gap</span><span class="o">.</span><span class="n">before</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span>
-        <span class="n">c_stem_num</span> <span class="o">=</span> <span class="n">gap</span><span class="o">.</span><span class="n">after</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span>
-        <span class="k">if</span> <span class="n">n_stem_num</span> <span class="o">&lt;=</span> <span class="n">resnum_range</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">and</span> <span class="n">c_stem_num</span> <span class="o">&gt;=</span> <span class="n">resnum_range</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
-            <span class="c1"># full overlap =&gt; current gap is fully enclosing range</span>
-            <span class="k">return</span> <span class="bp">True</span>
-        <span class="k">elif</span> <span class="n">n_stem_num</span> <span class="o">&gt;=</span> <span class="n">resnum_range</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">and</span> <span class="n">n_stem_num</span> <span class="o">&lt;</span> <span class="n">resnum_range</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
-            <span class="c1"># partial overlap =&gt; n-stem is within range</span>
-            <span class="k">return</span> <span class="bp">True</span>
-        <span class="k">elif</span> <span class="n">c_stem_num</span> <span class="o">&gt;</span> <span class="n">resnum_range</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">and</span> <span class="n">c_stem_num</span> <span class="o">&lt;=</span> <span class="n">resnum_range</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
-            <span class="c1"># partial overlap =&gt; c-stem is within range</span>
-            <span class="k">return</span> <span class="bp">True</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="k">return</span> <span class="bp">False</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="k">return</span> <span class="bp">True</span>
-
-<span class="k">def</span> <span class="nf">_GetMCWeights</span><span class="p">():</span>
-    <span class="c1"># get weights for Monte Carlo sampling (subset of BB only scores for super </span>
-    <span class="c1">#                                       fast sampling)</span>
-    <span class="n">bb_weights</span> <span class="o">=</span> <span class="n">ScoringWeights</span><span class="o">.</span><span class="n">GetWeights</span><span class="p">()</span>
-    <span class="n">return_weights</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">()</span>
-    <span class="n">return_weights</span><span class="p">[</span><span class="s2">&quot;reduced&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">bb_weights</span><span class="p">[</span><span class="s2">&quot;reduced&quot;</span><span class="p">]</span>
-    <span class="n">return_weights</span><span class="p">[</span><span class="s2">&quot;cb_packing&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">bb_weights</span><span class="p">[</span><span class="s2">&quot;cb_packing&quot;</span><span class="p">]</span>
-    <span class="n">return_weights</span><span class="p">[</span><span class="s2">&quot;clash&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">bb_weights</span><span class="p">[</span><span class="s2">&quot;clash&quot;</span><span class="p">]</span>
-    <span class="k">return</span> <span class="n">return_weights</span>
-
-<span class="c1">###############################################################################</span>
-
-<div class="viewcode-block" id="CloseSmallDeletions"><a class="viewcode-back" href="../../../modelling/pipeline.html#promod3.modelling.CloseSmallDeletions">[docs]</a><span class="k">def</span> <span class="nf">CloseSmallDeletions</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">max_extension</span><span class="o">=</span><span class="mi">9</span><span class="p">,</span> <span class="n">clash_thresh</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span>
-                        <span class="n">e_thresh</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span> <span class="n">use_scoring_extender</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
-                        <span class="n">use_full_extender</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">chain_idx</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
-                        <span class="n">resnum_range</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">ff_lookup</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Close small deletions by relaxing neighbouring residues.</span>
-
-<span class="sd">    Small deletions in the template from the target-template alignment have a</span>
-<span class="sd">    good chance to be bridged just by relaxing neighbours around a tiny gap.</span>
-<span class="sd">    Before diving into the more demanding tasks in modeling, those may be closed</span>
-<span class="sd">    already in the raw-model. After closure some checks are done to see if the</span>
-<span class="sd">    solution is stereochemically sensible.</span>
-
-<span class="sd">    Closed gaps are removed from :attr:`mhandle.gaps`.</span>
-
-<span class="sd">    .. literalinclude:: ../../../tests/doc/scripts/modelling_close_small_deletions.py</span>
-
-<span class="sd">    :param mhandle: Modelling handle on which to apply change.</span>
-<span class="sd">    :type mhandle:  :class:`ModellingHandle`</span>
-
-<span class="sd">    :param max_extension: Maximal number of gap extension steps to perform</span>
-<span class="sd">                          (see :class:`GapExtender`)</span>
-<span class="sd">    :type max_extension: :class:`int`</span>
-
-<span class="sd">    :param clash_thresh: Threshold for the backbone clash score. Acceptance</span>
-<span class="sd">                         means being lower than this.</span>
-<span class="sd">    :type clash_thresh: :class:`float`</span>
-
-<span class="sd">    :param e_thresh: Potential energy should be lower than this.</span>
-<span class="sd">    :type e_thresh: :class:`float`</span>
-
-<span class="sd">    :param use_scoring_extender: True = use :class:`ScoringGapExtender` instead</span>
-<span class="sd">                                 of :class:`GapExtender`.</span>
-<span class="sd">                                 The gap is penalized according as</span>
-<span class="sd">                                 0.8*length + sum(helices) + sum(sheets).</span>
-<span class="sd">                                 For the scondary-structure-penalty to work,</span>
-<span class="sd">                                 the model-template must have the appropriate</span>
-<span class="sd">                                 information before :func:`BuildRawModel` is</span>
-<span class="sd">                                 called (e.g. with </span>
-<span class="sd">                                 :meth:`ost.mol.alg.AssignSecStruct`).</span>
-<span class="sd">    :type use_scoring_extender:  :class:`bool`</span>
-
-<span class="sd">    :param use_full_extender: True = use :class:`FullGapExtender` instead of</span>
-<span class="sd">                              of :class:`GapExtender`. Also works in combination</span>
-<span class="sd">                              with `use_scoring_extender`. This allows the gap</span>
-<span class="sd">                              extender to skip neighboring gaps and to correctly</span>
-<span class="sd">                              handle gaps close to termini.</span>
-<span class="sd">    :type use_full_extender:  :class:`bool`</span>
-
-<span class="sd">    :param chain_idx: If not None, only gaps from chain with given index get</span>
-<span class="sd">                      processed</span>
-<span class="sd">    :type chain_idx:  :class:`int`</span>
-
-<span class="sd">    :param resnum_range: If not None, only gaps within this resnum range get</span>
-<span class="sd">                         processed.</span>
-<span class="sd">    :type resnum_range: :class:`tuple` containing two :class:`int`</span>
-
-<span class="sd">    :param ff_lookup: Forcefield to parametrize </span>
-<span class="sd">                      :class:`promod3.loop.BackboneList` in </span>
-<span class="sd">                      :class:`promod3.modelling.BackboneRelaxer`.</span>
-<span class="sd">                      If set to None, the one returned by</span>
-<span class="sd">                      :func:`promod3.loop.ForcefieldLookup.GetDefault` </span>
-<span class="sd">                      gets used.</span>
-<span class="sd">    :type ff_lookup:  :class:`promod3.loop.ForcefieldLookup`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;closegaps::CloseSmallDeletions&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-
-    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Trying to close small deletions (no. of gap(s): </span><span class="si">%d</span><span class="s2">).&quot;</span> \
-                    <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">))</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="k">return</span>
-
-    <span class="c1"># check/setup scoring</span>
-    <span class="k">if</span> <span class="ow">not</span> <span class="n">IsBackboneScoringSetUp</span><span class="p">(</span><span class="n">mhandle</span><span class="p">):</span>
-        <span class="n">SetupDefaultBackboneScoring</span><span class="p">(</span><span class="n">mhandle</span><span class="p">)</span>
-
-    <span class="c1"># we&#39;re only calculating clash scores here, so we copy the default</span>
-    <span class="c1"># env and only attach a clash scorer. </span>
-    <span class="n">clash_scorer_env</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">backbone_scorer_env</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-    <span class="n">clash_scorer</span> <span class="o">=</span> <span class="n">scoring</span><span class="o">.</span><span class="n">ClashScorer</span><span class="p">()</span>
-    <span class="n">clash_scorer</span><span class="o">.</span><span class="n">AttachEnvironment</span><span class="p">(</span><span class="n">clash_scorer_env</span><span class="p">)</span>
-
-    <span class="k">if</span> <span class="n">ff_lookup</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
-        <span class="n">ff_lookup</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">ForcefieldLookup</span><span class="o">.</span><span class="n">GetDefault</span><span class="p">()</span>
-
-    <span class="c1"># iterating mhandle.gaps. The number of gaps may change during the process,</span>
-    <span class="c1"># hence we run by &#39;while&#39;, comparing to the updated list of gaps. If a gap</span>
-    <span class="c1"># gets closed, it is deleted from mhandle.gaps, otherwise, current_gap_index</span>
-    <span class="c1"># as a counter is increased.</span>
-    <span class="n">current_gap_index</span> <span class="o">=</span> <span class="mi">0</span>
-    <span class="k">while</span> <span class="n">current_gap_index</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">):</span>
-        <span class="c1"># in the end this determines if a gap was closed or not</span>
-        <span class="n">success</span> <span class="o">=</span> <span class="bp">False</span>
-        <span class="c1"># work on a copy of the gap, if not closed in the end, no harm done</span>
-        <span class="n">current_gap</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">[</span><span class="n">current_gap_index</span><span class="p">]</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-
-        <span class="c1"># A deletion is a gap of size 0 in the template, this means that to</span>
-        <span class="c1"># transform the template sequence into the target sequence, aa&#39;s vanish,</span>
-        <span class="c1"># so the target sequence has gap characters, the template not.</span>
-        <span class="c1"># If we are not looking at a deletion, do nothing.</span>
-        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">current_gap</span><span class="o">.</span><span class="n">seq</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">current_gap</span><span class="o">.</span><span class="n">IsTerminal</span><span class="p">()</span>\
-           <span class="ow">and</span> <span class="n">_InRange</span><span class="p">(</span><span class="n">current_gap</span><span class="p">,</span> <span class="n">chain_idx</span><span class="p">,</span> <span class="n">resnum_range</span><span class="p">):</span>
-            
-            <span class="n">current_chain</span> <span class="o">=</span> <span class="n">current_gap</span><span class="o">.</span><span class="n">GetChain</span><span class="p">()</span>
-            <span class="n">current_chain_index</span> <span class="o">=</span> <span class="n">current_gap</span><span class="o">.</span><span class="n">GetChainIndex</span><span class="p">()</span>
-
-            <span class="c1"># Try to close gap by relaxation: by checking how far we may extend</span>
-            <span class="c1"># the gap, we get the backbone to be stretched. If no more extension</span>
-            <span class="c1"># is possible, break out. On first successful relaxation for an</span>
-            <span class="c1"># extension, we successfully stop.</span>
-            <span class="n">extender</span> <span class="o">=</span> <span class="n">_GetGapExtender</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">current_gap</span><span class="p">,</span>
-                                       <span class="n">use_scoring_extender</span><span class="p">,</span>
-                                       <span class="n">use_full_extender</span><span class="p">,</span>
-                                       <span class="n">max_extension</span><span class="p">)</span>
-            <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">max_extension</span><span class="p">):</span>
-                <span class="k">if</span> <span class="ow">not</span> <span class="n">extender</span><span class="o">.</span><span class="n">Extend</span><span class="p">():</span>
-                    <span class="k">break</span>
-                <span class="c1"># gather residues for backbone relaxation, check that we get a</span>
-                <span class="c1"># bunch of actual residues, otherwise jump to next extension</span>
-                <span class="n">res_list</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-                <span class="n">n_stem_resnum</span> <span class="o">=</span> <span class="n">current_gap</span><span class="o">.</span><span class="n">before</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span>
-                <span class="n">c_stem_resnum</span> <span class="o">=</span> <span class="n">current_gap</span><span class="o">.</span><span class="n">after</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span>
-                <span class="n">idx</span> <span class="o">=</span> <span class="mi">0</span>
-                <span class="n">found_residues</span> <span class="o">=</span> <span class="bp">True</span>
-                <span class="k">while</span> <span class="n">n_stem_resnum</span> <span class="o">+</span> <span class="n">idx</span> <span class="o">&lt;=</span> <span class="n">c_stem_resnum</span><span class="p">:</span>
-                    <span class="n">res</span> <span class="o">=</span> <span class="n">current_chain</span><span class="o">.</span><span class="n">FindResidue</span><span class="p">(</span><span class="n">n_stem_resnum</span><span class="o">+</span><span class="n">idx</span><span class="p">)</span>
-                    <span class="k">if</span> <span class="ow">not</span> <span class="n">res</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
-                        <span class="n">found_residues</span> <span class="o">=</span> <span class="bp">False</span>
-                        <span class="k">break</span>
-                    <span class="n">res_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
-                    <span class="n">idx</span> <span class="o">+=</span> <span class="mi">1</span>
-                <span class="k">if</span> <span class="ow">not</span> <span class="n">found_residues</span><span class="p">:</span>
-                    <span class="k">continue</span>
-                <span class="c1"># backbone relaxation, for now we allow 300 steps or stop at</span>
-                <span class="c1"># max. force of 0.1</span>
-                <span class="n">bb_list</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">BackboneList</span><span class="p">(</span><span class="n">current_gap</span><span class="o">.</span><span class="n">full_seq</span><span class="p">,</span> <span class="n">res_list</span><span class="p">)</span>
-                <span class="n">bb_relaxer</span> <span class="o">=</span> <span class="n">BackboneRelaxer</span><span class="p">(</span><span class="n">bb_list</span><span class="p">,</span> <span class="n">ff_lookup</span><span class="p">)</span>
-                <span class="n">potential_e</span> <span class="o">=</span> <span class="n">bb_relaxer</span><span class="o">.</span><span class="n">Run</span><span class="p">(</span><span class="n">bb_list</span><span class="p">,</span> <span class="mi">300</span><span class="p">,</span> <span class="mf">0.1</span><span class="p">)</span>
-                <span class="c1"># check for clashes</span>
-
-                <span class="c1"># its a bit problematic since we score loops that are shifting </span>
-                <span class="c1"># around... so we perform a stash operation for each scoring step</span>
-
-                <span class="n">clash_scorer_env</span><span class="o">.</span><span class="n">Stash</span><span class="p">(</span><span class="n">n_stem_resnum</span><span class="o">.</span><span class="n">GetNum</span><span class="p">(),</span>
-                                       <span class="nb">len</span><span class="p">(</span><span class="n">bb_list</span><span class="p">),</span> <span class="n">current_chain_index</span><span class="p">)</span>
-                <span class="n">clash_scorer_env</span><span class="o">.</span><span class="n">SetEnvironment</span><span class="p">(</span><span class="n">bb_list</span><span class="p">,</span> <span class="n">n_stem_resnum</span><span class="o">.</span><span class="n">GetNum</span><span class="p">(),</span> 
-                                                <span class="n">current_chain_index</span><span class="p">)</span>
-                <span class="n">score</span> <span class="o">=</span> <span class="n">clash_scorer</span><span class="o">.</span><span class="n">CalculateScore</span><span class="p">(</span><span class="n">n_stem_resnum</span><span class="o">.</span><span class="n">GetNum</span><span class="p">(),</span>
-                                                    <span class="nb">len</span><span class="p">(</span><span class="n">bb_list</span><span class="p">),</span>
-                                                    <span class="n">current_chain_index</span><span class="p">)</span>
-                <span class="n">clash_scorer_env</span><span class="o">.</span><span class="n">Pop</span><span class="p">()</span>
-
-                <span class="c1"># if there is no clash and potential energy is low enough we</span>
-                <span class="c1"># just solved a gap, delete it and update the scorer for the</span>
-                <span class="c1"># changed model</span>
-                <span class="k">if</span> <span class="n">score</span> <span class="o">&lt;</span> <span class="n">clash_thresh</span> <span class="ow">and</span> \
-                   <span class="n">potential_e</span> <span class="o">&lt;</span> <span class="n">e_thresh</span> <span class="ow">and</span> \
-                   <span class="n">bb_list</span><span class="o">.</span><span class="n">TransOmegaTorsions</span><span class="p">():</span>
-                    <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Closed: </span><span class="si">%s</span><span class="s2"> by relaxing </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> \
-                                <span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">[</span><span class="n">current_gap_index</span><span class="p">],</span> <span class="n">current_gap</span><span class="p">))</span>
-                    <span class="n">InsertLoopClearGaps</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">bb_list</span><span class="p">,</span> <span class="n">current_gap</span><span class="p">)</span>
-                    <span class="n">clash_scorer_env</span><span class="o">.</span><span class="n">SetEnvironment</span><span class="p">(</span><span class="n">bb_list</span><span class="p">,</span> 
-                                                    <span class="n">n_stem_resnum</span><span class="o">.</span><span class="n">GetNum</span><span class="p">(),</span> 
-                                                    <span class="n">current_chain_index</span><span class="p">)</span>
-                    <span class="n">success</span> <span class="o">=</span> <span class="bp">True</span>
-                    <span class="k">break</span>
-
-
-        <span class="c1"># On closed gap, it is removed so the no. of gaps goes down by itself.</span>
-        <span class="c1"># In case of no success, counter needs to be increased to jump to the</span>
-        <span class="c1"># next gap.</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="n">success</span><span class="p">:</span>
-            <span class="n">current_gap_index</span> <span class="o">+=</span> <span class="mi">1</span></div>
-
-<div class="viewcode-block" id="MergeGapsByDistance"><a class="viewcode-back" href="../../../modelling/pipeline.html#promod3.modelling.MergeGapsByDistance">[docs]</a><span class="k">def</span> <span class="nf">MergeGapsByDistance</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">distance</span><span class="p">,</span> <span class="n">chain_idx</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span> 
-                        <span class="n">resnum_range</span> <span class="o">=</span> <span class="bp">None</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Merge 2 neighbouring gaps by deleting residues in-between.</span>
-
-<span class="sd">    Check if two neighbouring gaps are at max. *distance* residues apart from</span>
-<span class="sd">    each other. Then delete the residues and store a new gap spanning the whole</span>
-<span class="sd">    stretch of original gaps and the deleted region. Original gaps will be</span>
-<span class="sd">    removed. Stem residues count to the gap, so **A-A-A** has a distance of 0.</span>
-
-<span class="sd">    IMPORTANT: we assume here that *mhandle* stores gaps sequentially.</span>
-<span class="sd">    Non-sequential gaps are ignored!</span>
-
-<span class="sd">    .. literalinclude:: ../../../tests/doc/scripts/modelling_merge_gaps_by_distance.py</span>
-
-<span class="sd">    :param mhandle: Modelling handle on which to apply change.</span>
-<span class="sd">    :type mhandle:  :class:`ModellingHandle`</span>
-<span class="sd">    :param distance: The max. no. of residues between two gaps up to which</span>
-<span class="sd">                     merge happens.</span>
-<span class="sd">    :type distance: :class:`int`</span>
-
-<span class="sd">    :param chain_idx: If not None, only gaps from chain with given index get</span>
-<span class="sd">                      processed</span>
-<span class="sd">    :type chain_idx:  :class:`int`</span>
-
-<span class="sd">    :param resnum_range: If not None, two gaps only get merged if they&#39;re</span>
-<span class="sd">                         both in this resnum range.</span>
-<span class="sd">    :type resnum_range: :class:`tuple` containing two :class:`int`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;closegaps::MergeGapsByDistance&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-
-    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Trying to merge </span><span class="si">%d</span><span class="s2"> gap(s) with distance </span><span class="si">%d</span><span class="s2">.&quot;</span> <span class="o">%</span> \
-                       <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">),</span> <span class="n">distance</span><span class="p">))</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="k">return</span>
-
-    <span class="c1"># indicate if we merged gaps and should check for more</span>
-    <span class="n">try_again</span> <span class="o">=</span> <span class="bp">True</span>
-
-    <span class="c1"># The number of gaps changes on merge, so we cannot just iterate them.</span>
-    <span class="c1"># If we merged gaps, we do not know if this was the last one so try_again</span>
-    <span class="c1"># is set to True. If no more gaps were merged, we stop by leaving try_again</span>
-    <span class="c1"># as False.</span>
-    <span class="k">while</span> <span class="n">try_again</span><span class="p">:</span>
-        <span class="n">try_again</span> <span class="o">=</span> <span class="bp">False</span>
-        <span class="c1"># iterate all but the last gap, since we are always looking ahead</span>
-        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
-            <span class="n">current_gap</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-            <span class="n">next_gap</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-            <span class="c1"># check that we are on the same chain</span>
-            <span class="k">if</span> <span class="n">current_gap</span><span class="o">.</span><span class="n">GetChain</span><span class="p">()</span> <span class="o">!=</span> <span class="n">next_gap</span><span class="o">.</span><span class="n">GetChain</span><span class="p">():</span>
-                <span class="k">continue</span>
-            <span class="c1"># check for range (if given)</span>
-            <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">_InRange</span><span class="p">(</span><span class="n">current_gap</span><span class="p">,</span> <span class="n">chain_idx</span><span class="p">,</span> <span class="n">resnum_range</span><span class="p">)</span> <span class="ow">and</span>\
-                    <span class="n">_InRange</span><span class="p">(</span><span class="n">next_gap</span><span class="p">,</span> <span class="n">chain_idx</span><span class="p">,</span> <span class="n">resnum_range</span><span class="p">)):</span>
-                <span class="k">continue</span>
-            <span class="c1"># no merging of gaps at the end AND the start :)</span>
-            <span class="k">if</span> <span class="n">current_gap</span><span class="o">.</span><span class="n">IsNTerminal</span><span class="p">()</span> <span class="ow">and</span> <span class="n">next_gap</span><span class="o">.</span><span class="n">IsCTerminal</span><span class="p">():</span>
-                <span class="k">continue</span>
-            <span class="c1"># get the distance between the gaps</span>
-            <span class="n">dist</span> <span class="o">=</span> <span class="n">next_gap</span><span class="o">.</span><span class="n">before</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span> \
-                   <span class="o">-</span> <span class="n">current_gap</span><span class="o">.</span><span class="n">after</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span>
-            <span class="c1"># NOTE: -1 can currently only happen when fixing ring punches</span>
-            <span class="c1">#       in _pipeline.BuildSidechains</span>
-            <span class="k">if</span> <span class="n">dist</span> <span class="o">&lt;</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
-                <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Non-sequential gaps found. Ignoring.&quot;</span><span class="p">)</span>
-                <span class="k">continue</span>
-            <span class="k">if</span> <span class="n">dist</span> <span class="o">&lt;=</span> <span class="n">distance</span><span class="p">:</span>
-                <span class="c1"># gaps are close enough, combine! combine!</span>
-                <span class="n">MergeGaps</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
-                <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Merged gap </span><span class="si">%s</span><span class="s2"> and </span><span class="si">%s</span><span class="s2"> into </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> \
-                               <span class="p">(</span><span class="n">current_gap</span><span class="p">,</span> <span class="n">next_gap</span><span class="p">,</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
-                <span class="n">try_again</span> <span class="o">=</span> <span class="bp">True</span>
-                <span class="k">break</span></div>
-
-<div class="viewcode-block" id="FillLoopsByDatabase"><a class="viewcode-back" href="../../../modelling/pipeline.html#promod3.modelling.FillLoopsByDatabase">[docs]</a><span class="k">def</span> <span class="nf">FillLoopsByDatabase</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">fragment_db</span><span class="p">,</span> <span class="n">structure_db</span><span class="p">,</span>
-                        <span class="n">torsion_sampler</span><span class="p">,</span> <span class="n">max_loops_to_search</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span>
-                        <span class="n">min_loops_required</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">max_res_extension</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span>
-                        <span class="n">extended_search</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">use_scoring_extender</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
-                        <span class="n">use_full_extender</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">score_variant</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
-                        <span class="n">ring_punch_detection</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">chain_idx</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
-                        <span class="n">resnum_range</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">max_num_all_atom</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
-                        <span class="n">clash_thresh</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">length_dep_weights</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Try to fill up loops from a structural database.</span>
-
-<span class="sd">    Usually this will extend the gaps a bit to match candidates from the</span>
-<span class="sd">    database. Do not expect a gap being filled in between its actual stem</span>
-<span class="sd">    residues.</span>
-<span class="sd">    This function cannot fill gaps at C- or N-terminal.</span>
-
-<span class="sd">    .. literalinclude:: ../../../tests/doc/scripts/modelling_fill_loops_by_database.py</span>
-
-<span class="sd">    :param mhandle: Modelling handle on which to apply change.</span>
-<span class="sd">    :type mhandle:  :class:`ModellingHandle`</span>
-
-<span class="sd">    :param fragment_db: A fragment database coupled to the *structure_db*.</span>
-<span class="sd">    :type fragment_db: :class:`~promod3.loop.FragDB`</span>
-
-<span class="sd">    :param structure_db: Backbone/profile data.</span>
-<span class="sd">    :type structure_db: :class:`~promod3.loop.StructureDB`</span>
-
-<span class="sd">    :param torsion_sampler: A sampler for torsion angles.</span>
-<span class="sd">    :type torsion_sampler: :class:`~promod3.loop.TorsionSampler`</span>
-
-<span class="sd">    :param max_loops_to_search: Define how many candidates are &#39;enough&#39; to be</span>
-<span class="sd">                                evaluated per loop. The actual found candidates</span>
-<span class="sd">                                may be more (if we found &#39;enough&#39;) or less (if</span>
-<span class="sd">                                not enough candidates exist) of this number.</span>
-<span class="sd">    :type max_loops_to_search: :class:`int`</span>
-
-<span class="sd">    :param min_loops_required: Define how many candidates we require to close</span>
-<span class="sd">                               the loop. If we did not find at least this number</span>
-<span class="sd">                               of candidates for a gap, we skip it without</span>
-<span class="sd">                               closing. Can be set to ``max_loops_to_search``</span>
-<span class="sd">                               (or equivalently to -1) to enforce that we only</span>
-<span class="sd">                               close gaps for which we found enough candidates.</span>
-<span class="sd">    :type min_loops_required: :class:`int`</span>
-
-<span class="sd">    :param max_res_extension: Only allow this number of residues to be added to</span>
-<span class="sd">                              the gaps when extending. If set to **-1**, any</span>
-<span class="sd">                              number of residues can be added (as long as the</span>
-<span class="sd">                              `fragment_db` allows it).</span>
-<span class="sd">    :type max_res_extension: :class:`int`</span>
-
-<span class="sd">    :param extended_search: True = more loop candidates are considered.</span>
-<span class="sd">                            The candidate search is done less precisely (see</span>
-<span class="sd">                            :meth:`~LoopCandidates.FillFromDatabase`).</span>
-<span class="sd">                            The candidates are still scored and evaluated the</span>
-<span class="sd">                            same though (only more of them considered).</span>
-<span class="sd">    :type extended_search:  :class:`bool`</span>
-
-<span class="sd">    :param use_scoring_extender: True = use :class:`ScoringGapExtender` instead</span>
-<span class="sd">                                 of :class:`GapExtender`.</span>
-<span class="sd">                                 See :func:`CloseSmallDeletions`.</span>
-<span class="sd">    :type use_scoring_extender:  :class:`bool`</span>
-
-<span class="sd">    :param use_full_extender: True = use :class:`FullGapExtender` instead of</span>
-<span class="sd">                              :class:`GapExtender`.</span>
-<span class="sd">                              See :func:`CloseSmallDeletions`.</span>
-<span class="sd">    :type use_full_extender:  :class:`bool`</span>
-
-
-<span class="sd">    :param score_variant: How to score loop candidates. Options:</span>
-
-<span class="sd">                          - **0**: put frame of backbone residues enclosing all</span>
-<span class="sd">                            candidates and score frame. This will also &quot;score&quot;</span>
-<span class="sd">                            non-modelled residues!</span>
-<span class="sd">                          - **1**: score candidates directly</span>
-<span class="sd">                          - **2**: like **1** but penalize length of candidate</span>
-<span class="sd">                          </span>
-<span class="sd">    :type score_variant:  :class:`int`</span>
-
-<span class="sd">    :param ring_punch_detection: How to deal with ring punchings. Options:</span>
-
-<span class="sd">                                 - **0**: not at all (fastest)</span>
-<span class="sd">                                 - **1**: check for punchings with existing rings</span>
-<span class="sd">                                 - **2**: check incl. sidechain for loop cand.</span>
-
-<span class="sd">    :type ring_punch_detection:  :class:`int`</span>
-
-<span class="sd">    :param chain_idx: If not None, only gaps from chain with given index get</span>
-<span class="sd">                      processed</span>
-<span class="sd">    :type chain_idx:  :class:`int`</span>
-
-<span class="sd">    :param resnum_range: If not None, only gaps within this resnum range get</span>
-<span class="sd">                         processed</span>
-<span class="sd">    :type resnum_range: :class:`tuple` containing two :class:`int`</span>
-
-<span class="sd">    :param max_num_all_atom: If &gt; 0, we prefilter loop candidates based on</span>
-<span class="sd">                             non-all-atom-scores and apply all atom scoring to</span>
-<span class="sd">                             the best *max_num_all_atom* candidates. If desired,</span>
-<span class="sd">                             *5* is a good value here (larger values give only</span>
-<span class="sd">                             numerical improvement). With *5*, this will be</span>
-<span class="sd">                             approx. 2x slower than without and will give a</span>
-<span class="sd">                             slight improvement in loop selection.</span>
-<span class="sd">    :type max_num_all_atom:  :class:`int`</span>
-
-<span class="sd">    :param clash_thresh: If &gt; 0, we only keep loop candidates which have a</span>
-<span class="sd">                         backbone clash score lower than this.</span>
-<span class="sd">    :type clash_thresh:  :class:`float`</span>
-
-<span class="sd">    :param length_dep_weights: :class:`ScoringWeights` provides different sets</span>
-<span class="sd">                               of weights that have been trained on different</span>
-<span class="sd">                               loop subsets. If this flag is true, the length</span>
-<span class="sd">                               dependent weights are used to select the final </span>
-<span class="sd">                               loops.</span>
-<span class="sd">    :type length_dep_weights: :class:`bool`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;closegaps::FillLoopsByDatabase&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-
-    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Trying to fill </span><span class="si">%d</span><span class="s2"> gap(s) by database.&quot;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">))</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="k">return</span>
-
-    <span class="c1"># check/setup scoring</span>
-    <span class="k">if</span> <span class="ow">not</span> <span class="n">IsBackboneScoringSetUp</span><span class="p">(</span><span class="n">mhandle</span><span class="p">):</span>
-        <span class="n">SetupDefaultBackboneScoring</span><span class="p">(</span><span class="n">mhandle</span><span class="p">)</span>
-    <span class="k">if</span> <span class="n">max_num_all_atom</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">IsAllAtomScoringSetUp</span><span class="p">(</span><span class="n">mhandle</span><span class="p">):</span>
-        <span class="n">SetupDefaultAllAtomScoring</span><span class="p">(</span><span class="n">mhandle</span><span class="p">)</span>
-
-    <span class="c1"># some score variants cannot deal with multiple insertions in one &quot;gap&quot;</span>
-    <span class="n">disallow_ins_merge</span> <span class="o">=</span> <span class="p">(</span><span class="n">score_variant</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
-    <span class="c1"># do we want DB features?</span>
-    <span class="n">add_db_features</span> <span class="o">=</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">profiles</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
-
-    <span class="c1"># check min_loops_required</span>
-    <span class="k">if</span> <span class="n">min_loops_required</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="n">min_loops_required</span> <span class="o">=</span> <span class="n">max_loops_to_search</span>
-    <span class="c1"># get biggest loop (w/o stems) stored in db</span>
-    <span class="n">max_db_loop_len</span> <span class="o">=</span> <span class="n">fragment_db</span><span class="o">.</span><span class="n">MaxFragLength</span><span class="p">()</span> <span class="o">-</span> <span class="mi">2</span>
-
-    <span class="c1"># point to the current gap</span>
-    <span class="n">gap_idx</span> <span class="o">=</span> <span class="mi">0</span>
-
-    <span class="c1"># Iterate all gaps. Since the number of gaps may change, always compare to</span>
-    <span class="c1"># an updated list. gap_idx is only increased when necessary, e.g. current</span>
-    <span class="c1"># gap could not be removed.</span>
-    <span class="k">while</span> <span class="n">gap_idx</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">)</span> <span class="ow">and</span> <span class="n">gap_idx</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span>
-
-        <span class="c1"># keep copy of original gap</span>
-        <span class="n">gap_orig</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">[</span><span class="n">gap_idx</span><span class="p">]</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-        <span class="k">if</span> <span class="n">disallow_ins_merge</span><span class="p">:</span>
-            <span class="n">gap_ins</span> <span class="o">=</span> <span class="n">CountEnclosedInsertions</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">gap_orig</span><span class="p">)</span>
-
-        <span class="c1"># ignore terminal gaps and out-of-range (if range given)</span>
-        <span class="k">if</span> <span class="n">gap_orig</span><span class="o">.</span><span class="n">IsTerminal</span><span class="p">()</span> \
-           <span class="ow">or</span> <span class="ow">not</span> <span class="n">_InRange</span><span class="p">(</span><span class="n">gap_orig</span><span class="p">,</span> <span class="n">chain_idx</span><span class="p">,</span> <span class="n">resnum_range</span><span class="p">):</span>
-            <span class="n">gap_idx</span> <span class="o">+=</span> <span class="mi">1</span>
-            <span class="k">continue</span>
-
-        <span class="c1">##################################</span>
-        <span class="c1"># find loop candidates</span>
-        <span class="c1">##################################</span>
-        <span class="c1"># list of LoopCandidates to fill gap</span>
-        <span class="n">actual_candidates</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-        <span class="c1"># list of StructuralGap corresponding to actual_candidates</span>
-        <span class="n">actual_extended_gaps</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-        <span class="c1"># list of dicts with DB specific scores</span>
-        <span class="c1"># -&gt; empty if not add_db_features</span>
-        <span class="n">actual_db_scores</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-        <span class="c1"># number of loops found (stop if &gt;= max_loops_to_search)</span>
-        <span class="n">found_loops</span> <span class="o">=</span> <span class="mi">0</span>
-        <span class="c1"># maximal length for this gap</span>
-        <span class="k">if</span> <span class="n">max_res_extension</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span>
-            <span class="n">max_gap_length</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">gap_orig</span><span class="o">.</span><span class="n">length</span> <span class="o">+</span> <span class="n">max_res_extension</span><span class="p">,</span>
-                                 <span class="n">max_db_loop_len</span><span class="p">)</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="n">max_gap_length</span> <span class="o">=</span> <span class="n">max_db_loop_len</span>
-        <span class="c1"># currently extended gap and gap-extender</span>
-        <span class="n">actual_gap</span> <span class="o">=</span> <span class="n">gap_orig</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-        <span class="n">actual_extender</span> <span class="o">=</span> <span class="n">_GetGapExtender</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">actual_gap</span><span class="p">,</span>
-                                          <span class="n">use_scoring_extender</span><span class="p">,</span>
-                                          <span class="n">use_full_extender</span><span class="p">,</span>
-                                          <span class="n">max_gap_length</span><span class="p">)</span>
-        <span class="c1"># iteratively extend actual_gap until we have enough loops</span>
-        <span class="n">first_iteration</span> <span class="o">=</span> <span class="bp">True</span>
-        <span class="k">while</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">length</span> <span class="o">&lt;=</span> <span class="n">max_gap_length</span><span class="p">:</span>
-            <span class="c1"># check if we have enough</span>
-            <span class="k">if</span> <span class="n">found_loops</span> <span class="o">&gt;=</span> <span class="n">max_loops_to_search</span><span class="p">:</span>
-                <span class="k">break</span>
-
-            <span class="c1"># extend the gap</span>
-            <span class="k">if</span> <span class="ow">not</span> <span class="n">first_iteration</span><span class="p">:</span>
-                <span class="k">if</span> <span class="ow">not</span> <span class="n">actual_extender</span><span class="o">.</span><span class="n">Extend</span><span class="p">():</span>
-                    <span class="k">break</span>
-            <span class="n">first_iteration</span> <span class="o">=</span> <span class="bp">False</span>
-
-            <span class="c1"># ensure both stems are valid</span>
-            <span class="n">n_stem</span> <span class="o">=</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">before</span>
-            <span class="n">c_stem</span> <span class="o">=</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">after</span>
-            <span class="k">if</span> <span class="ow">not</span> <span class="n">n_stem</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">c_stem</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
-                <span class="k">break</span>
-            <span class="c1"># skip if we try to merge insertions when disallowed</span>
-            <span class="k">if</span> <span class="n">disallow_ins_merge</span> <span class="ow">and</span> \
-               <span class="n">CountEnclosedInsertions</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">actual_gap</span><span class="p">)</span> <span class="o">!=</span> <span class="n">gap_ins</span><span class="p">:</span>
-                <span class="k">continue</span>
-
-            <span class="c1"># get candidates for the current loop</span>
-            <span class="n">candidates</span> <span class="o">=</span> <span class="n">LoopCandidates</span><span class="o">.</span><span class="n">FillFromDatabase</span><span class="p">(</span>
-                <span class="n">n_stem</span><span class="p">,</span> <span class="n">c_stem</span><span class="p">,</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">full_seq</span><span class="p">,</span>
-                <span class="n">fragment_db</span><span class="p">,</span> <span class="n">structure_db</span><span class="p">,</span> <span class="n">extended_search</span><span class="p">)</span>
-
-            <span class="c1"># skip gaps with no loop candidates</span>
-            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">candidates</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
-                <span class="k">continue</span>
-            <span class="c1"># check for stem rmsd before ApplyCCD</span>
-            <span class="k">if</span> <span class="n">add_db_features</span><span class="p">:</span>
-                <span class="n">db_scores</span> <span class="o">=</span> <span class="n">ScoreContainer</span><span class="p">()</span>
-                <span class="n">candidates</span><span class="o">.</span><span class="n">CalculateStemRMSDs</span><span class="p">(</span><span class="n">db_scores</span><span class="p">,</span> <span class="n">n_stem</span><span class="p">,</span> <span class="n">c_stem</span><span class="p">)</span>
-            <span class="c1"># try to close loops</span>
-            <span class="k">try</span><span class="p">:</span>
-                <span class="c1">#pylint: disable=broad-except</span>
-                <span class="n">orig_indices</span> <span class="o">=</span> <span class="n">candidates</span><span class="o">.</span><span class="n">ApplyCCD</span><span class="p">(</span><span class="n">n_stem</span><span class="p">,</span> <span class="n">c_stem</span><span class="p">,</span>
-                                                   <span class="n">torsion_sampler</span><span class="p">)</span>
-                
-            <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
-                <span class="c1"># CCD should work even if no residues exist before and/or after</span>
-                <span class="c1"># the stems. If this is not desired, you should skip those gaps.</span>
-                <span class="c1"># If anything else fails, the proposed gap is skipped.</span>
-                <span class="n">ost</span><span class="o">.</span><span class="n">LogWarning</span><span class="p">(</span><span class="s2">&quot;ApplyCCD failure for &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">actual_gap</span><span class="p">))</span>
-                <span class="k">continue</span>
-
-            <span class="c1"># remove clashing ones if desired</span>
-            <span class="k">if</span> <span class="n">clash_thresh</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-                <span class="n">clash_score_container</span> <span class="o">=</span> <span class="n">ScoreContainer</span><span class="p">()</span>
-                <span class="n">candidates</span><span class="o">.</span><span class="n">CalculateBackboneScores</span><span class="p">(</span><span class="n">clash_score_container</span><span class="p">,</span>
-                                                   <span class="n">mhandle</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;clash&quot;</span><span class="p">],</span>
-                                                   <span class="n">n_stem</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">(),</span>
-                                                   <span class="n">actual_gap</span><span class="o">.</span><span class="n">GetChainIndex</span><span class="p">())</span>
-                <span class="n">clash_scores</span> <span class="o">=</span> <span class="n">clash_score_container</span><span class="o">.</span><span class="n">Get</span><span class="p">(</span><span class="s2">&quot;clash&quot;</span><span class="p">)</span>
-                <span class="n">to_keep</span> <span class="o">=</span> <span class="p">[]</span>
-                <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">bb_list</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">candidates</span><span class="p">):</span>
-                    <span class="k">if</span> <span class="n">clash_scores</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">clash_thresh</span><span class="p">:</span>
-                        <span class="n">to_keep</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
-                <span class="n">candidates</span> <span class="o">=</span> <span class="n">candidates</span><span class="o">.</span><span class="n">Extract</span><span class="p">(</span><span class="n">to_keep</span><span class="p">)</span>
-                <span class="n">orig_indices</span> <span class="o">=</span> <span class="p">[</span><span class="n">orig_indices</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">to_keep</span><span class="p">]</span>
-                <span class="k">assert</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">orig_indices</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">candidates</span><span class="p">))</span>
-
-            <span class="c1"># check for ring punchings</span>
-            <span class="k">if</span> <span class="n">ring_punch_detection</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">candidates</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-                <span class="n">FilterCandidates</span><span class="p">(</span><span class="n">candidates</span><span class="p">,</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="p">,</span>
-                                 <span class="n">actual_gap</span><span class="p">,</span> <span class="n">orig_indices</span><span class="p">)</span>
-            <span class="k">elif</span> <span class="n">ring_punch_detection</span> <span class="o">==</span> <span class="mi">2</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">candidates</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-                <span class="n">FilterCandidatesWithSC</span><span class="p">(</span><span class="n">candidates</span><span class="p">,</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="p">,</span>
-                                       <span class="n">actual_gap</span><span class="p">,</span> <span class="n">orig_indices</span><span class="p">)</span>
-            
-            <span class="c1"># skip if no loop was successfully closed</span>
-            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">candidates</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
-                <span class="k">continue</span>
-
-            <span class="c1"># deal with DB features</span>
-            <span class="k">if</span> <span class="n">add_db_features</span><span class="p">:</span>
-                <span class="c1"># get subset of stem rmsd scores</span>
-                <span class="k">assert</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">orig_indices</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">candidates</span><span class="p">))</span>
-                <span class="n">db_scores</span> <span class="o">=</span> <span class="n">db_scores</span><span class="o">.</span><span class="n">Extract</span><span class="p">(</span><span class="n">orig_indices</span><span class="p">)</span>
-                <span class="c1"># add profile scores</span>
-                <span class="n">prof</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">profiles</span><span class="p">[</span><span class="n">actual_gap</span><span class="o">.</span><span class="n">GetChainIndex</span><span class="p">()]</span>
-                <span class="n">start_pos</span> <span class="o">=</span> <span class="n">n_stem</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span>
-                <span class="n">candidates</span><span class="o">.</span><span class="n">CalculateSequenceProfileScores</span><span class="p">(</span><span class="n">db_scores</span><span class="p">,</span>
-                                                          <span class="n">structure_db</span><span class="p">,</span>
-                                                          <span class="n">prof</span><span class="p">,</span> <span class="n">start_pos</span><span class="p">)</span>
-                <span class="n">candidates</span><span class="o">.</span><span class="n">CalculateStructureProfileScores</span><span class="p">(</span><span class="n">db_scores</span><span class="p">,</span>
-                                                           <span class="n">structure_db</span><span class="p">,</span>
-                                                           <span class="n">prof</span><span class="p">,</span> <span class="n">start_pos</span><span class="p">)</span>
-                <span class="c1"># update list</span>
-                <span class="n">actual_db_scores</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">db_scores</span><span class="p">)</span>
-
-            <span class="c1"># update candidate lists</span>
-            <span class="n">actual_candidates</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">candidates</span><span class="p">)</span>
-            <span class="n">actual_extended_gaps</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">actual_gap</span><span class="o">.</span><span class="n">Copy</span><span class="p">())</span>
-            <span class="n">found_loops</span> <span class="o">+=</span> <span class="nb">len</span><span class="p">(</span><span class="n">candidates</span><span class="p">)</span>
-
-        <span class="c1"># skip if we didn&#39;t find enough</span>
-        <span class="k">if</span> <span class="n">found_loops</span> <span class="o">&lt;</span> <span class="n">min_loops_required</span><span class="p">:</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Failed at loop insertion (</span><span class="si">%s</span><span class="s2">), only </span><span class="si">%d</span><span class="s2"> candidates&quot;</span> <span class="o">%</span> \
-                        <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">gap_orig</span><span class="p">),</span> <span class="n">found_loops</span><span class="p">))</span>
-            <span class="n">gap_idx</span> <span class="o">+=</span> <span class="mi">1</span>
-            <span class="k">continue</span>
-
-        <span class="c1">##################################</span>
-        <span class="c1"># close loop</span>
-        <span class="c1">##################################</span>
-        <span class="n">new_idx</span> <span class="o">=</span> <span class="n">_CloseLoop</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">gap_orig</span><span class="p">,</span> <span class="n">actual_candidates</span><span class="p">,</span>
-                             <span class="n">actual_extended_gaps</span><span class="p">,</span> <span class="n">score_variant</span><span class="p">,</span>
-                             <span class="n">actual_db_scores</span><span class="p">,</span> <span class="n">max_num_all_atom</span><span class="p">,</span>
-                             <span class="n">length_dep_weights</span><span class="p">)</span>
-        <span class="k">if</span> <span class="n">new_idx</span> <span class="o">==</span> <span class="o">-</span><span class="mi">2</span><span class="p">:</span>
-            <span class="c1"># try next one if we failed</span>
-            <span class="n">gap_idx</span> <span class="o">+=</span> <span class="mi">1</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="c1"># all good: fix sidechains if we&#39;re in ring-punch-mode and continue</span>
-            <span class="k">if</span> <span class="n">ring_punch_detection</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
-                <span class="n">ReconstructSidechains</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">keep_sidechains</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
-            <span class="n">gap_idx</span> <span class="o">=</span> <span class="n">new_idx</span></div>
-
-
-<div class="viewcode-block" id="FillLoopsByMonteCarlo"><a class="viewcode-back" href="../../../modelling/pipeline.html#promod3.modelling.FillLoopsByMonteCarlo">[docs]</a><span class="k">def</span> <span class="nf">FillLoopsByMonteCarlo</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">torsion_sampler</span><span class="p">,</span> <span class="n">max_loops_to_search</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span>
-                          <span class="n">max_extension</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">mc_num_loops</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">mc_steps</span><span class="o">=</span><span class="mi">5000</span><span class="p">,</span>
-                          <span class="n">use_scoring_extender</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">use_full_extender</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
-                          <span class="n">score_variant</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">ring_punch_detection</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
-                          <span class="n">fragger_handles</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">chain_idx</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
-                          <span class="n">resnum_range</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">length_dep_weights</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Try to fill up loops with Monte Carlo sampling.</span>
-
-<span class="sd">    This is meant as a &quot;last-resort&quot; approach when it is not possible to fill</span>
-<span class="sd">    the loops from the database with :func:`FillLoopsByDatabase`.</span>
-<span class="sd">    This will extend the gaps (up to *max_extension* times) a bit to allow for </span>
-<span class="sd">    more loop candidates to be found.</span>
-<span class="sd">    </span>
-<span class="sd">    The loops are modelled by either sampling the dihedral angles or (if</span>
-<span class="sd">    *fragger_handles* is given) :class:`~promod3.loop.Fragger` lists. The latter</span>
-<span class="sd">    is only used if the gap length is &gt;= the length of fragments stored.</span>
-
-<span class="sd">    This function cannot fill gaps at C- or N-terminal.</span>
-
-<span class="sd">    .. literalinclude:: ../../../tests/doc/scripts/modelling_fill_loops_by_monte_carlo.py</span>
-<span class="sd">    </span>
-<span class="sd">    :param mhandle: Modelling handle on which to apply change.</span>
-<span class="sd">    :type mhandle:  :class:`ModellingHandle`</span>
-
-<span class="sd">    :param torsion_sampler: A sampler for torsion angles.</span>
-<span class="sd">    :type torsion_sampler: :class:`~promod3.loop.TorsionSampler`</span>
-
-<span class="sd">    :param max_loops_to_search: Define how many candidates are &#39;enough&#39; to be</span>
-<span class="sd">                                evaluated per loop.</span>
-<span class="sd">    :type max_loops_to_search:  :class:`int`</span>
-
-<span class="sd">    :param max_extension: Maximal number of gap extension steps to perform</span>
-<span class="sd">                          (see :class:`GapExtender`)</span>
-<span class="sd">    :type max_extension:  :class:`int`</span>
-
-<span class="sd">    :param mc_num_loops: Number of loop candidates to consider for each extended gap</span>
-<span class="sd">                         (see :meth:`~LoopCandidates.FillFromMonteCarloSampler`)</span>
-<span class="sd">    :type mc_num_loops:  :class:`int`</span>
-
-<span class="sd">    :param mc_steps: Number of MC steps to perform for each loop candidate</span>
-<span class="sd">                     (see :meth:`~LoopCandidates.FillFromMonteCarloSampler`)</span>
-<span class="sd">    :type mc_steps:  :class:`int`</span>
-
-<span class="sd">    :param use_scoring_extender: True = use :class:`ScoringGapExtender` instead</span>
-<span class="sd">                                 of :class:`GapExtender`.</span>
-<span class="sd">                                 See :func:`CloseSmallDeletions`.</span>
-<span class="sd">    :type use_scoring_extender:  :class:`bool`</span>
-
-<span class="sd">    :param use_full_extender: True = use :class:`FullGapExtender` instead of</span>
-<span class="sd">                              :class:`GapExtender`.</span>
-<span class="sd">                              See :func:`CloseSmallDeletions`.</span>
-<span class="sd">    :type use_full_extender:  :class:`bool`</span>
-
-<span class="sd">    :param score_variant: How to score loop candidates (AllAtom not supported).</span>
-<span class="sd">                          See :func:`FillLoopsByDatabase`.</span>
-<span class="sd">    :type score_variant:  :class:`int`</span>
-
-<span class="sd">    :param ring_punch_detection: How to deal with ring punchings.</span>
-<span class="sd">                                 See :func:`FillLoopsByDatabase`.</span>
-<span class="sd">    :type ring_punch_detection:  :class:`int`</span>
-
-<span class="sd">    :param fragger_handles: Either None (no fragger sampling used) or one</span>
-<span class="sd">                            fragger handle for each chain in *mhandle*.</span>
-<span class="sd">    :type fragger_handles:  :class:`list` of :class:`~promod3.modelling.FraggerHandle`</span>
-
-<span class="sd">    :param chain_idx: If not None, only gaps from chain with given index get</span>
-<span class="sd">                      processed</span>
-<span class="sd">    :type chain_idx:  :class:`int`</span>
-
-<span class="sd">    :param resnum_range: If not None, only gaps within this resnum range get</span>
-<span class="sd">                         processed</span>
-<span class="sd">    :type resnum_range: :class:`tuple` containing two :class:`int`</span>
-
-<span class="sd">    :param length_dep_weights: :class:`ScoringWeights` provides different sets</span>
-<span class="sd">                               of weights that have been trained on different</span>
-<span class="sd">                               loop subsets. If this flag is true, the length</span>
-<span class="sd">                               dependent weights are used to select the final </span>
-<span class="sd">                               loops.</span>
-<span class="sd">    :type length_dep_weights: :class:`bool`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;closegaps::FillLoopsByMonteCarlo&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-
-    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Trying to fill </span><span class="si">%d</span><span class="s2"> gap(s) by Monte Carlo.&quot;</span> \
-                    <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">))</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="k">return</span>
-
-    <span class="c1"># check/setup scoring</span>
-    <span class="k">if</span> <span class="ow">not</span> <span class="n">IsBackboneScoringSetUp</span><span class="p">(</span><span class="n">mhandle</span><span class="p">):</span>
-        <span class="n">SetupDefaultBackboneScoring</span><span class="p">(</span><span class="n">mhandle</span><span class="p">)</span>
-
-    <span class="c1"># point to the current gap</span>
-    <span class="n">gap_idx</span> <span class="o">=</span> <span class="mi">0</span>
-
-    <span class="c1"># Iterate all gaps. Since the number of gaps may change, always compare to</span>
-    <span class="c1"># an updated list. gap_idx is only increased when necessary, e.g. current</span>
-    <span class="c1"># gap could not be removed.</span>
-    <span class="k">while</span> <span class="n">gap_idx</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">)</span> <span class="ow">and</span> <span class="n">gap_idx</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span>
-
-        <span class="c1"># keep copy of original gap</span>
-        <span class="n">gap_orig</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">[</span><span class="n">gap_idx</span><span class="p">]</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-        <span class="k">if</span> <span class="n">score_variant</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
-            <span class="n">gap_ins</span> <span class="o">=</span> <span class="n">CountEnclosedInsertions</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">gap_orig</span><span class="p">)</span>
-
-        <span class="c1"># ignore terminal gaps and out-of-range (if range given)</span>
-        <span class="k">if</span> <span class="n">gap_orig</span><span class="o">.</span><span class="n">IsTerminal</span><span class="p">()</span> \
-           <span class="ow">or</span> <span class="ow">not</span> <span class="n">_InRange</span><span class="p">(</span><span class="n">gap_orig</span><span class="p">,</span> <span class="n">chain_idx</span><span class="p">,</span> <span class="n">resnum_range</span><span class="p">):</span>
-            <span class="n">gap_idx</span> <span class="o">+=</span> <span class="mi">1</span>
-            <span class="k">continue</span>
-
-        <span class="c1">##################################</span>
-        <span class="c1"># find loop candidates</span>
-        <span class="c1">##################################</span>
-        <span class="c1"># list of LoopCandidates to fill gap</span>
-        <span class="n">actual_candidates</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-        <span class="c1"># list of StructuralGap corresponding to actual_candidates</span>
-        <span class="n">actual_extended_gaps</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-        <span class="c1"># number of loops found (stop if &gt;= max_loops_to_search)</span>
-        <span class="n">found_loops</span> <span class="o">=</span> <span class="mi">0</span>
-        <span class="c1"># currently extended gap and gap-extender</span>
-        <span class="n">actual_gap</span> <span class="o">=</span> <span class="n">gap_orig</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-        <span class="c1"># each extension can make it at most 1 longer...</span>
-        <span class="n">max_loop_len</span> <span class="o">=</span> <span class="n">gap_orig</span><span class="o">.</span><span class="n">length</span> <span class="o">+</span> <span class="n">max_extension</span>
-        <span class="n">actual_extender</span> <span class="o">=</span> <span class="n">_GetGapExtender</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">actual_gap</span><span class="p">,</span>
-                                          <span class="n">use_scoring_extender</span><span class="p">,</span>
-                                          <span class="n">use_full_extender</span><span class="p">,</span>
-                                          <span class="n">max_loop_len</span><span class="p">)</span>
-        <span class="n">actual_chain_idx</span> <span class="o">=</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">GetChainIndex</span><span class="p">()</span>
-        <span class="c1"># iteratively extend actual_gap</span>
-        <span class="n">ext_step</span> <span class="o">=</span> <span class="mi">0</span>
-
-        <span class="n">first_iteration</span> <span class="o">=</span> <span class="bp">True</span>
-        <span class="k">while</span> <span class="n">found_loops</span> <span class="o">&lt;</span> <span class="n">max_loops_to_search</span> <span class="ow">and</span> <span class="n">ext_step</span> <span class="o">&lt;</span> <span class="n">max_extension</span><span class="p">:</span>
-
-            <span class="c1"># extend the gap</span>
-            <span class="k">if</span> <span class="ow">not</span> <span class="n">first_iteration</span><span class="p">:</span>
-                <span class="k">if</span> <span class="ow">not</span> <span class="n">actual_extender</span><span class="o">.</span><span class="n">Extend</span><span class="p">():</span>
-                    <span class="k">break</span>
-            <span class="n">first_iteration</span> <span class="o">=</span> <span class="bp">False</span>
-
-            <span class="c1"># make sure, that the loop seq has at least length 3</span>
-            <span class="k">if</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">actual_gap</span><span class="o">.</span><span class="n">full_seq</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">):</span>
-                <span class="k">continue</span>
-            <span class="n">ext_step</span> <span class="o">+=</span> <span class="mi">1</span>
-            
-            <span class="c1"># ensure both stems are valid</span>
-            <span class="k">if</span> <span class="ow">not</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">before</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">or</span> \
-               <span class="ow">not</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">after</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
-                <span class="k">break</span>
-            <span class="c1"># skip if we try to merge insertions with score_variant=0</span>
-            <span class="k">if</span> <span class="n">score_variant</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> \
-               <span class="n">CountEnclosedInsertions</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">actual_gap</span><span class="p">)</span> <span class="o">!=</span> <span class="n">gap_ins</span><span class="p">:</span>
-                <span class="k">continue</span>
-
-            <span class="c1"># setup sampler, closer, scorer and cooler for MC</span>
-            <span class="k">if</span> <span class="n">fragger_handles</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
-                <span class="n">fragger_handle</span> <span class="o">=</span> <span class="n">fragger_handles</span><span class="p">[</span><span class="n">actual_chain_idx</span><span class="p">]</span>
-            <span class="k">try</span><span class="p">:</span>
-                <span class="c1"># choose sampler</span>
-                <span class="k">if</span> <span class="n">fragger_handles</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> \
-                   <span class="n">actual_gap</span><span class="o">.</span><span class="n">length</span> <span class="o">&lt;</span> <span class="n">fragger_handle</span><span class="o">.</span><span class="n">fragment_length</span><span class="p">:</span>
-                    <span class="n">mc_sampler</span> <span class="o">=</span> <span class="n">PhiPsiSampler</span><span class="p">(</span><span class="n">actual_gap</span><span class="o">.</span><span class="n">full_seq</span><span class="p">,</span>
-                                               <span class="n">torsion_sampler</span><span class="p">)</span>
-                <span class="k">else</span><span class="p">:</span>
-                    <span class="n">start_pos</span> <span class="o">=</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">before</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span>
-                    <span class="n">end_pos</span> <span class="o">=</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">after</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span>
-                    <span class="n">fragger_list</span> <span class="o">=</span> <span class="n">fragger_handle</span><span class="o">.</span><span class="n">GetList</span><span class="p">(</span><span class="n">start_pos</span><span class="p">,</span> <span class="n">end_pos</span><span class="p">)</span>
-                    <span class="n">mc_sampler</span> <span class="o">=</span> <span class="n">FragmentSampler</span><span class="p">(</span><span class="n">actual_gap</span><span class="o">.</span><span class="n">full_seq</span><span class="p">,</span>
-                                                 <span class="n">fragger_list</span><span class="p">,</span>
-                                                 <span class="n">init_fragments</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
-
-                <span class="n">mc_closer</span> <span class="o">=</span> <span class="n">DirtyCCDCloser</span><span class="p">(</span><span class="n">actual_gap</span><span class="o">.</span><span class="n">before</span><span class="p">,</span>
-                                           <span class="n">actual_gap</span><span class="o">.</span><span class="n">after</span><span class="p">)</span>
-
-                <span class="n">weights</span> <span class="o">=</span> <span class="n">_GetMCWeights</span><span class="p">()</span>
-                
-                <span class="n">mc_scorer</span> <span class="o">=</span> <span class="n">LinearScorer</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">backbone_scorer</span><span class="p">,</span>
-                                         <span class="n">mhandle</span><span class="o">.</span><span class="n">backbone_scorer_env</span><span class="p">,</span>
-                                         <span class="n">actual_gap</span><span class="o">.</span><span class="n">before</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">(),</span>
-                                         <span class="nb">len</span><span class="p">(</span><span class="n">actual_gap</span><span class="o">.</span><span class="n">full_seq</span><span class="p">),</span>
-                                         <span class="n">actual_chain_idx</span><span class="p">,</span> <span class="n">weights</span><span class="p">)</span>
-
-                <span class="n">start_temperature</span> <span class="o">=</span> <span class="mi">100</span>
-                <span class="n">cooling_factor</span> <span class="o">=</span> <span class="mf">0.9</span>
-                <span class="c1"># the number of 109 is roughly the number of times we have to apply</span>
-                <span class="c1"># a factor of 0.9 to 100 until it reaches a value of 0.001</span>
-                <span class="n">cooling_interval</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">round</span><span class="p">(</span><span class="n">mc_steps</span><span class="o">/</span><span class="mf">109.0</span><span class="p">))</span>
-                <span class="n">mc_cooler</span> <span class="o">=</span> <span class="n">ExponentialCooler</span><span class="p">(</span><span class="n">cooling_interval</span><span class="p">,</span>
-                                              <span class="n">start_temperature</span><span class="p">,</span>
-                                              <span class="n">cooling_factor</span><span class="p">)</span>
-            <span class="k">except</span><span class="p">:</span>
-                <span class="c1"># something went terribly wrong...</span>
-                <span class="n">ost</span><span class="o">.</span><span class="n">LogError</span><span class="p">(</span><span class="s1">&#39;Failed to set up MC components&#39;</span><span class="p">)</span>
-                <span class="k">raise</span>
-
-            <span class="c1"># try to get candidates for the current loop</span>
-            <span class="k">try</span><span class="p">:</span>
-                <span class="n">ost</span><span class="o">.</span><span class="n">LogVerbose</span><span class="p">(</span><span class="s2">&quot;Firing MC for &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">actual_gap</span><span class="p">))</span>
-                <span class="n">candidates</span> <span class="o">=</span> <span class="n">LoopCandidates</span><span class="o">.</span><span class="n">FillFromMonteCarloSampler</span><span class="p">(</span>
-                    <span class="n">actual_gap</span><span class="o">.</span><span class="n">full_seq</span><span class="p">,</span> <span class="n">mc_num_loops</span><span class="p">,</span> <span class="n">mc_steps</span><span class="p">,</span> <span class="n">mc_sampler</span><span class="p">,</span>
-                    <span class="n">mc_closer</span><span class="p">,</span> <span class="n">mc_scorer</span><span class="p">,</span> <span class="n">mc_cooler</span><span class="p">)</span>
-            <span class="k">except</span> <span class="ne">RuntimeError</span><span class="p">:</span>
-                <span class="c1"># monte carlo cannot be initialized when the stems are too far</span>
-                <span class="c1"># apart  =&gt; we need further loop extension</span>
-                <span class="n">ost</span><span class="o">.</span><span class="n">LogVerbose</span><span class="p">(</span><span class="s2">&quot;Failed in setting up &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">actual_gap</span><span class="p">)</span> <span class="o">+</span> 
-                               <span class="s2">&quot; stems might be too far away...&quot;</span><span class="p">)</span>
-                <span class="k">continue</span>
-            <span class="c1"># check for ring punchings</span>
-            <span class="k">if</span> <span class="n">ring_punch_detection</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">candidates</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-                <span class="n">FilterCandidates</span><span class="p">(</span><span class="n">candidates</span><span class="p">,</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">actual_gap</span><span class="p">)</span>
-            <span class="k">elif</span> <span class="n">ring_punch_detection</span> <span class="o">==</span> <span class="mi">2</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">candidates</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-                <span class="n">FilterCandidatesWithSC</span><span class="p">(</span><span class="n">candidates</span><span class="p">,</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">actual_gap</span><span class="p">)</span>
-            <span class="c1"># skip if nothing found</span>
-            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">candidates</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
-                <span class="k">continue</span>
-
-            <span class="c1"># update candidate lists</span>
-            <span class="n">actual_candidates</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">candidates</span><span class="p">)</span>
-            <span class="n">actual_extended_gaps</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">actual_gap</span><span class="o">.</span><span class="n">Copy</span><span class="p">())</span>
-            <span class="n">found_loops</span> <span class="o">+=</span> <span class="nb">len</span><span class="p">(</span><span class="n">candidates</span><span class="p">)</span>
-
-        <span class="c1">##################################</span>
-        <span class="c1"># close loop</span>
-        <span class="c1">##################################</span>
-        <span class="n">new_idx</span> <span class="o">=</span> <span class="n">_CloseLoop</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">gap_orig</span><span class="p">,</span> <span class="n">actual_candidates</span><span class="p">,</span>
-                             <span class="n">actual_extended_gaps</span><span class="p">,</span> <span class="n">score_variant</span><span class="p">,</span>
-                             <span class="n">length_dep_weights</span><span class="o">=</span><span class="n">length_dep_weights</span><span class="p">)</span>
-        <span class="k">if</span> <span class="n">new_idx</span> <span class="o">==</span> <span class="o">-</span><span class="mi">2</span><span class="p">:</span>
-            <span class="c1"># try next one if we failed</span>
-            <span class="n">gap_idx</span> <span class="o">+=</span> <span class="mi">1</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="c1"># all good: fix sidechains if we&#39;re in ring-punch-mode and continue</span>
-            <span class="k">if</span> <span class="n">ring_punch_detection</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
-                <span class="n">ReconstructSidechains</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">keep_sidechains</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
-            <span class="n">gap_idx</span> <span class="o">=</span> <span class="n">new_idx</span></div>
-
-
-<div class="viewcode-block" id="CloseGaps"><a class="viewcode-back" href="../../../modelling/pipeline.html#promod3.modelling.CloseGaps">[docs]</a><span class="k">def</span> <span class="nf">CloseGaps</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">merge_distance</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">fragment_db</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">structure_db</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
-              <span class="n">torsion_sampler</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">fragger_handles</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">chain_idx</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
-              <span class="n">resnum_range</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">length_dep_weights</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;</span>
-<span class="sd">    Tries to close all gaps in a model, except termini. It will go through</span>
-<span class="sd">    following steps:</span>
-
-<span class="sd">    - Try to close small deletions by relaxing them </span>
-<span class="sd">      (see :func:`CloseSmallDeletions`)</span>
-<span class="sd">    - Iteratively merge gaps up to a distance **merge_distance**</span>
-<span class="sd">      (see :func:`MergeGapsByDistance`) and try to fill them with a database </span>
-<span class="sd">      approach (see :func:`FillLoopsByDatabase`)</span>
-<span class="sd">    - Try to fill remaining gaps using a Monte Carlo approach</span>
-<span class="sd">      (see :func:`FillLoopsByMonteCarlo`)</span>
-<span class="sd">    - Large deletions get closed using a last resort approach</span>
-<span class="sd">      (see :func:`CloseLargeDeletions`)</span>
-
-<span class="sd">    :param mhandle: Modelling handle on which to apply change.</span>
-<span class="sd">    :type mhandle:  :class:`ModellingHandle`</span>
-
-<span class="sd">    :param merge_distance:  Max. merge distance when performing the database </span>
-<span class="sd">                            approach</span>
-<span class="sd">    :type merge_distance:   :class:`int`</span>
-<span class="sd">    :param fragment_db:     Database for searching fragments in database </span>
-<span class="sd">                            approach, must be consistent with provided</span>
-<span class="sd">                            **structure_db**. A default is loaded if None.</span>
-<span class="sd">    :type fragment_db:      :class:`~promod3.loop.FragDB`</span>
-<span class="sd">    :param structure_db:    Structure db from which the **fragment_db** gets</span>
-<span class="sd">                            it&#39;s structural information. A default is loaded </span>
-<span class="sd">                            if None.</span>
-<span class="sd">    :type structure_db:     :class:`~promod3.loop.StructureDB`</span>
-<span class="sd">    :param torsion_sampler: Used as parameter for :func:`FillLoopsByDatabase`</span>
-<span class="sd">                            and :func:`FillLoopsByMonteCarlo` A default one is </span>
-<span class="sd">                            loaded if None.</span>
-<span class="sd">    :type torsion_sampler: :class:`promod3.loop.TorsionSampler`</span>
-<span class="sd">    :param fragger_handles: A list of :class:`promod3.modelling.FraggerHandle`</span>
-<span class="sd">                            objects for each chain in **mhandle**. </span>
-<span class="sd">                            If provided, fragments will be used for</span>
-<span class="sd">                            sampling when the :func:`FillLoopsByMonteCarlo`</span>
-<span class="sd">                            gets executed.</span>
-<span class="sd">    :type fragger_handles: :class:`list`</span>
-<span class="sd">    :param chain_idx: If not None, only gaps from chain with given index get</span>
-<span class="sd">                      processed</span>
-<span class="sd">    :type chain_idx:  :class:`int`</span>
-
-<span class="sd">    :param resnum_range: If not None, only gaps within this resnum range get</span>
-<span class="sd">                         processed.</span>
-<span class="sd">    :type resnum_range: :class:`tuple` containing two :class:`int`  </span>
-
-<span class="sd">    :param length_dep_weights: :class:`ScoringWeights` provides different sets</span>
-<span class="sd">                               of weights that have been trained on different</span>
-<span class="sd">                               loop subsets. If this flag is true, the length</span>
-<span class="sd">                               dependent weights are used to close loops with</span>
-<span class="sd">                               database / Monte Carlo.</span>
-<span class="sd">    :type length_dep_weights: :class:`bool`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-
-    <span class="c1"># load stuff if needed</span>
-    <span class="k">if</span> <span class="n">fragment_db</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
-        <span class="n">fragment_db</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">LoadFragDB</span><span class="p">()</span>
-    <span class="k">if</span> <span class="n">structure_db</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
-        <span class="n">structure_db</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">LoadStructureDB</span><span class="p">()</span>
-    <span class="k">if</span> <span class="n">torsion_sampler</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
-        <span class="n">torsion_sampler</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">LoadTorsionSamplerCoil</span><span class="p">()</span>
-
-    <span class="c1"># try to close small deletions by relaxing them</span>
-    <span class="n">CloseSmallDeletions</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">chain_idx</span><span class="o">=</span><span class="n">chain_idx</span><span class="p">,</span> 
-                        <span class="n">resnum_range</span><span class="o">=</span><span class="n">resnum_range</span><span class="p">)</span>
-
-    <span class="c1"># iteratively merge gaps of distance i and fill loops by database</span>
-    <span class="k">for</span> <span class="n">distance</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">merge_distance</span><span class="p">):</span>
-        <span class="n">MergeGapsByDistance</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">distance</span><span class="p">,</span> <span class="n">chain_idx</span><span class="o">=</span><span class="n">chain_idx</span><span class="p">,</span>
-                            <span class="n">resnum_range</span><span class="o">=</span><span class="n">resnum_range</span><span class="p">)</span>
-        <span class="n">FillLoopsByDatabase</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">fragment_db</span><span class="p">,</span> <span class="n">structure_db</span><span class="p">,</span>
-                            <span class="n">torsion_sampler</span><span class="p">,</span> <span class="n">min_loops_required</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span>
-                            <span class="n">max_res_extension</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span> <span class="n">chain_idx</span><span class="o">=</span><span class="n">chain_idx</span><span class="p">,</span>
-                            <span class="n">resnum_range</span><span class="o">=</span><span class="n">resnum_range</span><span class="p">,</span> <span class="n">clash_thresh</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
-                            <span class="n">length_dep_weights</span><span class="o">=</span><span class="n">length_dep_weights</span><span class="p">)</span>
-        
-    <span class="c1"># if above fails, try DB-fill with less restrictions</span>
-    <span class="n">FillLoopsByDatabase</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">fragment_db</span><span class="p">,</span> <span class="n">structure_db</span><span class="p">,</span>
-                        <span class="n">torsion_sampler</span><span class="p">,</span> <span class="n">min_loops_required</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span>
-                        <span class="n">chain_idx</span><span class="o">=</span><span class="n">chain_idx</span><span class="p">,</span> <span class="n">resnum_range</span><span class="o">=</span><span class="n">resnum_range</span><span class="p">,</span>
-                        <span class="n">clash_thresh</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> 
-                        <span class="n">length_dep_weights</span><span class="o">=</span><span class="n">length_dep_weights</span><span class="p">)</span>
-    <span class="n">FillLoopsByDatabase</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">fragment_db</span><span class="p">,</span> <span class="n">structure_db</span><span class="p">,</span>
-                        <span class="n">torsion_sampler</span><span class="p">,</span> <span class="n">chain_idx</span><span class="o">=</span><span class="n">chain_idx</span><span class="p">,</span>
-                        <span class="n">resnum_range</span><span class="o">=</span><span class="n">resnum_range</span><span class="p">,</span>
-                        <span class="n">length_dep_weights</span><span class="o">=</span><span class="n">length_dep_weights</span><span class="p">)</span>
-
-    <span class="c1"># close remaining gaps by Monte Carlo</span>
-    <span class="n">FillLoopsByMonteCarlo</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">torsion_sampler</span><span class="p">,</span> 
-                          <span class="n">fragger_handles</span><span class="o">=</span><span class="n">fragger_handles</span><span class="p">,</span> 
-                          <span class="n">chain_idx</span><span class="o">=</span><span class="n">chain_idx</span><span class="p">,</span>
-                          <span class="n">resnum_range</span><span class="o">=</span><span class="n">resnum_range</span><span class="p">,</span>
-                          <span class="n">length_dep_weights</span><span class="o">=</span><span class="n">length_dep_weights</span><span class="p">)</span>
-
-    <span class="c1"># last resort approach to close large deletions</span>
-    <span class="n">CloseLargeDeletions</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">structure_db</span><span class="p">,</span> <span class="n">chain_idx</span><span class="o">=</span><span class="n">chain_idx</span><span class="p">,</span> 
-                        <span class="n">resnum_range</span><span class="o">=</span><span class="n">resnum_range</span><span class="p">)</span></div>
-
-    <span class="c1"># NOTE:</span>
-    <span class="c1"># In the function above, we call :func:`FillLoopsByDatabase` multiple</span>
-    <span class="c1"># times. First, we try to close &quot;easy&quot; gaps which require few extensions</span>
-    <span class="c1"># (we wish to limit the damage we do on the template) and for which we have</span>
-    <span class="c1"># plenty of loop candidates. If some gaps cannot be closed like this, we try</span>
-    <span class="c1"># less restrictive options. This approach is helpful if neighboring gaps are</span>
-    <span class="c1"># close together and the one closer to the C-terminus is easier to close.</span>
-    <span class="c1"># Several variants were evaluated on 1752 target-template-pairs and this one</span>
-    <span class="c1"># worked best.</span>
-
-<div class="viewcode-block" id="ModelTermini"><a class="viewcode-back" href="../../../modelling/pipeline.html#promod3.modelling.ModelTermini">[docs]</a><span class="k">def</span> <span class="nf">ModelTermini</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">torsion_sampler</span><span class="p">,</span> <span class="n">fragger_handles</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
-                 <span class="n">mc_num_loops</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">mc_steps</span><span class="o">=</span><span class="mi">5000</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Try to model termini with Monte Carlo sampling.</span>
-
-<span class="sd">    Use with care! This is an experimental feature which will increase coverage</span>
-<span class="sd">    but we do not assume that the resulting termini are of high quality!</span>
-
-<span class="sd">    The termini are modelled by either sampling the dihedral angles or (if</span>
-<span class="sd">    *fragger_handles* is given) :class:`~promod3.loop.Fragger` lists. The latter</span>
-<span class="sd">    is only used if the gap length is &gt;= the length of fragments stored.</span>
-
-<span class="sd">    Terminal gaps of length 1 are ignored by this function!</span>
-
-<span class="sd">    .. literalinclude:: ../../../tests/doc/scripts/modelling_model_termini.py</span>
-
-<span class="sd">    :param mhandle: Modelling handle on which to apply change.</span>
-<span class="sd">    :type mhandle:  :class:`ModellingHandle`</span>
-
-<span class="sd">    :param torsion_sampler: A sampler for torsion angles.</span>
-<span class="sd">    :type torsion_sampler: :class:`~promod3.loop.TorsionSampler`</span>
-
-<span class="sd">    :param fragger_handles: Either None (no fragger sampling used) or one</span>
-<span class="sd">                            fragger handle for each chain in *mhandle*.</span>
-<span class="sd">    :type fragger_handles:  :class:`list` of :class:`~promod3.modelling.FraggerHandle`</span>
-
-<span class="sd">    :param mc_num_loops: Number of loop candidates to consider for each terminal gap</span>
-<span class="sd">                         (see :meth:`~LoopCandidates.FillFromMonteCarloSampler`)</span>
-<span class="sd">    :type mc_num_loops:  :class:`int`</span>
-
-<span class="sd">    :param mc_steps: Number of MC steps to perform for each loop candidate</span>
-<span class="sd">                     (see :meth:`~LoopCandidates.FillFromMonteCarloSampler`)</span>
-<span class="sd">    :type mc_steps:  :class:`int`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;closegaps::ModelTermini&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-
-    <span class="c1"># get terminal gaps (copies as we&#39;ll clear them as we go)</span>
-    <span class="n">terminal_gaps</span> <span class="o">=</span> <span class="p">[</span><span class="n">g</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span> <span class="k">for</span> <span class="n">g</span> <span class="ow">in</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span> <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">IsTerminal</span><span class="p">()</span> <span class="ow">and</span> <span class="n">g</span><span class="o">.</span><span class="n">length</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">]</span>
-    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">terminal_gaps</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Trying to model </span><span class="si">%d</span><span class="s2"> terminal gap(s).&quot;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">terminal_gaps</span><span class="p">))</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="k">return</span>
-
-    <span class="c1"># check/setup scoring</span>
-    <span class="k">if</span> <span class="ow">not</span> <span class="n">IsBackboneScoringSetUp</span><span class="p">(</span><span class="n">mhandle</span><span class="p">):</span>
-        <span class="n">SetupDefaultBackboneScoring</span><span class="p">(</span><span class="n">mhandle</span><span class="p">)</span>
-
-    <span class="c1"># model them</span>
-    <span class="k">for</span> <span class="n">actual_gap</span> <span class="ow">in</span> <span class="n">terminal_gaps</span><span class="p">:</span>
-        
-        <span class="c1"># extract info</span>
-        <span class="k">if</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">IsNTerminal</span><span class="p">():</span>
-            <span class="n">start_resnum</span> <span class="o">=</span> <span class="mi">1</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="n">start_resnum</span> <span class="o">=</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">before</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span>
-        <span class="n">actual_chain</span> <span class="o">=</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">GetChain</span><span class="p">()</span>
-        <span class="n">actual_chain_idx</span> <span class="o">=</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">GetChainIndex</span><span class="p">()</span>
-        <span class="k">if</span> <span class="n">fragger_handles</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
-            <span class="n">fragger_handle</span> <span class="o">=</span> <span class="n">fragger_handles</span><span class="p">[</span><span class="n">actual_chain_idx</span><span class="p">]</span>
-
-        <span class="c1"># choose sampler</span>
-        <span class="k">if</span> <span class="n">fragger_handles</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> \
-           <span class="n">actual_gap</span><span class="o">.</span><span class="n">length</span> <span class="o">&lt;</span> <span class="n">fragger_handle</span><span class="o">.</span><span class="n">fragment_length</span><span class="p">:</span>
-            <span class="n">mc_sampler</span> <span class="o">=</span> <span class="n">PhiPsiSampler</span><span class="p">(</span><span class="n">actual_gap</span><span class="o">.</span><span class="n">full_seq</span><span class="p">,</span>
-                                       <span class="n">torsion_sampler</span><span class="p">)</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="n">end_pos</span> <span class="o">=</span> <span class="n">start_resnum</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">length</span>
-            <span class="n">fragger_list</span> <span class="o">=</span> <span class="n">fragger_handle</span><span class="o">.</span><span class="n">GetList</span><span class="p">(</span><span class="n">start_resnum</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">end_pos</span><span class="p">)</span>
-            <span class="n">mc_sampler</span> <span class="o">=</span> <span class="n">FragmentSampler</span><span class="p">(</span><span class="n">actual_gap</span><span class="o">.</span><span class="n">full_seq</span><span class="p">,</span> <span class="n">fragger_list</span><span class="p">,</span>
-                                         <span class="n">init_fragments</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
-
-        <span class="c1"># choose closer</span>
-        <span class="k">if</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">IsNTerminal</span><span class="p">():</span>
-            <span class="n">mc_closer</span> <span class="o">=</span> <span class="n">NTerminalCloser</span><span class="p">(</span><span class="n">actual_gap</span><span class="o">.</span><span class="n">after</span><span class="p">)</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="n">mc_closer</span> <span class="o">=</span> <span class="n">CTerminalCloser</span><span class="p">(</span><span class="n">actual_gap</span><span class="o">.</span><span class="n">before</span><span class="p">)</span>
-
-        <span class="c1"># setup scorer</span>
-        <span class="n">weights</span> <span class="o">=</span> <span class="n">_GetMCWeights</span><span class="p">()</span>
-        <span class="n">mc_scorer</span> <span class="o">=</span> <span class="n">LinearScorer</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">backbone_scorer</span><span class="p">,</span> 
-                                 <span class="n">mhandle</span><span class="o">.</span><span class="n">backbone_scorer_env</span><span class="p">,</span>
-                                 <span class="n">start_resnum</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">actual_gap</span><span class="o">.</span><span class="n">full_seq</span><span class="p">),</span> 
-                                 <span class="n">actual_chain_idx</span><span class="p">,</span> <span class="n">weights</span><span class="p">)</span>
-
-        <span class="c1"># setup cooler</span>
-        <span class="n">start_temperature</span> <span class="o">=</span> <span class="mi">100</span>
-        <span class="n">cooling_factor</span> <span class="o">=</span> <span class="mf">0.9</span>
-        <span class="c1"># the number of 109 is roughly the number of times we have to apply</span>
-        <span class="c1"># a factor of 0.9 to 100 until it reaches a value of 0.001</span>
-        <span class="n">cooling_interval</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">round</span><span class="p">(</span><span class="n">mc_steps</span><span class="o">/</span><span class="mf">109.0</span><span class="p">))</span>
-        <span class="n">mc_cooler</span> <span class="o">=</span> <span class="n">ExponentialCooler</span><span class="p">(</span><span class="n">cooling_interval</span><span class="p">,</span> <span class="n">start_temperature</span><span class="p">,</span>
-                                      <span class="n">cooling_factor</span><span class="p">)</span>
-
-        <span class="c1"># try to get loop candidates</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogVerbose</span><span class="p">(</span><span class="s2">&quot;Firing MC for &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">actual_gap</span><span class="p">))</span>
-        <span class="n">candidates</span> <span class="o">=</span> <span class="n">LoopCandidates</span><span class="o">.</span><span class="n">FillFromMonteCarloSampler</span><span class="p">(</span>
-                <span class="n">actual_gap</span><span class="o">.</span><span class="n">full_seq</span><span class="p">,</span> <span class="n">mc_num_loops</span><span class="p">,</span> <span class="n">mc_steps</span><span class="p">,</span> <span class="n">mc_sampler</span><span class="p">,</span>
-                <span class="n">mc_closer</span><span class="p">,</span> <span class="n">mc_scorer</span><span class="p">,</span> <span class="n">mc_cooler</span><span class="p">)</span>
-
-        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">candidates</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-            <span class="c1"># score candidates</span>
-            <span class="n">bb_scores</span> <span class="o">=</span> <span class="n">ScoreContainer</span><span class="p">()</span>
-            <span class="n">candidates</span><span class="o">.</span><span class="n">CalculateBackboneScores</span><span class="p">(</span><span class="n">bb_scores</span><span class="p">,</span> <span class="n">mhandle</span><span class="p">,</span>
-                                               <span class="n">start_resnum</span><span class="p">,</span> <span class="n">actual_chain_idx</span><span class="p">)</span>
-            <span class="n">scores</span> <span class="o">=</span> <span class="n">bb_scores</span><span class="o">.</span><span class="n">LinearCombine</span><span class="p">(</span><span class="n">ScoringWeights</span><span class="o">.</span><span class="n">GetWeights</span><span class="p">())</span>
-            <span class="n">min_score</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">scores</span><span class="p">)</span>
-            <span class="n">min_idx</span> <span class="o">=</span> <span class="n">scores</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">min_score</span><span class="p">)</span>
-            <span class="c1"># report</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Resolved terminal gap </span><span class="si">%s</span><span class="s2"> (</span><span class="si">%d</span><span class="s2"> candidates)&quot;</span> <span class="o">%</span> \
-                        <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">actual_gap</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">candidates</span><span class="p">)))</span>
-            <span class="c1"># update model and clear gap</span>
-            <span class="n">InsertLoopClearGaps</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">candidates</span><span class="p">[</span><span class="n">min_idx</span><span class="p">],</span> <span class="n">actual_gap</span><span class="p">)</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Failed to model terminal gap (</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">actual_gap</span><span class="p">))</span></div>
-            
-
-<div class="viewcode-block" id="CloseLargeDeletions"><a class="viewcode-back" href="../../../modelling/pipeline.html#promod3.modelling.CloseLargeDeletions">[docs]</a><span class="k">def</span> <span class="nf">CloseLargeDeletions</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">structure_db</span><span class="p">,</span> <span class="n">linker_length</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span>
-                        <span class="n">num_fragments</span><span class="o">=</span><span class="mi">500</span><span class="p">,</span> <span class="n">use_scoring_extender</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
-                        <span class="n">use_full_extender</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">chain_idx</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
-                        <span class="n">resnum_range</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
-
-    <span class="sd">&#39;&#39;&#39;Try to close large deletions.</span>
-
-<span class="sd">    This is meant as a &quot;last-resort&quot; approach. In some cases you cannot </span>
-<span class="sd">    close very large deletions simply because the two parts separated</span>
-<span class="sd">    by a deletion are too far apart. The idea is to sample a linker region</span>
-<span class="sd">    and always move the whole chain towards the n-terminus. </span>
-<span class="sd">    </span>
-<span class="sd">    :param mhandle: Modelling handle on which to apply change.</span>
-<span class="sd">    :type mhandle:  :class:`ModellingHandle`</span>
-
-<span class="sd">    :param structure_db: The database from which to extract fragments for</span>
-<span class="sd">                         the linker region.</span>
-<span class="sd">    :type structure_db: :class:`~promod3.loop.StructureDB`</span>
-
-<span class="sd">    :param linker_length: Desired length (in residues w/o stems) for the</span>
-<span class="sd">                          linker. This may be shorter if extender cannot</span>
-<span class="sd">                          extend further.</span>
-<span class="sd">    :type linker_length:  :class:`int`</span>
-
-<span class="sd">    :param num_fragments: Number of fragments to sample the linker.</span>
-<span class="sd">    :type num_fragments:  :class:`int`</span>
-
-<span class="sd">    :param use_scoring_extender: True = use :class:`ScoringGapExtender` instead</span>
-<span class="sd">                                 of :class:`GapExtender`.</span>
-<span class="sd">                                 See :func:`CloseSmallDeletions`.</span>
-<span class="sd">    :type use_scoring_extender:  :class:`bool`</span>
-
-<span class="sd">    :param use_full_extender: True = use :class:`FullGapExtender` instead of</span>
-<span class="sd">                              :class:`GapExtender`.</span>
-<span class="sd">                              See :func:`CloseSmallDeletions`.</span>
-<span class="sd">    :type use_full_extender:  :class:`bool`</span>
-
-<span class="sd">    :param chain_idx: If not None, only gaps from chain with given index get</span>
-<span class="sd">                      processed</span>
-<span class="sd">    :type chain_idx:  :class:`int`</span>
-
-<span class="sd">    :param resnum_range: If not None, only gaps within this resnum range get</span>
-<span class="sd">                         processed</span>
-<span class="sd">    :type resnum_range: :class:`tuple` containing two :class:`int`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;closegaps::CloseLargeDeletions&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-
-    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Trying to resolve large deletions (</span><span class="si">%d</span><span class="s2"> gap(s) left) by &quot;</span>
-                    <span class="s2">&quot;sampling a linker region.&quot;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">))</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="k">return</span>
-
-    <span class="c1"># check/setup scoring</span>
-    <span class="k">if</span> <span class="ow">not</span> <span class="n">IsBackboneScoringSetUp</span><span class="p">(</span><span class="n">mhandle</span><span class="p">):</span>
-        <span class="n">SetupDefaultBackboneScoring</span><span class="p">(</span><span class="n">mhandle</span><span class="p">)</span>
-
-    <span class="c1"># point to the current gap</span>
-    <span class="n">gap_idx</span> <span class="o">=</span> <span class="mi">0</span>
-
-    <span class="c1"># Iterate all gaps. Since the number of gaps may change, always compare to</span>
-    <span class="c1"># an updated list. gap_idx is only increased when necessary, e.g. current</span>
-    <span class="c1"># gap could not be removed.</span>
-    <span class="k">while</span> <span class="n">gap_idx</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">)</span> <span class="ow">and</span> <span class="n">gap_idx</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span>
-
-        <span class="c1"># keep copy of original gap</span>
-        <span class="n">gap_orig</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">[</span><span class="n">gap_idx</span><span class="p">]</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-
-        <span class="c1"># check whether we are in the desired range</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="n">_InRange</span><span class="p">(</span><span class="n">gap_orig</span><span class="p">,</span> <span class="n">chain_idx</span><span class="p">,</span> <span class="n">resnum_range</span><span class="p">):</span>
-            <span class="n">gap_idx</span> <span class="o">+=</span> <span class="mi">1</span>
-            <span class="k">continue</span>
-
-        <span class="c1"># get chain for gap</span>
-        <span class="n">actual_chain_idx</span> <span class="o">=</span> <span class="n">gap_orig</span><span class="o">.</span><span class="n">GetChainIndex</span><span class="p">()</span>
-        <span class="n">actual_chain</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">chains</span><span class="p">[</span><span class="n">actual_chain_idx</span><span class="p">]</span>
-        
-        <span class="c1"># terminal gaps are not deletions...</span>
-        <span class="k">if</span> <span class="n">gap_orig</span><span class="o">.</span><span class="n">IsTerminal</span><span class="p">():</span>
-            <span class="n">gap_idx</span> <span class="o">+=</span> <span class="mi">1</span>
-            <span class="k">continue</span>
-
-        <span class="c1"># check if too long</span>
-        <span class="k">if</span> <span class="n">gap_orig</span><span class="o">.</span><span class="n">length</span> <span class="o">&gt;</span> <span class="n">linker_length</span><span class="p">:</span>
-            <span class="n">gap_idx</span> <span class="o">+=</span> <span class="mi">1</span>
-            <span class="k">continue</span>
-
-        <span class="c1"># the function only works, if there are no gaps (del. AND insert.)</span>
-        <span class="c1"># towards the n-ter in the same chain, except terminal gaps.</span>
-        <span class="n">clean_nter</span> <span class="o">=</span> <span class="bp">True</span>
-        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">gap_idx</span><span class="p">):</span>
-            <span class="k">if</span> <span class="n">actual_chain_idx</span> <span class="o">==</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">GetChainIndex</span><span class="p">():</span>
-                <span class="k">if</span> <span class="ow">not</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">IsTerminal</span><span class="p">():</span>
-                    <span class="n">clean_nter</span> <span class="o">=</span> <span class="bp">False</span>
-                    <span class="k">break</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="n">clean_nter</span><span class="p">:</span>
-            <span class="n">gap_idx</span> <span class="o">+=</span> <span class="mi">1</span>
-            <span class="k">continue</span>
-
-        <span class="c1"># extend gap to desired length</span>
-        <span class="n">actual_gap</span> <span class="o">=</span> <span class="n">gap_orig</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-        <span class="n">actual_extender</span> <span class="o">=</span> <span class="n">_GetGapExtender</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">actual_gap</span><span class="p">,</span>
-                                          <span class="n">use_scoring_extender</span><span class="p">,</span>
-                                          <span class="n">use_full_extender</span><span class="p">,</span>
-                                          <span class="n">linker_length</span><span class="p">)</span>
-        <span class="k">while</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">length</span> <span class="o">&lt;</span> <span class="n">linker_length</span><span class="p">:</span>
-            <span class="c1"># extend the gap</span>
-            <span class="k">if</span> <span class="ow">not</span> <span class="n">actual_extender</span><span class="o">.</span><span class="n">Extend</span><span class="p">():</span>
-                <span class="k">break</span>
-
-        <span class="c1"># FAIL (Fragger needs at least 3 residues)</span>
-        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">actual_gap</span><span class="o">.</span><span class="n">full_seq</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">:</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Failed in CloseLargeDeletions (</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">gap_orig</span><span class="p">))</span>
-            <span class="n">gap_idx</span> <span class="o">+=</span> <span class="mi">1</span>
-            <span class="k">continue</span>
-        
-        <span class="c1"># extract gap info</span>
-        <span class="n">n_stem_res</span> <span class="o">=</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">before</span>
-        <span class="n">c_stem_res</span> <span class="o">=</span> <span class="n">actual_gap</span><span class="o">.</span><span class="n">after</span>
-        <span class="n">n_stem_res_num</span> <span class="o">=</span> <span class="n">n_stem_res</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span>
-        <span class="n">c_stem_res_num</span> <span class="o">=</span> <span class="n">c_stem_res</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span>
-
-        <span class="c1"># let&#39;s find fragments!</span>
-        <span class="n">fragger</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">Fragger</span><span class="p">(</span><span class="n">actual_gap</span><span class="o">.</span><span class="n">full_seq</span><span class="p">)</span>
-        <span class="n">seqsim_matrix</span> <span class="o">=</span> <span class="n">ost</span><span class="o">.</span><span class="n">seq</span><span class="o">.</span><span class="n">alg</span><span class="o">.</span><span class="n">BLOSUM62</span>
-        <span class="n">fragger</span><span class="o">.</span><span class="n">AddSeqSimParameters</span><span class="p">(</span><span class="mf">1.0</span><span class="p">,</span> <span class="n">seqsim_matrix</span><span class="p">)</span>
-        <span class="n">fragger</span><span class="o">.</span><span class="n">Fill</span><span class="p">(</span><span class="n">structure_db</span><span class="p">,</span> <span class="mf">0.2</span><span class="p">,</span> <span class="n">num_fragments</span><span class="p">)</span>
-
-        <span class="c1"># We generate two backbonelists based on residues beginning from the </span>
-        <span class="c1"># n-terminus:</span>
-        <span class="c1"># - bb_list: covers the full thing being sampled (incl. stuff in gap)</span>
-        <span class="c1"># - initial_n_stem: n-stem residue before the fragment insertion</span>
-        <span class="c1">#</span>
-        <span class="c1"># After having found the ideal fragment, we cannot simply insert it into</span>
-        <span class="c1"># the model, since all sidechain information would be lost.</span>
-        <span class="c1"># We therefore need the initial_n_stem to store the initial N stem</span>
-        <span class="c1"># positions. We can then calculate a transformation in the end and </span>
-        <span class="c1"># apply it manually in the end for the according atom positions.</span>
-
-        <span class="c1"># only put valid residues in bb_seq</span>
-        <span class="n">first_num</span> <span class="o">=</span> <span class="n">actual_chain</span><span class="o">.</span><span class="n">residues</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span>
-        <span class="n">bb_seq</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">seqres</span><span class="p">[</span><span class="n">actual_chain_idx</span><span class="p">][</span><span class="n">first_num</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span><span class="n">c_stem_res_num</span><span class="p">]</span>
-        <span class="n">bb_list</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">BackboneList</span><span class="p">(</span><span class="n">bb_seq</span><span class="p">)</span>
-        <span class="n">actual_res_num</span> <span class="o">=</span> <span class="n">ost</span><span class="o">.</span><span class="n">mol</span><span class="o">.</span><span class="n">ResNum</span><span class="p">(</span><span class="n">first_num</span><span class="p">)</span>
-        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">bb_seq</span><span class="p">)):</span>
-            <span class="n">actual_res</span> <span class="o">=</span> <span class="n">actual_chain</span><span class="o">.</span><span class="n">FindResidue</span><span class="p">(</span><span class="n">actual_res_num</span><span class="p">)</span>
-            <span class="k">if</span> <span class="n">actual_res</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
-                <span class="n">bb_list</span><span class="o">.</span><span class="n">Set</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">actual_res</span><span class="p">,</span> <span class="n">bb_seq</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
-            <span class="n">actual_res_num</span> <span class="o">+=</span> <span class="mi">1</span>
-
-        <span class="c1"># define region in fragger and region before, including the n_stem of </span>
-        <span class="c1"># the fragment</span>
-        <span class="n">frag_start_idx</span> <span class="o">=</span> <span class="n">n_stem_res_num</span> <span class="o">-</span> <span class="n">first_num</span>
-        <span class="n">initial_n_stem</span> <span class="o">=</span> <span class="n">bb_list</span><span class="o">.</span><span class="n">Extract</span><span class="p">(</span><span class="n">frag_start_idx</span><span class="p">,</span> <span class="n">frag_start_idx</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
-
-        <span class="c1"># all fragments get now sampled and scored</span>
-        <span class="c1"># the idea is to sample the fragments by moving the full part towards</span>
-        <span class="c1"># the n-terminus</span>
-        <span class="n">closer</span> <span class="o">=</span> <span class="n">NTerminalCloser</span><span class="p">(</span><span class="n">c_stem_res</span><span class="p">)</span>
-        <span class="n">best_score</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="s2">&quot;inf&quot;</span><span class="p">)</span>
-        <span class="n">best_idx</span> <span class="o">=</span> <span class="mi">0</span>
-        <span class="n">scorer_weights</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;clash&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;reduced&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">}</span>
-        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">fragger</span><span class="p">)):</span>
-
-            <span class="n">bb_list</span><span class="o">.</span><span class="n">ReplaceFragment</span><span class="p">(</span><span class="n">fragger</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">frag_start_idx</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
-            <span class="n">closer</span><span class="o">.</span><span class="n">Close</span><span class="p">(</span><span class="n">bb_list</span><span class="p">,</span> <span class="n">bb_list</span><span class="p">)</span>
-
-            <span class="c1"># a simple score gets calculated and best chosen</span>
-            <span class="n">mhandle</span><span class="o">.</span><span class="n">backbone_scorer_env</span><span class="o">.</span><span class="n">SetEnvironment</span><span class="p">(</span><span class="n">bb_list</span><span class="p">,</span> <span class="n">first_num</span><span class="p">,</span> 
-                                                       <span class="n">actual_chain_idx</span><span class="p">)</span>
-            <span class="n">score</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">backbone_scorer</span><span class="o">.</span><span class="n">CalculateLinearCombination</span><span class="p">(</span>\
-                        <span class="n">scorer_weights</span><span class="p">,</span> <span class="n">first_num</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">bb_list</span><span class="p">),</span> <span class="n">actual_chain_idx</span><span class="p">)</span>
-
-            <span class="k">if</span> <span class="n">score</span> <span class="o">&lt;</span> <span class="n">best_score</span><span class="p">:</span>
-                <span class="n">best_score</span> <span class="o">=</span> <span class="n">score</span>
-                <span class="n">best_idx</span> <span class="o">=</span> <span class="n">i</span>
-
-        <span class="c1"># set best fragment into bb_list and </span>
-        <span class="n">fragment</span> <span class="o">=</span> <span class="n">fragger</span><span class="p">[</span><span class="n">best_idx</span><span class="p">]</span>
-        <span class="n">bb_list</span><span class="o">.</span><span class="n">ReplaceFragment</span><span class="p">(</span><span class="n">fragment</span><span class="p">,</span> <span class="n">frag_start_idx</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
-        <span class="n">closer</span><span class="o">.</span><span class="n">Close</span><span class="p">(</span><span class="n">bb_list</span><span class="p">,</span> <span class="n">bb_list</span><span class="p">)</span>
-        <span class="c1"># reextract fragment, since the whole thing has undergone a </span>
-        <span class="c1"># transformation</span>
-        <span class="n">fragment</span> <span class="o">=</span> <span class="n">bb_list</span><span class="o">.</span><span class="n">Extract</span><span class="p">(</span><span class="n">frag_start_idx</span><span class="p">,</span> <span class="n">frag_start_idx</span> <span class="o">+</span> 
-                                                   <span class="nb">len</span><span class="p">(</span><span class="n">fragment</span><span class="p">))</span>
-
-        <span class="c1"># We finally calculate the transformation from the initial positions</span>
-        <span class="c1"># of all residues towards the n-terminus and apply it manually.</span>
-        <span class="c1"># this is done to not loose all the sidechain information</span>
-        <span class="n">t</span> <span class="o">=</span> <span class="n">initial_n_stem</span><span class="o">.</span><span class="n">GetTransform</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">bb_list</span><span class="p">,</span> <span class="n">frag_start_idx</span><span class="p">)</span>
-        <span class="n">ed</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">EditXCS</span><span class="p">(</span><span class="n">ost</span><span class="o">.</span><span class="n">mol</span><span class="o">.</span><span class="n">BUFFERED_EDIT</span><span class="p">)</span>
-        <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">actual_chain</span><span class="o">.</span><span class="n">residues</span><span class="p">[:</span><span class="n">frag_start_idx</span><span class="p">]:</span>
-            <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">r</span><span class="o">.</span><span class="n">atoms</span><span class="p">:</span>
-                <span class="n">new_pos</span> <span class="o">=</span> <span class="n">t</span> <span class="o">*</span> <span class="n">ost</span><span class="o">.</span><span class="n">geom</span><span class="o">.</span><span class="n">Vec4</span><span class="p">(</span><span class="n">a</span><span class="o">.</span><span class="n">GetPos</span><span class="p">())</span>
-                <span class="n">ed</span><span class="o">.</span><span class="n">SetAtomPos</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">ost</span><span class="o">.</span><span class="n">geom</span><span class="o">.</span><span class="n">Vec3</span><span class="p">(</span><span class="n">new_pos</span><span class="p">))</span>
-        <span class="n">ed</span><span class="o">.</span><span class="n">UpdateICS</span><span class="p">()</span>
-
-        <span class="c1"># replace fragment part</span>
-        <span class="n">fragment</span><span class="o">.</span><span class="n">InsertInto</span><span class="p">(</span><span class="n">actual_chain</span><span class="p">,</span> <span class="n">n_stem_res_num</span><span class="p">)</span>
-
-        <span class="c1"># update score env. (manual to keep all atom sidechains)</span>
-        <span class="n">mhandle</span><span class="o">.</span><span class="n">backbone_scorer_env</span><span class="o">.</span><span class="n">SetEnvironment</span><span class="p">(</span><span class="n">bb_list</span><span class="p">,</span> <span class="n">first_num</span><span class="p">,</span>
-                                                   <span class="n">actual_chain_idx</span><span class="p">)</span>
-        <span class="c1"># will return -1 if last gap removed</span>
-        <span class="n">gap_idx</span> <span class="o">=</span> <span class="n">ClearGaps</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">actual_gap</span><span class="p">)</span>
-
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Resolved </span><span class="si">%s</span><span class="s2"> by sampling </span><span class="si">%s</span><span class="s2"> as linker&quot;</span> <span class="o">%</span> \
-                    <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">gap_orig</span><span class="p">),</span> <span class="nb">str</span><span class="p">(</span><span class="n">actual_gap</span><span class="p">)))</span>
-    
-    <span class="c1"># reset all atom env. if it&#39;s set (changes are too drastic so we set all)</span>
-    <span class="k">if</span> <span class="n">IsAllAtomScoringSetUp</span><span class="p">(</span><span class="n">mhandle</span><span class="p">):</span>
-        <span class="n">mhandle</span><span class="o">.</span><span class="n">all_atom_sidechain_env</span><span class="o">.</span><span class="n">SetInitialEnvironment</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="p">)</span></div>
-
-<span class="c1"># these methods will be exported into module</span>
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;CloseSmallDeletions&#39;</span><span class="p">,</span> <span class="s1">&#39;MergeGapsByDistance&#39;</span><span class="p">,</span> <span class="s1">&#39;FillLoopsByDatabase&#39;</span><span class="p">,</span>
-           <span class="s1">&#39;FillLoopsByMonteCarlo&#39;</span><span class="p">,</span> <span class="s1">&#39;CloseGaps&#39;</span><span class="p">,</span> <span class="s1">&#39;ModelTermini&#39;</span><span class="p">,</span> 
-           <span class="s1">&#39;CloseLargeDeletions&#39;</span><span class="p">)</span>
-</pre></div>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
-        <div class="sphinxsidebarwrapper"><div class="relations">
-<h3>Related Topics</h3>
-<ul>
-  <li><a href="../../../index.html">Documentation overview</a><ul>
-  <li><a href="../../index.html">Module code</a><ul>
-  <li><a href="../../promod3.html">promod3</a><ul>
-  </ul></li>
-  </ul></li>
-  </ul></li>
-</ul>
-</div>
-<div id="searchbox" style="display: none" role="search">
-  <h3>Quick search</h3>
-    <form class="search" action="../../../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
-      
-      |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
-      
-    </div>
-
-    
-
-    
-  </body>
-</html>
\ No newline at end of file
diff --git a/doc/html/_modules/promod3/modelling/_denovo.html b/doc/html/_modules/promod3/modelling/_denovo.html
deleted file mode 100644
index efcbd769..00000000
--- a/doc/html/_modules/promod3/modelling/_denovo.html
+++ /dev/null
@@ -1,232 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>promod3.modelling._denovo &mdash; ProMod3 1.3.0 documentation</title>
-    
-    <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
-    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../../../',
-        VERSION:     '1.3.0',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../../../_static/jquery.js"></script>
-    <script type="text/javascript" src="../../../_static/underscore.js"></script>
-    <script type="text/javascript" src="../../../_static/doctools.js"></script>
-    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../../../index.html" />
-    <link rel="up" title="promod3" href="../../promod3.html" />
-   
-  <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
-  
-  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
-
-  </head>
-  <body role="document">
-  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body" role="main">
-            
-  <h1>Source code for promod3.modelling._denovo</h1><div class="highlight"><pre>
-<span></span><span class="c1"># Copyright (c) 2013-2018, SIB - Swiss Institute of Bioinformatics and </span>
-<span class="c1">#                          Biozentrum - University of Basel</span>
-<span class="c1"># </span>
-<span class="c1"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<span class="c1"># you may not use this file except in compliance with the License.</span>
-<span class="c1"># You may obtain a copy of the License at</span>
-<span class="c1"># </span>
-<span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
-<span class="c1"># </span>
-<span class="c1"># Unless required by applicable law or agreed to in writing, software</span>
-<span class="c1"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<span class="c1"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<span class="c1"># See the License for the specific language governing permissions and</span>
-<span class="c1"># limitations under the License.</span>
-
-
-<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">scoring</span><span class="p">,</span> <span class="n">loop</span>
-<span class="kn">from</span> <span class="nn">_modelling</span> <span class="kn">import</span> <span class="o">*</span>
-
-<div class="viewcode-block" id="GenerateDeNovoTrajectories"><a class="viewcode-back" href="../../../modelling/algorithms.html#promod3.modelling.GenerateDeNovoTrajectories">[docs]</a><span class="k">def</span> <span class="nf">GenerateDeNovoTrajectories</span><span class="p">(</span><span class="n">sequence</span><span class="p">,</span> 
-                               <span class="n">num_trajectories</span> <span class="o">=</span> <span class="mi">200</span><span class="p">,</span>
-                               <span class="n">avg_sampling_per_position</span> <span class="o">=</span> <span class="mi">600</span><span class="p">,</span>
-                               <span class="n">profile</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span>
-                               <span class="n">psipred_prediction</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span>
-                               <span class="n">fragment_handler</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span>
-                               <span class="n">scorer</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span>
-                               <span class="n">scorer_env</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span>
-                               <span class="n">scoring_weights</span> <span class="o">=</span> <span class="bp">None</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Example de novo modelling pipeline based on Fragment sampling and</span>
-<span class="sd">    backbone scoring. Take this as a starting point for more advanced</span>
-<span class="sd">    de novo procedures.</span>
-
-<span class="sd">    :param sequence:    The sequence you want to sample</span>
-<span class="sd">    :type sequence:     :class:`str`</span>
-
-<span class="sd">    :param num_trajectories:  The number of sampling trajectories you</span>
-<span class="sd">                              want to generate </span>
-<span class="sd">    :type num_trajectories:   :class:`int`</span>
-
-<span class="sd">    </span>
-<span class="sd">    :param avg_sampling_per_position: Number of Monte Carlo sampling steps</span>
-<span class="sd">                                      the total number is: </span>
-<span class="sd">                                      len(**sequence**) * **avg_sampling_per_position** </span>
-
-<span class="sd">    :param profile:     The sequence profile for **sequence**. This increases the </span>
-<span class="sd">                        fragment search performance.</span>
-<span class="sd">    :type profile:      :class:`ost.seq.ProfileHandle`</span>
-
-<span class="sd">    :param psipred_prediction: The psipred prediction for **sequence**. This</span>
-<span class="sd">                               increases the fragment search performance</span>
-<span class="sd">    :type psipred_prediction:  :class:`promod3.loop.PsipredPrediction`</span>
-
-<span class="sd">    :param fragment_handler: You can provide already initialized fragments.</span>
-<span class="sd">                             If you pass this parameter, **profile** and</span>
-<span class="sd">                             **psipred_prediction** get neglected and do</span>
-<span class="sd">                             not influence the fragment search, the</span>
-<span class="sd">                             ones you initialized **fragment_handler** with</span>
-<span class="sd">                             get used instead.</span>
-<span class="sd">    :type fragment_handler:  :class:`promod3.modelling.FraggerHandle`</span>
-
-<span class="sd">    :param scorer:      Scorer doing the backbone scoring. If not provided, a </span>
-<span class="sd">                        default one gets loaded with default objects with</span>
-<span class="sd">                        following keys: clash, reduced, cb_packing, hbond, cbeta, </span>
-<span class="sd">                        torsion and pairwise </span>
-<span class="sd">    :type scorer:       :class:`promod3.scoring.BackboneOverallScorer`</span>
-
-<span class="sd">    :param scorer_env:  The scoring env that relates to **scorer**</span>
-<span class="sd">                        This environment will be changed! </span>
-<span class="sd">    :type scorer_env:   :class:`promod3.scoring.BackboneScoreEnv`</span>
-
-<span class="sd">    :param scoring_weights: Linear weights for different scores. If not provided,</span>
-<span class="sd">                            the output of ScoringWeights.GetWeights() is used.</span>
-<span class="sd">                            Please note, that the weights must be consistent</span>
-<span class="sd">                            with the keys of the scores in **scorer**</span>
-<span class="sd">    :type scoring_weights:  :class:`dict`</span>
-
-<span class="sd">    :returns:           A :class:`promod3.loop.LoopCandidates` object containing</span>
-<span class="sd">                        **num_trajectories** elements for further processing</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-
-    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">9</span><span class="p">:</span>
-        <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;Seq too short for Denovo sampling (min length 9)&quot;</span><span class="p">)</span>
-
-    <span class="c1"># check whether profile / psipred_prediction are consistent if present</span>
-    <span class="k">if</span> <span class="n">profile</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
-      <span class="k">if</span> <span class="n">profile</span><span class="o">.</span><span class="n">sequence</span> <span class="o">!=</span> <span class="n">sequence</span><span class="p">:</span>
-          <span class="n">err</span> <span class="o">=</span> <span class="s2">&quot;Sequence of profile must match input sequence!&quot;</span>
-          <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
-
-    <span class="k">if</span> <span class="n">psipred_prediction</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
-        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">psipred_prediction</span><span class="p">):</span>
-            <span class="n">err</span> <span class="o">=</span> <span class="s2">&quot;psipred_prediction must be consistent with the input sequence!&quot;</span>
-            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
-
-    <span class="k">if</span> <span class="n">scorer</span> <span class="o">!=</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">scorer_env</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
-      <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;Must provide an environment when you provide a scorer!&quot;</span><span class="p">)</span>
-
-    <span class="k">if</span> <span class="n">fragment_handler</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
-        <span class="c1"># we first have to build our own handler</span>
-        <span class="n">fragment_handler</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">FraggerHandle</span><span class="p">(</span><span class="n">sequence</span><span class="p">,</span> 
-                                                   <span class="n">profile</span> <span class="o">=</span> <span class="n">profile</span><span class="p">,</span> 
-                                                   <span class="n">psipred_pred</span> <span class="o">=</span> <span class="n">psipred_prediction</span><span class="p">)</span>
-    <span class="n">fragger_list</span> <span class="o">=</span> <span class="n">fragment_handler</span><span class="o">.</span><span class="n">GetList</span><span class="p">()</span>
-
-    <span class="k">if</span> <span class="n">scorer</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
-        <span class="c1"># Lets setup a scorer with empty environment</span>
-        <span class="n">scorer</span> <span class="o">=</span> <span class="n">scoring</span><span class="o">.</span><span class="n">BackboneOverallScorer</span><span class="p">()</span>
-        <span class="n">scorer_env</span> <span class="o">=</span> <span class="n">scoring</span><span class="o">.</span><span class="n">BackboneScoreEnv</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span>
-        <span class="n">scorer</span><span class="p">[</span><span class="s2">&quot;clash&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">scoring</span><span class="o">.</span><span class="n">ClashScorer</span><span class="p">()</span>
-        <span class="n">scorer</span><span class="p">[</span><span class="s2">&quot;reduced&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">scoring</span><span class="o">.</span><span class="n">LoadReducedScorer</span><span class="p">()</span>
-        <span class="n">scorer</span><span class="p">[</span><span class="s2">&quot;cb_packing&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">scoring</span><span class="o">.</span><span class="n">LoadCBPackingScorer</span><span class="p">()</span>
-        <span class="n">scorer</span><span class="p">[</span><span class="s2">&quot;hbond&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">scoring</span><span class="o">.</span><span class="n">LoadHBondScorer</span><span class="p">()</span>
-        <span class="n">scorer</span><span class="p">[</span><span class="s2">&quot;cbeta&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">scoring</span><span class="o">.</span><span class="n">LoadCBetaScorer</span><span class="p">()</span>
-        <span class="n">scorer</span><span class="p">[</span><span class="s2">&quot;torsion&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">scoring</span><span class="o">.</span><span class="n">LoadTorsionScorer</span><span class="p">()</span>
-        <span class="n">scorer</span><span class="p">[</span><span class="s2">&quot;pairwise&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">scoring</span><span class="o">.</span><span class="n">PairwiseScorer</span><span class="p">()</span>
-        <span class="n">scorer</span><span class="o">.</span><span class="n">AttachEnvironment</span><span class="p">(</span><span class="n">scorer_env</span><span class="p">)</span>
-
-    <span class="k">if</span> <span class="n">scoring_weights</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
-        <span class="n">scoring_weights</span> <span class="o">=</span> <span class="n">ScoringWeights</span><span class="o">.</span><span class="n">GetWeights</span><span class="p">()</span>
-
-    <span class="c1"># the number of 109 is roughly the number of times we have to apply</span>
-    <span class="c1"># a factor of 0.9 to 100 until it reaches a value of 0.001</span>
-    <span class="n">start_temperature</span> <span class="o">=</span> <span class="mi">100</span>
-    <span class="n">cooling_factor</span> <span class="o">=</span> <span class="mf">0.9</span>
-    <span class="n">sampling_steps</span> <span class="o">=</span> <span class="n">avg_sampling_per_position</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">fragger_list</span><span class="p">)</span>
-    <span class="n">cooling_interval</span> <span class="o">=</span> <span class="n">sampling_steps</span> <span class="o">/</span> <span class="mi">109</span>
-
-    <span class="n">mc_sampler</span> <span class="o">=</span> <span class="n">FragmentSampler</span><span class="p">(</span><span class="n">sequence</span><span class="p">,</span> <span class="n">fragger_list</span><span class="p">,</span> 
-                                 <span class="n">init_fragments</span> <span class="o">=</span> <span class="mi">5</span><span class="p">)</span>
-    <span class="n">mc_closer</span> <span class="o">=</span> <span class="n">DeNovoCloser</span><span class="p">()</span>
-    <span class="n">mc_scorer</span> <span class="o">=</span> <span class="n">LinearScorer</span><span class="p">(</span><span class="n">scorer</span><span class="p">,</span> <span class="n">scorer_env</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">sequence</span><span class="p">),</span> <span class="mi">0</span><span class="p">,</span> 
-                             <span class="n">scoring_weights</span><span class="p">)</span>
-    <span class="n">mc_cooler</span> <span class="o">=</span> <span class="n">ExponentialCooler</span><span class="p">(</span><span class="n">start_temperature</span><span class="p">,</span>
-                                  <span class="n">cooling_interval</span><span class="p">,</span>
-                                  <span class="n">cooling_factor</span><span class="p">)</span>
-
-    <span class="n">candidates</span> <span class="o">=</span> <span class="n">LoopCandidates</span><span class="o">.</span><span class="n">FillFromMonteCarloSampler</span><span class="p">(</span><span class="n">sequence</span><span class="p">,</span>
-                                                          <span class="n">num_trajectories</span><span class="p">,</span>
-                                                          <span class="n">sampling_steps</span><span class="p">,</span>
-                                                          <span class="n">mc_sampler</span><span class="p">,</span>
-                                                          <span class="n">mc_closer</span><span class="p">,</span>
-                                                          <span class="n">mc_scorer</span><span class="p">,</span>
-                                                          <span class="n">mc_cooler</span><span class="p">)</span>  
-    <span class="k">return</span> <span class="n">candidates</span></div>
-</pre></div>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
-        <div class="sphinxsidebarwrapper"><div class="relations">
-<h3>Related Topics</h3>
-<ul>
-  <li><a href="../../../index.html">Documentation overview</a><ul>
-  <li><a href="../../index.html">Module code</a><ul>
-  <li><a href="../../promod3.html">promod3</a><ul>
-  </ul></li>
-  </ul></li>
-  </ul></li>
-</ul>
-</div>
-<div id="searchbox" style="display: none" role="search">
-  <h3>Quick search</h3>
-    <form class="search" action="../../../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
-      
-      |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
-      
-    </div>
-
-    
-
-    
-  </body>
-</html>
\ No newline at end of file
diff --git a/doc/html/_modules/promod3/modelling/_fragger_handle.html b/doc/html/_modules/promod3/modelling/_fragger_handle.html
deleted file mode 100644
index 8b753363..00000000
--- a/doc/html/_modules/promod3/modelling/_fragger_handle.html
+++ /dev/null
@@ -1,455 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>promod3.modelling._fragger_handle &mdash; ProMod3 1.3.0 documentation</title>
-    
-    <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
-    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../../../',
-        VERSION:     '1.3.0',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../../../_static/jquery.js"></script>
-    <script type="text/javascript" src="../../../_static/underscore.js"></script>
-    <script type="text/javascript" src="../../../_static/doctools.js"></script>
-    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../../../index.html" />
-    <link rel="up" title="promod3" href="../../promod3.html" />
-   
-  <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
-  
-  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
-
-  </head>
-  <body role="document">
-  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body" role="main">
-            
-  <h1>Source code for promod3.modelling._fragger_handle</h1><div class="highlight"><pre>
-<span></span><span class="c1"># Copyright (c) 2013-2018, SIB - Swiss Institute of Bioinformatics and </span>
-<span class="c1">#                          Biozentrum - University of Basel</span>
-<span class="c1"># </span>
-<span class="c1"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<span class="c1"># you may not use this file except in compliance with the License.</span>
-<span class="c1"># You may obtain a copy of the License at</span>
-<span class="c1"># </span>
-<span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
-<span class="c1"># </span>
-<span class="c1"># Unless required by applicable law or agreed to in writing, software</span>
-<span class="c1"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<span class="c1"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<span class="c1"># See the License for the specific language governing permissions and</span>
-<span class="c1"># limitations under the License.</span>
-
-
-<span class="sd">&#39;&#39;&#39;Python functionality to generate fraggers.&#39;&#39;&#39;</span>
-
-<span class="kn">from</span> <span class="nn">promod3.loop</span> <span class="kn">import</span> <span class="o">*</span>
-<span class="kn">from</span> <span class="nn">ost.conop</span> <span class="kn">import</span> <span class="n">OneLetterCodeToResidueName</span>
-<span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">seq</span>
-
-<span class="k">def</span> <span class="nf">_GetSizeIdx</span><span class="p">(</span><span class="n">frag_size</span><span class="p">):</span>
-    <span class="k">if</span> <span class="n">frag_size</span> <span class="o">&lt;=</span> <span class="mi">5</span><span class="p">:</span>
-        <span class="k">return</span> <span class="mi">0</span>
-    <span class="k">if</span> <span class="n">frag_size</span> <span class="o">&lt;=</span> <span class="mi">7</span><span class="p">:</span>
-        <span class="k">return</span> <span class="mi">1</span>
-    <span class="k">if</span> <span class="n">frag_size</span> <span class="o">&lt;=</span> <span class="mi">9</span><span class="p">:</span>
-        <span class="k">return</span> <span class="mi">2</span>
-    <span class="k">if</span> <span class="n">frag_size</span> <span class="o">&lt;=</span> <span class="mi">11</span><span class="p">:</span>
-        <span class="k">return</span> <span class="mi">3</span>
-    <span class="k">return</span> <span class="mi">4</span>
-
-<span class="k">def</span> <span class="nf">_GetWeights</span><span class="p">(</span><span class="n">weight_group</span><span class="p">,</span> <span class="n">frag_size</span><span class="p">):</span>
-
-    <span class="n">size_idx</span> <span class="o">=</span> <span class="n">_GetSizeIdx</span><span class="p">(</span><span class="n">frag_size</span><span class="p">)</span>
-
-    <span class="k">if</span> <span class="n">weight_group</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
-        <span class="c1"># group one, it&#39;s only sequence similarity...</span>
-        <span class="k">return</span> <span class="p">[</span><span class="mf">1.0</span><span class="p">]</span>
-
-    <span class="k">elif</span> <span class="n">weight_group</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
-        <span class="c1"># group two: [sequence_profile_weight, structure_profile_weight]</span>
-        <span class="k">if</span> <span class="n">size_idx</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
-            <span class="k">return</span> <span class="p">[</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.404</span><span class="p">]</span>
-        <span class="k">elif</span> <span class="n">size_idx</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
-            <span class="k">return</span> <span class="p">[</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.112</span><span class="p">]</span>
-        <span class="k">elif</span> <span class="n">size_idx</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
-            <span class="k">return</span> <span class="p">[</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="o">-</span><span class="mf">2.424</span><span class="p">]</span>
-        <span class="k">elif</span> <span class="n">size_idx</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
-            <span class="k">return</span> <span class="p">[</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="o">-</span><span class="mf">5.131</span><span class="p">]</span>
-        <span class="k">elif</span> <span class="n">size_idx</span> <span class="o">==</span> <span class="mi">4</span><span class="p">:</span>
-            <span class="k">return</span> <span class="p">[</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="o">-</span><span class="mf">6.703</span><span class="p">]</span> 
-
-    <span class="k">elif</span> <span class="n">weight_group</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
-        <span class="c1"># group_three: [ss_agreement_weight, torsion_weight, seqsim_weight] </span>
-        <span class="k">if</span> <span class="n">size_idx</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
-            <span class="k">return</span> <span class="p">[</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">71.467</span><span class="p">,</span> <span class="mf">2.276</span><span class="p">]</span>
-        <span class="k">elif</span> <span class="n">size_idx</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
-            <span class="k">return</span> <span class="p">[</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">26.616</span><span class="p">,</span> <span class="mf">4.086</span><span class="p">]</span>
-        <span class="k">elif</span> <span class="n">size_idx</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
-            <span class="k">return</span> <span class="p">[</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">13.802</span><span class="p">,</span> <span class="mf">4.601</span><span class="p">]</span>
-        <span class="k">elif</span> <span class="n">size_idx</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
-            <span class="k">return</span> <span class="p">[</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">11.376</span><span class="p">,</span> <span class="mf">5.601</span><span class="p">]</span>
-        <span class="k">elif</span> <span class="n">size_idx</span> <span class="o">==</span> <span class="mi">4</span><span class="p">:</span>
-            <span class="k">return</span> <span class="p">[</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">5.784</span><span class="p">,</span> <span class="mf">4.618</span><span class="p">]</span>
-
-    <span class="k">elif</span> <span class="n">weight_group</span> <span class="o">==</span> <span class="mi">4</span><span class="p">:</span>
-        <span class="c1"># group_four: [ss_agreement_weight, torsion_weight, </span>
-        <span class="c1">#              sequence_profile_weight, structure_profile_weight]</span>
-        <span class="k">if</span> <span class="n">size_idx</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
-            <span class="k">return</span> <span class="p">[</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">17.219</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.930</span><span class="p">,</span> <span class="o">-</span><span class="mf">3.328</span><span class="p">]</span>
-        <span class="k">elif</span> <span class="n">size_idx</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
-            <span class="k">return</span> <span class="p">[</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">19.561</span><span class="p">,</span> <span class="o">-</span><span class="mf">2.411</span><span class="p">,</span> <span class="o">-</span><span class="mf">6.060</span><span class="p">]</span>
-        <span class="k">elif</span> <span class="n">size_idx</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
-            <span class="k">return</span> <span class="p">[</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">27.523</span><span class="p">,</span> <span class="o">-</span><span class="mf">3.819</span><span class="p">,</span> <span class="o">-</span><span class="mf">8.318</span><span class="p">]</span>
-        <span class="k">elif</span> <span class="n">size_idx</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
-            <span class="k">return</span> <span class="p">[</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">17.009</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.805</span><span class="p">,</span> <span class="o">-</span><span class="mf">7.055</span><span class="p">]</span> 
-        <span class="k">elif</span> <span class="n">size_idx</span> <span class="o">==</span> <span class="mi">4</span><span class="p">:</span>
-            <span class="k">return</span> <span class="p">[</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">6.526</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.798</span><span class="p">,</span> <span class="o">-</span><span class="mf">11.290</span><span class="p">]</span> 
-        
-
-<span class="k">def</span> <span class="nf">_SetupFragger_one</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">,</span> <span class="n">subst_mat</span><span class="p">):</span>
-    <span class="n">frag_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">)</span>
-    <span class="n">weights</span> <span class="o">=</span> <span class="n">_GetWeights</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">frag_size</span><span class="p">)</span>
-    <span class="n">fragger</span> <span class="o">=</span> <span class="n">Fragger</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">)</span>
-    <span class="n">fragger</span><span class="o">.</span><span class="n">AddSeqSimParameters</span><span class="p">(</span><span class="n">weights</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">subst_mat</span><span class="p">)</span>
-    <span class="k">return</span> <span class="n">fragger</span>
-
-
-<span class="k">def</span> <span class="nf">_SetupFragger_two</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">,</span> <span class="n">frag_profile</span><span class="p">):</span>
-    <span class="n">frag_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">)</span>
-    <span class="n">weights</span> <span class="o">=</span> <span class="n">_GetWeights</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">frag_size</span><span class="p">)</span>
-    <span class="n">fragger</span> <span class="o">=</span> <span class="n">Fragger</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">)</span>
-    <span class="n">fragger</span><span class="o">.</span><span class="n">AddSequenceProfileParameters</span><span class="p">(</span><span class="n">weights</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">frag_profile</span><span class="p">)</span>
-    <span class="n">fragger</span><span class="o">.</span><span class="n">AddStructureProfileParameters</span><span class="p">(</span><span class="n">weights</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">frag_profile</span><span class="p">)</span>
-    <span class="k">return</span> <span class="n">fragger</span>
-
-
-<span class="k">def</span> <span class="nf">_SetupFragger_three</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">,</span> <span class="n">frag_psipred_pred</span><span class="p">,</span>
-                        <span class="n">frag_t_samplers</span><span class="p">,</span>
-                        <span class="n">aa_before</span><span class="p">,</span> <span class="n">aa_after</span><span class="p">,</span>
-                        <span class="n">subst_matrix</span><span class="p">):</span>
-    <span class="n">frag_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">)</span>
-    <span class="n">weights</span> <span class="o">=</span> <span class="n">_GetWeights</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="n">frag_size</span><span class="p">)</span>
-    <span class="n">fragger</span> <span class="o">=</span> <span class="n">Fragger</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">)</span>
-    <span class="n">fragger</span><span class="o">.</span><span class="n">AddSSAgreeParameters</span><span class="p">(</span><span class="n">weights</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">frag_psipred_pred</span><span class="p">)</span>
-    <span class="n">fragger</span><span class="o">.</span><span class="n">AddTorsionProbabilityParameters</span><span class="p">(</span><span class="n">weights</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">frag_t_samplers</span><span class="p">,</span>
-                                            <span class="n">aa_before</span><span class="p">,</span> <span class="n">aa_after</span><span class="p">)</span>
-    <span class="n">fragger</span><span class="o">.</span><span class="n">AddSeqSimParameters</span><span class="p">(</span><span class="n">weights</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">subst_matrix</span><span class="p">)</span>
-    <span class="k">return</span> <span class="n">fragger</span>
-
-
-<span class="k">def</span> <span class="nf">_SetupFragger_four</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">,</span> <span class="n">frag_profile</span><span class="p">,</span> 
-                       <span class="n">frag_psipred_pred</span><span class="p">,</span>
-                       <span class="n">frag_t_samplers</span><span class="p">,</span>
-                       <span class="n">aa_before</span><span class="p">,</span> <span class="n">aa_after</span><span class="p">):</span>
-    <span class="n">frag_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">)</span>
-    <span class="n">weights</span> <span class="o">=</span> <span class="n">_GetWeights</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">frag_size</span><span class="p">)</span>
-    <span class="n">fragger</span> <span class="o">=</span> <span class="n">Fragger</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">)</span>
-    <span class="n">fragger</span><span class="o">.</span><span class="n">AddSSAgreeParameters</span><span class="p">(</span><span class="n">weights</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">frag_psipred_pred</span><span class="p">)</span>
-    <span class="n">fragger</span><span class="o">.</span><span class="n">AddTorsionProbabilityParameters</span><span class="p">(</span><span class="n">weights</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">frag_t_samplers</span><span class="p">,</span>
-                                            <span class="n">aa_before</span><span class="p">,</span> <span class="n">aa_after</span><span class="p">)</span>
-    <span class="n">fragger</span><span class="o">.</span><span class="n">AddSequenceProfileParameters</span><span class="p">(</span><span class="n">weights</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">frag_profile</span><span class="p">)</span>
-    <span class="n">fragger</span><span class="o">.</span><span class="n">AddStructureProfileParameters</span><span class="p">(</span><span class="n">weights</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">frag_profile</span><span class="p">)</span>
-    <span class="k">return</span> <span class="n">fragger</span>
-                       
-
-<div class="viewcode-block" id="FraggerHandle"><a class="viewcode-back" href="../../../modelling/algorithms.html#promod3.modelling.FraggerHandle">[docs]</a><span class="k">class</span> <span class="nc">FraggerHandle</span><span class="p">:</span>
-    <span class="sd">&#39;&#39;&#39;Handler for :class:`~promod3.loop.Fragger` objects linked to a </span>
-<span class="sd">    specific chain.</span>
-
-<span class="sd">    Tries to get the most accurate fragments given your input.</span>
-<span class="sd">    You can only provide a SEQRES, the returned fragments are</span>
-<span class="sd">    then searched by using sequence similarity as the only target value.</span>
-<span class="sd">    You can massively increase the accuracy of the found fragments by</span>
-<span class="sd">    providing a secondary structure prediction and / or sequence profile.</span>
-
-<span class="sd">    Following features influence the fragment search given your input:</span>
-
-<span class="sd">    * **sequence**: </span>
-
-<span class="sd">      * Sequence Similarity with BLOSUM62</span>
-
-<span class="sd">    * **sequence**, **psipred_pred**:</span>
-
-<span class="sd">      * Sequence Similarity with BLOSUM62</span>
-<span class="sd">      * Secondary Structure Agreement</span>
-<span class="sd">      * Secondary Structure Dependent Torsion Probabilities</span>
-
-<span class="sd">    * **sequence**, **profile**:</span>
-
-<span class="sd">      * Sequence Profile Score</span>
-<span class="sd">      * Structure Profile Score</span>
-
-<span class="sd">    * **sequence**, **psipred_pred**, **profile**:</span>
-
-<span class="sd">      * Secondary Structure Agreement</span>
-<span class="sd">      * Secondary Structure Dependent Torsion Probabilities</span>
-<span class="sd">      * Sequence Profile Score</span>
-<span class="sd">      * Structure Profile Score</span>
-
-<span class="sd">    The FraggerHandle internally uses the :class:`promod3.loop.FraggerMap` for caching. You</span>
-<span class="sd">    can therefore request fragments for a certain position several times and the</span>
-<span class="sd">    search is performed only once. This also allows to save the FraggerHandle to</span>
-<span class="sd">    disk. When loading the FraggerHandle again, you need to provide all parameters</span>
-<span class="sd">    again. These parameters must be exactly the same than the ones you used when</span>
-<span class="sd">    initially constructing the FraggerHandle, especially the structure database.</span>
-<span class="sd">    Weird things are happening otherwise.</span>
-
-<span class="sd">    :param sequence: SEQRES for this chain</span>
-<span class="sd">    :type sequence: :class:`str`/:class:`ost.seq.SequenceHandle`</span>
-<span class="sd">    :param profile: Sequence profile for this chain.</span>
-<span class="sd">    :type profile:  :class:`ost.seq.ProfileHandle`</span>
-<span class="sd">    :param psipred_pred: Psipred prediction for this chain.</span>
-<span class="sd">    :type psipred_pred:  :class:`promod3.loop.PsipredPrediction`</span>
-<span class="sd">    :param fragment_length: Length (num. residues) of fragments to be extracted.</span>
-<span class="sd">    :type fragment_length:  :class:`int`</span>
-<span class="sd">    :param fragments_per_position: Number of fragments to be extracted at each</span>
-<span class="sd">                                   position.</span>
-<span class="sd">    :type fragments_per_position:  :class:`int`</span>
-<span class="sd">    :param rmsd_thresh: To guarantee structural diversity, no pair of fragments</span>
-<span class="sd">                        at a given position will have RMSD below `rmsd_thresh`.</span>
-<span class="sd">    :type rmsd_thresh:  :class:`float`</span>
-<span class="sd">    :param structure_db: Source of structural data</span>
-<span class="sd">    :type structure_db:  :class:`promod3.loop.StructureDB`</span>
-<span class="sd">    :param torsion_sampler_coil: Torsion sampler for coil residues.</span>
-<span class="sd">    :type torsion_sampler_coil:  :class:`promod3.loop.TorsionSampler`</span>
-<span class="sd">    :param torsion_sampler_helix: Torsion sampler for helical residues.</span>
-<span class="sd">    :type torsion_sampler_helix:  :class:`promod3.loop.TorsionSampler`</span>
-<span class="sd">    :param torsion_sampler_extended: Torsion sampler for extended residues.</span>
-<span class="sd">    :type torsion_sampler_extended:  :class:`promod3.loop.TorsionSampler`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
-                 <span class="n">sequence</span><span class="p">,</span> 
-                 <span class="n">profile</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span> 
-                 <span class="n">psipred_pred</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span>
-                 <span class="n">fragment_length</span> <span class="o">=</span> <span class="mi">9</span><span class="p">,</span>
-                 <span class="n">fragments_per_position</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span>
-                 <span class="n">rmsd_thresh</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">,</span> 
-                 <span class="n">structure_db</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span>
-                 <span class="n">torsion_sampler_coil</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span>
-                 <span class="n">torsion_sampler_helix</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span>
-                 <span class="n">torsion_sampler_extended</span> <span class="o">=</span> <span class="bp">None</span><span class="p">):</span>
-        <span class="c1"># check</span>
-        <span class="k">if</span> <span class="n">profile</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
-            <span class="c1"># can either be a SequenceHandle or simple string...</span>
-            <span class="k">try</span><span class="p">:</span>
-                <span class="k">if</span> <span class="n">sequence</span><span class="o">.</span><span class="n">GetString</span><span class="p">()</span> <span class="o">!=</span> <span class="n">profile</span><span class="o">.</span><span class="n">sequence</span><span class="p">:</span>
-                    <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Sequence must be consistent with profile!&quot;</span><span class="p">)</span>
-            <span class="k">except</span><span class="p">:</span>
-                <span class="k">if</span> <span class="n">sequence</span> <span class="o">!=</span> <span class="n">profile</span><span class="o">.</span><span class="n">sequence</span><span class="p">:</span>
-                    <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Sequence must be consistent with profile!&quot;</span><span class="p">)</span>
-
-        <span class="k">if</span> <span class="n">psipred_pred</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
-            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">psipred_pred</span><span class="p">):</span>
-                <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Sequence must be consistent with PsipredPred!&quot;</span><span class="p">)</span>
-        
-        <span class="c1"># keep all objects</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span> <span class="o">=</span> <span class="n">sequence</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">profile</span> <span class="o">=</span> <span class="n">profile</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">psipred_pred</span> <span class="o">=</span> <span class="n">psipred_pred</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">fragment_length</span> <span class="o">=</span> <span class="n">fragment_length</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">fragments_per_position</span> <span class="o">=</span> <span class="n">fragments_per_position</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">rmsd_thresh</span> <span class="o">=</span> <span class="n">rmsd_thresh</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">subst_mat</span> <span class="o">=</span> <span class="n">seq</span><span class="o">.</span><span class="n">alg</span><span class="o">.</span><span class="n">BLOSUM62</span>
-
-        <span class="k">if</span> <span class="n">structure_db</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">structure_db</span> <span class="o">=</span> <span class="n">LoadStructureDB</span><span class="p">()</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">structure_db</span> <span class="o">=</span> <span class="n">structure_db</span>
-
-        <span class="c1"># the torsion samplers are only required if we have a psipred prediction</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">samplers</span> <span class="o">=</span> <span class="bp">None</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">torsion_sampler_coil</span> <span class="o">=</span> <span class="bp">None</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">torsion_sampler_helix</span> <span class="o">=</span> <span class="bp">None</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">torsion_sampler_extended</span> <span class="o">=</span> <span class="bp">None</span>
-        <span class="k">if</span> <span class="n">psipred_pred</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
-
-            <span class="k">if</span> <span class="n">torsion_sampler_coil</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
-                <span class="bp">self</span><span class="o">.</span><span class="n">torsion_sampler_coil</span> <span class="o">=</span> <span class="n">LoadTorsionSamplerCoil</span><span class="p">()</span>
-            <span class="k">else</span><span class="p">:</span>
-                <span class="bp">self</span><span class="o">.</span><span class="n">torsion_sampler_coil</span> <span class="o">=</span> <span class="n">torsion_sampler_coil</span>
-
-            <span class="k">if</span> <span class="n">torsion_sampler_helix</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
-                <span class="bp">self</span><span class="o">.</span><span class="n">torsion_sampler_helix</span> <span class="o">=</span> <span class="n">LoadTorsionSamplerHelical</span><span class="p">()</span>
-            <span class="k">else</span><span class="p">:</span>
-                <span class="bp">self</span><span class="o">.</span><span class="n">torsion_sampler_helix</span> <span class="o">=</span> <span class="n">torsion_sampler_helix</span>
-
-            <span class="k">if</span> <span class="n">torsion_sampler_extended</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
-                <span class="bp">self</span><span class="o">.</span><span class="n">torsion_sampler_extended</span> <span class="o">=</span> <span class="n">LoadTorsionSamplerExtended</span><span class="p">()</span>
-            <span class="k">else</span><span class="p">:</span>
-                <span class="bp">self</span><span class="o">.</span><span class="n">torsion_sampler_extended</span> <span class="o">=</span> <span class="n">torsion_sampler_extended</span>
-
-            <span class="bp">self</span><span class="o">.</span><span class="n">samplers</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">torsion_sampler_coil</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">psipred_pred</span><span class="p">)</span>
-            <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">psipred_pred</span><span class="p">)):</span>
-                <span class="k">if</span> <span class="n">psipred_pred</span><span class="o">.</span><span class="n">GetPrediction</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;H&#39;</span> \
-                   <span class="ow">and</span> <span class="n">psipred_pred</span><span class="o">.</span><span class="n">GetConfidence</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="mi">6</span><span class="p">:</span>
-                    <span class="bp">self</span><span class="o">.</span><span class="n">samplers</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">torsion_sampler_helix</span>  
-                <span class="k">if</span> <span class="n">psipred_pred</span><span class="o">.</span><span class="n">GetPrediction</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;E&#39;</span> \
-                   <span class="ow">and</span> <span class="n">psipred_pred</span><span class="o">.</span><span class="n">GetConfidence</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="mi">6</span><span class="p">:</span>
-                    <span class="bp">self</span><span class="o">.</span><span class="n">samplers</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">torsion_sampler_extended</span>
-        <span class="c1"># prepare map</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">fragger_map</span> <span class="o">=</span> <span class="n">FraggerMap</span><span class="p">()</span>
-
-<div class="viewcode-block" id="FraggerHandle.Get"><a class="viewcode-back" href="../../../modelling/algorithms.html#promod3.modelling.FraggerHandle.Get">[docs]</a>    <span class="k">def</span> <span class="nf">Get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">frag_pos</span><span class="p">):</span>
-        <span class="sd">&#39;&#39;&#39;Get fragger for sequence at index frag_pos..frag_pos+frag_length-1.</span>
-
-<span class="sd">        :param frag_pos: Start-index (note that sequence-indexing starts at 0)</span>
-<span class="sd">        :type frag_pos:  :class`int`</span>
-<span class="sd">        :return: A :class:`Fragger` object.</span>
-<span class="sd">        :raises: :exc:`~exceptions.ValueError` if index out-of-bounds.</span>
-<span class="sd">        &#39;&#39;&#39;</span>
-        <span class="c1"># this is for ranges (i.e. last touched index is end_pos-1)</span>
-        <span class="n">end_pos</span> <span class="o">=</span> <span class="n">frag_pos</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">fragment_length</span>
-        <span class="c1"># check</span>
-        <span class="k">if</span> <span class="n">frag_pos</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">end_pos</span> <span class="o">&gt;</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">):</span>
-            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid fragment position &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">frag_pos</span><span class="p">))</span>
-        <span class="c1"># get</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">fragger_map</span><span class="o">.</span><span class="n">Contains</span><span class="p">(</span><span class="n">frag_pos</span><span class="p">):</span>
-
-            <span class="n">fragger</span> <span class="o">=</span> <span class="bp">None</span>
-            <span class="n">frag_sequence</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">[</span><span class="n">frag_pos</span><span class="p">:</span><span class="n">end_pos</span><span class="p">]</span>
-
-            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">profile</span> <span class="o">!=</span> <span class="bp">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">psipred_pred</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
-                <span class="n">frag_profile</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">profile</span><span class="o">.</span><span class="n">Extract</span><span class="p">(</span><span class="n">frag_pos</span><span class="p">,</span><span class="n">end_pos</span><span class="p">)</span>
-                <span class="n">fragger</span> <span class="o">=</span> <span class="n">_SetupFragger_two</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">,</span> <span class="n">frag_profile</span><span class="p">)</span>
-
-            <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">profile</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">psipred_pred</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
-                <span class="n">frag_psipred_pred</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">psipred_pred</span><span class="o">.</span><span class="n">Extract</span><span class="p">(</span><span class="n">frag_pos</span><span class="p">,</span> <span class="n">end_pos</span><span class="p">)</span>
-                <span class="n">frag_t_samplers</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">samplers</span><span class="p">[</span><span class="n">frag_pos</span><span class="p">:</span><span class="n">end_pos</span><span class="p">]</span>
-                <span class="n">fragger</span> <span class="o">=</span> <span class="n">_SetupFragger_three</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">,</span> <span class="n">frag_psipred_pred</span><span class="p">,</span>
-                                              <span class="n">frag_t_samplers</span><span class="p">,</span>
-                                              <span class="bp">self</span><span class="o">.</span><span class="n">_GetAABefore</span><span class="p">(</span><span class="n">frag_pos</span><span class="p">),</span>
-                                              <span class="bp">self</span><span class="o">.</span><span class="n">_GetAAAfter</span><span class="p">(</span><span class="n">end_pos</span> <span class="o">-</span> <span class="mi">1</span><span class="p">),</span>
-                                              <span class="bp">self</span><span class="o">.</span><span class="n">subst_mat</span><span class="p">)</span>
-
-            <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">profile</span> <span class="o">!=</span> <span class="bp">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">psipred_pred</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
-                <span class="n">frag_profile</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">profile</span><span class="o">.</span><span class="n">Extract</span><span class="p">(</span><span class="n">frag_pos</span><span class="p">,</span><span class="n">end_pos</span><span class="p">)</span>
-                <span class="n">frag_psipred_pred</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">psipred_pred</span><span class="o">.</span><span class="n">Extract</span><span class="p">(</span><span class="n">frag_pos</span><span class="p">,</span> <span class="n">end_pos</span><span class="p">)</span>
-                <span class="n">frag_t_samplers</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">samplers</span><span class="p">[</span><span class="n">frag_pos</span><span class="p">:</span><span class="n">end_pos</span><span class="p">]</span>
-                <span class="n">fragger</span> <span class="o">=</span> <span class="n">_SetupFragger_four</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">,</span> <span class="n">frag_profile</span><span class="p">,</span> 
-                                             <span class="n">frag_psipred_pred</span><span class="p">,</span>
-                                             <span class="n">frag_t_samplers</span><span class="p">,</span>
-                                             <span class="bp">self</span><span class="o">.</span><span class="n">_GetAABefore</span><span class="p">(</span><span class="n">frag_pos</span><span class="p">),</span>
-                                             <span class="bp">self</span><span class="o">.</span><span class="n">_GetAAAfter</span><span class="p">(</span><span class="n">end_pos</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
-
-            <span class="k">else</span><span class="p">:</span>
-                <span class="n">fragger</span> <span class="o">=</span> <span class="n">_SetupFragger_one</span><span class="p">(</span><span class="n">frag_sequence</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">subst_mat</span><span class="p">)</span>
-
-            <span class="n">fragger</span><span class="o">.</span><span class="n">Fill</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">structure_db</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">rmsd_thresh</span><span class="p">,</span>
-                         <span class="bp">self</span><span class="o">.</span><span class="n">fragments_per_position</span><span class="p">)</span>
-
-            <span class="c1"># keep cached</span>
-            <span class="bp">self</span><span class="o">.</span><span class="n">fragger_map</span><span class="p">[</span><span class="n">frag_pos</span><span class="p">]</span> <span class="o">=</span> <span class="n">fragger</span>
-
-        <span class="c1"># get it back</span>
-        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">fragger_map</span><span class="p">[</span><span class="n">frag_pos</span><span class="p">]</span></div>
-
-<div class="viewcode-block" id="FraggerHandle.GetList"><a class="viewcode-back" href="../../../modelling/algorithms.html#promod3.modelling.FraggerHandle.GetList">[docs]</a>    <span class="k">def</span> <span class="nf">GetList</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pos_start</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">pos_end</span><span class="o">=-</span><span class="mi">1</span><span class="p">):</span>
-        <span class="sd">&#39;&#39;&#39;Get List of fraggers covering sequence indices pos_start..pos_end.</span>
-
-<span class="sd">        This will return an empty list if range is smaller than fragment_length.</span>
-
-<span class="sd">        :param pos_start: Start-index (note that sequence-indexing starts at 0)</span>
-<span class="sd">        :type pos_start:  :class`int`</span>
-<span class="sd">        :param pos_end: End-index or -1 if it should go to the sequence-end.</span>
-<span class="sd">        :type pos_end:  :class`int`</span>
-<span class="sd">        :return: A :class:`list` of :class:`Fragger` objects.</span>
-<span class="sd">        :raises: :exc:`~exceptions.ValueError` if indices out-of-bounds.</span>
-<span class="sd">        &#39;&#39;&#39;</span>
-        <span class="k">if</span> <span class="n">pos_end</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
-            <span class="n">pos_end</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
-        <span class="n">fragger_list</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-        <span class="k">for</span> <span class="n">frag_pos</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pos_start</span><span class="p">,</span> <span class="n">pos_end</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">fragment_length</span> <span class="o">+</span> <span class="mi">2</span><span class="p">):</span>
-            <span class="n">fragger_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">Get</span><span class="p">(</span><span class="n">frag_pos</span><span class="p">))</span>
-        <span class="k">return</span> <span class="n">fragger_list</span></div>
-
-<div class="viewcode-block" id="FraggerHandle.SaveCached"><a class="viewcode-back" href="../../../modelling/algorithms.html#promod3.modelling.FraggerHandle.SaveCached">[docs]</a>    <span class="k">def</span> <span class="nf">SaveCached</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
-        <span class="sd">&#39;&#39;&#39;Save cached fraggers.&#39;&#39;&#39;</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">fragger_map</span><span class="o">.</span><span class="n">Save</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span></div>
-
-<div class="viewcode-block" id="FraggerHandle.LoadCached"><a class="viewcode-back" href="../../../modelling/algorithms.html#promod3.modelling.FraggerHandle.LoadCached">[docs]</a>    <span class="k">def</span> <span class="nf">LoadCached</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
-        <span class="sd">&#39;&#39;&#39;Load fragger objects stored with :meth:`SaveCached`.</span>
-<span class="sd">        Note that here we require that the same structure db is set as was</span>
-<span class="sd">        used when `filename` was saved.&#39;&#39;&#39;</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">fragger_map</span> <span class="o">=</span> <span class="n">FraggerMap</span><span class="o">.</span><span class="n">Load</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">structure_db</span><span class="p">)</span></div>
-
-    <span class="k">def</span> <span class="nf">_GetAABefore</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pos</span><span class="p">):</span>
-        <span class="k">if</span> <span class="n">pos</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-            <span class="n">olc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">[</span><span class="n">pos</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="n">olc</span> <span class="o">=</span> <span class="s1">&#39;A&#39;</span>
-        <span class="n">aa_before</span> <span class="o">=</span> <span class="n">OneLetterCodeToResidueName</span><span class="p">(</span><span class="n">olc</span><span class="p">)</span>
-        <span class="k">return</span> <span class="n">aa_before</span>
-
-    <span class="k">def</span> <span class="nf">_GetAAAfter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pos</span><span class="p">):</span>
-        <span class="k">if</span> <span class="n">pos</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
-            <span class="n">olc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">[</span><span class="n">pos</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="n">olc</span> <span class="o">=</span> <span class="s1">&#39;A&#39;</span>
-        <span class="n">aa_after</span> <span class="o">=</span> <span class="n">OneLetterCodeToResidueName</span><span class="p">(</span><span class="n">olc</span><span class="p">)</span>
-        <span class="k">return</span> <span class="n">aa_after</span></div>
-
-
-<span class="c1"># these methods will be exported into module</span>
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;FraggerHandle&#39;</span><span class="p">,)</span>
-</pre></div>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
-        <div class="sphinxsidebarwrapper"><div class="relations">
-<h3>Related Topics</h3>
-<ul>
-  <li><a href="../../../index.html">Documentation overview</a><ul>
-  <li><a href="../../index.html">Module code</a><ul>
-  <li><a href="../../promod3.html">promod3</a><ul>
-  </ul></li>
-  </ul></li>
-  </ul></li>
-</ul>
-</div>
-<div id="searchbox" style="display: none" role="search">
-  <h3>Quick search</h3>
-    <form class="search" action="../../../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
-      
-      |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
-      
-    </div>
-
-    
-
-    
-  </body>
-</html>
\ No newline at end of file
diff --git a/doc/html/_modules/promod3/modelling/_molprobity.html b/doc/html/_modules/promod3/modelling/_molprobity.html
deleted file mode 100644
index d06f4a24..00000000
--- a/doc/html/_modules/promod3/modelling/_molprobity.html
+++ /dev/null
@@ -1,221 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>promod3.modelling._molprobity &mdash; ProMod3 1.3.0 documentation</title>
-    
-    <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
-    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../../../',
-        VERSION:     '1.3.0',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../../../_static/jquery.js"></script>
-    <script type="text/javascript" src="../../../_static/underscore.js"></script>
-    <script type="text/javascript" src="../../../_static/doctools.js"></script>
-    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../../../index.html" />
-    <link rel="up" title="promod3" href="../../promod3.html" />
-   
-  <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
-  
-  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
-
-  </head>
-  <body role="document">
-  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body" role="main">
-            
-  <h1>Source code for promod3.modelling._molprobity</h1><div class="highlight"><pre>
-<span></span><span class="c1"># Copyright (c) 2013-2018, SIB - Swiss Institute of Bioinformatics and </span>
-<span class="c1">#                          Biozentrum - University of Basel</span>
-<span class="c1"># </span>
-<span class="c1"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<span class="c1"># you may not use this file except in compliance with the License.</span>
-<span class="c1"># You may obtain a copy of the License at</span>
-<span class="c1"># </span>
-<span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
-<span class="c1"># </span>
-<span class="c1"># Unless required by applicable law or agreed to in writing, software</span>
-<span class="c1"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<span class="c1"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<span class="c1"># See the License for the specific language governing permissions and</span>
-<span class="c1"># limitations under the License.</span>
-
-
-<span class="sd">&#39;&#39;&#39;Binding to external MolProbity tool to get scores.&#39;&#39;&#39;</span>
-
-<span class="kn">import</span> <span class="nn">ost</span>
-<span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">settings</span>
-<span class="kn">import</span> <span class="nn">subprocess</span><span class="o">,</span> <span class="nn">tempfile</span><span class="o">,</span> <span class="nn">os</span>
-
-<div class="viewcode-block" id="RunMolProbity"><a class="viewcode-back" href="../../../modelling/model_checking.html#promod3.modelling.RunMolProbity">[docs]</a><span class="k">def</span> <span class="nf">RunMolProbity</span><span class="p">(</span><span class="n">target_pdb</span><span class="p">,</span> <span class="n">molprobity_bin</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Run ``MolProbity`` from ``Phenix`` on a given PDB file.</span>
-
-<span class="sd">    MolProbity score computation: (formula from molprobity source code)</span>
-
-<span class="sd">    .. code-block:: python</span>
-
-<span class="sd">        clashscore = result[&quot;Clashscore&quot;]</span>
-<span class="sd">        rota_out = result[&quot;Rotamer outliers&quot;]</span>
-<span class="sd">        rama_iffy = 100. - result[&quot;Ramachandran favored&quot;]</span>
-<span class="sd">        mpscore = (( 0.426 * math.log(1 + clashscore) ) +</span>
-<span class="sd">                 ( 0.33 * math.log(1 + max(0, rota_out - 1)) ) +</span>
-<span class="sd">                 ( 0.25 * math.log(1 + max(0, rama_iffy - 2)) )) + 0.5</span>
-<span class="sd">    </span>
-<span class="sd">    :param target_pdb: Path to PDB file on which to do analysis.</span>
-<span class="sd">    :type target_pdb:  :class:`str`</span>
-<span class="sd">    </span>
-<span class="sd">    :param molprobity_bin: Path to ``phenix.molprobity`` executable. If None, it</span>
-<span class="sd">                           searches for it in the ``PATH`` or (if set) in the</span>
-<span class="sd">                           env. variable ``MOLPROBITY_EXECUTABLE``.</span>
-<span class="sd">                           The function was tested with ``Phenix 1.9-1692`` and</span>
-<span class="sd">                           with ``MolProbity 4.2`` which also includes it.</span>
-<span class="sd">    :type molprobity_bin:  :class:`str`</span>
-
-<span class="sd">    :return: Dictionary with scores produced by MolProbity. Entries:</span>
-
-<span class="sd">             - &quot;Ramachandran outliers&quot; (percentage [0,100] as :class:`float`)</span>
-<span class="sd">             - &quot;Ramachandran favored&quot; (percentage [0,100] as :class:`float`)</span>
-<span class="sd">             - &quot;Rotamer outliers&quot; (percentage [0,100] as :class:`float`)</span>
-<span class="sd">             - &quot;C-beta deviations&quot; (:class:`int`)</span>
-<span class="sd">             - &quot;Clashscore&quot; (:class:`float`)</span>
-<span class="sd">             - &quot;MolProbity score&quot; (:class:`float`)</span>
-<span class="sd">             - &quot;RMS(bonds)&quot; (:class:`float`)</span>
-<span class="sd">             - &quot;RMS(angles)&quot; (:class:`float`)</span>
-
-<span class="sd">    :rtype: :class:`dict`</span>
-
-<span class="sd">    :raises: :class:`~ost.settings.FileNotFound` if the &quot;phenix.molprobity&quot;</span>
-<span class="sd">             executable is not found.</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="c1"># HELPER</span>
-    <span class="k">def</span> <span class="nf">GetStringValue</span><span class="p">(</span><span class="n">my_line</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;Parse line formatted as &#39; bla  = X ...&#39; and return &#39;X&#39; as string.&quot;&quot;&quot;</span>
-        <span class="k">return</span> <span class="n">my_line</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;=&#39;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39; &#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
-
-    <span class="c1"># locate molprobity</span>
-    <span class="n">molprobity_exec</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">Locate</span><span class="p">(</span><span class="s2">&quot;phenix.molprobity&quot;</span><span class="p">,</span>
-                                      <span class="n">explicit_file_name</span><span class="o">=</span><span class="n">molprobity_bin</span><span class="p">,</span>
-                                      <span class="n">env_name</span><span class="o">=</span><span class="s1">&#39;MOLPROBITY_EXECUTABLE&#39;</span><span class="p">)</span>
-    <span class="c1"># run molprobity avoiding any file output</span>
-    <span class="n">cmd</span> <span class="o">=</span> <span class="p">[</span><span class="n">molprobity_exec</span><span class="p">,</span> <span class="n">target_pdb</span><span class="p">,</span> <span class="s2">&quot;output.quiet=True&quot;</span><span class="p">,</span> \
-           <span class="s2">&quot;output.coot=False&quot;</span><span class="p">,</span> <span class="s2">&quot;output.probe_dots=False&quot;</span><span class="p">]</span>
-    <span class="n">job</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">)</span>
-    <span class="n">sout</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">job</span><span class="o">.</span><span class="n">communicate</span><span class="p">()</span>
-    <span class="c1"># parse</span>
-    <span class="n">result</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">()</span>
-    <span class="n">first_found</span> <span class="o">=</span> <span class="bp">False</span>
-    <span class="n">lines</span> <span class="o">=</span> <span class="n">sout</span><span class="o">.</span><span class="n">splitlines</span><span class="p">()</span>
-    <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
-        <span class="n">my_line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
-        <span class="k">if</span> <span class="n">my_line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;ramachandran outliers&quot;</span><span class="p">):</span>
-            <span class="n">first_found</span> <span class="o">=</span> <span class="bp">True</span>
-            <span class="n">result</span><span class="p">[</span><span class="s2">&quot;Ramachandran outliers&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">GetStringValue</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
-        <span class="k">elif</span> <span class="n">first_found</span> <span class="ow">and</span> <span class="n">my_line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;favored&quot;</span><span class="p">):</span>
-            <span class="n">result</span><span class="p">[</span><span class="s2">&quot;Ramachandran favored&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">GetStringValue</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
-        <span class="k">elif</span> <span class="n">first_found</span> <span class="ow">and</span> <span class="n">my_line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;rotamer outliers&quot;</span><span class="p">):</span>
-            <span class="n">result</span><span class="p">[</span><span class="s2">&quot;Rotamer outliers&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">GetStringValue</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
-        <span class="k">elif</span> <span class="n">first_found</span> <span class="ow">and</span> <span class="n">my_line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;clashscore&quot;</span><span class="p">):</span>
-            <span class="n">result</span><span class="p">[</span><span class="s2">&quot;Clashscore&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">GetStringValue</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
-        <span class="k">elif</span> <span class="n">first_found</span> <span class="ow">and</span> <span class="n">my_line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;c-beta deviations&quot;</span><span class="p">):</span>
-            <span class="n">result</span><span class="p">[</span><span class="s2">&quot;C-beta deviations&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">GetStringValue</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
-        <span class="k">elif</span> <span class="n">first_found</span> <span class="ow">and</span> <span class="n">my_line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;molprobity score&quot;</span><span class="p">):</span>
-            <span class="n">result</span><span class="p">[</span><span class="s2">&quot;MolProbity score&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">GetStringValue</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
-        <span class="k">elif</span> <span class="n">first_found</span> <span class="ow">and</span> <span class="n">my_line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;rms(bonds)&quot;</span><span class="p">):</span>
-            <span class="n">result</span><span class="p">[</span><span class="s2">&quot;RMS(bonds)&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">GetStringValue</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
-        <span class="k">elif</span> <span class="n">first_found</span> <span class="ow">and</span> <span class="n">my_line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;rms(angles)&quot;</span><span class="p">):</span>
-            <span class="n">result</span><span class="p">[</span><span class="s2">&quot;RMS(angles)&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">GetStringValue</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
-    <span class="k">return</span> <span class="n">result</span></div>
-
-
-<div class="viewcode-block" id="RunMolProbityEntity"><a class="viewcode-back" href="../../../modelling/model_checking.html#promod3.modelling.RunMolProbityEntity">[docs]</a><span class="k">def</span> <span class="nf">RunMolProbityEntity</span><span class="p">(</span><span class="n">ost_ent</span><span class="p">,</span> <span class="n">molprobity_bin</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Run molprobity from phenix on given OST entity.</span>
-<span class="sd">    </span>
-<span class="sd">    See :func:`RunMolProbity` for details.</span>
-
-<span class="sd">    :param ost_ent: OST entity on which to do analysis.</span>
-<span class="sd">    :type ost_ent:  :class:`Entity &lt;ost.mol.EntityHandle&gt;`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="c1"># store as PDB in a tmp. file</span>
-    <span class="n">_</span><span class="p">,</span> <span class="n">tmpfile</span> <span class="o">=</span> <span class="n">tempfile</span><span class="o">.</span><span class="n">mkstemp</span><span class="p">(</span><span class="n">suffix</span><span class="o">=</span><span class="s1">&#39;.pdb&#39;</span><span class="p">)</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">PushVerbosityLevel</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">ost_ent</span><span class="p">,</span> <span class="n">tmpfile</span><span class="p">)</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">PopVerbosityLevel</span><span class="p">()</span>
-    <span class="c1"># get result</span>
-    <span class="n">result</span> <span class="o">=</span> <span class="n">RunMolProbity</span><span class="p">(</span><span class="n">tmpfile</span><span class="p">,</span> <span class="n">molprobity_bin</span><span class="p">)</span>
-    <span class="c1"># clean up</span>
-    <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">tmpfile</span><span class="p">)</span>
-    <span class="k">return</span> <span class="n">result</span></div>
-
-<div class="viewcode-block" id="ReportMolProbityScores"><a class="viewcode-back" href="../../../modelling/model_checking.html#promod3.modelling.ReportMolProbityScores">[docs]</a><span class="k">def</span> <span class="nf">ReportMolProbityScores</span><span class="p">(</span><span class="n">scores</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Print MolProbity score and its components to LogInfo.</span>
-<span class="sd">    </span>
-<span class="sd">    :param scores: MolProbity scores as generated by :func:`RunMolProbity`.</span>
-<span class="sd">    :type scores:  :class:`dict`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;MolProbity score: &quot;</span>  <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">scores</span><span class="p">[</span><span class="s2">&quot;MolProbity score&quot;</span><span class="p">]))</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;- Clashscore          : &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">scores</span><span class="p">[</span><span class="s2">&quot;Clashscore&quot;</span><span class="p">]))</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;- Rotamer outliers    : &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">scores</span><span class="p">[</span><span class="s2">&quot;Rotamer outliers&quot;</span><span class="p">])</span> <span class="o">+</span> <span class="s2">&quot; %&quot;</span><span class="p">)</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;- Ramachandran favored: &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">scores</span><span class="p">[</span><span class="s2">&quot;Ramachandran favored&quot;</span><span class="p">])</span> <span class="o">+</span> <span class="s2">&quot; %&quot;</span><span class="p">)</span></div>
-
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;RunMolProbity&#39;</span><span class="p">,</span> <span class="s1">&#39;RunMolProbityEntity&#39;</span><span class="p">,</span> <span class="s1">&#39;ReportMolProbityScores&#39;</span><span class="p">)</span>
-</pre></div>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
-        <div class="sphinxsidebarwrapper"><div class="relations">
-<h3>Related Topics</h3>
-<ul>
-  <li><a href="../../../index.html">Documentation overview</a><ul>
-  <li><a href="../../index.html">Module code</a><ul>
-  <li><a href="../../promod3.html">promod3</a><ul>
-  </ul></li>
-  </ul></li>
-  </ul></li>
-</ul>
-</div>
-<div id="searchbox" style="display: none" role="search">
-  <h3>Quick search</h3>
-    <form class="search" action="../../../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
-      
-      |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
-      
-    </div>
-
-    
-
-    
-  </body>
-</html>
\ No newline at end of file
diff --git a/doc/html/_modules/promod3/modelling/_monte_carlo.html b/doc/html/_modules/promod3/modelling/_monte_carlo.html
deleted file mode 100644
index f7f1be54..00000000
--- a/doc/html/_modules/promod3/modelling/_monte_carlo.html
+++ /dev/null
@@ -1,194 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>promod3.modelling._monte_carlo &mdash; ProMod3 1.3.0 documentation</title>
-    
-    <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
-    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../../../',
-        VERSION:     '1.3.0',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../../../_static/jquery.js"></script>
-    <script type="text/javascript" src="../../../_static/underscore.js"></script>
-    <script type="text/javascript" src="../../../_static/doctools.js"></script>
-    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../../../index.html" />
-    <link rel="up" title="promod3" href="../../promod3.html" />
-   
-  <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
-  
-  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
-
-  </head>
-  <body role="document">
-  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body" role="main">
-            
-  <h1>Source code for promod3.modelling._monte_carlo</h1><div class="highlight"><pre>
-<span></span><span class="c1"># Copyright (c) 2013-2018, SIB - Swiss Institute of Bioinformatics and </span>
-<span class="c1">#                          Biozentrum - University of Basel</span>
-<span class="c1"># </span>
-<span class="c1"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<span class="c1"># you may not use this file except in compliance with the License.</span>
-<span class="c1"># You may obtain a copy of the License at</span>
-<span class="c1"># </span>
-<span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
-<span class="c1"># </span>
-<span class="c1"># Unless required by applicable law or agreed to in writing, software</span>
-<span class="c1"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<span class="c1"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<span class="c1"># See the License for the specific language governing permissions and</span>
-<span class="c1"># limitations under the License.</span>
-
-
-<span class="kn">import</span> <span class="nn">random</span>
-<span class="kn">import</span> <span class="nn">math</span>
-
-
-<div class="viewcode-block" id="SampleMonteCarlo"><a class="viewcode-back" href="../../../modelling/monte_carlo.html#promod3.modelling.SampleMonteCarlo">[docs]</a><span class="k">def</span> <span class="nf">SampleMonteCarlo</span><span class="p">(</span><span class="n">sampler</span><span class="p">,</span> <span class="n">closer</span><span class="p">,</span> <span class="n">scorer</span><span class="p">,</span> <span class="n">cooler</span><span class="p">,</span> <span class="n">steps</span><span class="p">,</span> <span class="n">bb_list</span><span class="p">,</span> 
-                     <span class="n">initialize</span><span class="p">,</span> <span class="n">seed</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">lowest_energy_conformation</span> <span class="o">=</span> <span class="bp">True</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;  A convenient function to perform Monte Carlo sampling using a simulated</span>
-<span class="sd">    annealing scheme. In every iteration, a new loop conformation gets proposed </span>
-<span class="sd">    by the provided *sampler* and closed by the *closer*. Upon scoring, this new</span>
-<span class="sd">    conformation gets accepted/rejected using a metropolis criterion based on </span>
-<span class="sd">    the temperature given by the *cooler* </span>
-<span class="sd">    =&gt; acceptance probability: exp(-delta_score/T).</span>
-<span class="sd">    The result is stored in *bb_list* (passed by reference, so NO return value) </span>
-<span class="sd">    and is either the lowest energy conformation ever encountered or the last </span>
-<span class="sd">    accepted proposal.</span>
-
-<span class="sd">    :param sampler:       Sampler object capable of initializing and altering</span>
-<span class="sd">                          conformations.</span>
-<span class="sd">    :param closer:        Closer object to adapt a new conformation to</span>
-<span class="sd">                          the environment.</span>
-<span class="sd">    :param scorer:        Scorer object to score new loop conformations.</span>
-<span class="sd">    :param cooler:        Cooler object to control the temperature of the </span>
-<span class="sd">                          Monte Carlo trajectory.</span>
-<span class="sd">    :param steps:         Number of Monte Carlo iterations to be performed.</span>
-<span class="sd">    :param bb_list:       The chosen conformation gets stored here.</span>
-<span class="sd">    :param initialize:    Whether a new bb_list should be generated as starting</span>
-<span class="sd">                          point, based on the samplers Initialize function.</span>
-<span class="sd">                          The input *bb_list* gets used otherwise.</span>
-<span class="sd">    :param seed:          Seed for internal random number generator.</span>
-<span class="sd">    :param lowest_energy_conformation:  If True, we choose the lowest scoring</span>
-<span class="sd">                                        conformation of the trajectory. </span>
-<span class="sd">                                        Otherwise, the last accepted proposal.</span>
-
-<span class="sd">    :type sampler:        :ref:`mc-sampler-object`</span>
-<span class="sd">    :type closer:         :ref:`mc-closer-object`</span>
-<span class="sd">    :type scorer:         :ref:`mc-scorer-object`</span>
-<span class="sd">    :type cooler:         :ref:`mc-cooler-object`</span>
-<span class="sd">    :type steps:          :class:`int`</span>
-<span class="sd">    :type bb_list:        :class:`~promod3.loop.BackboneList`</span>
-<span class="sd">    :type initialize:     :class:`bool`</span>
-<span class="sd">    :type seed:           :class:`int`</span>
-<span class="sd">    :type lowest_energy_conformation: :class:`bool`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-
-    <span class="c1"># Initialize from scratch if necessary</span>
-    <span class="k">if</span> <span class="n">initialize</span><span class="p">:</span>
-        <span class="n">initialized</span> <span class="o">=</span> <span class="bp">False</span>
-        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">):</span>
-            <span class="n">sampler</span><span class="o">.</span><span class="n">Initialize</span><span class="p">(</span><span class="n">bb_list</span><span class="p">)</span>
-            <span class="k">if</span> <span class="n">closer</span><span class="o">.</span><span class="n">Close</span><span class="p">(</span><span class="n">bb_list</span><span class="p">,</span> <span class="n">bb_list</span><span class="p">):</span>
-                <span class="n">initialized</span> <span class="o">=</span> <span class="bp">True</span>
-                <span class="k">break</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="n">initialized</span><span class="p">:</span>
-            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;Failed to initialize monte carlo protocol!&quot;</span><span class="p">)</span>
-
-    <span class="c1"># setup</span>
-    <span class="n">random</span><span class="o">.</span><span class="n">seed</span><span class="p">(</span><span class="n">seed</span><span class="p">)</span>
-    <span class="n">score</span> <span class="o">=</span> <span class="n">scorer</span><span class="o">.</span><span class="n">GetScore</span><span class="p">(</span><span class="n">bb_list</span><span class="p">)</span>
-    <span class="n">closed</span> <span class="o">=</span> <span class="bp">False</span>
-    <span class="n">min_score</span> <span class="o">=</span> <span class="n">score</span>
-    <span class="n">min_score_bb_list</span> <span class="o">=</span> <span class="n">bb_list</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-    <span class="n">proposed_bb_list</span> <span class="o">=</span> <span class="n">bb_list</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-
-    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">steps</span><span class="p">):</span>
-
-        <span class="c1"># try several proposals (we might not be able to close at first attempt)</span>
-        <span class="n">closed</span> <span class="o">=</span> <span class="bp">False</span>
-        <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">):</span>
-            <span class="n">sampler</span><span class="o">.</span><span class="n">ProposeStep</span><span class="p">(</span><span class="n">bb_list</span><span class="p">,</span> <span class="n">proposed_bb_list</span><span class="p">)</span>
-            <span class="k">if</span> <span class="n">closer</span><span class="o">.</span><span class="n">Close</span><span class="p">(</span><span class="n">proposed_bb_list</span><span class="p">,</span> <span class="n">proposed_bb_list</span><span class="p">):</span>
-                <span class="n">closed</span> <span class="o">=</span> <span class="bp">True</span>
-                <span class="k">break</span>
-
-        <span class="c1"># check for success, try again in next step in case of failure</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="n">closed</span><span class="p">:</span>
-            <span class="k">continue</span>
-
-        <span class="c1"># accept / reject based on Metropolis criterion</span>
-        <span class="n">temperature</span> <span class="o">=</span> <span class="n">cooler</span><span class="o">.</span><span class="n">GetTemperature</span><span class="p">()</span>
-        <span class="n">new_score</span> <span class="o">=</span> <span class="n">scorer</span><span class="o">.</span><span class="n">GetScore</span><span class="p">(</span><span class="n">proposed_bb_list</span><span class="p">)</span>
-
-        <span class="k">if</span> <span class="n">math</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="o">-</span><span class="p">(</span><span class="n">new_score</span><span class="o">-</span><span class="n">score</span><span class="p">)</span><span class="o">/</span><span class="n">temperature</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">random</span><span class="o">.</span><span class="n">random</span><span class="p">():</span>
-            <span class="n">positions</span> <span class="o">=</span> <span class="n">proposed_bb_list</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-            <span class="n">score</span> <span class="o">=</span> <span class="n">new_score</span>
-            <span class="k">if</span> <span class="n">lowest_energy_conformation</span> <span class="ow">and</span> <span class="n">score</span> <span class="o">&lt;</span> <span class="n">min_score</span><span class="p">:</span>
-                <span class="n">min_score</span> <span class="o">=</span> <span class="n">score</span>
-                <span class="n">min_score_bb_list</span> <span class="o">=</span> <span class="n">positions</span>
-
-    <span class="k">if</span> <span class="n">lowest_energy_conformation</span><span class="p">:</span>
-        <span class="n">bb_list</span> <span class="o">=</span> <span class="n">min_score_bb_list</span></div>
-</pre></div>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
-        <div class="sphinxsidebarwrapper"><div class="relations">
-<h3>Related Topics</h3>
-<ul>
-  <li><a href="../../../index.html">Documentation overview</a><ul>
-  <li><a href="../../index.html">Module code</a><ul>
-  <li><a href="../../promod3.html">promod3</a><ul>
-  </ul></li>
-  </ul></li>
-  </ul></li>
-</ul>
-</div>
-<div id="searchbox" style="display: none" role="search">
-  <h3>Quick search</h3>
-    <form class="search" action="../../../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
-      
-      |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
-      
-    </div>
-
-    
-
-    
-  </body>
-</html>
\ No newline at end of file
diff --git a/doc/html/_modules/promod3/modelling/_pipeline.html b/doc/html/_modules/promod3/modelling/_pipeline.html
deleted file mode 100644
index fa63da28..00000000
--- a/doc/html/_modules/promod3/modelling/_pipeline.html
+++ /dev/null
@@ -1,601 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>promod3.modelling._pipeline &mdash; ProMod3 1.3.0 documentation</title>
-    
-    <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
-    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../../../',
-        VERSION:     '1.3.0',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../../../_static/jquery.js"></script>
-    <script type="text/javascript" src="../../../_static/underscore.js"></script>
-    <script type="text/javascript" src="../../../_static/doctools.js"></script>
-    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../../../index.html" />
-    <link rel="up" title="promod3" href="../../promod3.html" />
-   
-  <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
-  
-  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
-
-  </head>
-  <body role="document">
-  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body" role="main">
-            
-  <h1>Source code for promod3.modelling._pipeline</h1><div class="highlight"><pre>
-<span></span><span class="c1"># Copyright (c) 2013-2018, SIB - Swiss Institute of Bioinformatics and </span>
-<span class="c1">#                          Biozentrum - University of Basel</span>
-<span class="c1"># </span>
-<span class="c1"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<span class="c1"># you may not use this file except in compliance with the License.</span>
-<span class="c1"># You may obtain a copy of the License at</span>
-<span class="c1"># </span>
-<span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
-<span class="c1"># </span>
-<span class="c1"># Unless required by applicable law or agreed to in writing, software</span>
-<span class="c1"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<span class="c1"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<span class="c1"># See the License for the specific language governing permissions and</span>
-<span class="c1"># limitations under the License.</span>
-
-
-<span class="sd">&#39;&#39;&#39;High-level functionality for modelling module to build pipelines. Added in </span>
-<span class="sd">the __init__.py file. To be used directly by passing a ModellingHandle instance</span>
-<span class="sd">as argument.</span>
-<span class="sd">&#39;&#39;&#39;</span>
-
-<span class="c1"># internal</span>
-<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">loop</span><span class="p">,</span> <span class="n">sidechain</span><span class="p">,</span> <span class="n">core</span>
-<span class="kn">from</span> <span class="nn">_modelling</span> <span class="kn">import</span> <span class="o">*</span>
-<span class="kn">from</span> <span class="nn">_reconstruct_sidechains</span> <span class="kn">import</span> <span class="o">*</span>
-<span class="kn">from</span> <span class="nn">_closegaps</span> <span class="kn">import</span> <span class="o">*</span>
-<span class="kn">from</span> <span class="nn">_ring_punches</span> <span class="kn">import</span> <span class="o">*</span>
-<span class="c1"># external</span>
-<span class="kn">import</span> <span class="nn">ost</span>
-<span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">mol</span><span class="p">,</span> <span class="n">conop</span>
-<span class="kn">from</span> <span class="nn">ost.mol</span> <span class="kn">import</span> <span class="n">mm</span>
-<span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">math</span>
-
-<span class="c1">###############################################################################</span>
-<span class="c1"># helper functions</span>
-<span class="k">def</span> <span class="nf">_RemoveHydrogens</span><span class="p">(</span><span class="n">ent</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Hydrogen naming depends on the force field used.</span>
-<span class="sd">    To be on the safe side, we simply remove all of them.</span>
-<span class="sd">    Note that the pipeline ignores hydrogens when building the raw model and</span>
-<span class="sd">    when rebuilding sidechains.</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">edi</span> <span class="o">=</span> <span class="n">ent</span><span class="o">.</span><span class="n">EditXCS</span><span class="p">(</span><span class="n">mol</span><span class="o">.</span><span class="n">BUFFERED_EDIT</span><span class="p">)</span>
-    <span class="n">ha</span> <span class="o">=</span> <span class="n">ent</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s1">&#39;ele=H&#39;</span><span class="p">)</span>
-    <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">ha</span><span class="o">.</span><span class="n">atoms</span><span class="p">:</span>
-        <span class="n">edi</span><span class="o">.</span><span class="n">DeleteAtom</span><span class="p">(</span><span class="n">a</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
-    <span class="n">edi</span><span class="o">.</span><span class="n">UpdateICS</span><span class="p">()</span>
-
-<span class="k">def</span> <span class="nf">_AddHeuristicHydrogens</span><span class="p">(</span><span class="n">ent</span><span class="p">,</span> <span class="n">ff</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Add hydrogens with mm.HeuristicHydrogenConstructor.&#39;&#39;&#39;</span>
-    <span class="k">for</span> <span class="n">res</span> <span class="ow">in</span> <span class="n">ent</span><span class="o">.</span><span class="n">residues</span><span class="p">:</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="n">res</span><span class="o">.</span><span class="n">IsPeptideLinking</span><span class="p">():</span>
-            <span class="n">bb</span> <span class="o">=</span> <span class="n">ff</span><span class="o">.</span><span class="n">GetBuildingBlock</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
-            <span class="n">edi</span> <span class="o">=</span> <span class="n">ent</span><span class="o">.</span><span class="n">EditXCS</span><span class="p">(</span><span class="n">mol</span><span class="o">.</span><span class="n">BUFFERED_EDIT</span><span class="p">)</span>
-            <span class="n">h_constructor</span> <span class="o">=</span> <span class="n">mm</span><span class="o">.</span><span class="n">HeuristicHydrogenConstructor</span><span class="p">(</span><span class="n">bb</span><span class="p">)</span>
-            <span class="n">h_constructor</span><span class="o">.</span><span class="n">ApplyOnResidue</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="n">edi</span><span class="p">)</span>
-            <span class="n">edi</span><span class="o">.</span><span class="n">UpdateICS</span><span class="p">()</span>
-
-<span class="k">def</span> <span class="nf">_GetTopology</span><span class="p">(</span><span class="n">ent</span><span class="p">,</span> <span class="n">settings</span><span class="p">,</span> <span class="n">force_fields</span><span class="p">,</span> <span class="n">add_heuristic_hydrogens</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Return topology or None if no topology could be created.</span>
-<span class="sd">    Note: if successful, this will update ent (adding hydrogens).</span>
-<span class="sd">    Set add_heuristic_hydrogens to True for ligands.</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="c1"># try all force fields in order</span>
-    <span class="k">for</span> <span class="n">i_ff</span><span class="p">,</span> <span class="n">ff</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">force_fields</span><span class="p">):</span>
-        <span class="n">settings</span><span class="o">.</span><span class="n">forcefield</span> <span class="o">=</span> <span class="n">ff</span>
-        <span class="k">try</span><span class="p">:</span>
-            <span class="c1"># check if we need to add hydrogens heuristically</span>
-            <span class="k">if</span> <span class="n">add_heuristic_hydrogens</span><span class="p">:</span>
-                <span class="n">_AddHeuristicHydrogens</span><span class="p">(</span><span class="n">ent</span><span class="p">,</span> <span class="n">ff</span><span class="p">)</span>
-            <span class="c1"># ok now we try...</span>
-            <span class="n">topo</span> <span class="o">=</span> <span class="n">mm</span><span class="o">.</span><span class="n">TopologyCreator</span><span class="o">.</span><span class="n">Create</span><span class="p">(</span><span class="n">ent</span><span class="p">,</span> <span class="n">settings</span><span class="p">)</span>
-        <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
-            <span class="c1"># report only for debugging</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogVerbose</span><span class="p">(</span><span class="s2">&quot;Could not create mm topology for ff </span><span class="si">%d</span><span class="s2">. </span><span class="si">%s</span><span class="s2">&quot;</span> \
-                           <span class="o">%</span> <span class="p">(</span><span class="n">i_ff</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">ex</span><span class="p">)</span><span class="o">.</span><span class="n">__name__</span> <span class="o">+</span> <span class="s2">&quot;: &quot;</span> <span class="o">+</span> <span class="n">ex</span><span class="o">.</span><span class="n">message</span><span class="p">))</span>
-            <span class="k">continue</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="c1"># all good</span>
-            <span class="k">return</span> <span class="n">topo</span>
-    <span class="c1"># if we got here, nothing worked</span>
-    <span class="k">return</span> <span class="bp">None</span>
-
-<span class="k">def</span> <span class="nf">_AddLigands</span><span class="p">(</span><span class="n">ent</span><span class="p">,</span> <span class="n">top</span><span class="p">,</span> <span class="n">lig_ent</span><span class="p">,</span> <span class="n">settings</span><span class="p">,</span> <span class="n">force_fields</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Add ligands from lig_ent to topology top and update entity ent.&#39;&#39;&#39;</span>
-    <span class="c1"># connect them first</span>
-    <span class="n">proc</span> <span class="o">=</span> <span class="n">conop</span><span class="o">.</span><span class="n">RuleBasedProcessor</span><span class="p">(</span><span class="n">conop</span><span class="o">.</span><span class="n">GetDefaultLib</span><span class="p">())</span>
-    <span class="n">proc</span><span class="o">.</span><span class="n">Process</span><span class="p">(</span><span class="n">lig_ent</span><span class="p">)</span>
-    <span class="n">cur_res</span> <span class="o">=</span> <span class="n">lig_ent</span><span class="o">.</span><span class="n">residues</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
-    <span class="n">lig_num</span> <span class="o">=</span> <span class="mi">1</span>
-    <span class="k">while</span> <span class="n">cur_res</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
-        <span class="c1"># setup connected components</span>
-        <span class="n">cur_view</span> <span class="o">=</span> <span class="n">lig_ent</span><span class="o">.</span><span class="n">CreateEmptyView</span><span class="p">()</span>
-        <span class="n">cur_view</span><span class="o">.</span><span class="n">AddResidue</span><span class="p">(</span><span class="n">cur_res</span><span class="p">,</span> <span class="n">mol</span><span class="o">.</span><span class="n">INCLUDE_ATOMS</span><span class="p">)</span>
-        <span class="n">cur_res</span> <span class="o">=</span> <span class="n">cur_res</span><span class="o">.</span><span class="n">next</span>
-        <span class="k">while</span> <span class="n">cur_res</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">mol</span><span class="o">.</span><span class="n">InSequence</span><span class="p">(</span><span class="n">cur_res</span><span class="o">.</span><span class="n">prev</span><span class="p">,</span> <span class="n">cur_res</span><span class="p">):</span>
-            <span class="n">cur_view</span><span class="o">.</span><span class="n">AddResidue</span><span class="p">(</span><span class="n">cur_res</span><span class="p">,</span> <span class="n">mol</span><span class="o">.</span><span class="n">INCLUDE_ATOMS</span><span class="p">)</span>
-            <span class="n">cur_res</span> <span class="o">=</span> <span class="n">cur_res</span><span class="o">.</span><span class="n">next</span>
-        <span class="c1"># try to add topology with special named chain</span>
-        <span class="n">cur_ent</span> <span class="o">=</span> <span class="n">mol</span><span class="o">.</span><span class="n">CreateEntityFromView</span><span class="p">(</span><span class="n">cur_view</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
-        <span class="n">edi</span> <span class="o">=</span> <span class="n">cur_ent</span><span class="o">.</span><span class="n">EditXCS</span><span class="p">()</span>
-        <span class="n">edi</span><span class="o">.</span><span class="n">RenameChain</span><span class="p">(</span><span class="n">cur_ent</span><span class="o">.</span><span class="n">chains</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s1">&#39;_&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">lig_num</span><span class="p">))</span>
-        <span class="n">lig_num</span> <span class="o">+=</span> <span class="mi">1</span>
-        <span class="n">cur_top</span> <span class="o">=</span> <span class="n">_GetTopology</span><span class="p">(</span><span class="n">cur_ent</span><span class="p">,</span> <span class="n">settings</span><span class="p">,</span> <span class="n">force_fields</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
-        <span class="k">if</span> <span class="n">cur_top</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
-            <span class="n">view_res_str</span> <span class="o">=</span> <span class="nb">str</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">r</span><span class="p">)</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">cur_view</span><span class="o">.</span><span class="n">residues</span><span class="p">])</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogError</span><span class="p">(</span><span class="s2">&quot;Failed to add ligands &quot;</span> <span class="o">+</span> <span class="n">view_res_str</span> <span class="o">+</span> \
-                         <span class="s2">&quot; for energy minimization! Skipping...&quot;</span><span class="p">)</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="c1"># merge into main topology</span>
-            <span class="n">cur_top</span><span class="o">.</span><span class="n">SetFudgeLJ</span><span class="p">(</span><span class="n">top</span><span class="o">.</span><span class="n">GetFudgeLJ</span><span class="p">())</span>
-            <span class="n">cur_top</span><span class="o">.</span><span class="n">SetFudgeQQ</span><span class="p">(</span><span class="n">top</span><span class="o">.</span><span class="n">GetFudgeQQ</span><span class="p">())</span>
-            <span class="n">top</span><span class="o">.</span><span class="n">Merge</span><span class="p">(</span><span class="n">ent</span><span class="p">,</span> <span class="n">cur_top</span><span class="p">,</span> <span class="n">cur_ent</span><span class="p">)</span>
-
-<span class="k">def</span> <span class="nf">_SetupMmSimulation</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">force_fields</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Get mm simulation object for the model (incl. ligands in chain &quot;_&quot;).</span>
-<span class="sd">    This tries to generate a topology for the protein and for each connected</span>
-<span class="sd">    component in the ligand chain separately by evaluating the force fields in</span>
-<span class="sd">    the same order as given. Ligands without force fields are skipped.</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="s1">&#39;pipeline::_SetupMmSimulation&#39;</span><span class="p">)</span>
-
-    <span class="c1"># get general settings </span>
-    <span class="n">settings</span> <span class="o">=</span> <span class="n">mm</span><span class="o">.</span><span class="n">Settings</span><span class="p">()</span>
-    <span class="n">settings</span><span class="o">.</span><span class="n">integrator</span> <span class="o">=</span> <span class="n">mm</span><span class="o">.</span><span class="n">LangevinIntegrator</span><span class="p">(</span><span class="mi">310</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mf">0.002</span><span class="p">)</span>
-    <span class="n">settings</span><span class="o">.</span><span class="n">init_temperature</span> <span class="o">=</span> <span class="mi">0</span>
-    <span class="n">settings</span><span class="o">.</span><span class="n">nonbonded_method</span> <span class="o">=</span> <span class="n">mm</span><span class="o">.</span><span class="n">NonbondedMethod</span><span class="o">.</span><span class="n">CutoffNonPeriodic</span>
-    <span class="n">settings</span><span class="o">.</span><span class="n">keep_ff_specific_naming</span> <span class="o">=</span> <span class="bp">False</span>
-    
-    <span class="c1"># prepare entity with protein</span>
-    <span class="n">_RemoveHydrogens</span><span class="p">(</span><span class="n">model</span><span class="p">)</span>
-    <span class="n">ent</span> <span class="o">=</span> <span class="n">mol</span><span class="o">.</span><span class="n">CreateEntityFromView</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s2">&quot;cname!=&#39;_&#39;&quot;</span><span class="p">),</span> <span class="bp">True</span><span class="p">)</span>
-    <span class="n">top</span> <span class="o">=</span> <span class="n">_GetTopology</span><span class="p">(</span><span class="n">ent</span><span class="p">,</span> <span class="n">settings</span><span class="p">,</span> <span class="n">force_fields</span><span class="p">)</span>
-    <span class="k">if</span> <span class="n">top</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
-        <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;Failed to setup protein for energy minimization!&quot;</span><span class="p">)</span>
-    
-    <span class="c1"># prepare ligands: we reprocess them to ensure connectivity</span>
-    <span class="n">lig_ent</span> <span class="o">=</span> <span class="n">mol</span><span class="o">.</span><span class="n">CreateEntityFromView</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s2">&quot;cname=&#39;_&#39;&quot;</span><span class="p">),</span> <span class="bp">True</span><span class="p">)</span>
-    <span class="k">if</span> <span class="n">lig_ent</span><span class="o">.</span><span class="n">residue_count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="n">_AddLigands</span><span class="p">(</span><span class="n">ent</span><span class="p">,</span> <span class="n">top</span><span class="p">,</span> <span class="n">lig_ent</span><span class="p">,</span> <span class="n">settings</span><span class="p">,</span> <span class="n">force_fields</span><span class="p">)</span>
-
-    <span class="c1"># use fast CPU platform by default</span>
-    <span class="c1"># NOTE: settings.platform only relevant for mm.Simulation!</span>
-    <span class="n">settings</span><span class="o">.</span><span class="n">platform</span> <span class="o">=</span> <span class="n">mm</span><span class="o">.</span><span class="n">Platform</span><span class="o">.</span><span class="n">CPU</span>
-    <span class="k">if</span> <span class="n">mm</span><span class="o">.</span><span class="n">Simulation</span><span class="o">.</span><span class="n">IsPlatformAvailable</span><span class="p">(</span><span class="n">settings</span><span class="p">):</span>
-        <span class="n">num_cpu_threads</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s1">&#39;PM3_OPENMM_CPU_THREADS&#39;</span><span class="p">)</span>
-        <span class="k">if</span> <span class="n">num_cpu_threads</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
-            <span class="n">settings</span><span class="o">.</span><span class="n">cpu_properties</span><span class="p">[</span><span class="s2">&quot;CpuThreads&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;1&quot;</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="n">settings</span><span class="o">.</span><span class="n">cpu_properties</span><span class="p">[</span><span class="s2">&quot;CpuThreads&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">num_cpu_threads</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="c1"># switch to &quot;mm.Platform.Reference&quot; as fallback</span>
-        <span class="n">settings</span><span class="o">.</span><span class="n">platform</span> <span class="o">=</span> <span class="n">mm</span><span class="o">.</span><span class="n">Platform</span><span class="o">.</span><span class="n">Reference</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogWarning</span><span class="p">(</span><span class="s2">&quot;Switched to slower reference platform of OpenMM!&quot;</span><span class="p">)</span>
-    <span class="c1"># finally set up the simulation</span>
-    <span class="n">sim</span> <span class="o">=</span> <span class="n">mm</span><span class="o">.</span><span class="n">Simulation</span><span class="p">(</span><span class="n">top</span><span class="p">,</span> <span class="n">ent</span><span class="p">,</span> <span class="n">settings</span><span class="p">)</span>
-        
-    <span class="k">return</span> <span class="n">sim</span>
-
-<span class="k">def</span> <span class="nf">_GetSimEntity</span><span class="p">(</span><span class="n">sim</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Get Entity from mm sim and reverse ligand chain naming.&#39;&#39;&#39;</span>
-    <span class="n">ent</span> <span class="o">=</span> <span class="n">sim</span><span class="o">.</span><span class="n">GetEntity</span><span class="p">()</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-    <span class="c1"># merge ligand chains into _</span>
-    <span class="n">ent_ed</span> <span class="o">=</span> <span class="n">ent</span><span class="o">.</span><span class="n">EditXCS</span><span class="p">(</span><span class="n">mol</span><span class="o">.</span><span class="n">BUFFERED_EDIT</span><span class="p">)</span>
-    <span class="n">chain_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">ch</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">ch</span> <span class="ow">in</span> <span class="n">ent</span><span class="o">.</span><span class="n">chains</span><span class="p">]</span>
-    <span class="k">for</span> <span class="n">chain_name</span> <span class="ow">in</span> <span class="n">chain_names</span><span class="p">:</span>
-        <span class="c1"># all separate ligand chains start with _</span>
-        <span class="k">if</span> <span class="n">chain_name</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;_&#39;</span><span class="p">:</span>
-            <span class="c1"># add to chain _</span>
-            <span class="k">if</span> <span class="ow">not</span> <span class="n">ent</span><span class="o">.</span><span class="n">FindChain</span><span class="p">(</span><span class="s1">&#39;_&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
-                <span class="n">ent_ed</span><span class="o">.</span><span class="n">InsertChain</span><span class="p">(</span><span class="s1">&#39;_&#39;</span><span class="p">)</span>
-            <span class="n">lig_ch</span> <span class="o">=</span> <span class="n">ent</span><span class="o">.</span><span class="n">FindChain</span><span class="p">(</span><span class="s1">&#39;_&#39;</span><span class="p">)</span>
-            <span class="n">cur_ch</span> <span class="o">=</span> <span class="n">ent</span><span class="o">.</span><span class="n">FindChain</span><span class="p">(</span><span class="n">chain_name</span><span class="p">)</span>
-            <span class="k">for</span> <span class="n">res</span> <span class="ow">in</span> <span class="n">cur_ch</span><span class="o">.</span><span class="n">residues</span><span class="p">:</span>
-                <span class="n">ent_ed</span><span class="o">.</span><span class="n">AppendResidue</span><span class="p">(</span><span class="n">lig_ch</span><span class="p">,</span> <span class="n">res</span><span class="p">,</span> <span class="n">deep</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
-            <span class="c1"># remove old chain</span>
-            <span class="n">ent_ed</span><span class="o">.</span><span class="n">DeleteChain</span><span class="p">(</span><span class="n">cur_ch</span><span class="p">)</span>
-    <span class="n">ent_ed</span><span class="o">.</span><span class="n">UpdateICS</span><span class="p">()</span>
-    <span class="k">return</span> <span class="n">ent</span>
-<span class="c1">###############################################################################</span>
-
-
-<div class="viewcode-block" id="BuildSidechains"><a class="viewcode-back" href="../../../modelling/pipeline.html#promod3.modelling.BuildSidechains">[docs]</a><span class="k">def</span> <span class="nf">BuildSidechains</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">merge_distance</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">fragment_db</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
-                    <span class="n">structure_db</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">torsion_sampler</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
-                    <span class="n">rotamer_library</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Build sidechains for model.</span>
-
-<span class="sd">    This is a wrapper for :func:`promod3.modelling.ReconstructSidechains`, </span>
-<span class="sd">    followed by a check for ring punches. If ring punches are found it </span>
-<span class="sd">    introduces gaps for the residues with punched rings and tries to fill them </span>
-<span class="sd">    with :func:`FillLoopsByDatabase` with *ring_punch_detection=2*.</span>
-
-<span class="sd">    :param mhandle: Modelling handle on which to apply change.</span>
-<span class="sd">    :type mhandle:  :class:`ModellingHandle`</span>
-
-<span class="sd">    :param merge_distance:  Used as parameter for :func:`MergeGapsByDistance`</span>
-<span class="sd">                            if ring punches are found.</span>
-<span class="sd">    :type merge_distance:   :class:`int`</span>
-<span class="sd">    :param fragment_db:     Used as parameter for :func:`FillLoopsByDatabase`</span>
-<span class="sd">                            if ring punches are found. A default one is loaded</span>
-<span class="sd">                            if None.</span>
-<span class="sd">    :type fragment_db:      :class:`~promod3.loop.FragDB`</span>
-<span class="sd">    :param structure_db:    Used as parameter for :func:`FillLoopsByDatabase`</span>
-<span class="sd">                            if ring punches are found. A default one is loaded</span>
-<span class="sd">                            if None.</span>
-<span class="sd">    :type structure_db:     :class:`~promod3.loop.StructureDB`</span>
-<span class="sd">    :param torsion_sampler: Used as parameter for :func:`FillLoopsByDatabase`</span>
-<span class="sd">                            if ring punches are found. A default one is loaded</span>
-<span class="sd">                            if None.</span>
-<span class="sd">    :type torsion_sampler:  :class:`~promod3.loop.TorsionSampler`</span>
-<span class="sd">    :param rotamer_library: Used as parameter for </span>
-<span class="sd">                            :func:`modelling.ReconstructSidechains`, a default </span>
-<span class="sd">                            one is loaded if None.</span>
-<span class="sd">    :type rotamer_library:  :class:`~promod3.sidechain.RotamerLib` or</span>
-<span class="sd">                            :class:`~promod3.sidechain.BBDepRotamerLib` </span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="s1">&#39;pipeline::BuildSidechains&#39;</span><span class="p">)</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Rebuilding sidechains.&quot;</span><span class="p">)</span>
-    <span class="n">ReconstructSidechains</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">keep_sidechains</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> 
-                          <span class="n">rotamer_library</span><span class="o">=</span><span class="n">rotamer_library</span><span class="p">)</span>
-    <span class="c1"># check for ring punches</span>
-    <span class="n">rings</span> <span class="o">=</span> <span class="n">GetRings</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="p">)</span>
-    <span class="n">ring_punches</span> <span class="o">=</span> <span class="n">GetRingPunches</span><span class="p">(</span><span class="n">rings</span><span class="p">,</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="p">)</span>
-    <span class="c1"># try to fix them</span>
-    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ring_punches</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Trying to fix </span><span class="si">%d</span><span class="s2"> ring punch(es).&quot;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">ring_punches</span><span class="p">))</span>
-        <span class="c1"># backup old gaps</span>
-        <span class="n">old_gaps</span> <span class="o">=</span> <span class="p">[</span><span class="n">g</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span> <span class="k">for</span> <span class="n">g</span> <span class="ow">in</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">]</span>
-        <span class="c1"># new gaps for mhandle</span>
-        <span class="c1"># NOTE: we currently do not delete the punched residues here</span>
-        <span class="c1">#       BUT they could be deleted when merging gaps below...</span>
-        <span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span> <span class="o">=</span> <span class="n">StructuralGapList</span><span class="p">()</span>
-        <span class="k">for</span> <span class="n">res</span> <span class="ow">in</span> <span class="n">ring_punches</span><span class="p">:</span>
-            <span class="n">mygap</span> <span class="o">=</span> <span class="n">StructuralGap</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">prev</span><span class="p">,</span> <span class="n">res</span><span class="o">.</span><span class="n">next</span><span class="p">,</span> <span class="n">res</span><span class="o">.</span><span class="n">one_letter_code</span><span class="p">)</span>
-            <span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">mygap</span><span class="p">)</span>
-        <span class="c1"># load stuff if needed</span>
-        <span class="k">if</span> <span class="n">fragment_db</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
-            <span class="n">fragment_db</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">LoadFragDB</span><span class="p">()</span>
-        <span class="k">if</span> <span class="n">structure_db</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
-            <span class="n">structure_db</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">LoadStructureDB</span><span class="p">()</span>
-        <span class="k">if</span> <span class="n">torsion_sampler</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
-            <span class="n">torsion_sampler</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">LoadTorsionSamplerCoil</span><span class="p">()</span>
-        <span class="c1"># fix it</span>
-        <span class="n">MergeGapsByDistance</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">merge_distance</span><span class="p">)</span>
-        <span class="n">FillLoopsByDatabase</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">fragment_db</span><span class="p">,</span> <span class="n">structure_db</span><span class="p">,</span>
-                            <span class="n">torsion_sampler</span><span class="p">,</span> <span class="n">ring_punch_detection</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
-        <span class="c1"># re-build sidechains</span>
-        <span class="n">ReconstructSidechains</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">keep_sidechains</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
-                              <span class="n">rotamer_library</span><span class="o">=</span><span class="n">rotamer_library</span><span class="p">)</span>
-        <span class="c1"># restore gaps</span>
-        <span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span> <span class="o">=</span> <span class="n">StructuralGapList</span><span class="p">()</span>
-        <span class="k">for</span> <span class="n">g</span> <span class="ow">in</span> <span class="n">old_gaps</span><span class="p">:</span>
-            <span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">g</span><span class="p">)</span></div>
-            
-
-<div class="viewcode-block" id="MinimizeModelEnergy"><a class="viewcode-back" href="../../../modelling/pipeline.html#promod3.modelling.MinimizeModelEnergy">[docs]</a><span class="k">def</span> <span class="nf">MinimizeModelEnergy</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">max_iterations</span><span class="o">=</span><span class="mi">12</span><span class="p">,</span> <span class="n">max_iter_sd</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span>
-                        <span class="n">max_iter_lbfgs</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">use_amber_ff</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
-                        <span class="n">extra_force_fields</span><span class="o">=</span><span class="nb">list</span><span class="p">()):</span>
-    <span class="sd">&#39;&#39;&#39;Minimize energy of final model using molecular mechanics.</span>
-
-<span class="sd">    Uses :mod:`ost.mol.mm` to perform energy minimization.</span>
-<span class="sd">    It will iteratively (at most *max_iterations* times):</span>
-<span class="sd">    </span>
-<span class="sd">    - run up to *max_iter_sd* minimization iter. of a steepest descend method</span>
-<span class="sd">    - run up to *max_iter_lbfgs* minimization iter. of a Limited-memory </span>
-<span class="sd">      Broyden-Fletcher-Goldfarb-Shanno method</span>
-<span class="sd">    - abort if no stereochemical problems found</span>
-
-<span class="sd">    The idea is that we don&#39;t want to minimize &quot;too much&quot;. So, we iteratively</span>
-<span class="sd">    minimize until there are no stereochemical problems and not more.</span>
-
-<span class="sd">    To speed things up, this can run on multiple CPU threads by setting the</span>
-<span class="sd">    env. variable ``PM3_OPENMM_CPU_THREADS`` to the number of desired threads.</span>
-<span class="sd">    If the variable is not set, 1 thread will be used by default.</span>
-
-<span class="sd">    :param mhandle: Modelling handle on which to apply change.</span>
-<span class="sd">    :type mhandle:  :class:`ModellingHandle`</span>
-
-<span class="sd">    :param max_iterations: Max. number of iterations for SD+LBFGS</span>
-<span class="sd">    :type max_iterations:  :class:`int`</span>
-
-<span class="sd">    :param max_iter_sd: Max. number of iterations within SD method</span>
-<span class="sd">    :type max_iter_sd:  :class:`int`</span>
-
-<span class="sd">    :param max_iter_lbfgs: Max. number of iterations within LBFGS method</span>
-<span class="sd">    :type max_iter_lbfgs:  :class:`int`</span>
-
-<span class="sd">    :param use_amber_ff: if True, use the AMBER force field instead of the def.</span>
-<span class="sd">                         CHARMM one (see :meth:`BuildFromRawModel`).</span>
-<span class="sd">    :type use_amber_ff:  :class:`bool`</span>
-
-<span class="sd">    :param extra_force_fields: Additional list of force fields to use (see</span>
-<span class="sd">                               :meth:`BuildFromRawModel`).</span>
-<span class="sd">    :type extra_force_fields:  :class:`list` of :class:`ost.mol.mm.Forcefield`</span>
-
-<span class="sd">    :return: The model including all oxygens as used in the minimizer.</span>
-<span class="sd">    :rtype:  :class:`Entity &lt;ost.mol.EntityHandle&gt;`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="s1">&#39;pipeline::MinimizeModelEnergy&#39;</span><span class="p">)</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Minimize energy.&quot;</span><span class="p">)</span>
-    <span class="c1"># ignore LogInfo in stereochemical problems if output up to info done</span>
-    <span class="n">ignore_stereo_log</span> <span class="o">=</span> <span class="p">(</span><span class="n">ost</span><span class="o">.</span><span class="n">GetVerbosityLevel</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span>
-
-    <span class="c1"># setup force fields</span>
-    <span class="k">if</span> <span class="n">use_amber_ff</span><span class="p">:</span>
-        <span class="n">force_fields</span> <span class="o">=</span> <span class="p">[</span><span class="n">mm</span><span class="o">.</span><span class="n">LoadAMBERForcefield</span><span class="p">()]</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="n">force_fields</span> <span class="o">=</span> <span class="p">[</span><span class="n">mm</span><span class="o">.</span><span class="n">LoadCHARMMForcefield</span><span class="p">()]</span>
-    <span class="n">force_fields</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">extra_force_fields</span><span class="p">)</span>
-    <span class="c1"># setup mm simulation</span>
-    <span class="n">sim</span> <span class="o">=</span> <span class="n">_SetupMmSimulation</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">force_fields</span><span class="p">)</span>
-
-    <span class="c1"># check for certain failure -&gt; we get NaN if atoms are on top each other</span>
-    <span class="k">if</span> <span class="n">math</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="n">sim</span><span class="o">.</span><span class="n">GetEnergy</span><span class="p">()):</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogError</span><span class="p">(</span><span class="s2">&quot;OpenMM could not minimize energy as atoms are on top of &quot;</span>
-                     <span class="s2">&quot;each other!&quot;</span><span class="p">)</span>
-        <span class="k">return</span>
-        
-    <span class="c1"># settings to check for stereochemical problems</span>
-    <span class="n">clashing_distances</span> <span class="o">=</span> <span class="n">mol</span><span class="o">.</span><span class="n">alg</span><span class="o">.</span><span class="n">DefaultClashingDistances</span><span class="p">()</span>
-    <span class="n">bond_stereo_chemical_param</span> <span class="o">=</span> <span class="n">mol</span><span class="o">.</span><span class="n">alg</span><span class="o">.</span><span class="n">DefaultBondStereoChemicalParams</span><span class="p">()</span>
-    <span class="n">angle_stereo_chemical_param</span> <span class="o">=</span> <span class="n">mol</span><span class="o">.</span><span class="n">alg</span><span class="o">.</span><span class="n">DefaultAngleStereoChemicalParams</span><span class="p">()</span>
-
-    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">max_iterations</span><span class="p">):</span>
-        <span class="c1"># update atoms</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Perform energy minimization &quot;</span>
-                    <span class="s2">&quot;(iteration </span><span class="si">%d</span><span class="s2">, energy: </span><span class="si">%g</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">sim</span><span class="o">.</span><span class="n">GetEnergy</span><span class="p">()))</span>
-        <span class="n">sim</span><span class="o">.</span><span class="n">ApplySD</span><span class="p">(</span><span class="n">tolerance</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">,</span> <span class="n">max_iterations</span> <span class="o">=</span> <span class="n">max_iter_sd</span><span class="p">)</span>
-        <span class="n">sim</span><span class="o">.</span><span class="n">ApplyLBFGS</span><span class="p">(</span><span class="n">tolerance</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">,</span> <span class="n">max_iterations</span> <span class="o">=</span> <span class="n">max_iter_lbfgs</span><span class="p">)</span>
-        <span class="n">sim</span><span class="o">.</span><span class="n">UpdatePositions</span><span class="p">()</span>
-
-        <span class="c1"># check for stereochemical problems</span>
-        <span class="k">if</span> <span class="n">ignore_stereo_log</span><span class="p">:</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">PushVerbosityLevel</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
-        <span class="n">temp_ent</span> <span class="o">=</span> <span class="n">sim</span><span class="o">.</span><span class="n">GetEntity</span><span class="p">()</span>
-        <span class="n">temp_ent</span> <span class="o">=</span> <span class="n">temp_ent</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s2">&quot;aname!=OXT&quot;</span><span class="p">)</span>
-        <span class="n">temp_ent_clash_filtered</span> <span class="o">=</span> <span class="n">mol</span><span class="o">.</span><span class="n">alg</span><span class="o">.</span><span class="n">FilterClashes</span><span class="p">(</span>\
-                                                <span class="n">temp_ent</span><span class="p">,</span> <span class="n">clashing_distances</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
-        <span class="c1"># note: 10,10 parameters below are hard coded bond-/angle-tolerances</span>
-        <span class="n">temp_ent_stereo_checked</span> <span class="o">=</span> <span class="n">mol</span><span class="o">.</span><span class="n">alg</span><span class="o">.</span><span class="n">CheckStereoChemistry</span><span class="p">(</span>\
-                                                <span class="n">temp_ent_clash_filtered</span><span class="p">,</span> 
-                                                <span class="n">bond_stereo_chemical_param</span><span class="p">,</span>
-                                                <span class="n">angle_stereo_chemical_param</span><span class="p">,</span> 
-                                                <span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
-        <span class="k">if</span> <span class="n">ignore_stereo_log</span><span class="p">:</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">PopVerbosityLevel</span><span class="p">()</span>
-        <span class="c1"># checks above would remove bad atoms</span>
-        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">temp_ent_stereo_checked</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s2">&quot;ele!=H&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">atoms</span><span class="p">)</span> \
-           <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">temp_ent</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s2">&quot;ele!=H&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">atoms</span><span class="p">):</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;No more stereo-chemical problems &quot;</span>
-                        <span class="s2">&quot;-&gt; final energy: </span><span class="si">%g</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">sim</span><span class="o">.</span><span class="n">GetEnergy</span><span class="p">()))</span>
-            <span class="k">break</span>
-
-    <span class="c1"># update model</span>
-    <span class="n">simulation_ent</span> <span class="o">=</span> <span class="n">_GetSimEntity</span><span class="p">(</span><span class="n">sim</span><span class="p">)</span>
-    <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">mol</span><span class="o">.</span><span class="n">CreateEntityFromView</span><span class="p">(</span><span class="n">simulation_ent</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s2">&quot;ele!=H&quot;</span><span class="p">),</span>
-                                             <span class="bp">True</span><span class="p">)</span>
-    <span class="c1"># return model with hydrogens</span>
-    <span class="k">return</span> <span class="n">simulation_ent</span></div>
-
-<div class="viewcode-block" id="CheckFinalModel"><a class="viewcode-back" href="../../../modelling/pipeline.html#promod3.modelling.CheckFinalModel">[docs]</a><span class="k">def</span> <span class="nf">CheckFinalModel</span><span class="p">(</span><span class="n">mhandle</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Performs samity checks on final models and reports problems.</span>
-<span class="sd">    </span>
-<span class="sd">    :param mhandle: Modelling handle for which to perform checks.</span>
-<span class="sd">    :type mhandle:  :class:`ModellingHandle`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;pipeline::CheckFinalModel&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-    <span class="c1"># report incomplete models</span>
-    <span class="k">for</span> <span class="n">chain</span> <span class="ow">in</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">chains</span><span class="p">:</span>
-        <span class="k">if</span> <span class="n">chain</span><span class="o">.</span><span class="n">residue_count</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">:</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogWarning</span><span class="p">(</span><span class="s2">&quot;Chain </span><span class="si">%s</span><span class="s2"> of returned model contains only </span><span class="si">%d</span><span class="s2"> &quot;</span>\
-                           <span class="s2">&quot;residues! This typically indicates that the &quot;</span>\
-                           <span class="s2">&quot;template is mostly a Calpha trace or contains &quot;</span>\
-                           <span class="s2">&quot;too many D-peptides.&quot;</span>\
-                           <span class="o">%</span> <span class="p">(</span><span class="n">chain</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">chain</span><span class="o">.</span><span class="n">residue_count</span><span class="p">))</span>
-    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogWarning</span><span class="p">(</span><span class="s2">&quot;Failed to close </span><span class="si">%d</span><span class="s2"> gap(s). Returning incomplete model!&quot;</span>\
-                       <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">gaps</span><span class="p">))</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="c1"># check sequences</span>
-        <span class="k">for</span> <span class="n">chain</span><span class="p">,</span> <span class="n">seq</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">chains</span><span class="p">,</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">seqres</span><span class="p">):</span>
-            <span class="n">a</span> <span class="o">=</span> <span class="n">chain</span><span class="o">.</span><span class="n">residues</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span>
-            <span class="n">b</span> <span class="o">=</span> <span class="n">chain</span><span class="o">.</span><span class="n">residues</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span><span class="o">.</span><span class="n">GetNum</span><span class="p">()</span>
-            <span class="n">expected_seq</span> <span class="o">=</span> <span class="n">seq</span><span class="p">[</span><span class="n">a</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span><span class="n">b</span><span class="p">]</span>
-            <span class="n">actual_seq</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">r</span><span class="o">.</span><span class="n">one_letter_code</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">chain</span><span class="o">.</span><span class="n">residues</span><span class="p">])</span>
-            <span class="k">if</span> <span class="n">expected_seq</span> <span class="o">!=</span> <span class="n">actual_seq</span><span class="p">:</span>
-                <span class="n">ost</span><span class="o">.</span><span class="n">LogWarning</span><span class="p">(</span><span class="s2">&quot;Sequence mismatch in chain </span><span class="si">%s</span><span class="s2">!&quot;</span>\
-                               <span class="s2">&quot; Expected &#39;</span><span class="si">%s</span><span class="s2">&#39;. Got &#39;</span><span class="si">%s</span><span class="s2">&#39;&quot;</span> \
-                               <span class="o">%</span> <span class="p">(</span><span class="n">chain</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">expected_seq</span><span class="p">,</span> <span class="n">actual_seq</span><span class="p">))</span>
-    
-    <span class="c1"># report ring punchings</span>
-    <span class="n">rings</span> <span class="o">=</span> <span class="n">GetRings</span><span class="p">(</span><span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="p">)</span>
-    <span class="n">ring_punches</span> <span class="o">=</span> <span class="n">GetRingPunches</span><span class="p">(</span><span class="n">rings</span><span class="p">,</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="p">)</span>
-    <span class="k">for</span> <span class="n">res</span> <span class="ow">in</span> <span class="n">ring_punches</span><span class="p">:</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogWarning</span><span class="p">(</span><span class="s2">&quot;Ring of &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot; has been punched!&quot;</span><span class="p">)</span>
-    
-    <span class="c1"># report stereo-chemical problems</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">PushVerbosityLevel</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
-    <span class="n">clashing_distances</span> <span class="o">=</span> <span class="n">mol</span><span class="o">.</span><span class="n">alg</span><span class="o">.</span><span class="n">DefaultClashingDistances</span><span class="p">()</span>
-    <span class="n">bond_stereo_chemical_param</span> <span class="o">=</span> <span class="n">mol</span><span class="o">.</span><span class="n">alg</span><span class="o">.</span><span class="n">DefaultBondStereoChemicalParams</span><span class="p">()</span>
-    <span class="n">angle_stereo_chemical_param</span> <span class="o">=</span> <span class="n">mol</span><span class="o">.</span><span class="n">alg</span><span class="o">.</span><span class="n">DefaultAngleStereoChemicalParams</span><span class="p">()</span>
-    <span class="c1"># extract problems</span>
-    <span class="n">model_src</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s2">&quot;aname!=OXT&quot;</span><span class="p">)</span>
-    <span class="n">clash_info</span> <span class="o">=</span> <span class="n">mol</span><span class="o">.</span><span class="n">alg</span><span class="o">.</span><span class="n">FilterClashes</span><span class="p">(</span><span class="n">model_src</span><span class="p">,</span> <span class="n">clashing_distances</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
-    <span class="c1"># note: 10,10 parameters below are hard coded bond-/angle-tolerances</span>
-    <span class="n">stereo_info</span> <span class="o">=</span> <span class="n">mol</span><span class="o">.</span><span class="n">alg</span><span class="o">.</span><span class="n">CheckStereoChemistry</span><span class="p">(</span><span class="n">model_src</span><span class="p">,</span>
-                                               <span class="n">bond_stereo_chemical_param</span><span class="p">,</span>
-                                               <span class="n">angle_stereo_chemical_param</span><span class="p">,</span>
-                                               <span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">PopVerbosityLevel</span><span class="p">()</span>
-    <span class="c1"># set bool props in model-residues</span>
-    <span class="n">atoms</span> <span class="o">=</span> <span class="p">[</span><span class="n">e</span><span class="o">.</span><span class="n">GetFirstAtom</span><span class="p">()</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">clash_info</span><span class="o">.</span><span class="n">GetClashList</span><span class="p">()]</span>\
-          <span class="o">+</span> <span class="p">[</span><span class="n">e</span><span class="o">.</span><span class="n">GetSecondAtom</span><span class="p">()</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">clash_info</span><span class="o">.</span><span class="n">GetClashList</span><span class="p">()]</span>\
-          <span class="o">+</span> <span class="p">[</span><span class="n">e</span><span class="o">.</span><span class="n">GetFirstAtom</span><span class="p">()</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">stereo_info</span><span class="o">.</span><span class="n">GetBondViolationList</span><span class="p">()]</span>\
-          <span class="o">+</span> <span class="p">[</span><span class="n">e</span><span class="o">.</span><span class="n">GetSecondAtom</span><span class="p">()</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">stereo_info</span><span class="o">.</span><span class="n">GetBondViolationList</span><span class="p">()]</span>\
-          <span class="o">+</span> <span class="p">[</span><span class="n">e</span><span class="o">.</span><span class="n">GetSecondAtom</span><span class="p">()</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">stereo_info</span><span class="o">.</span><span class="n">GetAngleViolationList</span><span class="p">()]</span>
-    <span class="k">for</span> <span class="n">atomui</span> <span class="ow">in</span> <span class="n">atoms</span><span class="p">:</span>
-        <span class="n">res</span> <span class="o">=</span> <span class="n">model_src</span><span class="o">.</span><span class="n">FindResidue</span><span class="p">(</span><span class="n">atomui</span><span class="o">.</span><span class="n">GetChainName</span><span class="p">(),</span> <span class="n">atomui</span><span class="o">.</span><span class="n">GetResNum</span><span class="p">())</span>
-        <span class="n">res</span><span class="o">.</span><span class="n">SetBoolProp</span><span class="p">(</span><span class="s2">&quot;stereo_chemical_problem&quot;</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
-        <span class="k">if</span> <span class="n">atomui</span><span class="o">.</span><span class="n">GetAtomName</span><span class="p">()</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;CA&quot;</span><span class="p">,</span> <span class="s2">&quot;N&quot;</span><span class="p">,</span> <span class="s2">&quot;O&quot;</span><span class="p">,</span> <span class="s2">&quot;C&quot;</span><span class="p">]:</span>
-            <span class="n">res</span><span class="o">.</span><span class="n">SetBoolProp</span><span class="p">(</span><span class="s2">&quot;stereo_chemical_problem_backbone&quot;</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
-    <span class="c1"># report bad residues</span>
-    <span class="k">for</span> <span class="n">res</span> <span class="ow">in</span> <span class="n">model_src</span><span class="o">.</span><span class="n">residues</span><span class="p">:</span>
-        <span class="k">if</span> <span class="n">res</span><span class="o">.</span><span class="n">HasProp</span><span class="p">(</span><span class="s2">&quot;stereo_chemical_problem_backbone&quot;</span><span class="p">)</span> <span class="ow">and</span>\
-           <span class="n">res</span><span class="o">.</span><span class="n">GetBoolProp</span><span class="p">(</span><span class="s2">&quot;stereo_chemical_problem_backbone&quot;</span><span class="p">):</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Stereo-chemical problem in backbone &quot;</span> <span class="o">+</span> \
-                        <span class="s2">&quot;of residue &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">res</span><span class="p">))</span>
-        <span class="k">elif</span> <span class="n">res</span><span class="o">.</span><span class="n">HasProp</span><span class="p">(</span><span class="s2">&quot;stereo_chemical_problem&quot;</span><span class="p">)</span> <span class="ow">and</span>\
-             <span class="n">res</span><span class="o">.</span><span class="n">GetBoolProp</span><span class="p">(</span><span class="s2">&quot;stereo_chemical_problem&quot;</span><span class="p">):</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Stereo-chemical problem in sidechain &quot;</span> <span class="o">+</span> \
-                        <span class="s2">&quot;of residue &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">res</span><span class="p">))</span></div>
-
-<div class="viewcode-block" id="BuildFromRawModel"><a class="viewcode-back" href="../../../modelling/pipeline.html#promod3.modelling.BuildFromRawModel">[docs]</a><span class="k">def</span> <span class="nf">BuildFromRawModel</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">use_amber_ff</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">extra_force_fields</span><span class="o">=</span><span class="nb">list</span><span class="p">()):</span>
-    <span class="sd">&#39;&#39;&#39;Build a model starting with a raw model (see :func:`BuildRawModel`).</span>
-
-<span class="sd">    This function implements a recommended pipeline to generate complete models</span>
-<span class="sd">    from a raw model. The steps are shown in detail in the code example</span>
-<span class="sd">    :ref:`above &lt;modelling_steps_example&gt;`. If you wish to use your own</span>
-<span class="sd">    pipeline, you can use that code as a starting point for your own custom</span>
-<span class="sd">    modelling pipeline. For reproducibility, we recommend that you keep copies</span>
-<span class="sd">    of custom pipelines.</span>
-
-<span class="sd">    To adapt the scoring used during loop closing, you can call</span>
-<span class="sd">    :func:`SetupDefaultBackboneScoring` and :func:`SetupDefaultAllAtomScoring`</span>
-<span class="sd">    and adapt the default scoring members. Alternatively, you can setup the</span>
-<span class="sd">    scoring manually, but you must ensure consistency yourself!</span>
-
-<span class="sd">    If the function fails to close all gaps, it will produce a warning and</span>
-<span class="sd">    return an incomplete model.</span>
-
-<span class="sd">    :param mhandle: The prepared template coordinates loaded with the input</span>
-<span class="sd">                    alignment.</span>
-<span class="sd">    :type mhandle:  :class:`ModellingHandle`</span>
-
-<span class="sd">    :param use_amber_ff: if True, use the AMBER force field instead of the def.</span>
-<span class="sd">                         CHARMM one (see :func:`ost.mol.mm.LoadAMBERForcefield`</span>
-<span class="sd">                         and :func:`ost.mol.mm.LoadCHARMMForcefield`).</span>
-<span class="sd">                         Both do a similarly good job without ligands (CHARMM</span>
-<span class="sd">                         slightly better), but you will want to be consistent</span>
-<span class="sd">                         with the optional force fields in `extra_force_fields`.</span>
-<span class="sd">    :type use_amber_ff:  :class:`bool`</span>
-
-<span class="sd">    :param extra_force_fields: Additional list of force fields to use if a </span>
-<span class="sd">                               (ligand) residue cannot be parametrized with the</span>
-<span class="sd">                               default force field. The force fields are tried</span>
-<span class="sd">                               in the order as given and ligands without an</span>
-<span class="sd">                               existing parametrization are skipped.</span>
-<span class="sd">    :type extra_force_fields:  :class:`list` of :class:`ost.mol.mm.Forcefield`</span>
-
-<span class="sd">    :return: Delivers the model as an |ost_s| entity.</span>
-<span class="sd">    :rtype: :class:`Entity &lt;ost.mol.EntityHandle&gt;`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;pipeline::BuildFromRawModel&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-    <span class="c1"># ignore empty models</span>
-    <span class="k">if</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">residue_count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogError</span><span class="p">(</span><span class="s2">&quot;Cannot perform modelling with an empty raw model.&quot;</span><span class="p">)</span>
-        <span class="k">return</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s2">&quot;Starting modelling based on a raw model.&quot;</span><span class="p">)</span>
-
-    <span class="c1"># a bit of setup</span>
-    <span class="n">fragment_db</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">LoadFragDB</span><span class="p">()</span>
-    <span class="n">structure_db</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">LoadStructureDB</span><span class="p">()</span>
-    <span class="n">torsion_sampler</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">LoadTorsionSamplerCoil</span><span class="p">()</span>
-    <span class="n">rotamer_library</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">LoadBBDepLib</span><span class="p">()</span>
-    <span class="n">merge_distance</span> <span class="o">=</span> <span class="mi">4</span>
-
-    <span class="c1"># remove terminal gaps</span>
-    <span class="n">RemoveTerminalGaps</span><span class="p">(</span><span class="n">mhandle</span><span class="p">)</span>
-
-    <span class="c1"># close gaps</span>
-    <span class="n">CloseGaps</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">merge_distance</span><span class="o">=</span><span class="n">merge_distance</span><span class="p">,</span> 
-              <span class="n">fragment_db</span><span class="o">=</span><span class="n">fragment_db</span><span class="p">,</span> <span class="n">structure_db</span><span class="o">=</span><span class="n">structure_db</span><span class="p">,</span> 
-              <span class="n">torsion_sampler</span><span class="o">=</span><span class="n">torsion_sampler</span><span class="p">)</span>
-
-    <span class="c1"># build sidechains</span>
-    <span class="n">BuildSidechains</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">merge_distance</span><span class="p">,</span> <span class="n">fragment_db</span><span class="p">,</span>
-                    <span class="n">structure_db</span><span class="p">,</span> <span class="n">torsion_sampler</span><span class="p">,</span> <span class="n">rotamer_library</span><span class="p">)</span>
-
-    <span class="c1"># minimize energy of final model using molecular mechanics</span>
-    <span class="n">MinimizeModelEnergy</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">use_amber_ff</span><span class="o">=</span><span class="n">use_amber_ff</span><span class="p">,</span>
-                        <span class="n">extra_force_fields</span><span class="o">=</span><span class="n">extra_force_fields</span><span class="p">)</span>
-
-    <span class="c1"># sanity checks</span>
-    <span class="n">CheckFinalModel</span><span class="p">(</span><span class="n">mhandle</span><span class="p">)</span>
-
-    <span class="c1"># done</span>
-    <span class="k">return</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span></div>
-
-<span class="c1"># these methods will be exported into module</span>
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;BuildFromRawModel&#39;</span><span class="p">,</span> <span class="s1">&#39;BuildSidechains&#39;</span><span class="p">,</span> 
-           <span class="s1">&#39;MinimizeModelEnergy&#39;</span><span class="p">,</span> <span class="s1">&#39;CheckFinalModel&#39;</span><span class="p">)</span>
-</pre></div>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
-        <div class="sphinxsidebarwrapper"><div class="relations">
-<h3>Related Topics</h3>
-<ul>
-  <li><a href="../../../index.html">Documentation overview</a><ul>
-  <li><a href="../../index.html">Module code</a><ul>
-  <li><a href="../../promod3.html">promod3</a><ul>
-  </ul></li>
-  </ul></li>
-  </ul></li>
-</ul>
-</div>
-<div id="searchbox" style="display: none" role="search">
-  <h3>Quick search</h3>
-    <form class="search" action="../../../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
-      
-      |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
-      
-    </div>
-
-    
-
-    
-  </body>
-</html>
\ No newline at end of file
diff --git a/doc/html/_modules/promod3/modelling/_reconstruct_sidechains.html b/doc/html/_modules/promod3/modelling/_reconstruct_sidechains.html
deleted file mode 100644
index 61d1d54b..00000000
--- a/doc/html/_modules/promod3/modelling/_reconstruct_sidechains.html
+++ /dev/null
@@ -1,625 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>promod3.modelling._reconstruct_sidechains &mdash; ProMod3 1.3.0 documentation</title>
-    
-    <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
-    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../../../',
-        VERSION:     '1.3.0',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../../../_static/jquery.js"></script>
-    <script type="text/javascript" src="../../../_static/underscore.js"></script>
-    <script type="text/javascript" src="../../../_static/doctools.js"></script>
-    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../../../index.html" />
-    <link rel="up" title="promod3" href="../../promod3.html" />
-   
-  <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
-  
-  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
-
-  </head>
-  <body role="document">
-  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body" role="main">
-            
-  <h1>Source code for promod3.modelling._reconstruct_sidechains</h1><div class="highlight"><pre>
-<span></span><span class="c1"># Copyright (c) 2013-2018, SIB - Swiss Institute of Bioinformatics and </span>
-<span class="c1">#                          Biozentrum - University of Basel</span>
-<span class="c1"># </span>
-<span class="c1"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<span class="c1"># you may not use this file except in compliance with the License.</span>
-<span class="c1"># You may obtain a copy of the License at</span>
-<span class="c1"># </span>
-<span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
-<span class="c1"># </span>
-<span class="c1"># Unless required by applicable law or agreed to in writing, software</span>
-<span class="c1"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<span class="c1"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<span class="c1"># See the License for the specific language governing permissions and</span>
-<span class="c1"># limitations under the License.</span>
-
-
-<span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">geom</span><span class="p">,</span> <span class="n">mol</span><span class="p">,</span> <span class="n">conop</span>
-<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">core</span><span class="p">,</span> <span class="n">sidechain</span>
-<span class="kn">import</span> <span class="nn">traceback</span>
-
-<span class="c1">###############################################################################</span>
-<span class="c1"># helper functions</span>
-<span class="k">def</span> <span class="nf">_GetRotamerIDs</span><span class="p">(</span><span class="n">res_list</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Return list (length = len(res_list)) of rotamer IDs for all residues.&#39;&#39;&#39;</span>
-    <span class="n">rotamer_ids</span> <span class="o">=</span> <span class="p">[</span><span class="n">sidechain</span><span class="o">.</span><span class="n">ALA</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">res_list</span><span class="p">)</span>
-    <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">r</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">res_list</span><span class="p">):</span>
-        <span class="n">rot_id</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">TLCToRotID</span><span class="p">(</span><span class="n">r</span><span class="o">.</span><span class="n">GetName</span><span class="p">())</span>
-        <span class="k">if</span> <span class="n">rot_id</span> <span class="o">==</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">XXX</span><span class="p">:</span>
-            <span class="k">continue</span> <span class="c1"># no idea what it is, so we stick with ALA </span>
-        <span class="n">rotamer_ids</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">rot_id</span>
-    <span class="k">return</span> <span class="n">rotamer_ids</span>
-
-<span class="k">def</span> <span class="nf">_GetPhiAngle</span><span class="p">(</span><span class="n">r</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Extract phi angle for residue r.&#39;&#39;&#39;</span>
-    <span class="c1"># def. fallback = helix</span>
-    <span class="n">phi</span> <span class="o">=</span> <span class="o">-</span><span class="mf">1.0472</span>
-    <span class="c1"># try to get phi from torsion angles</span>
-    <span class="n">tor</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">GetPhiTorsion</span><span class="p">()</span>
-    <span class="k">if</span> <span class="n">tor</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
-        <span class="n">phi</span> <span class="o">=</span> <span class="n">tor</span><span class="o">.</span><span class="n">GetAngle</span><span class="p">()</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="n">r_prev</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">prev</span>
-        <span class="k">if</span> <span class="n">r_prev</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">mol</span><span class="o">.</span><span class="n">InSequence</span><span class="p">(</span><span class="n">r_prev</span><span class="p">,</span> <span class="n">r</span><span class="o">.</span><span class="n">handle</span><span class="p">):</span>
-            <span class="n">c_prev</span> <span class="o">=</span> <span class="n">r_prev</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="s2">&quot;C&quot;</span><span class="p">)</span>
-            <span class="n">n</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="s2">&quot;N&quot;</span><span class="p">)</span>
-            <span class="n">ca</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="s2">&quot;CA&quot;</span><span class="p">)</span>
-            <span class="n">c</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="s2">&quot;C&quot;</span><span class="p">)</span>
-            <span class="k">if</span> <span class="n">c_prev</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">n</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">ca</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">c</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
-                <span class="n">phi</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">DihedralAngle</span><span class="p">(</span><span class="n">c_prev</span><span class="o">.</span><span class="n">GetPos</span><span class="p">(),</span><span class="n">n</span><span class="o">.</span><span class="n">GetPos</span><span class="p">(),</span>
-                                         <span class="n">ca</span><span class="o">.</span><span class="n">GetPos</span><span class="p">(),</span><span class="n">c</span><span class="o">.</span><span class="n">GetPos</span><span class="p">())</span>
-    <span class="k">return</span> <span class="n">phi</span>
-
-<span class="k">def</span> <span class="nf">_GetPsiAngle</span><span class="p">(</span><span class="n">r</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Extract psi angle for residue r.&#39;&#39;&#39;</span>
-    <span class="c1"># def. fallback = helix </span>
-    <span class="n">psi</span> <span class="o">=</span> <span class="o">-</span><span class="mf">0.7854</span>
-    <span class="c1"># try to get psi from torsion angles</span>
-    <span class="n">tor</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">GetPsiTorsion</span><span class="p">()</span>
-    <span class="k">if</span> <span class="n">tor</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
-        <span class="n">psi</span> <span class="o">=</span> <span class="n">tor</span><span class="o">.</span><span class="n">GetAngle</span><span class="p">()</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="n">r_next</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">next</span>
-        <span class="k">if</span> <span class="n">r_next</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">mol</span><span class="o">.</span><span class="n">InSequence</span><span class="p">(</span><span class="n">r</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">r_next</span><span class="p">):</span>
-            <span class="n">n</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="s2">&quot;N&quot;</span><span class="p">)</span>
-            <span class="n">ca</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="s2">&quot;CA&quot;</span><span class="p">)</span>
-            <span class="n">c</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="s2">&quot;C&quot;</span><span class="p">)</span>
-            <span class="n">n_next</span> <span class="o">=</span> <span class="n">r_next</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="s2">&quot;N&quot;</span><span class="p">)</span>
-            <span class="k">if</span> <span class="n">n</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">ca</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">c</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">n_next</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
-                <span class="n">psi</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">DihedralAngle</span><span class="p">(</span><span class="n">n</span><span class="o">.</span><span class="n">GetPos</span><span class="p">(),</span> <span class="n">ca</span><span class="o">.</span><span class="n">GetPos</span><span class="p">(),</span>
-                                         <span class="n">c</span><span class="o">.</span><span class="n">GetPos</span><span class="p">(),</span> <span class="n">n_next</span><span class="o">.</span><span class="n">GetPos</span><span class="p">())</span>
-    <span class="k">return</span> <span class="n">psi</span>
-
-<span class="k">def</span> <span class="nf">_GetDihedrals</span><span class="p">(</span><span class="n">res_list</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Extract dihedral angles for all residues.</span>
-<span class="sd">    Returns phi and psi angles as 2 lists with length = len(res_list).</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;sidechain::_GetDihedrals&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-    <span class="n">phi_angles</span> <span class="o">=</span> <span class="p">[</span><span class="mf">0.0</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">res_list</span><span class="p">)</span>
-    <span class="n">psi_angles</span> <span class="o">=</span> <span class="p">[</span><span class="mf">0.0</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">res_list</span><span class="p">)</span>
-    <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">r</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">res_list</span><span class="p">):</span>
-        <span class="n">phi_angles</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">_GetPhiAngle</span><span class="p">(</span><span class="n">r</span><span class="p">)</span>
-        <span class="n">psi_angles</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">_GetPsiAngle</span><span class="p">(</span><span class="n">r</span><span class="p">)</span>
-    <span class="k">return</span> <span class="n">phi_angles</span><span class="p">,</span> <span class="n">psi_angles</span>
-
-<span class="k">def</span> <span class="nf">_AddBackboneFrameResidues</span><span class="p">(</span><span class="n">frame_residues</span><span class="p">,</span> <span class="n">res_list</span><span class="p">,</span> <span class="n">rotamer_ids</span><span class="p">,</span>
-                              <span class="n">rotamer_constructor</span><span class="p">,</span> <span class="n">phi_angles</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Update frame_residues (list) with BackboneFrameResidues for res_list.&#39;&#39;&#39;</span>
-    <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">r</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">res_list</span><span class="p">):</span>
-        <span class="k">try</span><span class="p">:</span>
-            <span class="n">frame_residue</span> <span class="o">=</span> <span class="n">rotamer_constructor</span><span class="o">.</span><span class="n">ConstructBackboneFrameResidue</span><span class="p">(</span>\
-                                <span class="n">r</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">rotamer_ids</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">i</span><span class="p">,</span>
-                                <span class="n">phi_angles</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">r</span><span class="o">.</span><span class="n">HasProp</span><span class="p">(</span><span class="s2">&quot;n_ter&quot;</span><span class="p">),</span>
-                                <span class="n">r</span><span class="o">.</span><span class="n">HasProp</span><span class="p">(</span><span class="s2">&quot;c_ter&quot;</span><span class="p">))</span>
-            <span class="n">frame_residues</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">frame_residue</span><span class="p">)</span>
-        <span class="k">except</span><span class="p">:</span>
-            <span class="k">continue</span>
-
-<span class="k">def</span> <span class="nf">_AddLigandFrameResidues</span><span class="p">(</span><span class="n">frame_residues</span><span class="p">,</span> <span class="n">ent_lig</span><span class="p">,</span> <span class="n">rotamer_constructor</span><span class="p">,</span> <span class="n">offset</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Update frame_residues (list) with FrameResidues for res. in ent_lig.</span>
-<span class="sd">    Set offset &gt;= number of non-ligand residues (used for residue_index).</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="c1"># parse ligand residues</span>
-    <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">res</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">ent_lig</span><span class="o">.</span><span class="n">residues</span><span class="p">):</span>
-        <span class="n">res_idx</span> <span class="o">=</span> <span class="n">offset</span> <span class="o">+</span> <span class="n">i</span>
-        <span class="n">is_done</span> <span class="o">=</span> <span class="bp">False</span>
-        <span class="c1"># special treatment for peptides</span>
-        <span class="k">if</span> <span class="n">res</span><span class="o">.</span><span class="n">IsPeptideLinking</span><span class="p">():</span>
-            <span class="n">rot_id</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">TLCToRotID</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">GetName</span><span class="p">())</span>
-            <span class="k">if</span> <span class="n">rot_id</span> <span class="o">!=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">XXX</span><span class="p">:</span>
-                <span class="c1"># get more info</span>
-                <span class="n">phi</span> <span class="o">=</span> <span class="n">_GetPhiAngle</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
-                <span class="n">r_prev</span> <span class="o">=</span> <span class="n">res</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">prev</span>
-                <span class="n">n_ter</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">r_prev</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> \
-                        <span class="ow">or</span> <span class="ow">not</span> <span class="n">mol</span><span class="o">.</span><span class="n">InSequence</span><span class="p">(</span><span class="n">r_prev</span><span class="p">,</span> <span class="n">res</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
-                <span class="n">r_next</span> <span class="o">=</span> <span class="n">res</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">next</span>
-                <span class="n">c_ter</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">r_next</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> \
-                        <span class="ow">or</span> <span class="ow">not</span> <span class="n">mol</span><span class="o">.</span><span class="n">InSequence</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">r_next</span><span class="p">)</span>
-                <span class="c1"># try to add frame residues (ignore exceptions)</span>
-                <span class="k">try</span><span class="p">:</span>
-                    <span class="n">fr1</span> <span class="o">=</span> <span class="n">rotamer_constructor</span><span class="o">.</span><span class="n">ConstructBackboneFrameResidue</span><span class="p">(</span>\
-                              <span class="n">res</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">rot_id</span><span class="p">,</span> <span class="n">res_idx</span><span class="p">,</span>
-                              <span class="n">phi</span><span class="p">,</span> <span class="n">n_ter</span><span class="p">,</span> <span class="n">c_ter</span><span class="p">)</span>
-
-                    <span class="n">fr2</span> <span class="o">=</span> <span class="n">rotamer_constructor</span><span class="o">.</span><span class="n">ConstructSidechainFrameResidue</span><span class="p">(</span>\
-                              <span class="n">res</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">rot_id</span><span class="p">,</span> <span class="n">res_idx</span><span class="p">)</span>
-
-                    <span class="n">frame_residues</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="n">fr1</span><span class="p">,</span><span class="n">fr2</span><span class="p">])</span>
-                <span class="k">except</span><span class="p">:</span>
-                    <span class="k">pass</span>   <span class="c1"># ignore peptide treatment and treat below</span>
-                <span class="k">else</span><span class="p">:</span>
-                    <span class="n">is_done</span> <span class="o">=</span> <span class="bp">True</span>
-        <span class="c1"># if it failed, treat it as an unknown entity</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="n">is_done</span><span class="p">:</span>
-            <span class="c1"># try to add frame residues (skip exceptions)</span>
-            <span class="k">try</span><span class="p">:</span>
-                <span class="c1"># NOTES:</span>
-                <span class="c1"># - ConstructFrameResidueHeuristic has fall back if res unknown</span>
-                <span class="c1"># - it only deals with few possible ligand cases and has not</span>
-                <span class="c1">#   been tested extensively!</span>
-                <span class="n">comp_lib</span> <span class="o">=</span> <span class="n">conop</span><span class="o">.</span><span class="n">GetDefaultLib</span><span class="p">()</span>
-                <span class="n">fr</span> <span class="o">=</span> <span class="n">rotamer_constructor</span><span class="o">.</span><span class="n">ConstructFrameResidueHeuristic</span><span class="p">(</span>\
-                         <span class="n">res</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">res_idx</span><span class="p">,</span> <span class="n">comp_lib</span><span class="p">)</span>
-                <span class="n">frame_residues</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">fr</span><span class="p">)</span>
-            <span class="k">except</span><span class="p">:</span>
-                <span class="k">continue</span>
-
-<span class="k">def</span> <span class="nf">_AddSidechainFrameResidues</span><span class="p">(</span><span class="n">frame_residues</span><span class="p">,</span> <span class="n">incomplete_sidechains</span><span class="p">,</span>
-                               <span class="n">keep_sidechains</span><span class="p">,</span> <span class="n">res_list</span><span class="p">,</span> <span class="n">rotamer_ids</span><span class="p">,</span>
-                               <span class="n">rotamer_constructor</span><span class="p">,</span> <span class="n">cystein_indices</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Update frame_residues (list) with SidechainFrameResidues for res_list,</span>
-<span class="sd">    incomplete_sidechains (list of indices) with sidechains to be constructed,</span>
-<span class="sd">    and (if given) cystein_indices (list of indices) with all CYS (appended).</span>
-<span class="sd">    Each residue can only end up in one of the 3 lists.</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="k">if</span> <span class="n">keep_sidechains</span><span class="p">:</span>
-        <span class="c1"># try to generate frame residues for all existing side chains</span>
-        <span class="c1"># skip non-existing sidechains and CYS (if cystein_indices) and update</span>
-        <span class="c1"># incomplete_sidechains and cystein_indices</span>
-        <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">r</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">res_list</span><span class="p">):</span>
-
-            <span class="k">if</span> <span class="n">cystein_indices</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">rotamer_ids</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">CYS</span><span class="p">:</span>
-                <span class="n">cystein_indices</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
-                <span class="k">continue</span>
-
-            <span class="k">try</span><span class="p">:</span>
-                <span class="n">frame_residue</span> <span class="o">=</span> <span class="n">rotamer_constructor</span><span class="o">.</span><span class="n">ConstructSidechainFrameResidue</span><span class="p">(</span>\
-                                    <span class="n">r</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">rotamer_ids</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">i</span><span class="p">)</span>
-                <span class="n">frame_residues</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">frame_residue</span><span class="p">)</span>
-            <span class="k">except</span><span class="p">:</span>
-                <span class="n">incomplete_sidechains</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="c1"># no frame residues to create, just update incomplete_sidechains</span>
-        <span class="c1"># and cystein_indices if needed</span>
-        <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">r</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">res_list</span><span class="p">):</span>
-
-            <span class="k">if</span> <span class="n">cystein_indices</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">rotamer_ids</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">CYS</span><span class="p">:</span>
-                <span class="n">cystein_indices</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
-                <span class="k">continue</span>
-
-            <span class="n">incomplete_sidechains</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
-
-<span class="k">def</span> <span class="nf">_AddCysteinFrameResidues</span><span class="p">(</span><span class="n">frame_residues</span><span class="p">,</span> <span class="n">incomplete_sidechains</span><span class="p">,</span>
-                             <span class="n">keep_sidechains</span><span class="p">,</span> <span class="n">res_list</span><span class="p">,</span> <span class="n">rotamer_ids</span><span class="p">,</span>
-                             <span class="n">rot_constructor</span><span class="p">,</span> <span class="n">cystein_indices</span><span class="p">,</span>
-                             <span class="n">disulfid_indices</span><span class="p">,</span> <span class="n">disulfid_rotamers</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Update frame_residues (list) with cysteins.</span>
-<span class="sd">    Parameters as in _AddSidechainFrameResidues.</span>
-<span class="sd">    Some cysteins (in disulfid_indices) get special treatment as disulfid</span>
-<span class="sd">    bridges (disulfid_indices, disulfid_rotamers from _GetDisulfidBridges).</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="c1"># handle cysteins participating in a disulfid bond</span>
-    <span class="k">for</span> <span class="n">cys_idx</span><span class="p">,</span> <span class="n">cys_rot</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">disulfid_indices</span><span class="p">,</span> <span class="n">disulfid_rotamers</span><span class="p">):</span>
-        <span class="c1"># add FrameResidue</span>
-        <span class="n">frame_residues</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cys_rot</span><span class="o">.</span><span class="n">ToFrameResidue</span><span class="p">(</span><span class="n">cys_idx</span><span class="p">))</span>
-        <span class="c1"># set the position in the proteins residues</span>
-        <span class="n">cys_rot</span><span class="o">.</span><span class="n">ApplyOnResidue</span><span class="p">(</span><span class="n">res_list</span><span class="p">[</span><span class="n">cys_idx</span><span class="p">]</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span>
-                               <span class="n">consider_hydrogens</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
-        <span class="n">sidechain</span><span class="o">.</span><span class="n">ConnectSidechain</span><span class="p">(</span><span class="n">res_list</span><span class="p">[</span><span class="n">cys_idx</span><span class="p">]</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">CYS</span><span class="p">)</span>
-
-    <span class="c1"># add remaining ones according the given flags</span>
-    <span class="k">for</span> <span class="n">idx</span> <span class="ow">in</span> <span class="n">cystein_indices</span><span class="p">:</span>
-        <span class="k">if</span> <span class="n">idx</span> <span class="ow">in</span> <span class="n">disulfid_indices</span><span class="p">:</span>
-            <span class="k">continue</span> <span class="c1"># already handled</span>
-        <span class="k">if</span> <span class="n">keep_sidechains</span><span class="p">:</span>
-            <span class="k">try</span><span class="p">:</span>
-                <span class="n">frame_residue</span> <span class="o">=</span> <span class="n">rot_constructor</span><span class="o">.</span><span class="n">ConstructSidechainFrameResidue</span><span class="p">(</span>\
-                                    <span class="n">res_list</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">rotamer_ids</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span>
-                                    <span class="n">idx</span><span class="p">)</span>
-                <span class="n">frame_residues</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">frame_residue</span><span class="p">)</span>
-            <span class="k">except</span><span class="p">:</span>
-                <span class="n">incomplete_sidechains</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span> 
-        <span class="k">else</span><span class="p">:</span>
-            <span class="n">incomplete_sidechains</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span>
-
-<span class="k">def</span> <span class="nf">_GetRotamerGroup</span><span class="p">(</span><span class="n">res_handle</span><span class="p">,</span> <span class="n">rot_id</span><span class="p">,</span> <span class="n">res_idx</span><span class="p">,</span> <span class="n">rot_lib</span><span class="p">,</span> <span class="n">rot_constructor</span><span class="p">,</span>
-                     <span class="n">phi</span><span class="p">,</span> <span class="n">psi</span><span class="p">,</span> <span class="n">use_frm</span><span class="p">,</span> <span class="n">bbdep</span><span class="p">,</span> <span class="n">probability_cutoff</span> <span class="o">=</span> <span class="mf">0.98</span><span class="p">):</span>
-    <span class="k">if</span> <span class="n">use_frm</span><span class="p">:</span>
-        <span class="k">if</span> <span class="n">bbdep</span><span class="p">:</span>
-            <span class="k">return</span> <span class="n">rot_constructor</span><span class="o">.</span><span class="n">ConstructFRMRotamerGroup</span><span class="p">(</span><span class="n">res_handle</span><span class="p">,</span> <span class="n">rot_id</span><span class="p">,</span>
-                                                            <span class="n">res_idx</span><span class="p">,</span> <span class="n">rot_lib</span><span class="p">,</span>
-                                                            <span class="n">phi</span><span class="p">,</span> <span class="n">psi</span><span class="p">,</span>
-                                                            <span class="n">probability_cutoff</span><span class="p">)</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="k">return</span> <span class="n">rot_constructor</span><span class="o">.</span><span class="n">ConstructFRMRotamerGroup</span><span class="p">(</span><span class="n">res_handle</span><span class="p">,</span> <span class="n">rot_id</span><span class="p">,</span>
-                                                            <span class="n">res_idx</span><span class="p">,</span> <span class="n">rot_lib</span><span class="p">,</span>
-                                                            <span class="n">probability_cutoff</span><span class="p">)</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="k">if</span> <span class="n">bbdep</span><span class="p">:</span>
-            <span class="k">return</span> <span class="n">rot_constructor</span><span class="o">.</span><span class="n">ConstructRRMRotamerGroup</span><span class="p">(</span><span class="n">res_handle</span><span class="p">,</span> <span class="n">rot_id</span><span class="p">,</span>
-                                                            <span class="n">res_idx</span><span class="p">,</span> <span class="n">rot_lib</span><span class="p">,</span>
-                                                            <span class="n">phi</span><span class="p">,</span> <span class="n">psi</span><span class="p">,</span>
-                                                            <span class="n">probability_cutoff</span><span class="p">)</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="k">return</span> <span class="n">rot_constructor</span><span class="o">.</span><span class="n">ConstructRRMRotamerGroup</span><span class="p">(</span><span class="n">res_handle</span><span class="p">,</span> <span class="n">rot_id</span><span class="p">,</span>
-                                                            <span class="n">res_idx</span><span class="p">,</span> <span class="n">rot_lib</span><span class="p">,</span>
-                                                            <span class="n">probability_cutoff</span><span class="p">)</span>
-
-<span class="k">def</span> <span class="nf">_GetRotamerGroups</span><span class="p">(</span><span class="n">res_list</span><span class="p">,</span> <span class="n">rot_ids</span><span class="p">,</span> <span class="n">indices</span><span class="p">,</span> <span class="n">rot_lib</span><span class="p">,</span> <span class="n">rot_constructor</span><span class="p">,</span>
-                      <span class="n">phi_angles</span><span class="p">,</span> <span class="n">psi_angles</span><span class="p">,</span> <span class="n">use_frm</span><span class="p">,</span> <span class="n">bbdep</span><span class="p">,</span> <span class="n">frame_residues</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Get list of rotamer groups from subset of res_list.</span>
-<span class="sd">    Residues are chosen as res_list[i] for i in indices and only if a rotamer</span>
-<span class="sd">    group can be created.</span>
-<span class="sd">    Rotamer groups are filtered to keep only best ones (given frame).</span>
-<span class="sd">    Returns list of rotamer groups and list of res. indices they belong to.</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;sidechain::_GetRotamerGroups&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-
-    <span class="c1"># res.index (res_list[i]) for each modelled sc</span>
-    <span class="n">residues_with_rotamer_group</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-    <span class="c1">#  linked to residue in residues_with_rotamer_group</span>
-    <span class="n">rotamer_groups</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-    <span class="c1"># get frame for score evaluation</span>
-    <span class="n">frame</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">frame_residues</span><span class="p">)</span>
-    <span class="c1"># build rotamers for chosen sidechains</span>
-    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">indices</span><span class="p">:</span>
-        <span class="c1"># get rotamer ID</span>
-        <span class="n">r</span> <span class="o">=</span> <span class="n">res_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
-        <span class="n">rot_id</span> <span class="o">=</span> <span class="n">rot_ids</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
-
-        <span class="k">if</span> <span class="n">rot_id</span> <span class="o">==</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">CYS</span><span class="p">:</span>
-            <span class="n">rot_id</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">CYH</span>
-
-        <span class="k">if</span> <span class="n">rot_id</span> <span class="o">==</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">PRO</span><span class="p">:</span>
-            <span class="n">tor</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">GetOmegaTorsion</span><span class="p">()</span>
-            <span class="n">omega</span> <span class="o">=</span> <span class="bp">None</span>
-            <span class="k">if</span> <span class="n">tor</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
-                <span class="n">omega</span> <span class="o">=</span> <span class="n">tor</span><span class="o">.</span><span class="n">GetAngle</span><span class="p">()</span>
-            <span class="k">elif</span> <span class="n">i</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-                <span class="c1"># fallback computation of omega as in OST-code</span>
-                <span class="n">prev</span> <span class="o">=</span> <span class="n">res_list</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
-                <span class="k">if</span> <span class="n">prev</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">prev</span><span class="o">.</span><span class="n">IsPeptideLinking</span><span class="p">():</span>
-                    <span class="n">ca_prev</span> <span class="o">=</span> <span class="n">prev</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="s2">&quot;CA&quot;</span><span class="p">)</span>
-                    <span class="n">c_prev</span> <span class="o">=</span> <span class="n">prev</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="s2">&quot;C&quot;</span><span class="p">)</span>
-                    <span class="n">n</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="s2">&quot;N&quot;</span><span class="p">)</span>
-                    <span class="n">ca</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="s2">&quot;CA&quot;</span><span class="p">)</span>
-                    <span class="n">valid</span> <span class="o">=</span> <span class="n">ca_prev</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">c_prev</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> \
-                            <span class="ow">and</span> <span class="n">n</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">ca</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span>
-                    <span class="k">if</span> <span class="n">valid</span> <span class="ow">and</span> <span class="n">mol</span><span class="o">.</span><span class="n">BondExists</span><span class="p">(</span><span class="n">c_prev</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">n</span><span class="o">.</span><span class="n">handle</span><span class="p">):</span>
-                        <span class="n">omega</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">DihedralAngle</span><span class="p">(</span><span class="n">ca_prev</span><span class="o">.</span><span class="n">GetPos</span><span class="p">(),</span>
-                                                   <span class="n">c_prev</span><span class="o">.</span><span class="n">GetPos</span><span class="p">(),</span>
-                                                   <span class="n">n</span><span class="o">.</span><span class="n">GetPos</span><span class="p">(),</span> <span class="n">ca</span><span class="o">.</span><span class="n">GetPos</span><span class="p">())</span>
-            <span class="c1"># omega not set if prev. res. missing</span>
-            <span class="k">if</span> <span class="n">omega</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
-                <span class="k">if</span> <span class="nb">abs</span><span class="p">(</span><span class="n">omega</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mf">1.57</span><span class="p">:</span>
-                    <span class="n">rot_id</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">CPR</span>
-                <span class="k">else</span><span class="p">:</span>
-                    <span class="n">rot_id</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">TPR</span>
-
-        <span class="c1"># get RotamerGroup</span>
-        <span class="k">try</span><span class="p">:</span>
-            <span class="n">rot_group</span> <span class="o">=</span> <span class="n">_GetRotamerGroup</span><span class="p">(</span><span class="n">r</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">rot_id</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">rot_lib</span><span class="p">,</span>
-                                         <span class="n">rot_constructor</span><span class="p">,</span> <span class="n">phi_angles</span><span class="p">[</span><span class="n">i</span><span class="p">],</span>
-                                         <span class="n">psi_angles</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">use_frm</span><span class="p">,</span> <span class="n">bbdep</span><span class="p">)</span>
-        <span class="k">except</span><span class="p">:</span>
-            <span class="k">continue</span>
-        <span class="c1"># keep best ones</span>
-        <span class="n">rot_group</span><span class="o">.</span><span class="n">SetFrameEnergy</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span>
-        <span class="n">rot_group</span><span class="o">.</span><span class="n">ApplySelfEnergyThresh</span><span class="p">()</span>
-        <span class="n">rotamer_groups</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">rot_group</span><span class="p">)</span>
-        <span class="n">residues_with_rotamer_group</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
-
-    <span class="k">return</span> <span class="n">rotamer_groups</span><span class="p">,</span> <span class="n">residues_with_rotamer_group</span>
-
-<span class="k">def</span> <span class="nf">_GetDisulfidBridges</span><span class="p">(</span><span class="n">frame_residues</span><span class="p">,</span> <span class="n">keep_sidechains</span><span class="p">,</span> <span class="n">cystein_indices</span><span class="p">,</span> 
-                        <span class="n">res_list</span><span class="p">,</span> <span class="n">rotamer_library</span><span class="p">,</span> <span class="n">use_frm</span><span class="p">,</span> <span class="n">bbdep</span><span class="p">,</span> 
-                        <span class="n">rotamer_constructor</span><span class="p">,</span> <span class="n">phi_angles</span><span class="p">,</span> <span class="n">psi_angles</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Get disulfid bridges for CYS and according rotamers.</span>
-<span class="sd">    CYS are identified by by items in cystein_indices (into res_list).</span>
-<span class="sd">    Returns: disulfid_indices: list of res. index in bridge,</span>
-<span class="sd">             disulfid_rotamers: list of rotamers (best one for bridge).</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="c1"># this is required for the disulfid score evaluation</span>
-    <span class="n">frame</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">frame_residues</span><span class="p">)</span>
-
-    <span class="c1"># some info we have to keep track of when evaluating disulfid bonds</span>
-    <span class="n">cystein_rot_groups</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-    <span class="n">cys_ca_positions</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-    <span class="n">cys_cb_positions</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-    <span class="n">indices_with_rot_groups</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-
-    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">cystein_indices</span><span class="p">:</span>
-        <span class="c1"># check ca, cb</span>
-        <span class="n">r</span> <span class="o">=</span> <span class="n">res_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
-        <span class="n">ca</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="s2">&quot;CA&quot;</span><span class="p">)</span>
-        <span class="n">cb</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="s2">&quot;CB&quot;</span><span class="p">)</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">ca</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">cb</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()):</span>
-            <span class="k">continue</span>
-        <span class="n">cys_ca_positions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ca</span><span class="o">.</span><span class="n">GetPos</span><span class="p">())</span>
-        <span class="n">cys_cb_positions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cb</span><span class="o">.</span><span class="n">GetPos</span><span class="p">())</span>
-
-        <span class="c1"># get RotamerGroup in case of cysteins, we do FRM in any case...</span>
-        <span class="c1"># If we&#39;re suposed to keep the existing sidechains and the processed</span>
-        <span class="c1"># cystein contains all required atoms, we manually construct an FRM</span>
-        <span class="c1"># rotamer to still allow the rotamer to enter the disulfid bridge </span>
-        <span class="c1"># resolving algorithm.  </span>
-        <span class="n">rot_group</span> <span class="o">=</span> <span class="bp">None</span>
-        <span class="k">if</span> <span class="n">keep_sidechains</span><span class="p">:</span>
-            <span class="n">sg</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="s2">&quot;SG&quot;</span><span class="p">)</span>
-            <span class="k">if</span> <span class="n">sg</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
-                <span class="n">particle</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">Particle</span><span class="p">(</span><span class="n">sidechain</span><span class="o">.</span><span class="n">SidechainParticle</span><span class="o">.</span><span class="n">SParticle</span><span class="p">,</span> 
-                                              <span class="n">sg</span><span class="o">.</span><span class="n">GetPos</span><span class="p">(),</span>
-                                              <span class="o">-</span><span class="mf">0.19</span><span class="p">,</span> <span class="s2">&quot;SG&quot;</span><span class="p">)</span>   
-                <span class="n">particle_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">particle</span><span class="p">]</span>
-                <span class="c1"># The temperature and self internal_e_prefactor parameter have </span>
-                <span class="c1"># been copied from the SCWRLRotamerConstructor. Hacky...</span>
-                <span class="n">frm_rotamer</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">FRMRotamer</span><span class="p">(</span><span class="n">particle_list</span><span class="p">,</span> 
-                                                   <span class="mf">1.69</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mf">4.07</span><span class="p">)</span>
-                <span class="n">frm_rotamer</span><span class="o">.</span><span class="n">AddSubrotamerDefinition</span><span class="p">([</span><span class="mi">0</span><span class="p">])</span>               
-                <span class="n">frm_rotamer</span><span class="o">.</span><span class="n">SetInternalEnergy</span><span class="p">(</span><span class="mf">0.0</span><span class="p">)</span>
-                <span class="n">rot_group</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">FRMRotamerGroup</span><span class="p">([</span><span class="n">frm_rotamer</span><span class="p">],</span> <span class="n">i</span><span class="p">)</span>
-
-        <span class="k">if</span> <span class="n">rot_group</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
-            <span class="n">rot_group</span> <span class="o">=</span> <span class="n">_GetRotamerGroup</span><span class="p">(</span><span class="n">r</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">CYD</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> 
-                                         <span class="n">rotamer_library</span><span class="p">,</span>
-                                         <span class="n">rotamer_constructor</span><span class="p">,</span> 
-                                         <span class="n">phi_angles</span><span class="p">[</span><span class="n">i</span><span class="p">],</span>
-                                         <span class="n">psi_angles</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="bp">True</span><span class="p">,</span> <span class="n">bbdep</span><span class="p">)</span>
-        <span class="n">rot_group</span><span class="o">.</span><span class="n">AddFrameEnergy</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span>
-        <span class="n">cystein_rot_groups</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">rot_group</span><span class="p">)</span>
-        <span class="n">indices_with_rot_groups</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
-
-    <span class="n">bond_result</span><span class="p">,</span> \
-    <span class="n">rotamer_result</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">ResolveCysteins</span><span class="p">(</span><span class="n">cystein_rot_groups</span><span class="p">,</span> 
-                                               <span class="n">cys_ca_positions</span><span class="p">,</span>
-                                               <span class="n">cys_cb_positions</span><span class="p">,</span> <span class="mf">45.0</span><span class="p">,</span>
-                                               <span class="bp">True</span><span class="p">)</span>
-
-    <span class="c1"># get CYS with disulfid bonds and the chosen rotamers</span>
-    <span class="n">disulfid_indices</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-    <span class="n">disulfid_rotamers</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-  
-    <span class="k">for</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">bond_result</span><span class="p">,</span> <span class="n">rotamer_result</span><span class="p">):</span>
-        <span class="n">disulfid_indices</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">indices_with_rot_groups</span><span class="p">[</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]])</span>
-        <span class="n">disulfid_indices</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">indices_with_rot_groups</span><span class="p">[</span><span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]])</span>
-        <span class="n">disulfid_rotamers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cystein_rot_groups</span><span class="p">[</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]][</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]])</span>
-        <span class="n">disulfid_rotamers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cystein_rot_groups</span><span class="p">[</span><span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]][</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">]])</span>
-
-    <span class="k">return</span> <span class="n">disulfid_indices</span><span class="p">,</span> <span class="n">disulfid_rotamers</span>
-
-
-<span class="c1">###############################################################################</span>
-
-<div class="viewcode-block" id="ReconstructSidechains"><a class="viewcode-back" href="../../../modelling/sidechain_reconstruction.html#promod3.modelling.ReconstructSidechains">[docs]</a><span class="k">def</span> <span class="nf">ReconstructSidechains</span><span class="p">(</span><span class="n">ent</span><span class="p">,</span> <span class="n">keep_sidechains</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">build_disulfids</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
-                          <span class="n">rotamer_model</span><span class="o">=</span><span class="s2">&quot;frm&quot;</span><span class="p">,</span> <span class="n">consider_ligands</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> 
-                          <span class="n">rotamer_library</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">optimize_subrotamers</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
-                          <span class="n">graph_max_complexity</span><span class="o">=</span><span class="mi">100000000</span><span class="p">,</span> 
-                          <span class="n">graph_initial_epsilon</span><span class="o">=</span><span class="mf">0.02</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Reconstruct sidechains for the given structure.</span>
-
-<span class="sd">    :param ent: Structure for sidechain reconstruction. Note, that the sidechain</span>
-<span class="sd">                reconstruction gets directly applied on the structure itself.</span>
-<span class="sd">    :type ent:  :class:`ost.mol.EntityHandle`</span>
-
-<span class="sd">    :param keep_sidechains: Flag, whether complete sidechains in *ent* (i.e. </span>
-<span class="sd">                            containing all required atoms) should be kept rigid</span>
-<span class="sd">                            and directly be added to the frame.</span>
-<span class="sd">    :type keep_sidechains:  :class:`bool`</span>
-
-<span class="sd">    :param build_disulfids: Flag, whether possible disulfid bonds should be </span>
-<span class="sd">                            searched. If a disulfid bond is found, the two</span>
-<span class="sd">                            participating cysteins are fixed and added to</span>
-<span class="sd">                            the frame.</span>
-<span class="sd">    :type build_disulfids:  :class:`bool`</span>
-
-<span class="sd">    :param rotamer_model: Rotamer model to be used, can either be &quot;frm&quot; or &quot;rrm&quot;</span>
-<span class="sd">    :type rotamer_model:  :class:`str`</span>
-
-<span class="sd">    :param consider_ligands: Flag, whether to add ligands (anything in chain</span>
-<span class="sd">                             &#39;_&#39;) as static objects.</span>
-<span class="sd">    :type consider_ligands:  :class:`bool`</span>
-
-<span class="sd">    :param rotamer_library: A rotamer library to extract the rotamers from. The</span>
-<span class="sd">                            default is to call :meth:`&lt;LoadBBDepLib&gt;`.</span>
-<span class="sd">    :type rotamer_library:  :class:`BBDepRotamerLib` / :class:`RotamerLib`</span>
-
-<span class="sd">    :param optimize_subrotamers: Only considered when *rotamer_model*</span>
-<span class="sd">                                 is &quot;frm&quot;.</span>
-<span class="sd">                                 If set to True, the FRM solution undergoes </span>
-<span class="sd">                                 some postprocessing by calling </span>
-<span class="sd">                                 :func:`SubrotamerOptimizer` with default </span>
-<span class="sd">                                 parametrization.</span>
-<span class="sd">    :type optimize_subrotamers: :class:`bool`</span>
-
-<span class="sd">    :param graph_max_complexity: Max. complexity for</span>
-<span class="sd">                                 :meth:`RotamerGraph.TreeSolve`.</span>
-<span class="sd">    :type graph_max_complexity:  :class:`int`</span>
-<span class="sd">    :param graph_intial_epsilon: Initial epsilon for</span>
-<span class="sd">                                 :meth:`RotamerGraph.TreeSolve`.</span>
-<span class="sd">    :type graph_intial_epsilon:  :class:`float`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;modelling::ReconstructSidechains&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-
-    <span class="c1"># setup settings</span>
-    <span class="k">if</span> <span class="n">rotamer_model</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;frm&quot;</span><span class="p">:</span>
-        <span class="n">use_frm</span> <span class="o">=</span> <span class="bp">True</span>
-    <span class="k">elif</span> <span class="n">rotamer_model</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;rrm&quot;</span><span class="p">:</span>
-        <span class="n">use_frm</span> <span class="o">=</span> <span class="bp">False</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;Only </span><span class="se">\&quot;</span><span class="s2">rrm</span><span class="se">\&quot;</span><span class="s2"> and </span><span class="se">\&quot;</span><span class="s2">frm</span><span class="se">\&quot;</span><span class="s2"> allowed for rotamer_model!&quot;</span><span class="p">)</span>
-
-    <span class="k">if</span> <span class="n">rotamer_library</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span> 
-        <span class="n">rotamer_library</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">LoadBBDepLib</span><span class="p">()</span>
-    <span class="n">bbdep</span> <span class="o">=</span> <span class="bp">False</span>
-    <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">rotamer_library</span><span class="p">)</span> <span class="ow">is</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">BBDepRotamerLib</span><span class="p">:</span>
-        <span class="n">bbdep</span> <span class="o">=</span> <span class="bp">True</span>
-
-    <span class="n">rotamer_constructor</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">SCWRLRotamerConstructor</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
-    
-    <span class="c1"># take out ligand chain and any non-peptides</span>
-    <span class="n">prot</span> <span class="o">=</span> <span class="n">ent</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s2">&quot;peptide=true and cname!=&#39;_&#39;&quot;</span><span class="p">)</span>
-    
-    <span class="c1"># parse residues (all lists of length len(prot.residues))</span>
-    <span class="n">rotamer_ids</span> <span class="o">=</span> <span class="n">_GetRotamerIDs</span><span class="p">(</span><span class="n">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">)</span>
-    <span class="n">phi_angles</span><span class="p">,</span> <span class="n">psi_angles</span> <span class="o">=</span> <span class="n">_GetDihedrals</span><span class="p">(</span><span class="n">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">)</span>
-
-    <span class="c1"># set nter and cter (needed in _AddBackboneFrameResidues)</span>
-    <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">prot</span><span class="o">.</span><span class="n">chains</span><span class="p">:</span>
-        <span class="n">c</span><span class="o">.</span><span class="n">residues</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">SetIntProp</span><span class="p">(</span><span class="s2">&quot;n_ter&quot;</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-        <span class="n">c</span><span class="o">.</span><span class="n">residues</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">SetIntProp</span><span class="p">(</span><span class="s2">&quot;c_ter&quot;</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-
-    <span class="c1"># build up frame</span>
-    <span class="n">frame_residues</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>         <span class="c1"># list of frame residues connected to frame</span>
-    <span class="n">incomplete_sidechains</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>  <span class="c1"># residue indices</span>
-    <span class="n">_AddBackboneFrameResidues</span><span class="p">(</span><span class="n">frame_residues</span><span class="p">,</span> <span class="n">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">,</span> <span class="n">rotamer_ids</span><span class="p">,</span>
-                              <span class="n">rotamer_constructor</span><span class="p">,</span> <span class="n">phi_angles</span><span class="p">)</span>
-    
-    <span class="c1"># add ligands?</span>
-    <span class="k">if</span> <span class="n">consider_ligands</span><span class="p">:</span>
-        <span class="n">ligs</span> <span class="o">=</span> <span class="n">ent</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s2">&quot;cname=&#39;_&#39;&quot;</span><span class="p">)</span>
-        <span class="n">offset</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">)</span>
-        <span class="n">_AddLigandFrameResidues</span><span class="p">(</span><span class="n">frame_residues</span><span class="p">,</span> <span class="n">ligs</span><span class="p">,</span> <span class="n">rotamer_constructor</span><span class="p">,</span> <span class="n">offset</span><span class="p">)</span>
-
-    <span class="c1"># check special handling of cysteins</span>
-    <span class="k">if</span> <span class="n">build_disulfids</span><span class="p">:</span>
-        <span class="c1"># residue indices of cysteins</span>
-        <span class="n">cystein_indices</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-        <span class="c1"># update frame_residues, incomplete_sidechains, cystein_indices</span>
-        <span class="n">_AddSidechainFrameResidues</span><span class="p">(</span><span class="n">frame_residues</span><span class="p">,</span> <span class="n">incomplete_sidechains</span><span class="p">,</span>
-                                   <span class="n">keep_sidechains</span><span class="p">,</span> <span class="n">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">,</span> <span class="n">rotamer_ids</span><span class="p">,</span>
-                                   <span class="n">rotamer_constructor</span><span class="p">,</span> <span class="n">cystein_indices</span><span class="p">)</span>
-        <span class="c1"># update frame_residues, incomplete_sidechains with cysteins (if needed)</span>
-        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">cystein_indices</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-            <span class="c1"># get disulfid bridges and according rotamers</span>
-            <span class="n">disulfid_indices</span><span class="p">,</span> <span class="n">disulfid_rotamers</span> <span class="o">=</span> \
-                <span class="n">_GetDisulfidBridges</span><span class="p">(</span><span class="n">frame_residues</span><span class="p">,</span> <span class="n">keep_sidechains</span><span class="p">,</span> 
-                                    <span class="n">cystein_indices</span><span class="p">,</span> <span class="n">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">,</span>
-                                    <span class="n">rotamer_library</span><span class="p">,</span> <span class="n">use_frm</span><span class="p">,</span> <span class="n">bbdep</span><span class="p">,</span>
-                                    <span class="n">rotamer_constructor</span><span class="p">,</span> <span class="n">phi_angles</span><span class="p">,</span> <span class="n">psi_angles</span><span class="p">)</span>
-            <span class="c1"># update frame_residues, incomplete_sidechains</span>
-            <span class="n">_AddCysteinFrameResidues</span><span class="p">(</span><span class="n">frame_residues</span><span class="p">,</span> <span class="n">incomplete_sidechains</span><span class="p">,</span>
-                                     <span class="n">keep_sidechains</span><span class="p">,</span> <span class="n">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">,</span> <span class="n">rotamer_ids</span><span class="p">,</span>
-                                     <span class="n">rotamer_constructor</span><span class="p">,</span> <span class="n">cystein_indices</span><span class="p">,</span>
-                                     <span class="n">disulfid_indices</span><span class="p">,</span> <span class="n">disulfid_rotamers</span><span class="p">)</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="c1"># update frame_residues, incomplete_sidechains</span>
-        <span class="n">_AddSidechainFrameResidues</span><span class="p">(</span><span class="n">frame_residues</span><span class="p">,</span> <span class="n">incomplete_sidechains</span><span class="p">,</span>
-                                   <span class="n">keep_sidechains</span><span class="p">,</span> <span class="n">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">,</span> <span class="n">rotamer_ids</span><span class="p">,</span>
-                                   <span class="n">rotamer_constructor</span><span class="p">)</span>
-    
-    <span class="c1"># get rotamer groups and residues they&#39;re linked to</span>
-    <span class="n">rotamer_groups</span><span class="p">,</span> <span class="n">residues_with_rotamer_group</span> <span class="o">=</span> \
-        <span class="n">_GetRotamerGroups</span><span class="p">(</span><span class="n">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">,</span> <span class="n">rotamer_ids</span><span class="p">,</span> <span class="n">incomplete_sidechains</span><span class="p">,</span>
-                          <span class="n">rotamer_library</span><span class="p">,</span> <span class="n">rotamer_constructor</span><span class="p">,</span> <span class="n">phi_angles</span><span class="p">,</span>
-                          <span class="n">psi_angles</span><span class="p">,</span> <span class="n">use_frm</span><span class="p">,</span> <span class="n">bbdep</span><span class="p">,</span> <span class="n">frame_residues</span><span class="p">)</span>
-
-    <span class="c1"># set up graph and solve to get best rotamers</span>
-    <span class="k">if</span> <span class="n">use_frm</span><span class="p">:</span>
-        <span class="n">graph</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">RotamerGraph</span><span class="o">.</span><span class="n">CreateFromFRMList</span><span class="p">(</span><span class="n">rotamer_groups</span><span class="p">)</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="n">graph</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">RotamerGraph</span><span class="o">.</span><span class="n">CreateFromRRMList</span><span class="p">(</span><span class="n">rotamer_groups</span><span class="p">)</span>
-
-    <span class="n">solution</span> <span class="o">=</span> <span class="n">graph</span><span class="o">.</span><span class="n">TreeSolve</span><span class="p">(</span><span class="n">max_complexity</span><span class="o">=</span><span class="n">graph_max_complexity</span><span class="p">,</span>
-                               <span class="n">initial_epsilon</span><span class="o">=</span><span class="n">graph_initial_epsilon</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
-
-    <span class="k">if</span> <span class="n">use_frm</span> <span class="ow">and</span> <span class="n">optimize_subrotamers</span><span class="p">:</span>
-        <span class="n">rotamers_to_optimize</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-
-        <span class="k">for</span> <span class="n">rot_group</span><span class="p">,</span> <span class="n">sol</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">rotamer_groups</span><span class="p">,</span> <span class="n">solution</span><span class="p">):</span> 
-            <span class="n">rotamers_to_optimize</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">rot_group</span><span class="p">[</span><span class="n">sol</span><span class="p">])</span>
-        <span class="n">sidechain</span><span class="o">.</span><span class="n">SubrotamerOptimizer</span><span class="p">(</span><span class="n">rotamers_to_optimize</span><span class="p">)</span>
-
-    <span class="c1"># update structure</span>
-    <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">rot_group</span><span class="p">,</span> <span class="n">sol</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">residues_with_rotamer_group</span><span class="p">,</span> <span class="n">rotamer_groups</span><span class="p">,</span>
-                                 <span class="n">solution</span><span class="p">):</span>
-        <span class="k">try</span><span class="p">:</span>
-            <span class="n">res_handle</span> <span class="o">=</span> <span class="n">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">handle</span>
-            <span class="n">rot_group</span><span class="p">[</span><span class="n">sol</span><span class="p">]</span><span class="o">.</span><span class="n">ApplyOnResidue</span><span class="p">(</span><span class="n">res_handle</span><span class="p">,</span> <span class="n">consider_hydrogens</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
-            <span class="n">sidechain</span><span class="o">.</span><span class="n">ConnectSidechain</span><span class="p">(</span><span class="n">res_handle</span><span class="p">,</span> <span class="n">rotamer_ids</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
-        <span class="k">except</span><span class="p">:</span>
-            <span class="k">print</span> <span class="s2">&quot;there is a backbone atom missing... &quot;</span><span class="p">,</span> \
-                  <span class="n">res_handle</span><span class="o">.</span><span class="n">GetQualifiedName</span><span class="p">()</span></div>
-
-<span class="c1"># these methods will be exported into module</span>
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;ReconstructSidechains&#39;</span><span class="p">,)</span>
-</pre></div>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
-        <div class="sphinxsidebarwrapper"><div class="relations">
-<h3>Related Topics</h3>
-<ul>
-  <li><a href="../../../index.html">Documentation overview</a><ul>
-  <li><a href="../../index.html">Module code</a><ul>
-  <li><a href="../../promod3.html">promod3</a><ul>
-  </ul></li>
-  </ul></li>
-  </ul></li>
-</ul>
-</div>
-<div id="searchbox" style="display: none" role="search">
-  <h3>Quick search</h3>
-    <form class="search" action="../../../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
-      
-      |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
-      
-    </div>
-
-    
-
-    
-  </body>
-</html>
\ No newline at end of file
diff --git a/doc/html/_modules/promod3/modelling/_ring_punches.html b/doc/html/_modules/promod3/modelling/_ring_punches.html
deleted file mode 100644
index 810839fc..00000000
--- a/doc/html/_modules/promod3/modelling/_ring_punches.html
+++ /dev/null
@@ -1,340 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>promod3.modelling._ring_punches &mdash; ProMod3 1.3.0 documentation</title>
-    
-    <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
-    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../../../',
-        VERSION:     '1.3.0',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../../../_static/jquery.js"></script>
-    <script type="text/javascript" src="../../../_static/underscore.js"></script>
-    <script type="text/javascript" src="../../../_static/doctools.js"></script>
-    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../../../index.html" />
-    <link rel="up" title="promod3" href="../../promod3.html" />
-   
-  <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
-  
-  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
-
-  </head>
-  <body role="document">
-  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body" role="main">
-            
-  <h1>Source code for promod3.modelling._ring_punches</h1><div class="highlight"><pre>
-<span></span><span class="c1"># Copyright (c) 2013-2018, SIB - Swiss Institute of Bioinformatics and </span>
-<span class="c1">#                          Biozentrum - University of Basel</span>
-<span class="c1"># </span>
-<span class="c1"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<span class="c1"># you may not use this file except in compliance with the License.</span>
-<span class="c1"># You may obtain a copy of the License at</span>
-<span class="c1"># </span>
-<span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
-<span class="c1"># </span>
-<span class="c1"># Unless required by applicable law or agreed to in writing, software</span>
-<span class="c1"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<span class="c1"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<span class="c1"># See the License for the specific language governing permissions and</span>
-<span class="c1"># limitations under the License.</span>
-
-
-<span class="sd">&#39;&#39;&#39;Helper functions to deal with ring punchings.&#39;&#39;&#39;</span>
-<span class="kn">import</span> <span class="nn">ost</span>
-<span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">geom</span>
-<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">core</span>
-<span class="kn">from</span> <span class="nn">_reconstruct_sidechains</span> <span class="kn">import</span> <span class="n">ReconstructSidechains</span>
-<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">namedtuple</span>
-
-<span class="k">def</span> <span class="nf">_AddRing</span><span class="p">(</span><span class="n">rings</span><span class="p">,</span> <span class="n">res</span><span class="p">,</span> <span class="n">atom_names</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Try to add ring for given atoms in residue res to rings.&#39;&#39;&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="s2">&quot;ring_punches::_AddRing&quot;</span><span class="p">)</span>
-    <span class="c1"># get exisiting atom positions</span>
-    <span class="n">N</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">atom_names</span><span class="p">)</span>
-    <span class="k">assert</span><span class="p">(</span><span class="n">N</span> <span class="o">&gt;=</span> <span class="mi">3</span><span class="p">)</span>
-    <span class="n">pos</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-    <span class="n">center</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">Vec3</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
-    <span class="k">for</span> <span class="n">atom_name</span> <span class="ow">in</span> <span class="n">atom_names</span><span class="p">:</span>
-        <span class="n">a</span> <span class="o">=</span> <span class="n">res</span><span class="o">.</span><span class="n">FindAtom</span><span class="p">(</span><span class="n">atom_name</span><span class="p">)</span>
-        <span class="k">if</span> <span class="n">a</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
-            <span class="n">pos</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">a</span><span class="o">.</span><span class="n">GetPos</span><span class="p">())</span>
-            <span class="n">center</span> <span class="o">+=</span> <span class="n">a</span><span class="o">.</span><span class="n">GetPos</span><span class="p">()</span>
-
-    <span class="c1"># all good?</span>
-    <span class="n">allgood</span> <span class="o">=</span> <span class="bp">False</span>
-    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span> <span class="o">==</span> <span class="n">N</span><span class="p">:</span>
-        <span class="c1"># all the ring there -&gt; good</span>
-        <span class="n">center</span> <span class="o">=</span> <span class="n">center</span><span class="o">/</span><span class="n">N</span>
-        <span class="n">plane</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">Plane</span><span class="p">(</span><span class="n">pos</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">pos</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">center</span><span class="p">)</span>
-        <span class="n">allgood</span> <span class="o">=</span> <span class="bp">True</span>
-    <span class="k">elif</span> <span class="n">res</span><span class="o">.</span><span class="n">one_letter_code</span> <span class="o">==</span> <span class="s1">&#39;P&#39;</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
-        <span class="c1"># incomplete proline: 3 BB-pos there</span>
-        <span class="c1"># get ring-plane from 3 pos</span>
-        <span class="n">plane</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">Plane</span><span class="p">(</span><span class="n">pos</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">pos</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">pos</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
-        <span class="c1"># fit circle in plane through 3 points:</span>
-        <span class="c1"># - build 2 planes normal to ring-plane and vector connecting 2 points</span>
-        <span class="c1"># - intersect 2 planes and resulting line with ring-plane  -&gt; DONE</span>
-        <span class="n">plane1</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">Plane</span><span class="p">((</span><span class="n">pos</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">pos</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="n">pos</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">pos</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
-        <span class="n">plane2</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">Plane</span><span class="p">((</span><span class="n">pos</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">pos</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="n">pos</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">pos</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
-        <span class="n">i_line</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">IntersectionLine</span><span class="p">(</span><span class="n">plane1</span><span class="p">,</span> <span class="n">plane2</span><span class="p">)</span>
-        <span class="n">center</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">IntersectionPoint</span><span class="p">(</span><span class="n">i_line</span><span class="p">,</span> <span class="n">plane</span><span class="p">)</span>
-        <span class="n">allgood</span> <span class="o">=</span> <span class="bp">True</span>
-    
-    <span class="c1"># add ring</span>
-    <span class="k">if</span> <span class="n">allgood</span><span class="p">:</span>
-        <span class="c1"># get ring radius</span>
-        <span class="n">radius</span> <span class="o">=</span> <span class="mi">0</span>
-        <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">pos</span><span class="p">:</span>
-            <span class="n">radius</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">radius</span><span class="p">,</span> <span class="n">geom</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">p</span> <span class="o">-</span> <span class="n">center</span><span class="p">))</span>
-        <span class="c1"># append to list</span>
-        <span class="n">Ring</span> <span class="o">=</span> <span class="n">namedtuple</span><span class="p">(</span><span class="s1">&#39;Ring&#39;</span><span class="p">,</span> <span class="s1">&#39;center plane radius residue&#39;</span><span class="p">)</span>
-        <span class="n">rings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Ring</span><span class="p">(</span><span class="n">center</span><span class="p">,</span> <span class="n">plane</span><span class="p">,</span> <span class="n">radius</span><span class="p">,</span> <span class="n">res</span><span class="o">.</span><span class="n">handle</span><span class="p">))</span>
-
-<span class="k">def</span> <span class="nf">_IgnoreAtom</span><span class="p">(</span><span class="n">ring</span><span class="p">,</span> <span class="n">atom</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Return true if atom is part of ring-residue.&#39;&#39;&#39;</span>
-    <span class="k">return</span> <span class="n">ring</span><span class="o">.</span><span class="n">residue</span> <span class="o">==</span> <span class="n">atom</span><span class="o">.</span><span class="n">residue</span>
-
-<span class="k">def</span> <span class="nf">_CheckAtomVsRing</span><span class="p">(</span><span class="n">ring</span><span class="p">,</span> <span class="n">atom</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Check all bonds of atom for punches through ring.</span>
-<span class="sd">    Atom is ignored if it&#39;s in ring-residue or direct neighbors.</span>
-<span class="sd">    Return true if punch found.&#39;&#39;&#39;</span>
-    <span class="c1"># check this atom (can be view or handle!)</span>
-    <span class="n">a1</span> <span class="o">=</span> <span class="n">atom</span><span class="o">.</span><span class="n">handle</span>
-    <span class="k">if</span> <span class="n">_IgnoreAtom</span><span class="p">(</span><span class="n">ring</span><span class="p">,</span> <span class="n">a1</span><span class="p">):</span>
-        <span class="k">return</span> <span class="bp">False</span>
-    <span class="n">p1</span> <span class="o">=</span> <span class="n">a1</span><span class="o">.</span><span class="n">GetPos</span><span class="p">()</span>
-    <span class="n">d1</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">Dot</span><span class="p">(</span><span class="n">p1</span> <span class="o">-</span> <span class="n">ring</span><span class="o">.</span><span class="n">center</span><span class="p">,</span> <span class="n">ring</span><span class="o">.</span><span class="n">plane</span><span class="o">.</span><span class="n">normal</span><span class="p">)</span>
-    <span class="c1"># check all bonded partners</span>
-    <span class="k">for</span> <span class="n">a_other</span> <span class="ow">in</span> <span class="n">atom</span><span class="o">.</span><span class="n">GetBondPartners</span><span class="p">():</span>
-        <span class="n">a2</span> <span class="o">=</span> <span class="n">a_other</span><span class="o">.</span><span class="n">handle</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="n">a_other</span><span class="o">.</span><span class="n">IsValid</span><span class="p">()</span> <span class="ow">or</span> <span class="n">_IgnoreAtom</span><span class="p">(</span><span class="n">ring</span><span class="p">,</span> <span class="n">a2</span><span class="p">):</span>
-            <span class="k">continue</span>
-        <span class="c1"># two bonded atoms on diff. sides of the plane?</span>
-        <span class="n">p2</span> <span class="o">=</span> <span class="n">a2</span><span class="o">.</span><span class="n">GetPos</span><span class="p">()</span>
-        <span class="n">d2</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">Dot</span><span class="p">(</span><span class="n">p2</span> <span class="o">-</span> <span class="n">ring</span><span class="o">.</span><span class="n">center</span><span class="p">,</span> <span class="n">ring</span><span class="o">.</span><span class="n">plane</span><span class="o">.</span><span class="n">normal</span><span class="p">)</span>
-        <span class="k">if</span> <span class="n">d1</span><span class="o">*</span><span class="n">d2</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
-            <span class="c1"># get intersect</span>
-            <span class="n">line</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">Line3</span><span class="p">(</span><span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">)</span>
-            <span class="n">pi</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">IntersectionPoint</span><span class="p">(</span><span class="n">line</span><span class="p">,</span> <span class="n">ring</span><span class="o">.</span><span class="n">plane</span><span class="p">)</span>
-            <span class="k">if</span> <span class="n">geom</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">pi</span> <span class="o">-</span> <span class="n">ring</span><span class="o">.</span><span class="n">center</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">ring</span><span class="o">.</span><span class="n">radius</span><span class="p">:</span>
-                <span class="k">return</span> <span class="bp">True</span>
-    <span class="k">return</span> <span class="bp">False</span>
-
-<div class="viewcode-block" id="GetRings"><a class="viewcode-back" href="../../../modelling/model_checking.html#promod3.modelling.GetRings">[docs]</a><span class="k">def</span> <span class="nf">GetRings</span><span class="p">(</span><span class="n">ent</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Get rings for a protein structure.</span>
-<span class="sd">    A ring is only added if all ring-atoms exist or if it is a proline and</span>
-<span class="sd">    three of the atoms exist (center and radii are estimated then).</span>
-
-<span class="sd">    :param ent: Structure for which to detect rings.</span>
-<span class="sd">    :type ent:  :class:`~ost.mol.EntityHandle` or :class:`~ost.mol.EntityView`</span>
-
-<span class="sd">    :return: :class:`list` of rings to perform ring checks. Each ring is a named</span>
-<span class="sd">             tuple with:</span>
-<span class="sd">             center (:class:`~ost.geom.Vec3`),</span>
-<span class="sd">             plane (:class:`~ost.geom.Plane`),</span>
-<span class="sd">             radius (:class:`float`),</span>
-<span class="sd">             residue (:class:`~ost.mol.ResidueHandle`).</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;ring_punches::GetRings&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-    <span class="n">rings</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-    <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">ent</span><span class="o">.</span><span class="n">residues</span><span class="p">:</span>
-        <span class="k">if</span> <span class="n">r</span><span class="o">.</span><span class="n">one_letter_code</span> <span class="ow">in</span> <span class="s1">&#39;YF&#39;</span><span class="p">:</span>
-            <span class="n">_AddRing</span><span class="p">(</span><span class="n">rings</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;CG&quot;</span><span class="p">,</span> <span class="s2">&quot;CD1&quot;</span><span class="p">,</span> <span class="s2">&quot;CD2&quot;</span><span class="p">,</span> <span class="s2">&quot;CE1&quot;</span><span class="p">,</span> <span class="s2">&quot;CE2&quot;</span><span class="p">,</span> <span class="s2">&quot;CZ&quot;</span><span class="p">])</span>
-        <span class="k">elif</span> <span class="n">r</span><span class="o">.</span><span class="n">one_letter_code</span> <span class="o">==</span> <span class="s1">&#39;W&#39;</span><span class="p">:</span>
-            <span class="n">_AddRing</span><span class="p">(</span><span class="n">rings</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;CG&quot;</span><span class="p">,</span> <span class="s2">&quot;CD1&quot;</span><span class="p">,</span> <span class="s2">&quot;NE1&quot;</span><span class="p">,</span> <span class="s2">&quot;CD2&quot;</span><span class="p">,</span> <span class="s2">&quot;CE2&quot;</span><span class="p">])</span>
-            <span class="n">_AddRing</span><span class="p">(</span><span class="n">rings</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;CD2&quot;</span><span class="p">,</span> <span class="s2">&quot;CE2&quot;</span><span class="p">,</span> <span class="s2">&quot;CE3&quot;</span><span class="p">,</span> <span class="s2">&quot;CZ2&quot;</span><span class="p">,</span> <span class="s2">&quot;CZ3&quot;</span><span class="p">,</span> <span class="s2">&quot;CH2&quot;</span><span class="p">])</span>
-        <span class="k">elif</span> <span class="n">r</span><span class="o">.</span><span class="n">one_letter_code</span> <span class="o">==</span> <span class="s1">&#39;H&#39;</span><span class="p">:</span>
-            <span class="n">_AddRing</span><span class="p">(</span><span class="n">rings</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;CG&quot;</span><span class="p">,</span> <span class="s2">&quot;CD2&quot;</span><span class="p">,</span> <span class="s2">&quot;ND1&quot;</span><span class="p">,</span> <span class="s2">&quot;CE1&quot;</span><span class="p">,</span> <span class="s2">&quot;NE2&quot;</span><span class="p">])</span>
-        <span class="k">elif</span> <span class="n">r</span><span class="o">.</span><span class="n">one_letter_code</span> <span class="o">==</span> <span class="s1">&#39;P&#39;</span><span class="p">:</span>
-            <span class="n">_AddRing</span><span class="p">(</span><span class="n">rings</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;N&quot;</span><span class="p">,</span> <span class="s2">&quot;CA&quot;</span><span class="p">,</span> <span class="s2">&quot;CB&quot;</span><span class="p">,</span> <span class="s2">&quot;CD&quot;</span><span class="p">,</span> <span class="s2">&quot;CG&quot;</span><span class="p">])</span>
-    <span class="k">return</span> <span class="n">rings</span></div>
-
-<div class="viewcode-block" id="GetRingPunches"><a class="viewcode-back" href="../../../modelling/model_checking.html#promod3.modelling.GetRingPunches">[docs]</a><span class="k">def</span> <span class="nf">GetRingPunches</span><span class="p">(</span><span class="n">rings</span><span class="p">,</span> <span class="n">ent</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Get list of residues with rings that are punched by the given structure.</span>
-
-<span class="sd">    :param rings: List of rings as provided by :func:`GetRings`.</span>
-<span class="sd">    :param ent: Structure for which to detect punches.</span>
-<span class="sd">    :type ent:  :class:`~ost.mol.EntityHandle` or :class:`~ost.mol.EntityView`</span>
-
-<span class="sd">    :return: :class:`list` of residues (:class:`~ost.mol.ResidueHandle`) which</span>
-<span class="sd">              have a punched ring.</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;ring_punches::GetRingPunches&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-    <span class="n">ring_punches</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-    <span class="k">for</span> <span class="n">ring</span> <span class="ow">in</span> <span class="n">rings</span><span class="p">:</span>
-        <span class="c1"># we don&#39;t need to add residues multiple times</span>
-        <span class="k">if</span> <span class="n">ring</span><span class="o">.</span><span class="n">residue</span> <span class="ow">in</span> <span class="n">ring_punches</span><span class="p">:</span>
-            <span class="k">continue</span>
-        <span class="c1"># check neighborhood (3A should be enough)</span>
-        <span class="k">for</span> <span class="n">atom</span> <span class="ow">in</span> <span class="n">ent</span><span class="o">.</span><span class="n">FindWithin</span><span class="p">(</span><span class="n">ring</span><span class="o">.</span><span class="n">center</span><span class="p">,</span> <span class="mi">3</span><span class="p">):</span>
-            <span class="k">if</span> <span class="n">_CheckAtomVsRing</span><span class="p">(</span><span class="n">ring</span><span class="p">,</span> <span class="n">atom</span><span class="p">):</span>
-                <span class="n">ring_punches</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ring</span><span class="o">.</span><span class="n">residue</span><span class="p">)</span>
-                <span class="k">break</span>
-    <span class="k">return</span> <span class="n">ring_punches</span></div>
-
-<div class="viewcode-block" id="HasRingPunches"><a class="viewcode-back" href="../../../modelling/model_checking.html#promod3.modelling.HasRingPunches">[docs]</a><span class="k">def</span> <span class="nf">HasRingPunches</span><span class="p">(</span><span class="n">rings</span><span class="p">,</span> <span class="n">ent</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;Check if any ring is punched by the given structure.</span>
-<span class="sd">    This check is faster than using :func:`GetRingPunches`.</span>
-
-<span class="sd">    :param rings: List of rings as provided by :func:`GetRings`.</span>
-<span class="sd">    :param ent: Structure for which to detect punches.</span>
-<span class="sd">    :type ent:  :class:`~ost.mol.EntityHandle` or :class:`~ost.mol.EntityView`</span>
-
-<span class="sd">    :return: True, iff any ring is punched</span>
-<span class="sd">    :rtype:  :class:`bool`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;ring_punches::HasRingPunches&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-    <span class="k">for</span> <span class="n">ring</span> <span class="ow">in</span> <span class="n">rings</span><span class="p">:</span>
-        <span class="c1"># check neighborhood (3A should be enough)</span>
-        <span class="k">for</span> <span class="n">atom</span> <span class="ow">in</span> <span class="n">ent</span><span class="o">.</span><span class="n">FindWithin</span><span class="p">(</span><span class="n">ring</span><span class="o">.</span><span class="n">center</span><span class="p">,</span> <span class="mi">3</span><span class="p">):</span>
-            <span class="k">if</span> <span class="n">_CheckAtomVsRing</span><span class="p">(</span><span class="n">ring</span><span class="p">,</span> <span class="n">atom</span><span class="p">):</span>
-                <span class="k">return</span> <span class="bp">True</span>
-    <span class="k">return</span> <span class="bp">False</span></div>
-
-<div class="viewcode-block" id="FilterCandidates"><a class="viewcode-back" href="../../../modelling/model_checking.html#promod3.modelling.FilterCandidates">[docs]</a><span class="k">def</span> <span class="nf">FilterCandidates</span><span class="p">(</span><span class="n">candidates</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">gap</span><span class="p">,</span> <span class="n">orig_indices</span><span class="o">=</span><span class="p">[]):</span>
-    <span class="sd">&#39;&#39;&#39;Remove loop candidates if they cause ring punches.</span>
-
-<span class="sd">    :param candidates: Loop candidates meant to fill *gap* within *model*.</span>
-<span class="sd">                       Offending candidates are removed from this list.</span>
-<span class="sd">    :type candidates:  :class:`~promod3.loop.LoopCandidates`</span>
-<span class="sd">    :param model:      Model for which loop is to be filled.</span>
-<span class="sd">    :type model:       :class:`~ost.mol.EntityHandle`</span>
-<span class="sd">    :param gap:        Gap for which loop is to be filled.</span>
-<span class="sd">    :type gap:         :class:`StructuralGap`.</span>
-<span class="sd">    :param orig_indices: Mapping to old indexing of candidates. If given, it</span>
-<span class="sd">                         must have as many elements as *candidates*.</span>
-<span class="sd">    :type orig_indices:  :class:`list`</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;ring_punches::FilterCandidates&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-    <span class="n">start_resnum</span> <span class="o">=</span> <span class="n">gap</span><span class="o">.</span><span class="n">before</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span>
-    <span class="n">chain_idx</span> <span class="o">=</span> <span class="n">gap</span><span class="o">.</span><span class="n">GetChainIndex</span><span class="p">()</span>
-    <span class="c1"># precompute rings and range of rings to replace</span>
-    <span class="n">chain_name</span> <span class="o">=</span> <span class="n">gap</span><span class="o">.</span><span class="n">GetChainName</span><span class="p">()</span>
-    <span class="n">end_resnum</span> <span class="o">=</span> <span class="n">gap</span><span class="o">.</span><span class="n">after</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span>
-    <span class="n">myqueryin</span> <span class="o">=</span> <span class="s2">&quot;cname=&quot;</span> <span class="o">+</span> <span class="n">chain_name</span> <span class="o">+</span> <span class="s2">&quot; and rnum=&quot;</span> <span class="o">+</span>\
-                <span class="nb">str</span><span class="p">(</span><span class="n">start_resnum</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">end_resnum</span><span class="p">)</span>
-    <span class="n">myqueryout</span> <span class="o">=</span> <span class="s2">&quot;cname!=&quot;</span> <span class="o">+</span> <span class="n">chain_name</span> <span class="o">+</span> <span class="s2">&quot; or rnum&lt;&quot;</span> <span class="o">+</span>\
-                 <span class="nb">str</span><span class="p">(</span><span class="n">start_resnum</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot; or rnum&gt;&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">end_resnum</span><span class="p">)</span>
-    <span class="n">model_out</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="n">myqueryout</span><span class="p">)</span>
-    <span class="n">rings_out</span> <span class="o">=</span> <span class="n">GetRings</span><span class="p">(</span><span class="n">model_out</span><span class="p">)</span>
-    <span class="c1"># filter loop candidates</span>
-    <span class="n">lc_idx</span> <span class="o">=</span> <span class="mi">0</span>
-    <span class="k">while</span> <span class="n">lc_idx</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">candidates</span><span class="p">):</span>
-        <span class="c1"># get loop-entity for checks</span>
-        <span class="n">new_loop</span> <span class="o">=</span> <span class="n">candidates</span><span class="p">[</span><span class="n">lc_idx</span><span class="p">]</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">()</span>
-        <span class="n">rings_new</span> <span class="o">=</span> <span class="n">GetRings</span><span class="p">(</span><span class="n">new_loop</span><span class="p">)</span>
-        <span class="n">check_punches</span> <span class="o">=</span> <span class="n">HasRingPunches</span><span class="p">(</span><span class="n">rings_out</span><span class="o">+</span><span class="n">rings_new</span><span class="p">,</span> <span class="n">new_loop</span><span class="p">)</span> <span class="ow">or</span>\
-                        <span class="n">HasRingPunches</span><span class="p">(</span><span class="n">rings_new</span><span class="p">,</span> <span class="n">model_out</span><span class="p">)</span>
-        <span class="k">if</span> <span class="n">check_punches</span><span class="p">:</span>
-            <span class="n">candidates</span><span class="o">.</span><span class="n">Remove</span><span class="p">(</span><span class="n">lc_idx</span><span class="p">)</span>
-            <span class="k">if</span> <span class="n">orig_indices</span><span class="p">:</span>
-                <span class="k">del</span> <span class="n">orig_indices</span><span class="p">[</span><span class="n">lc_idx</span><span class="p">]</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="n">lc_idx</span> <span class="o">+=</span> <span class="mi">1</span></div>
-
-<div class="viewcode-block" id="FilterCandidatesWithSC"><a class="viewcode-back" href="../../../modelling/model_checking.html#promod3.modelling.FilterCandidatesWithSC">[docs]</a><span class="k">def</span> <span class="nf">FilterCandidatesWithSC</span><span class="p">(</span><span class="n">candidates</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">gap</span><span class="p">,</span> <span class="n">orig_indices</span><span class="o">=</span><span class="p">[]):</span>
-    <span class="sd">&#39;&#39;&#39;Remove loop candidates if they (with sidechain) cause ring punches.</span>
-<span class="sd">    See :func:`FilterCandidates`.</span>
-<span class="sd">    &#39;&#39;&#39;</span>
-    <span class="n">prof_name</span> <span class="o">=</span> <span class="s1">&#39;ring_punches::FilterCandidatesWithSC&#39;</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">StaticRuntimeProfiler</span><span class="o">.</span><span class="n">StartScoped</span><span class="p">(</span><span class="n">prof_name</span><span class="p">)</span>
-    <span class="n">start_resnum</span> <span class="o">=</span> <span class="n">gap</span><span class="o">.</span><span class="n">before</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span>
-    <span class="n">chain_idx</span> <span class="o">=</span> <span class="n">gap</span><span class="o">.</span><span class="n">GetChainIndex</span><span class="p">()</span>
-    <span class="n">cur_model</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-    <span class="c1"># precompute rings and range of rings to replace</span>
-    <span class="n">chain_name</span> <span class="o">=</span> <span class="n">gap</span><span class="o">.</span><span class="n">GetChainName</span><span class="p">()</span>
-    <span class="n">end_resnum</span> <span class="o">=</span> <span class="n">gap</span><span class="o">.</span><span class="n">after</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span>
-    <span class="n">myqueryin</span> <span class="o">=</span> <span class="s2">&quot;cname=&quot;</span> <span class="o">+</span> <span class="n">chain_name</span> <span class="o">+</span> <span class="s2">&quot; and rnum=&quot;</span> <span class="o">+</span>\
-                <span class="nb">str</span><span class="p">(</span><span class="n">start_resnum</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">end_resnum</span><span class="p">)</span>
-    <span class="n">myqueryout</span> <span class="o">=</span> <span class="s2">&quot;cname!=&quot;</span> <span class="o">+</span> <span class="n">chain_name</span> <span class="o">+</span> <span class="s2">&quot; or rnum&lt;&quot;</span> <span class="o">+</span>\
-                 <span class="nb">str</span><span class="p">(</span><span class="n">start_resnum</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot; or rnum&gt;&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">end_resnum</span><span class="p">)</span>
-    <span class="n">rings_out</span> <span class="o">=</span> <span class="n">GetRings</span><span class="p">(</span><span class="n">cur_model</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="n">myqueryout</span><span class="p">))</span>
-    <span class="c1"># filter loop candidates</span>
-    <span class="n">lc_idx</span> <span class="o">=</span> <span class="mi">0</span>
-    <span class="k">while</span> <span class="n">lc_idx</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">candidates</span><span class="p">):</span>
-        <span class="c1"># insert loop into model-copy</span>
-        <span class="n">bb_list</span> <span class="o">=</span> <span class="n">candidates</span><span class="p">[</span><span class="n">lc_idx</span><span class="p">]</span>
-        <span class="n">bb_list</span><span class="o">.</span><span class="n">InsertInto</span><span class="p">(</span><span class="n">cur_model</span><span class="o">.</span><span class="n">chains</span><span class="p">[</span><span class="n">chain_idx</span><span class="p">],</span> <span class="n">start_resnum</span><span class="p">)</span>
-        <span class="c1"># add sidechains and check for clashes</span>
-        <span class="n">ReconstructSidechains</span><span class="p">(</span><span class="n">cur_model</span><span class="p">,</span> <span class="n">keep_sidechains</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
-        <span class="n">models_new</span> <span class="o">=</span> <span class="n">cur_model</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="n">myqueryin</span><span class="p">)</span>
-        <span class="n">rings_new</span> <span class="o">=</span> <span class="n">GetRings</span><span class="p">(</span><span class="n">models_new</span><span class="p">)</span>
-        <span class="n">check_punches</span> <span class="o">=</span> <span class="n">HasRingPunches</span><span class="p">(</span><span class="n">rings_out</span><span class="p">,</span> <span class="n">models_new</span><span class="p">)</span> <span class="ow">or</span>\
-                        <span class="n">HasRingPunches</span><span class="p">(</span><span class="n">rings_new</span><span class="p">,</span> <span class="n">cur_model</span><span class="p">)</span>
-        <span class="k">if</span> <span class="n">check_punches</span><span class="p">:</span>
-            <span class="n">candidates</span><span class="o">.</span><span class="n">Remove</span><span class="p">(</span><span class="n">lc_idx</span><span class="p">)</span>
-            <span class="k">if</span> <span class="n">orig_indices</span><span class="p">:</span>
-                <span class="k">del</span> <span class="n">orig_indices</span><span class="p">[</span><span class="n">lc_idx</span><span class="p">]</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="n">lc_idx</span> <span class="o">+=</span> <span class="mi">1</span></div>
-
-<span class="c1"># these methods will be exported into module</span>
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;GetRings&#39;</span><span class="p">,</span> <span class="s1">&#39;GetRingPunches&#39;</span><span class="p">,</span> <span class="s1">&#39;HasRingPunches&#39;</span><span class="p">,</span> <span class="s1">&#39;FilterCandidates&#39;</span><span class="p">,</span>
-           <span class="s1">&#39;FilterCandidatesWithSC&#39;</span><span class="p">)</span>
-</pre></div>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
-        <div class="sphinxsidebarwrapper"><div class="relations">
-<h3>Related Topics</h3>
-<ul>
-  <li><a href="../../../index.html">Documentation overview</a><ul>
-  <li><a href="../../index.html">Module code</a><ul>
-  <li><a href="../../promod3.html">promod3</a><ul>
-  </ul></li>
-  </ul></li>
-  </ul></li>
-</ul>
-</div>
-<div id="searchbox" style="display: none" role="search">
-  <h3>Quick search</h3>
-    <form class="search" action="../../../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
-      
-      |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
-      
-    </div>
-
-    
-
-    
-  </body>
-</html>
\ No newline at end of file
diff --git a/doc/html/_modules/test_actions.html b/doc/html/_modules/test_actions.html
deleted file mode 100644
index 8e193e5e..00000000
--- a/doc/html/_modules/test_actions.html
+++ /dev/null
@@ -1,229 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>test_actions &mdash; ProMod3 1.3.0 documentation</title>
-    
-    <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
-    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../',
-        VERSION:     '1.3.0',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../_static/jquery.js"></script>
-    <script type="text/javascript" src="../_static/underscore.js"></script>
-    <script type="text/javascript" src="../_static/doctools.js"></script>
-    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
-    <link rel="up" title="Module code" href="index.html" />
-   
-  <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
-  
-  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
-
-  </head>
-  <body role="document">
-  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body" role="main">
-            
-  <h1>Source code for test_actions</h1><div class="highlight"><pre>
-<span></span><span class="c1"># Copyright (c) 2013-2018, SIB - Swiss Institute of Bioinformatics and </span>
-<span class="c1">#                          Biozentrum - University of Basel</span>
-<span class="c1"># </span>
-<span class="c1"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<span class="c1"># you may not use this file except in compliance with the License.</span>
-<span class="c1"># You may obtain a copy of the License at</span>
-<span class="c1"># </span>
-<span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
-<span class="c1"># </span>
-<span class="c1"># Unless required by applicable law or agreed to in writing, software</span>
-<span class="c1"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<span class="c1"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<span class="c1"># See the License for the specific language governing permissions and</span>
-<span class="c1"># limitations under the License.</span>
-
-
-<span class="sd">&quot;&quot;&quot;</span>
-<span class="sd">unittest.TestCase class providing common functionality for testing actions.</span>
-<span class="sd">&quot;&quot;&quot;</span>
-<span class="kn">import</span> <span class="nn">unittest</span>
-<span class="kn">import</span> <span class="nn">os</span>
-<span class="kn">import</span> <span class="nn">subprocess</span>
-<span class="kn">import</span> <span class="nn">ost</span>
-
-<span class="c1"># set verbosity level here, is propagated to all others</span>
-<span class="n">ost</span><span class="o">.</span><span class="n">PushVerbosityLevel</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
-
-<div class="viewcode-block" id="ActionTestCase"><a class="viewcode-back" href="../actions/index_dev.html#test_actions.ActionTestCase">[docs]</a><span class="k">class</span> <span class="nc">ActionTestCase</span><span class="p">(</span><span class="n">unittest</span><span class="o">.</span><span class="n">TestCase</span><span class="p">):</span>
-    <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd">    Class to help developing actions. Comes with a lot of convenience wrappers</span>
-<span class="sd">    around what should be tested and serves as a recorder for test calls...</span>
-<span class="sd">    just for in two years when you come back to rewrite the whole action...</span>
-
-<span class="sd">    While inheriting this class, :attr:`pm_action` needs to be defined.</span>
-<span class="sd">    Otherwise the whole idea does not work.</span>
-
-<span class="sd">    .. attribute:: pm_bin</span>
-
-<span class="sd">      This is the path of the ``pm`` binary. Automatically set by calling</span>
-<span class="sd">      :meth:`~ActionTestCase.__init__` inside the initialisation of your class.</span>
-
-<span class="sd">      :type: :class:`str`</span>
-
-<span class="sd">    .. attribute:: pm_action</span>
-
-<span class="sd">      The action to be tested. Needs to be set by your initialisation routine,</span>
-<span class="sd">      **after** calling :meth:`~ActionTestCase.__init__` from here. Skip the</span>
-<span class="sd">      &quot;pm-&quot; in front of the action name.</span>
-
-<span class="sd">      :type: :class:`str`</span>
-<span class="sd">    &quot;&quot;&quot;</span>
-    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd">        Convenience stuff for action testing.</span>
-<span class="sd">        &quot;&quot;&quot;</span>
-        <span class="c1"># Determining the pm binary to be called. Going hard-coded is a bad</span>
-        <span class="c1"># thing. But this is a unit test and we know where we are as all unit</span>
-        <span class="c1"># tests are run in &quot;tests/MODULENAME&quot; within build-folder.</span>
-        <span class="n">bld_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">())))</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">pm_bin</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">bld_dir</span><span class="p">,</span> <span class="s1">&#39;stage&#39;</span><span class="p">,</span> <span class="s1">&#39;bin&#39;</span><span class="p">,</span> <span class="s1">&#39;pm&#39;</span><span class="p">)</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">pm_action</span> <span class="o">=</span> <span class="bp">None</span>
-        <span class="n">unittest</span><span class="o">.</span><span class="n">TestCase</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
-
-<div class="viewcode-block" id="ActionTestCase.RunAction"><a class="viewcode-back" href="../actions/index_dev.html#test_actions.ActionTestCase.RunAction">[docs]</a>    <span class="k">def</span> <span class="nf">RunAction</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arguments</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd">        Call an action, return the exit status (``$?`` shell variable). May be</span>
-<span class="sd">        set to ``verbose`` to print the actions terminal output. The action to</span>
-<span class="sd">        be executed needs to be stored in :attr:`pm_action` first.</span>
-
-<span class="sd">        If in verbose mode, output to :file:`stdout` of the action will be</span>
-<span class="sd">        printed first followed by :file:`stderr`.</span>
-
-<span class="sd">        :param arguments: A list of arguments for the call.</span>
-<span class="sd">        :type arguments: :class:`list`</span>
-
-<span class="sd">        :param verbose: If ``True``, report output of the action.</span>
-<span class="sd">        :type verbose: :class:`bool`</span>
-
-<span class="sd">        :returns: The exit code of the action (:class:`int`).</span>
-<span class="sd">        &quot;&quot;&quot;</span>
-        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">pm_action</span><span class="p">:</span>
-            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;A &#39;pm_action&#39; attribute has to be defined by &quot;</span><span class="o">+</span>
-                               <span class="s2">&quot;each subclass of &#39;test_actions.ActionTestCase&#39;&quot;</span><span class="p">)</span>
-
-        <span class="c1"># run the action with arguments, wait for the job to finish and capture</span>
-        <span class="c1"># output</span>
-        <span class="n">cmd</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">pm_bin</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">pm_action</span><span class="p">]</span> <span class="o">+</span> <span class="n">arguments</span>
-        <span class="n">job</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span>
-                               <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">)</span>
-        <span class="n">sout</span><span class="p">,</span> <span class="n">serr</span> <span class="o">=</span> <span class="n">job</span><span class="o">.</span><span class="n">communicate</span><span class="p">()</span>
-        <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogScript</span><span class="p">(</span><span class="s2">&quot;stdout of &#39;</span><span class="si">%s</span><span class="s2">&#39;&quot;</span> <span class="o">%</span> <span class="s1">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">cmd</span><span class="p">))</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogScript</span><span class="p">(</span><span class="s2">&quot;------&quot;</span><span class="p">)</span>
-            <span class="n">lines</span> <span class="o">=</span> <span class="n">sout</span><span class="o">.</span><span class="n">splitlines</span><span class="p">()</span>
-            <span class="k">for</span> <span class="n">out_l</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
-                <span class="n">ost</span><span class="o">.</span><span class="n">LogScript</span><span class="p">(</span><span class="n">out_l</span><span class="p">)</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogScript</span><span class="p">(</span><span class="s2">&quot;------&quot;</span><span class="p">)</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogError</span><span class="p">(</span><span class="s2">&quot;stderr of &#39;</span><span class="si">%s</span><span class="s2">&#39;&quot;</span> <span class="o">%</span> <span class="s1">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">cmd</span><span class="p">))</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogError</span><span class="p">(</span><span class="s2">&quot;------&quot;</span><span class="p">)</span>
-            <span class="n">lines</span> <span class="o">=</span> <span class="n">serr</span><span class="o">.</span><span class="n">splitlines</span><span class="p">()</span>
-            <span class="k">for</span> <span class="n">err_l</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
-                <span class="n">ost</span><span class="o">.</span><span class="n">LogError</span><span class="p">(</span><span class="n">err_l</span><span class="p">)</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogError</span><span class="p">(</span><span class="s2">&quot;------&quot;</span><span class="p">)</span>
-        <span class="k">return</span> <span class="n">job</span><span class="o">.</span><span class="n">returncode</span></div>
-
-<div class="viewcode-block" id="ActionTestCase.RunExitStatusTest"><a class="viewcode-back" href="../actions/index_dev.html#test_actions.ActionTestCase.RunExitStatusTest">[docs]</a>    <span class="k">def</span> <span class="nf">RunExitStatusTest</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exit_code</span><span class="p">,</span> <span class="n">arguments</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd">        Run the action with given arguments and check the exit code.</span>
-
-<span class="sd">        :param exit_code: The expected return code, ``$?`` in a shell.</span>
-<span class="sd">        :type exit_code: :class:`int`</span>
-
-<span class="sd">        :param arguments: A list of arguments for the call.</span>
-<span class="sd">        :type arguments: :class:`list`</span>
-
-<span class="sd">        :param verbose: If ``True``, report output of the action.</span>
-<span class="sd">        :type verbose: :class:`bool`</span>
-<span class="sd">        &quot;&quot;&quot;</span>
-        <span class="n">exit_code_run</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">RunAction</span><span class="p">(</span><span class="n">arguments</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="n">verbose</span><span class="p">)</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">exit_code</span><span class="p">,</span> <span class="n">exit_code_run</span><span class="p">,</span>
-                         <span class="n">msg</span><span class="o">=</span><span class="s2">&quot;Exit code of &#39;</span><span class="si">%s</span><span class="s2">&#39; &quot;</span> <span class="o">%</span> <span class="s1">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">pm_bin</span><span class="p">,</span>
-                                                              <span class="bp">self</span><span class="o">.</span><span class="n">pm_action</span><span class="p">]</span><span class="o">+</span>
-                                                             <span class="n">arguments</span><span class="p">)</span><span class="o">+</span>
-                         <span class="s2">&quot;is supposed to be &#39;</span><span class="si">%d</span><span class="s2">&#39; &quot;</span> <span class="o">%</span> <span class="n">exit_code</span><span class="o">+</span>
-                         <span class="s2">&quot;but returned as &#39;</span><span class="si">%d</span><span class="s2">&#39;.&quot;</span> <span class="o">%</span> <span class="n">exit_code_run</span><span class="p">)</span></div>
-
-<div class="viewcode-block" id="ActionTestCase.testPMExists"><a class="viewcode-back" href="../actions/index_dev.html#test_actions.ActionTestCase.testPMExists">[docs]</a>    <span class="k">def</span> <span class="nf">testPMExists</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd">        This is an internal test, executed when the source code of the test</span>
-<span class="sd">        class is run as unit test. Verifies that :attr:`pm_bin` is an existing</span>
-<span class="sd">        file (also complains if a directory is found instead).</span>
-<span class="sd">        &quot;&quot;&quot;</span>
-        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pm_bin</span><span class="p">),</span> <span class="bp">True</span><span class="p">,</span>
-                         <span class="n">msg</span><span class="o">=</span><span class="s2">&quot;Could not find &#39;pm&#39; bin at &#39;</span><span class="si">%s</span><span class="s2">&#39;, &quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">pm_bin</span><span class="o">+</span>
-                         <span class="s2">&quot;cannot proceed unit tests.&quot;</span><span class="p">)</span></div></div>
-
-<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span>
-    <span class="kn">import</span> <span class="nn">sys</span>
-    <span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">testutils</span>
-    <span class="n">sys</span><span class="o">.</span><span class="n">dont_write_bytecode</span> <span class="o">=</span> <span class="bp">True</span>
-    <span class="n">testutils</span><span class="o">.</span><span class="n">RunTests</span><span class="p">()</span>
-
-<span class="c1">#  LocalWords:  attr meth ActionTestCase init str stdout stderr param bool</span>
-</pre></div>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
-        <div class="sphinxsidebarwrapper"><div class="relations">
-<h3>Related Topics</h3>
-<ul>
-  <li><a href="../index.html">Documentation overview</a><ul>
-  <li><a href="index.html">Module code</a><ul>
-  </ul></li>
-  </ul></li>
-</ul>
-</div>
-<div id="searchbox" style="display: none" role="search">
-  <h3>Quick search</h3>
-    <form class="search" action="../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
-      
-      |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
-      
-    </div>
-
-    
-
-    
-  </body>
-</html>
\ No newline at end of file
diff --git a/doc/html/_sources/actions/index.txt b/doc/html/_sources/actions/index.txt
index 450ffa57..e13e33b5 100644
--- a/doc/html/_sources/actions/index.txt
+++ b/doc/html/_sources/actions/index.txt
@@ -21,6 +21,7 @@ with
 
   $ pm build-model [-h] (-f <FILE> | -c <FILE> | -j <OBJECT>|<FILE>)
                    (-p <FILE> | -e <FILE>) [-s <FILE>] [-o <FILENAME>]
+                   [-r] [-t]
 
 Example usage:
 
@@ -129,6 +130,23 @@ Example usage:
 
   $ pm build-model -f aln.fasta -p tpl.pdb -s prof.hhm
 
+A fast torsion angle based sampling is performed in case of Monte Carlo 
+sampling. You can enforce the usage of structural fragments with ``-r``
+but this increases runtime due to searching the required fragments.
+Setup of the according :class:`promod3.modelling.FraggerHandle`
+objects is performed in the 
+:class:`~promod3.core.pm3argparse.PM3ArgumentParser` class as described in
+detail :meth:`here <promod3.core.pm3argparse.PM3ArgumentParser.AddFragments>`.
+
+The default modelling pipeline in ProMod3 is optimized to generate a gap-free 
+model of the region in the target sequence(s) that is covered with template 
+information. Terminal extensions without template coverage are negelected. 
+You can enforce a model of the full target sequence(s) by adding ``-t``. 
+The terminal parts will be modelled with a crude Monte Carlo approach. Be aware
+that the accuracy of those termini is likely to be limited. Termini of length 1 
+won't be modelled.
+
+
 Possible exit codes of the action:
 
 - 0: all went well
@@ -190,3 +208,8 @@ Several flags control the modelling behaviour:
 
   Dont do subrotamer optimization if flexible rotamer model is used
 
+.. option:: -f, --energy_function
+
+  The energy function to be used. Default is SCWRL4, can be any function
+  supported by :meth:`promod3.modelling.ReconstructSidechains`.
+
diff --git a/doc/html/_sources/buildsystem.txt b/doc/html/_sources/buildsystem.txt
index 7f975230..ac23b70c 100644
--- a/doc/html/_sources/buildsystem.txt
+++ b/doc/html/_sources/buildsystem.txt
@@ -23,15 +23,16 @@ Building |project|
 Dependencies
 --------------------------------------------------------------------------------
 
-|project| is build on top of |ost_l|_ (|ost_s|), requiring at least version 1.8.
-|ost_s| must be configured and compiled with ``ENABLE_MM=1`` to use |openmm|_.
-To create the build system, |cmake|_ is required. The same versions of |python|_
-and |boost|_ are needed as used in |ost_s|. For |eigen3|_ we need at least
-version 3.3.0. To build the documentation, |sphinx|_ is required.
+|project| is build on top of |ost_l|_ (|ost_s|), requiring at least version 
+|ost_version|. |ost_s| must be configured and compiled with ``ENABLE_MM=1`` to
+use |openmm|_. To create the build system, |cmake|_ is required. The same
+versions of |python|_ and |boost|_ are needed as used in |ost_s|. For |eigen3|_
+we need at least version 3.3.0. To build the documentation, |sphinx|_ is
+required.
 
 The currently preferred versions are:
 
-* |ost_s|_ 1.9
+* |ost_s|_ |ost_version|
 * |openmm|_ 7.1.1
 * |cmake|_ 2.8.12
 * |python|_ 2.7.5
diff --git a/doc/html/_sources/changelog.txt b/doc/html/_sources/changelog.txt
index 879c3a6c..67c6449a 100644
--- a/doc/html/_sources/changelog.txt
+++ b/doc/html/_sources/changelog.txt
@@ -5,6 +5,24 @@
 Changelog
 ================================================================================
 
+Release 2.0.0
+--------------------------------------------------------------------------------
+
+* Generalize particle scoring and rotamer construction in sidechain module.
+  This simplifies the addition of other scoring functions in the future.
+  Be aware of breaking changes introduced in the process!
+  (SCWRLRotamerConstructor -> SCWRL4RotamerConstructor, changed interface of
+  Particle and RotamerConstructor classes).
+* Enable possibility to use structural fragments in default modelling pipeline
+  and build-model action
+* Enable possibility to enforce full coverage models including termini without
+  template coverage in default modelling pipeline and build-model action
+* Modelling pipeline can track issues in the ModellingHandle object
+* External example scripts can now be found in extras/external_scripts
+* Improved support for recent compilers and libraries.
+* Several minor bug fixes, improvements, and speed-ups  
+
+
 Release 1.3.0
 --------------------------------------------------------------------------------
 
diff --git a/doc/html/_sources/container/docker.txt b/doc/html/_sources/container/docker.txt
index cc5faaa0..3866dc3c 100644
--- a/doc/html/_sources/container/docker.txt
+++ b/doc/html/_sources/container/docker.txt
@@ -41,13 +41,15 @@ provide the (relative) path to the script and (relative) path to the file eg:
 
 .. code-block:: bash
 
-  sudo docker run --rm -v /home/<USER>:/home <IMAGE_NAME> pm script.py pdbs/struct.pdb
+  sudo docker run --rm -v /home/<USER>:/home <IMAGE_NAME> pm script.py \
+       pdbs/struct.pdb
 
 or with absolute paths:
 
 .. code-block:: bash
 
-  sudo docker run --rm -v /home/<USER>:/home <IMAGE_NAME> pm /home/script.py /home/pdbs/struct.pdb
+  sudo docker run --rm -v /home/<USER>:/home <IMAGE_NAME> pm /home/script.py \
+       /home/pdbs/struct.pdb
 
 An alternative is to mount the current working directory into the docker home:
 
@@ -91,13 +93,16 @@ convert the MMCIF  dictionary into our internal format:
 
 .. code-block:: bash
 
-  sudo docker run --rm -v $(pwd):/home <IMAGE_NAME> chemdict_tool create components.cif.gz compounds.chemlib
+  sudo docker run --rm -v $(pwd):/home <IMAGE_NAME> chemdict_tool create \
+       components.cif.gz compounds.chemlib
 
 To run a script with the upated compound library, use the -v option for mounting/overriding:
 
 .. code-block:: bash
 
-  sudo docker run --rm -v /home/<USER>:/home -v <COMPLIB_DIR_LOCALHOST>:<COMPLIB_DIR_CONTAINER> <IMAGE_NAME> pm script.py pdbs/struct.pdb
+  sudo docker run --rm -v /home/<USER>:/home \
+       -v <COMPLIB_DIR_LOCALHOST>:<COMPLIB_DIR_CONTAINER> \
+       <IMAGE_NAME> pm script.py pdbs/struct.pdb
 
 with COMPLIB_DIR_LOCALHOST being the directory that contains the newly generated 
 compound library with name compounds.chemlib and COMPLIB_DIR_CONTAINER the 
diff --git a/doc/html/_sources/container/singularity.txt b/doc/html/_sources/container/singularity.txt
index ede88ddb..5079e263 100644
--- a/doc/html/_sources/container/singularity.txt
+++ b/doc/html/_sources/container/singularity.txt
@@ -23,11 +23,8 @@ Docker image.
 Build Singularity Image
 -----------------------
 
-You can pull the Docker image to start with from two different sources. 
 
-Option One:
-
-You built the Docker image locally and want to use it as a starting point. For 
+If you built the Docker image locally you can use it as a starting point. For 
 this we have to fire up a local Docker registry and pull from there. Let's 
 assume you built the Docker image with tag promod.
 
@@ -55,18 +52,6 @@ and build the image with:
   sudo SINGULARITY_NOHTTPS=1 singularity build promod.img Singularity
 
 
-Option Two:
-
-You pull a Docker image from an external Docker registry. 
-Fill in a lot of words as soon as its on Dockerhub. Many words. The best words.
-
-and build the image with:
-
-.. code-block:: bash
-
-  sudo singularity build promod.img Singularity
-
-
 Run scripts and actions with OST/PM
 -----------------------------------
 
@@ -104,13 +89,15 @@ Build a new library:
 
 .. code-block:: bash
 
-  singularity exec <IMAGE_NAME> chemdict_tool create components.cif.gz compounds.chemlib
+  singularity exec <IMAGE_NAME> chemdict_tool create components.cif.gz \
+              compounds.chemlib
 
 Run some script with an updated compound library from localhost:
 
 .. code-block:: bash
 
-  singularity exec -B <COMPLIB_DIR_LOCALHOST>:<COMPLIB_DIR_CONTAINER> <IMAGE_NAME> pm my_script.py 
+  singularity exec -B <COMPLIB_DIR_LOCALHOST>:<COMPLIB_DIR_CONTAINER> <IMAGE_NAME> \
+              pm my_script.py 
 
 Same as for the Docker, if you didn't meddle with the original Dockerfile, 
 <COMPLIB_DIR_CONTAINER> should be /usr/local/share/ost_complib. 
diff --git a/doc/html/_sources/contributing.txt b/doc/html/_sources/contributing.txt
index 3a261b41..c98da08d 100644
--- a/doc/html/_sources/contributing.txt
+++ b/doc/html/_sources/contributing.txt
@@ -13,14 +13,27 @@
 ..  See the License for the specific language governing permissions and
 ..  limitations under the License.
 
+.. _how-to-contribute:
 
 Contributing
 ================================================================================
 
+Code contributions are handled through the git repository hosted at sciCORE,
+University of Basel: https://git.scicore.unibas.ch/schwede/ProMod3.
+Get in touch with the main developers if you have a fantastic new feature
+and need an account there.
 The following should explain, in a coarse grain manner, how to add new features
 to |project|. The most general advice would be to use existing bits and pieces
 as examples and to be consistent with what you already find here.
 
+--------------------------------------------------------------------------------
+How To Share Your Own Script
+--------------------------------------------------------------------------------
+If you have a useful script using |project| that you want to share, it should go
+as a subfolder into the :file:`extras/external_scripts` folder. Make sure to
+describe the use and purpose of the script in a short :file:`README` including
+working commands on how to use it.
+
 .. _how-to-start-your-own-module:
 
 --------------------------------------------------------------------------------
@@ -76,8 +89,10 @@ version control, create a couple of files which are always needed.
 .. code-block:: console
 
    $ touch sidechain/pymod/__init__.py
-   $ echo ":mod:\`~promod3.sidechain\` - ProMod3 side chain optimiser" >> sidechain/doc/index.rst
-   $ echo "================================================================================" >> sidechain/doc/index.rst
+   $ echo ":mod:\`~promod3.sidechain\` - ProMod3 side chain optimiser" \
+          >> sidechain/doc/index.rst
+   $ echo "==========================================================" \
+   "======================" >> sidechain/doc/index.rst
 
 Having an empty :file:`__init__.py` is perfectly fine for |python|, it just
 announces a directory as a module. But a blank :file:`index.rst` has the chance
@@ -551,12 +566,12 @@ module, for example
 * external libraries
 * smallish bits of source code included into the |project| directory tree
 * |python| modules not distributed as part of the |python|
-  :py_docs:`standard library <library/>`,
+  :py_docs:`standard library <library/>`
 
-where modules from the |python| standard library are covered by the |python|
-`license <https://www.python.org/download/releases/2.7.5/license>`_. And
+Modules from the |python| standard library are covered by the |python|
+`license <https://www.python.org/download/releases/2.7.5/license>`_ and
 licenses is what you have to watch out for with this subject. While the |python|
-license is save to be used, in the past several projects went restrictive
+license is safe to be used, in the past several projects went restrictive
 because of exclusive terms of use. Those issues often came from 'academic
 licenses', allowing use if free of charge but for commercial entities. To
 prevent this is one reason for the existence of |project|. This means, before
diff --git a/doc/html/_sources/gettingstarted.txt b/doc/html/_sources/gettingstarted.txt
index 2bed4049..66391930 100644
--- a/doc/html/_sources/gettingstarted.txt
+++ b/doc/html/_sources/gettingstarted.txt
@@ -21,6 +21,13 @@ Get and Run |project|
 --------------------------------------------------------------------------------
 First steps to get |project| up and running:
 
+#. Fetch the source code from https://git.scicore.unibas.ch/schwede/ProMod3.git.
+   Or directly pull it with git:
+
+   .. code-block:: console
+  
+     $ git clone https://git.scicore.unibas.ch/schwede/ProMod3.git <DIR>  
+
 #. Obtain all dependencies and compile |project| with ``cmake`` and ``make``
    (see :ref:`here <building-promod>`).
 #. Ensure that you have a ``stage/bin`` folder which includes a ``pm`` executable.
diff --git a/doc/html/_sources/index.txt b/doc/html/_sources/index.txt
index 74cb15e8..98b26163 100644
--- a/doc/html/_sources/index.txt
+++ b/doc/html/_sources/index.txt
@@ -23,6 +23,8 @@ to generate a protein model by homology. Its modular design aims at
 implementing flexible modelling pipelines and fast prototyping of novel 
 algorithms.
 
+The source code can be found here: https://git.scicore.unibas.ch/schwede/ProMod3
+
 
 Documentation
 =============
diff --git a/doc/html/_sources/modelling/pipeline.txt b/doc/html/_sources/modelling/pipeline.txt
index 54d86037..fb5b239c 100644
--- a/doc/html/_sources/modelling/pipeline.txt
+++ b/doc/html/_sources/modelling/pipeline.txt
@@ -146,6 +146,23 @@ Build Raw Modelling Handle
 
     :type: :class:`~promod3.modelling.SidechainReconstructor`
 
+  .. attribute:: fragger_handles
+
+    Optional attribute which is set in :meth:`SetFraggerHandles`. Use
+    :meth:`hasattr` to check if it's available. If it's set, it is used in
+    :meth:`BuildFromRawModel`.
+
+    :type:  :class:`list` of :class:`FraggerHandle`
+
+  .. attribute:: modelling_issues
+
+    Optional attribute which is set in :meth:`AddModellingIssue`. Use
+    :meth:`hasattr` to check if it's available. If it's set, it can be used to
+    check issues which occurred in :meth:`BuildFromRawModel` (see
+    :meth:`MinimizeModelEnergy` and :meth:`CheckFinalModel` for details).
+
+    :type:  :class:`list` of :class:`ModellingIssue`
+
   .. method:: Copy()
 
     Generates a deep copy. Everything will be copied over to the returned
@@ -400,6 +417,7 @@ Modelling Steps
            with seqres in **mhandle**
 
 
+.. autofunction:: SetFraggerHandles
 
 .. autofunction:: CloseGaps
 
@@ -421,3 +439,7 @@ Modelling Steps
 
 .. autofunction:: CheckFinalModel
 
+.. autoclass:: ModellingIssue
+  :members:
+
+.. autofunction:: AddModellingIssue
diff --git a/doc/html/_sources/portableIO.txt b/doc/html/_sources/portableIO.txt
index a548e3c8..150c69af 100644
--- a/doc/html/_sources/portableIO.txt
+++ b/doc/html/_sources/portableIO.txt
@@ -54,7 +54,7 @@ tests in :file:`test_check_io.cc` and :file:`test_portable_binary.cc` and in the
 SavePortable).
 
 --------------------------------------------------------------------------------
-Header
+File Header
 --------------------------------------------------------------------------------
 
 The header is written/read with functions provided in the header file
diff --git a/doc/html/_sources/sidechain/rotamer.txt b/doc/html/_sources/sidechain/rotamer.txt
index 30b3c7ca..d3ae44eb 100644
--- a/doc/html/_sources/sidechain/rotamer.txt
+++ b/doc/html/_sources/sidechain/rotamer.txt
@@ -28,104 +28,111 @@ Pairwise interactions between particles give raise to pairwise energies between
 rotamers. Nevertheless, the energy calculation itself happens on the level
 of RotamerGroups and is mostly hidden away in the construction of the
 the :class:`RotamerGraph`. If you're too lazy to build up your rotamers
-by hand, you might be interested in the :class:`SCWRLRotamerConstructor`.
+by hand, you might be interested in the :class:`RotamerConstructor`.
 
 
 
 The Smallest Building Block - The Particle
 --------------------------------------------------------------------------------
 
-Particles give raise to more complex objects such as rotamers and frame residues.
-They are the basis for calculating interaction energies based on a Lennard-Jones
-like term and an approximation of an hbond energy term.
-The Lennard-Jones term gets mainly controlled by the type of the particle, that
-has to be defined at initialization.
+Particles give raise to more complex objects such as rotamers and frame 
+residues. They contain all data required to calculate pairwise energies.
+For every energy function available in ProMod3, there's a particle creation
+function.
 
-.. class:: SidechainParticle
+.. class:: PScoringFunction
 
-  Enumerates the types of particle. Possible values:
+  The available scoring functions between :class:`Particle` objects
 
-  * HParticle   - represents hydrogen
-  * CParticle   - default representation of a carbon
-  * CH1Particle - represents carbon bound to 1 hydrogen
-  * CH2Particle - represents carbon bound to 2 hydrogen
-  * CH3Particle - represents carbon bound to 3 hydrogen
-  * NParticle   - represents nitrogen
-  * OParticle   - default representation of oxygen
-  * OCParticle  - represents carbonyl-oxygen for ASP/GLU
-  * SParticle   - represents sulfur
+  * SCWRL4
 
-.. class:: Particle(type, pos, charge, name)
+.. class:: Particle
 
-  :param type:          Type of particle
-  :param pos:           Positions of particle
-  :param charge:        Charge of particle, will be used in case H-Bonds
-  :param name:          Name of particle. This name will be given to an actual
-                        :class:`ost.mol.AtomHandle` if a rotamer gets applied
-                        to a :class:`ost.mol.ResidueHandle`
+  The particle class. There's no constructor. You can either use the
+  :class:`RotamerConstructor` to create full :class:`RotamerGroup` objects
+  with all underlying particles or the energy function specific creation 
+  functions.
 
-  :type type:           :class:`SidechainParticle`
-  :type pos:            :class:`ost.geom.Vec3`
-  :type charge:         :class:`float`
-  :type name:           :class:`str`
-
-  .. method:: PairwiseEnergy(other)
-
-    Calculates the interaction energy between two particles.
-
-    :param other:       Interaction partner
+  .. method:: PairwiseScore(other_particle)
 
-    :type other:        :class:`Particle`
-
-    :returns:           the interaction energy
-
-
-  .. method:: GetPos()
+    Calculates score between the two particles
 
-    :returns:           The Particle position
+    :param other_particle:  The interacting particle
+    :type other_particle:  :class:`Particle`
 
+    :returns:           The score
+    :rtype:             :class:`float`
 
-  .. method:: GetCharge()
+    :raises:  :exc:`~exceptions.RuntimeError` if the scoring function 
+              parametrization of the two particles is inconsistent         
 
-    :returns:           Charge of particle used for HBond term
-
-  .. method:: GetParticleType()
+  .. method:: GetName()
 
-    :returns:           Internal type of particle
+    :returns:           The name of the particle, which corresponds to the
+                        atom name
+    :rtype:             :class:`str`
 
+  .. method:: GetCollisionDistance()
 
-  .. method:: GetName()
+    :returns:           The "collision distance" all pairs of particles with 
+                        their distance below the sum of their collision 
+                        distances are considered as interacting and thus
+                        evaluated by the underlying scoring function.
 
-    :returns:           Name of particle
+    :rtype:             :class:`float`
 
+  .. method:: GetPos()
 
-  .. method:: IsHBondDonor()
-
-    :returns:           Whether particle has defined polar direction
+    :returns:           The position of the particle
+    :rtype:             :class:`ost.geom.Vec3`
 
+  .. method:: GetScoringFunction()
 
-  .. method:: IsHBondAcceptor()
+    :returns:           The underlying scoring function
+    :rtype:             :class:`PScoringFunction`
 
-    :returns:           Whether particle has defined lone pairs
 
 
-  .. method:: AddLonePair(lone_pair)
 
-    Adds lone pair, that gets evaluated in the HBond term.
+The SCWRL4 scoring function
+--------------------------------------------------------------------------------
 
-    :param lone_pair:   Lone pair direction
+.. class:: SCWRL4ParticleType
 
-    :type lone_pair:    :class:`ost.geom.Vec3`
+  The SCWRL4 energy function differentiates between following particle types
 
+  * HParticle   - represents hydrogen
+  * CParticle   - default representation of a carbon
+  * CH1Particle - represents carbon bound to 1 hydrogen
+  * CH2Particle - represents carbon bound to 2 hydrogen
+  * CH3Particle - represents carbon bound to 3 hydrogen
+  * NParticle   - represents nitrogen
+  * OParticle   - default representation of oxygen
+  * OCParticle  - represents carbonyl-oxygen for ASP/GLU
+  * SParticle   - represents sulfur
 
-  .. method:: SetPolarDirection(polar_direction)
+.. method:: CreateSCWRL4Particle(name, particle_type, pos, [charge, \
+                                 lone_pairs=None, polar_direction=None])
 
-    Sets the polar direction of particle. In case of backbone
-    hydrogen, this would be the direction of backbone-N to backbone-H.
+  Creates and returns a :class:`Particle` that can evaluate the SCWRL4 scoring 
+  function
 
-    :param polar_direction: Polar direction of particle
+  :param name:          The name of the particle
+  :param particle_type: The type of the particle
+  :param pos:           The position of the particle
+  :param charge:        The charge of the particle, relevant for the hydrogen 
+                        bond term
+  :param lone_pairs:    Direction of all possible lone pairs of the particle,
+                        relevant for the hydrogen bond term
+  :param polar_direction: The polar direction of the particle,
+                          relevant for the hdrogen bond term
 
-    :type polar_direction:  :class:`ost.geom.Vec3` 
+  :type name:           :class:`str`
+  :type particle_type:  :class:`SCWRL4ParticleType`
+  :type pos:            :class:`ost.geom.Vec3`
+  :type charge:         :class:`float`
+  :type lone_pairs:     :class:`ost.geom.Vec3List`
+  :type polar_direction: :class:`ost.geom.Vec3`
 
 
 Rotamers
diff --git a/doc/html/_sources/sidechain/rotamer_constructor.txt b/doc/html/_sources/sidechain/rotamer_constructor.txt
index 82f9626c..3a297d5d 100644
--- a/doc/html/_sources/sidechain/rotamer_constructor.txt
+++ b/doc/html/_sources/sidechain/rotamer_constructor.txt
@@ -20,55 +20,40 @@ Rotamer Constructor
 .. currentmodule:: promod3.sidechain
 
 Instead of creating rotamers by yourself, you can simply use the convenient
-functionality provided by ProMod3
+functionality provided by ProMod3.
 
 
 Constructing Rotamers and Frame Residues
 --------------------------------------------------------------------------------
 
 
-.. class:: SCWRLRotamerConstructor(cb_in_sidechain)
-
-  Constructing rotamers and frame residues that are parametrized according to
-  the SCWRL4 method. They contain all heavy atoms, but also the
-  polar hydrogens. 
-  In case of the :class:`FrameResidue` construction, the
-  constructor distinguishes between backbone and sidechain frame residues.
-
-  :param cb_in_sidechain: If set to true, all constructed rotamers will contain 
-                          the cb atom. This flag also affects the construction 
-                          of frame residues and controls whether the cb atom 
-                          shows up in the backbone frame residues or sidechain 
-                          frame residues.
-                          This is useful when you want to represent ALA or 
-                          GLY with actual rotamers, but be aware of increased 
-                          runtime. This flag can be set to False for most
-                          modeling applications and you just don't generate
-                          any rotamers for ALA and GLY.
-
-  :type cb_in_sidechain: :class:`bool`
+.. class:: RotamerConstructor
 
+  Abstract base class that cannot be initialized from Python. It builds 
+  an interface implemented by energy function specific constructors 
+  (e.g. :class:`SCWRL4RotamerConstructor`). 
 
   .. method:: ConstructRRMRotamerGroup(res, id, residue_index, rot_lib,\
-                                       [probability_cutoff = 0.98])
-  .. method:: ConstructRRMRotamerGroup(all_atom_pos, aa_res_idx, id,\
-                                       residue_index, rot_lib,\
-                                       [probability_cutoff = 0.98])
-  .. method:: ConstructRRMRotamerGroup(res, id, residue_index, rot_lib,\
-                                       [phi = -1.0472, psi = -0.7854,\
+                                       [phi = -1.0472, psi = -0.7854, \
+                                        n_ter = False, c_ter = False, \
                                         probability_cutoff = 0.98])
   .. method:: ConstructRRMRotamerGroup(all_atom_pos, aa_res_idx, id,\
                                        residue_index, rot_lib,\
-                                       [phi = -1.0472, psi = -0.7854,\
+                                       [phi = -1.0472, psi = -0.7854, \
+                                        n_ter = False, c_ter = False, \
                                         probability_cutoff = 0.98])
   .. method:: ConstructRRMRotamerGroup(res, id, residue_index, rot_lib_entries,\
-                                       [probability_cutoff = 0.98])
+                                       [phi = -1.0472, psi = -0.7854, \
+                                        n_ter = False, c_ter = False, \
+                                        probability_cutoff = 0.98])
   .. method:: ConstructRRMRotamerGroup(all_atom_pos, aa_res_idx, id,\
                                        residue_index, rot_lib_entries,\
-                                       [probability_cutoff = 0.98])
+                                       [phi = -1.0472, psi = -0.7854, \
+                                        n_ter = False, c_ter = False, \
+                                        probability_cutoff = 0.98])
 
     All functions are also avaible for their flexible rotamer model counterpart.
-    =>ConstructFRMRotamerGroup(...) with exactly the same parameters. 
+    =>ConstructFRMRotamerGroup(...) with the same parameters. 
 
     :param res:         To extract the required backbone atoms
     :param all_atom_pos: To extract the required backbone atoms
@@ -82,10 +67,10 @@ Constructing Rotamers and Frame Residues
     :param rot_lib:     To search for rotamers
     :param rot_lib_entries: :class:`RotamerLibEntry` objects to circumvent the 
                             direct use of a rotamer library
-    :param phi:         Phi dihedral angle used to search for rotamers if a 
-                        :class:`BBDepRotamerLib` is given as input
-    :param psi:         Psi dihedral angle used to search for rotamers if a 
-                        :class:`BBDepRotamerLib` is given as input
+    :param phi:         Phi dihedral angle 
+    :param psi:         Psi dihedral angle 
+    :param n_ter:       Whether the residue is n-terminal
+    :param c_ter:       Whether the residue is c-terminal
     :param probability_cutoff: For some rotamers, there might be many low 
                         probability entries in the library. 
                         The function adds single rotamers to the group until 
@@ -93,8 +78,7 @@ Constructing Rotamers and Frame Residues
                         larger or equal **probability_cutoff**.
 
     :returns:           The rotamer group containing all constructed rotamers 
-                        with internal energies assigned based on the 
-                        probabilities extracted from the rotamer library. 
+                        with internal energies assigned. 
 
     :type res:          :class:`ost.mol.ResidueHandle`
     :type all_atom_pos: :class:`promod3.loop.AllAtomPositions`
@@ -103,6 +87,10 @@ Constructing Rotamers and Frame Residues
     :type residue_index: :class:`int`
     :type rot_lib:      :class:`RotamerLib` / :class:`BBDepRotamerLib`
     :type rot_lib_entries: :class:`list`
+    :type phi:          :class:`float`
+    :type psi:          :class:`float`
+    :type n_ter:        :class:`bool`
+    :type c_ter:        :class:`bool`
     :type probability_cutoff: :class:`float`
     :rtype:             :class:`RRMRotamerGroup`
 
@@ -111,19 +99,17 @@ Constructing Rotamers and Frame Residues
               positions are set in **all_atom_pos**
 
 
-  .. method:: ConstructBackboneFrameResidue(res, id, residue_index, Real phi,\
-                                            [n_ter = False, c_ter = False])
+  .. method:: ConstructBackboneFrameResidue(res, id, residue_index, \
+                                            [phi = -1.0472, psi = -0.7854, \
+                                             n_ter = False, c_ter = False])
 
   .. method:: ConstructBackboneFrameResidue(all_atom_pos, aa_res_idx, id,\
-                                            residue_index, Real phi,\
-                                            [n_ter = False, c_ter = False])
+                                            residue_index, \
+                                            [phi = -1.0472, psi = -0.7854\
+                                             n_ter = False, c_ter = False])
 
-    Constructs backbone frame residues for amino acid residues based on the 
-    parametrizations of SCWRL4. In case of **n_ter**, there are additional
-    hydrogens added at the nitrogen to represent a proper n-terminus. The same
-    is true for **c_ter**, an additional oxygen is built instead. In any case,
-    a single hydrogen is added to the nitrogen (except proline), this is
-    why the phi angle of the residue is required as an input.
+    Constructs frame residues only containing backbone atoms (the ones that 
+    don't show up in a rotamer).
 
     :param res:         Residue from which to extract the backbone positions
     :param all_atom_pos: To extract the backbone positions
@@ -134,19 +120,17 @@ Constructing Rotamers and Frame Residues
                           :class:`Frame` you don't want to calculate a pairwise
                           energy of the sidechain particles towards particles
                           representing the own backbone...
-    :param phi:         The dihedral angle of the current residue, required to 
-                        construct the polar nitrogen hydrogen 
-    :param n_ter:       Whether to add additional hydrogens at the nitrogen
-                        to represent a proper n-terminus
-    :param c_ter:       Whether to add an additional oxygen at the carbon to
-                        represent a proper c-terminus
-
+    :param phi:         The dihedral angle of the current residue
+    :param psi:         The dihedral angle of the current residue
+    :param n_ter:       Whether the residue is n-terminal
+    :param c_ter:       Whether the residue is c-terminal
     :type res:          :class:`ost.mol.ResidueHandle`
     :type all_atom_pos: :class:`promod3.loop.AllAtomPositions`
     :type aa_res_idx:   :class:`int`
     :type id:           :class:`RotamerID`
     :type residue_index: :class:`int`
     :type phi:          :class:`float`
+    :type psi:          :class:`float`
     :type n_ter:        :class:`bool`
     :type c_ter:        :class:`bool`
 
@@ -158,27 +142,40 @@ Constructing Rotamers and Frame Residues
               positions are set in **all_atom_pos**.
 
 
-  .. method:: ConstructSidechainFrameResidue(res, id, residue_index)
+  .. method:: ConstructSidechainFrameResidue(res, id, residue_index, \
+                                             [phi = -1.0472, psi = -0.7854, \
+                                              n_ter = False, c_ter = False])
 
-  .. method:: ConstructSidechainFrameResidue(all_atom, aa_res_idx, id,\ 
-                                             residue_index)
+  .. method:: ConstructSidechainFrameResidue(all_atom_pos, aa_res_idx, id,\
+                                             residue_index, \
+                                             [phi = -1.0472, psi = -0.7854\
+                                             n_ter = False, c_ter = False])
 
-    Extracts all required positions from the input and generates a sidechain
-    frame residue. Additionally to the heavy atoms, the function also produces
-    particles for all polar hydrogens.
+    Constructs frame residues only containing sidechain atoms (the ones that
+    you observe in a rotamer).
 
-    :param res:         Residue from which to extract the sidechain positions
-    :param all_atom_pos: To extract the sidechain positions
+    :param res:         Residue from which to extract the backbone positions
+    :param all_atom_pos: To extract the backbone positions
     :param aa_res_idx:  Index of residue in **all_atom_pos** from which to 
-                        extract the sidechain positions
+                        extract the backbone positions
     :param id:          Identifies the sidechain
-    :param residue_index: idenfifies residue in frame
-
+    :param residue_index: Important for the energy calculations towards the 
+                          :class:`Frame` you don't want to calculate a pairwise
+                          energy of the sidechain particles towards particles
+                          representing the own backbone...
+    :param phi:         The dihedral angle of the current residue
+    :param psi:         The dihedral angle of the current residue
+    :param n_ter:       Whether the residue is n-terminal
+    :param c_ter:       Whether the residue is c-terminal
     :type res:          :class:`ost.mol.ResidueHandle`
     :type all_atom_pos: :class:`promod3.loop.AllAtomPositions`
     :type aa_res_idx:   :class:`int`
     :type id:           :class:`RotamerID`
     :type residue_index: :class:`int`
+    :type phi:          :class:`float`
+    :type psi:          :class:`float`
+    :type n_ter:        :class:`bool`
+    :type c_ter:        :class:`bool`
 
     :rtype:             :class:`FrameResidue`
 
@@ -187,14 +184,62 @@ Constructing Rotamers and Frame Residues
               atoms are present in **residue** or not all required sidechain 
               atom positions are set in **all_atom_pos**.
 
+  .. method:: AssignInternalEnergies(rot_group, id, residue_index, \
+                                     [phi = -1.0472, psi = -0.7854, \
+                                      n_ter = False, c_ter = False])
+
+    Assigns an internal energy to every rotamer in *rot_group*, i.e. an energy
+    value before looking at any structural component of the energy function.
+    The default implementation simply assigns 0.0 to every rotamer, it's up
+    to the energy function specific constructors to override that behaviour.
+
+    :param rot_group:   containing all rotamers for which internal energies have
+                        to be assigned
+    :param id:          Identifies the sidechain
+    :param residue_index: The index of the residue which is represented by 
+                          *rot_group*    
+    :param phi:         The dihedral angle of the current residue
+    :param psi:         The dihedral angle of the current residue
+    :param n_ter:       Whether the residue is n-terminal
+    :param c_ter:       Whether the residue is c-terminal
+
+    :type rot_group:    :class:`RRMRotamerGroup` / :class:`FRMRotamerGroup`
+    :type id:           :class:`RotamerID`
+    :type residue_index: :class:`int`
+    :type phi:          :class:`float`
+    :type psi:          :class:`float`
+    :type n_ter:        :class:`bool`
+    :type c_ter:        :class:`bool`
+
+
+
+.. class:: SCWRL4RotamerConstructor(cb_in_sidechain)
+
+  This object implements the full interface defined in 
+  :class:`RotamerConstructor` and constructs rotamers and frame residues that 
+  are parametrized according to the SCWRL4 method. They contain all heavy atoms, 
+  but also the polar hydrogens. 
+
+  :param cb_in_sidechain: If set to true, all constructed rotamers will contain 
+                          the cb atom. This flag also affects the construction 
+                          of frame residues and controls whether the cb atom 
+                          shows up in the backbone frame residues or sidechain 
+                          frame residues.
+                          This is useful when you want to represent ALA or 
+                          GLY with actual rotamers, but be aware of increased 
+                          runtime. This flag can be set to False for most
+                          modeling applications and you just don't generate
+                          any rotamers for ALA and GLY.
+
+  :type cb_in_sidechain: :class:`bool`
 
   .. method:: ConstructFrameResidue(residue, residue_index)
   
     Constructs a :class:`FrameResidue` from a :class:`ost.mol.ResidueHandle`.
     This can be useful to mark a region occupied by a ligand. Note, that
-    there won't be any parametrization of hbonds in this function. All atoms
-    of the residue will be represented as carbons and hydrogens are skipped.
-  
+    there won't be any parametrization of hbonds in this function. All heavy 
+    atoms of the residue will be represented as carbons and hydrogens are 
+    skipped.
 
     :param residue:       Residue from which all atoms will be taken to
                         construct a :class:`FrameResidue`.
@@ -230,10 +275,12 @@ Constructing Rotamers and Frame Residues
     :type comp_lib:       :class:`ost.conop.CompoundLib`
   
     :returns:             :class:`FrameResidue`
-  
 
-  .. method:: AssignInternalEnergies(rot_group)
+  .. method:: AssignInternalEnergies(rot_group, id, residue_index, \
+                                     [phi = -1.0472, psi = -0.7854, \
+                                      n_ter = False, c_ter = False])
 
+    Overrides the method defined in :class:`RotamerConstructor`.
     Takes the rotamer group and assigns every single rotamer its internal
     energy based on the probabilistic approach used by SCWRL4.
     => -internal_e_prefac*log(p/max_p), where internal_e_prefac and p are
@@ -244,6 +291,18 @@ Constructing Rotamers and Frame Residues
 
     :param rot_group:   containing all rotamers for which internal energies have
                         to be assigned
+    :param id:          Identifies the sidechain
+    :param residue_index: The index of the residue which is represented by 
+                          *rot_group*    
+    :param phi:         The dihedral angle of the current residue
+    :param psi:         The dihedral angle of the current residue
+    :param n_ter:       Whether the residue is n-terminal
+    :param c_ter:       Whether the residue is c-terminal
 
     :type rot_group:    :class:`RRMRotamerGroup` / :class:`FRMRotamerGroup`
-
+    :type id:           :class:`RotamerID`
+    :type residue_index: :class:`int`
+    :type phi:          :class:`float`
+    :type psi:          :class:`float`
+    :type n_ter:        :class:`bool`
+    :type c_ter:        :class:`bool`
diff --git a/doc/html/_sources/user_contributions.txt b/doc/html/_sources/user_contributions.txt
new file mode 100644
index 00000000..ad17efb9
--- /dev/null
+++ b/doc/html/_sources/user_contributions.txt
@@ -0,0 +1,26 @@
+..  Copyright (c) 2013-2018, SIB - Swiss Institute of Bioinformatics and 
+..                           Biozentrum - University of Basel
+..  
+..  Licensed under the Apache License, Version 2.0 (the "License");
+..  you may not use this file except in compliance with the License.
+..  You may obtain a copy of the License at
+..  
+..    http://www.apache.org/licenses/LICENSE-2.0
+..  
+..  Unless required by applicable law or agreed to in writing, software
+..  distributed under the License is distributed on an "AS IS" BASIS,
+..  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+..  See the License for the specific language governing permissions and
+..  limitations under the License.
+
+Contributing
+================================================================================
+
+Please contact the ProMod3 developers if you implemented a modelling pipeline
+that you believe is worth sharing with other users.
+They can review the code and add it to the repository at:
+https://git.scicore.unibas.ch/schwede/ProMod3. Consider
+opening an account for the GitLab instance at sciCORE, University of Basel if
+you directly want to contribute to ProMod3's core features. You can find more
+information on that matter in the developer section of the documentation
+(:ref:`how-to-contribute`).
diff --git a/doc/html/_sources/users.txt b/doc/html/_sources/users.txt
index 3b11ff19..bfe50dac 100644
--- a/doc/html/_sources/users.txt
+++ b/doc/html/_sources/users.txt
@@ -35,3 +35,4 @@ Contents:
    loop/index
    core/index
    core/setcompoundschemlib
+   user_contributions
diff --git a/doc/html/actions/index.html b/doc/html/actions/index.html
index 84c071d6..b8d6aa5a 100644
--- a/doc/html/actions/index.html
+++ b/doc/html/actions/index.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>ProMod3 Actions &mdash; ProMod3 1.3.0 documentation</title>
+    <title>ProMod3 Actions &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="Documentation For Users" href="../users.html" />
     <link rel="next" title="Building ProMod3" href="../buildsystem.html" />
     <link rel="prev" title="Getting Started" href="../gettingstarted.html" />
@@ -54,6 +54,7 @@ you can type <code class="docutils literal"><span class="pre">pm</span> <span cl
 with</p>
 <div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> pm build-model <span class="o">[</span>-h<span class="o">]</span> <span class="o">(</span>-f &lt;FILE&gt; <span class="p">|</span> -c &lt;FILE&gt; <span class="p">|</span> -j &lt;OBJECT&gt;<span class="p">|</span>&lt;FILE&gt;<span class="o">)</span>
 <span class="go">                 (-p &lt;FILE&gt; | -e &lt;FILE&gt;) [-s &lt;FILE&gt;] [-o &lt;FILENAME&gt;]</span>
+<span class="go">                 [-r] [-t]</span>
 </pre></div>
 </div>
 <p>Example usage:</p>
@@ -111,7 +112,7 @@ Example:</p>
 </li>
 </ul>
 <p>Structures can be provided in PDB (<code class="docutils literal"><span class="pre">-p</span></code>) or in any format readable by the
-<a class="reference external" href="https://www.openstructure.org/docs/dev/io/io/#ost.io.LoadEntity" title="(in OpenStructure v1.8.0)"><code class="xref py py-func docutils literal"><span class="pre">ost.io.LoadEntity()</span></code></a> method (<code class="docutils literal"><span class="pre">-e</span></code>). In the latter case, the format is
+<a class="reference external" href="https://www.openstructure.org/docs/io/io/#ost.io.LoadEntity" title="(in OpenStructure v1.9.0)"><code class="xref py py-func docutils literal"><span class="pre">ost.io.LoadEntity()</span></code></a> method (<code class="docutils literal"><span class="pre">-e</span></code>). In the latter case, the format is
 chosen by file ending. Recognized File Extensions: <code class="docutils literal"><span class="pre">.ent</span></code>, <code class="docutils literal"><span class="pre">.pdb</span></code>,
 <code class="docutils literal"><span class="pre">.ent.gz</span></code>, <code class="docutils literal"><span class="pre">.pdb.gz</span></code>, <code class="docutils literal"><span class="pre">.cif</span></code>, <code class="docutils literal"><span class="pre">.cif.gz</span></code>. At least one structure must be
 given and you cannot mix file formats. Multiple structures can be given and each
@@ -138,7 +139,7 @@ to the corresponding target sequences. This has an impact on loop scoring with
 the database approach.
 The profiles can be provided as plain files or gzipped. Following file
 extensions are understood: .hhm, .hhm.gz, .pssm, .pssm.gz.
-Consider to use <a class="reference external" href="https://www.openstructure.org/docs/dev/bindings/hhblits/#ost.bindings.hhblits.HHblits.A3MToProfile" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.bindings.hhblits.HHblits.A3MToProfile()</span></code></a> if you have a
+Consider to use <a class="reference external" href="https://www.openstructure.org/docs/bindings/hhblits/#ost.bindings.hhblits.HHblits.A3MToProfile" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.bindings.hhblits.HHblits.A3MToProfile()</span></code></a> if you have a
 file in a3m format at hand.</p>
 <ul class="simple">
 <li>The profiles are mapped based on exact matches towards the gapless
@@ -152,6 +153,20 @@ target sequences</li>
 <div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> pm build-model -f aln.fasta -p tpl.pdb -s prof.hhm
 </pre></div>
 </div>
+<p>A fast torsion angle based sampling is performed in case of Monte Carlo
+sampling. You can enforce the usage of structural fragments with <code class="docutils literal"><span class="pre">-r</span></code>
+but this increases runtime due to searching the required fragments.
+Setup of the according <a class="reference internal" href="../modelling/algorithms.html#promod3.modelling.FraggerHandle" title="promod3.modelling.FraggerHandle"><code class="xref py py-class docutils literal"><span class="pre">promod3.modelling.FraggerHandle</span></code></a>
+objects is performed in the
+<a class="reference internal" href="../core/pm3argparse.html#promod3.core.pm3argparse.PM3ArgumentParser" title="promod3.core.pm3argparse.PM3ArgumentParser"><code class="xref py py-class docutils literal"><span class="pre">PM3ArgumentParser</span></code></a> class as described in
+detail <a class="reference internal" href="../core/pm3argparse.html#promod3.core.pm3argparse.PM3ArgumentParser.AddFragments" title="promod3.core.pm3argparse.PM3ArgumentParser.AddFragments"><code class="xref py py-meth docutils literal"><span class="pre">here</span></code></a>.</p>
+<p>The default modelling pipeline in ProMod3 is optimized to generate a gap-free
+model of the region in the target sequence(s) that is covered with template
+information. Terminal extensions without template coverage are negelected.
+You can enforce a model of the full target sequence(s) by adding <code class="docutils literal"><span class="pre">-t</span></code>.
+The terminal parts will be modelled with a crude Monte Carlo approach. Be aware
+that the accuracy of those termini is likely to be limited. Termini of length 1
+won&#8217;t be modelled.</p>
 <p>Possible exit codes of the action:</p>
 <ul class="simple">
 <li>0: all went well</li>
@@ -179,7 +194,7 @@ detects and models disulfid bonds and reconstructs all sidechains with the
 flexible rotamer model. The result is stored as <code class="file docutils literal"><span class="pre">out.pdb</span></code>.
 The output filename can be controlled with the <code class="docutils literal"><span class="pre">-o</span></code> flag.</p>
 <p>A structure can be provided in PDB (<code class="docutils literal"><span class="pre">-p</span></code>) or in any format readable by the
-<a class="reference external" href="https://www.openstructure.org/docs/dev/io/io/#ost.io.LoadEntity" title="(in OpenStructure v1.8.0)"><code class="xref py py-func docutils literal"><span class="pre">ost.io.LoadEntity()</span></code></a> method (<code class="docutils literal"><span class="pre">-e</span></code>). In the latter case, the format is
+<a class="reference external" href="https://www.openstructure.org/docs/io/io/#ost.io.LoadEntity" title="(in OpenStructure v1.9.0)"><code class="xref py py-func docutils literal"><span class="pre">ost.io.LoadEntity()</span></code></a> method (<code class="docutils literal"><span class="pre">-e</span></code>). In the latter case, the format is
 chosen by file ending. Recognized File Extensions: <code class="docutils literal"><span class="pre">.ent</span></code>, <code class="docutils literal"><span class="pre">.pdb</span></code>,
 <code class="docutils literal"><span class="pre">.ent.gz</span></code>, <code class="docutils literal"><span class="pre">.pdb.gz</span></code>, <code class="docutils literal"><span class="pre">.cif</span></code>, <code class="docutils literal"><span class="pre">.cif.gz</span></code>.</p>
 <p>Several flags control the modelling behaviour:</p>
@@ -215,6 +230,13 @@ dependent one (from <a class="reference internal" href="../sidechain/loading.htm
 <dd><p>Dont do subrotamer optimization if flexible rotamer model is used</p>
 </dd></dl>
 
+<dl class="option">
+<dt id="cmdoption-f">
+<span id="cmdoption--energy_function"></span><code class="descname">-f</code><code class="descclassname"></code><code class="descclassname">, </code><code class="descname">--energy_function</code><code class="descclassname"></code><a class="headerlink" href="#cmdoption-f" title="Permalink to this definition">¶</a></dt>
+<dd><p>The energy function to be used. Default is SCWRL4, can be any function
+supported by <a class="reference internal" href="../modelling/sidechain_reconstruction.html#promod3.modelling.ReconstructSidechains" title="promod3.modelling.ReconstructSidechains"><code class="xref py py-meth docutils literal"><span class="pre">promod3.modelling.ReconstructSidechains()</span></code></a>.</p>
+</dd></dl>
+
 </div>
 </div>
 
@@ -265,7 +287,7 @@ dependent one (from <a class="reference internal" href="../sidechain/loading.htm
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/actions/index_dev.html b/doc/html/actions/index_dev.html
index a0e99aa9..38817d23 100644
--- a/doc/html/actions/index_dev.html
+++ b/doc/html/actions/index_dev.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>test_actions - Testing Actions &mdash; ProMod3 1.3.0 documentation</title>
+    <title>test_actions - Testing Actions &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="Documentation For Developers" href="../developers.html" />
     <link rel="next" title="ProMod3‘s Share Of CMake" href="../cmake/index.html" />
     <link rel="prev" title="Contributing" href="../contributing.html" />
@@ -194,7 +194,7 @@ happens if a user throws dirty input data in.</p>
 </div>
 <div class="section" id="making-the-script-executable">
 <h3>Making the Script Executable<a class="headerlink" href="#making-the-script-executable" title="Permalink to this headline">¶</a></h3>
-<p>In ProMod3, unit tests are run via <a class="reference external" href="https://www.OpenStructure.org">OST</a>&#8216;s <a class="reference external" href="https://www.openstructure.org/docs/dev/base/testutils/#module-ost.testutils" title="(in OpenStructure v1.8.0)"><code class="xref py py-mod docutils literal"><span class="pre">ost.testutils</span></code></a> and Python&#8216;s
+<p>In ProMod3, unit tests are run via <a class="reference external" href="https://www.OpenStructure.org">OST</a>&#8216;s <a class="reference external" href="https://www.openstructure.org/docs/base/testutils/#module-ost.testutils" title="(in OpenStructure v1.9.0)"><code class="xref py py-mod docutils literal"><span class="pre">ost.testutils</span></code></a> and Python&#8216;s
 <a class="reference external" href="https://docs.python.org/2.7/library/unittest.html#unittest.TestCase" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">unittest.TestCase</span></code></a>. Those are called when the test module is executed
 as a script:</p>
 <div class="highlight-default"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>13
@@ -261,7 +261,7 @@ output will be separated into <code class="file docutils literal"><span class="p
 <h2>Unit Test Actions API<a class="headerlink" href="#unit-test-actions-api" title="Permalink to this headline">¶</a></h2>
 <dl class="class">
 <dt id="test_actions.ActionTestCase">
-<em class="property">class </em><code class="descclassname">test_actions.</code><code class="descname">ActionTestCase</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/test_actions.html#ActionTestCase"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#test_actions.ActionTestCase" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">test_actions.</code><code class="descname">ActionTestCase</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#test_actions.ActionTestCase" title="Permalink to this definition">¶</a></dt>
 <dd><p>Class to help developing actions. Comes with a lot of convenience wrappers
 around what should be tested and serves as a recorder for test calls...
 just for in two years when you come back to rewrite the whole action...</p>
@@ -300,7 +300,7 @@ Otherwise the whole idea does not work.</p>
 
 <dl class="method">
 <dt id="test_actions.ActionTestCase.RunAction">
-<code class="descname">RunAction</code><span class="sig-paren">(</span><em>arguments</em>, <em>verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/test_actions.html#ActionTestCase.RunAction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#test_actions.ActionTestCase.RunAction" title="Permalink to this definition">¶</a></dt>
+<code class="descname">RunAction</code><span class="sig-paren">(</span><em>arguments</em>, <em>verbose=False</em><span class="sig-paren">)</span><a class="headerlink" href="#test_actions.ActionTestCase.RunAction" title="Permalink to this definition">¶</a></dt>
 <dd><p>Call an action, return the exit status (<code class="docutils literal"><span class="pre">$?</span></code> shell variable). May be
 set to <code class="docutils literal"><span class="pre">verbose</span></code> to print the actions terminal output. The action to
 be executed needs to be stored in <a class="reference internal" href="#test_actions.ActionTestCase.pm_action" title="test_actions.ActionTestCase.pm_action"><code class="xref py py-attr docutils literal"><span class="pre">pm_action</span></code></a> first.</p>
@@ -325,7 +325,7 @@ printed first followed by <code class="file docutils literal"><span class="pre">
 
 <dl class="method">
 <dt id="test_actions.ActionTestCase.RunExitStatusTest">
-<code class="descname">RunExitStatusTest</code><span class="sig-paren">(</span><em>exit_code</em>, <em>arguments</em>, <em>verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/test_actions.html#ActionTestCase.RunExitStatusTest"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#test_actions.ActionTestCase.RunExitStatusTest" title="Permalink to this definition">¶</a></dt>
+<code class="descname">RunExitStatusTest</code><span class="sig-paren">(</span><em>exit_code</em>, <em>arguments</em>, <em>verbose=False</em><span class="sig-paren">)</span><a class="headerlink" href="#test_actions.ActionTestCase.RunExitStatusTest" title="Permalink to this definition">¶</a></dt>
 <dd><p>Run the action with given arguments and check the exit code.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -344,7 +344,7 @@ printed first followed by <code class="file docutils literal"><span class="pre">
 
 <dl class="method">
 <dt id="test_actions.ActionTestCase.testPMExists">
-<code class="descname">testPMExists</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/test_actions.html#ActionTestCase.testPMExists"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#test_actions.ActionTestCase.testPMExists" title="Permalink to this definition">¶</a></dt>
+<code class="descname">testPMExists</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#test_actions.ActionTestCase.testPMExists" title="Permalink to this definition">¶</a></dt>
 <dd><p>This is an internal test, executed when the source code of the test
 class is run as unit test. Verifies that <a class="reference internal" href="#test_actions.ActionTestCase.pm_bin" title="test_actions.ActionTestCase.pm_bin"><code class="xref py py-attr docutils literal"><span class="pre">pm_bin</span></code></a> is an existing
 file (also complains if a directory is found instead).</p>
@@ -411,7 +411,7 @@ file (also complains if a directory is found instead).</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/buildsystem.html b/doc/html/buildsystem.html
index 98547d3d..fa8c0e46 100644
--- a/doc/html/buildsystem.html
+++ b/doc/html/buildsystem.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Building ProMod3 &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Building ProMod3 &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="index.html" />
     <link rel="up" title="Documentation For Users" href="users.html" />
     <link rel="next" title="ProMod3 and Containers" href="container/index.html" />
     <link rel="prev" title="ProMod3 Actions" href="actions/index.html" />
@@ -46,14 +46,15 @@
 <span id="building-promod"></span><h1>Building ProMod3<a class="headerlink" href="#building-project" title="Permalink to this headline">¶</a></h1>
 <div class="section" id="dependencies">
 <h2>Dependencies<a class="headerlink" href="#dependencies" title="Permalink to this headline">¶</a></h2>
-<p>ProMod3 is build on top of <a class="reference external" href="https://www.OpenStructure.org">OpenStructure</a> (OST), requiring at least version 1.8.
-OST must be configured and compiled with <code class="docutils literal"><span class="pre">ENABLE_MM=1</span></code> to use <a class="reference external" href="http://openmm.org">OpenMM</a>.
-To create the build system, <a class="reference external" href="https://cmake.org/">CMake</a> is required. The same versions of <a class="reference external" href="https://www.python.org/">Python</a>
-and <a class="reference external" href="https://www.boost.org/">Boost</a> are needed as used in OST. For <a class="reference external" href="http://eigen.tuxfamily.org/index.php?title=Main_Page">Eigen 3</a> we need at least
-version 3.3.0. To build the documentation, <a class="reference external" href="http://sphinx-doc.org/">Sphinx</a> is required.</p>
+<p>ProMod3 is build on top of <a class="reference external" href="https://www.OpenStructure.org">OpenStructure</a> (OST), requiring at least version
+1.10.0. OST must be configured and compiled with <code class="docutils literal"><span class="pre">ENABLE_MM=1</span></code> to
+use <a class="reference external" href="http://openmm.org">OpenMM</a>. To create the build system, <a class="reference external" href="https://cmake.org/">CMake</a> is required. The same
+versions of <a class="reference external" href="https://www.python.org/">Python</a> and <a class="reference external" href="https://www.boost.org/">Boost</a> are needed as used in OST. For <a class="reference external" href="http://eigen.tuxfamily.org/index.php?title=Main_Page">Eigen 3</a>
+we need at least version 3.3.0. To build the documentation, <a class="reference external" href="http://sphinx-doc.org/">Sphinx</a> is
+required.</p>
 <p>The currently preferred versions are:</p>
 <ul class="simple">
-<li><a class="reference external" href="https://www.OpenStructure.org">OST</a> 1.9</li>
+<li><a class="reference external" href="https://www.OpenStructure.org">OST</a> 1.10.0</li>
 <li><a class="reference external" href="http://openmm.org">OpenMM</a> 7.1.1</li>
 <li><a class="reference external" href="https://cmake.org/">CMake</a> 2.8.12</li>
 <li><a class="reference external" href="https://www.python.org/">Python</a> 2.7.5</li>
@@ -203,7 +204,7 @@ safely delete the whole source folder.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/changelog.html b/doc/html/changelog.html
index 460b1c77..624bccd9 100644
--- a/doc/html/changelog.html
+++ b/doc/html/changelog.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Changelog &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Changelog &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="index.html" />
     <link rel="prev" title="References" href="references.html" />
    
   <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -42,6 +42,24 @@
             
   <div class="section" id="changelog">
 <h1>Changelog<a class="headerlink" href="#changelog" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="release-2-0-0">
+<h2>Release 2.0.0<a class="headerlink" href="#release-2-0-0" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Generalize particle scoring and rotamer construction in sidechain module.
+This simplifies the addition of other scoring functions in the future.
+Be aware of breaking changes introduced in the process!
+(SCWRLRotamerConstructor -&gt; SCWRL4RotamerConstructor, changed interface of
+Particle and RotamerConstructor classes).</li>
+<li>Enable possibility to use structural fragments in default modelling pipeline
+and build-model action</li>
+<li>Enable possibility to enforce full coverage models including termini without
+template coverage in default modelling pipeline and build-model action</li>
+<li>Modelling pipeline can track issues in the ModellingHandle object</li>
+<li>External example scripts can now be found in extras/external_scripts</li>
+<li>Improved support for recent compilers and libraries.</li>
+<li>Several minor bug fixes, improvements, and speed-ups</li>
+</ul>
+</div>
 <div class="section" id="release-1-3-0">
 <h2>Release 1.3.0<a class="headerlink" href="#release-1-3-0" title="Permalink to this headline">¶</a></h2>
 <ul class="simple">
@@ -132,6 +150,7 @@ selected loops, reconstruct hydrogens and minimize energy with MM</li>
   <h3><a href="index.html">Table Of Contents</a></h3>
   <ul>
 <li><a class="reference internal" href="#">Changelog</a><ul>
+<li><a class="reference internal" href="#release-2-0-0">Release 2.0.0</a></li>
 <li><a class="reference internal" href="#release-1-3-0">Release 1.3.0</a></li>
 <li><a class="reference internal" href="#release-1-2-0">Release 1.2.0</a></li>
 <li><a class="reference internal" href="#release-1-1-0">Release 1.1.0</a></li>
@@ -169,7 +188,7 @@ selected loops, reconstruct hydrogens and minimize energy with MM</li>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/cmake/index.html b/doc/html/cmake/index.html
index a53376df..dbdb8503 100644
--- a/doc/html/cmake/index.html
+++ b/doc/html/cmake/index.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>ProMod3‘s Share Of CMake &mdash; ProMod3 1.3.0 documentation</title>
+    <title>ProMod3‘s Share Of CMake &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="Documentation For Developers" href="../developers.html" />
     <link rel="next" title="Using Binary Files In ProMod3" href="../portableIO.html" />
     <link rel="prev" title="test_actions - Testing Actions" href="../actions/index_dev.html" />
@@ -373,7 +373,7 @@ target has to be created <strong>before</strong> any action may be attached to i
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/container/docker.html b/doc/html/container/docker.html
index d744acd6..aabd7220 100644
--- a/doc/html/container/docker.html
+++ b/doc/html/container/docker.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Docker &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Docker &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="ProMod3 and Containers" href="index.html" />
     <link rel="next" title="Singularity" href="singularity.html" />
     <link rel="prev" title="ProMod3 and Containers" href="index.html" />
@@ -60,11 +60,13 @@ path. Eg. assuming that we have a struc.pdb file in /home/&lt;USER&gt;/pdbs dire
 a script.py in /home/&lt;USER&gt; we could mount the /home/&lt;USER&gt; to /home in docker as
 above by specifying -v /home/&lt;USER&gt;:/home. To run the script we thus need to
 provide the (relative) path to the script and (relative) path to the file eg:</p>
-<div class="highlight-bash"><div class="highlight"><pre><span></span>sudo docker run --rm -v /home/&lt;USER&gt;:/home &lt;IMAGE_NAME&gt; pm script.py pdbs/struct.pdb
+<div class="highlight-bash"><div class="highlight"><pre><span></span>sudo docker run --rm -v /home/&lt;USER&gt;:/home &lt;IMAGE_NAME&gt; pm script.py <span class="se">\</span>
+     pdbs/struct.pdb
 </pre></div>
 </div>
 <p>or with absolute paths:</p>
-<div class="highlight-bash"><div class="highlight"><pre><span></span>sudo docker run --rm -v /home/&lt;USER&gt;:/home &lt;IMAGE_NAME&gt; pm /home/script.py /home/pdbs/struct.pdb
+<div class="highlight-bash"><div class="highlight"><pre><span></span>sudo docker run --rm -v /home/&lt;USER&gt;:/home &lt;IMAGE_NAME&gt; pm /home/script.py <span class="se">\</span>
+     /home/pdbs/struct.pdb
 </pre></div>
 </div>
 <p>An alternative is to mount the current working directory into the docker home:</p>
@@ -74,7 +76,7 @@ provide the (relative) path to the script and (relative) path to the file eg:</p
 </div>
 <div class="section" id="the-compound-library">
 <span id="docker-compound-lib"></span><h2>The Compound Library<a class="headerlink" href="#the-compound-library" title="Permalink to this headline">¶</a></h2>
-<p>At build time of the container, a <a class="reference external" href="https://www.openstructure.org/docs/dev/conop/compoundlib/#ost.conop.CompoundLib" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">CompoundLib</span></code></a> is generated.
+<p>At build time of the container, a <a class="reference external" href="https://www.openstructure.org/docs/conop/compoundlib/#ost.conop.CompoundLib" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">CompoundLib</span></code></a> is generated.
 Compound libraries contain information on chemical compounds, such as their
 connectivity, chemical class and one-letter-code. The compound library has
 several uses, but the most important one is to provide the connectivy
@@ -97,11 +99,14 @@ The files are rather large, it is therefore recommended to download the
 gzipped version.</p>
 <p>After downloading the file use <strong class="program">chemdict_tool</strong> in the container to
 convert the MMCIF  dictionary into our internal format:</p>
-<div class="highlight-bash"><div class="highlight"><pre><span></span>sudo docker run --rm -v <span class="k">$(</span><span class="nb">pwd</span><span class="k">)</span>:/home &lt;IMAGE_NAME&gt; chemdict_tool create components.cif.gz compounds.chemlib
+<div class="highlight-bash"><div class="highlight"><pre><span></span>sudo docker run --rm -v <span class="k">$(</span><span class="nb">pwd</span><span class="k">)</span>:/home &lt;IMAGE_NAME&gt; chemdict_tool create <span class="se">\</span>
+     components.cif.gz compounds.chemlib
 </pre></div>
 </div>
 <p>To run a script with the upated compound library, use the -v option for mounting/overriding:</p>
-<div class="highlight-bash"><div class="highlight"><pre><span></span>sudo docker run --rm -v /home/&lt;USER&gt;:/home -v &lt;COMPLIB_DIR_LOCALHOST&gt;:&lt;COMPLIB_DIR_CONTAINER&gt; &lt;IMAGE_NAME&gt; pm script.py pdbs/struct.pdb
+<div class="highlight-bash"><div class="highlight"><pre><span></span>sudo docker run --rm -v /home/&lt;USER&gt;:/home <span class="se">\</span>
+     -v &lt;COMPLIB_DIR_LOCALHOST&gt;:&lt;COMPLIB_DIR_CONTAINER&gt; <span class="se">\</span>
+     &lt;IMAGE_NAME&gt; pm script.py pdbs/struct.pdb
 </pre></div>
 </div>
 <p>with COMPLIB_DIR_LOCALHOST being the directory that contains the newly generated
@@ -170,7 +175,7 @@ output when running a Python script with following code in the container:</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/container/index.html b/doc/html/container/index.html
index 43bb816f..db0c0868 100644
--- a/doc/html/container/index.html
+++ b/doc/html/container/index.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>ProMod3 and Containers &mdash; ProMod3 1.3.0 documentation</title>
+    <title>ProMod3 and Containers &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="Documentation For Users" href="../users.html" />
     <link rel="next" title="Docker" href="docker.html" />
     <link rel="prev" title="Building ProMod3" href="../buildsystem.html" />
@@ -94,7 +94,7 @@ some sugar on top.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/container/singularity.html b/doc/html/container/singularity.html
index 27652932..1940dd07 100644
--- a/doc/html/container/singularity.html
+++ b/doc/html/container/singularity.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Singularity &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Singularity &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="ProMod3 and Containers" href="index.html" />
     <link rel="next" title="modelling - Protein Modelling" href="../modelling/index.html" />
     <link rel="prev" title="Docker" href="docker.html" />
@@ -48,9 +48,7 @@
 Docker image.</p>
 <div class="section" id="build-singularity-image">
 <h2>Build Singularity Image<a class="headerlink" href="#build-singularity-image" title="Permalink to this headline">¶</a></h2>
-<p>You can pull the Docker image to start with from two different sources.</p>
-<p>Option One:</p>
-<p>You built the Docker image locally and want to use it as a starting point. For
+<p>If you built the Docker image locally you can use it as a starting point. For
 this we have to fire up a local Docker registry and pull from there. Let&#8217;s
 assume you built the Docker image with tag promod.</p>
 <p>Fire the local Registry and push the promod image to it:</p>
@@ -70,13 +68,6 @@ From: promod:latest
 <div class="highlight-bash"><div class="highlight"><pre><span></span>sudo <span class="nv">SINGULARITY_NOHTTPS</span><span class="o">=</span><span class="m">1</span> singularity build promod.img Singularity
 </pre></div>
 </div>
-<p>Option Two:</p>
-<p>You pull a Docker image from an external Docker registry.
-Fill in a lot of words as soon as its on Dockerhub. Many words. The best words.</p>
-<p>and build the image with:</p>
-<div class="highlight-bash"><div class="highlight"><pre><span></span>sudo singularity build promod.img Singularity
-</pre></div>
-</div>
 </div>
 <div class="section" id="run-scripts-and-actions-with-ost-pm">
 <h2>Run scripts and actions with OST/PM<a class="headerlink" href="#run-scripts-and-actions-with-ost-pm" title="Permalink to this headline">¶</a></h2>
@@ -103,11 +94,13 @@ section of the documentation: <a class="reference internal" href="docker.html#do
 the container applies. The two relevant commands for Singularity are building
 a new library and mount it.</p>
 <p>Build a new library:</p>
-<div class="highlight-bash"><div class="highlight"><pre><span></span>singularity <span class="nb">exec</span> &lt;IMAGE_NAME&gt; chemdict_tool create components.cif.gz compounds.chemlib
+<div class="highlight-bash"><div class="highlight"><pre><span></span>singularity <span class="nb">exec</span> &lt;IMAGE_NAME&gt; chemdict_tool create components.cif.gz <span class="se">\</span>
+            compounds.chemlib
 </pre></div>
 </div>
 <p>Run some script with an updated compound library from localhost:</p>
-<div class="highlight-bash"><div class="highlight"><pre><span></span>singularity <span class="nb">exec</span> -B &lt;COMPLIB_DIR_LOCALHOST&gt;:&lt;COMPLIB_DIR_CONTAINER&gt; &lt;IMAGE_NAME&gt; pm my_script.py
+<div class="highlight-bash"><div class="highlight"><pre><span></span>singularity <span class="nb">exec</span> -B &lt;COMPLIB_DIR_LOCALHOST&gt;:&lt;COMPLIB_DIR_CONTAINER&gt; &lt;IMAGE_NAME&gt; <span class="se">\</span>
+            pm my_script.py
 </pre></div>
 </div>
 <p>Same as for the Docker, if you didn&#8217;t meddle with the original Dockerfile,
@@ -169,7 +162,7 @@ in the Docker documentation: <a class="reference internal" href="docker.html#doc
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/contributing.html b/doc/html/contributing.html
index aeb7bd45..6ba9fbd7 100644
--- a/doc/html/contributing.html
+++ b/doc/html/contributing.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Contributing &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Contributing &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="index.html" />
     <link rel="up" title="Documentation For Developers" href="developers.html" />
     <link rel="next" title="test_actions - Testing Actions" href="actions/index_dev.html" />
     <link rel="prev" title="ProMod3 Setup" href="dev_setup.html" />
@@ -43,10 +43,21 @@
           <div class="body" role="main">
             
   <div class="section" id="contributing">
-<h1>Contributing<a class="headerlink" href="#contributing" title="Permalink to this headline">¶</a></h1>
-<p>The following should explain, in a coarse grain manner, how to add new features
+<span id="how-to-contribute"></span><h1>Contributing<a class="headerlink" href="#contributing" title="Permalink to this headline">¶</a></h1>
+<p>Code contributions are handled through the git repository hosted at sciCORE,
+University of Basel: <a class="reference external" href="https://git.scicore.unibas.ch/schwede/ProMod3">https://git.scicore.unibas.ch/schwede/ProMod3</a>.
+Get in touch with the main developers if you have a fantastic new feature
+and need an account there.
+The following should explain, in a coarse grain manner, how to add new features
 to ProMod3. The most general advice would be to use existing bits and pieces
 as examples and to be consistent with what you already find here.</p>
+<div class="section" id="how-to-share-your-own-script">
+<h2>How To Share Your Own Script<a class="headerlink" href="#how-to-share-your-own-script" title="Permalink to this headline">¶</a></h2>
+<p>If you have a useful script using ProMod3 that you want to share, it should go
+as a subfolder into the <code class="file docutils literal"><span class="pre">extras/external_scripts</span></code> folder. Make sure to
+describe the use and purpose of the script in a short <code class="file docutils literal"><span class="pre">README</span></code> including
+working commands on how to use it.</p>
+</div>
 <div class="section" id="how-to-start-your-own-module">
 <span id="id1"></span><h2>How To Start Your Own Module<a class="headerlink" href="#how-to-start-your-own-module" title="Permalink to this headline">¶</a></h2>
 <p>This is just a walk-through how the topics from above work together when you
@@ -85,8 +96,10 @@ list of directories which are likely to be used in every project.</p>
 is, Git does not admire empty directories. Before you bring your module under
 version control, create a couple of files which are always needed.</p>
 <div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> touch sidechain/pymod/__init__.py
-<span class="gp">$</span> <span class="nb">echo</span> <span class="s2">&quot;:mod:\`~promod3.sidechain\` - ProMod3 side chain optimiser&quot;</span> &gt;&gt; sidechain/doc/index.rst
-<span class="gp">$</span> <span class="nb">echo</span> <span class="s2">&quot;================================================================================&quot;</span> &gt;&gt; sidechain/doc/index.rst
+<span class="gp">$</span> <span class="nb">echo</span> <span class="s2">&quot;:mod:\`~promod3.sidechain\` - ProMod3 side chain optimiser&quot;</span> <span class="se">\</span>
+<span class="go">       &gt;&gt; sidechain/doc/index.rst</span>
+<span class="gp">$</span> <span class="nb">echo</span> <span class="s2">&quot;==========================================================&quot;</span> <span class="se">\</span>
+<span class="go">&quot;======================&quot; &gt;&gt; sidechain/doc/index.rst</span>
 </pre></div>
 </div>
 <p>Having an empty <code class="file docutils literal"><span class="pre">__init__.py</span></code> is perfectly fine for Python, it just
@@ -572,12 +585,12 @@ module, for example</p>
 <li>external libraries</li>
 <li>smallish bits of source code included into the ProMod3 directory tree</li>
 <li>Python modules not distributed as part of the Python
-<a class="reference external" href="https://docs.python.org/2.7/library/">standard library</a>,</li>
+<a class="reference external" href="https://docs.python.org/2.7/library/">standard library</a></li>
 </ul>
-<p>where modules from the Python standard library are covered by the Python
-<a class="reference external" href="https://www.python.org/download/releases/2.7.5/license">license</a>. And
+<p>Modules from the Python standard library are covered by the Python
+<a class="reference external" href="https://www.python.org/download/releases/2.7.5/license">license</a> and
 licenses is what you have to watch out for with this subject. While the Python
-license is save to be used, in the past several projects went restrictive
+license is safe to be used, in the past several projects went restrictive
 because of exclusive terms of use. Those issues often came from &#8216;academic
 licenses&#8217;, allowing use if free of charge but for commercial entities. To
 prevent this is one reason for the existence of ProMod3. This means, before
@@ -603,6 +616,7 @@ contributions to web pages using ProMod3.</p>
   <h3><a href="index.html">Table Of Contents</a></h3>
   <ul>
 <li><a class="reference internal" href="#">Contributing</a><ul>
+<li><a class="reference internal" href="#how-to-share-your-own-script">How To Share Your Own Script</a></li>
 <li><a class="reference internal" href="#how-to-start-your-own-module">How To Start Your Own Module</a></li>
 <li><a class="reference internal" href="#how-to-start-your-own-action">How To Start Your Own Action</a></li>
 <li><a class="reference internal" href="#how-to-write-your-own-scorer">How To Write Your Own Scorer</a></li>
@@ -646,7 +660,7 @@ contributions to web pages using ProMod3.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/core/geometry.html b/doc/html/core/geometry.html
index 236cc393..d19a2ef9 100644
--- a/doc/html/core/geometry.html
+++ b/doc/html/core/geometry.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Geometry functions &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Geometry functions &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="core - ProMod3 Core Functionality" href="index.html" />
     <link rel="next" title="Runtime profiling" href="runtime_profiling.html" />
     <link rel="prev" title="helper - Shared Functionality For the Everything" href="helper.html" />
@@ -56,14 +56,14 @@
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>rule</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Gromacs rule</li>
 <li><strong>number</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Desired number of positions (max. 3)</li>
-<li><strong>anchors</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Anchor positions (max. 4)</li>
+<li><strong>anchors</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Anchor positions (max. 4)</li>
 </ul>
 </td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Constructed <em>number</em> positions.</p>
 </td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></p>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -79,16 +79,16 @@
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>c_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of C atom</li>
-<li><strong>n_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of nitrogen atom</li>
-<li><strong>ca_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of C-alpha atom</li>
+<li><strong>c_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of C atom</li>
+<li><strong>n_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of nitrogen atom</li>
+<li><strong>ca_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of C-alpha atom</li>
 </ul>
 </td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Positions of O and OXT atoms.</p>
 </td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><code class="xref py py-class docutils literal"><span class="pre">tuple</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></p>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><code class="xref py py-class docutils literal"><span class="pre">tuple</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -105,9 +105,9 @@ dihedral (A-B-C-D).</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>A</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of atom A</li>
-<li><strong>B</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of atom B</li>
-<li><strong>C</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of atom C</li>
+<li><strong>A</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of atom A</li>
+<li><strong>B</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of atom B</li>
+<li><strong>C</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of atom C</li>
 <li><strong>bond_length</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Bond length (C-D)</li>
 <li><strong>angle</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Angle (B-C-D)</li>
 <li><strong>dihedral</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Dihedral (A-B-C-D)</li>
@@ -117,7 +117,7 @@ dihedral (A-B-C-D).</p>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Position of atom D</p>
 </td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></p>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -134,16 +134,16 @@ C-alpha and C atoms.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>n_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of nitrogen atom</li>
-<li><strong>ca_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of C-alpha atom</li>
-<li><strong>c_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of C atom</li>
+<li><strong>n_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of nitrogen atom</li>
+<li><strong>ca_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of C-alpha atom</li>
+<li><strong>c_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Position of C atom</li>
 </ul>
 </td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Position of C-beta atom</p>
 </td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></p>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -160,8 +160,8 @@ around a line defined by <cite>axis</cite> and <cite>anchor</cite>.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>axis</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Axis of rotation</li>
-<li><strong>anchor</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Anchor for rotation</li>
+<li><strong>axis</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Axis of rotation</li>
+<li><strong>anchor</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Anchor for rotation</li>
 <li><strong>angle</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Angle (in radians in range [-pi,pi]) of rotation</li>
 </ul>
 </td>
@@ -169,7 +169,7 @@ around a line defined by <cite>axis</cite> and <cite>anchor</cite>.</p>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Transformation matrix</p>
 </td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Mat4</span></code></a></p>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://www.openstructure.org/docs/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Mat4</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -186,7 +186,7 @@ going through the origin.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>axis</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Axis of rotation</li>
+<li><strong>axis</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Axis of rotation</li>
 <li><strong>angle</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Angle (in radians in range [-pi,pi]) of rotation</li>
 </ul>
 </td>
@@ -194,7 +194,7 @@ going through the origin.</p>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Rotation matrix</p>
 </td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Mat3</span></code></a></p>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://www.openstructure.org/docs/geom/mat/#ost.geom.Mat3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Mat3</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -211,7 +211,7 @@ going through the origin.</p>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue handle from which to extract N, CA and C coordinates.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue handle from which to extract N, CA and C coordinates.</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/exceptions.html#exceptions.RuntimeError" title="(in Python v2.7)"><code class="xref py py-exc docutils literal"><span class="pre">RuntimeError</span></code></a> if <em>res</em> does not contain N, CA and C
 atoms.</td>
@@ -230,7 +230,7 @@ atoms.</td>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></td>
+<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -347,7 +347,7 @@ angles and one distance and is used in the fragment database for fast lookups.</
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/core/graph_minimizer.html b/doc/html/core/graph_minimizer.html
index 751d2f81..d68b21c1 100644
--- a/doc/html/core/graph_minimizer.html
+++ b/doc/html/core/graph_minimizer.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Graph Minimizer &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Graph Minimizer &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="core - ProMod3 Core Functionality" href="index.html" />
     <link rel="next" title="SetCompoundsChemlib()" href="setcompoundschemlib.html" />
     <link rel="prev" title="Runtime profiling" href="runtime_profiling.html" />
@@ -373,7 +373,7 @@ The second element is the according energy value.</td>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/core/helper.html b/doc/html/core/helper.html
index 138df086..87148791 100644
--- a/doc/html/core/helper.html
+++ b/doc/html/core/helper.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>helper - Shared Functionality For the Everything &mdash; ProMod3 1.3.0 documentation</title>
+    <title>helper - Shared Functionality For the Everything &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="core - ProMod3 Core Functionality" href="index.html" />
     <link rel="next" title="Geometry functions" href="geometry.html" />
     <link rel="prev" title="pm3argparse - Parsing Command Lines" href="pm3argparse.html" />
@@ -58,8 +58,8 @@ rather empty modules left alone.</p>
 </div>
 <dl class="function">
 <dt id="promod3.core.helper.MsgErrorAndExit">
-<code class="descclassname">promod3.core.helper.</code><code class="descname">MsgErrorAndExit</code><span class="sig-paren">(</span><em>msg</em>, <em>exit_status</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/core/helper.html#MsgErrorAndExit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.core.helper.MsgErrorAndExit" title="Permalink to this definition">¶</a></dt>
-<dd><p>Send a messages to the OST <a class="reference external" href="https://www.openstructure.org/docs/dev/base/logging/">error log</a> and
+<code class="descclassname">promod3.core.helper.</code><code class="descname">MsgErrorAndExit</code><span class="sig-paren">(</span><em>msg</em>, <em>exit_status</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.helper.MsgErrorAndExit" title="Permalink to this definition">¶</a></dt>
+<dd><p>Send a messages to the OST <a class="reference external" href="https://www.openstructure.org/docs/base/logging/">error log</a> and
 exit the Python interpreter.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -102,7 +102,7 @@ a file name and checks whether it is a <code class="docutils literal"><span clas
 </div>
 <dl class="function">
 <dt id="promod3.core.helper.FileExists">
-<code class="descclassname">promod3.core.helper.</code><code class="descname">FileExists</code><span class="sig-paren">(</span><em>prefix</em>, <em>exit_status</em>, <em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/core/helper.html#FileExists"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.core.helper.FileExists" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.core.helper.</code><code class="descname">FileExists</code><span class="sig-paren">(</span><em>prefix</em>, <em>exit_status</em>, <em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.helper.FileExists" title="Permalink to this definition">¶</a></dt>
 <dd><p>Checks if a file exists, terminates if not. The error message displayed is
 fixed and only needs a <em>prefix</em> describing the specimen of file.</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -128,7 +128,7 @@ is missing.</p>
 
 <dl class="function">
 <dt id="promod3.core.helper.FileExtension">
-<code class="descclassname">promod3.core.helper.</code><code class="descname">FileExtension</code><span class="sig-paren">(</span><em>prefix</em>, <em>exit_status</em>, <em>filename</em>, <em>extensions</em>, <em>gzip=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/core/helper.html#FileExtension"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.core.helper.FileExtension" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.core.helper.</code><code class="descname">FileExtension</code><span class="sig-paren">(</span><em>prefix</em>, <em>exit_status</em>, <em>filename</em>, <em>extensions</em>, <em>gzip=False</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.helper.FileExtension" title="Permalink to this definition">¶</a></dt>
 <dd><p>Checks a file to carry a known extension given by a list of strings. Since
 files are very often compressed these days, an additional &#8220;gz&#8221; suffix can be
 tracked automatically by this function. Thus, the list of <em>extensions</em> only
@@ -166,7 +166,7 @@ without a &#8221;.gz&#8221; (<a class="reference external" href="https://docs.py
 
 <dl class="function">
 <dt id="promod3.core.helper.FileGzip">
-<code class="descclassname">promod3.core.helper.</code><code class="descname">FileGzip</code><span class="sig-paren">(</span><em>prefix</em>, <em>exit_status</em>, <em>filename</em>, <em>allowed=True</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/core/helper.html#FileGzip"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.core.helper.FileGzip" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.core.helper.</code><code class="descname">FileGzip</code><span class="sig-paren">(</span><em>prefix</em>, <em>exit_status</em>, <em>filename</em>, <em>allowed=True</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.helper.FileGzip" title="Permalink to this definition">¶</a></dt>
 <dd><p>See if a file is gzipped or not. This is basically done by checking for a
 &#8220;gz&#8221; suffix. May also be used to verify that a file is not compressed where
 it does not apply. That is where <em>allowed</em> comes in. If &#8220;gz&#8221; is not allowed,
@@ -247,7 +247,7 @@ script will terminate if a gzip file is found.</li>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/core/index.html b/doc/html/core/index.html
index d65e79fb..8b6e7db3 100644
--- a/doc/html/core/index.html
+++ b/doc/html/core/index.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>core - ProMod3 Core Functionality &mdash; ProMod3 1.3.0 documentation</title>
+    <title>core - ProMod3 Core Functionality &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="Documentation For Users" href="../users.html" />
     <link rel="next" title="pm3argparse - Parsing Command Lines" href="pm3argparse.html" />
     <link rel="prev" title="Loading Precomputed Objects" href="../loop/load_loop_objects.html" />
@@ -105,7 +105,7 @@ modeling per se but cover standard programming issues.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/core/pm3argparse.html b/doc/html/core/pm3argparse.html
index e527fc76..5a205381 100644
--- a/doc/html/core/pm3argparse.html
+++ b/doc/html/core/pm3argparse.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>pm3argparse - Parsing Command Lines &mdash; ProMod3 1.3.0 documentation</title>
+    <title>pm3argparse - Parsing Command Lines &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="core - ProMod3 Core Functionality" href="index.html" />
     <link rel="next" title="helper - Shared Functionality For the Everything" href="helper.html" />
     <link rel="prev" title="core - ProMod3 Core Functionality" href="index.html" />
@@ -81,7 +81,7 @@ docstring in your script.</p>
 <h2>Argument Parser<a class="headerlink" href="#argument-parser" title="Permalink to this headline">¶</a></h2>
 <dl class="class">
 <dt id="promod3.core.pm3argparse.PM3ArgumentParser">
-<em class="property">class </em><code class="descclassname">promod3.core.pm3argparse.</code><code class="descname">PM3ArgumentParser</code><span class="sig-paren">(</span><em>description</em>, <em>action=True</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/core/pm3argparse.html#PM3ArgumentParser"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.core.pm3argparse.PM3ArgumentParser" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">promod3.core.pm3argparse.</code><code class="descname">PM3ArgumentParser</code><span class="sig-paren">(</span><em>description</em>, <em>action=True</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.pm3argparse.PM3ArgumentParser" title="Permalink to this definition">¶</a></dt>
 <dd><p>This class is a child of <a class="reference external" href="https://docs.python.org/2.7/library/argparse.html#argparse.ArgumentParser" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">argparse.ArgumentParser</span></code></a>. It provides a set
 of standard arguments which can be activated with <code class="xref py py-meth docutils literal"><span class="pre">Add*()</span></code> methods and
 then assembled with <a class="reference internal" href="#promod3.core.pm3argparse.PM3ArgumentParser.AssembleParser" title="promod3.core.pm3argparse.PM3ArgumentParser.AssembleParser"><code class="xref py py-meth docutils literal"><span class="pre">AssembleParser()</span></code></a>. This helps keeping up a common
@@ -106,7 +106,7 @@ instance is possible here.</p>
 
 <dl class="method">
 <dt id="promod3.core.pm3argparse.PM3ArgumentParser.__init__">
-<code class="descname">__init__</code><span class="sig-paren">(</span><em>description</em>, <em>action=True</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/core/pm3argparse.html#PM3ArgumentParser.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.core.pm3argparse.PM3ArgumentParser.__init__" title="Permalink to this definition">¶</a></dt>
+<code class="descname">__init__</code><span class="sig-paren">(</span><em>description</em>, <em>action=True</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.pm3argparse.PM3ArgumentParser.__init__" title="Permalink to this definition">¶</a></dt>
 <dd><p>Create a new instance of <code class="xref py py-class docutils literal"><span class="pre">PM3ArgumentParser</span></code>.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -133,7 +133,7 @@ first 3 characters of the file name of the script. If
 
 <dl class="method">
 <dt id="promod3.core.pm3argparse.PM3ArgumentParser.AddAlignment">
-<code class="descname">AddAlignment</code><span class="sig-paren">(</span><em>allow_multitemplate=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/core/pm3argparse.html#PM3ArgumentParser.AddAlignment"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.core.pm3argparse.PM3ArgumentParser.AddAlignment" title="Permalink to this definition">¶</a></dt>
+<code class="descname">AddAlignment</code><span class="sig-paren">(</span><em>allow_multitemplate=False</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.pm3argparse.PM3ArgumentParser.AddAlignment" title="Permalink to this definition">¶</a></dt>
 <dd><p>Commandline options for alignments.</p>
 <p>Activate everything needed to load alignments to the argument parser.
 Command line arguments are then added in <a class="reference internal" href="#promod3.core.pm3argparse.PM3ArgumentParser.AssembleParser" title="promod3.core.pm3argparse.PM3ArgumentParser.AssembleParser"><code class="xref py py-meth docutils literal"><span class="pre">AssembleParser()</span></code></a> and the
@@ -199,9 +199,49 @@ wrong type</li>
 </ul>
 </dd></dl>
 
+<dl class="method">
+<dt id="promod3.core.pm3argparse.PM3ArgumentParser.AddFragments">
+<code class="descname">AddFragments</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.pm3argparse.PM3ArgumentParser.AddFragments" title="Permalink to this definition">¶</a></dt>
+<dd><p>Commandline option for usage of Fragments</p>
+<p>Activate everything needed to setup 
+<a class="reference internal" href="../modelling/algorithms.html#promod3.modelling.FraggerHandle" title="promod3.modelling.FraggerHandle"><code class="xref py py-class docutils literal"><span class="pre">promod3.modelling.FraggerHandle</span></code></a> objects in the argument parser.
+Command line arguments are then added in <a class="reference internal" href="#promod3.core.pm3argparse.PM3ArgumentParser.AssembleParser" title="promod3.core.pm3argparse.PM3ArgumentParser.AssembleParser"><code class="xref py py-meth docutils literal"><span class="pre">AssembleParser()</span></code></a> and the
+input is post processed and checked in <a class="reference internal" href="#promod3.core.pm3argparse.PM3ArgumentParser.Parse" title="promod3.core.pm3argparse.PM3ArgumentParser.Parse"><code class="xref py py-meth docutils literal"><span class="pre">Parse()</span></code></a>.</p>
+<p>Options/arguments added:</p>
+<ul class="simple">
+<li><code class="docutils literal"><span class="pre">-r/--use-fragments</span></code> - Boolean flag whether to setup fragger handles.</li>
+</ul>
+<p>Notes:</p>
+<ul class="simple">
+<li>Fragger handles are setup to identify fragments in a 
+<a class="reference internal" href="../loop/structure_db.html#promod3.loop.StructureDB" title="promod3.loop.StructureDB"><code class="xref py py-class docutils literal"><span class="pre">promod3.loop.StructureDB</span></code></a>.</li>
+<li>If no profiles are provided as additional argument 
+(<code class="docutils literal"><span class="pre">-s/--seqprof</span> <span class="pre">&lt;FILE&gt;</span></code>), fragments are identified based on BLOSUM62 
+sequence similarity.</li>
+<li>If you provide profiles that are not in hhm format, fragments are 
+identified based on BLOSUM62 sequence similarity, sequence profile 
+scoring and structural profile scoring.</li>
+<li>If you provide profiles in hhm format (optimal case), psipred 
+predictions are fetched from there and fragments are identified based
+on secondary structure agreement, secondary structure dependent
+torsion probabilities, sequence profile scoring and structure 
+profile scoring.</li>
+</ul>
+<p>Attributes added to the namespace returned by <a class="reference internal" href="#promod3.core.pm3argparse.PM3ArgumentParser.Parse" title="promod3.core.pm3argparse.PM3ArgumentParser.Parse"><code class="xref py py-meth docutils literal"><span class="pre">Parse()</span></code></a>:</p>
+<ul class="simple">
+<li><code class="xref py py-attr docutils literal"><span class="pre">fragger_handles</span></code> - <code class="xref py py-class docutils literal"><span class="pre">list</span></code> of 
+<a class="reference internal" href="../modelling/algorithms.html#promod3.modelling.FraggerHandle" title="promod3.modelling.FraggerHandle"><code class="xref py py-class docutils literal"><span class="pre">promod3.modelling.FraggerHandle</span></code></a>, ordered to match the target 
+sequences.</li>
+</ul>
+<p>Exit codes related to fragments input:</p>
+<ul class="simple">
+<li>56 - cannot read psipred prediction from hhm file</li>
+</ul>
+</dd></dl>
+
 <dl class="method">
 <dt id="promod3.core.pm3argparse.PM3ArgumentParser.AddProfile">
-<code class="descname">AddProfile</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/core/pm3argparse.html#PM3ArgumentParser.AddProfile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.core.pm3argparse.PM3ArgumentParser.AddProfile" title="Permalink to this definition">¶</a></dt>
+<code class="descname">AddProfile</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.pm3argparse.PM3ArgumentParser.AddProfile" title="Permalink to this definition">¶</a></dt>
 <dd><p>Commandline options for profiles</p>
 <p>Activate everything needed to load profiles to the argument parser.
 Command line arguments are then added in <a class="reference internal" href="#promod3.core.pm3argparse.PM3ArgumentParser.AssembleParser" title="promod3.core.pm3argparse.PM3ArgumentParser.AssembleParser"><code class="xref py py-meth docutils literal"><span class="pre">AssembleParser()</span></code></a> and the
@@ -212,7 +252,7 @@ input is post processed and checked in <a class="reference internal" href="#prom
 by the <code class="xref py py-meth docutils literal"><span class="pre">ost.io.LoadSequenceProfile()</span></code> method. Format is chosen by 
 file ending. Recognized file extensions: .hhm, .hhm.gz, .pssm, 
 .pssm.gz. Consider to use 
-<a class="reference external" href="https://www.openstructure.org/docs/dev/bindings/hhblits/#ost.bindings.hhblits.HHblits.A3MToProfile" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.bindings.hhblits.HHblits.A3MToProfile()</span></code></a> if you have a file 
+<a class="reference external" href="https://www.openstructure.org/docs/bindings/hhblits/#ost.bindings.hhblits.HHblits.A3MToProfile" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.bindings.hhblits.HHblits.A3MToProfile()</span></code></a> if you have a file 
 in a3m format at hand.</li>
 </ul>
 <p>Notes:</p>
@@ -226,7 +266,7 @@ target sequences</li>
 </ul>
 <p>Attributes added to the namespace returned by <a class="reference internal" href="#promod3.core.pm3argparse.PM3ArgumentParser.Parse" title="promod3.core.pm3argparse.PM3ArgumentParser.Parse"><code class="xref py py-meth docutils literal"><span class="pre">Parse()</span></code></a>:</p>
 <ul class="simple">
-<li><code class="xref py py-attr docutils literal"><span class="pre">profiles</span></code> - <code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>, 
+<li><code class="xref py py-attr docutils literal"><span class="pre">profiles</span></code> - <code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>, 
 ordered to match the target sequences.</li>
 </ul>
 <p>Exit codes related to profile input:</p>
@@ -241,7 +281,7 @@ ordered to match the target sequences.</li>
 
 <dl class="method">
 <dt id="promod3.core.pm3argparse.PM3ArgumentParser.AddStructure">
-<code class="descname">AddStructure</code><span class="sig-paren">(</span><em>attach_views=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/core/pm3argparse.html#PM3ArgumentParser.AddStructure"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.core.pm3argparse.PM3ArgumentParser.AddStructure" title="Permalink to this definition">¶</a></dt>
+<code class="descname">AddStructure</code><span class="sig-paren">(</span><em>attach_views=False</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.pm3argparse.PM3ArgumentParser.AddStructure" title="Permalink to this definition">¶</a></dt>
 <dd><p>Commandline options for structures.</p>
 <p>Activate everything needed to load structures to the argument parser.
 Command line arguments are then added in <a class="reference internal" href="#promod3.core.pm3argparse.PM3ArgumentParser.AssembleParser" title="promod3.core.pm3argparse.PM3ArgumentParser.AssembleParser"><code class="xref py py-meth docutils literal"><span class="pre">AssembleParser()</span></code></a> and the
@@ -300,7 +340,7 @@ original filenames of the structures.</li>
 
 <dl class="method">
 <dt id="promod3.core.pm3argparse.PM3ArgumentParser.AssembleParser">
-<code class="descname">AssembleParser</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/core/pm3argparse.html#PM3ArgumentParser.AssembleParser"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.core.pm3argparse.PM3ArgumentParser.AssembleParser" title="Permalink to this definition">¶</a></dt>
+<code class="descname">AssembleParser</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.pm3argparse.PM3ArgumentParser.AssembleParser" title="Permalink to this definition">¶</a></dt>
 <dd><p>When adding options via the <code class="xref py py-meth docutils literal"><span class="pre">Add*()</span></code> methods, call this after you
 are done. Everything before just tells the parser that it should
 contain those option sets but does not actually add anything.
@@ -310,7 +350,7 @@ and with the right constraints.</p>
 
 <dl class="method">
 <dt id="promod3.core.pm3argparse.PM3ArgumentParser.Parse">
-<code class="descname">Parse</code><span class="sig-paren">(</span><em>args=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/core/pm3argparse.html#PM3ArgumentParser.Parse"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.core.pm3argparse.PM3ArgumentParser.Parse" title="Permalink to this definition">¶</a></dt>
+<code class="descname">Parse</code><span class="sig-paren">(</span><em>args=None</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.pm3argparse.PM3ArgumentParser.Parse" title="Permalink to this definition">¶</a></dt>
 <dd><p>Parse an argument string. See <code class="xref py py-meth docutils literal"><span class="pre">Add*()</span></code> methods.</p>
 <p>Options/arguments added by default: <code class="docutils literal"><span class="pre">-h/--help</span></code> shows usage.</p>
 <p>General exit codes:</p>
@@ -384,7 +424,7 @@ and with the right constraints.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/core/runtime_profiling.html b/doc/html/core/runtime_profiling.html
index d7218105..b1d22315 100644
--- a/doc/html/core/runtime_profiling.html
+++ b/doc/html/core/runtime_profiling.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Runtime profiling &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Runtime profiling &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="core - ProMod3 Core Functionality" href="index.html" />
     <link rel="next" title="Graph Minimizer" href="graph_minimizer.html" />
     <link rel="prev" title="Geometry functions" href="geometry.html" />
@@ -201,7 +201,7 @@ will fail miserably if timers are currently running.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/core/setcompoundschemlib.html b/doc/html/core/setcompoundschemlib.html
index 724fb324..7fb563f8 100644
--- a/doc/html/core/setcompoundschemlib.html
+++ b/doc/html/core/setcompoundschemlib.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>SetCompoundsChemlib() &mdash; ProMod3 1.3.0 documentation</title>
+    <title>SetCompoundsChemlib() &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,9 +24,9 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="Documentation For Users" href="../users.html" />
-    <link rel="next" title="Documentation For Developers" href="../developers.html" />
+    <link rel="next" title="Contributing" href="../user_contributions.html" />
     <link rel="prev" title="Graph Minimizer" href="graph_minimizer.html" />
    
   <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
@@ -53,7 +53,7 @@ need to call this function, only if you want to load a different chemical
 components dictionary.</p>
 <dl class="function">
 <dt id="promod3.SetCompoundsChemlib">
-<code class="descclassname">promod3.</code><code class="descname">SetCompoundsChemlib</code><span class="sig-paren">(</span><em>path_to_chemlib</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3.html#SetCompoundsChemlib"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.SetCompoundsChemlib" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.</code><code class="descname">SetCompoundsChemlib</code><span class="sig-paren">(</span><em>path_to_chemlib</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.SetCompoundsChemlib" title="Permalink to this definition">¶</a></dt>
 <dd><p>Load a compounds library. Does not return anything, the library is just
 enabled globally.</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -79,7 +79,7 @@ enabled globally.</p>
   <li><a href="../index.html">Documentation overview</a><ul>
   <li><a href="../users.html">Documentation For Users</a><ul>
       <li>Previous: <a href="graph_minimizer.html" title="previous chapter">Graph Minimizer</a></li>
-      <li>Next: <a href="../developers.html" title="next chapter">Documentation For Developers</a></li>
+      <li>Next: <a href="../user_contributions.html" title="next chapter">Contributing</a></li>
   </ul></li>
   </ul></li>
 </ul>
@@ -106,7 +106,7 @@ enabled globally.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/dev_setup.html b/doc/html/dev_setup.html
index 075ba92b..81c008ef 100644
--- a/doc/html/dev_setup.html
+++ b/doc/html/dev_setup.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>ProMod3 Setup &mdash; ProMod3 1.3.0 documentation</title>
+    <title>ProMod3 Setup &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="index.html" />
     <link rel="up" title="Documentation For Developers" href="developers.html" />
     <link rel="next" title="Contributing" href="contributing.html" />
     <link rel="prev" title="Documentation For Developers" href="developers.html" />
@@ -293,7 +293,7 @@ modules from there, use the binaries from <code class="file docutils literal"><s
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/developers.html b/doc/html/developers.html
index e1c550bb..df1b45e5 100644
--- a/doc/html/developers.html
+++ b/doc/html/developers.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Documentation For Developers &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Documentation For Developers &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,9 +24,9 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="index.html" />
     <link rel="next" title="ProMod3 Setup" href="dev_setup.html" />
-    <link rel="prev" title="SetCompoundsChemlib()" href="core/setcompoundschemlib.html" />
+    <link rel="prev" title="Contributing" href="user_contributions.html" />
    
   <link rel="stylesheet" href="_static/custom.css" type="text/css" />
   
@@ -58,6 +58,7 @@ new features.</p>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="contributing.html#how-to-share-your-own-script">How To Share Your Own Script</a></li>
 <li class="toctree-l2"><a class="reference internal" href="contributing.html#how-to-start-your-own-module">How To Start Your Own Module</a></li>
 <li class="toctree-l2"><a class="reference internal" href="contributing.html#how-to-start-your-own-action">How To Start Your Own Action</a></li>
 <li class="toctree-l2"><a class="reference internal" href="contributing.html#how-to-write-your-own-scorer">How To Write Your Own Scorer</a></li>
@@ -78,7 +79,7 @@ new features.</p>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="portableIO.html">Using Binary Files In ProMod3</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="portableIO.html#header">Header</a></li>
+<li class="toctree-l2"><a class="reference internal" href="portableIO.html#file-header">File Header</a></li>
 <li class="toctree-l2"><a class="reference internal" href="portableIO.html#portable-binary-data">Portable Binary Data</a></li>
 <li class="toctree-l2"><a class="reference internal" href="portableIO.html#code-example">Code Example</a></li>
 <li class="toctree-l2"><a class="reference internal" href="portableIO.html#exisiting-binary-files">Exisiting Binary Files</a></li>
@@ -97,7 +98,7 @@ new features.</p>
 <h3>Related Topics</h3>
 <ul>
   <li><a href="index.html">Documentation overview</a><ul>
-      <li>Previous: <a href="core/setcompoundschemlib.html" title="previous chapter"><code class="docutils literal"><span class="pre">SetCompoundsChemlib()</span></code></a></li>
+      <li>Previous: <a href="user_contributions.html" title="previous chapter">Contributing</a></li>
       <li>Next: <a href="dev_setup.html" title="next chapter">ProMod3 Setup</a></li>
   </ul></li>
 </ul>
@@ -124,7 +125,7 @@ new features.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/genindex.html b/doc/html/genindex.html
index 97e9e9d6..8de63c6d 100644
--- a/doc/html/genindex.html
+++ b/doc/html/genindex.html
@@ -7,7 +7,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Index &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Index &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -25,7 +25,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="index.html" />
    
   <link rel="stylesheet" href="_static/custom.css" type="text/css" />
   
@@ -72,6 +72,17 @@
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
+  <dt>
+    -f, --energy_function
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="actions/index.html#cmdoption-f">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
   <dt>
     -i, --backbone-independent
   </dt>
@@ -93,6 +104,8 @@
   </dt>
 
       </dl></dd>
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
       
   <dt>
     -n, --no-disulfids
@@ -104,8 +117,6 @@
   </dt>
 
       </dl></dd>
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
       
   <dt>
     -r, --rigid-rotamers
@@ -305,9 +316,15 @@
   </dt>
 
       
-  <dt><a href="loop/structure_db.html#promod3.loop.FragDB.AddFragments">AddFragments() (promod3.loop.FragDB method)</a>
+  <dt><a href="core/pm3argparse.html#promod3.core.pm3argparse.PM3ArgumentParser.AddFragments">AddFragments() (promod3.core.pm3argparse.PM3ArgumentParser method)</a>
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="loop/structure_db.html#promod3.loop.FragDB.AddFragments">(promod3.loop.FragDB method)</a>
   </dt>
 
+      </dl></dd>
       
   <dt><a href="sidechain/rotamer.html#promod3.sidechain.FRMRotamer.AddFrameEnergy">AddFrameEnergy() (promod3.sidechain.FRMRotamer method)</a>, <a href="sidechain/rotamer.html#promod3.sidechain.FRMRotamer.AddFrameEnergy">[1]</a>
   </dt>
@@ -327,7 +344,7 @@
 
       </dl></dd>
       
-  <dt><a href="sidechain/rotamer.html#promod3.sidechain.Particle.AddLonePair">AddLonePair() (promod3.sidechain.Particle method)</a>
+  <dt><a href="modelling/pipeline.html#promod3.modelling.AddModellingIssue">AddModellingIssue() (in module promod3.modelling)</a>
   </dt>
 
       
@@ -561,9 +578,15 @@
   </dt>
 
       
-  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.AssignInternalEnergies">AssignInternalEnergies() (promod3.sidechain.SCWRLRotamerConstructor method)</a>
+  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.RotamerConstructor.AssignInternalEnergies">AssignInternalEnergies() (promod3.sidechain.RotamerConstructor method)</a>
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRL4RotamerConstructor.AssignInternalEnergies">(promod3.sidechain.SCWRL4RotamerConstructor method)</a>
   </dt>
 
+      </dl></dd>
       
   <dt><a href="core/graph_minimizer.html#promod3.core.GraphMinimizer.AStarSolve">AStarSolve() (promod3.core.GraphMinimizer method)</a>
   </dt>
@@ -810,12 +833,12 @@
   <dt><a href="modelling/gap_handling.html#promod3.modelling.ClearGaps">ClearGaps() (in module promod3.modelling)</a>
   </dt>
 
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="loop/all_atom.html#promod3.loop.AllAtomPositions.ClearPos">ClearPos() (promod3.loop.AllAtomPositions method)</a>
   </dt>
 
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="loop/all_atom.html#promod3.loop.AllAtomPositions.ClearResidue">ClearResidue() (promod3.loop.AllAtomPositions method)</a>
   </dt>
@@ -916,6 +939,10 @@
 
       <dd><dl>
         
+  <dt><a href="actions/index.html#cmdoption-f">-f, --energy_function</a>
+  </dt>
+
+        
   <dt><a href="actions/index.html#cmdoption-i">-i, --backbone-independent</a>
   </dt>
 
@@ -945,7 +972,7 @@
   </dt>
 
       
-  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructBackboneFrameResidue">ConstructBackboneFrameResidue() (promod3.sidechain.SCWRLRotamerConstructor method)</a>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructBackboneFrameResidue">[1]</a>
+  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.RotamerConstructor.ConstructBackboneFrameResidue">ConstructBackboneFrameResidue() (promod3.sidechain.RotamerConstructor method)</a>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.RotamerConstructor.ConstructBackboneFrameResidue">[1]</a>
   </dt>
 
       
@@ -957,19 +984,19 @@
   </dt>
 
       
-  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructFrameResidue">ConstructFrameResidue() (promod3.sidechain.SCWRLRotamerConstructor method)</a>
+  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRL4RotamerConstructor.ConstructFrameResidue">ConstructFrameResidue() (promod3.sidechain.SCWRL4RotamerConstructor method)</a>
   </dt>
 
       
-  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructFrameResidueHeuristic">ConstructFrameResidueHeuristic() (promod3.sidechain.SCWRLRotamerConstructor method)</a>
+  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRL4RotamerConstructor.ConstructFrameResidueHeuristic">ConstructFrameResidueHeuristic() (promod3.sidechain.SCWRL4RotamerConstructor method)</a>
   </dt>
 
       
-  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructRRMRotamerGroup">ConstructRRMRotamerGroup() (promod3.sidechain.SCWRLRotamerConstructor method)</a>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructRRMRotamerGroup">[1]</a>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructRRMRotamerGroup">[2]</a>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructRRMRotamerGroup">[3]</a>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructRRMRotamerGroup">[4]</a>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructRRMRotamerGroup">[5]</a>
+  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.RotamerConstructor.ConstructRRMRotamerGroup">ConstructRRMRotamerGroup() (promod3.sidechain.RotamerConstructor method)</a>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.RotamerConstructor.ConstructRRMRotamerGroup">[1]</a>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.RotamerConstructor.ConstructRRMRotamerGroup">[2]</a>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.RotamerConstructor.ConstructRRMRotamerGroup">[3]</a>
   </dt>
 
       
-  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructSidechainFrameResidue">ConstructSidechainFrameResidue() (promod3.sidechain.SCWRLRotamerConstructor method)</a>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructSidechainFrameResidue">[1]</a>
+  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.RotamerConstructor.ConstructSidechainFrameResidue">ConstructSidechainFrameResidue() (promod3.sidechain.RotamerConstructor method)</a>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.RotamerConstructor.ConstructSidechainFrameResidue">[1]</a>
   </dt>
 
       
@@ -1056,6 +1083,10 @@
   </dt>
 
       
+  <dt><a href="sidechain/rotamer.html#promod3.sidechain.CreateSCWRL4Particle">CreateSCWRL4Particle() (in module promod3.sidechain)</a>
+  </dt>
+
+      
   <dt><a href="modelling/monte_carlo.html#promod3.modelling.CTerminalCloser">CTerminalCloser (class in promod3.modelling)</a>
   </dt>
 
@@ -1424,6 +1455,10 @@
   </dt>
 
       
+  <dt><a href="modelling/pipeline.html#promod3.modelling.ModellingHandle.fragger_handles">fragger_handles (promod3.modelling.ModellingHandle attribute)</a>
+  </dt>
+
+      
   <dt><a href="modelling/algorithms.html#promod3.modelling.FraggerHandle">FraggerHandle (class in promod3.modelling)</a>
   </dt>
 
@@ -1626,10 +1661,6 @@
   </dt>
 
       
-  <dt><a href="sidechain/rotamer.html#promod3.sidechain.Particle.GetCharge">GetCharge() (promod3.sidechain.Particle method)</a>
-  </dt>
-
-      
   <dt><a href="loop/mm_system_creation.html#promod3.loop.ForcefieldLookup.GetCharges">GetCharges() (promod3.loop.ForcefieldLookup method)</a>
   </dt>
 
@@ -1642,6 +1673,10 @@
   </dt>
 
       
+  <dt><a href="sidechain/rotamer.html#promod3.sidechain.Particle.GetCollisionDistance">GetCollisionDistance() (promod3.sidechain.Particle method)</a>
+  </dt>
+
+      
   <dt><a href="loop/structure_db.html#promod3.loop.PsipredPrediction.GetConfidence">GetConfidence() (promod3.loop.PsipredPrediction method)</a>
   </dt>
 
@@ -1944,10 +1979,6 @@
   </dt>
 
       
-  <dt><a href="sidechain/rotamer.html#promod3.sidechain.Particle.GetParticleType">GetParticleType() (promod3.sidechain.Particle method)</a>
-  </dt>
-
-      
   <dt><a href="loop/mm_system_creation.html#promod3.loop.ForcefieldLookup.GetPeptideBoundConnectivity">GetPeptideBoundConnectivity() (promod3.loop.ForcefieldLookup method)</a>
   </dt>
 
@@ -2042,6 +2073,10 @@
 
       </dl></dd>
       
+  <dt><a href="sidechain/rotamer.html#promod3.sidechain.Particle.GetScoringFunction">GetScoringFunction() (promod3.sidechain.Particle method)</a>
+  </dt>
+
+      
   <dt><a href="sidechain/rotamer.html#promod3.sidechain.FRMRotamer.GetSelfEnergy">GetSelfEnergy() (promod3.sidechain.FRMRotamer method)</a>
   </dt>
 
@@ -2320,16 +2355,20 @@
   </dt>
 
       
-  <dt><a href="modelling/sidechain_reconstruction.html#promod3.modelling.SidechainReconstructionData.is_n_ter">is_n_ter (promod3.modelling.SidechainReconstructionData attribute)</a>
+  <dt><a href="modelling/pipeline.html#promod3.modelling.ModellingIssue.is_major">is_major() (promod3.modelling.ModellingIssue method)</a>
   </dt>
 
       
-  <dt><a href="modelling/pipeline.html#promod3.modelling.IsAllAtomScoringSetUp">IsAllAtomScoringSetUp() (in module promod3.modelling)</a>
+  <dt><a href="modelling/sidechain_reconstruction.html#promod3.modelling.SidechainReconstructionData.is_n_ter">is_n_ter (promod3.modelling.SidechainReconstructionData attribute)</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
+  <dt><a href="modelling/pipeline.html#promod3.modelling.IsAllAtomScoringSetUp">IsAllAtomScoringSetUp() (in module promod3.modelling)</a>
+  </dt>
+
+      
   <dt><a href="loop/all_atom.html#promod3.loop.AllAtomPositions.IsAllSet">IsAllSet() (promod3.loop.AllAtomPositions method)</a>
   </dt>
 
@@ -2354,14 +2393,6 @@
   </dt>
 
       
-  <dt><a href="sidechain/rotamer.html#promod3.sidechain.Particle.IsHBondAcceptor">IsHBondAcceptor() (promod3.sidechain.Particle method)</a>
-  </dt>
-
-      
-  <dt><a href="sidechain/rotamer.html#promod3.sidechain.Particle.IsHBondDonor">IsHBondDonor() (promod3.sidechain.Particle method)</a>
-  </dt>
-
-      
   <dt><a href="modelling/gap_handling.html#promod3.modelling.StructuralGap.IsNTerminal">IsNTerminal() (promod3.modelling.StructuralGap method)</a>
   </dt>
 
@@ -2650,6 +2681,10 @@
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
+  <dt><a href="modelling/pipeline.html#promod3.modelling.ModellingIssue.Severity.MAJOR">MAJOR (promod3.modelling.ModellingIssue.Severity attribute)</a>
+  </dt>
+
+      
   <dt><a href="buildsystem.html#index-1">make check</a>
   </dt>
 
@@ -2705,8 +2740,6 @@
   <dt><a href="modelling/gap_handling.html#promod3.modelling.MergeGaps">MergeGaps() (in module promod3.modelling)</a>
   </dt>
 
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="modelling/pipeline.html#promod3.modelling.MergeGapsByDistance">MergeGapsByDistance() (in module promod3.modelling)</a>
   </dt>
@@ -2715,6 +2748,8 @@
   <dt><a href="modelling/pipeline.html#promod3.modelling.MergeMHandle">MergeMHandle() (in module promod3.modelling)</a>
   </dt>
 
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="loop/backbone.html#promod3.loop.BackboneList.MinCADistance">MinCADistance() (promod3.loop.BackboneList method)</a>
   </dt>
@@ -2724,6 +2759,10 @@
   </dt>
 
       
+  <dt><a href="modelling/pipeline.html#promod3.modelling.ModellingIssue.Severity.MINOR">MINOR (promod3.modelling.ModellingIssue.Severity attribute)</a>
+  </dt>
+
+      
   <dt><a href="loop/mm_system_creation.html#promod3.loop.MmSystemCreator">MmSystemCreator (class in promod3.loop)</a>
   </dt>
 
@@ -2732,10 +2771,22 @@
   </dt>
 
       
+  <dt><a href="modelling/pipeline.html#promod3.modelling.ModellingHandle.modelling_issues">modelling_issues (promod3.modelling.ModellingHandle attribute)</a>
+  </dt>
+
+      
   <dt><a href="modelling/pipeline.html#promod3.modelling.ModellingHandle">ModellingHandle (class in promod3.modelling)</a>
   </dt>
 
       
+  <dt><a href="modelling/pipeline.html#promod3.modelling.ModellingIssue">ModellingIssue (class in promod3.modelling)</a>
+  </dt>
+
+      
+  <dt><a href="modelling/pipeline.html#promod3.modelling.ModellingIssue.Severity">ModellingIssue.Severity (class in promod3.modelling)</a>
+  </dt>
+
+      
   <dt><a href="modelling/pipeline.html#promod3.modelling.ModelTermini">ModelTermini() (in module promod3.modelling)</a>
   </dt>
 
@@ -2801,15 +2852,15 @@
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
-  <dt><a href="sidechain/rotamer.html#promod3.sidechain.Particle.PairwiseEnergy">PairwiseEnergy() (promod3.sidechain.Particle method)</a>
+  <dt><a href="scoring/backbone_score_env.html#promod3.scoring.PairwiseFunction">PairwiseFunction (class in promod3.scoring)</a>
   </dt>
 
       
-  <dt><a href="scoring/backbone_score_env.html#promod3.scoring.PairwiseFunction">PairwiseFunction (class in promod3.scoring)</a>
+  <dt><a href="scoring/backbone_score_env.html#promod3.scoring.PairwiseFunctionType">PairwiseFunctionType (class in promod3.scoring)</a>
   </dt>
 
       
-  <dt><a href="scoring/backbone_score_env.html#promod3.scoring.PairwiseFunctionType">PairwiseFunctionType (class in promod3.scoring)</a>
+  <dt><a href="sidechain/rotamer.html#promod3.sidechain.Particle.PairwiseScore">PairwiseScore() (promod3.sidechain.Particle method)</a>
   </dt>
 
       
@@ -2953,6 +3004,10 @@
   </dt>
 
       
+  <dt><a href="sidechain/rotamer.html#promod3.sidechain.PScoringFunction">PScoringFunction (class in promod3.sidechain)</a>
+  </dt>
+
+      
   <dt><a href="modelling/pipeline.html#promod3.modelling.ModellingHandle.psipred_predictions">psipred_predictions (promod3.modelling.ModellingHandle attribute)</a>
   </dt>
 
@@ -3068,6 +3123,10 @@
 
       </dl></dd>
       
+  <dt><a href="modelling/pipeline.html#promod3.modelling.ModellingIssue.residue_list">residue_list (promod3.modelling.ModellingIssue attribute)</a>
+  </dt>
+
+      
   <dt><a href="loop/backbone.html#promod3.loop.BackboneList.resize">resize() (promod3.loop.BackboneList method)</a>
   </dt>
 
@@ -3090,6 +3149,10 @@
   </dt>
 
       
+  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.RotamerConstructor">RotamerConstructor (class in promod3.sidechain)</a>
+  </dt>
+
+      
   <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph">RotamerGraph (class in promod3.sidechain)</a>
   </dt>
 
@@ -3330,7 +3393,11 @@
   </dt>
 
       
-  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor">SCWRLRotamerConstructor (class in promod3.sidechain)</a>
+  <dt><a href="sidechain/rotamer.html#promod3.sidechain.SCWRL4ParticleType">SCWRL4ParticleType (class in promod3.sidechain)</a>
+  </dt>
+
+      
+  <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRL4RotamerConstructor">SCWRL4RotamerConstructor (class in promod3.sidechain)</a>
   </dt>
 
       
@@ -3468,6 +3535,10 @@
   </dt>
 
       
+  <dt><a href="modelling/pipeline.html#promod3.modelling.SetFraggerHandles">SetFraggerHandles() (in module promod3.modelling)</a>
+  </dt>
+
+      
   <dt><a href="sidechain/rotamer.html#promod3.sidechain.FRMRotamer.SetFrameEnergy">SetFrameEnergy() (promod3.sidechain.FRMRotamer method)</a>, <a href="sidechain/rotamer.html#promod3.sidechain.FRMRotamer.SetFrameEnergy">[1]</a>
   </dt>
 
@@ -3543,6 +3614,8 @@
   <dt><a href="modelling/loop_closing.html#promod3.modelling.BackboneRelaxer.SetNonBondedCutoff">SetNonBondedCutoff() (promod3.modelling.BackboneRelaxer method)</a>
   </dt>
 
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="loop/backbone.html#promod3.loop.BackboneList.SetO">SetO() (promod3.loop.BackboneList method)</a>
   </dt>
@@ -3551,17 +3624,11 @@
   <dt><a href="loop/backbone.html#promod3.loop.BackboneList.SetOLC">SetOLC() (promod3.loop.BackboneList method)</a>
   </dt>
 
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="loop/mm_system_creation.html#promod3.loop.ForcefieldLookup.SetPeptideBoundConnectivity">SetPeptideBoundConnectivity() (promod3.loop.ForcefieldLookup method)</a>
   </dt>
 
       
-  <dt><a href="sidechain/rotamer.html#promod3.sidechain.Particle.SetPolarDirection">SetPolarDirection() (promod3.sidechain.Particle method)</a>
-  </dt>
-
-      
   <dt><a href="loop/all_atom.html#promod3.loop.AllAtomPositions.SetPos">SetPos() (promod3.loop.AllAtomPositions method)</a>
   </dt>
 
@@ -3640,6 +3707,10 @@
   </dt>
 
       
+  <dt><a href="modelling/pipeline.html#promod3.modelling.ModellingIssue.severity">severity (promod3.modelling.ModellingIssue attribute)</a>
+  </dt>
+
+      
   <dt><a href="loop/structure_db.html#promod3.loop.CoordInfo.shift">shift (promod3.loop.CoordInfo attribute)</a>
   </dt>
 
@@ -3656,10 +3727,6 @@
   </dt>
 
       
-  <dt><a href="sidechain/rotamer.html#promod3.sidechain.SidechainParticle">SidechainParticle (class in promod3.sidechain)</a>
-  </dt>
-
-      
   <dt><a href="modelling/sidechain_reconstruction.html#promod3.modelling.SidechainReconstructionData">SidechainReconstructionData (class in promod3.modelling)</a>
   </dt>
 
@@ -3774,6 +3841,10 @@
   </dt>
 
       
+  <dt><a href="modelling/pipeline.html#promod3.modelling.ModellingIssue.text">text (promod3.modelling.ModellingIssue attribute)</a>
+  </dt>
+
+      
   <dt><a href="sidechain/rotamer_id.html#promod3.sidechain.TLCToRotID">TLCToRotID() (in module promod3.sidechain)</a>
   </dt>
 
@@ -3791,6 +3862,8 @@
   </dt>
 
       </dl></dd>
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="sidechain/rotamer.html#promod3.sidechain.FRMRotamer.ToFrameResidue">ToFrameResidue() (promod3.sidechain.FRMRotamer method)</a>
   </dt>
@@ -3801,8 +3874,6 @@
   </dt>
 
       </dl></dd>
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="sidechain/rotamer.html#promod3.sidechain.FRMRotamer.ToRRMRotamer">ToRRMRotamer() (promod3.sidechain.FRMRotamer method)</a>
   </dt>
@@ -3883,7 +3954,7 @@
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/gettingstarted.html b/doc/html/gettingstarted.html
index f28f4800..357e2403 100644
--- a/doc/html/gettingstarted.html
+++ b/doc/html/gettingstarted.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Getting Started &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Getting Started &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="index.html" />
     <link rel="up" title="Documentation For Users" href="users.html" />
     <link rel="next" title="ProMod3 Actions" href="actions/index.html" />
     <link rel="prev" title="Documentation For Users" href="users.html" />
@@ -47,12 +47,21 @@
 <div class="section" id="get-and-run-project">
 <h2>Get and Run ProMod3<a class="headerlink" href="#get-and-run-project" title="Permalink to this headline">¶</a></h2>
 <p>First steps to get ProMod3 up and running:</p>
-<ol class="arabic simple">
-<li>Obtain all dependencies and compile ProMod3 with <code class="docutils literal"><span class="pre">cmake</span></code> and <code class="docutils literal"><span class="pre">make</span></code>
-(see <a class="reference internal" href="buildsystem.html#building-promod"><span class="std std-ref">here</span></a>).</li>
-<li>Ensure that you have a <code class="docutils literal"><span class="pre">stage/bin</span></code> folder which includes a <code class="docutils literal"><span class="pre">pm</span></code> executable.
-For convenience, add the folder to your <code class="docutils literal"><span class="pre">PATH</span></code> env. variable.</li>
-<li>You can now execute ProMod3 by running the following in your terminal:</li>
+<ol class="arabic">
+<li><p class="first">Fetch the source code from <a class="reference external" href="https://git.scicore.unibas.ch/schwede/ProMod3.git">https://git.scicore.unibas.ch/schwede/ProMod3.git</a>.
+Or directly pull it with git:</p>
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> git clone https://git.scicore.unibas.ch/schwede/ProMod3.git &lt;DIR&gt;
+</pre></div>
+</div>
+</li>
+<li><p class="first">Obtain all dependencies and compile ProMod3 with <code class="docutils literal"><span class="pre">cmake</span></code> and <code class="docutils literal"><span class="pre">make</span></code>
+(see <a class="reference internal" href="buildsystem.html#building-promod"><span class="std std-ref">here</span></a>).</p>
+</li>
+<li><p class="first">Ensure that you have a <code class="docutils literal"><span class="pre">stage/bin</span></code> folder which includes a <code class="docutils literal"><span class="pre">pm</span></code> executable.
+For convenience, add the folder to your <code class="docutils literal"><span class="pre">PATH</span></code> env. variable.</p>
+</li>
+<li><p class="first">You can now execute ProMod3 by running the following in your terminal:</p>
+</li>
 </ol>
 <blockquote>
 <div><div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> pm &lt;COMMAND&gt;
@@ -89,7 +98,7 @@ is conserved</li>
 <li>Perform loop modelling to close all gaps (see <a class="reference internal" href="loop/index.html#module-promod3.loop" title="promod3.loop: Loop Handling"><code class="xref py py-mod docutils literal"><span class="pre">loop</span></code></a> module)</li>
 <li>Reconstruct sidechains (using <a class="reference internal" href="sidechain/index.html#module-promod3.sidechain" title="promod3.sidechain: Sidechain Modelling"><code class="xref py py-mod docutils literal"><span class="pre">sidechain</span></code></a> module)</li>
 <li>Minimize energy of final model using molecular mechanics
-(using <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/molmm/#module-ost.mol.mm" title="(in OpenStructure v1.8.0)"><code class="xref py py-mod docutils literal"><span class="pre">ost.mol.mm</span></code></a> from OST)</li>
+(using <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/molmm/#module-ost.mol.mm" title="(in OpenStructure v1.9.0)"><code class="xref py py-mod docutils literal"><span class="pre">ost.mol.mm</span></code></a> from OST)</li>
 </ul>
 <p>Since a good amount of time is spent in OpenMM routines to minimize energy, we
 try to use the fast and multi-threaded &#8220;CPU&#8221; platform of OpenMM (should be
@@ -148,7 +157,7 @@ not set, 1 thread will be used by default.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/index.html b/doc/html/index.html
index 01e2cbfa..9d195208 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>ProMod3 &mdash; ProMod3 1.3.0 documentation</title>
+    <title>ProMod3 &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="#" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="#" />
     <link rel="next" title="Documentation For Users" href="users.html" />
    
   <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -47,6 +47,7 @@ computational structural biology framework that can perform all steps required
 to generate a protein model by homology. Its modular design aims at
 implementing flexible modelling pipelines and fast prototyping of novel
 algorithms.</p>
+<p>The source code can be found here: <a class="reference external" href="https://git.scicore.unibas.ch/schwede/ProMod3">https://git.scicore.unibas.ch/schwede/ProMod3</a></p>
 </div>
 <div class="section" id="documentation">
 <h1>Documentation<a class="headerlink" href="#documentation" title="Permalink to this headline">¶</a></h1>
@@ -63,6 +64,7 @@ algorithms.</p>
 <li class="toctree-l2"><a class="reference internal" href="loop/index.html"><code class="docutils literal"><span class="pre">loop</span></code> - Loop Handling</a></li>
 <li class="toctree-l2"><a class="reference internal" href="core/index.html"><code class="docutils literal"><span class="pre">core</span></code> - ProMod3 Core Functionality</a></li>
 <li class="toctree-l2"><a class="reference internal" href="core/setcompoundschemlib.html"><code class="docutils literal"><span class="pre">SetCompoundsChemlib()</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="user_contributions.html">Contributing</a></li>
 </ul>
 </li>
 </ul>
@@ -120,7 +122,7 @@ algorithms.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/license.html b/doc/html/license.html
index 6fe3a3ca..1841fd40 100644
--- a/doc/html/license.html
+++ b/doc/html/license.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>License &mdash; ProMod3 1.3.0 documentation</title>
+    <title>License &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="index.html" />
     <link rel="next" title="References" href="references.html" />
     <link rel="prev" title="Using Binary Files In ProMod3" href="portableIO.html" />
    
@@ -293,7 +293,7 @@ doc/Copyright_cmake.py.txt
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/loop/all_atom.html b/doc/html/loop/all_atom.html
index 0566e8bf..d0aee5ad 100644
--- a/doc/html/loop/all_atom.html
+++ b/doc/html/loop/all_atom.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Handling All Atom Positions &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Handling All Atom Positions &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="loop - Loop Handling" href="index.html" />
     <link rel="next" title="Generate ost.mol.mm systems" href="mm_system_creation.html" />
     <link rel="prev" title="Structural Data" href="structure_db.html" />
@@ -91,8 +91,8 @@ new loop is being added.</p>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>seqres</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a> /
-<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceList</span></code></a>) &#8211; Internal SEQRES to be set (single chain or list with one per
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>seqres</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a> /
+<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceList</span></code></a>) &#8211; Internal SEQRES to be set (single chain or list with one per
 chain). Whenever setting structural data, consistency with this SEQRES is enforced.</td>
 </tr>
 </tbody>
@@ -114,7 +114,7 @@ concatenated one after each other (indexing starts at 0)</li>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>env_structure</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityHandle</span></code></a>) &#8211; Structral data to be set as environment. The chains
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>env_structure</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityHandle</span></code></a>) &#8211; Structral data to be set as environment. The chains
 in <em>env_structure</em> are expected to be in the same
 order as the SEQRES items provided in constructor.</td>
 </tr>
@@ -144,7 +144,7 @@ means, that positions in the env. may be reset, newly set or cleared.</p>
 <li><strong>new_env_pos</strong> (<a class="reference internal" href="#promod3.loop.AllAtomEnvPositions" title="promod3.loop.AllAtomEnvPositions"><code class="xref py py-class docutils literal"><span class="pre">AllAtomEnvPositions</span></code></a>) &#8211; Structural data to be set as environment.</li>
 <li><strong>new_pos</strong> (<a class="reference internal" href="#promod3.loop.AllAtomPositions" title="promod3.loop.AllAtomPositions"><code class="xref py py-class docutils literal"><span class="pre">AllAtomPositions</span></code></a>) &#8211; Structural data to be set as environment.</li>
 <li><strong>bb_list</strong> (<a class="reference internal" href="backbone.html#promod3.loop.BackboneList" title="promod3.loop.BackboneList"><code class="xref py py-class docutils literal"><span class="pre">BackboneList</span></code></a>) &#8211; Backbone data to be set as environment.</li>
-<li><strong>start_resnum</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResNum</span></code></a>) &#8211; Res. number defining the start position in the SEQRES.</li>
+<li><strong>start_resnum</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResNum</span></code></a>) &#8211; Res. number defining the start position in the SEQRES.</li>
 <li><strong>chain_idx</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Index of chain the structural data belongs to.</li>
 </ul>
 </td>
@@ -221,7 +221,7 @@ a loop to reset later with <a class="reference internal" href="#promod3.loop.All
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">SEQRES that was set in constructor (one sequence per chain).</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceList</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceList</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -355,7 +355,7 @@ and if found set the corresponding position, otherwise we unset it.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>res_index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Residue index</li>
-<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue providing atoms</li>
+<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue providing atoms</li>
 </ul>
 </td>
 </tr>
@@ -401,7 +401,7 @@ out of bounds or if residues in the two containers are inconsistent
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Set position at that index.</li>
-<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Set position to <em>pos</em>.</li>
+<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Set position to <em>pos</em>.</li>
 </ul>
 </td>
 </tr>
@@ -451,7 +451,7 @@ out of bounds or if residues in the two containers are inconsistent
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Position at given index.</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a></td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Atom position index.</td>
 </tr>
@@ -555,7 +555,7 @@ if <em>atom_name</em> is not one of that residue&#8217;s heavy atoms.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Amino acid type of residue at index <em>res_index</em>.</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a></td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>res_index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Residue index</td>
 </tr>
@@ -834,9 +834,9 @@ atom (N, CA, C, O).</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">All residues packed in a single chain as an OST entity.
-Connectivity resolved with <a class="reference external" href="https://www.openstructure.org/docs/dev/conop/connectivity/#ost.conop.HeuristicProcessor" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.HeuristicProcessor</span></code></a>.</td>
+Connectivity resolved with <a class="reference external" href="https://www.openstructure.org/docs/conop/connectivity/#ost.conop.HeuristicProcessor" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.HeuristicProcessor</span></code></a>.</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityHandle</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityHandle</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -856,8 +856,8 @@ function efficient, we require the backbone atoms (N, C, CA) to be set.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>res_index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Residue index</li>
-<li><strong>chain</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ChainHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ChainHandle</span></code></a>) &#8211; Chain into which we insert</li>
-<li><strong>start_resnum</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResNum</span></code></a>) &#8211; Residue number for the inserted residue</li>
+<li><strong>chain</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ChainHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ChainHandle</span></code></a>) &#8211; Chain into which we insert</li>
+<li><strong>start_resnum</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResNum</span></code></a>) &#8211; Residue number for the inserted residue</li>
 </ul>
 </td>
 </tr>
@@ -950,7 +950,7 @@ integer in the range [0, <em>XXX_NUM_HYDROGENS</em>-1].</p>
 <dt id="promod3.loop.AminoAcidLookup">
 <em class="property">class </em><code class="descclassname">promod3.loop.</code><code class="descname">AminoAcidLookup</code><a class="headerlink" href="#promod3.loop.AminoAcidLookup" title="Permalink to this definition">¶</a></dt>
 <dd><p>Collection of static methods to lookup properties of amino acid types
-(<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>), heavy atom types (<a class="reference internal" href="#promod3.loop.AminoAcidAtom" title="promod3.loop.AminoAcidAtom"><code class="xref py py-class docutils literal"><span class="pre">AminoAcidAtom</span></code></a>) and
+(<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>), heavy atom types (<a class="reference internal" href="#promod3.loop.AminoAcidAtom" title="promod3.loop.AminoAcidAtom"><code class="xref py py-class docutils literal"><span class="pre">AminoAcidAtom</span></code></a>) and
 hydrogen types (<a class="reference internal" href="#promod3.loop.AminoAcidHydrogen" title="promod3.loop.AminoAcidHydrogen"><code class="xref py py-class docutils literal"><span class="pre">AminoAcidHydrogen</span></code></a>).</p>
 <dl class="staticmethod">
 <dt id="promod3.loop.AminoAcidLookup.GetOLC">
@@ -963,7 +963,7 @@ hydrogen types (<a class="reference internal" href="#promod3.loop.AminoAcidHydro
 </tr>
 <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a></td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</td>
 </tr>
 </tbody>
 </table>
@@ -985,7 +985,7 @@ hydrogen types (<a class="reference internal" href="#promod3.loop.AminoAcidHydro
 </td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</li>
+<li><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</li>
 <li><strong>atom_idx</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Atom index (in [0, GetNumAtoms(aa)-1])</li>
 <li><strong>atom_name</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; Atom name</li>
 </ul>
@@ -1015,7 +1015,7 @@ hydrogen types (<a class="reference internal" href="#promod3.loop.AminoAcidHydro
 </td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</li>
+<li><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</li>
 <li><strong>atom_idx</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Atom index (in [0, GetNumHydrogens(aa)-1])</li>
 <li><strong>atom_name</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; Atom name</li>
 </ul>
@@ -1044,7 +1044,7 @@ atom.</p>
 </td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</li>
+<li><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</li>
 <li><strong>atom_name</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; Atom name</li>
 </ul>
 </td>
@@ -1072,7 +1072,7 @@ and atom.</p>
 </td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</li>
+<li><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</li>
 <li><strong>atom_name</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; Atom name</li>
 </ul>
 </td>
@@ -1096,7 +1096,7 @@ hydrogens of <em>aa</em>.</p>
 </tr>
 <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a></td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</td>
 </tr>
 </tbody>
 </table>
@@ -1128,7 +1128,7 @@ hydrogens of <em>aa</em>.</p>
 </tr>
 <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a></td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</td>
 </tr>
 </tbody>
 </table>
@@ -1161,7 +1161,7 @@ hydrogens of <em>aa</em>.</p>
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Amino acid type of the given heavy atom type</p>
 </td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first"><a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a></p>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first"><a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a></p>
 </td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
@@ -1255,7 +1255,7 @@ when residue is peptide bound.</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a></td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/exceptions.html#exceptions.RuntimeError" title="(in Python v2.7)"><code class="xref py py-exc docutils literal"><span class="pre">RuntimeError</span></code></a> if no such atom (i.e. PRO)</td>
 </tr>
@@ -1279,7 +1279,7 @@ when residue is N terminal.</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a></td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/exceptions.html#exceptions.RuntimeError" title="(in Python v2.7)"><code class="xref py py-exc docutils literal"><span class="pre">RuntimeError</span></code></a> if no such atom (i.e. H3 for PRO)</td>
 </tr>
@@ -1343,7 +1343,7 @@ when residue is N terminal.</td>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/loop/backbone.html b/doc/html/loop/backbone.html
index 9d5e222b..f44cf207 100644
--- a/doc/html/loop/backbone.html
+++ b/doc/html/loop/backbone.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Representing Loops &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Representing Loops &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="loop - Loop Handling" href="index.html" />
     <link rel="next" title="Sampling Dihedral Angles" href="torsion_sampler.html" />
     <link rel="prev" title="loop - Loop Handling" href="index.html" />
@@ -47,7 +47,7 @@
 <p>The most simple representation of structural information in ProMod3 is the
 <a class="reference internal" href="#promod3.loop.BackboneList" title="promod3.loop.BackboneList"><code class="xref py py-class docutils literal"><span class="pre">BackboneList</span></code></a>. It provides a way to store the backbone positions of
 residues. They provide structural manipulations, they can be manipulated and
-converted from, to, or inserted to a <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityHandle</span></code></a>.</p>
+converted from, to, or inserted to a <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityHandle</span></code></a>.</p>
 <div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">ost</span> <span class="k">import</span> <span class="n">io</span>
 <span class="kn">from</span> <span class="nn">ost</span> <span class="k">import</span> <span class="n">conop</span>
 <span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">loop</span>
@@ -161,7 +161,7 @@ code which is not one of the 20 default amino acids or if
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>sequence</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; Sequence of created BackboneList</li>
-<li><strong>residues</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code>) &#8211; List of <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a> objects from
+<li><strong>residues</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code>) &#8211; List of <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a> objects from
 which the backbone positions are extracted.</li>
 </ul>
 </td>
@@ -185,7 +185,7 @@ a residue not providing all necessary positions.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">The whole backbone list converted to a density map.</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/img/base/img/#ost.img.ImageHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.img.ImageHandle</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/img/base/img/#ost.img.ImageHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.img.ImageHandle</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -195,7 +195,7 @@ a residue not providing all necessary positions.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
 <li><strong>padding</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; </li>
-<li><strong>sampling</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; </li>
+<li><strong>sampling</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; </li>
 <li><strong>resolution</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; </li>
 <li><strong>high_resolution</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; </li>
 </ul>
@@ -214,7 +214,7 @@ a residue not providing all necessary positions.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">The whole backbone list converted to an OST entity.</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityHandle</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityHandle</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -231,8 +231,8 @@ be replaced, otherwise they will be added to the entity.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>chain</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ChainHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ChainHandle</span></code></a>) &#8211; The chain</li>
-<li><strong>start_resnum</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResNum</span></code></a>) &#8211; Residue number defining the start location of insertion</li>
+<li><strong>chain</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ChainHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ChainHandle</span></code></a>) &#8211; The chain</li>
+<li><strong>start_resnum</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResNum</span></code></a>) &#8211; Residue number defining the start location of insertion</li>
 </ul>
 </td>
 </tr>
@@ -248,7 +248,7 @@ be replaced, otherwise they will be added to the entity.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>map</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/img/base/img/#ost.img.ImageHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.img.ImageHandle</span></code></a>) &#8211; </li>
+<li><strong>map</strong> (<a class="reference external" href="https://www.openstructure.org/docs/img/base/img/#ost.img.ImageHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.img.ImageHandle</span></code></a>) &#8211; </li>
 <li><strong>resolution</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; </li>
 <li><strong>high_resolution</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; </li>
 </ul>
@@ -267,7 +267,7 @@ be replaced, otherwise they will be added to the entity.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"></td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/geom/composite/#ost.geom.AlignedCuboid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.AlignedCuboid</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/geom/composite/#ost.geom.AlignedCuboid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.AlignedCuboid</span></code></a></td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>all_atom</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; </td>
 </tr>
@@ -371,7 +371,7 @@ actual fragment at specified <em>index</em></p>
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Position of nitrogen / alpha carbon / beta carbon / carbon / oxygen
 atom for residue at given index.</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Residue index.</td>
 </tr>
@@ -396,7 +396,7 @@ atom for residue at given index.</td>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
 <li><strong>index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Residue index.</li>
-<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of nitrogen / alpha carbon / beta carbon / carbon
+<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of nitrogen / alpha carbon / beta carbon / carbon
 / oxygen atom to this.</li>
 </ul>
 </td>
@@ -448,7 +448,7 @@ atom for residue at given index.</td>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Amino acid type of the residue at given index.</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a></td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Residue index.</td>
 </tr>
@@ -465,7 +465,7 @@ atom for residue at given index.</td>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Residue index.</li>
-<li><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; Set amino acid type of the residue to this.</li>
+<li><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; Set amino acid type of the residue to this.</li>
 </ul>
 </td>
 </tr>
@@ -491,12 +491,12 @@ and set the amino acid type according to the given one letter code.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
 <li><strong>index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Residue index.</li>
-<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ResidueHandle</span></code></a>) &#8211; Residue from which to extract backbone atom positions</li>
-<li><strong>n_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of nitrogen atom to this.</li>
-<li><strong>ca_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of alpha carbon atom to this.</li>
-<li><strong>cb_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of beta carbon atom to this.</li>
-<li><strong>c_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of carbon atom to this.</li>
-<li><strong>o_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of oxygen atom to this.</li>
+<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ResidueHandle</span></code></a>) &#8211; Residue from which to extract backbone atom positions</li>
+<li><strong>n_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of nitrogen atom to this.</li>
+<li><strong>ca_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of alpha carbon atom to this.</li>
+<li><strong>cb_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of beta carbon atom to this.</li>
+<li><strong>c_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of carbon atom to this.</li>
+<li><strong>o_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of oxygen atom to this.</li>
 <li><strong>olc</strong> (<code class="xref py py-class docutils literal"><span class="pre">char</span></code>) &#8211; Set one letter code of the residue to this.</li>
 </ul>
 </td>
@@ -566,12 +566,12 @@ to the given one letter code.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ResidueHandle</span></code></a>) &#8211; Residue from which to extract backbone atom positions</li>
-<li><strong>n_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of nitrogen atom to this.</li>
-<li><strong>ca_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of alpha carbon atom to this.</li>
-<li><strong>cb_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of beta carbon atom to this.</li>
-<li><strong>c_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of carbon atom to this.</li>
-<li><strong>o_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of oxygen atom to this.</li>
+<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ResidueHandle</span></code></a>) &#8211; Residue from which to extract backbone atom positions</li>
+<li><strong>n_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of nitrogen atom to this.</li>
+<li><strong>ca_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of alpha carbon atom to this.</li>
+<li><strong>cb_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of beta carbon atom to this.</li>
+<li><strong>c_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of carbon atom to this.</li>
+<li><strong>o_pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>) &#8211; Set position of oxygen atom to this.</li>
 <li><strong>olc</strong> (<code class="xref py py-class docutils literal"><span class="pre">char</span></code>) &#8211; Set one letter code of the residue to this.</li>
 </ul>
 </td>
@@ -635,7 +635,7 @@ reconstructed if the residue handle is valid.</p>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>after_c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue following the C stem (C stem residue is last
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>after_c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue following the C stem (C stem residue is last
 element of this backbone list)</td>
 </tr>
 </tbody>
@@ -652,7 +652,7 @@ element of this backbone list)</td>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
 <li><strong>index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Residue index.</li>
-<li><strong>transform</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a>) &#8211; The transformation</li>
+<li><strong>transform</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a>) &#8211; The transformation</li>
 </ul>
 </td>
 </tr>
@@ -672,7 +672,7 @@ element of this backbone list)</td>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
 <li><strong>from</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Start index.</li>
 <li><strong>to</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; End index (one past last residue to transform).</li>
-<li><strong>transform</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a>) &#8211; The transformation</li>
+<li><strong>transform</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a>) &#8211; The transformation</li>
 </ul>
 </td>
 </tr>
@@ -688,7 +688,7 @@ element of this backbone list)</td>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>transform</strong> (<code class="xref py py-class docutils literal"><span class="pre">ost.geom.Transform</span></code> / <a class="reference external" href="https://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a>) &#8211; The transformation</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>transform</strong> (<code class="xref py py-class docutils literal"><span class="pre">ost.geom.Transform</span></code> / <a class="reference external" href="https://www.openstructure.org/docs/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a>) &#8211; The transformation</td>
 </tr>
 </tbody>
 </table>
@@ -708,12 +708,12 @@ residue <em>other_index</em> of <em>other</em> backbone list considering the
 positions of the N, CA and C atoms.</p>
 </td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first"><a class="reference external" href="https://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a></p>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first"><a class="reference external" href="https://www.openstructure.org/docs/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a></p>
 </td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
 <li><strong>index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Residue index.</li>
-<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; The other residue.</li>
+<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; The other residue.</li>
 <li><strong>other</strong> (<a class="reference internal" href="#promod3.loop.BackboneList" title="promod3.loop.BackboneList"><code class="xref py py-class docutils literal"><span class="pre">BackboneList</span></code></a>) &#8211; The other backbone list.</li>
 <li><strong>other_index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Residue index in <em>other</em> backbone list.</li>
 </ul>
@@ -733,7 +733,7 @@ positions of the N, CA and C atoms.</p>
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Get minimum RMSD transformation of CA positions of this backbone
 list onto CA positions of <em>other</em> backbone list.</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a></td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>other</strong> (<a class="reference internal" href="#promod3.loop.BackboneList" title="promod3.loop.BackboneList"><code class="xref py py-class docutils literal"><span class="pre">BackboneList</span></code></a>) &#8211; The other backbone list.</td>
 </tr>
@@ -1005,7 +1005,7 @@ backbone list.</td>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/loop/index.html b/doc/html/loop/index.html
index 7564641e..58b98b7a 100644
--- a/doc/html/loop/index.html
+++ b/doc/html/loop/index.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>loop - Loop Handling &mdash; ProMod3 1.3.0 documentation</title>
+    <title>loop - Loop Handling &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="Documentation For Users" href="../users.html" />
     <link rel="next" title="Representing Loops" href="backbone.html" />
     <link rel="prev" title="Other Scoring Functions" href="../scoring/other_scoring_functions.html" />
@@ -163,7 +163,7 @@ loops. The following example should give you an idea of what can be done:</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/loop/load_loop_objects.html b/doc/html/loop/load_loop_objects.html
index ab776961..ce2e37a4 100644
--- a/doc/html/loop/load_loop_objects.html
+++ b/doc/html/loop/load_loop_objects.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Loading Precomputed Objects &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Loading Precomputed Objects &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="loop - Loop Handling" href="index.html" />
     <link rel="next" title="core - ProMod3 Core Functionality" href="../core/index.html" />
     <link rel="prev" title="Generate ost.mol.mm systems" href="mm_system_creation.html" />
@@ -204,7 +204,7 @@ returned by <a class="reference internal" href="#promod3.loop.LoadStructureDB" t
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/loop/mm_system_creation.html b/doc/html/loop/mm_system_creation.html
index d3e6544c..8dfaaaec 100644
--- a/doc/html/loop/mm_system_creation.html
+++ b/doc/html/loop/mm_system_creation.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Generate ost.mol.mm systems &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Generate ost.mol.mm systems &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="loop - Loop Handling" href="index.html" />
     <link rel="next" title="Loading Precomputed Objects" href="load_loop_objects.html" />
     <link rel="prev" title="Handling All Atom Positions" href="all_atom.html" />
@@ -43,8 +43,8 @@
           <div class="body" role="main">
             
   <div class="section" id="generate-ost-mol-mm-systems">
-<h1>Generate <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/molmm/#module-ost.mol.mm" title="(in OpenStructure v1.8.0)"><code class="xref py py-mod docutils literal"><span class="pre">ost.mol.mm</span></code></a> systems<a class="headerlink" href="#generate-ost-mol-mm-systems" title="Permalink to this headline">¶</a></h1>
-<p>To simplify the creation of <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/molmm/#module-ost.mol.mm" title="(in OpenStructure v1.8.0)"><code class="xref py py-mod docutils literal"><span class="pre">ost.mol.mm</span></code></a> / OpenMM simulations for loops in
+<h1>Generate <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/molmm/#module-ost.mol.mm" title="(in OpenStructure v1.9.0)"><code class="xref py py-mod docutils literal"><span class="pre">ost.mol.mm</span></code></a> systems<a class="headerlink" href="#generate-ost-mol-mm-systems" title="Permalink to this headline">¶</a></h1>
+<p>To simplify the creation of <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/molmm/#module-ost.mol.mm" title="(in OpenStructure v1.9.0)"><code class="xref py py-mod docutils literal"><span class="pre">ost.mol.mm</span></code></a> / OpenMM simulations for loops in
 proteins, we define a system creator for loops (<a class="reference internal" href="#promod3.loop.MmSystemCreator" title="promod3.loop.MmSystemCreator"><code class="xref py py-class docutils literal"><span class="pre">MmSystemCreator</span></code></a>) and a
 specialized forcefield lookup for amino acids (<a class="reference internal" href="#promod3.loop.ForcefieldLookup" title="promod3.loop.ForcefieldLookup"><code class="xref py py-class docutils literal"><span class="pre">ForcefieldLookup</span></code></a>).</p>
 <p>The example below showcases the creation and use of an MM system:</p>
@@ -289,7 +289,7 @@ acid types for <em>out_pos[res_indices[i]]</em> and <em>all_pos[res_indices[i]]<
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Simulation object setup by <a class="reference internal" href="#promod3.loop.MmSystemCreator.SetupSystem" title="promod3.loop.MmSystemCreator.SetupSystem"><code class="xref py py-meth docutils literal"><span class="pre">SetupSystem()</span></code></a>. Use this to run
 MM simulations.</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/simulation/#ost.mol.mm.Simulation" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.mm.Simulation</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/mol/mm/simulation/#ost.mol.mm.Simulation" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.mm.Simulation</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -436,7 +436,7 @@ FF specific data for amino acids in a protein. We distinguish amino acid types
 <dl class="class">
 <dt id="promod3.loop.ForcefieldLookup">
 <em class="property">class </em><code class="descclassname">promod3.loop.</code><code class="descname">ForcefieldLookup</code><a class="headerlink" href="#promod3.loop.ForcefieldLookup" title="Permalink to this definition">¶</a></dt>
-<dd><p>This class provides all functionality to generate <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/simulation/#ost.mol.mm.Simulation" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.mm.Simulation</span></code></a> objects. Specifically, we can:</p>
+<dd><p>This class provides all functionality to generate <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/simulation/#ost.mol.mm.Simulation" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.mm.Simulation</span></code></a> objects. Specifically, we can:</p>
 <ul class="simple">
 <li>get a consistent indexing of each atom of each residue in [<em>0, N-1</em>], where
 <em>N</em> = <a class="reference internal" href="#promod3.loop.ForcefieldLookup.GetNumAtoms" title="promod3.loop.ForcefieldLookup.GetNumAtoms"><code class="xref py py-meth docutils literal"><span class="pre">GetNumAtoms()</span></code></a> (note that only OXT indexing depends on whether a
@@ -549,7 +549,7 @@ for details.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Amino acid type for given <em>ff_aa</em></td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a></td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>ff_aa</strong> (<a class="reference internal" href="#promod3.loop.ForcefieldAminoAcid" title="promod3.loop.ForcefieldAminoAcid"><code class="xref py py-class docutils literal"><span class="pre">ForcefieldAminoAcid</span></code></a>) &#8211; Forcefield-specific amino acid type</td>
 </tr>
@@ -665,7 +665,7 @@ for details.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Dampening factor for LJ 1,4 interactions (see
-<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.SetFudgeLJ" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.SetFudgeLJ()</span></code></a>)</td>
+<a class="reference external" href="https://www.openstructure.org/docs/mol/mm/topology/#ost.mol.mm.Topology.SetFudgeLJ" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.SetFudgeLJ()</span></code></a>)</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a></td>
 </tr>
@@ -681,7 +681,7 @@ for details.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Dampening factor for electrostatic 1,4 interactions (see
-<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.SetFudgeQQ" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.SetFudgeQQ()</span></code></a>)</td>
+<a class="reference external" href="https://www.openstructure.org/docs/mol/mm/topology/#ost.mol.mm.Topology.SetFudgeQQ" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.SetFudgeQQ()</span></code></a>)</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a></td>
 </tr>
@@ -696,7 +696,7 @@ for details.</p>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Mass for each atom (see <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.SetMasses" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.SetMasses()</span></code></a>)</p>
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Mass for each atom (see <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/topology/#ost.mol.mm.Topology.SetMasses" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.SetMasses()</span></code></a>)</p>
 </td>
 </tr>
 <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first"><code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a> (length = <a class="reference internal" href="#promod3.loop.ForcefieldLookup.GetNumAtoms" title="promod3.loop.ForcefieldLookup.GetNumAtoms"><code class="xref py py-meth docutils literal"><span class="pre">GetNumAtoms()</span></code></a>)</p>
@@ -720,7 +720,7 @@ for details.</p>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Charge for each atom (see <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.SetCharges" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.SetCharges()</span></code></a>)</p>
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Charge for each atom (see <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/topology/#ost.mol.mm.Topology.SetCharges" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.SetCharges()</span></code></a>)</p>
 </td>
 </tr>
 <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first"><code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a> (length = <a class="reference internal" href="#promod3.loop.ForcefieldLookup.GetNumAtoms" title="promod3.loop.ForcefieldLookup.GetNumAtoms"><code class="xref py py-meth docutils literal"><span class="pre">GetNumAtoms()</span></code></a>)</p>
@@ -745,7 +745,7 @@ for details.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Sigma in nm for each atom
-(see <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.SetSigmas" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.SetSigmas()</span></code></a>)</p>
+(see <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/topology/#ost.mol.mm.Topology.SetSigmas" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.SetSigmas()</span></code></a>)</p>
 </td>
 </tr>
 <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first"><code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a> (length = <a class="reference internal" href="#promod3.loop.ForcefieldLookup.GetNumAtoms" title="promod3.loop.ForcefieldLookup.GetNumAtoms"><code class="xref py py-meth docutils literal"><span class="pre">GetNumAtoms()</span></code></a>)</p>
@@ -770,7 +770,7 @@ for details.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Epsilon in kJ/mol for each atom
-(see <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.SetEpsilons" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.SetEpsilons()</span></code></a>)</p>
+(see <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/topology/#ost.mol.mm.Topology.SetEpsilons" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.SetEpsilons()</span></code></a>)</p>
 </td>
 </tr>
 <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first"><code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a> (length = <a class="reference internal" href="#promod3.loop.ForcefieldLookup.GetNumAtoms" title="promod3.loop.ForcefieldLookup.GetNumAtoms"><code class="xref py py-meth docutils literal"><span class="pre">GetNumAtoms()</span></code></a>)</p>
@@ -916,7 +916,7 @@ for details.</p>
 <dt id="promod3.loop.ForcefieldAminoAcid">
 <em class="property">class </em><code class="descclassname">promod3.loop.</code><code class="descname">ForcefieldAminoAcid</code><a class="headerlink" href="#promod3.loop.ForcefieldAminoAcid" title="Permalink to this definition">¶</a></dt>
 <dd><p>Enumerates the amino acid types for forcefields. The first 20 values
-correspond to the 20 values of <a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>. Additionally,
+correspond to the 20 values of <a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>. Additionally,
 there are values for disulfid bridges (<em>FF_CYS2</em>), d-protonated histidine
 (<em>FF_HISD</em>, default for <em>ost.conop.HIS</em> is <em>FF_HISE</em>) and <em>FF_XXX</em> for unknown
 types. The full list of values is:</p>
@@ -933,7 +933,7 @@ types. The full list of values is:</p>
 <dd><p>Contains lists of bonds, angles, dihedrals, impropers and LJ pairs (exclusions
 are the combination of all bonds and 1,3 pairs of angles and are not stored
 separately). Each type of connectivity has it&#8217;s own class (see below) storing
-indices and parameters to be used for methods of <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.mm.Topology</span></code></a>.
+indices and parameters to be used for methods of <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/topology/#ost.mol.mm.Topology" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.mm.Topology</span></code></a>.
 The indexing of atoms for internal connectivities is in [<em>0, N-1</em>], where <em>N</em>
 = <a class="reference internal" href="#promod3.loop.ForcefieldLookup.GetNumAtoms" title="promod3.loop.ForcefieldLookup.GetNumAtoms"><code class="xref py py-meth docutils literal"><span class="pre">ForcefieldLookup.GetNumAtoms()</span></code></a>. For connectivities of pairs of
 residues, atoms of the first residue are in [<em>0, N1-1</em>] and atoms of the
@@ -1043,7 +1043,7 @@ False, False)</em>.</p>
 <dl class="class">
 <dt id="promod3.loop.ForcefieldBondInfo">
 <em class="property">class </em><code class="descclassname">promod3.loop.</code><code class="descname">ForcefieldBondInfo</code><a class="headerlink" href="#promod3.loop.ForcefieldBondInfo" title="Permalink to this definition">¶</a></dt>
-<dd><p>Define harmonic bond (see <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.AddHarmonicBond" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.AddHarmonicBond()</span></code></a>)</p>
+<dd><p>Define harmonic bond (see <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/topology/#ost.mol.mm.Topology.AddHarmonicBond" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.AddHarmonicBond()</span></code></a>)</p>
 <dl class="attribute">
 <dt id="promod3.loop.ForcefieldBondInfo.index_one">
 <code class="descname">index_one</code><a class="headerlink" href="#promod3.loop.ForcefieldBondInfo.index_one" title="Permalink to this definition">¶</a></dt>
@@ -1105,7 +1105,7 @@ False, False)</em>.</p>
 <dl class="class">
 <dt id="promod3.loop.ForcefieldHarmonicAngleInfo">
 <em class="property">class </em><code class="descclassname">promod3.loop.</code><code class="descname">ForcefieldHarmonicAngleInfo</code><a class="headerlink" href="#promod3.loop.ForcefieldHarmonicAngleInfo" title="Permalink to this definition">¶</a></dt>
-<dd><p>Define harmonic angle (see <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.AddHarmonicAngle" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.AddHarmonicAngle()</span></code></a>)</p>
+<dd><p>Define harmonic angle (see <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/topology/#ost.mol.mm.Topology.AddHarmonicAngle" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.AddHarmonicAngle()</span></code></a>)</p>
 <dl class="attribute">
 <dt id="promod3.loop.ForcefieldHarmonicAngleInfo.index_one">
 <code class="descname">index_one</code><a class="headerlink" href="#promod3.loop.ForcefieldHarmonicAngleInfo.index_one" title="Permalink to this definition">¶</a></dt>
@@ -1182,7 +1182,7 @@ False, False)</em>.</p>
 <dt id="promod3.loop.ForcefieldUreyBradleyAngleInfo">
 <em class="property">class </em><code class="descclassname">promod3.loop.</code><code class="descname">ForcefieldUreyBradleyAngleInfo</code><a class="headerlink" href="#promod3.loop.ForcefieldUreyBradleyAngleInfo" title="Permalink to this definition">¶</a></dt>
 <dd><p>Define Urey-Bradley angle
-(see <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.AddUreyBradleyAngle" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.AddUreyBradleyAngle()</span></code></a>)</p>
+(see <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/topology/#ost.mol.mm.Topology.AddUreyBradleyAngle" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.AddUreyBradleyAngle()</span></code></a>)</p>
 <dl class="attribute">
 <dt id="promod3.loop.ForcefieldUreyBradleyAngleInfo.index_one">
 <code class="descname">index_one</code><a class="headerlink" href="#promod3.loop.ForcefieldUreyBradleyAngleInfo.index_one" title="Permalink to this definition">¶</a></dt>
@@ -1287,8 +1287,8 @@ False, False)</em>.</p>
 <dt id="promod3.loop.ForcefieldPeriodicDihedralInfo">
 <em class="property">class </em><code class="descclassname">promod3.loop.</code><code class="descname">ForcefieldPeriodicDihedralInfo</code><a class="headerlink" href="#promod3.loop.ForcefieldPeriodicDihedralInfo" title="Permalink to this definition">¶</a></dt>
 <dd><p>Define periodic dihedral or improper (see
-<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.AddPeriodicDihedral" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.AddPeriodicDihedral()</span></code></a> and
-<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.AddPeriodicImproper" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.AddPeriodicImproper()</span></code></a>)</p>
+<a class="reference external" href="https://www.openstructure.org/docs/mol/mm/topology/#ost.mol.mm.Topology.AddPeriodicDihedral" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.AddPeriodicDihedral()</span></code></a> and
+<a class="reference external" href="https://www.openstructure.org/docs/mol/mm/topology/#ost.mol.mm.Topology.AddPeriodicImproper" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.AddPeriodicImproper()</span></code></a>)</p>
 <dl class="attribute">
 <dt id="promod3.loop.ForcefieldPeriodicDihedralInfo.index_one">
 <code class="descname">index_one</code><a class="headerlink" href="#promod3.loop.ForcefieldPeriodicDihedralInfo.index_one" title="Permalink to this definition">¶</a></dt>
@@ -1392,7 +1392,7 @@ False, False)</em>.</p>
 <dl class="class">
 <dt id="promod3.loop.ForcefieldHarmonicImproperInfo">
 <em class="property">class </em><code class="descclassname">promod3.loop.</code><code class="descname">ForcefieldHarmonicImproperInfo</code><a class="headerlink" href="#promod3.loop.ForcefieldHarmonicImproperInfo" title="Permalink to this definition">¶</a></dt>
-<dd><p>Define harmonic improper (see <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.AddHarmonicImproper" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.AddHarmonicImproper()</span></code></a>)</p>
+<dd><p>Define harmonic improper (see <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/topology/#ost.mol.mm.Topology.AddHarmonicImproper" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.AddHarmonicImproper()</span></code></a>)</p>
 <dl class="attribute">
 <dt id="promod3.loop.ForcefieldHarmonicImproperInfo.index_one">
 <code class="descname">index_one</code><a class="headerlink" href="#promod3.loop.ForcefieldHarmonicImproperInfo.index_one" title="Permalink to this definition">¶</a></dt>
@@ -1482,7 +1482,7 @@ False, False)</em>.</p>
 <dl class="class">
 <dt id="promod3.loop.ForcefieldLJPairInfo">
 <em class="property">class </em><code class="descclassname">promod3.loop.</code><code class="descname">ForcefieldLJPairInfo</code><a class="headerlink" href="#promod3.loop.ForcefieldLJPairInfo" title="Permalink to this definition">¶</a></dt>
-<dd><p>Define LJ pair (see <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.AddLJPair" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.AddLJPair()</span></code></a>)</p>
+<dd><p>Define LJ pair (see <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/topology/#ost.mol.mm.Topology.AddLJPair" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.mm.Topology.AddLJPair()</span></code></a>)</p>
 <dl class="attribute">
 <dt id="promod3.loop.ForcefieldLJPairInfo.index_one">
 <code class="descname">index_one</code><a class="headerlink" href="#promod3.loop.ForcefieldLJPairInfo.index_one" title="Permalink to this definition">¶</a></dt>
@@ -1593,7 +1593,7 @@ False, False)</em>.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/loop/structure_db.html b/doc/html/loop/structure_db.html
index 6f0cff9e..0b6af065 100644
--- a/doc/html/loop/structure_db.html
+++ b/doc/html/loop/structure_db.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Structural Data &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Structural Data &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="loop - Loop Handling" href="index.html" />
     <link rel="next" title="Handling All Atom Positions" href="all_atom.html" />
     <link rel="prev" title="Sampling Dihedral Angles" href="torsion_sampler.html" />
@@ -126,7 +126,7 @@ stuff to the structure db. (<a class="reference external" href="https://docs.pyt
 <dt id="promod3.loop.CoordInfo.shift">
 <code class="descname">shift</code><a class="headerlink" href="#promod3.loop.CoordInfo.shift" title="Permalink to this definition">¶</a></dt>
 <dd><p>Translation from original coordinates that has been applied before storing
-structural information in db. (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>)</p>
+structural information in db. (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>)</p>
 </dd></dl>
 
 </dd></dl>
@@ -275,7 +275,7 @@ database, you might want to consider two things:</p>
 <ol class="arabic simple">
 <li>Use a database of limited size to generate the actual profiles (something
 in between 5000 and 10000 nonredundant chains is enough)</li>
-<li>Use the <a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileDB" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileDB</span></code></a> to gather profiles produced from jobs
+<li>Use the <a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileDB" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileDB</span></code></a> to gather profiles produced from jobs
 running in parallel</li>
 </ol>
 <dl class="class">
@@ -409,10 +409,10 @@ in the according <a class="reference internal" href="#promod3.loop.CoordInfo" ti
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>id</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; identifier of the added structure (e.g. pdb id)</li>
 <li><strong>chain_name</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; Name of the chain in <em>ent</em> you want to add</li>
-<li><strong>ent</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityView</span></code></a>) &#8211; The full entity that must contain a chain named
+<li><strong>ent</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityView</span></code></a>) &#8211; The full entity that must contain a chain named
 as specified by <em>chain_name</em>.</li>
-<li><strong>seqres</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a>) &#8211; The reference sequence of chain with name <em>chain_name</em></li>
-<li><strong>prof</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; Profile information for the chain with name
+<li><strong>seqres</strong> (<a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a>) &#8211; The reference sequence of chain with name <em>chain_name</em></li>
+<li><strong>prof</strong> (<a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; Profile information for the chain with name
 <em>chain_name</em>. The profile sequence must match <em>seqres</em>.</li>
 <li><strong>only_longest_stretch</strong> &#8211; Flag whether you want to add only the longest
 connected stretch of residues are all connected
@@ -540,9 +540,9 @@ the database.</td>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>fragment</strong> (<a class="reference internal" href="#promod3.loop.FragmentInfo" title="promod3.loop.FragmentInfo"><code class="xref py py-class docutils literal"><span class="pre">FragmentInfo</span></code></a>) &#8211; Fragment definition from which to extract positions.</li>
 <li><strong>sequence</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; Sequence to set for the returned backbone list.</li>
-<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Positions on which the backbone list&#8217;s N-terminus should be
+<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Positions on which the backbone list&#8217;s N-terminus should be
 superposed onto.</li>
-<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Positions on which the backbone list&#8217;s C-terminus should be
+<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Positions on which the backbone list&#8217;s C-terminus should be
 superposed onto.</li>
 </ul>
 </td>
@@ -653,7 +653,7 @@ connected stretches of residues in the database.</td>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Solvent accessibility for each residue of <em>fragment</em> in square A
-as calculated by <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/alg/molalg/#ost.mol.alg.Accessibility" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">Accessibility()</span></code></a> when adding
+as calculated by <a class="reference external" href="https://www.openstructure.org/docs/mol/alg/molalg/#ost.mol.alg.Accessibility" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">Accessibility()</span></code></a> when adding
 the structure to the database.</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a></td>
@@ -680,7 +680,7 @@ connected stretches of residues in the database.</td>
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">The sequence profile for the residues defined by <em>fragment</em> with
 the BLOSUM62 probabilities as NULL model.</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a></td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>fragment</strong> (<a class="reference internal" href="#promod3.loop.FragmentInfo" title="promod3.loop.FragmentInfo"><code class="xref py py-class docutils literal"><span class="pre">FragmentInfo</span></code></a>) &#8211; Fragment definition from which to extract the sequence
 profile</td>
@@ -704,7 +704,7 @@ connected stretches of residues in the database.</td>
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">The structure profile for the residues defined by <em>fragment</em> with
 the BLOSUM62 probabilities as NULL model.</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a></td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>fragment</strong> (<a class="reference internal" href="#promod3.loop.FragmentInfo" title="promod3.loop.FragmentInfo"><code class="xref py py-class docutils literal"><span class="pre">FragmentInfo</span></code></a>) &#8211; Fragment definition from which to extract the structure
 profile</td>
@@ -739,7 +739,7 @@ containing that data.</li>
 probabilities as NULL model.</p>
 </td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first"><a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a></p>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first"><a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a></p>
 </td>
 </tr>
 <tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://docs.python.org/2.7/library/exceptions.html#exceptions.RuntimeError" title="(in Python v2.7)"><code class="xref py py-exc docutils literal"><span class="pre">RuntimeError</span></code></a> if <em>bb_list</em> and
@@ -761,7 +761,7 @@ frequencies in entry with <em>coord_idx</em></p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>prof</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; Source of profile frequencies</li>
+<li><strong>prof</strong> (<a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; Source of profile frequencies</li>
 <li><strong>coord_idx</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; StructureDB index of entry for which to set frequencies
 (in [0, <a class="reference internal" href="#promod3.loop.StructureDB.GetNumCoords" title="promod3.loop.StructureDB.GetNumCoords"><code class="xref py py-meth docutils literal"><span class="pre">GetNumCoords()</span></code></a>-1])</li>
 </ul>
@@ -1064,8 +1064,8 @@ and <strong>c_stem</strong> and of the same length as the <strong>frag_size</str
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; The N-stem</li>
-<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; The C-stem</li>
+<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; The N-stem</li>
+<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; The C-stem</li>
 <li><strong>frag_size</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Number of residues of the fragment</li>
 <li><strong>extra_bins</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Whether to extend the search to include fragments from
 <em>extra_bins</em> additional bins surrounding the bin given by
@@ -1289,7 +1289,7 @@ linked to this object.</li>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
 <li><strong>w</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; linear weight</li>
-<li><strong>prof</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; Profile for the fraggers target_sequence</li>
+<li><strong>prof</strong> (<a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; Profile for the fraggers target_sequence</li>
 </ul>
 </td>
 </tr>
@@ -1307,7 +1307,7 @@ linked to this object.</li>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
 <li><strong>w</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; linear weight</li>
-<li><strong>prof</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; Profile for the fraggers target_sequence</li>
+<li><strong>prof</strong> (<a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; Profile for the fraggers target_sequence</li>
 </ul>
 </td>
 </tr>
@@ -1761,7 +1761,7 @@ to <strong>to</strong>, not including <strong>to</strong> itself</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/loop/torsion_sampler.html b/doc/html/loop/torsion_sampler.html
index fa5416d4..08cab652 100644
--- a/doc/html/loop/torsion_sampler.html
+++ b/doc/html/loop/torsion_sampler.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Sampling Dihedral Angles &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Sampling Dihedral Angles &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="loop - Loop Handling" href="index.html" />
     <link rel="next" title="Structural Data" href="structure_db.html" />
     <link rel="prev" title="Representing Loops" href="backbone.html" />
@@ -139,7 +139,7 @@ acids not matching any of the group definitions.</p>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>view</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityView</span></code></a>) &#8211; structure from which parameters will be extracted</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>view</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityView</span></code></a>) &#8211; structure from which parameters will be extracted</td>
 </tr>
 </tbody>
 </table>
@@ -211,9 +211,9 @@ for details.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue before <em>central</em></li>
-<li><strong>central</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue for the central residue</li>
-<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue after <em>central</em></li>
+<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue before <em>central</em></li>
+<li><strong>central</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue for the central residue</li>
+<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue after <em>central</em></li>
 </ul>
 </td>
 </tr>
@@ -253,9 +253,9 @@ standard amino acid</td>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue before <em>central</em></li>
-<li><strong>central</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue for which torsion angles will be drawn</li>
-<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue after <em>central</em></li>
+<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue before <em>central</em></li>
+<li><strong>central</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue for which torsion angles will be drawn</li>
+<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue after <em>central</em></li>
 </ul>
 </td>
 </tr>
@@ -291,9 +291,9 @@ standard amino acid</td>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue before <em>central</em></li>
-<li><strong>central</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue for which the <em>phi</em> will be drawn</li>
-<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue after <em>central</em></li>
+<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue before <em>central</em></li>
+<li><strong>central</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue for which the <em>phi</em> will be drawn</li>
+<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue after <em>central</em></li>
 <li><strong>psi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; <em>psi</em> angle</li>
 </ul>
 </td>
@@ -335,9 +335,9 @@ standard amino acid</td>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue before <em>central</em></li>
-<li><strong>central</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue for which the <em>psi</em> angle will be drawn</li>
-<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue after <em>central</em></li>
+<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue before <em>central</em></li>
+<li><strong>central</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue for which the <em>psi</em> angle will be drawn</li>
+<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue after <em>central</em></li>
 <li><strong>phi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; <em>phi</em> angle</li>
 </ul>
 </td>
@@ -379,9 +379,9 @@ standard amino acid</td>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue before <em>central</em></li>
-<li><strong>central</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue for which the probability is calculated.</li>
-<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue after <em>central</em></li>
+<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue before <em>central</em></li>
+<li><strong>central</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue for which the probability is calculated.</li>
+<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue after <em>central</em></li>
 <li><strong>phi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; phi angle</li>
 <li><strong>psi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; psi angle</li>
 </ul>
@@ -425,9 +425,9 @@ standard amino acid</td>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue before <em>central</em></li>
-<li><strong>central</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue for which the probability is calculated.</li>
-<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue after <em>central</em></li>
+<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue before <em>central</em></li>
+<li><strong>central</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue for which the probability is calculated.</li>
+<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue after <em>central</em></li>
 <li><strong>phi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; phi angle</li>
 <li><strong>psi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; psi angle</li>
 </ul>
@@ -449,9 +449,9 @@ standard amino acid</td>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue before <em>central</em></li>
-<li><strong>central</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue for which the probability is calculated.</li>
-<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue after <em>central</em></li>
+<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue before <em>central</em></li>
+<li><strong>central</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue for which the probability is calculated.</li>
+<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; id of the residue after <em>central</em></li>
 <li><strong>psi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; phi angle</li>
 <li><strong>phi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; psi angle</li>
 </ul>
@@ -590,7 +590,7 @@ standard amino acid</td>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/modelling/algorithms.html b/doc/html/modelling/algorithms.html
index bc65d5f6..2070e317 100644
--- a/doc/html/modelling/algorithms.html
+++ b/doc/html/modelling/algorithms.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Modelling Algorithms &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Modelling Algorithms &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="modelling - Protein Modelling" href="index.html" />
     <link rel="next" title="sidechain - Sidechain Modelling" href="../sidechain/index.html" />
     <link rel="prev" title="Sidechain Reconstruction" href="sidechain_reconstruction.html" />
@@ -95,7 +95,7 @@ of the solutions</li>
 indices of the common subsets (rigid blocks) relative
 to the input <a class="reference internal" href="../loop/backbone.html#promod3.loop.BackboneList" title="promod3.loop.BackboneList"><code class="xref py py-class docutils literal"><span class="pre">promod3.loop.BackboneList</span></code></a> objects
 and the second element being a <code class="xref py py-class docutils literal"><span class="pre">list</span></code> of
-<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a> defining the transformations to
+<a class="reference external" href="https://www.openstructure.org/docs/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a> defining the transformations to
 superpose the according positions in <strong>bb_list_one</strong>
 onto <strong>bb_list_two</strong></p>
 </td>
@@ -113,7 +113,7 @@ onto <strong>bb_list_two</strong></p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>aln</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.AlignmentHandle</span></code></a>) &#8211; An alignment with attached <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityView</span></code></a>
+<li><strong>aln</strong> (<a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.AlignmentHandle</span></code></a>) &#8211; An alignment with attached <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityView</span></code></a>
 objects from which the positions are extracted</li>
 <li><strong>seq_idx_one</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; The idx of the first sequence from which the CA
 positions will be extracted</li>
@@ -134,9 +134,9 @@ of the solutions</li>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last"><code class="xref py py-class docutils literal"><span class="pre">tuple</span></code> with the first element being a
 <code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <code class="xref py py-class docutils literal"><span class="pre">list</span></code> defining the
 column indices of the common subsets (rigid blocks)
-relative to the input <a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.AlignmentHandle</span></code></a>
+relative to the input <a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.AlignmentHandle</span></code></a>
 and the second element being a <code class="xref py py-class docutils literal"><span class="pre">list</span></code> of
-<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a> defining the transformations to
+<a class="reference external" href="https://www.openstructure.org/docs/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a> defining the transformations to
 superpose the according positions from the first
 sequence onto the second sequence.</p>
 </td>
@@ -173,7 +173,7 @@ of the solutions</li>
 indices of the common subsets (rigid blocks) relative
 to the input <code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3List</span></code> objects
 and the second element being a <code class="xref py py-class docutils literal"><span class="pre">list</span></code> of
-<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a> defining the transformations to
+<a class="reference external" href="https://www.openstructure.org/docs/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a> defining the transformations to
 superpose the according positions in <strong>pos_one</strong>
 onto <strong>pos_two</strong></p>
 </td>
@@ -191,7 +191,7 @@ as well as a convenient function to combine the functionalities into an
 example pipeline.</p>
 <dl class="class">
 <dt id="promod3.modelling.FraggerHandle">
-<em class="property">class </em><code class="descclassname">promod3.modelling.</code><code class="descname">FraggerHandle</code><span class="sig-paren">(</span><em>sequence</em>, <em>profile=None</em>, <em>psipred_pred=None</em>, <em>fragment_length=9</em>, <em>fragments_per_position=100</em>, <em>rmsd_thresh=0.0</em>, <em>structure_db=None</em>, <em>torsion_sampler_coil=None</em>, <em>torsion_sampler_helix=None</em>, <em>torsion_sampler_extended=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_fragger_handle.html#FraggerHandle"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.FraggerHandle" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">promod3.modelling.</code><code class="descname">FraggerHandle</code><span class="sig-paren">(</span><em>sequence</em>, <em>profile=None</em>, <em>psipred_pred=None</em>, <em>fragment_length=9</em>, <em>fragments_per_position=100</em>, <em>rmsd_thresh=0.0</em>, <em>structure_db=None</em>, <em>torsion_sampler_coil=None</em>, <em>torsion_sampler_helix=None</em>, <em>torsion_sampler_extended=None</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.FraggerHandle" title="Permalink to this definition">¶</a></dt>
 <dd><p>Handler for <a class="reference internal" href="../loop/structure_db.html#promod3.loop.Fragger" title="promod3.loop.Fragger"><code class="xref py py-class docutils literal"><span class="pre">Fragger</span></code></a> objects linked to a 
 specific chain.</p>
 <p>Tries to get the most accurate fragments given your input.
@@ -236,8 +236,8 @@ Weird things are happening otherwise.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>sequence</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>/<a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a>) &#8211; SEQRES for this chain</li>
-<li><strong>profile</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; Sequence profile for this chain.</li>
+<li><strong>sequence</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>/<a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a>) &#8211; SEQRES for this chain</li>
+<li><strong>profile</strong> (<a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; Sequence profile for this chain.</li>
 <li><strong>psipred_pred</strong> (<a class="reference internal" href="../loop/structure_db.html#promod3.loop.PsipredPrediction" title="promod3.loop.PsipredPrediction"><code class="xref py py-class docutils literal"><span class="pre">promod3.loop.PsipredPrediction</span></code></a>) &#8211; Psipred prediction for this chain.</li>
 <li><strong>fragment_length</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Length (num. residues) of fragments to be extracted.</li>
 <li><strong>fragments_per_position</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Number of fragments to be extracted at each
@@ -255,13 +255,13 @@ at a given position will have RMSD below <cite>rmsd_thresh</cite>.</li>
 </table>
 <dl class="method">
 <dt id="promod3.modelling.FraggerHandle.Get">
-<code class="descname">Get</code><span class="sig-paren">(</span><em>frag_pos</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_fragger_handle.html#FraggerHandle.Get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.FraggerHandle.Get" title="Permalink to this definition">¶</a></dt>
+<code class="descname">Get</code><span class="sig-paren">(</span><em>frag_pos</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.FraggerHandle.Get" title="Permalink to this definition">¶</a></dt>
 <dd><p>Get fragger for sequence at index frag_pos..frag_pos+frag_length-1.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>frag_pos</strong> (<em>:class`int`</em>) &#8211; Start-index (note that sequence-indexing starts at 0)</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>frag_pos</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Start-index (note that sequence-indexing starts at 0)</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">A <code class="xref py py-class docutils literal"><span class="pre">Fragger</span></code> object.</td>
 </tr>
@@ -273,7 +273,7 @@ at a given position will have RMSD below <cite>rmsd_thresh</cite>.</li>
 
 <dl class="method">
 <dt id="promod3.modelling.FraggerHandle.GetList">
-<code class="descname">GetList</code><span class="sig-paren">(</span><em>pos_start=0</em>, <em>pos_end=-1</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_fragger_handle.html#FraggerHandle.GetList"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.FraggerHandle.GetList" title="Permalink to this definition">¶</a></dt>
+<code class="descname">GetList</code><span class="sig-paren">(</span><em>pos_start=0</em>, <em>pos_end=-1</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.FraggerHandle.GetList" title="Permalink to this definition">¶</a></dt>
 <dd><p>Get List of fraggers covering sequence indices pos_start..pos_end.</p>
 <p>This will return an empty list if range is smaller than fragment_length.</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -281,8 +281,8 @@ at a given position will have RMSD below <cite>rmsd_thresh</cite>.</li>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>pos_start</strong> (<em>:class`int`</em>) &#8211; Start-index (note that sequence-indexing starts at 0)</li>
-<li><strong>pos_end</strong> (<em>:class`int`</em>) &#8211; End-index or -1 if it should go to the sequence-end.</li>
+<li><strong>pos_start</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Start-index (note that sequence-indexing starts at 0)</li>
+<li><strong>pos_end</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; End-index or -1 if it should go to the sequence-end.</li>
 </ul>
 </td>
 </tr>
@@ -298,7 +298,7 @@ at a given position will have RMSD below <cite>rmsd_thresh</cite>.</li>
 
 <dl class="method">
 <dt id="promod3.modelling.FraggerHandle.LoadCached">
-<code class="descname">LoadCached</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_fragger_handle.html#FraggerHandle.LoadCached"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.FraggerHandle.LoadCached" title="Permalink to this definition">¶</a></dt>
+<code class="descname">LoadCached</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.FraggerHandle.LoadCached" title="Permalink to this definition">¶</a></dt>
 <dd><p>Load fragger objects stored with <a class="reference internal" href="#promod3.modelling.FraggerHandle.SaveCached" title="promod3.modelling.FraggerHandle.SaveCached"><code class="xref py py-meth docutils literal"><span class="pre">SaveCached()</span></code></a>.
 Note that here we require that the same structure db is set as was
 used when <cite>filename</cite> was saved.</p>
@@ -306,7 +306,7 @@ used when <cite>filename</cite> was saved.</p>
 
 <dl class="method">
 <dt id="promod3.modelling.FraggerHandle.SaveCached">
-<code class="descname">SaveCached</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_fragger_handle.html#FraggerHandle.SaveCached"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.FraggerHandle.SaveCached" title="Permalink to this definition">¶</a></dt>
+<code class="descname">SaveCached</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.FraggerHandle.SaveCached" title="Permalink to this definition">¶</a></dt>
 <dd><p>Save cached fraggers.</p>
 </dd></dl>
 
@@ -314,7 +314,7 @@ used when <cite>filename</cite> was saved.</p>
 
 <dl class="function">
 <dt id="promod3.modelling.GenerateDeNovoTrajectories">
-<code class="descclassname">promod3.modelling.</code><code class="descname">GenerateDeNovoTrajectories</code><span class="sig-paren">(</span><em>sequence</em>, <em>num_trajectories=200</em>, <em>avg_sampling_per_position=600</em>, <em>profile=None</em>, <em>psipred_prediction=None</em>, <em>fragment_handler=None</em>, <em>scorer=None</em>, <em>scorer_env=None</em>, <em>scoring_weights=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_denovo.html#GenerateDeNovoTrajectories"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.GenerateDeNovoTrajectories" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">GenerateDeNovoTrajectories</code><span class="sig-paren">(</span><em>sequence</em>, <em>num_trajectories=200</em>, <em>avg_sampling_per_position=600</em>, <em>profile=None</em>, <em>psipred_prediction=None</em>, <em>fragment_handler=None</em>, <em>scorer=None</em>, <em>scorer_env=None</em>, <em>scoring_weights=None</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.GenerateDeNovoTrajectories" title="Permalink to this definition">¶</a></dt>
 <dd><p>Example de novo modelling pipeline based on Fragment sampling and
 backbone scoring. Take this as a starting point for more advanced
 de novo procedures.</p>
@@ -329,7 +329,7 @@ want to generate</li>
 <li><strong>avg_sampling_per_position</strong> &#8211; Number of Monte Carlo sampling steps
 the total number is: 
 len(<strong>sequence</strong>) * <strong>avg_sampling_per_position</strong></li>
-<li><strong>profile</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; The sequence profile for <strong>sequence</strong>. This increases the 
+<li><strong>profile</strong> (<a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; The sequence profile for <strong>sequence</strong>. This increases the 
 fragment search performance.</li>
 <li><strong>psipred_prediction</strong> (<a class="reference internal" href="../loop/structure_db.html#promod3.loop.PsipredPrediction" title="promod3.loop.PsipredPrediction"><code class="xref py py-class docutils literal"><span class="pre">promod3.loop.PsipredPrediction</span></code></a>) &#8211; The psipred prediction for <strong>sequence</strong>. This
 increases the fragment search performance</li>
@@ -412,7 +412,7 @@ with the keys of the scores in <strong>scorer</strong></li>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/modelling/gap_handling.html b/doc/html/modelling/gap_handling.html
index d273996b..5d52d66e 100644
--- a/doc/html/modelling/gap_handling.html
+++ b/doc/html/modelling/gap_handling.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Handling Gaps &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Handling Gaps &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="modelling - Protein Modelling" href="index.html" />
     <link rel="next" title="Handling Loop Candidates" href="loop_candidates.html" />
     <link rel="prev" title="Model Checking" href="model_checking.html" />
@@ -61,8 +61,8 @@ invalid residue handles to <cite>before</cite> or <cite>after</cite>.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Fills <a class="reference internal" href="#promod3.modelling.StructuralGap.before" title="promod3.modelling.StructuralGap.before"><code class="xref py py-attr docutils literal"><span class="pre">before</span></code></a></li>
-<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Fills <a class="reference internal" href="#promod3.modelling.StructuralGap.after" title="promod3.modelling.StructuralGap.after"><code class="xref py py-attr docutils literal"><span class="pre">after</span></code></a></li>
+<li><strong>before</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Fills <a class="reference internal" href="#promod3.modelling.StructuralGap.before" title="promod3.modelling.StructuralGap.before"><code class="xref py py-attr docutils literal"><span class="pre">before</span></code></a></li>
+<li><strong>after</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Fills <a class="reference internal" href="#promod3.modelling.StructuralGap.after" title="promod3.modelling.StructuralGap.after"><code class="xref py py-attr docutils literal"><span class="pre">after</span></code></a></li>
 <li><strong>seq</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; Fills <a class="reference internal" href="#promod3.modelling.StructuralGap.seq" title="promod3.modelling.StructuralGap.seq"><code class="xref py py-attr docutils literal"><span class="pre">seq</span></code></a></li>
 </ul>
 </td>
@@ -117,7 +117,7 @@ are valid and:</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Chain, the gap is belonging to</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ChainHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ChainHandle</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ChainHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ChainHandle</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -268,13 +268,13 @@ extend the gap past another gap.</p>
 <dl class="attribute">
 <dt id="promod3.modelling.StructuralGap.before">
 <code class="descname">before</code><a class="headerlink" href="#promod3.modelling.StructuralGap.before" title="Permalink to this definition">¶</a></dt>
-<dd><p>Residue before the gap (read-only, <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>)</p>
+<dd><p>Residue before the gap (read-only, <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>)</p>
 </dd></dl>
 
 <dl class="attribute">
 <dt id="promod3.modelling.StructuralGap.after">
 <code class="descname">after</code><a class="headerlink" href="#promod3.modelling.StructuralGap.after" title="Permalink to this definition">¶</a></dt>
-<dd><p>Residue after the gap (read-only, <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>)</p>
+<dd><p>Residue after the gap (read-only, <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>)</p>
 </dd></dl>
 
 <dl class="attribute">
@@ -319,7 +319,7 @@ False if no new extension possible.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>gap</strong> (<a class="reference internal" href="#promod3.modelling.StructuralGap" title="promod3.modelling.StructuralGap"><code class="xref py py-class docutils literal"><span class="pre">StructuralGap</span></code></a>) &#8211; The gap which will be extended by <a class="reference internal" href="#promod3.modelling.GapExtender.Extend" title="promod3.modelling.GapExtender.Extend"><code class="xref py py-meth docutils literal"><span class="pre">Extend()</span></code></a>.</li>
-<li><strong>seqres</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a>) &#8211; The full sequence of the chain, the gap is associated with.</li>
+<li><strong>seqres</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a>) &#8211; The full sequence of the chain, the gap is associated with.</li>
 </ul>
 </td>
 </tr>
@@ -360,7 +360,7 @@ valid termini.</td>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>gap</strong> (<a class="reference internal" href="#promod3.modelling.StructuralGap" title="promod3.modelling.StructuralGap"><code class="xref py py-class docutils literal"><span class="pre">StructuralGap</span></code></a>) &#8211; The gap which will be extended by <a class="reference internal" href="#promod3.modelling.FullGapExtender.Extend" title="promod3.modelling.FullGapExtender.Extend"><code class="xref py py-meth docutils literal"><span class="pre">Extend()</span></code></a>.</li>
-<li><strong>seqres</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a>) &#8211; The full sequence of the chain, the gap is associated with.</li>
+<li><strong>seqres</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a>) &#8211; The full sequence of the chain, the gap is associated with.</li>
 <li><strong>max_length</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; <ul>
 <li>If -1, all possible non-terminal gaps are returned.</li>
 <li>If &gt;= 0, this restricts the max. gap-length
@@ -413,7 +413,7 @@ score = num_gap_extensions * <cite>extension_penalty</cite> + sum( <cite>penalti
 <li><strong>gap</strong> (<a class="reference internal" href="#promod3.modelling.StructuralGap" title="promod3.modelling.StructuralGap"><code class="xref py py-class docutils literal"><span class="pre">StructuralGap</span></code></a>) &#8211; The gap which will be extended by <a class="reference internal" href="#promod3.modelling.ScoringGapExtender.Extend" title="promod3.modelling.ScoringGapExtender.Extend"><code class="xref py py-meth docutils literal"><span class="pre">Extend()</span></code></a>.</li>
 <li><strong>extension_penalty</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Penalty for length of gap.</li>
 <li><strong>penalties</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Penalty for each residue added to gap.</li>
-<li><strong>seqres</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a>) &#8211; The full sequence of the chain, the gap is associated with.</li>
+<li><strong>seqres</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a>) &#8211; The full sequence of the chain, the gap is associated with.</li>
 <li><strong>max_length</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; <ul>
 <li>If -2, <a class="reference internal" href="#promod3.modelling.GapExtender" title="promod3.modelling.GapExtender"><code class="xref py py-class docutils literal"><span class="pre">GapExtender</span></code></a> is used instead of <a class="reference internal" href="#promod3.modelling.FullGapExtender" title="promod3.modelling.FullGapExtender"><code class="xref py py-class docutils literal"><span class="pre">FullGapExtender</span></code></a>
 (i.e. it stops at gaps and termini).</li>
@@ -653,7 +653,7 @@ gaps of different chains or an N-terminal gap with a C-terminal gap.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/modelling/index.html b/doc/html/modelling/index.html
index a3ac0b9c..d23c5cba 100644
--- a/doc/html/modelling/index.html
+++ b/doc/html/modelling/index.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>modelling - Protein Modelling &mdash; ProMod3 1.3.0 documentation</title>
+    <title>modelling - Protein Modelling &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="Documentation For Users" href="../users.html" />
     <link rel="next" title="Modelling Pipeline" href="pipeline.html" />
     <link rel="prev" title="Singularity" href="../container/singularity.html" />
@@ -158,7 +158,7 @@ a model fully automatically as follows:</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/modelling/loop_candidates.html b/doc/html/modelling/loop_candidates.html
index de65ccf2..2c2ed901 100644
--- a/doc/html/modelling/loop_candidates.html
+++ b/doc/html/modelling/loop_candidates.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Handling Loop Candidates &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Handling Loop Candidates &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="modelling - Protein Modelling" href="index.html" />
     <link rel="next" title="Fitting Loops Into Gaps" href="loop_closing.html" />
     <link rel="prev" title="Handling Gaps" href="gap_handling.html" />
@@ -133,8 +133,8 @@ a fragment database.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; The residue at the N-terminal end of the loop</li>
-<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; The residue at the C-terminal end of the loop</li>
+<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; The residue at the N-terminal end of the loop</li>
+<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; The residue at the C-terminal end of the loop</li>
 <li><strong>seq</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; The sequence of residues to be added including the
 <em>n_stem</em> and <em>c_stem</em></li>
 <li><strong>frag_db</strong> (<a class="reference internal" href="../loop/structure_db.html#promod3.loop.FragDB" title="promod3.loop.FragDB"><code class="xref py py-class docutils literal"><span class="pre">FragDB</span></code></a>) &#8211; The fragment database</li>
@@ -245,9 +245,9 @@ not depending on a metropolis criterium.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the n-stem positions every candidate
+<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the n-stem positions every candidate
 should match. See <a class="reference internal" href="loop_closing.html#promod3.modelling.CCD.CCD" title="promod3.modelling.CCD.CCD"><code class="xref py py-meth docutils literal"><span class="pre">CCD()</span></code></a>.</li>
-<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the c-stem positions every candidate
+<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the c-stem positions every candidate
 should match. See <a class="reference internal" href="loop_closing.html#promod3.modelling.CCD.CCD" title="promod3.modelling.CCD.CCD"><code class="xref py py-meth docutils literal"><span class="pre">CCD()</span></code></a>.</li>
 <li><strong>torsion_sampler</strong> (<a class="reference internal" href="../loop/torsion_sampler.html#promod3.loop.TorsionSampler" title="promod3.loop.TorsionSampler"><code class="xref py py-class docutils literal"><span class="pre">TorsionSampler</span></code></a> / <code class="xref py py-class docutils literal"><span class="pre">list</span></code>
 of <a class="reference internal" href="../loop/torsion_sampler.html#promod3.loop.TorsionSampler" title="promod3.loop.TorsionSampler"><code class="xref py py-class docutils literal"><span class="pre">TorsionSampler</span></code></a>) &#8211; A torsion sampler (used for all residues) or a list
@@ -289,9 +289,9 @@ candidate. This leads to an increase in number of loops.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the n-stem positions every candidate
+<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the n-stem positions every candidate
 should match</li>
-<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the c-stem positions every candidate
+<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the c-stem positions every candidate
 should match</li>
 <li><strong>pivot_one</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; First pivot residue</li>
 <li><strong>pivot_two</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Second pivot residue</li>
@@ -365,7 +365,7 @@ anything is raised when calculating the scores.</p>
 <code class="descname">CalculateStructureProfileScores</code><span class="sig-paren">(</span><em>score_container</em>, <em>structure_db</em>, <em>prof</em>, <em>offset=0</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.LoopCandidates.CalculateStructureProfileScores" title="Permalink to this definition">¶</a></dt>
 <dd><p>Calculates a score comparing the given profile <em>prof</em> starting at <em>offset</em>
 with the sequence / structure profile of each candidate as extracted from
-<em>structure_db</em> (see <a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle.GetAverageScore" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.seq.ProfileHandle.GetAverageScore()</span></code></a> for
+<em>structure_db</em> (see <a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileHandle.GetAverageScore" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.seq.ProfileHandle.GetAverageScore()</span></code></a> for
 details, <em>prof.null_model</em> is used for weighting).</p>
 <p>Note that for profile scores a higher &#8220;score&#8221; is better! So take care when
 combining this to other scores, where it is commonly the other way around.</p>
@@ -381,7 +381,7 @@ with this DB).</p>
 <li><strong>score_container</strong> (<a class="reference internal" href="#promod3.modelling.ScoreContainer" title="promod3.modelling.ScoreContainer"><code class="xref py py-class docutils literal"><span class="pre">ScoreContainer</span></code></a>) &#8211; Add scores to this score container using the default
 key name defined in <a class="reference internal" href="#promod3.modelling.ScoringWeights" title="promod3.modelling.ScoringWeights"><code class="xref py py-class docutils literal"><span class="pre">ScoringWeights</span></code></a></li>
 <li><strong>structural_db</strong> (<a class="reference internal" href="../loop/structure_db.html#promod3.loop.StructureDB" title="promod3.loop.StructureDB"><code class="xref py py-class docutils literal"><span class="pre">StructureDB</span></code></a>) &#8211; Structural database used in <a class="reference internal" href="#promod3.modelling.LoopCandidates.FillFromDatabase" title="promod3.modelling.LoopCandidates.FillFromDatabase"><code class="xref py py-meth docutils literal"><span class="pre">FillFromDatabase()</span></code></a></li>
-<li><strong>prof</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; Profile information for target.</li>
+<li><strong>prof</strong> (<a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; Profile information for target.</li>
 <li><strong>offset</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Loop starts at index <em>offset</em> in <em>prof</em>.</li>
 </ul>
 </td>
@@ -413,8 +413,8 @@ positions and the corresponding atoms in <em>c_stem</em>.</p>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>score_container</strong> (<a class="reference internal" href="#promod3.modelling.ScoreContainer" title="promod3.modelling.ScoreContainer"><code class="xref py py-class docutils literal"><span class="pre">ScoreContainer</span></code></a>) &#8211; Add scores to this score container using the default
 key name defined in <a class="reference internal" href="#promod3.modelling.ScoringWeights" title="promod3.modelling.ScoringWeights"><code class="xref py py-class docutils literal"><span class="pre">ScoringWeights</span></code></a></li>
-<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; The residue at the N-terminal end of the loop.</li>
-<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; The residue at the C-terminal end of the loop.</li>
+<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; The residue at the N-terminal end of the loop.</li>
+<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; The residue at the C-terminal end of the loop.</li>
 </ul>
 </td>
 </tr>
@@ -1140,7 +1140,7 @@ scoring routines, <a class="reference internal" href="#promod3.modelling.ScoreCo
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/modelling/loop_closing.html b/doc/html/modelling/loop_closing.html
index 52ebde20..b80eab62 100644
--- a/doc/html/modelling/loop_closing.html
+++ b/doc/html/modelling/loop_closing.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Fitting Loops Into Gaps &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Fitting Loops Into Gaps &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="modelling - Protein Modelling" href="index.html" />
     <link rel="next" title="Generating Loops De Novo" href="monte_carlo.html" />
     <link rel="prev" title="Handling Loop Candidates" href="loop_candidates.html" />
@@ -84,11 +84,11 @@ to avoid moving into unfavourable regions of the backbone dihedrals.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>sequence</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; Sequence of the backbones to be closed</li>
-<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the n_stem.
+<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the n_stem.
 If the residue before <em>n_stem</em> doesn&#8217;t exist, the
 torsion sampler will use a default residue (ALA) and
 and phi angle (-1.0472) to evaluate the first angle.</li>
-<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the c_stem.
+<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the c_stem.
 If the residue after <em>c_stem</em> doesn&#8217;t exist, the
 torsion sampler will use a default residue (ALA) and
 psi angle (-0.7854) to evaluate the last angle.</li>
@@ -125,8 +125,8 @@ This is faster but might lead to weird backbone dihedral pairs.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the n_stem</li>
-<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the c_stem</li>
+<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the n_stem</li>
+<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue defining the c_stem</li>
 <li><strong>max_steps</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Maximal number of iterations</li>
 <li><strong>rmsd_cutoff</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; The algorithm stops as soon as the c_stem of the loop to
 be  closed has RMSD below the given <em>c_stem</em></li>
@@ -327,7 +327,7 @@ size or sequence as the initial one.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>idx</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Idx of residue</li>
-<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Restraint Position (in Angstrom)</li>
+<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Restraint Position (in Angstrom)</li>
 <li><strong>force_constant</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Force constant in kJ/mol/nm^2</li>
 </ul>
 </td>
@@ -349,7 +349,7 @@ size or sequence as the initial one.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>idx</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Idx of residue</li>
-<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Restraint Position (in Angstrom)</li>
+<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Restraint Position (in Angstrom)</li>
 <li><strong>force_constant</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Force constant in kJ/mol/nm^2</li>
 </ul>
 </td>
@@ -372,7 +372,7 @@ doesn&#8217;t do anything if specified residue is a glycine</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>idx</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Idx of residue</li>
-<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Restraint Position (in Angstrom)</li>
+<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Restraint Position (in Angstrom)</li>
 <li><strong>force_constant</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Force constant in kJ/mol/nm^2</li>
 </ul>
 </td>
@@ -394,7 +394,7 @@ doesn&#8217;t do anything if specified residue is a glycine</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>idx</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Idx of residue</li>
-<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Restraint Position (in Angstrom)</li>
+<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Restraint Position (in Angstrom)</li>
 <li><strong>force_constant</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Force constant in kJ/mol/nm^2</li>
 </ul>
 </td>
@@ -416,7 +416,7 @@ doesn&#8217;t do anything if specified residue is a glycine</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>idx</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Idx of residue</li>
-<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Restraint Position (in Angstrom)</li>
+<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Restraint Position (in Angstrom)</li>
 <li><strong>force_constant</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Force constant in kJ/mol/nm^2</li>
 </ul>
 </td>
@@ -643,7 +643,7 @@ the one given in the constructor.</td>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/modelling/model_checking.html b/doc/html/modelling/model_checking.html
index 906b67d1..7c4a7a84 100644
--- a/doc/html/modelling/model_checking.html
+++ b/doc/html/modelling/model_checking.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Model Checking &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Model Checking &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="modelling - Protein Modelling" href="index.html" />
     <link rel="next" title="Handling Gaps" href="gap_handling.html" />
     <link rel="prev" title="Modelling Pipeline" href="pipeline.html" />
@@ -50,7 +50,7 @@ functionality is used within the modelling pipeline.</p>
 <h2>Detecting Ring Punches<a class="headerlink" href="#detecting-ring-punches" title="Permalink to this headline">¶</a></h2>
 <dl class="function">
 <dt id="promod3.modelling.GetRings">
-<code class="descclassname">promod3.modelling.</code><code class="descname">GetRings</code><span class="sig-paren">(</span><em>ent</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_ring_punches.html#GetRings"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.GetRings" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">GetRings</code><span class="sig-paren">(</span><em>ent</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.GetRings" title="Permalink to this definition">¶</a></dt>
 <dd><p>Get rings for a protein structure.
 A ring is only added if all ring-atoms exist or if it is a proline and
 three of the atoms exist (center and radii are estimated then).</p>
@@ -58,14 +58,14 @@ three of the atoms exist (center and radii are estimated then).</p>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>ent</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a> or <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityView</span></code></a>) &#8211; Structure for which to detect rings.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>ent</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a> or <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityView</span></code></a>) &#8211; Structure for which to detect rings.</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><code class="xref py py-class docutils literal"><span class="pre">list</span></code> of rings to perform ring checks. Each ring is a named
 tuple with:
-center (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>),
-plane (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/composite/#ost.geom.Plane" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Plane</span></code></a>),
+center (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>),
+plane (<a class="reference external" href="https://www.openstructure.org/docs/geom/composite/#ost.geom.Plane" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Plane</span></code></a>),
 radius (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>),
-residue (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ResidueHandle</span></code></a>).</td>
+residue (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ResidueHandle</span></code></a>).</td>
 </tr>
 </tbody>
 </table>
@@ -73,7 +73,7 @@ residue (<a class="reference external" href="https://www.openstructure.org/docs/
 
 <dl class="function">
 <dt id="promod3.modelling.GetRingPunches">
-<code class="descclassname">promod3.modelling.</code><code class="descname">GetRingPunches</code><span class="sig-paren">(</span><em>rings</em>, <em>ent</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_ring_punches.html#GetRingPunches"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.GetRingPunches" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">GetRingPunches</code><span class="sig-paren">(</span><em>rings</em>, <em>ent</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.GetRingPunches" title="Permalink to this definition">¶</a></dt>
 <dd><p>Get list of residues with rings that are punched by the given structure.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -81,11 +81,11 @@ residue (<a class="reference external" href="https://www.openstructure.org/docs/
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>rings</strong> &#8211; List of rings as provided by <a class="reference internal" href="#promod3.modelling.GetRings" title="promod3.modelling.GetRings"><code class="xref py py-func docutils literal"><span class="pre">GetRings()</span></code></a>.</li>
-<li><strong>ent</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a> or <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityView</span></code></a>) &#8211; Structure for which to detect punches.</li>
+<li><strong>ent</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a> or <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityView</span></code></a>) &#8211; Structure for which to detect punches.</li>
 </ul>
 </td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last"><code class="xref py py-class docutils literal"><span class="pre">list</span></code> of residues (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ResidueHandle</span></code></a>) which
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last"><code class="xref py py-class docutils literal"><span class="pre">list</span></code> of residues (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ResidueHandle</span></code></a>) which
 have a punched ring.</p>
 </td>
 </tr>
@@ -95,7 +95,7 @@ have a punched ring.</p>
 
 <dl class="function">
 <dt id="promod3.modelling.HasRingPunches">
-<code class="descclassname">promod3.modelling.</code><code class="descname">HasRingPunches</code><span class="sig-paren">(</span><em>rings</em>, <em>ent</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_ring_punches.html#HasRingPunches"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.HasRingPunches" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">HasRingPunches</code><span class="sig-paren">(</span><em>rings</em>, <em>ent</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.HasRingPunches" title="Permalink to this definition">¶</a></dt>
 <dd><p>Check if any ring is punched by the given structure.
 This check is faster than using <a class="reference internal" href="#promod3.modelling.GetRingPunches" title="promod3.modelling.GetRingPunches"><code class="xref py py-func docutils literal"><span class="pre">GetRingPunches()</span></code></a>.</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -104,7 +104,7 @@ This check is faster than using <a class="reference internal" href="#promod3.mod
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>rings</strong> &#8211; List of rings as provided by <a class="reference internal" href="#promod3.modelling.GetRings" title="promod3.modelling.GetRings"><code class="xref py py-func docutils literal"><span class="pre">GetRings()</span></code></a>.</li>
-<li><strong>ent</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a> or <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityView</span></code></a>) &#8211; Structure for which to detect punches.</li>
+<li><strong>ent</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a> or <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityView</span></code></a>) &#8211; Structure for which to detect punches.</li>
 </ul>
 </td>
 </tr>
@@ -120,7 +120,7 @@ This check is faster than using <a class="reference internal" href="#promod3.mod
 
 <dl class="function">
 <dt id="promod3.modelling.FilterCandidates">
-<code class="descclassname">promod3.modelling.</code><code class="descname">FilterCandidates</code><span class="sig-paren">(</span><em>candidates</em>, <em>model</em>, <em>gap</em>, <em>orig_indices=[]</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_ring_punches.html#FilterCandidates"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.FilterCandidates" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">FilterCandidates</code><span class="sig-paren">(</span><em>candidates</em>, <em>model</em>, <em>gap</em>, <em>orig_indices=[]</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.FilterCandidates" title="Permalink to this definition">¶</a></dt>
 <dd><p>Remove loop candidates if they cause ring punches.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -129,7 +129,7 @@ This check is faster than using <a class="reference internal" href="#promod3.mod
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
 <li><strong>candidates</strong> (<code class="xref py py-class docutils literal"><span class="pre">LoopCandidates</span></code>) &#8211; Loop candidates meant to fill <em>gap</em> within <em>model</em>.
 Offending candidates are removed from this list.</li>
-<li><strong>model</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a>) &#8211; Model for which loop is to be filled.</li>
+<li><strong>model</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a>) &#8211; Model for which loop is to be filled.</li>
 <li><strong>gap</strong> (<a class="reference internal" href="gap_handling.html#promod3.modelling.StructuralGap" title="promod3.modelling.StructuralGap"><code class="xref py py-class docutils literal"><span class="pre">StructuralGap</span></code></a>.) &#8211; Gap for which loop is to be filled.</li>
 <li><strong>orig_indices</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code>) &#8211; Mapping to old indexing of candidates. If given, it
 must have as many elements as <em>candidates</em>.</li>
@@ -142,7 +142,7 @@ must have as many elements as <em>candidates</em>.</li>
 
 <dl class="function">
 <dt id="promod3.modelling.FilterCandidatesWithSC">
-<code class="descclassname">promod3.modelling.</code><code class="descname">FilterCandidatesWithSC</code><span class="sig-paren">(</span><em>candidates</em>, <em>model</em>, <em>gap</em>, <em>orig_indices=[]</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_ring_punches.html#FilterCandidatesWithSC"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.FilterCandidatesWithSC" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">FilterCandidatesWithSC</code><span class="sig-paren">(</span><em>candidates</em>, <em>model</em>, <em>gap</em>, <em>orig_indices=[]</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.FilterCandidatesWithSC" title="Permalink to this definition">¶</a></dt>
 <dd><p>Remove loop candidates if they (with sidechain) cause ring punches.
 See <a class="reference internal" href="#promod3.modelling.FilterCandidates" title="promod3.modelling.FilterCandidates"><code class="xref py py-func docutils literal"><span class="pre">FilterCandidates()</span></code></a>.</p>
 </dd></dl>
@@ -152,7 +152,7 @@ See <a class="reference internal" href="#promod3.modelling.FilterCandidates" tit
 <h2>Model Checking With MolProbity<a class="headerlink" href="#model-checking-with-molprobity" title="Permalink to this headline">¶</a></h2>
 <dl class="function">
 <dt id="promod3.modelling.RunMolProbity">
-<code class="descclassname">promod3.modelling.</code><code class="descname">RunMolProbity</code><span class="sig-paren">(</span><em>target_pdb</em>, <em>molprobity_bin=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_molprobity.html#RunMolProbity"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.RunMolProbity" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">RunMolProbity</code><span class="sig-paren">(</span><em>target_pdb</em>, <em>molprobity_bin=None</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.RunMolProbity" title="Permalink to this definition">¶</a></dt>
 <dd><p>Run <code class="docutils literal"><span class="pre">MolProbity</span></code> from <code class="docutils literal"><span class="pre">Phenix</span></code> on a given PDB file.</p>
 <p>MolProbity score computation: (formula from molprobity source code)</p>
 <div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">clashscore</span> <span class="o">=</span> <span class="n">result</span><span class="p">[</span><span class="s2">&quot;Clashscore&quot;</span><span class="p">]</span>
@@ -194,7 +194,7 @@ with <code class="docutils literal"><span class="pre">MolProbity</span> <span cl
 <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first"><a class="reference external" href="https://docs.python.org/2.7/library/stdtypes.html#dict" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">dict</span></code></a></p>
 </td>
 </tr>
-<tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://www.openstructure.org/docs/dev/base/settings/#ost.settings.FileNotFound" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">FileNotFound</span></code></a> if the &#8220;phenix.molprobity&#8221;
+<tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://www.openstructure.org/docs/base/settings/#ost.settings.FileNotFound" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">FileNotFound</span></code></a> if the &#8220;phenix.molprobity&#8221;
 executable is not found.</p>
 </td>
 </tr>
@@ -204,14 +204,14 @@ executable is not found.</p>
 
 <dl class="function">
 <dt id="promod3.modelling.RunMolProbityEntity">
-<code class="descclassname">promod3.modelling.</code><code class="descname">RunMolProbityEntity</code><span class="sig-paren">(</span><em>ost_ent</em>, <em>molprobity_bin=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_molprobity.html#RunMolProbityEntity"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.RunMolProbityEntity" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">RunMolProbityEntity</code><span class="sig-paren">(</span><em>ost_ent</em>, <em>molprobity_bin=None</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.RunMolProbityEntity" title="Permalink to this definition">¶</a></dt>
 <dd><p>Run molprobity from phenix on given OST entity.</p>
 <p>See <a class="reference internal" href="#promod3.modelling.RunMolProbity" title="promod3.modelling.RunMolProbity"><code class="xref py py-func docutils literal"><span class="pre">RunMolProbity()</span></code></a> for details.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>ost_ent</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Entity</span></code></a>) &#8211; OST entity on which to do analysis.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>ost_ent</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Entity</span></code></a>) &#8211; OST entity on which to do analysis.</td>
 </tr>
 </tbody>
 </table>
@@ -219,7 +219,7 @@ executable is not found.</p>
 
 <dl class="function">
 <dt id="promod3.modelling.ReportMolProbityScores">
-<code class="descclassname">promod3.modelling.</code><code class="descname">ReportMolProbityScores</code><span class="sig-paren">(</span><em>scores</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_molprobity.html#ReportMolProbityScores"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.ReportMolProbityScores" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">ReportMolProbityScores</code><span class="sig-paren">(</span><em>scores</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.ReportMolProbityScores" title="Permalink to this definition">¶</a></dt>
 <dd><p>Print MolProbity score and its components to LogInfo.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -283,7 +283,7 @@ executable is not found.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/modelling/monte_carlo.html b/doc/html/modelling/monte_carlo.html
index 8186f355..36c37e6a 100644
--- a/doc/html/modelling/monte_carlo.html
+++ b/doc/html/modelling/monte_carlo.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Generating Loops De Novo &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Generating Loops De Novo &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="modelling - Protein Modelling" href="index.html" />
     <link rel="next" title="Sidechain Reconstruction" href="sidechain_reconstruction.html" />
     <link rel="prev" title="Fitting Loops Into Gaps" href="loop_closing.html" />
@@ -114,7 +114,7 @@ Carlo sampling to the N-terminal part of crambin:</p>
 </div>
 <dl class="function">
 <dt id="promod3.modelling.SampleMonteCarlo">
-<code class="descclassname">promod3.modelling.</code><code class="descname">SampleMonteCarlo</code><span class="sig-paren">(</span><em>sampler</em>, <em>closer</em>, <em>scorer</em>, <em>cooler</em>, <em>steps</em>, <em>bb_list</em>, <em>initialize</em>, <em>seed=0</em>, <em>lowest_energy_conformation=True</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_monte_carlo.html#SampleMonteCarlo"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.SampleMonteCarlo" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">SampleMonteCarlo</code><span class="sig-paren">(</span><em>sampler</em>, <em>closer</em>, <em>scorer</em>, <em>cooler</em>, <em>steps</em>, <em>bb_list</em>, <em>initialize</em>, <em>seed=0</em>, <em>lowest_energy_conformation=True</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.SampleMonteCarlo" title="Permalink to this definition">¶</a></dt>
 <dd><p>A convenient function to perform Monte Carlo sampling using a simulated
 annealing scheme. In every iteration, a new loop conformation gets proposed 
 by the provided <em>sampler</em> and closed by the <em>closer</em>. Upon scoring, this new
@@ -506,9 +506,9 @@ avoid moving into unfavourable phi/psi ranges.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation
+<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation
 should adapt. See <a class="reference internal" href="loop_closing.html#promod3.modelling.CCD.CCD" title="promod3.modelling.CCD.CCD"><code class="xref py py-meth docutils literal"><span class="pre">CCD()</span></code></a>.</li>
-<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation
+<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation
 should adapt. See <a class="reference internal" href="loop_closing.html#promod3.modelling.CCD.CCD" title="promod3.modelling.CCD.CCD"><code class="xref py py-meth docutils literal"><span class="pre">CCD()</span></code></a>.</li>
 <li><strong>sequence</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; Sequence of the conformation to be closed.</li>
 <li><strong>torsion_sampler</strong> (<a class="reference internal" href="../loop/torsion_sampler.html#promod3.loop.TorsionSampler" title="promod3.loop.TorsionSampler"><code class="xref py py-class docutils literal"><span class="pre">TorsionSampler</span></code></a> / <code class="xref py py-class docutils literal"><span class="pre">list</span></code>
@@ -556,9 +556,9 @@ dihedral angles as it is the case for the <a class="reference internal" href="#p
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation
+<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation
 should adapt.</li>
-<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation
+<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation
 should adapt.</li>
 </ul>
 </td>
@@ -598,9 +598,9 @@ solutions. The KICCloser simply picks the first one.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation should
+<li><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation should
 adapt.</li>
-<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation should
+<li><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation should
 adapt.</li>
 <li><strong>seed</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Seed for internal random generators.</li>
 </ul>
@@ -639,7 +639,7 @@ superposing the c_stem with the desired positions.</p>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation should
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>c_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation should
 adapt.</td>
 </tr>
 </tbody>
@@ -677,7 +677,7 @@ superposing the n_stem with the desired positions.</p>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation should
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>n_stem</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Defining stem positions the closed conformation should
 adapt.</td>
 </tr>
 </tbody>
@@ -940,7 +940,7 @@ internal counter to 0</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/modelling/pipeline.html b/doc/html/modelling/pipeline.html
index 7d998f48..70a70284 100644
--- a/doc/html/modelling/pipeline.html
+++ b/doc/html/modelling/pipeline.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Modelling Pipeline &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Modelling Pipeline &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="modelling - Protein Modelling" href="index.html" />
     <link rel="next" title="Model Checking" href="model_checking.html" />
     <link rel="prev" title="modelling - Protein Modelling" href="index.html" />
@@ -118,7 +118,7 @@ chain follows afterwards.</p>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a></td>
+<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -144,13 +144,13 @@ Gaps of different chains are appended one after another.</p>
 <dl class="attribute">
 <dt id="promod3.modelling.ModellingHandle.seqres">
 <code class="descname">seqres</code><a class="headerlink" href="#promod3.modelling.ModellingHandle.seqres" title="Permalink to this definition">¶</a></dt>
-<dd><p>List of sequences with one <a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">SequenceHandle</span></code></a> for each chain
+<dd><p>List of sequences with one <a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">SequenceHandle</span></code></a> for each chain
 of the target protein.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">SequenceList</span></code></a></td>
+<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">SequenceList</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -159,7 +159,7 @@ of the target protein.</p>
 <dl class="attribute">
 <dt id="promod3.modelling.ModellingHandle.profiles">
 <code class="descname">profiles</code><a class="headerlink" href="#promod3.modelling.ModellingHandle.profiles" title="Permalink to this definition">¶</a></dt>
-<dd><p>List of profiles with one <a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a> for each chain of
+<dd><p>List of profiles with one <a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a> for each chain of
 the target protein (same order as in <a class="reference internal" href="#promod3.modelling.ModellingHandle.seqres" title="promod3.modelling.ModellingHandle.seqres"><code class="xref py py-attr docutils literal"><span class="pre">seqres</span></code></a>). Please note, that this
 attribute won&#8217;t be set by simply calling <a class="reference internal" href="#promod3.modelling.BuildFromRawModel" title="promod3.modelling.BuildFromRawModel"><code class="xref py py-func docutils literal"><span class="pre">BuildFromRawModel()</span></code></a>. You have
 to fill it manually or even better by the convenient function
@@ -168,7 +168,7 @@ to fill it manually or even better by the convenient function
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a></td>
+<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -289,6 +289,39 @@ needed.</p>
 </table>
 </dd></dl>
 
+<dl class="attribute">
+<dt id="promod3.modelling.ModellingHandle.fragger_handles">
+<code class="descname">fragger_handles</code><a class="headerlink" href="#promod3.modelling.ModellingHandle.fragger_handles" title="Permalink to this definition">¶</a></dt>
+<dd><p>Optional attribute which is set in <a class="reference internal" href="#promod3.modelling.SetFraggerHandles" title="promod3.modelling.SetFraggerHandles"><code class="xref py py-meth docutils literal"><span class="pre">SetFraggerHandles()</span></code></a>. Use
+<code class="xref py py-meth docutils literal"><span class="pre">hasattr()</span></code> to check if it&#8217;s available. If it&#8217;s set, it is used in
+<a class="reference internal" href="#promod3.modelling.BuildFromRawModel" title="promod3.modelling.BuildFromRawModel"><code class="xref py py-meth docutils literal"><span class="pre">BuildFromRawModel()</span></code></a>.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference internal" href="algorithms.html#promod3.modelling.FraggerHandle" title="promod3.modelling.FraggerHandle"><code class="xref py py-class docutils literal"><span class="pre">FraggerHandle</span></code></a></td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="promod3.modelling.ModellingHandle.modelling_issues">
+<code class="descname">modelling_issues</code><a class="headerlink" href="#promod3.modelling.ModellingHandle.modelling_issues" title="Permalink to this definition">¶</a></dt>
+<dd><p>Optional attribute which is set in <a class="reference internal" href="#promod3.modelling.AddModellingIssue" title="promod3.modelling.AddModellingIssue"><code class="xref py py-meth docutils literal"><span class="pre">AddModellingIssue()</span></code></a>. Use
+<code class="xref py py-meth docutils literal"><span class="pre">hasattr()</span></code> to check if it&#8217;s available. If it&#8217;s set, it can be used to
+check issues which occurred in <a class="reference internal" href="#promod3.modelling.BuildFromRawModel" title="promod3.modelling.BuildFromRawModel"><code class="xref py py-meth docutils literal"><span class="pre">BuildFromRawModel()</span></code></a> (see
+<a class="reference internal" href="#promod3.modelling.MinimizeModelEnergy" title="promod3.modelling.MinimizeModelEnergy"><code class="xref py py-meth docutils literal"><span class="pre">MinimizeModelEnergy()</span></code></a> and <a class="reference internal" href="#promod3.modelling.CheckFinalModel" title="promod3.modelling.CheckFinalModel"><code class="xref py py-meth docutils literal"><span class="pre">CheckFinalModel()</span></code></a> for details).</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference internal" href="#promod3.modelling.ModellingIssue" title="promod3.modelling.ModellingIssue"><code class="xref py py-class docutils literal"><span class="pre">ModellingIssue</span></code></a></td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
 <dl class="method">
 <dt id="promod3.modelling.ModellingHandle.Copy">
 <code class="descname">Copy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.ModellingHandle.Copy" title="Permalink to this definition">¶</a></dt>
@@ -322,7 +355,7 @@ alignment handle or an alignment handle list. Every list item is treated as a
 single chain in the final raw model.</p>
 <p>Each alignment handle must contain exactly two sequences and the second
 sequence is considered the template sequence, which must have a
-<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityView</span></code></a> attached.</p>
+<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityView</span></code></a> attached.</p>
 <p>This is a basic protein core modelling algorithm that copies backbone
 coordinates based on the sequence alignment. For matching residues, the
 side chain coordinates are also copied. Gaps are ignored. Hydrogen an
@@ -350,7 +383,7 @@ as information about insertions and deletions in the gaps list.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>aln</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">AlignmentHandle</span></code></a> / <code class="xref py py-class docutils literal"><span class="pre">AlignmentList</span></code>) &#8211; Single alignment handle for raw model with single chain or
+<li><strong>aln</strong> (<a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">AlignmentHandle</span></code></a> / <code class="xref py py-class docutils literal"><span class="pre">AlignmentList</span></code>) &#8211; Single alignment handle for raw model with single chain or
 list of alignment handles for raw model with multiple chains.</li>
 <li><strong>include_ligands</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; True, if we wish to include ligands in the model. This
 searches for ligands in all OST handles of the views
@@ -376,7 +409,7 @@ in SMTL). All ligands are added to a new chain named
 <li>the second sequence does not have an attached structure</li>
 <li>the residues of the template structure do not match with the
 alignment sequence (note that you can set an &#8220;offset&#8221; (see
-<a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.AlignmentHandle.SetSequenceOffset" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">SetSequenceOffset()</span></code></a>) for the
+<a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.AlignmentHandle.SetSequenceOffset" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">SetSequenceOffset()</span></code></a>) for the
 template sequence (but not for the target))</li>
 <li>the target sequence has a non-zero offset (cannot be honored as
 the resulting model will always start its residue numbering at 1)</li>
@@ -392,7 +425,7 @@ the resulting model will always start its residue numbering at 1)</li>
 <h2>The Default Pipeline<a class="headerlink" href="#the-default-pipeline" title="Permalink to this headline">¶</a></h2>
 <dl class="function">
 <dt id="promod3.modelling.BuildFromRawModel">
-<code class="descclassname">promod3.modelling.</code><code class="descname">BuildFromRawModel</code><span class="sig-paren">(</span><em>mhandle</em>, <em>use_amber_ff=False</em>, <em>extra_force_fields=[]</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_pipeline.html#BuildFromRawModel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.BuildFromRawModel" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">BuildFromRawModel</code><span class="sig-paren">(</span><em>mhandle</em>, <em>use_amber_ff=False</em>, <em>extra_force_fields=[]</em>, <em>model_termini=False</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.BuildFromRawModel" title="Permalink to this definition">¶</a></dt>
 <dd><p>Build a model starting with a raw model (see <a class="reference internal" href="#promod3.modelling.BuildRawModel" title="promod3.modelling.BuildRawModel"><code class="xref py py-func docutils literal"><span class="pre">BuildRawModel()</span></code></a>).</p>
 <p>This function implements a recommended pipeline to generate complete models
 from a raw model. The steps are shown in detail in the code example
@@ -404,6 +437,12 @@ of custom pipelines.</p>
 <a class="reference internal" href="#promod3.modelling.SetupDefaultBackboneScoring" title="promod3.modelling.SetupDefaultBackboneScoring"><code class="xref py py-func docutils literal"><span class="pre">SetupDefaultBackboneScoring()</span></code></a> and <a class="reference internal" href="#promod3.modelling.SetupDefaultAllAtomScoring" title="promod3.modelling.SetupDefaultAllAtomScoring"><code class="xref py py-func docutils literal"><span class="pre">SetupDefaultAllAtomScoring()</span></code></a>
 and adapt the default scoring members. Alternatively, you can setup the
 scoring manually, but you must ensure consistency yourself!</p>
+<p>By default, a simple backbone dihedral sampling is performed when entering 
+Monte Carlo. If <em>mhandle</em> has a list of <a class="reference internal" href="algorithms.html#promod3.modelling.FraggerHandle" title="promod3.modelling.FraggerHandle"><code class="xref py py-class docutils literal"><span class="pre">FraggerHandle</span></code></a> objects 
+attached as &#8220;fragger_handles&#8221; attribute, the sampling will be performed with 
+structural fragments. To ensure consistency, the fragger handles should be 
+attached using <a class="reference internal" href="#promod3.modelling.SetFraggerHandles" title="promod3.modelling.SetFraggerHandles"><code class="xref py py-meth docutils literal"><span class="pre">SetFraggerHandles()</span></code></a>. 
+But be aware of increased runtime due to the fragment search step.</p>
 <p>If the function fails to close all gaps, it will produce a warning and
 return an incomplete model.</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -414,23 +453,33 @@ return an incomplete model.</p>
 <li><strong>mhandle</strong> (<a class="reference internal" href="#promod3.modelling.ModellingHandle" title="promod3.modelling.ModellingHandle"><code class="xref py py-class docutils literal"><span class="pre">ModellingHandle</span></code></a>) &#8211; The prepared template coordinates loaded with the input
 alignment.</li>
 <li><strong>use_amber_ff</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; if True, use the AMBER force field instead of the def.
-CHARMM one (see <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/forcefield/#ost.mol.mm.LoadAMBERForcefield" title="(in OpenStructure v1.8.0)"><code class="xref py py-func docutils literal"><span class="pre">ost.mol.mm.LoadAMBERForcefield()</span></code></a>
-and <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/forcefield/#ost.mol.mm.LoadCHARMMForcefield" title="(in OpenStructure v1.8.0)"><code class="xref py py-func docutils literal"><span class="pre">ost.mol.mm.LoadCHARMMForcefield()</span></code></a>).
+CHARMM one (see <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/forcefield/#ost.mol.mm.LoadAMBERForcefield" title="(in OpenStructure v1.9.0)"><code class="xref py py-func docutils literal"><span class="pre">ost.mol.mm.LoadAMBERForcefield()</span></code></a>
+and <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/forcefield/#ost.mol.mm.LoadCHARMMForcefield" title="(in OpenStructure v1.9.0)"><code class="xref py py-func docutils literal"><span class="pre">ost.mol.mm.LoadCHARMMForcefield()</span></code></a>).
 Both do a similarly good job without ligands (CHARMM
 slightly better), but you will want to be consistent
 with the optional force fields in <cite>extra_force_fields</cite>.</li>
-<li><strong>extra_force_fields</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/forcefield/#ost.mol.mm.Forcefield" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.mm.Forcefield</span></code></a>) &#8211; Additional list of force fields to use if a 
+<li><strong>extra_force_fields</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/forcefield/#ost.mol.mm.Forcefield" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.mm.Forcefield</span></code></a>) &#8211; Additional list of force fields to use if a 
 (ligand) residue cannot be parametrized with the
 default force field. The force fields are tried
 in the order as given and ligands without an
 existing parametrization are skipped.</li>
+<li><strong>model_termini</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; The default modelling pipeline in ProMod3 is optimized
+to generate a gap-free model of the region in the 
+target sequence(s) that is covered with template 
+information. Terminal extensions without template 
+coverage are negelected. 
+You can activate this flag to enforce a model of the
+full target sequence(s). The terminal parts will be 
+modelled with a crude Monte Carlo approach. Be aware
+that the accuracy of those termini is likely to be
+limited. Termini of length 1 won&#8217;t be modelled.</li>
 </ul>
 </td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Delivers the model as an OST entity.</p>
 </td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Entity</span></code></a></p>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Entity</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -605,7 +654,7 @@ environments get updated in <strong>target_mhandle</strong>.</p>
 <li><strong>target_chain_idx</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; This is the chain where the info goes to</li>
 <li><strong>start_resnum</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; First residue of the copied stretch</li>
 <li><strong>end_resnum</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Last residue of the copied stretch</li>
-<li><strong>transform</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a>) &#8211; Transformation to be applied to all atom positions when
+<li><strong>transform</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a>) &#8211; Transformation to be applied to all atom positions when
 they&#8217;re copied over</li>
 </ul>
 </td>
@@ -636,7 +685,7 @@ while ensuring consistency with the <a class="reference internal" href="#promod3
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>mhandle</strong> (<a class="reference internal" href="#promod3.modelling.ModellingHandle" title="promod3.modelling.ModellingHandle"><code class="xref py py-class docutils literal"><span class="pre">ModellingHandle</span></code></a>) &#8211; Will have the profiles attached afterwards</li>
-<li><strong>profiles</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; The sequence profiles to attach</li>
+<li><strong>profiles</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; The sequence profiles to attach</li>
 </ul>
 </td>
 </tr>
@@ -672,9 +721,32 @@ with seqres in <strong>mhandle</strong></p>
 </table>
 </dd></dl>
 
+<dl class="function">
+<dt id="promod3.modelling.SetFraggerHandles">
+<code class="descclassname">promod3.modelling.</code><code class="descname">SetFraggerHandles</code><span class="sig-paren">(</span><em>mhandle</em>, <em>fragger_handles</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.SetFraggerHandles" title="Permalink to this definition">¶</a></dt>
+<dd><p>Sets <a class="reference internal" href="#promod3.modelling.ModellingHandle.fragger_handles" title="promod3.modelling.ModellingHandle.fragger_handles"><code class="xref py py-attr docutils literal"><span class="pre">fragger_handles</span></code></a> in <em>mhandle</em> while
+ensuring consistency with the <a class="reference internal" href="#promod3.modelling.ModellingHandle.seqres" title="promod3.modelling.ModellingHandle.seqres"><code class="xref py py-attr docutils literal"><span class="pre">ModellingHandle.seqres</span></code></a>.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><strong>mhandle</strong> (<a class="reference internal" href="#promod3.modelling.ModellingHandle" title="promod3.modelling.ModellingHandle"><code class="xref py py-class docutils literal"><span class="pre">ModellingHandle</span></code></a>) &#8211; Will have the fragger handles attached afterwards</li>
+<li><strong>fragger_handles</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference internal" href="algorithms.html#promod3.modelling.FraggerHandle" title="promod3.modelling.FraggerHandle"><code class="xref py py-class docutils literal"><span class="pre">FraggerHandle</span></code></a>) &#8211; The fragger handles to attach</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><p class="first last"><code class="xref py py-class docutils literal"><span class="pre">ValueError</span></code> when the given <em>fragger_handles</em> are not 
+consistent with seqres in <em>mhandle</em></p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
 <dl class="function">
 <dt id="promod3.modelling.CloseGaps">
-<code class="descclassname">promod3.modelling.</code><code class="descname">CloseGaps</code><span class="sig-paren">(</span><em>mhandle</em>, <em>merge_distance=4</em>, <em>fragment_db=None</em>, <em>structure_db=None</em>, <em>torsion_sampler=None</em>, <em>fragger_handles=None</em>, <em>chain_idx=None</em>, <em>resnum_range=None</em>, <em>length_dep_weights=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_closegaps.html#CloseGaps"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.CloseGaps" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">CloseGaps</code><span class="sig-paren">(</span><em>mhandle</em>, <em>merge_distance=4</em>, <em>fragment_db=None</em>, <em>structure_db=None</em>, <em>torsion_sampler=None</em>, <em>fragger_handles=None</em>, <em>chain_idx=None</em>, <em>resnum_range=None</em>, <em>length_dep_weights=False</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.CloseGaps" title="Permalink to this definition">¶</a></dt>
 <dd><p>Tries to close all gaps in a model, except termini. It will go through
 following steps:</p>
 <ul class="simple">
@@ -728,7 +800,7 @@ database / Monte Carlo.</li>
 
 <dl class="function">
 <dt id="promod3.modelling.CloseSmallDeletions">
-<code class="descclassname">promod3.modelling.</code><code class="descname">CloseSmallDeletions</code><span class="sig-paren">(</span><em>mhandle</em>, <em>max_extension=9</em>, <em>clash_thresh=1.0</em>, <em>e_thresh=200</em>, <em>use_scoring_extender=True</em>, <em>use_full_extender=True</em>, <em>chain_idx=None</em>, <em>resnum_range=None</em>, <em>ff_lookup=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_closegaps.html#CloseSmallDeletions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.CloseSmallDeletions" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">CloseSmallDeletions</code><span class="sig-paren">(</span><em>mhandle</em>, <em>max_extension=9</em>, <em>clash_thresh=1.0</em>, <em>e_thresh=200</em>, <em>use_scoring_extender=True</em>, <em>use_full_extender=True</em>, <em>chain_idx=None</em>, <em>resnum_range=None</em>, <em>ff_lookup=None</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.CloseSmallDeletions" title="Permalink to this definition">¶</a></dt>
 <dd><p>Close small deletions by relaxing neighbouring residues.</p>
 <p>Small deletions in the template from the target-template alignment have a
 good chance to be bridged just by relaxing neighbours around a tiny gap.
@@ -770,7 +842,7 @@ For the scondary-structure-penalty to work,
 the model-template must have the appropriate
 information before <a class="reference internal" href="#promod3.modelling.BuildRawModel" title="promod3.modelling.BuildRawModel"><code class="xref py py-func docutils literal"><span class="pre">BuildRawModel()</span></code></a> is
 called (e.g. with 
-<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/alg/molalg/#ost.mol.alg.AssignSecStruct" title="(in OpenStructure v1.8.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.alg.AssignSecStruct()</span></code></a>).</li>
+<a class="reference external" href="https://www.openstructure.org/docs/mol/alg/molalg/#ost.mol.alg.AssignSecStruct" title="(in OpenStructure v1.9.0)"><code class="xref py py-meth docutils literal"><span class="pre">ost.mol.alg.AssignSecStruct()</span></code></a>).</li>
 <li><strong>use_full_extender</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; True = use <a class="reference internal" href="gap_handling.html#promod3.modelling.FullGapExtender" title="promod3.modelling.FullGapExtender"><code class="xref py py-class docutils literal"><span class="pre">FullGapExtender</span></code></a> instead of
 of <a class="reference internal" href="gap_handling.html#promod3.modelling.GapExtender" title="promod3.modelling.GapExtender"><code class="xref py py-class docutils literal"><span class="pre">GapExtender</span></code></a>. Also works in combination
 with <cite>use_scoring_extender</cite>. This allows the gap
@@ -795,7 +867,7 @@ gets used.</li>
 
 <dl class="function">
 <dt id="promod3.modelling.MergeGapsByDistance">
-<code class="descclassname">promod3.modelling.</code><code class="descname">MergeGapsByDistance</code><span class="sig-paren">(</span><em>mhandle</em>, <em>distance</em>, <em>chain_idx=None</em>, <em>resnum_range=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_closegaps.html#MergeGapsByDistance"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.MergeGapsByDistance" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">MergeGapsByDistance</code><span class="sig-paren">(</span><em>mhandle</em>, <em>distance</em>, <em>chain_idx=None</em>, <em>resnum_range=None</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.MergeGapsByDistance" title="Permalink to this definition">¶</a></dt>
 <dd><p>Merge 2 neighbouring gaps by deleting residues in-between.</p>
 <p>Check if two neighbouring gaps are at max. <em>distance</em> residues apart from
 each other. Then delete the residues and store a new gap spanning the whole
@@ -841,7 +913,7 @@ both in this resnum range.</li>
 
 <dl class="function">
 <dt id="promod3.modelling.FillLoopsByDatabase">
-<code class="descclassname">promod3.modelling.</code><code class="descname">FillLoopsByDatabase</code><span class="sig-paren">(</span><em>mhandle</em>, <em>fragment_db</em>, <em>structure_db</em>, <em>torsion_sampler</em>, <em>max_loops_to_search=40</em>, <em>min_loops_required=4</em>, <em>max_res_extension=-1</em>, <em>extended_search=True</em>, <em>use_scoring_extender=True</em>, <em>use_full_extender=True</em>, <em>score_variant=0</em>, <em>ring_punch_detection=1</em>, <em>chain_idx=None</em>, <em>resnum_range=None</em>, <em>max_num_all_atom=0</em>, <em>clash_thresh=-1</em>, <em>length_dep_weights=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_closegaps.html#FillLoopsByDatabase"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.FillLoopsByDatabase" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">FillLoopsByDatabase</code><span class="sig-paren">(</span><em>mhandle</em>, <em>fragment_db</em>, <em>structure_db</em>, <em>torsion_sampler</em>, <em>max_loops_to_search=40</em>, <em>min_loops_required=4</em>, <em>max_res_extension=-1</em>, <em>extended_search=True</em>, <em>use_scoring_extender=True</em>, <em>use_full_extender=True</em>, <em>score_variant=0</em>, <em>ring_punch_detection=1</em>, <em>chain_idx=None</em>, <em>resnum_range=None</em>, <em>max_num_all_atom=0</em>, <em>clash_thresh=-1</em>, <em>length_dep_weights=False</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.FillLoopsByDatabase" title="Permalink to this definition">¶</a></dt>
 <dd><p>Try to fill up loops from a structural database.</p>
 <p>Usually this will extend the gaps a bit to match candidates from the
 database. Do not expect a gap being filled in between its actual stem
@@ -943,7 +1015,7 @@ loops.</li>
 
 <dl class="function">
 <dt id="promod3.modelling.FillLoopsByMonteCarlo">
-<code class="descclassname">promod3.modelling.</code><code class="descname">FillLoopsByMonteCarlo</code><span class="sig-paren">(</span><em>mhandle</em>, <em>torsion_sampler</em>, <em>max_loops_to_search=6</em>, <em>max_extension=30</em>, <em>mc_num_loops=2</em>, <em>mc_steps=5000</em>, <em>use_scoring_extender=True</em>, <em>use_full_extender=True</em>, <em>score_variant=0</em>, <em>ring_punch_detection=1</em>, <em>fragger_handles=None</em>, <em>chain_idx=None</em>, <em>resnum_range=None</em>, <em>length_dep_weights=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_closegaps.html#FillLoopsByMonteCarlo"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.FillLoopsByMonteCarlo" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">FillLoopsByMonteCarlo</code><span class="sig-paren">(</span><em>mhandle</em>, <em>torsion_sampler</em>, <em>max_loops_to_search=6</em>, <em>max_extension=30</em>, <em>mc_num_loops=2</em>, <em>mc_steps=5000</em>, <em>use_scoring_extender=True</em>, <em>use_full_extender=True</em>, <em>score_variant=0</em>, <em>ring_punch_detection=1</em>, <em>fragger_handles=None</em>, <em>chain_idx=None</em>, <em>resnum_range=None</em>, <em>length_dep_weights=False</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.FillLoopsByMonteCarlo" title="Permalink to this definition">¶</a></dt>
 <dd><p>Try to fill up loops with Monte Carlo sampling.</p>
 <p>This is meant as a &#8220;last-resort&#8221; approach when it is not possible to fill
 the loops from the database with <a class="reference internal" href="#promod3.modelling.FillLoopsByDatabase" title="promod3.modelling.FillLoopsByDatabase"><code class="xref py py-func docutils literal"><span class="pre">FillLoopsByDatabase()</span></code></a>.
@@ -1016,7 +1088,7 @@ loops.</li>
 
 <dl class="function">
 <dt id="promod3.modelling.CloseLargeDeletions">
-<code class="descclassname">promod3.modelling.</code><code class="descname">CloseLargeDeletions</code><span class="sig-paren">(</span><em>mhandle</em>, <em>structure_db</em>, <em>linker_length=8</em>, <em>num_fragments=500</em>, <em>use_scoring_extender=True</em>, <em>use_full_extender=True</em>, <em>chain_idx=None</em>, <em>resnum_range=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_closegaps.html#CloseLargeDeletions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.CloseLargeDeletions" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">CloseLargeDeletions</code><span class="sig-paren">(</span><em>mhandle</em>, <em>structure_db</em>, <em>linker_length=8</em>, <em>num_fragments=500</em>, <em>use_scoring_extender=True</em>, <em>use_full_extender=True</em>, <em>chain_idx=None</em>, <em>resnum_range=None</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.CloseLargeDeletions" title="Permalink to this definition">¶</a></dt>
 <dd><p>Try to close large deletions.</p>
 <p>This is meant as a &#8220;last-resort&#8221; approach. In some cases you cannot 
 close very large deletions simply because the two parts separated
@@ -1053,7 +1125,7 @@ processed</li>
 
 <dl class="function">
 <dt id="promod3.modelling.ModelTermini">
-<code class="descclassname">promod3.modelling.</code><code class="descname">ModelTermini</code><span class="sig-paren">(</span><em>mhandle</em>, <em>torsion_sampler</em>, <em>fragger_handles=None</em>, <em>mc_num_loops=20</em>, <em>mc_steps=5000</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_closegaps.html#ModelTermini"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.ModelTermini" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">ModelTermini</code><span class="sig-paren">(</span><em>mhandle</em>, <em>torsion_sampler</em>, <em>fragger_handles=None</em>, <em>mc_num_loops=20</em>, <em>mc_steps=5000</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.ModelTermini" title="Permalink to this definition">¶</a></dt>
 <dd><p>Try to model termini with Monte Carlo sampling.</p>
 <p>Use with care! This is an experimental feature which will increase coverage
 but we do not assume that the resulting termini are of high quality!</p>
@@ -1101,7 +1173,7 @@ fragger handle for each chain in <em>mhandle</em>.</li>
 
 <dl class="function">
 <dt id="promod3.modelling.BuildSidechains">
-<code class="descclassname">promod3.modelling.</code><code class="descname">BuildSidechains</code><span class="sig-paren">(</span><em>mhandle</em>, <em>merge_distance=4</em>, <em>fragment_db=None</em>, <em>structure_db=None</em>, <em>torsion_sampler=None</em>, <em>rotamer_library=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_pipeline.html#BuildSidechains"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.BuildSidechains" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">BuildSidechains</code><span class="sig-paren">(</span><em>mhandle</em>, <em>merge_distance=4</em>, <em>fragment_db=None</em>, <em>structure_db=None</em>, <em>torsion_sampler=None</em>, <em>rotamer_library=None</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.BuildSidechains" title="Permalink to this definition">¶</a></dt>
 <dd><p>Build sidechains for model.</p>
 <p>This is a wrapper for <a class="reference internal" href="sidechain_reconstruction.html#promod3.modelling.ReconstructSidechains" title="promod3.modelling.ReconstructSidechains"><code class="xref py py-func docutils literal"><span class="pre">promod3.modelling.ReconstructSidechains()</span></code></a>, 
 followed by a check for ring punches. If ring punches are found it 
@@ -1137,9 +1209,9 @@ one is loaded if None.</li>
 
 <dl class="function">
 <dt id="promod3.modelling.MinimizeModelEnergy">
-<code class="descclassname">promod3.modelling.</code><code class="descname">MinimizeModelEnergy</code><span class="sig-paren">(</span><em>mhandle</em>, <em>max_iterations=12</em>, <em>max_iter_sd=20</em>, <em>max_iter_lbfgs=10</em>, <em>use_amber_ff=False</em>, <em>extra_force_fields=[]</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_pipeline.html#MinimizeModelEnergy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.MinimizeModelEnergy" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">MinimizeModelEnergy</code><span class="sig-paren">(</span><em>mhandle</em>, <em>max_iterations=12</em>, <em>max_iter_sd=20</em>, <em>max_iter_lbfgs=10</em>, <em>use_amber_ff=False</em>, <em>extra_force_fields=[]</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.MinimizeModelEnergy" title="Permalink to this definition">¶</a></dt>
 <dd><p>Minimize energy of final model using molecular mechanics.</p>
-<p>Uses <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/molmm/#module-ost.mol.mm" title="(in OpenStructure v1.8.0)"><code class="xref py py-mod docutils literal"><span class="pre">ost.mol.mm</span></code></a> to perform energy minimization.
+<p>Uses <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/molmm/#module-ost.mol.mm" title="(in OpenStructure v1.9.0)"><code class="xref py py-mod docutils literal"><span class="pre">ost.mol.mm</span></code></a> to perform energy minimization.
 It will iteratively (at most <em>max_iterations</em> times):</p>
 <ul class="simple">
 <li>run up to <em>max_iter_sd</em> minimization iter. of a steepest descend method</li>
@@ -1152,6 +1224,10 @@ minimize until there are no stereochemical problems and not more.</p>
 <p>To speed things up, this can run on multiple CPU threads by setting the
 env. variable <code class="docutils literal"><span class="pre">PM3_OPENMM_CPU_THREADS</span></code> to the number of desired threads.
 If the variable is not set, 1 thread will be used by default.</p>
+<p>If the starting model is so bad that the energy is NaN or Inf from the start
+(happens if atoms are on top of each other or almost), the energy
+minimization is aborted. This issue is logged and added as a major issue to
+<a class="reference internal" href="#promod3.modelling.ModellingHandle.modelling_issues" title="promod3.modelling.ModellingHandle.modelling_issues"><code class="xref py py-attr docutils literal"><span class="pre">modelling_issues</span></code></a> of <em>mhandle</em>.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -1163,7 +1239,7 @@ If the variable is not set, 1 thread will be used by default.</p>
 <li><strong>max_iter_lbfgs</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Max. number of iterations within LBFGS method</li>
 <li><strong>use_amber_ff</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; if True, use the AMBER force field instead of the def.
 CHARMM one (see <a class="reference internal" href="#promod3.modelling.BuildFromRawModel" title="promod3.modelling.BuildFromRawModel"><code class="xref py py-meth docutils literal"><span class="pre">BuildFromRawModel()</span></code></a>).</li>
-<li><strong>extra_force_fields</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/forcefield/#ost.mol.mm.Forcefield" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.mm.Forcefield</span></code></a>) &#8211; Additional list of force fields to use (see
+<li><strong>extra_force_fields</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/mol/mm/forcefield/#ost.mol.mm.Forcefield" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.mm.Forcefield</span></code></a>) &#8211; Additional list of force fields to use (see
 <a class="reference internal" href="#promod3.modelling.BuildFromRawModel" title="promod3.modelling.BuildFromRawModel"><code class="xref py py-meth docutils literal"><span class="pre">BuildFromRawModel()</span></code></a>).</li>
 </ul>
 </td>
@@ -1171,7 +1247,7 @@ CHARMM one (see <a class="reference internal" href="#promod3.modelling.BuildFrom
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">The model including all oxygens as used in the minimizer.</p>
 </td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">Entity</span></code></a></p>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">Entity</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -1180,8 +1256,23 @@ CHARMM one (see <a class="reference internal" href="#promod3.modelling.BuildFrom
 
 <dl class="function">
 <dt id="promod3.modelling.CheckFinalModel">
-<code class="descclassname">promod3.modelling.</code><code class="descname">CheckFinalModel</code><span class="sig-paren">(</span><em>mhandle</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_pipeline.html#CheckFinalModel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.CheckFinalModel" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">CheckFinalModel</code><span class="sig-paren">(</span><em>mhandle</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.CheckFinalModel" title="Permalink to this definition">¶</a></dt>
 <dd><p>Performs samity checks on final models and reports problems.</p>
+<p>Issues are logged and tracked in <a class="reference internal" href="#promod3.modelling.ModellingHandle.modelling_issues" title="promod3.modelling.ModellingHandle.modelling_issues"><code class="xref py py-attr docutils literal"><span class="pre">modelling_issues</span></code></a>
+of <em>mhandle</em>. Major issues:</p>
+<ul class="simple">
+<li>Chains with less than 3 residues (usually due to bad templates).</li>
+<li>Incomplete models (i.e. some gaps couldn&#8217;t be closed). One issue is
+created per unclosed gap and the stems of the gap are added to the issue.</li>
+<li>Complete models with sequence mismatches (should never happen).</li>
+<li>Residues with rings which have been punched by another bond.</li>
+</ul>
+<p>Minor issues:</p>
+<ul class="simple">
+<li>Remaining stereo-chemical problems after energy minimization. The affected
+residues will have the boolean property &#8220;stereo_chemical_problem_backbone&#8221;
+set to True, if the problem affects backbone atoms.</li>
+</ul>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -1192,6 +1283,123 @@ CHARMM one (see <a class="reference internal" href="#promod3.modelling.BuildFrom
 </table>
 </dd></dl>
 
+<dl class="class">
+<dt id="promod3.modelling.ModellingIssue">
+<em class="property">class </em><code class="descclassname">promod3.modelling.</code><code class="descname">ModellingIssue</code><span class="sig-paren">(</span><em>text</em>, <em>severity</em>, <em>residue_list=[]</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.ModellingIssue" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>text</strong> &#8211; Sets <a class="reference internal" href="#promod3.modelling.ModellingIssue.text" title="promod3.modelling.ModellingIssue.text"><code class="xref py py-attr docutils literal"><span class="pre">text</span></code></a>.</li>
+<li><strong>severity</strong> &#8211; Sets <a class="reference internal" href="#promod3.modelling.ModellingIssue.severity" title="promod3.modelling.ModellingIssue.severity"><code class="xref py py-attr docutils literal"><span class="pre">severity</span></code></a>.</li>
+<li><strong>residue_list</strong> &#8211; Sets <a class="reference internal" href="#promod3.modelling.ModellingIssue.residue_list" title="promod3.modelling.ModellingIssue.residue_list"><code class="xref py py-attr docutils literal"><span class="pre">residue_list</span></code></a>.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<dl class="attribute">
+<dt id="promod3.modelling.ModellingIssue.text">
+<code class="descname">text</code><a class="headerlink" href="#promod3.modelling.ModellingIssue.text" title="Permalink to this definition">¶</a></dt>
+<dd><p>Description of issue.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a></td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="promod3.modelling.ModellingIssue.severity">
+<code class="descname">severity</code><a class="headerlink" href="#promod3.modelling.ModellingIssue.severity" title="Permalink to this definition">¶</a></dt>
+<dd><p>Severity of issue.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><a class="reference internal" href="#promod3.modelling.ModellingIssue.Severity" title="promod3.modelling.ModellingIssue.Severity"><code class="xref py py-class docutils literal"><span class="pre">Severity</span></code></a></td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="promod3.modelling.ModellingIssue.residue_list">
+<code class="descname">residue_list</code><a class="headerlink" href="#promod3.modelling.ModellingIssue.residue_list" title="Permalink to this definition">¶</a></dt>
+<dd><p>List of residues affected by issue (or empty list if global issue).</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ResidueHandle</span></code></a> /
+<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueView" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ResidueView</span></code></a></td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="class">
+<dt id="promod3.modelling.ModellingIssue.Severity">
+<em class="property">class </em><code class="descname">Severity</code><a class="headerlink" href="#promod3.modelling.ModellingIssue.Severity" title="Permalink to this definition">¶</a></dt>
+<dd><p>Enumerates severities.</p>
+<dl class="attribute">
+<dt id="promod3.modelling.ModellingIssue.Severity.MAJOR">
+<code class="descname">MAJOR</code><em class="property"> = 10</em><a class="headerlink" href="#promod3.modelling.ModellingIssue.Severity.MAJOR" title="Permalink to this definition">¶</a></dt>
+<dd><p>Major issues like MM-failures, incomplete models and ring punches.</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="promod3.modelling.ModellingIssue.Severity.MINOR">
+<code class="descname">MINOR</code><em class="property"> = 0</em><a class="headerlink" href="#promod3.modelling.ModellingIssue.Severity.MINOR" title="Permalink to this definition">¶</a></dt>
+<dd><p>Minor issues like remaining stereo-chemistry problems after MM.</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.modelling.ModellingIssue.is_major">
+<code class="descclassname">ModellingIssue.</code><code class="descname">is_major</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.ModellingIssue.is_major" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">True if this is a major issue.</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a></td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="function">
+<dt id="promod3.modelling.AddModellingIssue">
+<code class="descclassname">promod3.modelling.</code><code class="descname">AddModellingIssue</code><span class="sig-paren">(</span><em>mhandle</em>, <em>text</em>, <em>severity</em>, <em>residue_list=[]</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.AddModellingIssue" title="Permalink to this definition">¶</a></dt>
+<dd><p>Adds a new <a class="reference internal" href="#promod3.modelling.ModellingIssue" title="promod3.modelling.ModellingIssue"><code class="xref py py-class docutils literal"><span class="pre">ModellingIssue</span></code></a> to
+<a class="reference internal" href="#promod3.modelling.ModellingHandle.modelling_issues" title="promod3.modelling.ModellingHandle.modelling_issues"><code class="xref py py-attr docutils literal"><span class="pre">modelling_issues</span></code></a> in <em>mhandle</em>.</p>
+<p>If <em>mhandle</em> doesn&#8217;t contain the <a class="reference internal" href="#promod3.modelling.ModellingHandle.modelling_issues" title="promod3.modelling.ModellingHandle.modelling_issues"><code class="xref py py-attr docutils literal"><span class="pre">modelling_issues</span></code></a>
+attribute yet, it is added.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>mhandle</strong> (<a class="reference internal" href="#promod3.modelling.ModellingHandle" title="promod3.modelling.ModellingHandle"><code class="xref py py-class docutils literal"><span class="pre">ModellingHandle</span></code></a>) &#8211; Will have the issue added to.</li>
+<li><strong>text</strong> &#8211; Sets <a class="reference internal" href="#promod3.modelling.ModellingIssue.text" title="promod3.modelling.ModellingIssue.text"><code class="xref py py-attr docutils literal"><span class="pre">ModellingIssue.text</span></code></a>.</li>
+<li><strong>severity</strong> &#8211; Sets <a class="reference internal" href="#promod3.modelling.ModellingIssue.severity" title="promod3.modelling.ModellingIssue.severity"><code class="xref py py-attr docutils literal"><span class="pre">ModellingIssue.severity</span></code></a>.</li>
+<li><strong>residue_list</strong> &#8211; Sets <a class="reference internal" href="#promod3.modelling.ModellingIssue.residue_list" title="promod3.modelling.ModellingIssue.residue_list"><code class="xref py py-attr docutils literal"><span class="pre">ModellingIssue.residue_list</span></code></a>.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
 </div>
 </div>
 
@@ -1245,7 +1453,7 @@ CHARMM one (see <a class="reference internal" href="#promod3.modelling.BuildFrom
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/modelling/sidechain_reconstruction.html b/doc/html/modelling/sidechain_reconstruction.html
index 67bb2f71..58ac0f35 100644
--- a/doc/html/modelling/sidechain_reconstruction.html
+++ b/doc/html/modelling/sidechain_reconstruction.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Sidechain Reconstruction &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Sidechain Reconstruction &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="modelling - Protein Modelling" href="index.html" />
     <link rel="next" title="Modelling Algorithms" href="algorithms.html" />
     <link rel="prev" title="Generating Loops De Novo" href="monte_carlo.html" />
@@ -47,7 +47,7 @@
 <p>Two methods are provided to fully reconstruct sidechains of residues:</p>
 <ul class="simple">
 <li>the <a class="reference internal" href="#promod3.modelling.ReconstructSidechains" title="promod3.modelling.ReconstructSidechains"><code class="xref py py-func docutils literal"><span class="pre">ReconstructSidechains()</span></code></a> function handles a full OST
-<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a></li>
+<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a></li>
 <li>the <a class="reference internal" href="#promod3.modelling.SidechainReconstructor" title="promod3.modelling.SidechainReconstructor"><code class="xref py py-class docutils literal"><span class="pre">SidechainReconstructor</span></code></a> is linked to an all atom environment
 and used to reconstruct sidechains of single loops</li>
 </ul>
@@ -95,14 +95,14 @@ and used to reconstruct sidechains of single loops</li>
 <h2>Reconstruct Function<a class="headerlink" href="#reconstruct-function" title="Permalink to this headline">¶</a></h2>
 <dl class="function">
 <dt id="promod3.modelling.ReconstructSidechains">
-<code class="descclassname">promod3.modelling.</code><code class="descname">ReconstructSidechains</code><span class="sig-paren">(</span><em>ent</em>, <em>keep_sidechains=False</em>, <em>build_disulfids=True</em>, <em>rotamer_model='frm'</em>, <em>consider_ligands=True</em>, <em>rotamer_library=None</em>, <em>optimize_subrotamers=True</em>, <em>graph_max_complexity=100000000</em>, <em>graph_initial_epsilon=0.02</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/promod3/modelling/_reconstruct_sidechains.html#ReconstructSidechains"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#promod3.modelling.ReconstructSidechains" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">promod3.modelling.</code><code class="descname">ReconstructSidechains</code><span class="sig-paren">(</span><em>ent</em>, <em>keep_sidechains=False</em>, <em>build_disulfids=True</em>, <em>rotamer_model='frm'</em>, <em>consider_ligands=True</em>, <em>rotamer_library=None</em>, <em>optimize_subrotamers=True</em>, <em>graph_max_complexity=100000000</em>, <em>graph_initial_epsilon=0.02</em>, <em>energy_function='SCWRL4'</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.ReconstructSidechains" title="Permalink to this definition">¶</a></dt>
 <dd><p>Reconstruct sidechains for the given structure.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>ent</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityHandle</span></code></a>) &#8211; Structure for sidechain reconstruction. Note, that the sidechain
+<li><strong>ent</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityHandle</span></code></a>) &#8211; Structure for sidechain reconstruction. Note, that the sidechain
 reconstruction gets directly applied on the structure itself.</li>
 <li><strong>keep_sidechains</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Flag, whether complete sidechains in <em>ent</em> (i.e. 
 containing all required atoms) should be kept rigid
@@ -126,6 +126,8 @@ parametrization.</li>
 <code class="xref py py-meth docutils literal"><span class="pre">RotamerGraph.TreeSolve()</span></code>.</li>
 <li><strong>graph_intial_epsilon</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Initial epsilon for
 <code class="xref py py-meth docutils literal"><span class="pre">RotamerGraph.TreeSolve()</span></code>.</li>
+<li><strong>energy_function</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; What energy function to use can be any in 
+[&#8220;SCWRL4&#8221;, &#8220;SCWRL3&#8221;]</li>
 </ul>
 </td>
 </tr>
@@ -212,7 +214,7 @@ environment before calling this!</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>start_resnum</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResNum</span></code></a>) &#8211; Start of loop.</li>
+<li><strong>start_resnum</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResNum</span></code></a>) &#8211; Start of loop.</li>
 <li><strong>num_residues</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Length of loop.</li>
 <li><strong>chain_idx</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Chain the loop belongs to.</li>
 <li><strong>start_resnum_list</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Starts of loops.</li>
@@ -439,7 +441,7 @@ in the environment (same length as <em>env_pos.res_indices</em>)</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/objects.inv b/doc/html/objects.inv
index f48241f38276d2e99ac3e7e82e959edb969244eb..01a546df33de2546098bf5872f811a54f33353fe 100644
GIT binary patch
delta 7558
zcmdmFwat2hHM5bP!9+W&`n_|biyxa!Yq<YaJH#}2>u&y_OD}J(^}LsIGOzmBCee#4
z-`H(b5Sk<~nT2`6yRf>yj}HCzRVuu|?|E9~BO}XsOAGe!{x-#~Kk*aZ@3#9IBY)iD
zQ{j`?XK@|(KI+e_OZeyc|1Yy(`F`E=o)UlFzW;pmO!kuJCaH3A)2}VQ$ez|&FCAph
zyW#a>mR{x;Esrl9S=ha&<w8b^k(+DY{JSPfo=ufTMqgc3_UU>~yLjo~$ysfNzRL60
zpSR#Skti2mXSr;m-d+zs$$yQHkDQkO{3SVeT1}AJxmT~<=Wdy_ao@&_Ws&PLj|fkz
zI;pkrVc(~9LURmw3lHhty*aJptE}Gy&Bwg;n<uzvRQxToe3-%Y`X4i^rq>7YLcz)y
zkqrIUDK;;-oj+E3D+x{7Z!nob-(imU%BQ*JXWrjuiCi~_#ju@C{#WtCCqA{t3*O)V
zt?qD(`|H7sLYWw|@82g_{M;nH#-vI3t6}1U+on&#D;=LOJ2RE*^e%{~*2&=#c-@=0
z`TL#AEcGYP??}3I$aZo@*D|X~58qzaP*l8USf%3Fe#ofye(zOg6|3Hby4M-qx=vnw
z`)l{Ch4X*Zw(v22d;6fg$E9;}ms@A-n<omrQAvVtD@?Y9TKhRA7aQ?ipJFtBdvs^^
zq}j`3s@AF3doXzkx$$K-sRsyfs2MGOBapbh=Yfaz_bE~JnF`Z1tT@F#Y3vDD;FRjJ
zN|#T@z><45N6#Oxg$;IsO>&i!xhjr1u6dhv_xzRX?XqXz%w%6!{QbU*q?PS%t&ABH
zIPMz=uUR=kzkXsx)-PTAyT)!ewLTrat+Lp#@Q38a;2w$h1-G@$+h1?_^&sze<x#&(
z4ZAOXaT(_Ix^FDzeW~XSXS8(v6tsIQ`vQA|l1bq^M61$1tlc0hx_ikPwz<VJT=y6J
zS+U_ytYY(mi0h(t@sD<Wc%rlIy-|Ggi-uQa`!1MPKJ@C)k&j&0<iK|P`$hNAr6E}&
zEP6uUcNMQ*a^>FQAC3~a+7~>oiO)%?f4fPdL;BGJu4fPICC#+@n8Rco>#KyEJOUV)
z*IfN(VyPkEJyYdct!k*{ye{FXdM4-8<;)ys?MsZ5(_qx?^lIL8PnBU3M^oqgBnGKo
z{bwQ%FB&A?Jm64%qT2of$AiC1wnjE4$Z<S&Qf@uSdhp=Hd4efB<1PinJr3C56O>r7
zUeRu$`KgM{&vUd2%GDNFaDAR<%~v0#b8*d5i|$!x68t9?B(-c&6=^tnRFz#_VaW?7
z7p8+24vQ2l5~ls@z30y9sTT2jf=kI$!T3*Z=4&e-9q&H>g42C6<M}E3mTye_w8=K3
zWQK2A;~_c5#EIo%g8Mvzx9~b7eEh=AWoT0<DreAqeBJquRz;cbb_aH9^D)=_VfoWp
zFIV5hR@cV1&w<(aGgA-ivD}N>SJks}p4Da$;E4~hep*u-=il<Q@R;#K&(*1xDdzbe
ztJ%x%OLYC1xM{=PBYlac+@^E4#J$~q?%0Hjk_vr_U)b7{6>JOdcpRBKt39bFa<=f9
z`>D0*Jr#y(du9pGJDXi>p(Dd7&Bb|qk%h!6`}!7XP9~!u=f(#T=cc*5zPik4mAPzc
z-s^8Svd^)-e*J%T*VN`&RYejK!H*A|l43t`_-Dd2MW1th2dnaU=JbWFbc$R!Wldvi
zI@8q6o12qV4s6k!%JE=*lmerD=2T9e7VU+9W-nz=K6h(Qf}ZFyzs}@0Q!I}8buvGg
zViBObZSt`h^+%^X4u8DtTW{WzEt8)lb-jG;F5@~e&*N&9#J1>l(hpV`CfG|gCG9+M
zpy%OJVcq4*1roEv^bgPZV;cA6%9owXUwA|xG&ujfW5>UTQID3EyQvf{UNd=v=`8Cm
z*P3EBTe;1ahtp*0)Z96IzGd=g7G<r}wkw&^7M#gHrSgYI!2|L7yIO1Y<=gc37d+gy
zOYU%$*gex5vc0>Oo@m%AlJweJ)n4`ax$CBh@=sO6E3asH9r&0v%kO%KuR_srmeVVr
znD#2YQGKGk`NOjL>rX|W>Z_0vJRkbmX=ks|^h%G)jdNHzk3L>hyKS=XhjwY@Bu+gq
z-xd1z4yvcWF&2q9cPuZIQ@Ospke}yg;}7w$9deud_f87YSbVMN)yzxRPUW0Du=O+J
z_LADj62D;f^DO7qJ&UwStzyvi3|%Lixaw&__`Iyhm;M*G79Daj6I0o)EUta%_Ei2k
zf9(Ey>m6;FbZgSKBZlgZ)ovyXl7G6l-3WUX-on0Ips{dw`dJ^fue?Vj8K3g>)(2k~
zaa4ZACLbvE<=kb1WZ`*i?w5+DGj85-y^Aqcn}22fq4WPYIsW|`p72W9O@8{km21-;
zJj)Su_!c}RL2TiHMHxA*YR#*?{~w80e)IbOzMCta%JvCAN;X}Pzj2vtX1C+&Co`4g
z@2Pmc`c=5~e%{*+<x^CPdd+R_I?79Is#9HG9~EV=Zfe@8jW>KOzs=S>?q~coB6FFH
z_Sq@P_a9lC>FoPlo3nyB%eg$V{F2)1ElpkSyLL=Vx^r&LgXBAnISk5+8e<%i?<}l&
zkhI}kj8o!lPZ<IIV4iHrqv=NuYP~UU(=Xp;FS6zFrf%-rcdyKE&URO{HV$d_y>D%Q
z<KWtJH3#Z-4>;&85KGXIPv$;wA+y*#^+fdYH~0T0s<`Xkwp_}XRIXBF#s0zl;FCRG
z5|cRi7Tyb3@M&&rPe6ai>G<=lmwZ@xT~i)wTwk>0c4qV!-e*t0yo=nV6C-kb#i8BG
zTMJ+QR^BWq(=(&|-W}hxIj?S??(tbw=2IA^o_MFMLotvkr(WTNrNIB6TNsa8s<1p=
zxijaco=L-lKbZwZW@~*4_+L0MJ>1K<QQkv9f-$8$GtIkr`<a%fBD<ISweEPwsqSJn
zWu4;kbiR9Udvv>aLxPt~tKO*A;c{n#i0kTvQ#*DWFO|4?m+SBz6^Eupfp;WAuP)FO
zn!Nn{Gwn%xW>;PE*`<|Ve_*0~x6$lf8mt?><h`CM(^0+d&(lkX<!^ZZU|4K$dD((9
zTGkpp%x4rLv%Q!+=G|Iy{<xjWXF>KO&TL2TwDommTr*m*FsI7pKEu;&lle#YHnzG<
z{#evw?pMy}_2iVXdT;V6p@_PBS8I=V<X`i=&-i|ZI`^DrDP`r0oYS=SFYl{Yw6KYI
zoBKQD-7Qvkam7Vv7Sz91aNZ%i;lmEs7xPNian3qZs*~OKVEM*<EFOP#zXdia>YVJG
zJR`AQ{hxANvGKj=*$2g3*f=KN=`&kdUiw?*R`ZU(KX$Y(33U6%^vKiLPdPDV_jS{m
z#+EW$^b9ZftY|9hGH1B1B9d)Uoji5zr23duGov;*DJAml$jm&V-eDlTByBw-gN5Y1
z(qtQd{VN~$AKbX?o2W^G^zoY~`5Y&_pZLT%Vs+A`y_$hr&Oc52vTVberS~7~xXdcW
z|0e#b<y=;cqpu9QH6kkyO)FaTYcI!z>Dv~T_*Kog(I3rftF&)oy79~+9(JZ#8Vwg4
zw1gI^*Y7`d`|*Uj1dq=)I~T9wG?Y?Zaqz*>Ft1y;RgVSFI#%}Hy?4Tk+j`f(=Qrt?
z^VH_<znpUAozFgjM5h*SM$e~`UwK^5-g&23JLAaIc@FnGRx(a_Z*Y6U2Agk;ZGSZG
z&7CK~RlV$nQ^D@TzgMR0-0g0u!mN{Z%2oeCL%=;flNl=f^;@kbH(tLr&+|dvZ#&7W
z`A^jqOXoMw`Ltly$=%IcR;PTlmtm=NkEy%iRQUB&C->1}qfa-V)!P)#Gds_!-D%jl
z@kb;3sY&_Ib{}W_6_#(|)%VKo8`CLk{;F5Wn)+*QE|0k~)3A2F+lB)R=PmvC!R7_?
z${TDxtoyYE8#>y$Ov*0RH#OeB*%F<yKO$xSt)$Z@rnnV7W_`2%a*JI50m&Jwy(YhC
z5Vurq)VCJ>{$ll}JU2Jriw`{bK5mpc@zib2*Q(?+HWr0;iIA;}I*xC!bWg0xiS}5`
zvRf{Rac`$l#IoqbpNcyLSXXa$=qf*U?{{;`Ebe7itDkar{dWD-lJvbt$-aKaH`%A%
zyp!^@`xn@p4)u|id9aAp^s%KP7n6hB?$c_A{HJ#@F)Im7VH0T8GRTq+lR36Ye|P1p
zS)AKyjoz_DNvVFHXrgnYUGR=p;Cm@+4Yln>=095N0vLpYSRFe~w{3XBlw9^&qvO!s
z`tH_dfs?^Uw>*%Ty55y}>KijzhXYUR-}qW?Z@3?u;(t%^@~e|#s}J2iCA21$(WjF$
zEqfu;k@LG#trK5Oe|_@VtFCn>6ZcPk@@9?Vfhwo_i?3Xld)?6_oT{{c!hN1eL03Lc
zRlgL~T$Sds^_Em8*C)n>o4i>#w9@&@N{sr$r&(psoa=t$jg0BDcM?;h=U8#}@gB?+
z=m@LVp1u3}=TF<W8Svf+`u{@n!P<Zgmkv(Xk&e0k_Mx<Mk<uc89gN&1vt3RlMtpql
zCvZ;TnGUnl0y)8U-Pzv?=54+lrEboo%BI&6@O<sbeI`4T9AXLzKFv<lti1P>q3zH2
z%eQp?h%rn!5LvY8(2PKaKL?ta9x~Z=>o?4ZGEE9wrB%P8TJcoH5|JOXo?lkyIO@Fp
zan$604Kwz3S33Ool&~=SuIJ=~*I8<~Dtejx&ov(v&2HYgH)oaFi8Q<3n^xC0dlzW<
zn{1rrTAS6fH2l>pMec)B7fyfEv+h`7??%59Ij26XdlVIY!vEZN?jSuTvp3gs7cR|N
zvtg~2Yw3%Pce*s|S?i@OOU`|1PDtmz{`pqp`a0Xqr)72@UDW3obH1sheC52aCO5r9
z_T=7tYar{QB-B+AR{HgRH^Yk(!^bD%t9+VfG(TCtaNktU1>Y*`(sul5aGfsBms+||
zN#oAZi|uQ9J{@%aVe?7Ze9e^rX1@4ei{CB26m{=j=v|(=Q#sr+hG*K})Hh80lt2AM
zrOg4>zOAoWeXnvm-Py4(fmM&W?|;gLR=v^*Q`>I`YP4#qB}&c;JQ`{BgL(5YK}m%J
zPs_fpzi#`)I{bpa{(+1`cLn}lw9d?7n)s4cI&Z?)8_l9q!}m!@m>j&%<NcG#Lh=!7
zol%Qj4}X%*LN_L9&lSN3j|plm&%Rf0uy)1ef>OQAwa*l4zx-*I^nY_B`Bcpr28*KF
zkJH$S_HDi}ZIkzb4e>Spen<9mulRnhw{82k%#dk(i(*3KDmTnk4CQ{p%Y4ZERI=KG
zW5oelG6te+j1GzfoQ&Nz_56oDcV;Wyv|3l)uOLy7UtlV0Ww9&0rS;{s?1JCy?|Wwy
zMb>L1<VPqstJmGPDiLg2eca=kiOmF#=F74hR<RlAva)69Xh;XKNE_sTPB?bf_}%*%
zbIx(H8-}X-<#I+zZ~be&uVBTz=lAw#=_jktKel7z-RY-{H~$Np>+JIAuFkU={X&uF
zmS!(Fku|Ms|J2X2TTlI*cj;YCxnjw_ZUL+N@f@-h^@>*xCmo$)zd7J+;On5*zxPQ9
zOCL%;<Nf$e#pGSP8WW{wr5>BQ+**5jgZa0avmS_CiE!w1yLWcO`maV$qT{!4TQ7}I
zQkcASe(uKSa;I#+?W*3lp!nFucInISXDB{g_gu|+v8h;5&%XS=Q$?&#-!<Gf46iM-
z)HE0WVOME9Yk`1qePzb4@2BS&?Y`xCvuLWy3G4gr@+}uV&S}5cXwncF_OIzokDR00
zx^RnvzcHd}G4|oluB^~YIIOn3OX^kUEVe7YH?#t^_0~>^KXCF_Mxan+<F@TFjY|7D
zlv#P-S$H0r^6N<V)$IrFh<nFqM?8IXb0ueqObN#_NB$o(zMgdq>d&kf*dg<u^X%Ju
zUU#Q(#b2mty&3WQ?CAqbZ{(`&E=yfM^Ucbd<|$iG{J1mk>io@8!7D5BJ*_HE^G-F3
zk}JGn=qjPn{zt&I+Hy~T*tWk7CksLomc&RM$jT4Y4Xq2eGqZCHx7%j#a(`OX0ZX1Y
z8(C)rXJ6J$D0{9KGokXqk~!ho^Xd=2ZhyeexZv2;j&LW<1wLJ(5?3D{{C4hRz|PX%
zGUko5oA)~0*w>tP;De0Ve&;MNjs+ptIzE_f?rYyRJ$DyxbmV!~bAH=)ZZO+)uzhQP
zgHpzIB{Sc|>SGK#yRv`Z|7iK-F>m<ng~yKk*?2-a`>x6KMO|+$<!3+Z*({y)+~;8}
zZ~a`&?@`|A=bj&^VcmEAwNKm9xOHwj=c-Q+I_;deU#L(1li{A%u5z<GW4`6sOK;6S
zZ1Glhw)5s@@s?HU8^5^LyS<R@eYkMd*DVpJ`)p=<_sZWmm-a(NVn&S6k@FiO7Hm6T
zw77itdd4GiMP_;DlWNON*UjMBEfwUW9^a{U=72d%z0hUj7rlySCNw{6W~?$Ok~n;n
zvq^9xQ%Ustry*Z>Wv2#TEbs~pViaA(#~Riq#J7l}RAz=y$c6we1Dg^fPL_2H$?V?C
z79A9E@clVKdSm$BoXHK2N6Y0T@|=&XKd0*UY|E>Q-!x8qcUXDGr{#o`rFW`naf6QB
z)3lEQvjP|$v+JE?c~^0knoLm(S()JLD9m+BB;+B3ucI*g6_G0&9DEzsoLcztF5ll>
zdp~br%D4P>>_K0`!&Qbm&aJ6zJGSRn%!e@fRfV!9YOVJt9o!+Fal<|Np4{)1?TVd!
zo2?9cuD;t<aOKYmRf(kV@3TE`-+rQ--~0Y};_T)BW*R8ox?#n=tA1wgMaSq{VzR3?
z=4M{`@@wtF1*^Anvah|XcE{`Kp`S*%IxEbBk2C);&Q+M;ewl&!r^&fr-~WDo?z^pG
z`F*oXPkLs~{`>Tq*gvfu%T75wSm&0rOKE#SgVx2g=9RAIQX!_dA{kb=n~Qk3T0Mx}
z&D+DiJ!a0!PhrlCr=sR^tEK1a)UW8d`jO$&RW_!RVaz#Mb)Ucbf8BZa=hf`ZyFWjl
zw)(2{-OEo_?qjVuc~X3<VEqD~)4O-`_I>|#F}-L7X9c(Dgu@)u-n=>WZ&%QfiFfQc
z+aK_C?$E67zPHh8#;xYH{qezP^llz+UcAjzsOiSqNykzwW%Om9&e*1|+nc)jbKb^J
ziS_?BI{VbD&0Z?IDEEZqZ=ZP~qOvD7Q&))I=+nL5a5!wiC()bEbK3uITQqm?(Ve^#
z=avgR(z|RS`*KOU&RI5jPnTPt<(F-GS~CB7#`^N9ERLsQi&~g}H=cHKE?k)X&3l=i
zAXiRMIgk9r>o(T682(RcOMP0Tk#+y#2R09OcJ~{z>bEZAWLE#|>uNR4<Y41<mg8M&
z7G<Uf8>dII$8p_T@hf72TA0P2t!}3!Zdji#GtxgG$n%<eaVF0NBkjJ{XO@qfwl5aV
z%XGbej>mkt#;gZdEd>iKDh@B%dEn7ZXW!H*slNrbsD9SSkM)h7DCT^G*VJU1d5C3r
z<RZhjr9YOtt9+`DasI3Fkzu3JozTXR`WF%%?z^Thzpmld5WCGi{P~Le5<AzhWxFwK
zeaObkq*PtI>iH#~%hR>CZEZcCa;dLKBEbEtv=e*PzvCaiJ!5<&XXkMDF#E*n9|`&S
zsyA-m=Kc2VL*h+28=c#Sk1JPee>`z7&t_A5zx%fj2M^2LxPG7c*RT3&h4}jXlh^M@
zfBO2ptoE<%n)Um)KY9H=_s6g5jQINgiTgblGdth=&HVB$$Nqz7g_E3{`S<Mmz_MNJ
zao?*Q=k68U-8(VqHt)JTe+#bNF@=79foDsEYL31&I<fA@T>p?gciEht+)C_!lNOPq
znEBRrzk$g7-Af;<<lpT&!PfeuaDBbfoO9p5ypollbLt-Rrms5+_J`eBlDtg$kQiID
zZVz*`4AVA)U)**dxUHULr|#I^a?hP}H$&%=B;Bd^rY>WD*PQ)FxZJ~o>4-yi!c51{
z=hPy0l&j63bz8y7p?(wN-yG&&`~?{?{1Y5*9`gK|!u)G8?~8QlfY0wk=fA%=>yrJk
z^!jTW-f>y-cUG;xH9Pa8^u1>3>Cct@W`3BnZrj@JX>mL;`;T>6aqKx?_xX|M^k@Bi
z6YtNv{&@LY)fwt~TK=Cj(s<LZf0^TW{kZ(v%I2#}PEU<nucWtD`gqmXhIIl@G&@(9
zt^ZhZ<FEN74|&a}pR`y^_%>VnavRPqR|qhu%-=4mUw>A(?)7Osv7aKBTlYwx7CyZw
z<(%+;am|LTm!Y~l{a&^1+qYIS;%l5p@w?+{^~WvZK73-iGV!GHt`p3EH8Z{EMyFV{
zFWbX1*}Y${>!!=&AbEE?e>c1TcAtK3%s=mDXTPZ~>w9R>{Ho8c;fH?qU0iE0sd%kS
z%{8Ha_rA2IoyiufFEX4irB;6a+(h;!i_R1N_I1D3BrsY%aCjtPm!!sTw#w&<-4c}v
zdn37X_rB)5;;U!9@sQ2Y*l#uels2C-zPiYK@;2cr4WVx>)i3?+|5Z3UX7|hIRs8F@
zC;3aj?%dPM=k5R31UJ2CVXj)W&#f?U{}HSI#m`!m4&~N=JoWU}_kZ>LcID?f9{zk?
zxNq9Qk7rJQH~8VGQhR)jTjrh1D|&y$dfqs<w{Epwp~k1@M~`vtX%akC<mFnUy7#MJ
z#8bxJl2hDWi)XR@%#}X*`E}&e&~;~?WW3~8_i@!eAaye=??p@er{i6r!I4Ebt)H|x
zUE6y3(xNNx(+#eAZ#%1>bxD%FkiFg^{@Tk;?qa{Je|@gukX)(p+_7TMNy+o??G1LT
zJb%P%Z6~<;WV@7UoQQm;?*BClP1X7AmCL#Wh3EN94%@kW=GAuAs6X2K&(3OFIE8U1
ze`;8xPOnRM)7^--SFZkQi1mLV^X=ECJv-J^%BainCeL!S`+m+sB+;Y$#z!BukRmy!
z`m*G;`G20*bLPz|NW9Q;?f>^u*>4xwC-(n4&)ffqf2VeeRJeCU%$n7GRyn@Q1XjsE
zKbt;NWp`9Yrj~fx%dn_ZN0(J3ExUU2toDJk+AB0Nmp}XO`#<i<Nin0FvnOoZv+szx
zt-%q!&BA?No!Se2hQ>OSrgT>rO{`jRZo#3tudT1@%ZqqJu0QMBXJI`tMX{*o2>X+-
zdtRApWc}jyd{%yQ@n&Js-X<9#LA9Uq*Y{tXSr@BP5;#NX&bl?TIt4qk+|<0+$E6l7
zTv@PipBr~bRb%rC_g|&|+`d|$|L?zK-u}AYO<~*E=N{D(z8F2V>e?pB++@4o&O46$
z*;e*eR<>nP?XUWu^UX~*z3-{Hz`xMJynwk!<=gZ6dml7D7KCh%xvBa$?EJ6(nKoi;
zZ@gXft>kN)-{%=~)r{g<55~M(Vt7B$ujKUtx%0~HV(R-R&NPxSKGS;0>)PfW^HuX}
zTR*Mx)A%p;EL2UCYw_e$j85UQAKm!t6Z9YI`n>L3BlqRRq93OsUe#A=nSKtnUvM(<
zMb`XNU!Pcb=^YC#`8_eFRoU{P<atg1X^Onl7OqJAnsDsd&x?!J)n^2*Ha9Mgee=d-
z`tehlZi~eEciC9)Thp0&=e)-!{-3v8+23nfu^x(Qxp#<LWBSDYRV}*~@X8r)3wycg
zRIq|qv!}w;bxfza?B-38e;MYuvOaXOut!y89-o$+>%mU0`EO*dv8;Q&Z{3gFI`<a=
zb?Mh?)BMdhl&<n$IW;~YCUxtUm4)8R_4Km(J<LQ>71Q?~KU-G3``i-U)61`v#ooz1
z*!t(ozOt{Jy|oISnf5N+voEBvu83ck!E*JR%iTM_jHl+SJmRa(y{0K%yJgpdCt?fg
zb)K`GkAJ~FcdLKLTeWNF`qz4#*V}EkyY5}0dBuk*M=A}A?AFgui%fgYWh_=KULUM=
zZMo;y$NAl_xu;f4RFCt>X%`la7yH@!=x=KD`n#GBi}XX@Y@eVXp8sE3abduNdkYNC
zxe3gVTP+$Ich&O$GMCSNE{C4ZwqGIKHGk0|(-Zac)wX<OD(%uZCffH(AmYhi9@8-Q
z{uB43W2Ge>zOv|ql-_61+{GEfWT$<%GppBR4v(V5&-<JA`EFiylHL58mMm9px_3%-
z|6;w2^L`$mYvy$yJEtvebN<)0%kjsbr>;A!oth_k@7vC-pG)t|Jo(Jy{JJ+Wmsn+Q
zJxTeemH+IEQvC^0*P|Vk&v)g#$gWIS@$UTv&htMckA7ihz2y1#%gbHQZ_djJ)h_!U
zvZiw1s|vkxD`7)huArx$XQfsv?}~hSsB@>()|sZyHkT~dTE6Sd=atH<RwrG%p|jAs
z^lP@*v!X!5xv9ptW}Ud^yXIVxw#?-{DOUGXg6_^rw!FLLl}D1_%L<Pe*-cU`TaRt)
zS`_MbJ}s8n_wbDvrmjlY&F2nYP4u|9G;sa8(>WC?Yo%{lKQmjeV^O=dhv&?WoMnF7
zOJ@{F-MN)GsVMesq`~bC3~zVK&aL~jFl^Pmy2<ySoV^+TaQdmRTkG%cmrDG<Zt~TQ
SoA;kH*}FFBpS<a3Svvrpg`j5u

delta 7425
zcmdmHy~%2VHM60f@kBeT`lEBbCqFiu)bRe7XxEI+8+V&iwpXVmznSf|>eZ^5RT)Q$
zD!w0S@R-74?s<VB^6sbg@irX$G&@}ueM{KhrLvFZpo^05`G#YLUWeiXBz`IK{t;Mi
z!C5FY=b2;AzDMy)e-Heb{O>or(!08Nxy=^8PRBp*j=bP?KJy%tjb5(9<nlB1M)u1R
z<r3{(B&FCda2{XknJmvLx$xwPlpe0k`G0K`Biky?jJ|rR?9=m9%y{`Q$M^A+XPzgn
zyUVzz*!%nM-}AKd++Ghq$$yQHbqxAhe{IzBw$l_AfBJQ?UzG5ge4SgF)3RrM=y~e6
z?Nr8|rF-<**?p4dYz*FigKOiygOZz4_tYneO=fY`zwggJ$0zabzQr2ulK+(S7BzJ9
zyiJ+e!(N-HVQV+B<;WBNGb#!l0?$*kDsT6n{kvM>^wjB!&n~`*t=F3)o0-ARbNKcL
z29N4xiW0iMi!VR>CMKjFU)CJj`@p5vN8-n2sZXnIlt1+;HbzfV4_G5BX2#m__0)#D
z)$cOu+n%Jy7-l|{^E6tztZI_rn@=jrhWCtqxh<N<b^1%KeJKBgCkAcXV%#M()xx*W
zexKD|_h38cEq9BO=KDsIQsVTaRLhE#9i_IOQM|>S@oH7co}OjjQe@U^rYgSQCN$mT
z`jQy7I)!=<rc*|4-zwYG0|YqKHZIN)Ow{jr;1d2$vwrC%C!N3|0lg=)KR7iSg$k_P
zW>Ik9jYf`=!6)ffrZyLiDj}a!4+Py;Zd>hZ9~^K0K11yMoldLr-?2{?Uf;aB`JAxP
zLus)tQ_)XP{U`bP{y)OMy(e&+m(xeHn;AY*^=@w_C>^W5^X=Bz&#6)M1;4*k9_6dl
zvHKDh_rk1R_KijTyf3`rf|e?ug0^pEUm&h_lk;})Mb~pN7c7r&%-Fj+sr_lbw=Uz+
zU;93sF}mNbE`G6mexqe~--^7>)3+4#V>ptYDxVG&Ir-tMS><}|y<WYGPPjjc+rK5s
z>+Stc`Id|8y82UU4@Q2xzO5r@hbo_5vfRJs#MN&q5^f4EVPDw7;#zNTz%A4Na<kCJ
zDV{-hX9r$?ywW1@#iC=aDhJFwZkw<9#JqHYXyDZai~h4Ws2mCrdM44}c6qX`>kk>9
z2s48Vyj=U<WioxJyL4-fgF$&qVW4vBLDqu@C&~$??3?#FBJOd(2B+Y}3VlPn1>vVE
zcIRhn6;!J%u;BVUFPd+b?!`4v>vwcyze(WlEJ$kEmMYS4^r$L-y26qtEG|q3D;!oS
zSR_pQH}#&H<Vm%N-!oK7L?;A%ax-76_VKS~%9n=8CmY<o_CH&h`e~JIMro#RTH~R2
zjESBFB8EFWg17NHBz*j0++}D}DEi*8`S`m2j-!S$-^~sk6K!X_SI_j%<-5HjvwgiY
z^ZbR4t(A<&m>$o&@O@W3E2k+d14rBWRkLgM*{oAP<TK}^N5!?w$Zto_YF~Qw@OpTg
z&_B1xJGn{6H{6;z%P(qung6|GlP*dt^eOVNwI?eu7vAwW(mP8tsW<Yr@SFRowaL8|
z+tl{l5SDxE{kbN>La0nnMW*{v!it9ic`6(y>OJOivm7s&=dmd+H|ufU<-l*-^4gof
z)vR6kZ~w{&%Qq{Q=QkRf^69M4Y+<T7eqrJM{gom<=i(1medCIeT^sD0+PW%5SI0(J
zWBy)Q5oN}0zAIfA>aPlM{_uS5lb{g8_w>Hb{pjLr-&m^GZYcG#$zFbBbD5V7!}24|
zSsVA-9M!2`DziVreCzrWW%afc_2@GJ_K!5WN}OL^JG|-cr@tKPYZ-rE6qs@<m7%QX
zfKTh3z5|6>(R+A`KRvIw8Z3NAZj$*e&bFO1l^?bL_U@d1P;lZA|1Q5n=Q7@Dh;hD^
z{PK3~jH}tlAG&{HYt*#sRdx0I_vL82-=_+#w|$!!_6y3irq*xwdVc!&#`FF$JJ!}6
z*f3AMoU_b%a-Hs`1l`tKZJQ>^Z%Tgu`qqZ~PgLV8uV|b+@G)za-~ALXg`)E!CssZ&
z^%asyd9ruIhi&uMpNl@#S21hCfpBB<o!vI!Moacth&d*G+>tT=ZbxU`_h1*9gRbj1
zd5>DRJn3+5Q#zh>M{KG=QN4Qo`2dN|`oyWP_x-q`?b&LSCA(tY={Gv(`*>o)`F1Ro
z7P@FXQ6`3CPOPbtTvrvtTF=sT(y3V<1*`pe1Ahg7S({s+aIEp!H;=+aduodweEI%y
ze$hsjDc8cbsQOuU?lNA)c;Z3)mcwO1`;=@fj&Stcw$Dy8%FIwW$EA^;A@i$#8Anv0
z`48Tw7a!R0TAMwr{NiTy&S*hLbgbb5@27hF{69X<*IV)bpSi(Txy9cvAGi``T~NJ^
zL*cjLNdxbICjqAOTzuKq>m3%ZU%Ns7|L0eWrfj!3>(OzwVc+3N-<IgI=}vO*a;liD
zvhwxstM6W(<gNCOR0~f$eA)I(pW^B8Pp|5CvOc!TTxQdLcFOa8Ge6xi37$7O?Nsq4
zpUQW-`<@?qR4t$EY#SiGOLx~~GuP#!AvTwemx?_8*45Nsc)o+Nr{kOlV{hU4la1X6
ztCk))WH#AE$uZDy4yRXtN3-aS^*r<QO6oN-j;G3tZ`++2(e!?q(>Jb=W?y+-{<4DA
z;e0z->n)U7uQ1J-oSe%jVU?4&jHmMTlp=ms<HU8#=kA`jc-mW;PaGSiCspia{;@cr
zC{C5flchZ%Un3yxy{PsT+ee?SCr4&3YdYte@>pZ~q9w00{a;w0IsNkQ+LX8*C;CDg
zzq@BWzQpgIrfeax@xhLrGtXF<m^Vny40$`_(OSMkJ8}i<ot4;cI8Edg`2TSO<IzeL
zwx=t1<{Z^CX-N2NVzF~ZnA(o&E$S0L+-tZ|uF|!JVbks{8<rl^-JDqY^xv{z#eMY$
zBq#DN%|9tQqq*GnG3QdT(BLK0b}voqP`P6yp1L~W^p2eymqy&YD|OgT-Jxqy;2o*Z
z^^U<N$Cl_n(-ykyYnxfG7CX26*hKm6O|y4th;I0lH@j7)vwGj3r<eb}w>a@b(k*jY
zu48NHw}3frGaNTvo8mITW@~R;hqK2s+dhv5olQSQs<jqHo^EK{^ir^vJLOu2T~~Fw
zn2_(W(}wp<?z?GB);_<-##i%n!p~)^f45D%ux|1`_It+uVi8SJ%E~7hr`2oiU*4x^
zVH5Gz?svf3TdeNlii<=H_LNRgy~7((aYw1-eARUp-)B{Q*?kY5uiVGt@z<0$uuW0t
z<h03C9u{c-Q+BN0eJ6YNK|U8Yj>&iW^fC)df2-V@yQ8-LKa1z$o<E#NCa29&J9OgP
z`s_{VMHU&s$qQx%NWKltXIST}ajocE{jsoZQALqwuQZ8H;wV0lTdZv7*fdjNYc(&!
zftx>L&5wQl;xzYzwM=$ayd(Fvk9*d>5n%Z#H&gOZ)YQrEayu8*uG`kVy;W5AFWd6H
zdKW4ld{}kvrH+Gc*l}N#n_2?frU+ks@7l0$OSjkar@uS@?kK%r`$)R7YLf2pB83IL
zOcK2HE0h(hKE2)}+xODC&E))K>s7Y|RtGk*@x<jWUAA{#kj>J}H{a?^IA-p9TU`5J
z>qODv3)|mW`?}@!Kj9WsbJ-y>AtWxKKj6xtw|3$3YK2SH4NQ`<7@tI+F;iK`m)4+o
zzq@=nd)uQ%&20jA{(Y#^ihTDjkoP3R>RCk>y)6``l-C>cE<5==YVOGc-nr*h3ij8|
z?~&T}Y4U_!=N<hj1MWWg>v+p`(+~MRrOSfpe9;=~<17jn)||`Pzx%M@uX`q6MZHUZ
zun9ih+pf;LamxKG?^yNjUz)Y=v~a|Oo%<GiED&DSD3Zgy?9kPz9Fi`VouaDa4<5*m
zIV8JjzU-#>n2o7Ap7p{zLz(!lSGwK5*T8xse5%<+=JQ2<ivr4+-(A?QUb(eYD%jP>
zv+F2-%|tf$PaYjtFKBO1T6<mE+E{^sEh+Fymy+D!Z!)ct8*&YOjoz?#xPH+(b<-x6
z+nD{lQ_7l?OegONvd6zyxg2MB^`%yPfYq8w>{EWZPieWh^u0#>8=aT+yZ&&TS{zfp
z<)ENmbb$3d@x>ZUPd3g@diASht%jijmt!W&#Fave&HRoQYE{p_{d~#Igx$-}`Ym|s
zSvK3_aFesd(Y3-~?bfGXeG>JK&Hi#ZSAx?k1&-320@LOuoXHbrow)P%`;`R(LX~_o
z!emzeDa}|g>+Vu!jU99HHPe|t%${8Truw${)~ZcMSACq9!gtMxdD{`5&0AM6shG&F
z+-valG=EBQ>B4neChnj3=EYjY165r2_O4mad`-}m{Zz}I8S%W6qD($aRlj6)xS-5s
ztDRIQ6BpycO~T9^TF-xfE#dB8uj6}dlZE4kyK^(o-Zj!PSN&=<C#vbQhS1tD!`pce
zp02OYO^n*G^q=8`gV_rcb~c}nG?ZC)`*3*MlPiu33(|EiluBu``yJgM?P$?7V>1&+
z<1Tj@v;13!D|OC=&%MJDBC$ijY3>BI-<O`q)E6E+d~^M@ollmXX5{&~zI|)#4_yX@
z#?4PeW^P=}@S{<c^$=@~NIZk#)^msT!b=1GUz+&QV`cpZ-t*}mf~VTo9WPz>lF^WT
z`u&CvPXisM@0zUEtgrb)<b#xJ<D8vc+1J>L%adNIome{O+8?RskBnqa8+**@%J54o
z_~KPt9HqF!=*y(J7r$DpGqvK>T*mc2Yu#4n%A&ToDaC>t9&X6wmhCJ&RF)-j)$nN1
zXO+)fdMaPeoo!AKulGLd`|^PJ{(0T0{k4Y{^*F|ypHx!3YW_Kso8BRNman><Xw{*j
zBKC33t5^F)8819cIX-#+ml-S@*-yql{}razuuJ{J&4*_ucG&65p89pkDPTwc<nnN)
zGY=H^@DzKrO%}>J_^`NMW0k#(q1ocBf)gRX^$$q;ezoGT&s}%9LHNMOdU+nJ%Ttv$
zzw$B9T3LF&L3!Kx56atq_2_r-ooC}*vwO2A>+3gbWN(!pz0)3d^hK;@_;dwX&d&$e
zxX&-2u}Q#~p)Y3J4;N+2-bpFTwemK;*>ig$GiSb%RL#?{+7G*JRu-{OTyM4BO8@kv
zRidA|0#|E)-55~ty77|~`x>rmGZRGX175~%bUyL(WOMk=+rBaXuPGZmaO5wr`tnAg
zMO19r`vpg3<r23fow}OVpjhpFfO-GhIZxRRUX|UME%n~B>EKJbh(P8U(}b9>B*yks
zH}t+Ltu$z^X8msN!*{%=dB!TP<z-SiJi33m=Uaq)zp-G=t<yUuUY5F3^gGCH#^>#?
z-X5<Pd;ct8(aTe1I!o7^-(Kml{r;)n2cn+VF4<Nszpmw8yT-!rAH7~2)Lt01;MyIA
zLwYf<>+-VW=7~L*G12Cb*cK}OX2+));a598Uu!cKp7oK9`-G{1Ec0%+{SA@K_s_nW
zGOxwhX<FjO>(lnHH@p4n{pzM^J(J7rm&$8QD6s#qxp;2<0X`KqdF{ZPvsT<vd&9i+
zm2;2h)>A){Q;cUVlrXNW`gELg`I+3eOLBIeG7^!=pIm+@L#bVxU59tUiCgg#4!w{*
zQFB9zeO>yhV=b>|YTXgInwfp`$(6w8zxtLjmI`k>b;U_f{YiSkCcESbDt-&@?iF8f
z;`|{G$L8v7Q?@U)`%qLLC~xrnrr>qXu$@(TUQB!EmU1j}{QhI@3*Y7?`<@0qDgMK5
zvc29vHCn62?d+kc8^6sCZ}i^z)}`?6p=H8HgVXM}ZWX9`<0ode<{A&L-Hgd{_llgC
z_D)Nm`}K?s%cKOq;9~WMGdJyc&F<5-nn(HRB?htT_E#%D{C=|I2TN^HOnrUF!o8&p
zs&j7Uum=RCf0s=tdtYWV!Kfh2_xfh>51;gY1hPatmO8?{P-Mb{qNMU#hxNN#O{Q$w
z_c2qUthz#s!@A@Vi^ROckG6aGK4Q3XicRodn%Tz--!^%dCu+|QdhjM?I(N2mbWOx>
zjulOLx=FW1%8vg?yjc6Yp>KM^F=;)sdgrx2_a#pZpSEl5luaFXF0Idgw&v*E?B_WT
zoq6Z#eh>0aKmYtd4eP$Em#?4C-aF?>ovr`63saUm*D1@~pJ}+~bflcN%erMH`fj>x
z^5NCTy)w!_GzEO!GI`;P^IUtEYTATsoyX@LDf@ZdG5(lt%X$@-o+&&Zm372cye+=-
zBKCcDJ;TQHmeSX|BksraXsaF8YZJMAQhX7o^#{?$BPEQ@hApz6a(*N<+DTjXJbc7+
za76^?u65Uow0?E<om!c(!z(b5QQJkBD@Ibw!oxM=(E%+-UhYuFbNq9Cm>R<yHa4pU
zUrZ2n@clXAxApbCIkOuakCrn^<T)Q%f6vwN+m>IF*XuQmqP4H2sX287oC^v)Bja#n
z@116;MQT?ZE|@OtWLwMWYZBtSBKY8}CNq&Onkx=7&T2B_TcMee&^U`Ja?0~#<<+mQ
zf1TTIT5){icDC;<+~U0lQ_~I`Z+T|=ys7+Gz}nLbOf~;VF+Pr4kSf2n(pu&jW1C9V
zy;lbe!e*Bp3OqZrUfbZvzIW!cw{1Tg9VdOi|M0f{|C<t>wrunjD>1&kuzA}SS*wub
z+baVvpWfcsq<7CuW=qNK0`*qz=ch|HF1Y6-%>UqgNuz_DFE`JV%N4Khm-Wv#Kl*5H
z;%$%3%4u~Ur|0YZaV=P^#oYK?YU4}Moz2W^gksGiw!Uz04(naV(eSGNB0uXYCEE}C
z{xTkGw$?jWQk%Vip>*v@*2|mq#6phGs$ls0im9<=HS0Fh{b_%Li}SYctja9gUYWNu
zYVRf4vvRYnxx-~Pujp+_|FmJx&YKTPmdn?w{BCP14-mZBpK$Wrx<~7|BV|s?UMk>t
zXDPb<sr|zB5px5i4@^70zxa&b(c|^ai_5ZAST^qWikkeiU{Ar6;9GOIm`uy<+Yo>G
zNv}*%o7KV>6^|Blhb}rJ^{RNz?z_Qj?Re9kTe)ofSlRQt=Vr;0>F>Kur2n`HU7EYm
zV5+YAi#;mVI`5uIuxOSq64ZNcz0QdDXsg~${njRRjUvyxMt|CxzA0`J`|;dn9oKZ{
z!1{K-(rpe^7FEr<k?E!n&j`i_Pn@@S)`NrBS<ZX<ez<dug+DIcwnDdJ>8oVNSrHEx
znMvtpKX|a`#>qV#>IQ4{d!A`JoL*zWH|u#5_r1PrJEn@(+8W)N7n0E&E`99q!w0;R
zpE0do-gxVkhISd>i>zm}_mmpu`bO&rhEKT=ac}3L`kg0)dS5O$Y;W5(fql+Pbx($l
zsf??*YTKIkde~grzhIB!My4D=VZ)pj_1jj=6WrcSREsDR^}qgZ(z5R-H*69v4NKqM
zds5}|?H&;(0Zn!W+XB;qy<ALlqIO#4K5A1_urO{*$X@2XpyWtK%Z)YznH!Z)tbb?J
zu*>(pf1vzKwx&L1cd^jTcX!;jS^tnIVV7%u_n>+G+{q8JpPT)-b&x&Y`iDm*yUdL@
z49v4-0}?hDi`;l4!)j)|z40uc*@l~zTsdWWOtWQ65;h;!xbx)XyoC>5%Sy_G?l`nu
zG|PE$`5wEEJmuH8`d=;8zb~-#_&=}W3ES7X>Rjhp%yXKV$2BHnTm57ynOU<=-DBMJ
zb;6Sm1t&wFrdvzAOpv*BP+-a7i|*{q{ST7+798&NbCc43kvnOl@B}ZdYe83cuiDx4
z`+?N|1GYlKf^Qn89oW<`D^56~qCjQ-E$a`C4)sNhf8Q|uGB3!uRZ{18bB>JN&W3+a
zn10=4z4EVm<;zK|m3Q}BmrRemUte5lQ@!(%(rZuUS4uyercYXX=F|4b_QF~oR<&RM
zBcIrwoB3gr-nPR5o2rv`@K1=!<9)Ya%US)`b}zD){8l}CMevaGTNVBJUshIrk@@+x
z(6%luuC4Of;#V8`ijoovef_z=IRCjfQ!2uLSIkRQ%}*(BuSG^PFW_dWEP1%<cCeLf
zecA81DVN00?%c!0===DQ-)$lP=WjVheD2-0>zw{fa{sqfac<-862<q+K1pm;nf+Pk
zkE_;#sMxC>>n5`muE@_m7T$B2b^SR}*_k#AxrN{Qc}9oMat+M<^5eRP&}8;1y;DD(
z9|ujIc)nit=bszf6P4%7|J>L6TPxF}`R5}2hc&0`UrgQ*RlIg>&9#fi4t`m>>YTJ%
zw&8Rw{qi+tCu|+(s61INZ(kd>f#YqVN+HkwL^XclRla@qo~ulXHQ~<no6UK}SFbuP
zY4W3G75Da>So6)t_VwE(cUu^}Tv(qw{=3|7A2;#hvB$r)=h-h>&$GAt+N&=wpU<z~
zr{!35K+yI|{Ng?JE8>%K|IK0D$nkb}{GPI%ANT%mKEGEvsp8)!v-s0-jgbl8cz-ym
z{OyWtzO-w3p!C<>(>7@Dtz5mbP=oXN(=^sSZGxwYPPis$9-a~x@s_do%PQ`!#W`F5
zY+L)}Syf=gR&8TT<?rpx%MR&mo_6CF@7xdFm1|;FhNw)xn^dP$5?fs_DC_mPjxqRd
zv;VV2YO;k>zA=1Box83gW#Rs03-j)PiCpjBx!jl_`|-~=+0DUaI`=m`7v9)bw_@hW
z?oY~VpU&sq@@&b+^do$lNr$#(T+aG#viaWzhwl2P+aoVqOtVt>UZ=w~;b~`v;)eD9
zjqhs?>{H*;GIyVizJ9jc@kocqQ=Zj(o@iF?bNzEw@taMshUmF#&yGdi|8f4m&>fq{
zhZb~3{r`Tt)WYSxi`}pL;Wl0OpZfJ2GGG66!=4*!tX?%3&vXj;d&Q(Zbkd`&NblmE
z5?<SP1?ihT6*i8YTN})<Pji9M^1Y`2^?!Xoq!N81WxdmFpUTesUFjWj)7a;PNQFC{
z4XvN+SnAVNVKn(`z}(+0hktRKzMmnrV%=HW+QKr0n@%1+N7$eEMxGTCQT^MR@_F{7
zi#Hp)+#J7s=AQg#`|0~HJof7vJ-p<xvRn9UtM_N!ND;gA<#(j6xh>hh{Qk4`A<rxS
z?N|Ex=V^4%mPyPn4*i_pQ5Uo_eXiAg(_@?OxAvc0pItwF-=e)MH0Ia+J1*M$B;4)Z
z%iSv&!V8ppRK7j0kNK#<S#W8K%~93AVg0}QXWDqJxudw~W69q(zvB2g2Mps~FUGvH
zGrS+<x1}_^UpjoxVMBAS;FjRFohu3^ebsm;e$qOA;jUG}r}np2PVqc-=EahtE2qMb
zFS-aCTd82bT)9Z2p56A2>OP}srKZzOU%T2bI9d26d;SUjCkzt;A6xDE-LbN%b52pu
z^C{`4XSkh?n6ja2Lqc(J!!r4I)>nR=J#=T<ZpE`t19N6ge92mFr{DJ{D>>>r_oP40
z`^s(_@AcxFxZ-W$1`efDsVa-O7Ou=l?|&Axy2SONrohsRDigfInMEV(<^7G0FSr_z
zwe%s&q_|624o??rSOq)`mVMlI=<D6<tp8Kqby%gmJM-)O&X??Eeuq|OJr$pFEpqOy
zE4!8kPZ!_nuFP9I_2kV53s?QUvu|?v>OU*9qUTE7Z{+?fS@ZUnuvE4Crc-qtVn&PK
zG6n3fx!AE%xAxc0v*}s)J&y4Hy0s>}UcW8F_o$)Rf>Y1g&d+~oJ-5_9^sTztxtO(?
z=eO;!+g%fuVE^OI$)?YnUKiZ6VcaD2oZEO>k$io4XwC{X)BYaa_4*-?T0QqnxFM&m
zVXJ$l_tW3h==FCM9~$Y0yxBHE|9Z~<XvMiJ4m3N)M)B0z?YY9eYS${&|Eoeix2YUT
zoqfN4WpJ(hq)Vm-{=&Da8r57=9y7VKe&N3Ce<9)PmyADKFPjE3gsAKfI9kiPgy(Z8
zlilh&omHJ%=I|_(c=rD01-Ia@Ptwg7uae=)P1jB-k6&Q-;=nt{V&jTM8$aJ#c4G5F
z(-+e}s-5?(&^<4E__l5LnHZyUK80UCy*ZR8Uwffgy1D*L{1abi{pOH~p*;}=Ij`FG
zr7>BT)_3z&9P8Iu`d(v_->c>R({0bc<5}Rg?e}x`vuAhR-#JG}H>pVE>8Z)Hwq8^J
zvU$}~?qbtEqio+JFa1N$UYt4GQh(Lz#A~+_7TA~m&7StGDA0IrsPV0tu~+@q`0v${
z4W4W)t1lFJ_g1s=-{LL5cJwX$qOz`EZ7yqR+uT!YuCi@Qt5r6CzR`{O6ldV(dw~x>
zPuS$WC^BaG&7TWb*1dS3aBa`FC!d#I3$}l}X{J@o^@j&DOLE)Y&qa%Q#!9@}@+0)#
loLXVOr8!B5kNxd__%YuqQrP<UXOGXX@4foZaI0S7HUPSWc546t

diff --git a/doc/html/portableIO.html b/doc/html/portableIO.html
index 4fb4577a..b1fbc6e8 100644
--- a/doc/html/portableIO.html
+++ b/doc/html/portableIO.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Using Binary Files In ProMod3 &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Using Binary Files In ProMod3 &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="index.html" />
     <link rel="up" title="Documentation For Developers" href="developers.html" />
     <link rel="next" title="License" href="license.html" />
     <link rel="prev" title="ProMod3‘s Share Of CMake" href="cmake/index.html" />
@@ -75,8 +75,8 @@ automatically done in the <code class="docutils literal"><span class="pre">make<
 tests in <code class="file docutils literal"><span class="pre">test_check_io.cc</span></code> and <code class="file docutils literal"><span class="pre">test_portable_binary.cc</span></code> and in the
 C++ code of the classes listed above (see methods Load, Save, LoadPortable and
 SavePortable).</p>
-<div class="section" id="header">
-<h2>Header<a class="headerlink" href="#header" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="file-header">
+<h2>File Header<a class="headerlink" href="#file-header" title="Permalink to this headline">¶</a></h2>
 <p>The header is written/read with functions provided in the header file
 <code class="file docutils literal"><span class="pre">promod3/core/check_io.hh</span></code>. The header is written/read before the data
 itself and is structured as follows:</p>
@@ -438,7 +438,7 @@ in the <code class="file docutils literal"><span class="pre">extras/data_generat
   <h3><a href="index.html">Table Of Contents</a></h3>
   <ul>
 <li><a class="reference internal" href="#">Using Binary Files In ProMod3</a><ul>
-<li><a class="reference internal" href="#header">Header</a></li>
+<li><a class="reference internal" href="#file-header">File Header</a></li>
 <li><a class="reference internal" href="#portable-binary-data">Portable Binary Data</a></li>
 <li><a class="reference internal" href="#code-example">Code Example</a></li>
 <li><a class="reference internal" href="#exisiting-binary-files">Exisiting Binary Files</a></li>
@@ -478,7 +478,7 @@ in the <code class="file docutils literal"><span class="pre">extras/data_generat
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/py-modindex.html b/doc/html/py-modindex.html
index dfe91145..47841194 100644
--- a/doc/html/py-modindex.html
+++ b/doc/html/py-modindex.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Python Module Index &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Python Module Index &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="index.html" />
 
    
   <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -132,7 +132,7 @@
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/references.html b/doc/html/references.html
index c6a96646..d0836ee0 100644
--- a/doc/html/references.html
+++ b/doc/html/references.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>References &mdash; ProMod3 1.3.0 documentation</title>
+    <title>References &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="index.html" />
     <link rel="next" title="Changelog" href="changelog.html" />
     <link rel="prev" title="License" href="license.html" />
    
@@ -204,7 +204,7 @@ Fragments. Proteins.</td></tr>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/scoring/all_atom_scorers.html b/doc/html/scoring/all_atom_scorers.html
index 0fce2172..9c9f5822 100644
--- a/doc/html/scoring/all_atom_scorers.html
+++ b/doc/html/scoring/all_atom_scorers.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>All Atom Scorers &mdash; ProMod3 1.3.0 documentation</title>
+    <title>All Atom Scorers &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="scoring - Loop Scoring" href="index.html" />
     <link rel="next" title="Other Scoring Functions" href="other_scoring_functions.html" />
     <link rel="prev" title="Backbone Scorers" href="backbone_scorers.html" />
@@ -672,7 +672,7 @@ of residues in the input loop. True by default.</td>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/scoring/backbone_score_env.html b/doc/html/scoring/backbone_score_env.html
index a5a744a7..6235608c 100644
--- a/doc/html/scoring/backbone_score_env.html
+++ b/doc/html/scoring/backbone_score_env.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Backbone Score Environment &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Backbone Score Environment &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="scoring - Loop Scoring" href="index.html" />
     <link rel="next" title="Backbone Scorers" href="backbone_scorers.html" />
     <link rel="prev" title="scoring - Loop Scoring" href="index.html" />
@@ -69,8 +69,8 @@ task.</p>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>seqres</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a> /
-<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceList</span></code></a>) &#8211; Internal SEQRES to be set (single chain or list with one per
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>seqres</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a> /
+<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceList</span></code></a>) &#8211; Internal SEQRES to be set (single chain or list with one per
 chain). Whenever setting structural data, consistency with this SEQRES is enforced.</td>
 </tr>
 </tbody>
@@ -107,7 +107,7 @@ structural data was already set, all the existing data gets cleared first.</p>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>env_structure</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityHandle</span></code></a>) &#8211; Structral data to be set as environment. The chains
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>env_structure</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityHandle</span></code></a>) &#8211; Structral data to be set as environment. The chains
 in <em>env_structure</em> are expected to be in the same
 order as the SEQRES items provided in constructor.</td>
 </tr>
@@ -131,7 +131,7 @@ positions.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>bb_list</strong> (<a class="reference internal" href="../loop/backbone.html#promod3.loop.BackboneList" title="promod3.loop.BackboneList"><code class="xref py py-class docutils literal"><span class="pre">BackboneList</span></code></a>) &#8211; Structural data to be set as environment.</li>
-<li><strong>start_resnum</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResNum</span></code></a>) &#8211; Res. number defining the position in the SEQRES.</li>
+<li><strong>start_resnum</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a> / <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResNum</span></code></a>) &#8211; Res. number defining the position in the SEQRES.</li>
 <li><strong>chain_idx</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Index of chain the structural data belongs to.</li>
 </ul>
 </td>
@@ -280,7 +280,7 @@ providing lists of integers.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">SEQRES that was set in constructor (one sequence per chain).</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceList</span></code></a></td>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceList</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -387,7 +387,7 @@ The constraint functions are built after the principle of QMEANDisCo.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>seqres</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a>) &#8211; The sequence with which all added structures must match</li>
+<li><strong>seqres</strong> (<a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceHandle</span></code></a>) &#8211; The sequence with which all added structures must match</li>
 <li><strong>function_type</strong> (<a class="reference internal" href="#promod3.scoring.PairwiseFunctionType" title="promod3.scoring.PairwiseFunctionType"><code class="xref py py-class docutils literal"><span class="pre">PairwiseFunctionType</span></code></a>) &#8211; Whether you want to assess pairwise distances between CA
 or CB atoms</li>
 </ul>
@@ -402,7 +402,7 @@ or CB atoms</li>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>aln</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.AlignmentHandle</span></code></a>) &#8211; Alignment, where first sequence represent the initial
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>aln</strong> (<a class="reference external" href="https://www.openstructure.org/docs/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.AlignmentHandle</span></code></a>) &#8211; Alignment, where first sequence represent the initial
 SEQRES and the second sequence the actual structural
 info. The second sequence must have a view attached.</td>
 </tr>
@@ -508,7 +508,7 @@ inconsistent with SEQRES you initialized the DiscoContainer with</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/scoring/backbone_scorers.html b/doc/html/scoring/backbone_scorers.html
index 986fd44d..7b8ad9e7 100644
--- a/doc/html/scoring/backbone_scorers.html
+++ b/doc/html/scoring/backbone_scorers.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Backbone Scorers &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Backbone Scorers &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="scoring - Loop Scoring" href="index.html" />
     <link rel="next" title="All Atom Scorers" href="all_atom_scorers.html" />
     <link rel="prev" title="Backbone Score Environment" href="backbone_score_env.html" />
@@ -381,7 +381,7 @@ called for every type of amino acids and for every <em>count</em> &lt;= <em>max_
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; Amino acid for which to set energy.</li>
+<li><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; Amino acid for which to set energy.</li>
 <li><strong>count</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Number of surrounding CB positions for which to set energy.</li>
 <li><strong>energy</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Energy to set for those parameters.</li>
 </ul>
@@ -515,8 +515,8 @@ SetEnergy(aa2, aa1, bin, energy).</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>aa1</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; Amino acid for first interaction partner.</li>
-<li><strong>aa2</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; Amino acid for second interaction partner.</li>
+<li><strong>aa1</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; Amino acid for first interaction partner.</li>
+<li><strong>aa2</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; Amino acid for second interaction partner.</li>
 <li><strong>bin</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Discrete bin describing the interaction distance.</li>
 <li><strong>energy</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Energy to set for those parameters.</li>
 </ul>
@@ -695,8 +695,8 @@ SetEnergy(aa2, aa1, dist_bin, beta_bin, alpha_bin, energy).</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>aa1</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; Amino acid for first interaction partner.</li>
-<li><strong>aa2</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; Amino acid for second interaction partner.</li>
+<li><strong>aa1</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; Amino acid for first interaction partner.</li>
+<li><strong>aa2</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; Amino acid for second interaction partner.</li>
 <li><strong>dist_bin</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Discrete bin describing the interaction distance.</li>
 <li><strong>alpha_bin</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Discrete bin describing the alpha angle.</li>
 <li><strong>beta_bin</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Discrete bin describing the beta angle.</li>
@@ -1388,7 +1388,7 @@ of residues to be scored. True by default.</td>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/scoring/index.html b/doc/html/scoring/index.html
index 000b9b1b..f56b23ba 100644
--- a/doc/html/scoring/index.html
+++ b/doc/html/scoring/index.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>scoring - Loop Scoring &mdash; ProMod3 1.3.0 documentation</title>
+    <title>scoring - Loop Scoring &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="Documentation For Users" href="../users.html" />
     <link rel="next" title="Backbone Score Environment" href="backbone_score_env.html" />
     <link rel="prev" title="Subrotamer Optimization" href="../sidechain/subrotamer_optimizer.html" />
@@ -152,7 +152,7 @@ scorers to it and finally score some loops:</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/scoring/other_scoring_functions.html b/doc/html/scoring/other_scoring_functions.html
index 808f5acc..57c6c16d 100644
--- a/doc/html/scoring/other_scoring_functions.html
+++ b/doc/html/scoring/other_scoring_functions.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Other Scoring Functions &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Other Scoring Functions &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="scoring - Loop Scoring" href="index.html" />
     <link rel="next" title="loop - Loop Handling" href="../loop/index.html" />
     <link rel="prev" title="All Atom Scorers" href="all_atom_scorers.html" />
@@ -159,7 +159,7 @@ construction algorithm <a class="reference internal" href="../references.html#ca
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/search.html b/doc/html/search.html
index 385d102b..4eb4082b 100644
--- a/doc/html/search.html
+++ b/doc/html/search.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Search &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Search &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -25,7 +25,7 @@
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
     <script type="text/javascript" src="_static/searchtools.js"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="index.html" />
   <script type="text/javascript">
     jQuery(function() { Search.loadIndex("searchindex.js"); });
   </script>
@@ -87,7 +87,7 @@
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js
index 97200f95..7b6f6337 100644
--- a/doc/html/searchindex.js
+++ b/doc/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({envversion:47,filenames:["actions/index","actions/index_dev","buildsystem","changelog","cmake/index","container/docker","container/index","container/singularity","contributing","core/geometry","core/graph_minimizer","core/helper","core/index","core/pm3argparse","core/runtime_profiling","core/setcompoundschemlib","dev_setup","developers","gettingstarted","index","license","loop/all_atom","loop/backbone","loop/index","loop/load_loop_objects","loop/mm_system_creation","loop/structure_db","loop/torsion_sampler","modelling/algorithms","modelling/gap_handling","modelling/index","modelling/loop_candidates","modelling/loop_closing","modelling/model_checking","modelling/monte_carlo","modelling/pipeline","modelling/sidechain_reconstruction","portableIO","references","scoring/all_atom_scorers","scoring/backbone_score_env","scoring/backbone_scorers","scoring/index","scoring/other_scoring_functions","sidechain/disulfid","sidechain/frame","sidechain/graph","sidechain/index","sidechain/loading","sidechain/rotamer","sidechain/rotamer_constructor","sidechain/rotamer_id","sidechain/rotamer_lib","sidechain/subrotamer_optimizer","users"],objects:{"":{"--backbone-independent":[0,7,1,"cmdoption--backbone-independent"],"--keep-sidechains":[0,7,1,"cmdoption--keep-sidechains"],"--no-disulfids":[0,7,1,"cmdoption--no-disulfids"],"--no-subrotamer-optimization":[0,7,1,"cmdoption--no-subrotamer-optimization"],"--rigid-rotamers":[0,7,1,"cmdoption--rigid-rotamers"],"-i":[0,7,1,"cmdoption-i"],"-k":[0,7,1,"cmdoption-k"],"-n":[0,7,1,"cmdoption-n"],"-r":[0,7,1,"cmdoption-r"],"-s":[0,7,1,"cmdoption-s"],"command:add_doc_dependency":[4,0,1,""],"command:add_doc_source":[4,0,1,""],"command:convert_module_data":[4,0,1,""],"command:module":[4,0,1,""],"command:pm_action":[4,0,1,""],"command:promod3_unittest":[4,0,1,""],"command:pymod":[4,0,1,""],test_actions:[1,2,0,"-"]},"promod3.core":{ConstructAtomPos:[9,1,1,""],ConstructCBetaPos:[9,1,1,""],ConstructCTerminalOxygens:[9,1,1,""],EvaluateGromacsPosRule:[9,1,1,""],GraphMinimizer:[10,3,1,""],RotationAroundLine:[9,1,1,""],StaticRuntimeProfiler:[14,3,1,""],StemCoords:[9,3,1,""],StemPairOrientation:[9,3,1,""],helper:[11,2,0,"-"],pm3argparse:[13,2,0,"-"]},"promod3.core.GraphMinimizer":{AStarSolve:[10,4,1,""],AddEdge:[10,4,1,""],AddNode:[10,4,1,""],ApplyDEE:[10,4,1,""],ApplyEdgeDecomposition:[10,4,1,""],MCSolve:[10,4,1,""],NaiveSolve:[10,4,1,""],Prune:[10,4,1,""],Reset:[10,4,1,""],TreeSolve:[10,4,1,""]},"promod3.core.StaticRuntimeProfiler":{Clear:[14,5,1,""],IsEnabled:[14,5,1,""],PrintSummary:[14,5,1,""],Start:[14,5,1,""],StartScoped:[14,5,1,""],Stop:[14,5,1,""]},"promod3.core.StemCoords":{c_coord:[9,6,1,""],ca_coord:[9,6,1,""],n_coord:[9,6,1,""]},"promod3.core.StemPairOrientation":{angle_four:[9,6,1,""],angle_one:[9,6,1,""],angle_three:[9,6,1,""],angle_two:[9,6,1,""],distance:[9,6,1,""]},"promod3.core.helper":{FileExists:[11,1,1,""],FileExtension:[11,1,1,""],FileGzip:[11,1,1,""],MsgErrorAndExit:[11,1,1,""]},"promod3.core.pm3argparse":{PM3ArgumentParser:[13,3,1,""]},"promod3.core.pm3argparse.PM3ArgumentParser":{"__init__":[13,4,1,""],AddAlignment:[13,4,1,""],AddProfile:[13,4,1,""],AddStructure:[13,4,1,""],AssembleParser:[13,4,1,""],Parse:[13,4,1,""],action:[13,6,1,""]},"promod3.loop":{AllAtomEnv:[21,3,1,""],AllAtomEnvPositions:[21,3,1,""],AllAtomPositions:[21,3,1,""],AminoAcidAtom:[21,3,1,""],AminoAcidHydrogen:[21,3,1,""],AminoAcidLookup:[21,3,1,""],BackboneList:[22,3,1,""],CoordInfo:[26,3,1,""],ForcefieldAminoAcid:[25,3,1,""],ForcefieldBondInfo:[25,3,1,""],ForcefieldConnectivity:[25,3,1,""],ForcefieldHarmonicAngleInfo:[25,3,1,""],ForcefieldHarmonicImproperInfo:[25,3,1,""],ForcefieldLJPairInfo:[25,3,1,""],ForcefieldLookup:[25,3,1,""],ForcefieldPeriodicDihedralInfo:[25,3,1,""],ForcefieldUreyBradleyAngleInfo:[25,3,1,""],FragDB:[26,3,1,""],Fragger:[26,3,1,""],FraggerMap:[26,3,1,""],FragmentInfo:[26,3,1,""],LoadFragDB:[24,4,1,""],LoadStructureDB:[24,4,1,""],LoadTorsionSampler:[24,4,1,""],LoadTorsionSamplerCoil:[24,4,1,""],LoadTorsionSamplerExtended:[24,4,1,""],LoadTorsionSamplerHelical:[24,4,1,""],MmSystemCreator:[25,3,1,""],PsipredPrediction:[26,3,1,""],StructureDB:[26,3,1,""],StructureDBDataType:[26,3,1,""],TorsionSampler:[27,3,1,""]},"promod3.loop.AllAtomEnv":{ClearEnvironment:[21,4,1,""],GetAllAtomPositions:[21,4,1,""],GetEnvironment:[21,4,1,""],GetSeqres:[21,4,1,""],SetEnvironment:[21,4,1,""],SetInitialEnvironment:[21,4,1,""]},"promod3.loop.AllAtomEnvPositions":{all_pos:[21,6,1,""],res_indices:[21,6,1,""]},"promod3.loop.AllAtomPositions":{AllAtomPositions:[21,4,1,""],ClearPos:[21,4,1,""],ClearResidue:[21,4,1,""],Copy:[21,4,1,""],Extract:[21,4,1,""],ExtractBackbone:[21,4,1,""],GetAA:[21,4,1,""],GetFirstIndex:[21,4,1,""],GetIndex:[21,4,1,""],GetLastIndex:[21,4,1,""],GetNumAtoms:[21,4,1,""],GetNumResidues:[21,4,1,""],GetOmegaTorsion:[21,4,1,""],GetPhiTorsion:[21,4,1,""],GetPos:[21,4,1,""],GetPsiTorsion:[21,4,1,""],GetSequence:[21,4,1,""],InsertInto:[21,4,1,""],IsAllSet:[21,4,1,""],IsAnySet:[21,4,1,""],IsSet:[21,4,1,""],SetPos:[21,4,1,""],SetResidue:[21,4,1,""],ToEntity:[21,4,1,""]},"promod3.loop.AminoAcidLookup":{GetAA:[21,5,1,""],GetAAA:[21,5,1,""],GetAAH:[21,5,1,""],GetAnchorAtomIndex:[21,5,1,""],GetAtomName:[21,5,1,""],GetAtomNameAmber:[21,5,1,""],GetAtomNameCharmm:[21,5,1,""],GetElement:[21,5,1,""],GetH1Index:[21,5,1,""],GetH2Index:[21,5,1,""],GetH3Index:[21,5,1,""],GetHNIndex:[21,5,1,""],GetHydrogenIndex:[21,5,1,""],GetIndex:[21,5,1,""],GetMaxNumAtoms:[21,5,1,""],GetMaxNumHydrogens:[21,5,1,""],GetNumAtoms:[21,5,1,""],GetNumHydrogens:[21,5,1,""],GetOLC:[21,5,1,""]},"promod3.loop.BackboneList":{"__len__":[22,4,1,""],ApplyTransform:[22,4,1,""],BackboneList:[22,4,1,""],CARMSD:[22,4,1,""],Copy:[22,4,1,""],Extract:[22,4,1,""],GetAA:[22,4,1,""],GetBounds:[22,4,1,""],GetC:[22,4,1,""],GetCA:[22,4,1,""],GetCB:[22,4,1,""],GetN:[22,4,1,""],GetO:[22,4,1,""],GetOLC:[22,4,1,""],GetOmegaTorsion:[22,4,1,""],GetPhiTorsion:[22,4,1,""],GetPsiTorsion:[22,4,1,""],GetSequence:[22,4,1,""],GetTransform:[22,4,1,""],InsertInto:[22,4,1,""],MinCADistance:[22,4,1,""],RMSD:[22,4,1,""],ReconstructCBetaPositions:[22,4,1,""],ReconstructCStemOxygen:[22,4,1,""],ReconstructOxygenPositions:[22,4,1,""],ReplaceFragment:[22,4,1,""],RotateAroundOmegaTorsion:[22,4,1,""],RotateAroundPhiPsiTorsion:[22,4,1,""],RotateAroundPhiTorsion:[22,4,1,""],RotateAroundPsiTorsion:[22,4,1,""],Set:[22,4,1,""],SetAA:[22,4,1,""],SetAroundOmegaTorsion:[22,4,1,""],SetAroundPhiPsiTorsion:[22,4,1,""],SetAroundPhiTorsion:[22,4,1,""],SetAroundPsiTorsion:[22,4,1,""],SetBackrub:[22,4,1,""],SetC:[22,4,1,""],SetCA:[22,4,1,""],SetCB:[22,4,1,""],SetN:[22,4,1,""],SetO:[22,4,1,""],SetOLC:[22,4,1,""],SetSequence:[22,4,1,""],SuperposeOnto:[22,4,1,""],ToDensity:[22,4,1,""],ToEntity:[22,4,1,""],TransOmegaTorsions:[22,4,1,""],append:[22,4,1,""],clear:[22,4,1,""],empty:[22,4,1,""],resize:[22,4,1,""]},"promod3.loop.CoordInfo":{chain_name:[26,6,1,""],id:[26,6,1,""],offset:[26,6,1,""],shift:[26,6,1,""],size:[26,6,1,""],start_resnum:[26,6,1,""]},"promod3.loop.ForcefieldBondInfo":{bond_length:[25,6,1,""],force_constant:[25,6,1,""],index_one:[25,6,1,""],index_two:[25,6,1,""]},"promod3.loop.ForcefieldConnectivity":{harmonic_angles:[25,6,1,""],harmonic_bonds:[25,6,1,""],harmonic_impropers:[25,6,1,""],lj_pairs:[25,6,1,""],periodic_dihedrals:[25,6,1,""],periodic_impropers:[25,6,1,""],urey_bradley_angles:[25,6,1,""]},"promod3.loop.ForcefieldHarmonicAngleInfo":{angle:[25,6,1,""],force_constant:[25,6,1,""],index_one:[25,6,1,""],index_three:[25,6,1,""],index_two:[25,6,1,""]},"promod3.loop.ForcefieldHarmonicImproperInfo":{angle:[25,6,1,""],force_constant:[25,6,1,""],index_four:[25,6,1,""],index_one:[25,6,1,""],index_three:[25,6,1,""],index_two:[25,6,1,""]},"promod3.loop.ForcefieldLJPairInfo":{epsilon:[25,6,1,""],index_one:[25,6,1,""],index_two:[25,6,1,""],sigma:[25,6,1,""]},"promod3.loop.ForcefieldLookup":{GetAA:[25,4,1,""],GetCharges:[25,4,1,""],GetDefault:[25,5,1,""],GetDisulfidConnectivity:[25,4,1,""],GetEpsilons:[25,4,1,""],GetFudgeLJ:[25,4,1,""],GetFudgeQQ:[25,4,1,""],GetHeavyIndex:[25,4,1,""],GetHydrogenIndex:[25,4,1,""],GetInternalConnectivity:[25,4,1,""],GetMasses:[25,4,1,""],GetNumAtoms:[25,4,1,""],GetOXTIndex:[25,4,1,""],GetPeptideBoundConnectivity:[25,4,1,""],GetSigmas:[25,4,1,""],Load:[25,5,1,""],LoadCHARMM:[25,5,1,""],LoadPortable:[25,5,1,""],Save:[25,4,1,""],SavePortable:[25,4,1,""],SetCharges:[25,4,1,""],SetDefault:[25,5,1,""],SetDisulfidConnectivity:[25,4,1,""],SetEpsilons:[25,4,1,""],SetFudgeLJ:[25,4,1,""],SetFudgeQQ:[25,4,1,""],SetInternalConnectivity:[25,4,1,""],SetMasses:[25,4,1,""],SetPeptideBoundConnectivity:[25,4,1,""],SetSigmas:[25,4,1,""]},"promod3.loop.ForcefieldPeriodicDihedralInfo":{force_constant:[25,6,1,""],index_four:[25,6,1,""],index_one:[25,6,1,""],index_three:[25,6,1,""],index_two:[25,6,1,""],multiplicity:[25,6,1,""],phase:[25,6,1,""]},"promod3.loop.ForcefieldUreyBradleyAngleInfo":{angle:[25,6,1,""],angle_force_constant:[25,6,1,""],bond_force_constant:[25,6,1,""],bond_length:[25,6,1,""],index_one:[25,6,1,""],index_three:[25,6,1,""],index_two:[25,6,1,""]},"promod3.loop.FragDB":{AddFragments:[26,4,1,""],GetAngularBinSize:[26,4,1,""],GetDistBinSize:[26,4,1,""],GetNumFragments:[26,4,1,""],GetNumStemPairs:[26,4,1,""],HasFragLength:[26,4,1,""],Load:[26,5,1,""],LoadPortable:[26,5,1,""],MaxFragLength:[26,4,1,""],PrintStatistics:[26,4,1,""],Save:[26,4,1,""],SavePortable:[26,4,1,""],SearchDB:[26,4,1,""]},"promod3.loop.Fragger":{"__getitem__":[26,4,1,""],"__len__":[26,4,1,""],AddSSAgreeParameters:[26,4,1,""],AddSeqIDParameters:[26,4,1,""],AddSeqSimParameters:[26,4,1,""],AddSequenceProfileParameters:[26,4,1,""],AddStructureProfileParameters:[26,4,1,""],AddTorsionProbabilityParameters:[26,4,1,""],Fill:[26,4,1,""],GetFragmentInfo:[26,4,1,""],GetScore:[26,4,1,""]},"promod3.loop.FraggerMap":{"__getitem__":[26,4,1,""],"__setitem__":[26,4,1,""],Contains:[26,4,1,""],Load:[26,4,1,""],LoadBB:[26,4,1,""],Save:[26,4,1,""],SaveBB:[26,4,1,""]},"promod3.loop.FragmentInfo":{chain_index:[26,6,1,""],length:[26,6,1,""],offset:[26,6,1,""]},"promod3.loop.MmSystemCreator":{ExtractLoopPositions:[25,4,1,""],GetCpuPlatformSupport:[25,4,1,""],GetDisulfidBridges:[25,4,1,""],GetForcefieldAminoAcids:[25,4,1,""],GetIndexing:[25,4,1,""],GetLoopLengths:[25,4,1,""],GetLoopStartIndices:[25,4,1,""],GetNumLoopResidues:[25,4,1,""],GetNumResidues:[25,4,1,""],GetSimulation:[25,4,1,""],SetCpuPlatformSupport:[25,4,1,""],SetupSystem:[25,4,1,""],UpdatePositions:[25,4,1,""]},"promod3.loop.PsipredPrediction":{"__len__":[26,4,1,""],Add:[26,4,1,""],Extract:[26,4,1,""],FromHHM:[26,4,1,""],FromHoriz:[26,4,1,""],GetConfidence:[26,4,1,""],GetConfidences:[26,4,1,""],GetPrediction:[26,4,1,""],GetPredictions:[26,4,1,""],PsipredPrediction:[26,4,1,""]},"promod3.loop.StructureDB":{AddCoordinates:[26,4,1,""],GenerateStructureProfile:[26,4,1,""],GetBackboneList:[26,4,1,""],GetCoordIdx:[26,4,1,""],GetCoordInfo:[26,4,1,""],GetDSSPStates:[26,4,1,""],GetDihedralAngles:[26,4,1,""],GetNumCoords:[26,4,1,""],GetResidueDepths:[26,4,1,""],GetSequence:[26,4,1,""],GetSequenceProfile:[26,4,1,""],GetSolventAccessibilitites:[26,4,1,""],GetStructureProfile:[26,4,1,""],GetSubDB:[26,4,1,""],HasData:[26,4,1,""],Load:[26,5,1,""],LoadPortable:[26,5,1,""],PrintStatistics:[26,4,1,""],RemoveCoordinates:[26,4,1,""],Save:[26,4,1,""],SavePortable:[26,4,1,""],SetStructureProfile:[26,4,1,""]},"promod3.loop.TorsionSampler":{Draw:[27,4,1,""],DrawPhiGivenPsi:[27,4,1,""],DrawPsiGivenPhi:[27,4,1,""],ExtractStatistics:[27,4,1,""],GetBinSize:[27,4,1,""],GetBinsPerDimension:[27,4,1,""],GetHistogramIndex:[27,4,1,""],GetHistogramIndices:[27,4,1,""],GetPhiProbabilityGivenPsi:[27,4,1,""],GetProbability:[27,4,1,""],GetPsiProbabilityGivenPhi:[27,4,1,""],Load:[27,5,1,""],LoadPortable:[27,5,1,""],Save:[27,4,1,""],SavePortable:[27,4,1,""],UpdateDistributions:[27,4,1,""]},"promod3.modelling":{AllAtomRelaxer:[32,3,1,""],BackboneRelaxer:[32,3,1,""],BuildFromRawModel:[35,1,1,""],BuildRawModel:[35,1,1,""],BuildSidechains:[35,1,1,""],CCD:[32,3,1,""],CCDCloser:[34,3,1,""],CTerminalCloser:[34,3,1,""],CheckFinalModel:[35,1,1,""],ClearGaps:[29,1,1,""],CloseGaps:[35,1,1,""],CloseLargeDeletions:[35,1,1,""],CloseSmallDeletions:[35,1,1,""],CloserBase:[34,3,1,""],CoolerBase:[34,3,1,""],CountEnclosedGaps:[29,1,1,""],CountEnclosedInsertions:[29,1,1,""],DeNovoCloser:[34,3,1,""],DirtyCCDCloser:[34,3,1,""],ExponentialCooler:[34,3,1,""],FillLoopsByDatabase:[35,1,1,""],FillLoopsByMonteCarlo:[35,1,1,""],FilterCandidates:[33,1,1,""],FilterCandidatesWithSC:[33,1,1,""],FraggerHandle:[28,3,1,""],FragmentSampler:[34,3,1,""],FullGapExtender:[29,3,1,""],GapExtender:[29,3,1,""],GenerateDeNovoTrajectories:[28,1,1,""],GetRingPunches:[33,1,1,""],GetRings:[33,1,1,""],HasRingPunches:[33,1,1,""],InsertLoop:[35,1,1,""],InsertLoopClearGaps:[29,1,1,""],IsAllAtomScoringSetUp:[35,1,1,""],IsBackboneScoringSetUp:[35,1,1,""],KIC:[32,3,1,""],KICCloser:[34,3,1,""],LinearScorer:[34,3,1,""],LoopCandidates:[31,3,1,""],MergeGaps:[29,1,1,""],MergeGapsByDistance:[35,1,1,""],MergeMHandle:[35,1,1,""],MinimizeModelEnergy:[35,1,1,""],ModelTermini:[35,1,1,""],ModellingHandle:[35,3,1,""],NTerminalCloser:[34,3,1,""],PhiPsiSampler:[34,3,1,""],ReconstructSidechains:[36,1,1,""],RemoveTerminalGaps:[35,1,1,""],ReorderGaps:[35,1,1,""],ReportMolProbityScores:[33,1,1,""],RigidBlocks:[28,4,1,""],RunMolProbity:[33,1,1,""],RunMolProbityEntity:[33,1,1,""],SampleMonteCarlo:[34,1,1,""],SamplerBase:[34,3,1,""],ScoreContainer:[31,3,1,""],ScorerBase:[34,3,1,""],ScoringGapExtender:[29,3,1,""],ScoringWeights:[31,3,1,""],SetPsipredPredictions:[35,1,1,""],SetSequenceProfiles:[35,1,1,""],SetupDefaultAllAtomScoring:[35,1,1,""],SetupDefaultBackboneScoring:[35,1,1,""],ShiftExtension:[29,3,1,""],SidechainReconstructionData:[36,3,1,""],SidechainReconstructor:[36,3,1,""],SoftSampler:[34,3,1,""],StructuralGap:[29,3,1,""],StructuralGapList:[29,3,1,""]},"promod3.modelling.AllAtomRelaxer":{GetSystemCreator:[32,4,1,""],Run:[32,4,1,""],UpdatePositions:[32,4,1,""]},"promod3.modelling.BackboneRelaxer":{AddCARestraint:[32,4,1,""],AddCBRestraint:[32,4,1,""],AddCRestraint:[32,4,1,""],AddNRestraint:[32,4,1,""],AddORestraint:[32,4,1,""],GetNonBondedCutoff:[32,4,1,""],Run:[32,4,1,""],SetNonBondedCutoff:[32,4,1,""]},"promod3.modelling.CCD":{CCD:[32,4,1,""],Close:[32,4,1,""]},"promod3.modelling.CCDCloser":{Close:[34,4,1,""]},"promod3.modelling.CTerminalCloser":{Close:[34,4,1,""]},"promod3.modelling.CloserBase":{Close:[34,4,1,""]},"promod3.modelling.CoolerBase":{GetTemperature:[34,4,1,""],Reset:[34,4,1,""]},"promod3.modelling.DeNovoCloser":{Close:[34,4,1,""]},"promod3.modelling.DirtyCCDCloser":{Close:[34,4,1,""]},"promod3.modelling.ExponentialCooler":{GetTemperature:[34,4,1,""],Reset:[34,4,1,""]},"promod3.modelling.FraggerHandle":{Get:[28,4,1,""],GetList:[28,4,1,""],LoadCached:[28,4,1,""],SaveCached:[28,4,1,""]},"promod3.modelling.FragmentSampler":{Initialize:[34,4,1,""],ProposeStep:[34,4,1,""]},"promod3.modelling.FullGapExtender":{Extend:[29,4,1,""]},"promod3.modelling.GapExtender":{Extend:[29,4,1,""]},"promod3.modelling.KIC":{Close:[32,4,1,""],KIC:[32,4,1,""]},"promod3.modelling.KICCloser":{Close:[34,4,1,""]},"promod3.modelling.LinearScorer":{GetScore:[34,4,1,""]},"promod3.modelling.LoopCandidates":{Add:[31,4,1,""],AddFragmentInfo:[31,4,1,""],ApplyCCD:[31,4,1,""],ApplyKIC:[31,4,1,""],CalculateAllAtomScores:[31,4,1,""],CalculateBackboneScores:[31,4,1,""],CalculateSequenceProfileScores:[31,4,1,""],CalculateStemRMSDs:[31,4,1,""],CalculateStructureProfileScores:[31,4,1,""],Extract:[31,4,1,""],FillFromDatabase:[31,5,1,""],FillFromMonteCarloSampler:[31,5,1,""],GetClusteredCandidates:[31,4,1,""],GetClusters:[31,4,1,""],GetFragmentInfo:[31,4,1,""],GetLargestCluster:[31,4,1,""],GetSequence:[31,4,1,""],HasFragmentInfos:[31,4,1,""],Remove:[31,4,1,""]},"promod3.modelling.ModellingHandle":{Copy:[35,4,1,""],all_atom_scorer:[35,6,1,""],all_atom_scorer_env:[35,6,1,""],all_atom_sidechain_env:[35,6,1,""],backbone_scorer:[35,6,1,""],backbone_scorer_env:[35,6,1,""],gaps:[35,6,1,""],model:[35,6,1,""],profiles:[35,6,1,""],psipred_predictions:[35,6,1,""],seqres:[35,6,1,""],sidechain_reconstructor:[35,6,1,""]},"promod3.modelling.NTerminalCloser":{Close:[34,4,1,""]},"promod3.modelling.PhiPsiSampler":{Initialize:[34,4,1,""],ProposeStep:[34,4,1,""]},"promod3.modelling.SamplerBase":{Initialize:[34,4,1,""],ProposeStep:[34,4,1,""]},"promod3.modelling.ScoreContainer":{Contains:[31,4,1,""],Copy:[31,4,1,""],Extend:[31,4,1,""],Extract:[31,4,1,""],Get:[31,4,1,""],GetNumCandidates:[31,4,1,""],IsEmpty:[31,4,1,""],LinearCombine:[31,4,1,""],Set:[31,4,1,""]},"promod3.modelling.ScorerBase":{GetScore:[34,4,1,""]},"promod3.modelling.ScoringGapExtender":{Extend:[29,4,1,""]},"promod3.modelling.ScoringWeights":{GetAllAtomScoringKeys:[31,5,1,""],GetAllAtomWeights:[31,5,1,""],GetBackboneScoringKeys:[31,5,1,""],GetBackboneWeights:[31,5,1,""],GetSequenceProfileScoresKey:[31,5,1,""],GetStemRMSDsKey:[31,5,1,""],GetStructureProfileScoresKey:[31,5,1,""],GetWeights:[31,5,1,""],SetAllAtomScoringKeys:[31,5,1,""],SetBackboneScoringKeys:[31,5,1,""],SetSequenceProfileScoresKey:[31,5,1,""],SetStemRMSDsKey:[31,5,1,""],SetStructureProfileScoresKey:[31,5,1,""],SetWeights:[31,5,1,""]},"promod3.modelling.ShiftExtension":{Extend:[29,4,1,""]},"promod3.modelling.SidechainReconstructionData":{disulfid_bridges:[36,6,1,""],env_pos:[36,6,1,""],is_c_ter:[36,6,1,""],is_n_ter:[36,6,1,""],loop_lengths:[36,6,1,""],loop_start_indices:[36,6,1,""],rotamer_res_indices:[36,6,1,""]},"promod3.modelling.SidechainReconstructor":{AttachEnvironment:[36,4,1,""],Reconstruct:[36,4,1,""]},"promod3.modelling.SoftSampler":{Initialize:[34,4,1,""],ProposeStep:[34,4,1,""]},"promod3.modelling.StructuralGap":{Copy:[29,4,1,""],ExtendAtCTerm:[29,4,1,""],ExtendAtNTerm:[29,4,1,""],GetChain:[29,4,1,""],GetChainIndex:[29,4,1,""],GetChainName:[29,4,1,""],GetLength:[29,4,1,""],IsCTerminal:[29,4,1,""],IsNTerminal:[29,4,1,""],IsTerminal:[29,4,1,""],ShiftCTerminal:[29,4,1,""],after:[29,6,1,""],before:[29,6,1,""],full_seq:[29,6,1,""],length:[29,6,1,""],seq:[29,6,1,""]},"promod3.scoring":{AllAtomClashScorer:[39,3,1,""],AllAtomInteractionScorer:[39,3,1,""],AllAtomOverallScorer:[39,3,1,""],AllAtomPackingScorer:[39,3,1,""],AllAtomScorer:[39,3,1,""],BackboneOverallScorer:[41,3,1,""],BackboneScoreEnv:[40,3,1,""],BackboneScorer:[41,3,1,""],CBPackingScorer:[41,3,1,""],CBetaScorer:[41,3,1,""],ClashScorer:[41,3,1,""],ConstraintFunction:[40,3,1,""],ContactFunction:[40,3,1,""],DiscoContainer:[40,3,1,""],HBondScorer:[41,3,1,""],LoadAllAtomInteractionScorer:[39,1,1,""],LoadAllAtomPackingScorer:[39,1,1,""],LoadCBPackingScorer:[41,1,1,""],LoadCBetaScorer:[41,1,1,""],LoadDefaultAllAtomOverallScorer:[39,1,1,""],LoadDefaultBackboneOverallScorer:[41,1,1,""],LoadHBondScorer:[41,1,1,""],LoadReducedScorer:[41,1,1,""],LoadSSAgreementScorer:[41,1,1,""],LoadTorsionScorer:[41,1,1,""],PairwiseFunction:[40,3,1,""],PairwiseFunctionType:[40,3,1,""],PairwiseScorer:[41,3,1,""],ReducedScorer:[41,3,1,""],SCWRL3DisulfidScore:[43,4,1,""],SCWRL3PairwiseScore:[43,4,1,""],SSAgreementScorer:[41,3,1,""],TorsionScorer:[41,3,1,""]},"promod3.scoring.AllAtomClashScorer":{DoExternalScores:[39,4,1,""],DoInternalScores:[39,4,1,""],DoNormalize:[39,4,1,""]},"promod3.scoring.AllAtomInteractionScorer":{DoExternalScores:[39,4,1,""],DoInternalScores:[39,4,1,""],DoNormalize:[39,4,1,""],Load:[39,5,1,""],LoadPortable:[39,5,1,""],Save:[39,4,1,""],SavePortable:[39,4,1,""],SetEnergy:[39,4,1,""]},"promod3.scoring.AllAtomOverallScorer":{"__getitem__":[39,4,1,""],"__setitem__":[39,4,1,""],AttachEnvironment:[39,4,1,""],CalculateLinearCombination:[39,4,1,""],Contains:[39,4,1,""],Get:[39,4,1,""]},"promod3.scoring.AllAtomPackingScorer":{DoNormalize:[39,4,1,""],Load:[39,5,1,""],LoadPortable:[39,5,1,""],Save:[39,4,1,""],SavePortable:[39,4,1,""],SetEnergy:[39,4,1,""]},"promod3.scoring.AllAtomScorer":{AttachEnvironment:[39,4,1,""],CalculateScore:[39,4,1,""],CalculateScoreProfile:[39,4,1,""]},"promod3.scoring.BackboneOverallScorer":{"__getitem__":[41,4,1,""],"__setitem__":[41,4,1,""],AttachEnvironment:[41,4,1,""],Calculate:[41,4,1,""],CalculateLinearCombination:[41,4,1,""],Contains:[41,4,1,""],Get:[41,4,1,""]},"promod3.scoring.BackboneScoreEnv":{AddPairwiseFunction:[40,4,1,""],ApplyPairwiseFunction:[40,4,1,""],ClearEnvironment:[40,4,1,""],Copy:[40,4,1,""],GetSeqres:[40,4,1,""],Pop:[40,4,1,""],SetEnvironment:[40,4,1,""],SetInitialEnvironment:[40,4,1,""],SetPsipredPrediction:[40,4,1,""],Stash:[40,4,1,""]},"promod3.scoring.BackboneScorer":{AttachEnvironment:[41,4,1,""],CalculateScore:[41,4,1,""],CalculateScoreProfile:[41,4,1,""]},"promod3.scoring.CBPackingScorer":{DoNormalize:[41,4,1,""],Load:[41,5,1,""],LoadPortable:[41,5,1,""],Save:[41,4,1,""],SavePortable:[41,4,1,""],SetEnergy:[41,4,1,""]},"promod3.scoring.CBetaScorer":{DoExternalScores:[41,4,1,""],DoInternalScores:[41,4,1,""],DoNormalize:[41,4,1,""],Load:[41,5,1,""],LoadPortable:[41,5,1,""],Save:[41,4,1,""],SavePortable:[41,4,1,""],SetEnergy:[41,4,1,""]},"promod3.scoring.ClashScorer":{DoExternalScores:[41,4,1,""],DoInternalScores:[41,4,1,""],DoNormalize:[41,4,1,""]},"promod3.scoring.DiscoContainer":{AddStructuralInfo:[40,1,1,""],AttachConstraints:[40,1,1,""]},"promod3.scoring.HBondScorer":{DoExternalScores:[41,4,1,""],DoInternalScores:[41,4,1,""],DoNormalize:[41,4,1,""],Load:[41,5,1,""],LoadPortable:[41,5,1,""],Save:[41,4,1,""],SavePortable:[41,4,1,""],SetEnergy:[41,4,1,""]},"promod3.scoring.PairwiseFunction":{Score:[40,4,1,""]},"promod3.scoring.PairwiseScorer":{DoExternalScores:[41,4,1,""],DoInternalScores:[41,4,1,""],DoNormalize:[41,4,1,""]},"promod3.scoring.ReducedScorer":{DoExternalScores:[41,4,1,""],DoInternalScores:[41,4,1,""],DoNormalize:[41,4,1,""],Load:[41,5,1,""],LoadPortable:[41,5,1,""],Save:[41,4,1,""],SavePortable:[41,4,1,""],SetEnergy:[41,4,1,""]},"promod3.scoring.SSAgreementScorer":{DoNormalize:[41,4,1,""],Load:[41,5,1,""],LoadPortable:[41,5,1,""],Save:[41,4,1,""],SavePortable:[41,4,1,""],SetScore:[41,4,1,""]},"promod3.scoring.TorsionScorer":{DoNormalize:[41,4,1,""],Load:[41,5,1,""],LoadPortable:[41,5,1,""],Save:[41,4,1,""],SavePortable:[41,4,1,""],SetEnergy:[41,4,1,""]},"promod3.sidechain":{AAToRotID:[51,4,1,""],BBDepRotamerLib:[52,3,1,""],DihedralConfiguration:[52,3,1,""],DisulfidScore:[44,4,1,""],FRMRotamer:[49,3,1,""],FRMRotamerGroup:[49,3,1,""],Frame:[45,3,1,""],FrameResidue:[45,3,1,""],GetDihedralConfiguration:[52,4,1,""],GetRotamericConfiguration:[52,4,1,""],LoadBBDepLib:[48,4,1,""],LoadLib:[48,4,1,""],Particle:[49,3,1,""],RRMRotamer:[49,3,1,""],RRMRotamerGroup:[49,3,1,""],ReadDunbrackFile:[48,4,1,""],ResolveCysteins:[44,4,1,""],RotamerGraph:[46,3,1,""],RotamerID:[51,3,1,""],RotamerLib:[52,3,1,""],RotamerLibEntry:[52,3,1,""],SCWRLRotamerConstructor:[50,3,1,""],SidechainParticle:[49,3,1,""],SubrotamerOptimizer:[53,4,1,""],TLCToRotID:[51,4,1,""]},"promod3.sidechain.BBDepRotamerLib":{AddRotamer:[52,4,1,""],Load:[52,5,1,""],LoadPortable:[52,5,1,""],MakeStatic:[52,4,1,""],QueryLib:[52,4,1,""],Save:[52,4,1,""],SavePortable:[52,4,1,""],SetInterpolate:[52,4,1,""]},"promod3.sidechain.FRMRotamer":{"__getitem__":[49,4,1,""],"__len__":[49,4,1,""],AddFrameEnergy:[49,4,1,""],AddSubrotamerDefinition:[49,4,1,""],ApplyOnResidue:[49,4,1,""],GetActiveSubrotamer:[49,4,1,""],GetFrameEnergy:[49,4,1,""],GetInternalEnergy:[49,4,1,""],GetInternalEnergyPrefactor:[49,4,1,""],GetNumSubrotamers:[49,4,1,""],GetProbability:[49,4,1,""],GetSelfEnergy:[49,4,1,""],GetSubrotamerDefinition:[49,4,1,""],GetTemperature:[49,4,1,""],SetActiveSubrotamer:[49,4,1,""],SetFrameEnergy:[49,4,1,""],SetInternalEnergy:[49,4,1,""],SetInternalEnergyPrefactor:[49,4,1,""],SetProbability:[49,4,1,""],SetTemperature:[49,4,1,""],ToFrameResidue:[49,4,1,""],ToRRMRotamer:[49,4,1,""]},"promod3.sidechain.FRMRotamerGroup":{"__getitem__":[49,4,1,""],"__len__":[49,4,1,""],AddFrameEnergy:[49,4,1,""],ApplyOnResidue:[49,4,1,""],ApplySelfEnergyThresh:[49,4,1,""],Merge:[49,4,1,""],SetFrameEnergy:[49,4,1,""]},"promod3.sidechain.FrameResidue":{"__getitem__":[45,4,1,""],"__len__":[45,4,1,""]},"promod3.sidechain.Particle":{AddLonePair:[49,4,1,""],GetCharge:[49,4,1,""],GetName:[49,4,1,""],GetParticleType:[49,4,1,""],GetPos:[49,4,1,""],IsHBondAcceptor:[49,4,1,""],IsHBondDonor:[49,4,1,""],PairwiseEnergy:[49,4,1,""],SetPolarDirection:[49,4,1,""]},"promod3.sidechain.RRMRotamer":{"__getitem__":[49,4,1,""],"__len__":[49,4,1,""],AddFrameEnergy:[49,4,1,""],ApplyOnResidue:[49,4,1,""],GetFrameEnergy:[49,4,1,""],GetInternalEnergy:[49,4,1,""],GetInternalEnergyPrefactor:[49,4,1,""],GetProbability:[49,4,1,""],GetSelfEnergy:[49,4,1,""],SetFrameEnergy:[49,4,1,""],SetInternalEnergy:[49,4,1,""],SetInternalEnergyPrefactor:[49,4,1,""],SetProbability:[49,4,1,""],ToFrameResidue:[49,4,1,""]},"promod3.sidechain.RRMRotamerGroup":{"__getitem__":[49,4,1,""],"__len__":[49,4,1,""],AddFrameEnergy:[49,4,1,""],ApplyOnResidue:[49,4,1,""],ApplySelfEnergyThresh:[49,4,1,""],Merge:[49,4,1,""],SetFrameEnergy:[49,4,1,""]},"promod3.sidechain.RotamerGraph":{CreateFromFRMList:[46,5,1,""],CreateFromRRMList:[46,5,1,""]},"promod3.sidechain.RotamerLib":{AddRotamer:[52,4,1,""],Load:[52,5,1,""],LoadPortable:[52,5,1,""],MakeStatic:[52,4,1,""],QueryLib:[52,4,1,""],Save:[52,4,1,""],SavePortable:[52,4,1,""]},"promod3.sidechain.RotamerLibEntry":{FromResidue:[52,5,1,""],IsSimilar:[52,4,1,""],SimilarDihedral:[52,4,1,""],chi1:[52,6,1,""],chi2:[52,6,1,""],chi3:[52,6,1,""],chi4:[52,6,1,""],probability:[52,6,1,""],sig1:[52,6,1,""],sig2:[52,6,1,""],sig3:[52,6,1,""],sig4:[52,6,1,""]},"promod3.sidechain.SCWRLRotamerConstructor":{AssignInternalEnergies:[50,4,1,""],ConstructBackboneFrameResidue:[50,4,1,""],ConstructFrameResidue:[50,4,1,""],ConstructFrameResidueHeuristic:[50,4,1,""],ConstructRRMRotamerGroup:[50,4,1,""],ConstructSidechainFrameResidue:[50,4,1,""]},"test_actions.ActionTestCase":{RunAction:[1,4,1,""],RunExitStatusTest:[1,4,1,""],pm_action:[1,6,1,""],pm_bin:[1,6,1,""],testPMExists:[1,4,1,""]},promod3:{SetCompoundsChemlib:[15,1,1,""],core:[12,2,0,"-"],loop:[23,2,0,"-"],modelling:[30,2,0,"-"],scoring:[42,2,0,"-"],sidechain:[47,2,0,"-"]},test_actions:{ActionTestCase:[1,3,1,""]}},objnames:{"0":["cmake","command","CMake command"],"1":["py","function","Python function"],"2":["py","module","Python module"],"3":["py","class","Python class"],"4":["py","method","Python method"],"5":["py","staticmethod","Python static method"],"6":["py","attribute","Python attribute"],"7":["std","option","option"]},objtypes:{"0":"cmake:command","1":"py:function","2":"py:module","3":"py:class","4":"py:method","5":"py:staticmethod","6":"py:attribute","7":"std:option"},terms:{"10a":36,"1aki":26,"1crn":[21,23,25,26,30,31,32,34,35,36,42,47],"1crn_cut":[30,31,35],"1crna":[26,31],"1ey":8,"1eye_rec":8,"20a":36,"2b1":[],"2jlp":0,"30a":36,"3x3":9,"655a":26,"__doc__":[11,13],"__getitem__":[26,39,41,45,49],"__init__":[1,8,13,16],"__len__":[22,26,45,49],"__main__":[1,8],"__name__":[1,8],"__setitem__":[26,39,41],"_data":37,"_name":4,"_run":[1,4],"_xml":4,"abstract":34,"boolean":11,"break":[4,8,16],"byte":[10,37],"case":[0,1,5,8,13,16,22,26,27,29,32,34,35,36,37,41,44,47,49,50,52],"catch":26,"char":[22,37],"class":[1,5,8,9,10,12,13,14,17,20],"const":37,"default":[0,1,4,5,8,10,13,14,15,18,21,22,25,26,27,28,30,31,32,34],"enum":[26,51],"export":[8,21],"final":[8,18,26,28,30,31,35,40,42,44,46,47,49],"float":[9,10,21,22,25,26,27,28,29,31,32,33,34,35,36,37,39,40,41,43,44,49,50,52,53],"function":[1,3],"import":[0,1,5,8,11,13,16,18,20,21,22,23,25,26,27,30,31,32,34,35,36,42,47,49,50],"int":[1,9,10,11,14,21,22,24,25,26,27,28,29,31,32,33,34,35,36,37,39,40,41,45,49,50,52,53],"long":35,"new":[1,3,7,8,13,16,17,21,22,25,26,29,31,32,34,35,36,37,47,49],"null":26,"public":[8,37],"return":[1,8,9,10,11,13,14,15,21,22,24,25,26,27,28,29,31,32,33,34,35,36,37,39,40,41,43,44,45,48,49,50,51,52],"s\u00f6ding":38,"short":[8,16,37],"static":[8,14,21,25,26,27,31,36,37,39,41,46,48,52],"super":47,"switch":[8,16,40],"throw":[1,37,47,48],"true":[1,11,13,14,21,22,23,25,26,29,31,32,33,34,35,36,37,39,41,44,47,50],"try":[1,8,18,29,35,37,52],"void":37,"while":[1,4,8,14,20,21,25,35,37],a3m:[0,13],a3mtoprofil:[0,13],aa1:41,aa2:41,aa_aft:26,aa_befor:26,aa_clash:[35,39],aa_interact:[35,39],aa_pack:[35,39],aa_packing_scor:37,aa_relax_test:32,aa_res_idx:50,aa_scor:37,aa_with_rotam:47,aaa1:39,aaa2:39,aaa:[21,39],aaaaaaaa:22,aaaaggggggggggggggggggggaaaaaa:35,aafrequ:26,aafrequenciesstruct:26,aah:21,aatorotid:51,abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz:35,abil:16,abl:[2,8],abort:[8,10,32,35],about:[1,4,8,10,26,35],abov:[0,1,5,8,13,16,20,22,29,31,35,37,51,52],absolut:[4,5,34],academ:8,accept:[10,13,20,31,32,34,35,36,37],acceptor:[41,50],access:[4,5,8,21,22,26,27,31,35,39,40,41,49,51],accessor:26,accord:[5,10,16,21,22,25,26,27,28,29,31,34,35,36,39,44,47,49,50,52],accordingli:[26,40],accur:28,accuraci:28,achiev:[10,16],acknowledg:8,across:[1,52],act:[20,32],acta:38,action_nam:16,action_unit_test:1,actiontest:1,activ:[13,14,16,44,49,53],active_internal_energi:53,actual:[3,8,13,16,22,26,34,35,36,40,41,42,49,50,52],actual_posit:34,actual_step:34,adapt:[8,25,26,32,34,35,38],add:[1,2,4,6,8,10,13,18,20,21,26,27,31,32,35,36,39,40,41,44,47,49,50],add_argu:11,add_custom_target:8,add_doc_depend:4,add_doc_sourc:[4,8],add_subdirectori:8,addalign:13,addcarestraint:32,addcbrestraint:32,addcoordin:26,addcrestraint:32,addedg:10,addendum:20,addfrag:26,addfragmentinfo:31,addframeenergi:49,addharmonicangl:25,addharmonicbond:25,addharmonicimprop:25,addit:[4,11,13,14,16,20,22,23,25,26,33,35,37,50],addition:[1,4,16,21,25,26,50],addljpair:25,addlonepair:49,addnod:10,addnrestraint:32,addorestraint:32,addpairwisefunct:40,addperiodicdihedr:25,addperiodicimprop:25,addprofil:13,address:37,addrotam:52,addseqidparamet:26,addseqsimparamet:[23,26],addsequenceprofileparamet:26,addssagreeparamet:26,addstructur:13,addstructuralinfo:40,addstructureprofileparamet:26,addsubrotamerdefinit:49,addtorsionprobabilityparamet:26,addureybradleyangl:25,admir:8,advanc:28,advantag:25,advic:[8,16],advis:20,affect:[8,22,50,51],after:[1,2,4,5,8,10,13,16,21,22,25,26,27,29,31,32,34,35,37,40,52],after_c_stem:22,afterward:[8,26,35],again:[2,3,8,26,28],against:[20,39],agg:27,agglom:31,ago:1,agre:20,agreement:[20,26,28,41],agress:[2,10],aim:19,ala:[22,27,32,47,50,51,52],ala_cb:21,ala_h1:21,ala_h:21,alanin:[3,51],alg:[23,26,35],algorithm:[3,10,22,23,26],alia:29,align:[0,13,18,26,28,30,35,38,40],alignedcuboid:22,alignmenthandl:[28,35,40],alignmentlist:[0,13,35],all:[0,1,3,4,8,10,13,14,16,18,20],all_atom:[21,22,25,49,50],all_atom_env:21,all_atom_po:[21,50],all_atom_scor:35,all_atom_scorer_env:35,all_atom_sidechain_env:35,all_po:[21,25,32],all_scor:31,allatom:[32,35,36],allatomclashscor:35,allatominteractionscor:[35,37],allatomoverallscor:[31,35],allatompackingscor:[35,37],allatomrelax:[25,32],alleg:20,alloc:26,allow:[0,2,3,5,8,11,16,22,26,27,28,31,34,35,37,39,41,46,52],allow_multitempl:13,allow_prepro_ci:22,almost:[4,32],aln:[0,28,30,31,35,40],aln_sourc:13,alon:[11,20],along:[1,8,20],alongsid:20,alot:8,alpha:[9,22,41,47],alpha_bin:41,alreadi:[1,4,8,10,16,22,25,26,28,31,35,36,39,40,41,49,50,52,53],also:[1,2,4,8,11,16,20,26,27,28,31,32,33,34,35,36,44,45,46,50,52],alter:[31,34],altern:[4,5,8,31,34,35,48,50],alwai:[0,1,7,8,16,29,34,35,37],amber:[21,35],ambig:52,ambigu:[0,13,52],aminoacid:[21,22,25,27,41,51,52],aminoacidatom:[21,39],aminoacidhydrogen:21,aminoacidlookup:[21,25],among:31,amount:[18,28,52],analysi:[32,33,38],analyt:[31,52],anchor:[9,21],ancient:15,angl:[9,21,22,23,25,26],angle_bin:41,angle_bin_s:26,angle_force_const:25,angle_four:9,angle_on:9,angle_thre:9,angle_two:9,angstrom:[26,32],ani:[0,1,4,5,8,10,13,14,15,18,20,21,22,25,26,27,29,31,33,34,35,36,37,39,40,41,45,47,49,50],anneal:[10,31,34],annot:20,announc:[1,8],anoth:[4,14,22,29,32,35,36,44],anymor:[3,10],anyon:[8,16],anyth:[0,2,5,8,13,14,15,31,32,36,39,41],anywai:8,anywher:16,apach:[3,20],apart:[1,31,35,36,39,41],app:7,appear:20,append:[0,13,22,26,27,35,47],appendix:20,appli:[3,7,10,11,15,16,20,22,26,29,31,32,34,35,36,38,40,44,47,49,52],applic:[1,20,32,50],applyccd:31,applyde:10,applyedgedecomposit:10,applyk:31,applyonresidu:[47,49],applypairwisefunct:[40,41],applysd:25,applyselfenergythresh:[47,49],applytransform:22,approach:[0,2,10,26,28,35,37,44,47,50],appropri:[10,20,27,35,37,50],approx:35,approxim:[25,49],arbitrari:[3,21,26,44],arbitrarili:34,archiv:20,arendal:38,arg:[1,4,13,51],arg_ca:21,arg_hd3:21,arg_sorted_scor:31,arginin:51,argpars:13,argument:[0,1,4,11,12],argumentpars:13,argv:13,aris:20,around:[1,4,8,9,16,22,31,32,35,39,40,41,52],arrai:[0,8,37],artifici:26,ascend:29,ask:8,asn:[51,52],asn_c:21,asn_hb2:21,asp:[21,49,51,52],asp_ha:21,asp_o:21,asparagin:51,aspart:[51,52],ass:34,assembl:13,assemblepars:13,assert:20,assertequ:8,assess:[39,40],assign:[3,10,22,26,31,34,39,41,50,53],assigninternalenergi:50,assignsecstruct:35,associ:[20,26,29,45],assum:[1,4,5,7,8,20,25,26,32,35,37,40,41,44],assur:44,astar:3,astarsolv:10,atom:[3,8,9],atom_idx:[21,25],atom_nam:[21,25],atomhandl:49,attach:[0,4,8,13,20,21,25,28,29,31,35,36,39,40,41,42],attach_view:13,attachconstraint:40,attachenviron:[31,32,34,36,39,41,42],attachview:[30,31,35],attent:[1,16],attribut:[8,13,20,26,35,36,52],author:20,authorship:20,autom:[2,4],automat:[1,8,10,11,14,16,26,30,31,37,52],automatis:8,avaibl:50,avail:[1,2,3,5,7,8,15,16,18,20,25,26,31,34,40,47],availab:20,availabl:8,averag:[31,40,44],avg:26,avg_sampling_per_posit:28,avoid:[0,3,6,11,13,15,26,32,34],awai:[16,36,49],awar:[8,50],awesom:[1,8],axi:[9,22],back:[1,16,25,34],backbon:[0,3,9,18,21,22,26,27,28,29,30,31],backbone_scor:35,backbone_scorer_env:35,backbonelist:[18,21],backboneoverallscor:[28,31,34,35],backbonerelax:[32,35],backbonescor:8,backbonescoreenv:[8,28,31,34,35],backbonescoreenvlisten:8,background:[2,36],backrub:[22,38],backward:37,bad:25,base:[0,3,4,5,9,11,13,20,22,23],base_target:4,bashrc:8,basi:[4,8,16,20,32,34,48,49],basic:[1,2,8,11,16,27,34,35,47,49,52],bb_dep_lib:37,bb_list:[18,21,22,23,26,29,31,32,34,35,40],bb_list_on:28,bb_list_two:28,bb_score:31,bbdeprotamerlib:[35,36,37,48,50,52],becaus:[8,16,21,35,40],becom:[10,52],been:[2,3,10,16,20,24,26,31,32,35,39,41,44,52],befor:[0,1,4,7,8,13,16,22,25,26,27,29,31,32,34,35,36,37],begin:[1,8,21,22,34,40],behalf:20,behav:[1,52],behaviour:[0,13,39,40,52],behind:8,bell:8,belong:[3,4,16,21,22,26,29,31,34,35,36,39,40,41,45,49,50],belov:26,below:[0,8,20,21,25,26,28,31,32,36,37,39,41,44],below_thre:26,benefici:20,besid:[2,4,10,13,26],best:[4,7,31,35,44],best_candid:31,beta:[9,22,33,41],beta_bin:41,better:[25,31,34,35,39,41],between:[1,3,10,13,22,25,26,28,29,31,32,34,35,36,37,39,40,41,42,43,44,45,49,50,52],beyond:13,biasini2013:[19,38],biasini:38,bienert:38,big:[25,37],bilinearli:52,bin:[1,8,16,18,26,27,39,41,52],bin_siz:52,binari:[1,4,8,16,17,25,26,27],bind:[0,13,20],bins_per_dimens:27,bioinformat:38,biol:38,biologi:[19,38],biophi:38,biopolym:38,bit:[1,8,16,31,35],bitwis:26,blank:8,block:3,blosum62:[23,26,28,40],boilerpl:20,bond:[0,3,9,22,25,26,32,33,36,38,41],bond_force_const:25,bond_length:[9,25],bool:[1,8,10,11,13,14,21,22,25,26,29,31,32,33,34,35,36,37,39,41,44,49,50,52],boost:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],boost_librari:4,boost_root:2,bootstrap:[6,7],bore:34,both:[3,21,26,29,35,44,47,52],bound:[21,25,28,31,49],bracket:20,bradlei:25,branch:[4,8],branchnam:16,brew:4,bridg:[24,25,32,35,36],briefli:16,bring:8,broken:1,broyden:35,bsd:20,bug:[3,8,16],build_disulfid:36,builder:2,buildfromrawmodel:[30,35],buildrawmodel:[0,30,31,35],buildsidechain:35,buildup:[47,49],built:[4,7,25,26,40,45,50],bunch:[1,13,16],bundl:20,bytecod:1,c_coord:9,c_num:29,c_po:[9,22,41],c_stem:[9,23,26,29,31,32,34],c_stem_psi:34,c_str:37,c_ter:[32,50],ca_coord:9,ca_pairwise_funct:40,ca_po:[9,22],ca_pos_on:[43,44],ca_pos_two:[43,44],ca_posit:44,ca_rmsd:[23,26],cach:[2,26,28],calcul:[8,22,26,27,28,31,32,34,39,40,41,42,44,45,46,47,49,50],calculateallatomscor:31,calculatebackbonescor:31,calculatelinearcombin:[31,34,39,41],calculatescor:[39,41,42],calculatescoreprofil:[39,41],calculatesequenceprofilescor:31,calculatestemrmsd:31,calculatestructureprofilescor:31,call:[1,2,4,8,11,13,14,15,16,21,25,26,27,29,31,34,35,36,37,39,40,41,49,50,52],callabl:[13,16],calpha:35,calul:27,came:8,can:[0,1,3,4,5,7,8,9,10,11,13,14,15,16,18,21,22,23,25,26,27,28,29,30,31,32,34,35,36,37,39,40,41,42,44,45,46,47,48,49,50],cand:35,candid:[3,30],cannot:[0,8,13,20,25,26,27,29,35,37,39,41,48,51,52],canutescu2003:[32,38],canutescu2003b:[38,39,41,43,44],canutescu:38,cap:10,capabl:[24,30,34],captur:1,carbon:[9,22,43,49,50],carbonyl:[49,50],care:[0,8,10,31,32,35,37,41],carlo:[3,10,28,31,34,35,46],carmsd:[22,23,26],carri:[8,11,20],cast:37,categori:4,caus:[16,20,33],caution:21,caviti:26,cb_in_sidechain:50,cb_pack:[28,35,41],cb_packing_scor:37,cb_pairwise_funct:40,cb_po:22,cb_pos_on:[43,44],cb_pos_two:[43,44],cb_posit:44,cbeta:[28,31,34,35,41,42],cbeta_scor:[37,42],cbetaenvlisten:8,cbetascor:[8,35,37],cbpackingscor:[8,35,37],ccd:[3,30,31],ccdcloser:34,center:33,central:[22,27,41],centroid:31,certain:[1,2,4,8,10,16,26,27,28,29,35,37,39,40,41],certainli:1,ch1particl:49,ch2particl:49,ch3particl:49,ch_name:26,chain:[0,8,13,21,22,23,24],chain_idx:[8,21,31,34,35,36,39,40,41],chain_idx_list:36,chain_idx_on:40,chain_idx_two:40,chain_index:[26,34,39],chain_indic:40,chain_nam:[26,35],chainhandl:[21,22,29],chainid:0,chakravarti:38,chakravarty1999:[26,38],chanact:35,chanc:[8,10,35],chang:[1,3,4,5,8,10,16,20,21,27,28,29,32,34,35,36,39],change_frequ:[10,34],chapter:[29,33],charact:[13,20],charg:[8,20,21,25,32,49,50],charmm:[21,25,35],check:[0,1,3,5,8,11,13,14,16,22,25,26,30,32],check_io:37,check_xml:8,checkbasetyp:37,checkfinalmodel:35,checkmagicnumb:37,checkout:[8,16],checktypes:37,chemdict_tool:[5,7],chemic:[5,15,21,39],chemistri:38,chemlib:[5,7],chi1:52,chi2:52,chi3:52,chi4:52,chi:52,child:13,childclass:1,chmod:8,choos:[20,31,34],chose:5,chosen:[0,13,34,35],cif:[0,5,7,13],ciiipgatcpgdyan:35,circumv:50,claim:20,clash:[3,28,31,32,34,35,39,41,42,44,47],clash_scor:42,clash_thresh:35,clashscor:[31,33,34,35],classic:48,claus:20,clean:[2,8,16],cleanli:37,clear:[14,21,22,31,35,40],clearenviron:[21,40],cleargap:29,clearpo:21,clearresidu:21,clip:13,clone:8,close:[16,18,22,26,31,32,34,35,36,44],closed_posit:34,closegap:35,closelargedelet:35,closer:[3,26,30,31],closerbas:34,closesmalldelet:[32,35],closur:[32,35,38],clustal:[0,13],cluster:[3,31,37,40],cluster_thresh:[28,40],clutter:[1,8,26],cmake:0,cmake_support:[4,8,16,20],cmakecach:2,cmakelist:[1,2,4,8,16],coars:8,code:[0,1,3,4,5,6,7,8,11,13,14,15,16,17,20,21,22,26,27,33,35],codetest:[4,8],coil:[24,28],collect:[11,14,21,28,40],column:[26,28],combin:[20,25,26,27,28,31,34,35,38,39,41,44,52],come:[1,4,8,11,13,35,36,42,46,52],command:[0,1,7,8,11,12],commandlin:13,comment:[16,20],commerci:[8,20],commit:[8,16],common:[8,13,20,28],commonli:[8,18,30,31,41],commun:20,comp_lib:50,compar:[3,8,22,23,26,31,32,52],comparison:[35,38,52],compat:[16,25,37],compensatori:22,compil:[1,2,4,8,14,16,18,20,37,54],complain:1,complaint:16,complet:[14,16,22,25,32,34,35,36,52],complex:[8,16,36,44,49,53],compli:20,complianc:20,complib_dir_contain:[5,7],complib_dir_localhost:[5,7],compon:[5,7,10,15,26,33,41],compoundlib:[5,50],compress:[11,26],comput:[3,8,19,20,31,33,38,39,41],concaten:21,concept:8,concern:8,condit:[8,20,27],conf:[2,8],confid:[26,41],config:[4,8],config_head:4,configur:[8,10,16,20,31,47],conflict:16,conform:[26,32,34,38,46,52],connect:[4,5,10,16,21,25,26,31],connectivi:5,conop:[5,21,22,25,27,41,50,51],conquer:8,consecut:[26,27,41],consequenti:20,conserv:[18,29],consid:[0,4,8,10,13,14,16,21,22,26,27,28,31,32,34,35,36,39,40,41,44,47,50,52],consider_all_nod:10,consider_hydrogen:49,consider_ligand:36,consist:[3,8,20,21,25,28,29,31,32,34,35,36,37,40,44,49,52],conspicu:20,constant:[3,25,32,39,41,53],constitut:20,constraint:[13,26,32,34,40],constraintfunct:40,constru:20,construct:[0,9,21,22,26,28,29,34,37],constructatompo:9,constructbackboneframeresidu:[47,50],constructcbetapo:9,constructcterminaloxygen:9,constructetd:10,constructframeresidu:50,constructframeresidueheurist:50,constructfrmrotamergroup:[47,50],constructor:[21,25,29,32,34,37,40,41,47,49],constructrrmrotamergroup:50,constructsidechainframeresidu:50,contact:40,contactfunct:40,contain:[0,1,3,4,5],content:[8,12,17,20,23,26,42,47,54],contigu:[25,36,37],continu:[1,21,29,32,47],contract:20,contrast:45,contribut:4,contributor:20,contributori:20,control:[0,3,8,10,20,31,34,36,40,49,50,52,53],conveni:[1,7,8,18,28,31,34,35],convent:[1,51],converg:[28,31,32,34],convers:[20,37],convert:[4,5,22,25,26,27,35,37,39,41,52,53],convert_module_data:4,convertbasetyp:37,cooler:[3,30,31],coolerbas:34,cooling_factor:[10,34],coord:[26,31],coord_idx:26,coord_info:26,coordin:[3,9,26,31,32,34,35,38,39,47],coordinfo:26,cope:16,copi:[2,3,4,8,16,18,20,21,22,29,31,34,35,40],copyright:20,copyright_cmak:20,core:[0,8,9,10,11],correct:[5,25],correctli:35,correspond:[0,10,16,21,22,25,26,27,31,37,52],corrupt:[21,40],cotain:26,could:[1,4,5,8,13,16,25,26,35],count:[14,29,34,35,39,41],countenclosedgap:29,countenclosedinsert:29,counter:34,counterclaim:20,counterpart:[31,41,50],coupl:[1,8,16,35],cours:8,coutsia:38,coutsias2005:[32,38],cover:[1,8,12,13,14,21,25,26,28,30,34],coverag:35,cparticl:49,cpp:4,cpr:[51,52],cpu:[18,25,35],cpu_platform_support:25,crambin:[26,31,34],crash:47,createalign:[31,35],createentityfromview:[36,47],createfromfrmlist:[46,47],createfromrrmlist:46,createfullview:[30,31,35],createsequ:[26,31,35],creation:[25,32],creator:[25,32],criteria:36,criterion:[10,34],criterium:31,croak:16,cross:20,crucial:8,cryst:38,cterminalclos:34,cumul:50,current:[2,4,5,8,10,14,16,21,22,25,26,31,34,35,37,40,41,42,49,50,53],custom:[8,26,34,35,36,37,48,51],customari:20,cutoff:[24,25,31,32,36,39,41],cycl:29,cyclic:[31,32,38],cyd:[51,52],cyh:[51,52],cys_hb3:21,cys_sg:21,cystein:[25,36,44,47,51],d_bin:41,dai:11,damag:20,dampen:25,danc:38,dare:4,dat:[26,37],data1:4,data2:4,data:[0,1,3,4,8,16,17,21,23,24,25],data_:37,data_gener:[3,37,48],data_to_stor:26,data_typ:26,databas:[0,9,23,24],databs:26,datatyp:26,date:[5,7,16,20],davi:38,davis2006:[22,38],dbg:8,dcmake_install_prefix:2,deactiv:10,dead:[10,38],deal:[35,36],debug:[8,10,21],decent:15,decid:[3,8,32],decis:27,declar:[4,8,16],decod:13,decompos:[3,10],decomposit:[10,28,46],decreas:34,dedic:[4,8,16],dee:10,deep:[22,35],def:[1,8,21,35],def_angl:21,defend:20,defin:[1,4,8,9,13,14,15,20,21,22,23,24,25],definem:8,degre:[22,26,27],delet:[0,2,8,22,35,49],deliber:20,deliv:[1,26,34,35],delta_scor:34,demand:35,demonstr:26,denovoclos:34,densiti:[22,32,38],dep1:4,dep2:4,dep:4,depend:0,dependency1:4,dependency2:4,depends_on:4,depth:[26,38],deriv:[1,20,26,38,43,44],descend:35,descent:[31,32,38],describ:[4,7,10,11,17,20,21,22,26,29,30,32,33,37,39,41,44,47,48,49,52,54],descript:[0,5,13,16,20,34,52],descriptor:26,descsrib:10,design:[1,3,19,20],desir:[9,18,25,31,32,34,35,39,40,41],despit:3,detail:[0,9,13,16,20,25,26,27,31,33,34,35,39,41,48,52],detect:[0,11,28,30],determin:[8,11,20,25,26,31,34,40,41],determinist:28,deuterium:35,develop:[1,3,8,16],deviat:[22,33,34,52],devot:12,dict:[4,28,31,33,34,39,41],dictionari:[4,5,13,15,33,38],did:[8,26,31,35],didn:7,didnt:5,differ:[1,2,4,7,8,10,15,16,20,21,26,28,29,31,35,39,41,47,51,52],dihedr:[9,18,22,23,25,26],dihedral_angl:22,dihedral_bin:41,dihedral_idx:52,dihedral_pair:27,dihedralconfigur:52,dill:38,dimens:27,dir:[4,8],direct:[8,20,22,24,26,41,49,50],directli:[8,10,26,31,35,36,40,44,49,51,52],directori:[1,4,5,7,8],dirti:1,dirtyccdclos:34,disabl:[1,16],disable_doctest:2,disable_document:2,disable_linkcheck:2,discard:26,disclaim:20,discocontain:40,disconnect:3,discret:[39,41],discuss:[20,26],disk:[8,25,28,39,41,52],displai:[11,13,14,20],dissimilar:28,dist:41,dist_bin:41,dist_bin_s:26,distanc:[9,22,26,28,31,35,36,39,40,41,43],distance_thresh:28,distant:40,distinct:[21,36,52],distinguish:3,distribut:[1,8,20,25,26,27,34,37,39,41,48,52],disulfid:[0,25,32,36,43],disulfid_bridg:[25,36],disulfid_score_thresh:36,disulfidscor:[36,44],dive:[16,35],diverg:8,divers:[26,28],dng:18,do_it:[39,41],doc:[2,4,8,16,20],docker:3,dockerfil:[5,7],dockerhub:7,docstr:13,doctest:[2,8,16],document:1,doe:[1,3,4,8,9,10,11,13,15,16,20,22,26,30,31,34,35,37,40,48],doesn:[8,16,29,32,34,52],doesnt:52,doexternalscor:[39,41],dointernalscor:[39,41],domain:28,domin:10,don:[2,10,20,31,35,50],done:[1,8,11,13,16,23,25,27,31,34,35,37],donor:41,donorm:[39,41],dont:[0,34],dont_write_bytecod:1,dost_root:2,doubt:13,down:[13,22,26,34],download:5,dpm3_runtime_profiling_level:14,draw:[22,27,34],drawback:8,drawn:[27,34],drawphigivenpsi:27,drawpsigivenphi:27,drop:8,dssp:[3,26,41],dssp_state:41,due:[26,31,32,35,44],dump:52,dunbrack:[3,38,48],duplic:6,dure:[1,21,32,35,37,45,52],dynam:52,dynamicspatialorgan:3,e_cut:10,e_thresh:[10,35],e_tresh:10,each:[0,8,10,13,14,20,21,22,25,26,27,28,29,31,32,33,34,35,36,37,39,41],earli:3,earlier:2,easi:8,easier:[1,8,20],easili:[4,16,35],echo:8,edg:10,edge_idx:10,editor:1,editori:20,educ:8,effect:[4,8,10,25,36,44],effici:[21,28,34,38,42],egg:26,eigen3_include_dir:2,eigen:[2,3],either:[0,8,13,16,20,21,22,27,29,31,32,34,35,36,37,39,40,41,45,49,51,52],elabor:[8,20],electron:20,electrostat:[25,32],element:[1,10,21,22,26,28,31,33,37,40,44],elimin:[10,38],els:[8,16,36,37],emerg:1,empir:[43,44],emploi:16,empti:[8,11,13,22,26,28,31,35,49],enabl:[1,2,11,13,15,25,26],enable_mm:2,enable_ss:2,enclos:[20,29,35],encod:0,encount:[29,34],end:[0,1,2,4,8,10,11,13,16,20,21,22,26,28,29,31,35,38],end_resnum:35,end_transl:4,endian:37,energi:[3,8,10,18,25,32,34,35,39,41,44,45,46,47,49,50,53],enforc:[21,31,34,35,36,39,40,41],engin:19,enough:[8,16,25,26,35,37],ensur:[2,8,18,31,35,37],ent:[0,13,21,25,26,33,36,42],ent_seq:42,enter:45,entiti:[8,13,14,20,21,22,26,33,35,42,47],entityhandl:[13,21,22,33,35,36,40],entityview:[26,27,28,33,35],entri:[0,3,8,14,25,26,31,32,33,36,41,47,50],enumer:[8,10,21,25,26,31,40,47,49,50,51,52],env:[8,18,21,25,28,32,33,35,36,39,40,41,42],env_po:[32,36],env_structur:[21,40],environ:[1,3,8,21,28,29,31,32,34,35,36,37,39],epsilon:[10,25,36,53],equal:[34,39,41,44,50],equidist:52,equival:[35,39,41],error:[0,11,13,14,26,32,35,37],especi:28,estim:[10,33,34,38,41,44,52],etc:[1,3,8,16,22,26,31,40],evalu:[4,8,32,35,39,40,41],evaluategromacsposrul:9,even:[2,8,10,20,22,25,29,35],event:[20,28],eventu:13,ever:[16,34],everi:[0,1,8,10,13,21,22,26,27,28,31,32,34,35,36,39,40,41,44,46,49,50,52,53],everyth:[1,3,7,8],evolut:38,evolv:42,exact:[0,7,10,13,37],exactli:[2,10,26,28,31,35,40,44,50,51],exampl:[0,1,8,11,13,16,17,18,20,21,23,25,26,27,28,30],example_reconstruct:47,exce:[39,41],exceed:[26,29],except:[0,3,13,20,26,29,34,35,50],exclud:[8,20,26],exclus:[1,8,20,25],exec:7,execut:0,exercis:20,exisit:17,exist:[0,1,2,4,8,10,11,13,14,16,21,22,26,31,32,33,34,35,37,39,40,41,48,49,51,52],exit:[0,1,11,13],exit_cod:1,exit_statu:11,exot:8,exp:34,expect:[1,7,21,25,26,35,36,40,44,53],expens:26,experiment:35,explain:[1,8],explan:8,explicit:2,explicitli:20,explor:38,exponenti:34,exponentialcool:34,expos:26,express:[20,44],ext:11,extend:[1,4,8,16,17,24,26,28],extendatcterm:29,extendatnterm:29,extended_search:[31,35],extens:[0,3,11,13,29,35],extension_penalti:29,extent:26,extern:[3,4,5,7,8,34],extra:[2,3,8,16,22,37,48],extra_bin:26,extra_force_field:35,extract:[8,9,21,22,23,25,26,27,28,30,31,32,34,35,36,39,40,41,44,50],extractbackbon:21,extractloopposit:25,extractstatist:27,extrem:22,f_i:26,f_idx:40,facilit:28,factor:[10,25,34,49],fail:[0,1,8,11,14,22,31,32,35],failur:[0,8,11,13,20,52],fall:32,fallback:52,fals:[1,8,10,11,13,22,25,26,29,31,34,35,36,44,47,49,50],far:[31,35],fast:[9,18,19,21,25,26,27,37,39,40,41,52],fasta:[0,13,30,35],faster:[10,25,26,32,33,40],fastest:[32,35],favor:33,favourit:1,fed:[4,16],fedora:8,fee:20,feed:[4,21,31],feel:[8,16],fellow:8,fetch:16,few:[2,8,16,25,37,42],ff_aa:25,ff_aa_on:25,ff_aa_two:25,ff_ala:25,ff_arg:25,ff_asn:25,ff_asp:25,ff_cy:25,ff_cys2:25,ff_gln:25,ff_glu:25,ff_gly:25,ff_hisd:25,ff_hise:25,ff_ile:25,ff_leu:25,ff_lookup:[25,32,35],ff_lookup_charmm:37,ff_ly:25,ff_met:25,ff_phe:25,ff_pro:25,ff_ser:25,ff_thr:25,ff_trp:25,ff_tyr:25,ff_val:25,ff_xxx:25,field:[20,35,37,52],fifti:20,figur:16,file:[0,1,3,4,5,8],filecheck:16,fileexist:11,fileextens:11,filegzip:11,filenam:[0,8,11,13,25,26,27,28,37,39,41,48,52],filenotfound:33,fill:[4,7,8,13,16,23,26,29,30,31,33,35],fillfromdatabas:[31,35],fillfrommontecarlosampl:[31,35],fillloopsbydatabas:35,fillloopsbymontecarlo:35,filo:40,filtercandid:33,filtercandidateswithsc:33,final_model:[30,35],find:[4,7,8,10,16,21,23],findchain:42,findeigen3:20,findwithin:8,fine:8,finish:53,fire:[1,7],first:[0,1,8,10,13,16,18,21,22,25,26,27,28,29,31,32,34,35,36,39,40,41,43,44,47,49,52],fit:[16,20,22,26,30,31],fix:[3,8,11,16,25,32,36,37,39,41],fix_cterm:32,fix_nterm:32,fix_surrounding_hydrogen:25,flag1:4,flag2:4,flag:[0,2,4,8,10,11,22,26,35,36,49,50],flanking_rot_angle_on:22,flanking_rot_angle_two:22,fletch:[26,47],fletcher:35,flexibl:[0,19,36,44,47,49,50,53],flip:52,flood:26,flush:[1,16],fold:38,folder:[2,4,8,16,18,37],follow:[0,1,2,4,5,8,10,11,16,18,20,22,23,25,26,28,29,30,31,35,36,37,39,41,47,49,50,51,52],fontsiz:27,forbidden:8,forc:[25,32,35],force_const:[25,32],forcefield:23,forcefieldaminoacid:25,forcefieldbondinfo:25,forcefieldconnect:25,forcefieldharmonicangleinfo:25,forcefieldharmonicimproperinfo:25,forcefieldljpairinfo:25,forcefieldlookup:[25,32,35,37],forcefieldperiodicdihedralinfo:25,forcefieldureybradleyangleinfo:25,forg:16,forget:[1,8],form:[14,20,24,25,26,30,35,40,52],formal:[31,32,49,52],format:[0,5,13,20,26,48],formula:33,forward:16,found:[1,4,8,11,13,16,21,23,26,28,31,32,33,34,35,36,44,46,52],foundat:1,four:[9,34],fraction:[26,28,32,34],frag_db:[23,26,31,37],frag_info:26,frag_length:[23,26,28],frag_map:26,frag_po:[23,26,28],frag_residu:[23,26],frag_seq:[23,26],frag_siz:26,fragdb:[23,24,26,31,35,37],fragger:[23,26,28,34,35],fragger_handl:35,fragger_map:26,fraggerhandl:[26,28,35],fraggermap:[26,28],fragment:[3,9,22,23,24],fragment_db:35,fragment_handl:28,fragment_info:26,fragment_length:[26,28],fragmentinfo:[26,31],fragments_per_posit:28,fragmentsampl:34,frame:[3,16,35,36],frame_energi:49,frame_residu:[45,47],frameresidu:[45,49,50],framework:[8,19,38],free:[8,20,51,52],frequenc:[26,34],frm:36,frmrotam:[44,49,53],frmrotamergroup:[44,46,49,50],from:[0,1,3,4,5,6,7,8,9,10,11,13,16,18,20,21,22,23,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],fromhhm:26,fromhoriz:26,fromresidu:52,front:[1,11,16],fstream:37,fudg:25,fulfil:[26,52],full:[0,1,8,10,21,25,26,29,30,31,34,36,47,49],full_seq:[29,31],fullgapextend:[29,35],fulli:[8,16,21,22,26,29,30,36],function_typ:40,functions_specific_to_your_act:8,fundament:37,funni:[2,8],further:[10,28,29,35,36,37],furthermor:37,futur:[25,26],gamma:[40,41,44],gamma_bin:41,gap:[0,3,9,18,24,25],gapextend:[29,35],gapfre:26,gapless:[0,13],gather:[4,12,16,26,28,47,49,52],gauc:52,gauch:52,gauche_minu:52,gauche_plu:52,gciiipgatcpgdyan:[31,35],gener:[1,3,5,8,10,13,14,16,18,20,23,24],generatedenovotrajectori:28,generatestructureprofil:26,geom:[21,22,25,26,28,32,35,44,49],geometr:[9,23],geoom:43,get:[0,1,7,8,16],getaa:[21,22,25],getaaa:21,getaah:21,getactivesubrotam:49,getallatomposit:[21,32,36],getallatomscoringkei:31,getallatomweight:31,getanchoratomindex:21,getangl:47,getangularbins:26,getatomcount:8,getatomnam:21,getatomnameamb:21,getatomnamecharmm:21,getaveragescor:31,getbackbonelist:[23,26],getbackbonescoringkei:31,getbackboneweight:31,getbins:27,getbinsperdimens:27,getbound:22,getc:22,getca:22,getcb:22,getchain:29,getchainindex:29,getchainnam:29,getchains:8,getcharg:[25,49],getclust:31,getclusteredcandid:31,getconfid:26,getcoordidx:26,getcoordinfo:26,getcpuplatformsupport:25,getcreationd:5,getdefault:[25,32,35],getdefaultlib:5,getdihedralangl:26,getdihedralconfigur:52,getdistbins:26,getdisulfidbridg:25,getdisulfidconnect:25,getdsspstat:26,getel:21,getenviron:21,getenvsetdata:8,getepsilon:25,getfirstindex:21,getforcefieldaminoacid:25,getfragmentinfo:[26,31],getframeenergi:49,getfudgelj:25,getfudgeqq:25,geth1index:21,geth2index:21,geth3index:21,getheavyindex:25,gethistogramindex:[22,27],gethistogramindic:27,gethnindex:21,gethydrogenindex:[21,25],getindex:[21,25],getinternalconnect:25,getinternalenergi:49,getinternalenergyprefactor:49,getlargestclust:31,getlastindex:21,getlength:29,getlist:28,getlooplength:25,getloopstartindic:25,getmass:25,getmaxnumatom:21,getmaxnumhydrogen:21,getn:22,getnam:[47,49],getnonbondedcutoff:32,getnum:31,getnumatom:[21,25],getnumb:31,getnumcandid:31,getnumchain:8,getnumcoord:26,getnumfrag:26,getnumhydrogen:21,getnumloopresidu:25,getnumresidu:[8,21,25],getnumstempair:26,getnumsubrotam:49,geto:22,getolc:[21,22],getomegators:[21,22],getoxtindex:25,getparticletyp:49,getpeptideboundconnect:25,getphiprobabilitygivenpsi:27,getphitors:[21,22,47],getpo:[21,49],getpotentialenergi:25,getpredict:26,getprob:[27,49],getpsiprobabilitygivenphi:27,getpsitors:[21,22,47],getr:33,getresiduedepth:26,getringpunch:33,getrotamericconfigur:52,getscor:[26,34],getselfenergi:49,getseqr:[21,40],getsequ:[21,22,26,31],getsequenceprofil:26,getsequenceprofilescoreskei:31,getsigma:25,getsimul:25,getsolventaccessibilitit:26,getstemrmsdskei:31,getstructureprofil:26,getstructureprofilescoreskei:31,getsubdb:26,getsubrotamerdefinit:49,getsystemcr:32,gettemperatur:[34,49],gettransform:22,getversionnumb:37,getweight:[28,31],ggg:35,gggaggg:35,gggggggggggggggggggg:35,git:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15],gitignor:8,give:[4,8,16,20,23,31,34,35,49],given:[0,1,3,4,8,9,10,11,13,14,21,22,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,44,47,49,50,52],glass:38,gln:[51,52],gln_ne2:21,global:[15,26,31,37],glu:[21,49,51,52],glu_oe1:21,glutam:51,glutamin:51,gly:[35,36,47,50,51],gly_n:21,glycin:[3,22,26,32,36,51],goal:[1,10,30],goe:[2,8,14,16,35,52],goldfarb:35,goldstein1994:[10,38],goldstein:[10,38],good:[4,8,18,25,26,35],goodwil:20,got:2,govern:20,grain:8,grant:20,graph:3,graph_initial_epsilon:36,graph_intial_epsilon:36,graph_max_complex:36,graphminim:[10,46],greatest:5,grep:2,grid:26,gromac:9,grossli:20,group:[4,14,24,26,27,41,44,45,46,47],group_definit:[27,41],group_idx:41,guarante:[26,28,31,34,36,37],gui:[8,27],guid:32,guidelin:[8,37],gzip:[0,5,11,13],haa:38,hand:[0,2,4,13,49],handl:[3,8,9],handler:28,happen:[1,8,25,26,28,29,34,35,49],hard:43,hardwar:18,harmless:20,harmon:[25,32],harmonic_angl:25,harmonic_bond:25,harmonic_improp:25,hasdata:26,hasfraglength:26,hasfragmentinfo:31,hash:26,hasringpunch:33,have:0,hbond:[28,35,41,49,50,51],hbond_scor:37,hbondscor:[35,37],headach:8,header1:4,header2:4,header3:4,header4:4,header:[0,4,16,17],header_output_dir:4,headlin:8,heavi:[21,25,36,39,50],heavili:[26,47],helic:[22,24,25,28,35,41],helix:[18,22,34,47],hello:37,hello_world:8,hellyeah:18,help:[0,1,2,4,7,8,13,16,18,25,41],helpactiontest:1,helper:4,hen:26,henc:[8,14,21,26,37],here:[0,1,2,4,8,11,13,14,16,18,21,22,25,26,27,28,30,31,32,34,35,37,39,41,44,48,52],herebi:20,herein:20,het:35,heurist:[35,50],heuristicprocessor:21,hgfhvhefgdntngcmssgphfnpygkehgapvdenrhlg:0,hhblit:[0,13],hhm:[0,13,26,31],hhsearch:26,hidden:49,hide:[8,16],hierarch:[31,40],hierarchi:15,high:[3,8,16,30,35],high_resolut:22,higher:[31,40,41],highest:15,highli:[2,8],hint:13,histidin:[25,51],histogram:[27,34],histori:16,hit:[1,10,16,27,32],hmm:38,hold:20,home:[4,5],homo:[0,13],homolog:[0,12,18,19,35,38],homologu:26,honor:35,honour:35,hook:8,horiz:26,host:[4,7,16],hotfix:16,how:[1,7],howev:[5,20,26],hparticl:49,hpp:37,hsd:[51,52],hse:[51,52],html:[2,8,16],http:[7,20],hybrid:52,hydrogen:[3,21,22,25,35,38,41,49,50],hyphen:1,i_loop:[25,36],id_:37,idea:[1,8,21,23,25,26,35,40,49,53],ideal:[22,32,53],idenfifi:50,ident:[3,26,27,41,52],identif:20,identifi:[0,13,14,20,26,31,35,36,39,41,50,52],idx:[10,21,22,25,26,28,32,40,49],idx_ca_res_37:21,idxhandl:8,iff:[26,29,33],ifstream:37,ignor:[0,25,32,35],iii:20,illustr:26,image_nam:[5,7],imagehandl:22,imagin:8,imaginari:1,img:[7,22],immedi:[1,8,15,16],impact:[0,25,26],implement:[3,16,19,26,28,29,32,34,35,37,43,44,46,47,51],impli:20,implicit:2,improp:25,improv:[3,20,25,35,38,44],in_dir:4,in_fil:8,in_path:4,in_stream:37,in_stream_:37,inabl:20,inaccur:25,inaccurate_pot_energi:25,inact:53,inactive_internal_energi:53,incident:20,incl:[25,26,35],includ:[2,8,11,16,18,20,21,25,26,29,31,33,35,37,39,41,47],include_ligand:35,inclus:[20,35],incompat:[31,32],incomplet:[35,48],inconsist:[10,13,21,22,25,26,29,31,32,36,40],inconveni:16,incorpor:20,increas:[10,28,31,32,35,50],incur:20,indemn:20,indemnifi:20,independ:[0,3,25,36,48],index:[8,10,21,22,25,26,27,28,29,31,32,33,34,35,39,40,41,45,49,50,52],index_four:25,index_on:25,index_thre:25,index_two:25,indic:[8,10,11,13,20,21,22,25,26,27,28,29,31,32,35,36,40,44,47,49],indirect:20,individu:[20,39,41],inf:[10,32],infin:32,infinit:32,influenc:[13,28,40],info:[26,31,35,40],inform:[5,7,8,13,16,20,22,23,26,28,29,31,34,35,38,40,41,42],infring:20,inherit:[1,39,40,41,46],init:16,init_bb_list:34,init_frag:34,initi:[3,10,21,22,26,28,31,32,34,35,36,39,40,41,46,49,52],initial_bb:31,initial_epsilon:[10,53],initialis:1,inlin:37,inner:14,input:[0,1,3,13,16,18,25,26,27,28,32,34,35,36,39,40,41,44,48,50,53],insert:[21,22,29,31,34,35,53],insertinto:[21,22,31],insertloop:[29,35],insertloopcleargap:[29,31,35],insid:[1,4],insight:16,instanc:[3,8,13,24,25,37],instead:[0,1,2,3,4,8,11,26,28,29,31,34,35,50],institut:20,instruct:2,int16_t:37,int32_t:37,int_32_t:37,integ:[8,13,21,40],intend:[1,8,34],intent:26,intention:20,interact:[3,8,25,32,39,40,41,43,44,45,49],intercept:[39,41],interest:[1,10,25,26,34,37,49,52],interfac:[0,4,8,20],intermedi:8,intern:[0,1,3,4,5,8,16,21,24,25,26,27,28,31,32,34,35,36,37,38,39,40,41,46,49,50,53],internal_e_prefac:50,internal_e_prefactor:49,internal_energi:49,internet:8,interpl:52,interpol:[40,52],interpret:[8,11],intervent:8,intrins:2,introduc:[1,4,8,16,32,35],invalid:[8,21,25,26,29,32,35,36,39,40,41,45,49,51,52],invok:[2,4,8,15,16],involv:[16,30,44],iostream:37,irrevoc:20,is_c_ter:[25,36],is_cter:25,is_n_ter:[25,36],is_nter:25,isallatomscoringsetup:[31,35],isallset:21,isanyset:21,isbackbonescoringsetup:35,isctermin:29,isempti:31,isen:14,ishbondacceptor:49,ishbonddonor:49,isntermin:29,isoleucin:51,isset:21,issimilar:52,issourc:37,istermin:29,isvalid:47,item:[1,8,16,21,22,25,26,35,40],iter:[10,26,27,28,31,32,34,35,49],itself:[3,4,8,16,26,34,36,37,39,41,49],januari:20,job:[8,26,34,35],johner:38,join:[8,21,23,26,31,32,34,36],jone:[38,49],jones1999:[26,38],journal:38,json:[0,13],jupyt:7,just:[1,2,8,13,15,16,23,25,26,29,31,35,50],kabsch1983:[26,38],kabsch:38,keep:[0,1,4,5,8,13,16,30],keep_non_converg:31,keep_sidechain:[8,36],kei:[0,13,26,28,31,34,35,39,40,41],kept:[8,16,25,31,32,36,45],kernel:38,keyword:27,kic:[30,31],kicclos:34,kick:13,kill_electrostat:25,kind:[1,8,20],kinemat:32,know:[2,52],knowledg:52,known:[4,11,21,40,50],krivov2009:[10,38,47],krivov:38,kwarg:1,l_e:49,lab:48,label:[16,25],lack:35,languag:[4,20],larg:[5,27,32,35],larger:[10,14,22,26,35,50],largest:[28,31,44],last:[1,4,21,22,25,29,31,32,34,35,40,41,48],last_psi:22,later:[1,8,10,21,47],latest:[2,5,7,8],latter:[0,5,16,35],launcher:[4,8],law:20,lawsuit:20,layer:44,layout:[26,37],lazi:49,lbfg:35,leach1998:[10,38],leach:38,lead:[0,8,9,11,22,25,31,32,36,39,41,48],least:[0,2,4,8,10,16,20,22,25,26,35,39,41,44],leav:1,left:[11,32],legal:[8,20],lemon:38,len:[22,23,25,26,28,31,35,36,41,47],length:[9,10,21,24,25,26,27,28,29,31,32,34,35,36,37,39,40,44],length_dep_weight:35,length_depend:31,lennard:49,less:[0,10,16,22,25,26,27,31,35,39,41,52],let:[1,7,8,22,26,31,47],letter:[3,5,21,22,26,27,34,51],leu:51,leu_h:21,leucin:51,level:[2,3,8,14,15,16,30,35,49],lexicograph:35,liabil:20,liabl:20,lib64:8,lib:[5,7,37],libexec:[4,8],libpromod3_nam:4,librari:[0,3,4],library1:4,library2:4,licenc:48,licens:3,licensor:20,life:16,ligand:[3,35,36,50],like:[1,4,7,8,16,35,37,48,49],limit:[3,20,26,32,35],line:[0,1,7,8,9,12],linear:[26,28,31,34,39,40,41],linear_weight:[31,34,39,41],linearcombin:31,linearscor:34,link:[0,2,4,8,16,20,21,25,26,28,34,36,39,40,41,42],link_cmd:4,linkcheck:[2,8,16],linker:[4,35],linker_length:35,list:[0,1,2,3,4,8,9,10,11,13,20,21,22,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,44,45,46,47,49,50,52,53],listen:8,literalinclud:8,litig:20,littl:[4,8,16,37],live:[4,8],lj_pair:25,load:[1,8,13,15,21,23],loadalign:[30,35],loadallatominteractionscor:39,loadallatompackingscor:39,loadamberforcefield:35,loadbb:26,loadbbdeplib:[0,36,47,48],loadcach:28,loadcbetascor:[31,34,41,42],loadcbpackingscor:41,loadcharmm:25,loadcharmmforcefield:35,loaddefaultallatomoverallscor:39,loaddefaultbackboneoverallscor:41,loadent:[0,13],loadfragdb:[23,24,31,35],loadhbondscor:41,loadlib:[0,36,48],loadpdb:[8,21,23,25,26,30,31,32,34,35,36,42,47],loadport:[25,26,27,37,39,41,52],loadreducedscor:41,loadsequenceprofil:[13,26,31],loadssagreementscor:41,loadstructuredb:[23,24,26,31,35],loadtorsionsampl:[22,24,27,34],loadtorsionsamplercoil:[24,31,35],loadtorsionsamplerextend:24,loadtorsionsamplerhel:24,loadtorsionscor:41,local:[2,5,7,25,26,27,39,41,52],localhost:7,locat:[2,3,4,5,10,22,24,26,29,37,39,41,49],log:[11,16,33,49,50],logic:0,loginfo:33,lone:49,lone_pair:49,longest:26,look:[5,8,11,16,22,26,36,40],lookup:[9,21,23],looooooong:10,loop:[0,3,8,18,21],loop_candid:31,loop_length:[25,26,31,36],loop_main:8,loop_po:25,loop_seq:31,loop_start_indic:[25,36],loopcandid:[28,30],loss:[16,20],lossi:26,lost:[1,16],lot:[1,7,8,13,16],low:[1,8,10,50],lower:[31,34,35,39,41],lowest:[31,34,49],lowest_energy_conform:34,lysin:51,machin:[25,26,27,37,39,41,52],macro:[4,8],made:[4,20,52],magic:[8,37],mai:[0,1,2,4,8,11,13,16,20,21,25,29,32,35],mail:20,main:[35,37,52],mainli:[21,34,49],maintain:[8,16],maintin:34,major:16,makefil:[2,8],makestat:52,malfunct:20,malici:16,man:[2,8],manag:[4,8,20,42],mani:[7,11,13,26,32,33,35,50],manipul:22,manner:[8,10,34],manual:[1,2,5,8,9,16,26,31,34,35,37,49],map:[0,13,21,22,26,28,33,36],mariani:38,mark:[4,20,50],mass:25,massiv:28,master:[8,16],mat3:9,mat4:[9,22,28,35],match:[0,4,13,22,25,26,27,31,32,34,35,40,41],materi:[1,8],math:33,mathemat:[31,32],matplotlib:27,matric:38,matrix:[9,26],matter:[4,7],max:[9,10,21,29,33,35,36,41,52,53],max_alpha:41,max_beta:41,max_complex:[10,53],max_count:[39,41],max_d:41,max_dev:34,max_dist:[31,40],max_extens:35,max_gamma:41,max_iter:[28,31,35],max_iter_lbfg:35,max_iter_sd:35,max_length:29,max_loops_to_search:35,max_n:10,max_num_all_atom:35,max_p:50,max_prob:49,max_res_extens:35,max_step:32,max_to_show:14,max_visited_nod:10,maxfraglength:26,maxim:[10,26,28,31,32,34,35,38,40,41],maximum:[10,26,31,32,34,49,50],mc_closer:34,mc_cooler:34,mc_num_loop:35,mc_sampler:34,mc_scorer:34,mc_step:[10,35],mcsolv:10,mean:[4,8,13,16,20,21,25,32,35,36],meaning:[26,31],meant:[18,21,26,33,35,50],measur:28,mechan:[18,20,31,32,34,35,40],meddl:[7,35],media:20,medium:20,meet:20,member:[8,13,31,35],memori:[10,26,35,37],mention:[1,2],merchant:20,mere:20,merg:[16,25,28,29,31,35,36,40,49],merge_dist:35,mergegap:29,mergegapsbydist:35,mergemhandl:35,mess:[8,16,40],messi:16,met:51,methionin:[35,51],method:[0,1,10,13,21,25,26,27,32,35,36,37,50],metric:40,metropoli:[10,31,34],mhandl:[29,30,31,35],middl:16,might:[10,25,26,31,32,34,40,49,50,53],min:[31,41],min_alpha:41,min_beta:41,min_candid:31,min_d:41,min_dist:40,min_gamma:41,min_loops_requir:35,min_scor:31,mincadist:22,mind:[1,8],minim:3,minimizemodelenergi:35,minimum:[22,26,28,44],minor:[3,25],mirror:37,miser:14,mismatch:[21,40],miss:[0,11,13,25,35],mix:[0,4],mkdir:[2,8],mm_sy:[25,32],mm_sys_output:25,mm_system_cr:32,mmcif:[5,11],mmsystemcr:[25,32],mod:8,mode:[1,52],modellinghandl:[29,31,35],modeltermini:35,modif:[20,35],modifi:[8,16,20,22,31,35],modified_crambin:31,modul:[1,3],modular:19,module_data:4,mol:[8,9,18,21,22,23],molecular:[18,32,35],molprob:30,molprobity_bin:33,molprobity_execut:33,moment:8,monitor:1,monolith:8,mont:[3,10,28,31,34,35,46],montecarlo:3,mood:8,more:[1,2,4,7,8,10,13,14,16,20,28,35,44,49],most:[0,3,4,5,8,22,25,26,27,28,31,32,35,39,41,48,50],mostli:[4,16,49],motion:[22,38],mount:[5,7],movabl:25,move:[2,3,8,16,25,31,32,34,35,37],movement:28,mpscore:33,msg:11,msgerrorandexit:11,msm:3,msse4:2,much:[10,26,35],multi:18,multipl:[0,2,3,4,8,13,14,18,25,28,31,35,36,39,41],multipli:[10,34],multitempl:13,must:0,mutlipl:13,my_db_on:26,my_db_two:26,my_script:7,myclass:37,myclassptr:37,mytrg:0,n_coord:9,n_num:29,n_po:[9,22,41],n_stem:[9,23,26,29,31,32,34],n_stem_phi:34,n_ter:[32,50],naivesolv:10,name:[0,1,3,4,5,7,8,11,13,14,20,21,25,26,27,29,31,33,35,44,48,49,51,52],name_pymod:4,namespac:[7,13,37],nan:[32,52],nativ:37,necessari:[8,22,34,40],necessarili:[20,53],need:[1,2,3,4,5,8,11,13,15,16,22,25,26,27,28,31,32,35,36,37,39,40,41,47],need_config_head:4,neg:[1,10,25,32,40],neglect:[28,32,45,49],neglect_size_on:31,neglig:20,neighbor:[8,21,35],neighbour:[35,52],network:[22,44],never:[13,16,26,31,36,37,39,41],nevertheless:[8,49],new_default:25,new_env_po:21,new_po:21,new_res_nam:49,new_siz:22,newli:[5,21,34],next:[1,8,16,22,27,28,29,37],next_aa:34,nglview:7,nice:8,nitrogen:[9,22,32,43,49,50],nobodi:1,node:10,node_idx:10,node_idx_on:10,node_idx_two:10,non:[0,4,10,13,16,20,24,25,27,28,29,31,32,35,37,47,48,50],non_rotamer:52,nonbonded_cutoff:[25,32],none:[13,26,28,33,34,35,36],nonredund:26,nonzero:52,norm:41,normal:[20,39,41],normalis:40,notabl:26,note:[0,2,8,13,14,21,22,25,26,28,31,32,34,35,36,37,39,40,41,47,50,51],notebook:7,noth:[0,4,8,13,14,20,34,49],notic:[1,4,16,20],notwithstand:20,novel:[19,38],novo:3,now:[3,8,14,16,18,22,26],nparticl:49,nterminalclos:34,null_model:31,num:[23,28,31,32,36],num_frag:[26,35],num_gap_extens:29,num_loop:31,num_residu:[21,25,34,36,39,40,41],num_residues_list:36,num_trajectori:28,number:[0,1,8,9,10,13,14,18,21,22,24,25,26,27,28,29,31,32,34,35,36,37,39,40,41,42,44,45,49,52],numer:35,numpi:[27,34],o_po:22,object:[0,3,8,13,14,20,21,22,23],oblig:20,observ:[10,26,32,53],obtain:[10,18,20,23,35],obviou:16,occupi:[45,50],occur:[21,28,40,41],ocparticl:49,odd:26,off:[1,8,14,35],offend:33,offer:[6,20,24,30,49,52],offset:[0,3,13,26,31,35],ofstream:37,often:[8,11,13,32],olc:22,old:[33,35],oligom:[0,13,30],oligomer:3,omega:[21,22],onc:[1,3,8,16,25,28,31,32,34,46,52,53],one_letter_cod:[21,23,26,31,32,34,36],onli:[0,1,2,4,8,10,11,13,14,15,16,20,21,22,25,26,28,29,31,33,34,35,36,37,39,41,44,47,48,50],only_longest_stretch:26,onto:[1,22,26,28],oparticl:49,open:[13,25,26,27,37,39,41,52],openmm:[2,18,25,32],openstructur:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],oper:[3,10,16,18,21,26,40],opt:[11,13,16],optim:[0,3,10,25,26,27,31,39,41,44,47,48,52],optimis:8,optimize_subrotam:[36,44],option:[0,2,3,5,7,13,26,31,32,35,52],order:[0,5,13,21,25,26,29,31,35,37,40],org:20,organ:[8,26,52],orient:[9,32,41],orig_indic:[31,33],origin:[5,7,9,13,16,20,22,26,31,34,35,40,53],ost:[0,1,3,4],ost_complib:[5,7],ost_double_precis:2,ost_ent:33,ost_librari:4,ost_root:[2,8],other:[0,1,4,8,10,14,16,20,21,22,31,32,35,36,39,41,42],other_index:22,other_res_index:21,otherwis:[1,4,8,10,14,16,20,21,22,25,26,28,29,31,32,34,39,40,41,49,52],our:[4,5,8,16,26,31],out:[0,1,2,4,8,14,16,20,21,25,26,27,28,29,31,34,47,52],out_path:4,out_po:25,out_stream:37,out_stream_:37,outdat:[5,7],outer:[14,26],outlier:33,output:0,output_dir:4,outsid:[8,40],outstand:20,over:[2,4,13,16,26,32,34,35,49],overal:[10,34,40,46],overhead:25,overlap:[25,34,35,36],overli:16,overload:37,overrid:[2,5,25],overridden:4,overriden:5,overview:[8,16],overwrit:31,overwritten:25,own:[1,3,4,5],owner:20,ownership:20,oxt:[9,21,25],oxygen:[22,35,43,49,50],pack:21,packag:[4,8,16],pad:[22,37],page:[2,8,20],pai:1,pair:[9,25,26,27,28,32,34,36,37,39,40,41,44,49,52],pairwis:[3,8,10,22,28,31,35,39],pairwise_energi:10,pairwiseenergi:49,pairwisefunct:[40,41],pairwisefunctiontyp:40,pairwisescor:[8,35],paper:[43,44,47,49],paragraph:[1,8],parallel:26,paramet:[1,4,8,9,10,11,13,14,15,21,22,24,25,26,27,28,29,31,32,33,34,35,36,38,39,40,41,43,44,45,46,48,49,50,51,52,53],parameter_index:26,parametr:[32,35,36,50],parent:35,pars:[0,11,12],parser:12,part:[1,8,16,18,20,21,26,34,35,40,44,46,47,49],partial:29,particip:[36,44],particl:[25,26,32,41,43,44,45,47],particular:[8,10,20,26,31,32,34,49,52],partner:[39,40,41,49],pass:[13,16,21,25,26,28,29,32,34,44,45,49,50],past:[8,16,22,29],patent:20,path:[1,2,4,5,8,11,16,18,25,26,27,33,39,41,52],path_to_chemlib:15,path_to_dockerfile_dir:5,path_to_promod3_checkout:6,pattern:38,paus:14,pdb:[0,5,8,11,13,18,21,22,23,24,25,26,30,31,32,33,34,35,36,42,47],penal:[29,35],penalti:[29,35],penultim:3,peopl:16,pep:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],peptid:[3,21,23,25,26,35,36,47],per:[4,8,10,12,16,21,27,31,34,35,39,40,41,44],percent:20,percentag:33,perfect:8,perfectli:8,perform:[0,10,16,18,19,20,25,28,31,32,33,34,35,37,40,44],period:25,periodic_dihedr:25,periodic_improp:25,permiss:[8,20],permut:10,perpetu:20,pertain:20,phase:25,phe:[51,52],phenix:33,phenylalanin:51,phi:[21,22,26,27,32,34,41,47,50,52],phi_bin:[41,52],phi_handl:47,philippsen:38,phipsisampl:34,phosphoserin:35,phrase:8,pick:[31,34],pictur:8,piec:[8,28],pipelin:[0,3,14],pivot:[31,32,34],pivot_on:[31,32],pivot_thre:[31,32],pivot_two:[31,32],place:[1,2,4,8,11,13,16,20,26],plain:[0,13],plan:16,plane:33,platform:[18,25],playground:7,pleas:[2,8,16,28,31,32,35],plot:27,plt:27,plu:[8,13,15,26,44,49],pm3_csc:16,pm3_openmm_cpu_thread:[18,25,35],pm3_runtime_profiling_level:14,pm3argpars:[0,11,12],pm3argumentpars:[0,11,13],pm_action:[1,4,8],pm_action_init:8,pm_bin:1,png:27,point:[2,7,8,13,15,21,26,28,34,35,40,52],pointer:[2,8,37],polar:[49,50],polar_direct:49,polici:8,pop:[16,31,34,40],popul:[2,16],port_str_db:26,portabl:[4,17,25,26,27],portable_binary_seri:37,portable_fil:4,portablebinarydatasink:37,portablebinarydatasourc:37,pos_end:28,pos_on:28,pos_start:28,pos_two:28,posit:[3,8,9],possibl:[0,3,8,10,13,16,20,22,25,26,27,29,31,32,34,35,36,37,39,40,41,44,46,49,51,52],post:13,postprocess:36,pot:25,pot_:32,potenti:[10,23,25,26,31,32,35,36,37,38,41],power:20,pqhpg:0,practic:[4,8,25,26],pre:[8,16],pre_commit:[8,16],preceed:36,precis:[2,31,35],precomput:23,pred:40,predefin:[4,18,25,35,39,41],predict:[26,28,35,38,40,41],prefactor:49,prefer:[2,4,20,26,52,53],prefilt:35,prefix:[1,4,8,11],prepar:[8,20,35],present:[22,28,32,36,49,50,52],prev_aa:34,prevent:[1,8],previous:[25,26,31,36,40],primary_rot_angl:22,principl:[34,40],print:[1,2,5,20,22,23,25,26,31,32,33,35,42],printstatist:26,printsummari:14,prior:35,privat:[1,37],pro:[21,27,51,52],probabilist:[26,50],probability_cutoff:50,probabl:[4,8,10,16,26,27,28,31,32,34,49,50,52],problem:[3,7,10,13,16,26,31,32,34,35,40,42,44,46,48,53],problemat:[3,5,28],proce:42,procedur:[10,28,34,36],process:[1,13,16,21,25,28,32,34,35,37,40,45,49,52],processor:5,produc:[0,1,2,4,8,10,26,29,33,35,50],product:[1,3,16,20],prof:[0,26,31],prof_dir:26,prof_path:26,profil:[0,3,12,13],profiledb:26,profilehandl:[13,26,28,31,35],prog:13,program:[4,5,8,12],project:[3,4,8,16],prolin:[22,33,50,51],promin:[0,20],promod3_mod:4,promod3_nam:4,promod3_name_head:4,promod3_path:8,promod3_root:8,promod3_shared_data_path:[8,37],promod3_unittest:[1,4,8],promod:[5,7],promot:8,propag:[8,22],proper:[16,26,50],properli:[1,35,39,41,50],properti:[21,22,35,52],propos:[29,31,32,34,44],proposed_posit:34,proposestep:34,prot:[8,23,26,32,34,36,47],prot_rec:8,protein:[0,18,24,25],proton:[21,25,51,52],prototyp:19,provid:[0,1,2,3,4,5,7,8,13,16,20,21,22,23,25,26,28,29,31,32,33,34,35,36,37,40,48,49,50,52],prune:[10,53],pseudo:[34,35,39,41],psi:[21,22,26,27,32,34,41,47,50,52],psi_bin:[41,52],psi_handl:47,psipr:[26,28,40,41],psipred_confid:41,psipred_pr:28,psipred_predict:[26,28,35],psipred_st:41,psipredpredict:23,pssm:[0,13],publicli:20,pull:[7,8,16],punch:[1,3,30],pure:0,purpos:[8,10,20,35,52],push:[7,16],pushverbositylevel:13,put:[1,4,8,11,13,35],pwd:5,py_run:[1,4,8],pyc:1,pylint:16,pylintrc:16,pymod:[4,8,16],pyplot:27,pytest:8,python2:8,python:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],python_root:2,pythonpath:8,qmean:2,qmeandisco:40,qualiti:35,quantum:38,queri:[26,52],querylib:52,question:[3,27],quickli:[5,8,32],quit:[8,13],rackovski:38,radian:[9,22,25,27],radii:[33,43],radiu:[8,33,39,41],raihvhqfgdlsqgcestgphynplavph:0,rais:[0,9,10,13,21,22,25,26,27,28,29,31,32,33,34,35,36,39,40,41,44,45,49,50,52],rama_iffi:33,ramachandran:33,random:[10,22,24,27,31,32,34],random_se:31,randomized_frag:22,randomli:[27,34],rang:[8,9,21,22,23,25,26,27,28,29,32,34,35,39,40,41,52],rank:31,rapid:38,rare:8,rather:[5,7,8,11,16,34,52],raw:[7,18,25,26,27,30,31],rawmodel:[3,8],reach:[0,29,32],read:[0,8,11,13,16,25,26,27,29,36,37,39,41,48,52],readabl:[0,8,13,20,52],readdunbrackfil:48,reader:[16,18],readi:[2,52],readm:[2,48],real:[8,13,37,50],realli:[1,2,8,11,16],reappear:16,reason:[8,16,20,32,34,53],rebas:16,rebuild:[2,8],recalcul:27,receiv:20,recent:16,recip:[3,6,7],recipi:20,recoginz:51,recogn:[0,13],recognis:[1,8,16],recognit:38,recommend:[2,5,8,20,25,35],reconstruct:[0,3,8,18,21,22,25,30,32,35],reconstructcbetaposit:22,reconstructcstemoxygen:22,reconstructor:[32,35,36],reconstructoxygenposit:22,reconstructsidechain:[8,35,36],reconstructtest:8,record:[1,35],recreat:16,redistribut:20,reduc:[3,25,28,35,41],reduced_scor:37,reducedscor:[35,37],redund:[24,31],ref_backbon:[23,26],ref_fil:8,refactor:3,refer:[1,4,8,18,21,22,23,25,26,34],referenc:8,refresh:31,regard:[20,32,44],region:[25,28,29,32,34,35,45,50],regist:[4,8],registri:7,regress:38,regularli:5,reinterpret_cast:37,reject:[31,32,34],rel:[4,5,9,10,26,28,32,41],relat:[4,8,13,26,28,37,38,49],relax:30,relev:[2,3,4,7,25,36],reli:5,remain:[20,30,34,35],rememb:[1,8,34],remodel:[31,36],remodel_cutoff:36,remov:[2,3,10,22,25,26,29,31,33,35,36,40,47,49],removecoordin:26,removeterminalgap:35,renumb:[26,35],reorder:35,reordergap:35,replac:[3,20,21,22,34,35],replacefrag:22,report:[1,8,35],reportmolprobityscor:33,repositori:[1,4,8,16],repres:[10,20,21],represent:[22,23,25,26,27,37,39,41,49,52],reproduc:[3,20,35],reproduct:20,request:[26,28,48,52],requir:[0,2,3,5,8,13,16,19,20,21,22,26,27,28,31,32,35,36,37,42,49,50,51,52],reread:26,res_depth:26,res_idx:49,res_index:21,res_indic:[21,25,36],res_list:[21,25,32,36],res_num:21,resembl:16,reserv:11,reset:[10,21,25,32,34,40,49],resid:5,residu:[0,3,8,9,21,22,23,24,25,26,27,28,29,31,32,33,34,35,36,38,39,40,41,42,44,45,47,49],residue_depth:26,residue_index:[45,49,50],residuedepth:26,residuehandl:[9,21,22,26,29,31,32,33,34,49,50,52],residuehandlelist:21,resiz:[22,37],resnum:[21,22,29,31,35,36,40],resnum_on:40,resnum_rang:35,resnum_two:40,resolut:[22,32],resolv:[16,21,32],resolvecystein:44,resort:35,respect:[9,25,35],respons:[8,16,20],rest:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],restart:7,restor:[22,31,34,40],restraint:[26,32],restrict:[8,16,29],restructuredtext:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],result:[0,2,8,10,20,25,27,28,31,32,33,34,35,36,38,44,52],resum:14,retain:20,reus:[35,36],review:16,revis:20,reviv:16,rewrit:1,richardson:38,ridig:36,right:[1,2,8,13,20],rigid:[0,3],rigid_frame_cutoff:36,rigidblock:28,rij:43,ring:[3,30],ring_punch_detect:35,risk:20,rmsd:[22,23,26,28,31,32],rmsd_cutoff:[26,31,32],rmsd_thresh:[26,28],rnum:40,robot:38,role:13,root:[2,4,8,16],rosetta:41,rot:36,rot_constructor:47,rot_group:[47,50],rot_lib:50,rot_lib_entri:50,rota_out:33,rotam:[0,3,33,36,38,44,45],rotamer:[48,52],rotamer_group:[44,46,47],rotamer_id:47,rotamer_librari:[3,35,36,48],rotamer_model:36,rotamer_on:44,rotamer_res_indic:36,rotamer_two:44,rotamergraph:[36,46,47,49,53],rotamergroup:49,rotamerid:[47,50],rotamerlib:[35,36,37,48,50,52],rotamerlibentri:[50,52],rotat:[9,22],rotatearoundomegators:22,rotatearoundphipsitors:22,rotatearoundphitors:22,rotatearoundpsitors:22,rotationaroundlin:9,roughli:24,round:52,routin:[1,18,31],royalti:20,rrm:36,rrmrotam:[44,49],rrmrotamergroup:[44,46,49,50],rst1:4,rst2:4,rst:[4,8,16],rsync:8,rule:[5,8,9,16],run:0,runact:1,runexitstatustest:1,runmolprob:33,runmolprobityent:33,runnabl:8,runner:1,runtest:[1,8],runtim:[3,10,12],runtimeerror:[9,10,21,22,25,26,27,29,31,32,34,35,36,39,40,41,44,45,48,49,50,52],runtimeexcept:27,s_id:26,safe:2,said:4,same:[0,1,2,4,7,8,10,13,14,20,21,25,26,28,31,32,34,35,36,37,39,40,41,42,45,48,49,50,52],samiti:35,sampl:[3,8,22,23],sampled_frag:34,samplemontecarlo:[3,34],sampler:[3,23,24,26],samplerbas:34,sampling_start_index:34,sander:38,saniti:2,sanity_check:2,satisfi:51,save:[8,16,22,25,26,27,28,31,34,37,39,40,41,52],savebb:26,savecach:28,savefig:27,savepdb:[18,21,22,25,26,30,31,32,34,35,36,47],saveport:[25,26,27,37,39,41,52],sc_data:32,sc_rec:[32,36],sc_rec_test:36,sc_result:32,scale:22,scatter:27,scheme:[1,8,13,21,26,29,34],schenk:38,schmidt:38,schwede:38,sci:38,scondari:35,scope:14,score:[0,3,8,23,26,28,29,30],score_contain:31,score_env:[31,34,42],score_threshold:44,score_vari:35,scorecontain:31,scorer:3,scorer_env:[28,31,34],scorerbas:34,scoring_weight:28,scoringgapextend:[29,35],scoringweight:[28,31,35],scratch:[26,34],scriptnam:11,scriptpath:8,scwrl3:42,scwrl3disulfidscor:[43,44],scwrl3pairwisescor:43,scwrl4:[38,44,47,49,50],scwrlrotamerconstructor:[47,49,50],seamlessli:16,search:[2,3,8,21,26,28,31,33,35,36,41,44,49,50],searchdb:[23,26],second:[8,10,22,25,26,28,31,32,35,39,40,41,43,44],secondari:[3,26,28,38,41],secondli:8,section:[1,4,7,17,20,54],see:[0,1,8,9,10,11,13,16,18,20,21,25,26,27,29,31,33,34,35,37,39,40,41,52],seed:[10,24,27,31,32,34],seem:16,segment:22,select:[3,10,26,28,34,35,36,47],selenium:35,self:[1,8,10,44,47,49],self_energi:[10,49],sell:20,send:11,sensibl:35,sent:20,seok:38,separ:[1,3,8,10,20,25,27,35,39,41,44],seq:[13,21,23,26,28,29,31,35,40,42],seq_idx_on:28,seq_idx_two:28,seq_one_idx:28,seq_sep:[39,41],seq_tpl:[31,35],seq_trg:[31,35],seq_two_idx:28,seqid:[24,26],seqprof:13,seqr:[0,21,23,26,28,29,31,34,35,36,39,40,41],seqres_str:[21,32,36],seqsim:26,sequenc:[0,3,8,13,18,21,22,23],sequencefromchain:42,sequencehandl:[21,26,28,29,35,40],sequencelist:[21,35,40],sequenceprofil:26,sequenti:[22,35],ser:51,serial:[26,37],serializ:37,serin:51,serv:[1,13,26,28,31,34],servic:[16,20],set:[1,2,4,8,10,11,13,15,16,18,21,22,25,26,28,31,32,33,34,35,36,37,39,40,41,44,47,49,50,52,53],setaa:22,setactivesubrotam:49,setallatomscoringkei:31,setaroundomegators:22,setaroundphipsitors:22,setaroundphitors:22,setaroundpsitors:22,setbackbonescoringkei:31,setbackrub:22,setc:22,setca:22,setcb:22,setcharg:25,setcpuplatformsupport:25,setdefault:25,setdisulfidconnect:25,setenergi:[39,41],setenviron:[21,32,36,40],setepsilon:25,setframeenergi:[47,49],setfudgelj:25,setfudgeqq:25,setinitialenviron:[21,31,32,34,36,40,42],setinternalconnect:25,setinternalenergi:49,setinternalenergyprefactor:49,setinterpol:52,setmass:25,setn:22,setnonbondedcutoff:32,seto:22,setolc:22,setpeptideboundconnect:25,setphitors:22,setpo:21,setpolardirect:49,setprob:49,setpsipredpredict:[35,40,41],setpsitors:22,setresidu:21,setscor:41,setsequ:22,setsequenceoffset:35,setsequenceprofil:35,setsequenceprofilescoreskei:31,setsigma:25,setstemrmsdskei:31,setstructureprofil:26,setstructureprofilescoreskei:31,settemperatur:49,setup:[5,7,8],setupdefaultallatomscor:[31,35],setupdefaultbackbonescor:[31,35],setupsystem:25,setweight:31,sever:[0,2,3,5,8,10,13,24,26,27,28,31,32,36,40,41,42,44,48,49,52,53],sg_pos_on:43,sg_pos_two:43,shake:34,shall:20,shanno:35,shapovalov2011:[38,48],shapovalov:38,shared_ptr:37,shebang:8,sheet:35,shelenkov:38,shell:[1,2,8,11],shift:[22,26,29],shiftctermin:29,shiftextens:29,ship:[5,48],shorten:35,shorter:35,shortest:31,shortli:8,should:[1,2,4,5,7,8,10,11,13,16,18,20,22,23,26,27,28,31,32,34,35,36,37,40,45,47,49],show:[1,8,13,14,31,34,47,50],showcas:[1,21,25,27],shown:[8,14,35],shrink:22,shrug:38,side:[8,35,38],sidechain_pymod:8,sidechain_reconstructor:35,sidechain_rst:8,sidechain_test_data:8,sidechain_test_orig:36,sidechain_test_rec:36,sidechain_unit_test:8,sidechainparticl:[49,50],sidechainreconstructiondata:[30,32],sidechainreconstructor:[25,30,32,35],sidenot:[26,36],sig1:52,sig2:52,sig3:52,sig4:52,sigma:25,silent:1,sim:25,similar:[1,2,16,23,26,28,40,41,52],similardihedr:52,similarli:[2,25,35],simpl:[0,9,22,26,34,39,40,41,52],simpler:[25,35],simplest:[5,8,30],simpli:[21,22,31,32,34,35,50,51,52],simplic:[23,26],simplif:13,simplifi:[3,22,25,26],simul:[10,25,31,32,34],sinc:[1,2,4,8,10,11,16,18,22,25,26,27,28,51],singl:[2,4,8,10,21,22,25,26,28,31,32,34,35,36,40,41,45,48,49,50,53],singleton:25,singular:[3,6],singularity_nohttp:7,sink:37,sit:8,site:[5,8],size:[8,21,22,26,27,32,34,37,39,40,41],sizeof:37,skip:[0,1,8,16,26,35,50],slide:28,slight:35,slightli:35,slow:37,slower:[18,25,26,27,35,39,41,52],small:[8,26,32,35,36],smaller:[22,26,28,32,41],smallest:47,smallish:[2,8],smart:16,smng:3,smooth:38,smtl:35,soding2005:[26,38],softsampl:34,softwar:[8,20,38],sol:47,sole:[1,16,20],soli:38,solis2006:[24,38],solut:[8,10,28,31,32,34,35,36,46,47],solv:[10,16,47,53],solvent:26,solventaccess:26,solver:3,some:[1,2,4,5,6,7,8,13,16,21,23,26,30,33,34,35,36,37,40,42,47,50,52],somedata:37,someth:[1,7,8,11,16,26],sometim:16,somewher:4,soon:[7,10,32,41,47,52],sort:[1,4,10,14,31,34,52],sound:16,sourc:[1,2,4,7,8,11,13,15,16,20,26,28,31,32,33,34,35,36,37,52],source1:[4,16],source2:[4,16],source3:4,source4:4,source_chain_idx:35,source_mhandl:35,sp3:52,space:[10,34,38],span:35,sparticl:49,spatial:[8,42],spawn:[1,8],spdbv:35,spdbv_style:35,special:[1,2,4,8,20,25,34,50,51,52],specif:[1,8,20,25,26,27,28,31,34,38,40,48,50,52],specifi:[0,2,4,5,9,10,22,26,27,31,32,35,36,40,49,52],specimen:11,speed:[3,25,35],spent:[14,18],sphere:43,sphinx:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],spin:38,spit:[29,34],split:42,sport:8,squar:26,src:[8,16],ss_agreement:41,ss_agreement_scor:37,ssagre:26,ssagreementscor:37,sse:2,sstream:37,stabil:38,stabl:16,stack:16,stage:[1,4,8],stai:[1,8,10,16,34],standalon:7,standard:[2,8,12,13,16,21,27,37,41,52],start:[0,1,4,7],start_idx:31,start_resnum:[21,22,26,31,34,35,36,39,40,41],start_resnum_list:36,start_rnum:40,start_temperatur:[10,34],starter:1,startscop:14,stash:[16,31,34,40],state:[1,2,8,20,21,26,31,34,40,41,44,51,52],statement:20,staticruntimeprofil:14,statist:[14,26,38],statu:[1,8],std:37,stderr:1,stdout:1,steadili:[10,34],steepest:[32,35],stem:[9,22,25,26,29,31,32,34,35,36],stemcoord:9,stempairorient:9,step:[8,10,14,16,18,28,29,30,31,32,34],stereochem:[3,35],steric:52,still:[8,14,25,26,35,37],stop:[1,8,14,29,32],stop_criterion:32,stoppag:20,storabl:26,storag:[8,21,25,39,41],store:[0,1,3,8,9,16,18,21,22,25,26,27,28,29,31,32,34,35,36,37,47],stori:8,str:[1,11,13,14,15,21,22,25,26,27,28,29,31,32,33,34,35,36,37,39,40,41,49,51,52],str_len:37,straight:16,strategi:52,stream:37,stretch:[21,26,31,34,35,40,41],strict:16,strictli:3,string:[0,3,11,13,26,27,29,37],stringstream:37,strip:[0,35],struc:5,struct:[5,26,37],struct_db:23,structral:[21,40],structur:[0,3,8,13],structural_db:31,structuralgap:[29,33],structuralgaplist:[29,35],structure_db:[26,28,31,35,37],structure_db_on:26,structure_db_two:26,structure_dir:26,structure_id:26,structure_path:26,structure_sourc:13,structuredb:[3,24,26,28,31,35,37],structuredbdatatyp:26,structureprofil:26,studer:38,stuff:[26,39],style:[35,40,41],sub:[8,26],sub_frag:22,sub_res_list:26,subdir:8,subfold:8,subject:[8,20],sublicens:20,submiss:20,submit:20,submodul:8,submodule1:16,subpart:28,subrotam:[0,3,44,47,49],subrotameroptim:[36,53],subsequ:[10,20,22,35],subset:[0,13,25,26,28,31,32,35,36],subst:26,subst_matrix:26,substitut:26,substweightmatrix:26,subtre:[4,8],succeed:29,success:[10,11,34],successfulli:5,sudo:[5,7],suffici:26,suffix:11,sugar:6,suggest:[5,8,43],suit:[1,8,26],sulfur:[43,44,49,50],sum:[14,29,35,36,43,44],summari:[14,26],superpos:[22,26,28,31,32,34],superpose_stem:22,superposed_rmsd:[22,31],superposeonto:22,superposit:[3,28,31,34],superpost:28,supersed:20,supervis:1,support:[1,8,11,13,18,20,25,32,35],suppos:[16,34],sure:[2,7,8,13,16,26],surfac:26,surotam:49,surround:[25,26,32,36,39,41],symmetr:[26,40,52],symmetri:[39,41],sync:8,syntax:20,system:[1,4,8,16,20,23],t_sampler:27,tabl:26,tag:[5,7],tail:22,tailor:[21,35],take:[8,10,21,26,27,28,31,32,34,35,37,41,44,50,53],taken:[0,21,25,32,34,35,50],talk:1,target:[0,1,2,4,8,13,18,26,28,30,31,32,34,35,40],target_chain_idx:35,target_mhandl:35,target_pdb:33,target_sequ:26,task:[8,16,32,35,37,40],techniqu:10,tell:[1,8,11,13,16,26],temperatur:[10,31,34,49],templat:[0,1,13,18,30,35,37,40],temporari:[26,35],temporarili:16,term:[8,20,26,49,51,52,53],termin:[1,9,11,18,20,21,22,25,29,31,32,34,35,36],terminal_len:34,terminal_seqr:34,termini:[29,34,35],terminu:[26,34,35,50],test_:8,test_action_:1,test_action_do_awesom:1,test_action_help:1,test_awesome_featur:8,test_check_io:37,test_cod:8,test_doctest:8,test_foo:4,test_portable_binari:37,test_reconstruct_sidechain:8,test_sidechain_reconstruct:8,test_submodule1:16,test_suite_:4,test_suite_your_module_run:8,test_your_modul:16,testcas:[1,8],testcasenam:8,testexit0:1,testpmexist:1,testreconstruct:8,testutil:[1,8],text:[1,13,20],than:[4,8,13,14,16,21,22,26,28,31,32,33,35,36,41,44],thei:[2,5,8,16,21,22,25,26,27,31,32,33,34,35,44,49,50,51,52],them:[4,8,16,22,25,26,27,28,29,31,35,36,40,45],themselv:25,theoret:34,theori:[20,38],therefor:[5,8,22,24,26,28,32,34,35,52],thereof:[20,25],thi:[0,1,2,3,4,5,7,8,10,11,12,13,14,15,16,17,18,20,21,22,23,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,42,44,47,49,50,51,52,53,54],thing:[1,2,8,16,26,28,35,52],think:10,thoroughli:16,those:[0,1,2,4,8,10,13,16,20,25,31,35,36,37,39,41,47,52],though:[25,35,37],thr:51,thread:[18,25,35,38],three:[1,4,16,21,22,27,31,33,34,41,51,52],threonin:51,thresh:[22,49,52],threshold:[10,26,28,32,35,36,40,52],through:[1,8,9,20,22,26,29,35,39,41],throughout:[13,16,24,25],thrown:26,thu:[5,11],tidi:16,tightli:16,time:[1,5,8,13,14,16,18,28,35],timer:14,tini:[16,35],titl:[20,27],tlc:[21,51],tlc_an:21,tlctorotid:[47,51],tmp_buf:37,todens:22,toentiti:[18,21,22,25,26,32,34,36],toframeresidu:49,togeth:[8,16,26,44],too:[13,16,31,32,35,37,49],tool:[3,4,23,37,42,47],toolbox:16,top:[2,6,7,8,14,15,16,32],topic:[1,8,16],topolog:[25,32],torrmrotam:49,torsion:[21,22,23,24,26],torsion_angl:47,torsion_bin:41,torsion_plot:27,torsion_sampl:[22,26,31,32,34,35,37],torsion_sampler_coil:[28,37],torsion_sampler_extend:[28,37],torsion_sampler_hel:37,torsion_sampler_helix:28,torsion_sampler_list:26,torsion_scor:37,torsionprob:26,torsionsampl:[22,24,26,27,28,31,32,34,35,37,41],torsionscor:[35,37],tort:20,total:[10,14,26,28],touch:[1,8,25,32],toward:[0,3,8,13,26,29,32,35,39,41,47,49,50,53],tpl:[0,30,31,35],tpr:[51,52],trace:35,track:[11,20,30],trade:20,trademark:20,tradition:11,trail:0,train:[24,31,35],trajectori:[28,34],tran:[22,51,52],transfer:20,transform:[9,20,22,28,34,35,52],translat:[4,8,20,26,51,52],transomegators:22,treat:[3,8,25,35,36,37,52],treatment:50,tree:[1,4,8,10,16,46,47],treepack:3,treesolv:[10,36,47],trg:[0,13,31,35],tri:[10,28,29,35,44,52],trick:[1,7,16],trigger:[1,4,8,48],tripeptid:27,tripl:11,triplet:23,trp:[51,52],trustworthi:16,tryptophan:51,ttccpsivarsnfnvcrlpgtpea:[31,35],ttccpsivarsnfnvcrlpgtpeaicatgytciiipgatcpgdyan:35,ttccpsivarsnfnvcrlpgtpeaicatytgciiipgatcpgdyan:[31,35],tupl:[9,10,11,22,25,26,28,29,33,35,36,44],turn:[0,1,11,14,16,35],tutori:8,tweak:35,twice:[14,40],two:[1,7,8,10,16,21,22,25,26,28,29,31,32,35,36,37,39,40,41,43,44,47,49,51,52],txt:[1,2,4,8,16,20],type:[0,1,8,9,10,11,13,14,20,21,22,24,25,26,27,29,31,32,33,34,35,36,37,39,40,41,43,47,48,49,50],typedef:37,typenam:37,typic:[22,28,34,47,52],tyr:[51,52],tyrosin:51,uint32_t:37,uint:37,ultra:26,uncertain:8,uncharg:50,undefin:25,under:[4,8,20],undergo:[28,32,34,36],underli:[29,31],underscor:1,understand:16,understood:0,undo:10,unexpect:2,unfavor:[22,32],unfavour:[32,34,44],unfortun:16,unhandl:[0,13],uniform:32,union:20,uniqu:[0,13,28,31,34,52],unittest:[1,8,16],unix:16,unknown:25,unless:[13,20,21,22,25,31,39,41],unlik:47,unrecognis:11,unset:[21,25,36],unsupport:[13,37],until:[8,10,32,35,40,50],untouch:22,untrack:1,unus:16,upat:5,updat:[3,5,7,8,16,21,25,29,31,32,35,36,40,42],updatedistribut:27,updateposit:[25,32],upon:[26,32,34],urei:25,urey_bradley_angl:25,usabl:16,usag:[0,3,10,13,24,26,31,32,36],use_amber_ff:35,use_bbdep_lib:36,use_frm:36,use_full_extend:35,use_scoring_extend:35,user:[1,5,8],userlevel:1,usr:[2,5,7,8],usual:[1,2,4,8,13,14,16,22,31,35,39],utilis:[8,16],v_size:37,val:[27,51],valid:[0,10,16,22,26,29,34,35,36,48,52],valin:51,valu:[2,10,11,13,21,22,25,26,28,31,34,35,37,39,40,41,44,47,49,51,52,53],valueerror:[28,35],vanish:40,varadarajan:38,vari:[4,37],variabl:[1,2,8,14,18,25,33,35,37],variant:[25,31],variou:[1,2,4,16,30],vec3:[9,21,22,26,32,33,43,44,49],vec3list:28,vector:[25,27,31,37],verbal:20,verbos:1,veri:[1,8,11,16,25,28,35,37],verif:13,verifi:[1,11,16],version:[2,3,5,8,16,20,26,35,37,48,51],via:[1,5,8,13,15,25],view:[13,16,27,35,40],virtual:8,visibl:36,visual:18,volum:5,wai:[1,2,4,5,8,16,22,23,25,31,41,47,51],wait:8,walk:[1,8],want:[1,2,3,7,8,15,16,22,26,28,31,32,35,40,49,50,52,53],warn:[8,16,35],warranti:20,watch:8,web:[2,8],weight:[3,26,28,31,34,35,39,41],weird:[28,32,47],well:[0,4,16,21,27,28,29,31,35,37,41,47,52],went:[0,8],were:[16,26,31,35],wester:38,wether:10,what:[1,8,11,13,16,23,26,40],when:[1,3,4,5,8,10,13,14,21,22,25,26,27,28,29,31,34,35,36,37,38,40,41,44,47,48,49,50,52],whenev:[8,21,31,40],where:[0,1,3,4,5,8,10,11,13,14,16,20,21,22,25,26,27,31,35,37,39,40,41,48,49,50,52],wherea:26,wherev:20,whether:[3,5,8,10,11,20,22,25,26,31,32,34,36,39,40,41,49,50,52],which:[0,1,4,8,9,11,12,13,16,18,20,21,22,25,26,27,28,29,31,32,33,34,35,36,37,39,40,41,49,50,52],whistl:8,whitespac:0,who:[10,47],whole:[1,2,8,16,20,22,26,35,49],whom:20,why:[1,16,50],width:[10,37,47],wild:4,window:28,window_length:28,wise:4,wish:[2,17,27,35],with_aa:31,with_db:31,within:[2,3,4,8,14,16,20,21,25,28,29,33,35,36,39,41,52],without:[1,4,8,11,13,20,25,29,32,35,40,52],won:[35,36,50],word:[4,7],work:[1,2,4,5,7,8,14,16,18,20,25,29,35,37],worldwid:20,worst:16,would:[1,2,8,11,22,26,27,44,49],wrap:26,wrapper:[1,4,8,15,35],write:0,writebasetyp:37,writemagicnumb:37,writetypes:37,writeversionnumb:37,written:[8,20,37],wrong:[2,13],wwpdb:5,www:20,xlabel:27,xlim:27,xml:8,xxx:[22,51],xxx_num_atom:21,xxx_num_hydrogen:21,year:1,yet:[26,31],ylabel:27,ylim:27,you:[0,1,2,3,4,5,7,8,10,11,13,14,15,16,18,20,21,22,23,25,26,27,28,30,31,32,34,35,36,37,39,40,41,47,48,49,50,52,53],your:[1,4,5,7],your_modul:[8,16],yourself:[2,8,10,16,35,50],yyyi:20,zero:[0,26,35,52],zhou2005:[26,38],zhou:38,zip:[26,47]},titles:["ProMod3 Actions","<code class=\"docutils literal\"><span class=\"pre\">test_actions</span></code> - Testing Actions","Building ProMod3","Changelog","ProMod3&#8216;s Share Of CMake","Docker","ProMod3 and Containers","Singularity","Contributing","Geometry functions","Graph Minimizer","<code class=\"docutils literal\"><span class=\"pre\">helper</span></code> - Shared Functionality For the Everything","<code class=\"docutils literal\"><span class=\"pre\">core</span></code> - ProMod3 Core Functionality","<code class=\"docutils literal\"><span class=\"pre\">pm3argparse</span></code> - Parsing Command Lines","Runtime profiling","<code class=\"docutils literal\"><span class=\"pre\">SetCompoundsChemlib()</span></code>","ProMod3 Setup","Documentation For Developers","Getting Started","ProMod3","License","Handling All Atom Positions","Representing Loops","<code class=\"docutils literal\"><span class=\"pre\">loop</span></code> - Loop Handling","Loading Precomputed Objects","Generate <code class=\"docutils literal\"><span class=\"pre\">ost.mol.mm</span></code> systems","Structural Data","Sampling Dihedral Angles","Modelling Algorithms","Handling Gaps","<code class=\"docutils literal\"><span class=\"pre\">modelling</span></code> - Protein Modelling","Handling Loop Candidates","Fitting Loops Into Gaps","Model Checking","Generating Loops De Novo","Modelling Pipeline","Sidechain Reconstruction","Using Binary Files In ProMod3","References","All Atom Scorers","Backbone Score Environment","Backbone Scorers","<code class=\"docutils literal\"><span class=\"pre\">scoring</span></code> - Loop Scoring","Other Scoring Functions","Disulfid Bond Evaluation","Frame","Rotamer Graph","<code class=\"docutils literal\"><span class=\"pre\">sidechain</span></code> - Sidechain Modelling","Loading Rotamer Libraries","Rotamers","Rotamer Constructor","RotamerID","Rotamer Library","Subrotamer Optimization","Documentation For Users"],titleterms:{"class":[21,22,26,27,29,31,36,39,40,41],"default":35,"function":[4,9,11,12,29,36,40,43],acid:[21,25,27],action:[0,1,4,5,7,8],actiontestcas:1,algorithm:28,all:[21,32,39],allatomclashscor:39,allatomenv:21,allatomenvposit:21,allatominteractionscor:39,allatomoverallscor:39,allatompackingscor:39,allatomposit:21,allatomscor:39,amino:[21,25,27],angl:27,api:1,argument:13,atom:[21,32,39],backbon:[32,40,41,52],backbonelist:22,backboneoverallscor:41,backbonescor:41,backbonescoreenv:40,base:[26,39,41],binari:37,block:[28,49],bond:44,branch:16,build:[0,2,5,7,35,49],can:51,candid:31,cbetascor:41,cbpackingscor:41,ccd:32,chain:26,changelog:3,check:33,clashscor:41,closer:34,cmake:[1,2,4,16],code:37,command:13,compound:[5,7],configur:52,construct:[40,50],constructor:50,contain:6,contribut:8,conveni:40,cooler:34,core:12,creat:[1,25],data:[26,37],databas:26,defin:[26,27],definit:4,depend:[2,52],detect:33,develop:17,dihedr:27,directori:16,distinguish:21,disulfid:44,docker:5,document:[4,8,17,19,54],entri:52,environ:40,evalu:44,everyth:11,exampl:[31,37],execut:1,exisit:37,extend:29,featur:[8,26],file:[11,37],find:26,fit:32,forcefield:25,fragment:26,frame:[45,50],from:43,gap:[29,32],gener:[25,34],geometr:26,geometri:9,get:[18,51],git:16,graph:[10,46],group:49,handl:[21,23,29,31,35],have:1,hbondscor:41,header:37,helper:11,hook:16,how:[8,51],imag:[5,7],instal:2,integr:1,introduct:[4,11,13],issu:8,keep:31,kic:32,librari:[5,7,48,52],licens:[8,20],line:13,load:[24,48],lookup:25,loop:[22,23,25,31,32,34,42],loopcandid:31,mainten:4,make:[1,2],messag:11,minim:10,model:[0,18,28,30,31,33,35,47],modul:[4,8],mol:25,molprob:33,must:1,non:52,novo:[28,34],object:[24,34,45],optim:53,ost:[5,7,25],other:43,output:1,own:8,pairwis:40,pairwisescor:41,pars:13,parser:13,parti:8,particl:49,pipelin:[18,35],pm3argpars:13,portabl:37,posit:21,precomput:24,profil:14,promod3:[0,2,4,6,8,12,16,18,19,37],protein:30,psipredpredict:26,punch:33,quick:8,raw:35,reconstruct:36,reducedscor:41,refer:38,relax:32,releas:3,repres:22,residu:50,rigid:28,ring:33,rotam:[46,48,49,50,52],rotamerid:51,run:[1,2,5,7,18],runtim:14,sampl:27,sampler:[27,34],score:[31,40,42,43],scorer:[8,34,39,41],script:[1,5,7],scwrl3:43,sequenc:26,setcompoundschemlib:15,setup:16,share:[4,11],sidechain:[0,36,47],sidechainreconstructiondata:36,sidechainreconstructor:36,singular:7,smallest:49,ssagreementscor:41,stage:16,start:[8,18],step:35,structur:[16,26],subclass:1,subrotam:53,system:25,test:[1,4,8,11],test_act:1,third:8,torsion:27,torsionscor:41,track:31,triplet:27,type:52,unit:[1,4,8],user:54,write:8,your:8}})
\ No newline at end of file
+Search.setIndex({envversion:47,filenames:["actions/index","actions/index_dev","buildsystem","changelog","cmake/index","container/docker","container/index","container/singularity","contributing","core/geometry","core/graph_minimizer","core/helper","core/index","core/pm3argparse","core/runtime_profiling","core/setcompoundschemlib","dev_setup","developers","gettingstarted","index","license","loop/all_atom","loop/backbone","loop/index","loop/load_loop_objects","loop/mm_system_creation","loop/structure_db","loop/torsion_sampler","modelling/algorithms","modelling/gap_handling","modelling/index","modelling/loop_candidates","modelling/loop_closing","modelling/model_checking","modelling/monte_carlo","modelling/pipeline","modelling/sidechain_reconstruction","portableIO","references","scoring/all_atom_scorers","scoring/backbone_score_env","scoring/backbone_scorers","scoring/index","scoring/other_scoring_functions","sidechain/disulfid","sidechain/frame","sidechain/graph","sidechain/index","sidechain/loading","sidechain/rotamer","sidechain/rotamer_constructor","sidechain/rotamer_id","sidechain/rotamer_lib","sidechain/subrotamer_optimizer","user_contributions","users"],objects:{"":{"--backbone-independent":[0,7,1,"cmdoption--backbone-independent"],"--energy_function":[0,7,1,"cmdoption--energy_function"],"--keep-sidechains":[0,7,1,"cmdoption--keep-sidechains"],"--no-disulfids":[0,7,1,"cmdoption--no-disulfids"],"--no-subrotamer-optimization":[0,7,1,"cmdoption--no-subrotamer-optimization"],"--rigid-rotamers":[0,7,1,"cmdoption--rigid-rotamers"],"-f":[0,7,1,"cmdoption-f"],"-i":[0,7,1,"cmdoption-i"],"-k":[0,7,1,"cmdoption-k"],"-n":[0,7,1,"cmdoption-n"],"-r":[0,7,1,"cmdoption-r"],"-s":[0,7,1,"cmdoption-s"],"command:add_doc_dependency":[4,0,1,""],"command:add_doc_source":[4,0,1,""],"command:convert_module_data":[4,0,1,""],"command:module":[4,0,1,""],"command:pm_action":[4,0,1,""],"command:promod3_unittest":[4,0,1,""],"command:pymod":[4,0,1,""],test_actions:[1,2,0,"-"]},"promod3.core":{ConstructAtomPos:[9,1,1,""],ConstructCBetaPos:[9,1,1,""],ConstructCTerminalOxygens:[9,1,1,""],EvaluateGromacsPosRule:[9,1,1,""],GraphMinimizer:[10,3,1,""],RotationAroundLine:[9,1,1,""],StaticRuntimeProfiler:[14,3,1,""],StemCoords:[9,3,1,""],StemPairOrientation:[9,3,1,""],helper:[11,2,0,"-"],pm3argparse:[13,2,0,"-"]},"promod3.core.GraphMinimizer":{AStarSolve:[10,4,1,""],AddEdge:[10,4,1,""],AddNode:[10,4,1,""],ApplyDEE:[10,4,1,""],ApplyEdgeDecomposition:[10,4,1,""],MCSolve:[10,4,1,""],NaiveSolve:[10,4,1,""],Prune:[10,4,1,""],Reset:[10,4,1,""],TreeSolve:[10,4,1,""]},"promod3.core.StaticRuntimeProfiler":{Clear:[14,5,1,""],IsEnabled:[14,5,1,""],PrintSummary:[14,5,1,""],Start:[14,5,1,""],StartScoped:[14,5,1,""],Stop:[14,5,1,""]},"promod3.core.StemCoords":{c_coord:[9,6,1,""],ca_coord:[9,6,1,""],n_coord:[9,6,1,""]},"promod3.core.StemPairOrientation":{angle_four:[9,6,1,""],angle_one:[9,6,1,""],angle_three:[9,6,1,""],angle_two:[9,6,1,""],distance:[9,6,1,""]},"promod3.core.helper":{FileExists:[11,1,1,""],FileExtension:[11,1,1,""],FileGzip:[11,1,1,""],MsgErrorAndExit:[11,1,1,""]},"promod3.core.pm3argparse":{PM3ArgumentParser:[13,3,1,""]},"promod3.core.pm3argparse.PM3ArgumentParser":{"__init__":[13,4,1,""],AddAlignment:[13,4,1,""],AddFragments:[13,4,1,""],AddProfile:[13,4,1,""],AddStructure:[13,4,1,""],AssembleParser:[13,4,1,""],Parse:[13,4,1,""],action:[13,6,1,""]},"promod3.loop":{AllAtomEnv:[21,3,1,""],AllAtomEnvPositions:[21,3,1,""],AllAtomPositions:[21,3,1,""],AminoAcidAtom:[21,3,1,""],AminoAcidHydrogen:[21,3,1,""],AminoAcidLookup:[21,3,1,""],BackboneList:[22,3,1,""],CoordInfo:[26,3,1,""],ForcefieldAminoAcid:[25,3,1,""],ForcefieldBondInfo:[25,3,1,""],ForcefieldConnectivity:[25,3,1,""],ForcefieldHarmonicAngleInfo:[25,3,1,""],ForcefieldHarmonicImproperInfo:[25,3,1,""],ForcefieldLJPairInfo:[25,3,1,""],ForcefieldLookup:[25,3,1,""],ForcefieldPeriodicDihedralInfo:[25,3,1,""],ForcefieldUreyBradleyAngleInfo:[25,3,1,""],FragDB:[26,3,1,""],Fragger:[26,3,1,""],FraggerMap:[26,3,1,""],FragmentInfo:[26,3,1,""],LoadFragDB:[24,4,1,""],LoadStructureDB:[24,4,1,""],LoadTorsionSampler:[24,4,1,""],LoadTorsionSamplerCoil:[24,4,1,""],LoadTorsionSamplerExtended:[24,4,1,""],LoadTorsionSamplerHelical:[24,4,1,""],MmSystemCreator:[25,3,1,""],PsipredPrediction:[26,3,1,""],StructureDB:[26,3,1,""],StructureDBDataType:[26,3,1,""],TorsionSampler:[27,3,1,""]},"promod3.loop.AllAtomEnv":{ClearEnvironment:[21,4,1,""],GetAllAtomPositions:[21,4,1,""],GetEnvironment:[21,4,1,""],GetSeqres:[21,4,1,""],SetEnvironment:[21,4,1,""],SetInitialEnvironment:[21,4,1,""]},"promod3.loop.AllAtomEnvPositions":{all_pos:[21,6,1,""],res_indices:[21,6,1,""]},"promod3.loop.AllAtomPositions":{AllAtomPositions:[21,4,1,""],ClearPos:[21,4,1,""],ClearResidue:[21,4,1,""],Copy:[21,4,1,""],Extract:[21,4,1,""],ExtractBackbone:[21,4,1,""],GetAA:[21,4,1,""],GetFirstIndex:[21,4,1,""],GetIndex:[21,4,1,""],GetLastIndex:[21,4,1,""],GetNumAtoms:[21,4,1,""],GetNumResidues:[21,4,1,""],GetOmegaTorsion:[21,4,1,""],GetPhiTorsion:[21,4,1,""],GetPos:[21,4,1,""],GetPsiTorsion:[21,4,1,""],GetSequence:[21,4,1,""],InsertInto:[21,4,1,""],IsAllSet:[21,4,1,""],IsAnySet:[21,4,1,""],IsSet:[21,4,1,""],SetPos:[21,4,1,""],SetResidue:[21,4,1,""],ToEntity:[21,4,1,""]},"promod3.loop.AminoAcidLookup":{GetAA:[21,5,1,""],GetAAA:[21,5,1,""],GetAAH:[21,5,1,""],GetAnchorAtomIndex:[21,5,1,""],GetAtomName:[21,5,1,""],GetAtomNameAmber:[21,5,1,""],GetAtomNameCharmm:[21,5,1,""],GetElement:[21,5,1,""],GetH1Index:[21,5,1,""],GetH2Index:[21,5,1,""],GetH3Index:[21,5,1,""],GetHNIndex:[21,5,1,""],GetHydrogenIndex:[21,5,1,""],GetIndex:[21,5,1,""],GetMaxNumAtoms:[21,5,1,""],GetMaxNumHydrogens:[21,5,1,""],GetNumAtoms:[21,5,1,""],GetNumHydrogens:[21,5,1,""],GetOLC:[21,5,1,""]},"promod3.loop.BackboneList":{"__len__":[22,4,1,""],ApplyTransform:[22,4,1,""],BackboneList:[22,4,1,""],CARMSD:[22,4,1,""],Copy:[22,4,1,""],Extract:[22,4,1,""],GetAA:[22,4,1,""],GetBounds:[22,4,1,""],GetC:[22,4,1,""],GetCA:[22,4,1,""],GetCB:[22,4,1,""],GetN:[22,4,1,""],GetO:[22,4,1,""],GetOLC:[22,4,1,""],GetOmegaTorsion:[22,4,1,""],GetPhiTorsion:[22,4,1,""],GetPsiTorsion:[22,4,1,""],GetSequence:[22,4,1,""],GetTransform:[22,4,1,""],InsertInto:[22,4,1,""],MinCADistance:[22,4,1,""],RMSD:[22,4,1,""],ReconstructCBetaPositions:[22,4,1,""],ReconstructCStemOxygen:[22,4,1,""],ReconstructOxygenPositions:[22,4,1,""],ReplaceFragment:[22,4,1,""],RotateAroundOmegaTorsion:[22,4,1,""],RotateAroundPhiPsiTorsion:[22,4,1,""],RotateAroundPhiTorsion:[22,4,1,""],RotateAroundPsiTorsion:[22,4,1,""],Set:[22,4,1,""],SetAA:[22,4,1,""],SetAroundOmegaTorsion:[22,4,1,""],SetAroundPhiPsiTorsion:[22,4,1,""],SetAroundPhiTorsion:[22,4,1,""],SetAroundPsiTorsion:[22,4,1,""],SetBackrub:[22,4,1,""],SetC:[22,4,1,""],SetCA:[22,4,1,""],SetCB:[22,4,1,""],SetN:[22,4,1,""],SetO:[22,4,1,""],SetOLC:[22,4,1,""],SetSequence:[22,4,1,""],SuperposeOnto:[22,4,1,""],ToDensity:[22,4,1,""],ToEntity:[22,4,1,""],TransOmegaTorsions:[22,4,1,""],append:[22,4,1,""],clear:[22,4,1,""],empty:[22,4,1,""],resize:[22,4,1,""]},"promod3.loop.CoordInfo":{chain_name:[26,6,1,""],id:[26,6,1,""],offset:[26,6,1,""],shift:[26,6,1,""],size:[26,6,1,""],start_resnum:[26,6,1,""]},"promod3.loop.ForcefieldBondInfo":{bond_length:[25,6,1,""],force_constant:[25,6,1,""],index_one:[25,6,1,""],index_two:[25,6,1,""]},"promod3.loop.ForcefieldConnectivity":{harmonic_angles:[25,6,1,""],harmonic_bonds:[25,6,1,""],harmonic_impropers:[25,6,1,""],lj_pairs:[25,6,1,""],periodic_dihedrals:[25,6,1,""],periodic_impropers:[25,6,1,""],urey_bradley_angles:[25,6,1,""]},"promod3.loop.ForcefieldHarmonicAngleInfo":{angle:[25,6,1,""],force_constant:[25,6,1,""],index_one:[25,6,1,""],index_three:[25,6,1,""],index_two:[25,6,1,""]},"promod3.loop.ForcefieldHarmonicImproperInfo":{angle:[25,6,1,""],force_constant:[25,6,1,""],index_four:[25,6,1,""],index_one:[25,6,1,""],index_three:[25,6,1,""],index_two:[25,6,1,""]},"promod3.loop.ForcefieldLJPairInfo":{epsilon:[25,6,1,""],index_one:[25,6,1,""],index_two:[25,6,1,""],sigma:[25,6,1,""]},"promod3.loop.ForcefieldLookup":{GetAA:[25,4,1,""],GetCharges:[25,4,1,""],GetDefault:[25,5,1,""],GetDisulfidConnectivity:[25,4,1,""],GetEpsilons:[25,4,1,""],GetFudgeLJ:[25,4,1,""],GetFudgeQQ:[25,4,1,""],GetHeavyIndex:[25,4,1,""],GetHydrogenIndex:[25,4,1,""],GetInternalConnectivity:[25,4,1,""],GetMasses:[25,4,1,""],GetNumAtoms:[25,4,1,""],GetOXTIndex:[25,4,1,""],GetPeptideBoundConnectivity:[25,4,1,""],GetSigmas:[25,4,1,""],Load:[25,5,1,""],LoadCHARMM:[25,5,1,""],LoadPortable:[25,5,1,""],Save:[25,4,1,""],SavePortable:[25,4,1,""],SetCharges:[25,4,1,""],SetDefault:[25,5,1,""],SetDisulfidConnectivity:[25,4,1,""],SetEpsilons:[25,4,1,""],SetFudgeLJ:[25,4,1,""],SetFudgeQQ:[25,4,1,""],SetInternalConnectivity:[25,4,1,""],SetMasses:[25,4,1,""],SetPeptideBoundConnectivity:[25,4,1,""],SetSigmas:[25,4,1,""]},"promod3.loop.ForcefieldPeriodicDihedralInfo":{force_constant:[25,6,1,""],index_four:[25,6,1,""],index_one:[25,6,1,""],index_three:[25,6,1,""],index_two:[25,6,1,""],multiplicity:[25,6,1,""],phase:[25,6,1,""]},"promod3.loop.ForcefieldUreyBradleyAngleInfo":{angle:[25,6,1,""],angle_force_constant:[25,6,1,""],bond_force_constant:[25,6,1,""],bond_length:[25,6,1,""],index_one:[25,6,1,""],index_three:[25,6,1,""],index_two:[25,6,1,""]},"promod3.loop.FragDB":{AddFragments:[26,4,1,""],GetAngularBinSize:[26,4,1,""],GetDistBinSize:[26,4,1,""],GetNumFragments:[26,4,1,""],GetNumStemPairs:[26,4,1,""],HasFragLength:[26,4,1,""],Load:[26,5,1,""],LoadPortable:[26,5,1,""],MaxFragLength:[26,4,1,""],PrintStatistics:[26,4,1,""],Save:[26,4,1,""],SavePortable:[26,4,1,""],SearchDB:[26,4,1,""]},"promod3.loop.Fragger":{"__getitem__":[26,4,1,""],"__len__":[26,4,1,""],AddSSAgreeParameters:[26,4,1,""],AddSeqIDParameters:[26,4,1,""],AddSeqSimParameters:[26,4,1,""],AddSequenceProfileParameters:[26,4,1,""],AddStructureProfileParameters:[26,4,1,""],AddTorsionProbabilityParameters:[26,4,1,""],Fill:[26,4,1,""],GetFragmentInfo:[26,4,1,""],GetScore:[26,4,1,""]},"promod3.loop.FraggerMap":{"__getitem__":[26,4,1,""],"__setitem__":[26,4,1,""],Contains:[26,4,1,""],Load:[26,4,1,""],LoadBB:[26,4,1,""],Save:[26,4,1,""],SaveBB:[26,4,1,""]},"promod3.loop.FragmentInfo":{chain_index:[26,6,1,""],length:[26,6,1,""],offset:[26,6,1,""]},"promod3.loop.MmSystemCreator":{ExtractLoopPositions:[25,4,1,""],GetCpuPlatformSupport:[25,4,1,""],GetDisulfidBridges:[25,4,1,""],GetForcefieldAminoAcids:[25,4,1,""],GetIndexing:[25,4,1,""],GetLoopLengths:[25,4,1,""],GetLoopStartIndices:[25,4,1,""],GetNumLoopResidues:[25,4,1,""],GetNumResidues:[25,4,1,""],GetSimulation:[25,4,1,""],SetCpuPlatformSupport:[25,4,1,""],SetupSystem:[25,4,1,""],UpdatePositions:[25,4,1,""]},"promod3.loop.PsipredPrediction":{"__len__":[26,4,1,""],Add:[26,4,1,""],Extract:[26,4,1,""],FromHHM:[26,4,1,""],FromHoriz:[26,4,1,""],GetConfidence:[26,4,1,""],GetConfidences:[26,4,1,""],GetPrediction:[26,4,1,""],GetPredictions:[26,4,1,""],PsipredPrediction:[26,4,1,""]},"promod3.loop.StructureDB":{AddCoordinates:[26,4,1,""],GenerateStructureProfile:[26,4,1,""],GetBackboneList:[26,4,1,""],GetCoordIdx:[26,4,1,""],GetCoordInfo:[26,4,1,""],GetDSSPStates:[26,4,1,""],GetDihedralAngles:[26,4,1,""],GetNumCoords:[26,4,1,""],GetResidueDepths:[26,4,1,""],GetSequence:[26,4,1,""],GetSequenceProfile:[26,4,1,""],GetSolventAccessibilitites:[26,4,1,""],GetStructureProfile:[26,4,1,""],GetSubDB:[26,4,1,""],HasData:[26,4,1,""],Load:[26,5,1,""],LoadPortable:[26,5,1,""],PrintStatistics:[26,4,1,""],RemoveCoordinates:[26,4,1,""],Save:[26,4,1,""],SavePortable:[26,4,1,""],SetStructureProfile:[26,4,1,""]},"promod3.loop.TorsionSampler":{Draw:[27,4,1,""],DrawPhiGivenPsi:[27,4,1,""],DrawPsiGivenPhi:[27,4,1,""],ExtractStatistics:[27,4,1,""],GetBinSize:[27,4,1,""],GetBinsPerDimension:[27,4,1,""],GetHistogramIndex:[27,4,1,""],GetHistogramIndices:[27,4,1,""],GetPhiProbabilityGivenPsi:[27,4,1,""],GetProbability:[27,4,1,""],GetPsiProbabilityGivenPhi:[27,4,1,""],Load:[27,5,1,""],LoadPortable:[27,5,1,""],Save:[27,4,1,""],SavePortable:[27,4,1,""],UpdateDistributions:[27,4,1,""]},"promod3.modelling":{AddModellingIssue:[35,1,1,""],AllAtomRelaxer:[32,3,1,""],BackboneRelaxer:[32,3,1,""],BuildFromRawModel:[35,1,1,""],BuildRawModel:[35,1,1,""],BuildSidechains:[35,1,1,""],CCD:[32,3,1,""],CCDCloser:[34,3,1,""],CTerminalCloser:[34,3,1,""],CheckFinalModel:[35,1,1,""],ClearGaps:[29,1,1,""],CloseGaps:[35,1,1,""],CloseLargeDeletions:[35,1,1,""],CloseSmallDeletions:[35,1,1,""],CloserBase:[34,3,1,""],CoolerBase:[34,3,1,""],CountEnclosedGaps:[29,1,1,""],CountEnclosedInsertions:[29,1,1,""],DeNovoCloser:[34,3,1,""],DirtyCCDCloser:[34,3,1,""],ExponentialCooler:[34,3,1,""],FillLoopsByDatabase:[35,1,1,""],FillLoopsByMonteCarlo:[35,1,1,""],FilterCandidates:[33,1,1,""],FilterCandidatesWithSC:[33,1,1,""],FraggerHandle:[28,3,1,""],FragmentSampler:[34,3,1,""],FullGapExtender:[29,3,1,""],GapExtender:[29,3,1,""],GenerateDeNovoTrajectories:[28,1,1,""],GetRingPunches:[33,1,1,""],GetRings:[33,1,1,""],HasRingPunches:[33,1,1,""],InsertLoop:[35,1,1,""],InsertLoopClearGaps:[29,1,1,""],IsAllAtomScoringSetUp:[35,1,1,""],IsBackboneScoringSetUp:[35,1,1,""],KIC:[32,3,1,""],KICCloser:[34,3,1,""],LinearScorer:[34,3,1,""],LoopCandidates:[31,3,1,""],MergeGaps:[29,1,1,""],MergeGapsByDistance:[35,1,1,""],MergeMHandle:[35,1,1,""],MinimizeModelEnergy:[35,1,1,""],ModelTermini:[35,1,1,""],ModellingHandle:[35,3,1,""],ModellingIssue:[35,3,1,""],NTerminalCloser:[34,3,1,""],PhiPsiSampler:[34,3,1,""],ReconstructSidechains:[36,1,1,""],RemoveTerminalGaps:[35,1,1,""],ReorderGaps:[35,1,1,""],ReportMolProbityScores:[33,1,1,""],RigidBlocks:[28,4,1,""],RunMolProbity:[33,1,1,""],RunMolProbityEntity:[33,1,1,""],SampleMonteCarlo:[34,1,1,""],SamplerBase:[34,3,1,""],ScoreContainer:[31,3,1,""],ScorerBase:[34,3,1,""],ScoringGapExtender:[29,3,1,""],ScoringWeights:[31,3,1,""],SetFraggerHandles:[35,1,1,""],SetPsipredPredictions:[35,1,1,""],SetSequenceProfiles:[35,1,1,""],SetupDefaultAllAtomScoring:[35,1,1,""],SetupDefaultBackboneScoring:[35,1,1,""],ShiftExtension:[29,3,1,""],SidechainReconstructionData:[36,3,1,""],SidechainReconstructor:[36,3,1,""],SoftSampler:[34,3,1,""],StructuralGap:[29,3,1,""],StructuralGapList:[29,3,1,""]},"promod3.modelling.AllAtomRelaxer":{GetSystemCreator:[32,4,1,""],Run:[32,4,1,""],UpdatePositions:[32,4,1,""]},"promod3.modelling.BackboneRelaxer":{AddCARestraint:[32,4,1,""],AddCBRestraint:[32,4,1,""],AddCRestraint:[32,4,1,""],AddNRestraint:[32,4,1,""],AddORestraint:[32,4,1,""],GetNonBondedCutoff:[32,4,1,""],Run:[32,4,1,""],SetNonBondedCutoff:[32,4,1,""]},"promod3.modelling.CCD":{CCD:[32,4,1,""],Close:[32,4,1,""]},"promod3.modelling.CCDCloser":{Close:[34,4,1,""]},"promod3.modelling.CTerminalCloser":{Close:[34,4,1,""]},"promod3.modelling.CloserBase":{Close:[34,4,1,""]},"promod3.modelling.CoolerBase":{GetTemperature:[34,4,1,""],Reset:[34,4,1,""]},"promod3.modelling.DeNovoCloser":{Close:[34,4,1,""]},"promod3.modelling.DirtyCCDCloser":{Close:[34,4,1,""]},"promod3.modelling.ExponentialCooler":{GetTemperature:[34,4,1,""],Reset:[34,4,1,""]},"promod3.modelling.FraggerHandle":{Get:[28,4,1,""],GetList:[28,4,1,""],LoadCached:[28,4,1,""],SaveCached:[28,4,1,""]},"promod3.modelling.FragmentSampler":{Initialize:[34,4,1,""],ProposeStep:[34,4,1,""]},"promod3.modelling.FullGapExtender":{Extend:[29,4,1,""]},"promod3.modelling.GapExtender":{Extend:[29,4,1,""]},"promod3.modelling.KIC":{Close:[32,4,1,""],KIC:[32,4,1,""]},"promod3.modelling.KICCloser":{Close:[34,4,1,""]},"promod3.modelling.LinearScorer":{GetScore:[34,4,1,""]},"promod3.modelling.LoopCandidates":{Add:[31,4,1,""],AddFragmentInfo:[31,4,1,""],ApplyCCD:[31,4,1,""],ApplyKIC:[31,4,1,""],CalculateAllAtomScores:[31,4,1,""],CalculateBackboneScores:[31,4,1,""],CalculateSequenceProfileScores:[31,4,1,""],CalculateStemRMSDs:[31,4,1,""],CalculateStructureProfileScores:[31,4,1,""],Extract:[31,4,1,""],FillFromDatabase:[31,5,1,""],FillFromMonteCarloSampler:[31,5,1,""],GetClusteredCandidates:[31,4,1,""],GetClusters:[31,4,1,""],GetFragmentInfo:[31,4,1,""],GetLargestCluster:[31,4,1,""],GetSequence:[31,4,1,""],HasFragmentInfos:[31,4,1,""],Remove:[31,4,1,""]},"promod3.modelling.ModellingHandle":{Copy:[35,4,1,""],all_atom_scorer:[35,6,1,""],all_atom_scorer_env:[35,6,1,""],all_atom_sidechain_env:[35,6,1,""],backbone_scorer:[35,6,1,""],backbone_scorer_env:[35,6,1,""],fragger_handles:[35,6,1,""],gaps:[35,6,1,""],model:[35,6,1,""],modelling_issues:[35,6,1,""],profiles:[35,6,1,""],psipred_predictions:[35,6,1,""],seqres:[35,6,1,""],sidechain_reconstructor:[35,6,1,""]},"promod3.modelling.ModellingIssue":{Severity:[35,3,1,""],is_major:[35,4,1,""],residue_list:[35,6,1,""],severity:[35,6,1,""],text:[35,6,1,""]},"promod3.modelling.ModellingIssue.Severity":{MAJOR:[35,6,1,""],MINOR:[35,6,1,""]},"promod3.modelling.NTerminalCloser":{Close:[34,4,1,""]},"promod3.modelling.PhiPsiSampler":{Initialize:[34,4,1,""],ProposeStep:[34,4,1,""]},"promod3.modelling.SamplerBase":{Initialize:[34,4,1,""],ProposeStep:[34,4,1,""]},"promod3.modelling.ScoreContainer":{Contains:[31,4,1,""],Copy:[31,4,1,""],Extend:[31,4,1,""],Extract:[31,4,1,""],Get:[31,4,1,""],GetNumCandidates:[31,4,1,""],IsEmpty:[31,4,1,""],LinearCombine:[31,4,1,""],Set:[31,4,1,""]},"promod3.modelling.ScorerBase":{GetScore:[34,4,1,""]},"promod3.modelling.ScoringGapExtender":{Extend:[29,4,1,""]},"promod3.modelling.ScoringWeights":{GetAllAtomScoringKeys:[31,5,1,""],GetAllAtomWeights:[31,5,1,""],GetBackboneScoringKeys:[31,5,1,""],GetBackboneWeights:[31,5,1,""],GetSequenceProfileScoresKey:[31,5,1,""],GetStemRMSDsKey:[31,5,1,""],GetStructureProfileScoresKey:[31,5,1,""],GetWeights:[31,5,1,""],SetAllAtomScoringKeys:[31,5,1,""],SetBackboneScoringKeys:[31,5,1,""],SetSequenceProfileScoresKey:[31,5,1,""],SetStemRMSDsKey:[31,5,1,""],SetStructureProfileScoresKey:[31,5,1,""],SetWeights:[31,5,1,""]},"promod3.modelling.ShiftExtension":{Extend:[29,4,1,""]},"promod3.modelling.SidechainReconstructionData":{disulfid_bridges:[36,6,1,""],env_pos:[36,6,1,""],is_c_ter:[36,6,1,""],is_n_ter:[36,6,1,""],loop_lengths:[36,6,1,""],loop_start_indices:[36,6,1,""],rotamer_res_indices:[36,6,1,""]},"promod3.modelling.SidechainReconstructor":{AttachEnvironment:[36,4,1,""],Reconstruct:[36,4,1,""]},"promod3.modelling.SoftSampler":{Initialize:[34,4,1,""],ProposeStep:[34,4,1,""]},"promod3.modelling.StructuralGap":{Copy:[29,4,1,""],ExtendAtCTerm:[29,4,1,""],ExtendAtNTerm:[29,4,1,""],GetChain:[29,4,1,""],GetChainIndex:[29,4,1,""],GetChainName:[29,4,1,""],GetLength:[29,4,1,""],IsCTerminal:[29,4,1,""],IsNTerminal:[29,4,1,""],IsTerminal:[29,4,1,""],ShiftCTerminal:[29,4,1,""],after:[29,6,1,""],before:[29,6,1,""],full_seq:[29,6,1,""],length:[29,6,1,""],seq:[29,6,1,""]},"promod3.scoring":{AllAtomClashScorer:[39,3,1,""],AllAtomInteractionScorer:[39,3,1,""],AllAtomOverallScorer:[39,3,1,""],AllAtomPackingScorer:[39,3,1,""],AllAtomScorer:[39,3,1,""],BackboneOverallScorer:[41,3,1,""],BackboneScoreEnv:[40,3,1,""],BackboneScorer:[41,3,1,""],CBPackingScorer:[41,3,1,""],CBetaScorer:[41,3,1,""],ClashScorer:[41,3,1,""],ConstraintFunction:[40,3,1,""],ContactFunction:[40,3,1,""],DiscoContainer:[40,3,1,""],HBondScorer:[41,3,1,""],LoadAllAtomInteractionScorer:[39,1,1,""],LoadAllAtomPackingScorer:[39,1,1,""],LoadCBPackingScorer:[41,1,1,""],LoadCBetaScorer:[41,1,1,""],LoadDefaultAllAtomOverallScorer:[39,1,1,""],LoadDefaultBackboneOverallScorer:[41,1,1,""],LoadHBondScorer:[41,1,1,""],LoadReducedScorer:[41,1,1,""],LoadSSAgreementScorer:[41,1,1,""],LoadTorsionScorer:[41,1,1,""],PairwiseFunction:[40,3,1,""],PairwiseFunctionType:[40,3,1,""],PairwiseScorer:[41,3,1,""],ReducedScorer:[41,3,1,""],SCWRL3DisulfidScore:[43,4,1,""],SCWRL3PairwiseScore:[43,4,1,""],SSAgreementScorer:[41,3,1,""],TorsionScorer:[41,3,1,""]},"promod3.scoring.AllAtomClashScorer":{DoExternalScores:[39,4,1,""],DoInternalScores:[39,4,1,""],DoNormalize:[39,4,1,""]},"promod3.scoring.AllAtomInteractionScorer":{DoExternalScores:[39,4,1,""],DoInternalScores:[39,4,1,""],DoNormalize:[39,4,1,""],Load:[39,5,1,""],LoadPortable:[39,5,1,""],Save:[39,4,1,""],SavePortable:[39,4,1,""],SetEnergy:[39,4,1,""]},"promod3.scoring.AllAtomOverallScorer":{"__getitem__":[39,4,1,""],"__setitem__":[39,4,1,""],AttachEnvironment:[39,4,1,""],CalculateLinearCombination:[39,4,1,""],Contains:[39,4,1,""],Get:[39,4,1,""]},"promod3.scoring.AllAtomPackingScorer":{DoNormalize:[39,4,1,""],Load:[39,5,1,""],LoadPortable:[39,5,1,""],Save:[39,4,1,""],SavePortable:[39,4,1,""],SetEnergy:[39,4,1,""]},"promod3.scoring.AllAtomScorer":{AttachEnvironment:[39,4,1,""],CalculateScore:[39,4,1,""],CalculateScoreProfile:[39,4,1,""]},"promod3.scoring.BackboneOverallScorer":{"__getitem__":[41,4,1,""],"__setitem__":[41,4,1,""],AttachEnvironment:[41,4,1,""],Calculate:[41,4,1,""],CalculateLinearCombination:[41,4,1,""],Contains:[41,4,1,""],Get:[41,4,1,""]},"promod3.scoring.BackboneScoreEnv":{AddPairwiseFunction:[40,4,1,""],ApplyPairwiseFunction:[40,4,1,""],ClearEnvironment:[40,4,1,""],Copy:[40,4,1,""],GetSeqres:[40,4,1,""],Pop:[40,4,1,""],SetEnvironment:[40,4,1,""],SetInitialEnvironment:[40,4,1,""],SetPsipredPrediction:[40,4,1,""],Stash:[40,4,1,""]},"promod3.scoring.BackboneScorer":{AttachEnvironment:[41,4,1,""],CalculateScore:[41,4,1,""],CalculateScoreProfile:[41,4,1,""]},"promod3.scoring.CBPackingScorer":{DoNormalize:[41,4,1,""],Load:[41,5,1,""],LoadPortable:[41,5,1,""],Save:[41,4,1,""],SavePortable:[41,4,1,""],SetEnergy:[41,4,1,""]},"promod3.scoring.CBetaScorer":{DoExternalScores:[41,4,1,""],DoInternalScores:[41,4,1,""],DoNormalize:[41,4,1,""],Load:[41,5,1,""],LoadPortable:[41,5,1,""],Save:[41,4,1,""],SavePortable:[41,4,1,""],SetEnergy:[41,4,1,""]},"promod3.scoring.ClashScorer":{DoExternalScores:[41,4,1,""],DoInternalScores:[41,4,1,""],DoNormalize:[41,4,1,""]},"promod3.scoring.DiscoContainer":{AddStructuralInfo:[40,1,1,""],AttachConstraints:[40,1,1,""]},"promod3.scoring.HBondScorer":{DoExternalScores:[41,4,1,""],DoInternalScores:[41,4,1,""],DoNormalize:[41,4,1,""],Load:[41,5,1,""],LoadPortable:[41,5,1,""],Save:[41,4,1,""],SavePortable:[41,4,1,""],SetEnergy:[41,4,1,""]},"promod3.scoring.PairwiseFunction":{Score:[40,4,1,""]},"promod3.scoring.PairwiseScorer":{DoExternalScores:[41,4,1,""],DoInternalScores:[41,4,1,""],DoNormalize:[41,4,1,""]},"promod3.scoring.ReducedScorer":{DoExternalScores:[41,4,1,""],DoInternalScores:[41,4,1,""],DoNormalize:[41,4,1,""],Load:[41,5,1,""],LoadPortable:[41,5,1,""],Save:[41,4,1,""],SavePortable:[41,4,1,""],SetEnergy:[41,4,1,""]},"promod3.scoring.SSAgreementScorer":{DoNormalize:[41,4,1,""],Load:[41,5,1,""],LoadPortable:[41,5,1,""],Save:[41,4,1,""],SavePortable:[41,4,1,""],SetScore:[41,4,1,""]},"promod3.scoring.TorsionScorer":{DoNormalize:[41,4,1,""],Load:[41,5,1,""],LoadPortable:[41,5,1,""],Save:[41,4,1,""],SavePortable:[41,4,1,""],SetEnergy:[41,4,1,""]},"promod3.sidechain":{AAToRotID:[51,4,1,""],BBDepRotamerLib:[52,3,1,""],CreateSCWRL4Particle:[49,4,1,""],DihedralConfiguration:[52,3,1,""],DisulfidScore:[44,4,1,""],FRMRotamer:[49,3,1,""],FRMRotamerGroup:[49,3,1,""],Frame:[45,3,1,""],FrameResidue:[45,3,1,""],GetDihedralConfiguration:[52,4,1,""],GetRotamericConfiguration:[52,4,1,""],LoadBBDepLib:[48,4,1,""],LoadLib:[48,4,1,""],PScoringFunction:[49,3,1,""],Particle:[49,3,1,""],RRMRotamer:[49,3,1,""],RRMRotamerGroup:[49,3,1,""],ReadDunbrackFile:[48,4,1,""],ResolveCysteins:[44,4,1,""],RotamerConstructor:[50,3,1,""],RotamerGraph:[46,3,1,""],RotamerID:[51,3,1,""],RotamerLib:[52,3,1,""],RotamerLibEntry:[52,3,1,""],SCWRL4ParticleType:[49,3,1,""],SCWRL4RotamerConstructor:[50,3,1,""],SubrotamerOptimizer:[53,4,1,""],TLCToRotID:[51,4,1,""]},"promod3.sidechain.BBDepRotamerLib":{AddRotamer:[52,4,1,""],Load:[52,5,1,""],LoadPortable:[52,5,1,""],MakeStatic:[52,4,1,""],QueryLib:[52,4,1,""],Save:[52,4,1,""],SavePortable:[52,4,1,""],SetInterpolate:[52,4,1,""]},"promod3.sidechain.FRMRotamer":{"__getitem__":[49,4,1,""],"__len__":[49,4,1,""],AddFrameEnergy:[49,4,1,""],AddSubrotamerDefinition:[49,4,1,""],ApplyOnResidue:[49,4,1,""],GetActiveSubrotamer:[49,4,1,""],GetFrameEnergy:[49,4,1,""],GetInternalEnergy:[49,4,1,""],GetInternalEnergyPrefactor:[49,4,1,""],GetNumSubrotamers:[49,4,1,""],GetProbability:[49,4,1,""],GetSelfEnergy:[49,4,1,""],GetSubrotamerDefinition:[49,4,1,""],GetTemperature:[49,4,1,""],SetActiveSubrotamer:[49,4,1,""],SetFrameEnergy:[49,4,1,""],SetInternalEnergy:[49,4,1,""],SetInternalEnergyPrefactor:[49,4,1,""],SetProbability:[49,4,1,""],SetTemperature:[49,4,1,""],ToFrameResidue:[49,4,1,""],ToRRMRotamer:[49,4,1,""]},"promod3.sidechain.FRMRotamerGroup":{"__getitem__":[49,4,1,""],"__len__":[49,4,1,""],AddFrameEnergy:[49,4,1,""],ApplyOnResidue:[49,4,1,""],ApplySelfEnergyThresh:[49,4,1,""],Merge:[49,4,1,""],SetFrameEnergy:[49,4,1,""]},"promod3.sidechain.FrameResidue":{"__getitem__":[45,4,1,""],"__len__":[45,4,1,""]},"promod3.sidechain.Particle":{GetCollisionDistance:[49,4,1,""],GetName:[49,4,1,""],GetPos:[49,4,1,""],GetScoringFunction:[49,4,1,""],PairwiseScore:[49,4,1,""]},"promod3.sidechain.RRMRotamer":{"__getitem__":[49,4,1,""],"__len__":[49,4,1,""],AddFrameEnergy:[49,4,1,""],ApplyOnResidue:[49,4,1,""],GetFrameEnergy:[49,4,1,""],GetInternalEnergy:[49,4,1,""],GetInternalEnergyPrefactor:[49,4,1,""],GetProbability:[49,4,1,""],GetSelfEnergy:[49,4,1,""],SetFrameEnergy:[49,4,1,""],SetInternalEnergy:[49,4,1,""],SetInternalEnergyPrefactor:[49,4,1,""],SetProbability:[49,4,1,""],ToFrameResidue:[49,4,1,""]},"promod3.sidechain.RRMRotamerGroup":{"__getitem__":[49,4,1,""],"__len__":[49,4,1,""],AddFrameEnergy:[49,4,1,""],ApplyOnResidue:[49,4,1,""],ApplySelfEnergyThresh:[49,4,1,""],Merge:[49,4,1,""],SetFrameEnergy:[49,4,1,""]},"promod3.sidechain.RotamerConstructor":{AssignInternalEnergies:[50,4,1,""],ConstructBackboneFrameResidue:[50,4,1,""],ConstructRRMRotamerGroup:[50,4,1,""],ConstructSidechainFrameResidue:[50,4,1,""]},"promod3.sidechain.RotamerGraph":{CreateFromFRMList:[46,5,1,""],CreateFromRRMList:[46,5,1,""]},"promod3.sidechain.RotamerLib":{AddRotamer:[52,4,1,""],Load:[52,5,1,""],LoadPortable:[52,5,1,""],MakeStatic:[52,4,1,""],QueryLib:[52,4,1,""],Save:[52,4,1,""],SavePortable:[52,4,1,""]},"promod3.sidechain.RotamerLibEntry":{FromResidue:[52,5,1,""],IsSimilar:[52,4,1,""],SimilarDihedral:[52,4,1,""],chi1:[52,6,1,""],chi2:[52,6,1,""],chi3:[52,6,1,""],chi4:[52,6,1,""],probability:[52,6,1,""],sig1:[52,6,1,""],sig2:[52,6,1,""],sig3:[52,6,1,""],sig4:[52,6,1,""]},"promod3.sidechain.SCWRL4RotamerConstructor":{AssignInternalEnergies:[50,4,1,""],ConstructFrameResidue:[50,4,1,""],ConstructFrameResidueHeuristic:[50,4,1,""]},"test_actions.ActionTestCase":{RunAction:[1,4,1,""],RunExitStatusTest:[1,4,1,""],pm_action:[1,6,1,""],pm_bin:[1,6,1,""],testPMExists:[1,4,1,""]},promod3:{SetCompoundsChemlib:[15,1,1,""],core:[12,2,0,"-"],loop:[23,2,0,"-"],modelling:[30,2,0,"-"],scoring:[42,2,0,"-"],sidechain:[47,2,0,"-"]},test_actions:{ActionTestCase:[1,3,1,""]}},objnames:{"0":["cmake","command","CMake command"],"1":["py","function","Python function"],"2":["py","module","Python module"],"3":["py","class","Python class"],"4":["py","method","Python method"],"5":["py","staticmethod","Python static method"],"6":["py","attribute","Python attribute"],"7":["std","option","option"]},objtypes:{"0":"cmake:command","1":"py:function","2":"py:module","3":"py:class","4":"py:method","5":"py:staticmethod","6":"py:attribute","7":"std:option"},terms:{"10a":36,"1aki":26,"1crn":[21,23,25,26,30,31,32,34,35,36,42,47],"1crn_cut":[30,31,35],"1crna":[26,31],"1ey":8,"1eye_rec":8,"20a":36,"2jlp":0,"30a":36,"3x3":9,"655a":26,"__doc__":[11,13],"__getitem__":[26,39,41,45,49],"__init__":[1,8,13,16],"__len__":[22,26,45,49],"__main__":[1,8],"__name__":[1,8],"__setitem__":[26,39,41],"_data":37,"_name":4,"_run":[1,4],"_xml":4,"abstract":[34,50],"boolean":[11,13,35],"break":[3,4,8,16],"byte":[10,37],"case":[0,1,5,8,13,16,22,26,27,29,32,34,35,36,37,41,44,47,49,50,52],"catch":26,"char":[22,37],"class":[0,1,3,5,8,9,10,12,13,14,17,20],"const":37,"default":[0,1,2,3,4,5,8,10,13,14,15,18,21,22,25,26,27,28,30,31,32,34],"enum":[26,51],"export":[8,21],"final":[8,18,26,28,30,31,35,40,42,44,46,47,49],"float":[9,10,21,22,25,26,27,28,29,31,32,33,34,35,36,37,39,40,41,43,44,49,50,52,53],"function":[0,1,3],"import":[0,1,5,8,11,13,16,18,20,21,22,23,25,26,27,30,31,32,34,35,36,42,47,49,50],"int":[1,9,10,11,14,21,22,24,25,26,27,28,29,31,32,33,34,35,36,37,39,40,41,45,49,50,52,53],"long":35,"new":[1,3,7,8,13,16,17,21,22,25,26,29,31,32,34,35,36,37,47,49],"null":26,"public":[8,37],"return":[1,8,9,10,11,13,14,15,21,22,24,25,26,27,28,29,31,32,33,34,35,36,37,39,40,41,43,44,45,48,49,50,51,52],"s\u00f6ding":38,"short":[8,16,37],"static":[8,14,21,25,26,27,31,36,37,39,41,46,48,52],"super":47,"switch":[8,16,40],"throw":[1,37,47,48],"true":[1,11,13,14,21,22,23,25,26,29,31,32,33,34,35,36,37,39,41,44,47,50],"try":[1,8,18,29,35,37,52],"void":37,"while":[1,4,8,14,20,21,25,35,37],a3m:[0,13],a3mtoprofil:[0,13],aa1:41,aa2:41,aa_aft:26,aa_befor:26,aa_clash:[35,39],aa_interact:[35,39],aa_pack:[35,39],aa_packing_scor:37,aa_relax_test:32,aa_res_idx:50,aa_scor:37,aa_with_rotam:47,aaa1:39,aaa2:39,aaa:[21,39],aaaaaaaa:22,aaaaggggggggggggggggggggaaaaaa:35,aafrequ:26,aafrequenciesstruct:26,aah:21,aatorotid:51,abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz:35,abil:16,abl:[2,8],abort:[8,10,32,35],about:[1,4,8,10,26,35],abov:[0,1,5,8,13,16,20,22,29,31,35,37,51,52],absolut:[4,5,34],academ:8,accept:[10,13,20,31,32,34,35,36,37],acceptor:[41,50],access:[4,5,8,21,22,26,27,31,35,39,40,41,49,51],accessor:26,accord:[0,5,10,16,21,22,25,26,27,28,29,31,34,35,36,39,44,47,49,50,52],accordingli:[26,40],account:[8,54],accur:28,accuraci:[0,28,35],achiev:[10,16],acknowledg:8,across:[1,52],act:[20,32],acta:38,action_nam:16,action_unit_test:1,actiontest:1,activ:[13,14,16,35,44,49,53],active_internal_energi:53,actual:[3,8,13,16,22,26,34,35,36,40,41,42,50,52],actual_posit:34,actual_step:34,adapt:[8,25,26,32,34,35,38],add:[1,2,4,6,8,10,13,18,20,21,26,27,31,32,35,36,39,40,41,44,47,49,50,54],add_argu:11,add_custom_target:8,add_doc_depend:4,add_doc_sourc:[4,8],add_subdirectori:8,addalign:13,addcarestraint:32,addcbrestraint:32,addcoordin:26,addcrestraint:32,addedg:10,addendum:20,addfrag:[13,26],addfragmentinfo:31,addframeenergi:49,addharmonicangl:25,addharmonicbond:25,addharmonicimprop:25,addit:[3,4,11,13,14,16,20,22,23,25,26,33,35,37],addition:[1,4,16,21,25,26],addljpair:25,addmodellingissu:35,addnod:10,addnrestraint:32,addorestraint:32,addpairwisefunct:40,addperiodicdihedr:25,addperiodicimprop:25,addprofil:13,address:37,addrotam:52,addseqidparamet:26,addseqsimparamet:[23,26],addsequenceprofileparamet:26,addssagreeparamet:26,addstructur:13,addstructuralinfo:40,addstructureprofileparamet:26,addsubrotamerdefinit:49,addtorsionprobabilityparamet:26,addureybradleyangl:25,admir:8,advanc:28,advantag:25,advic:[8,16],advis:20,affect:[8,22,35,50,51],after:[1,2,4,5,8,10,13,16,21,22,25,26,27,29,31,32,34,35,37,40,52],after_c_stem:22,afterward:[8,26,35],again:[2,3,8,26,28],against:[20,39],agg:27,agglom:31,ago:1,agre:20,agreement:[13,20,26,28,41],agress:[2,10],aim:19,ala:[22,27,32,47,50,51,52],ala_cb:21,ala_h1:21,ala_h:21,alanin:[3,51],alg:[23,26,35],algorithm:[3,10,19,22,23,26],alia:29,align:[0,13,18,26,28,30,35,38,40],alignedcuboid:22,alignmenthandl:[28,35,40],alignmentlist:[0,13,35],all:[0,1,2,3,4,8,10,13,14,16,18,19,20],all_atom:[21,22,25,49],all_atom_env:21,all_atom_po:[21,50],all_atom_scor:35,all_atom_scorer_env:35,all_atom_sidechain_env:35,all_po:[21,25,32],all_scor:31,allatom:[32,35,36],allatomclashscor:35,allatominteractionscor:[35,37],allatomoverallscor:[31,35],allatompackingscor:[35,37],allatomrelax:[25,32],alleg:20,alloc:26,allow:[0,2,3,5,8,11,16,22,26,27,28,31,34,35,37,39,41,46,52],allow_multitempl:13,allow_prepro_ci:22,almost:[4,32,35],aln:[0,28,30,31,35,40],aln_sourc:13,alon:[11,20],along:[1,8,20],alongsid:20,alot:8,alpha:[9,22,41,47],alpha_bin:41,alreadi:[1,4,8,10,16,22,25,26,28,31,35,36,39,40,41,49,50,52,53],also:[1,2,4,8,11,16,20,26,27,28,31,32,33,34,35,36,44,45,46,50,52],alter:[31,34],altern:[4,5,8,31,34,35,48,50],alwai:[0,1,7,8,16,29,34,35,37],amber:[21,35],ambig:52,ambigu:[0,13,52],aminoacid:[21,22,25,27,41,51,52],aminoacidatom:[21,39],aminoacidhydrogen:21,aminoacidlookup:[21,25],among:31,amount:[18,28,52],analysi:[32,33,38],analyt:[31,52],anchor:[9,21],ancient:15,angl:[0,9,21,22,23,25,26],angle_bin:41,angle_bin_s:26,angle_force_const:25,angle_four:9,angle_on:9,angle_thre:9,angle_two:9,angstrom:[26,32],ani:[0,1,4,5,8,10,13,14,15,18,20,21,22,25,26,27,29,31,33,34,35,36,37,39,40,41,45,47,49,50],anneal:[10,31,34],annot:20,announc:[1,8],anoth:[4,14,22,29,32,35,36,44],anymor:[3,10],anyon:[8,16],anyth:[0,2,5,8,13,14,15,31,32,36,39,41],anywai:8,anywher:16,apach:[3,20],apart:[1,31,35,36,39,41],app:7,appear:20,append:[0,13,22,26,27,35,47],appendix:20,appli:[3,7,10,11,15,16,20,22,26,29,31,32,34,35,36,38,40,44,47,49,52],applic:[1,20,32,50],applyccd:31,applyde:10,applyedgedecomposit:10,applyk:31,applyonresidu:[47,49],applypairwisefunct:[40,41],applysd:25,applyselfenergythresh:[47,49],applytransform:22,approach:[0,2,10,26,28,35,37,44,47,50],appropri:[10,20,27,35,37,50],approx:35,approxim:25,arbitrari:[3,21,26,44],arbitrarili:34,archiv:20,arendal:38,arg:[1,4,13,51],arg_ca:21,arg_hd3:21,arg_sorted_scor:31,arginin:51,argpars:13,argument:[0,1,2,4,11,12],argumentpars:13,argv:13,aris:20,around:[1,4,8,9,16,22,31,32,35,39,40,41,52],arrai:[0,8,37],artifici:26,ascend:29,ask:8,asn:[51,52],asn_c:21,asn_hb2:21,asp:[21,49,51,52],asp_ha:21,asp_o:21,asparagin:51,aspart:[51,52],ass:34,assembl:13,assemblepars:13,assert:20,assertequ:8,assess:[39,40],assign:[3,10,22,26,31,34,39,41,50,53],assigninternalenergi:50,assignsecstruct:35,associ:[20,26,29,45],assum:[1,4,5,7,8,20,25,26,32,35,37,40,41,44],assur:44,astar:3,astarsolv:10,atom:[3,8,9],atom_idx:[21,25],atom_nam:[21,25],attach:[0,4,8,13,20,21,25,28,29,31,35,36,39,40,41,42],attach_view:13,attachconstraint:40,attachenviron:[31,32,34,36,39,41,42],attachview:[30,31,35],attent:[1,16],attribut:[8,13,20,26,35,36,52],author:20,authorship:20,autom:[2,4],automat:[1,8,10,11,14,16,26,30,31,37,52],automatis:8,avaibl:50,avail:[1,2,3,5,7,8,15,16,18,20,25,26,31,34,35,40,47,49],availab:20,availabl:8,averag:[31,40,44],avg:26,avg_sampling_per_posit:28,avoid:[0,3,6,11,13,15,26,32,34],awai:[16,36,49],awar:[0,3,8,35,50],awesom:[1,8],axi:[9,22],back:[1,16,25,34],backbon:[0,3,9,18,21,22,26,27,28,29,30,31],backbone_scor:35,backbone_scorer_env:35,backbonelist:[18,21],backboneoverallscor:[28,31,34,35],backbonerelax:[32,35],backbonescor:8,backbonescoreenv:[8,28,31,34,35],backbonescoreenvlisten:8,background:[2,36],backrub:[22,38],backward:37,bad:[25,35],base:[0,3,4,5,9,11,13,19,20,22,23],base_target:4,basel:[8,54],bashrc:8,basi:[4,8,16,20,32,34,48],basic:[1,2,8,11,16,27,34,35,47,49,52],bb_dep_lib:37,bb_list:[18,21,22,23,26,29,31,32,34,35,40],bb_list_on:28,bb_list_two:28,bb_score:31,bbdeprotamerlib:[35,36,37,48,50,52],becaus:[8,16,21,35,40],becom:[10,52],been:[2,3,10,16,20,24,26,31,32,35,39,41,44,52],befor:[0,1,4,7,8,13,16,22,25,26,27,29,31,32,34,35,36,37,50],begin:[1,8,21,22,34,40],behalf:20,behav:[1,52],behaviour:[0,13,39,40,50,52],behind:8,believ:54,bell:8,belong:[3,4,16,21,22,26,29,31,34,35,36,39,40,41,45,49,50],belov:26,below:[0,8,20,21,25,26,28,31,32,36,37,39,41,44,49],below_thre:26,benefici:20,besid:[2,4,10,13,26],best:[4,31,35,44],best_candid:31,beta:[9,22,33,41],beta_bin:41,better:[25,31,34,35,39,41],between:[1,3,10,13,22,25,26,28,29,31,32,34,35,36,37,39,40,41,42,43,44,45,49,52],beyond:13,biasini2013:[19,38],biasini:38,bienert:38,big:[25,37],bilinearli:52,bin:[1,8,16,18,26,27,39,41,52],bin_siz:52,binari:[1,4,8,16,17,25,26,27],bind:[0,13,20],bins_per_dimens:27,bioinformat:38,biol:38,biologi:[19,38],biophi:38,biopolym:38,bit:[1,8,16,31,35],bitwis:26,blank:8,block:3,blosum62:[13,23,26,28,40],boilerpl:20,bond:[0,3,9,22,25,26,32,33,35,36,38,41],bond_force_const:25,bond_length:[9,25],bool:[1,8,10,11,13,14,21,22,25,26,29,31,32,33,34,35,36,37,39,41,44,49,50,52],boost:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],boost_librari:4,boost_root:2,bootstrap:[6,7],bore:34,both:[3,21,26,29,35,44,47,52],bound:[21,25,28,31,49],bracket:20,bradlei:25,branch:[4,8],branchnam:16,brew:4,bridg:[24,25,32,35,36],briefli:16,bring:8,broken:1,broyden:35,bsd:20,bug:[3,8,16],build_disulfid:36,builder:2,buildfromrawmodel:[30,35],buildrawmodel:[0,30,31,35],buildsidechain:35,buildup:[47,49],built:[4,7,25,26,40,45],bunch:[1,13,16],bundl:20,bytecod:1,c_coord:9,c_num:29,c_po:[9,22,41],c_stem:[9,23,26,29,31,32,34],c_stem_psi:34,c_str:37,c_ter:[32,50],ca_coord:9,ca_pairwise_funct:40,ca_po:[9,22],ca_pos_on:[43,44],ca_pos_two:[43,44],ca_posit:44,ca_rmsd:[23,26],cach:[2,26,28],calcul:[8,22,26,27,28,31,32,34,39,40,41,42,44,45,46,47,49,50],calculateallatomscor:31,calculatebackbonescor:31,calculatelinearcombin:[31,34,39,41],calculatescor:[39,41,42],calculatescoreprofil:[39,41],calculatesequenceprofilescor:31,calculatestemrmsd:31,calculatestructureprofilescor:31,call:[1,2,4,8,11,13,14,15,16,21,25,26,27,29,31,34,35,36,37,39,40,41,49,50,52],callabl:[13,16],calpha:35,calul:27,came:8,can:[0,1,2,3,4,5,7,8,9,10,11,13,14,15,16,18,19,21,22,23,25,26,27,28,29,30,31,32,34,35,36,37,39,40,41,42,44,45,46,47,48,49,50],cand:35,candid:[3,30],cannot:[0,8,13,20,25,26,27,29,35,37,39,41,48,50,51,52],canutescu2003:[32,38],canutescu2003b:[38,39,41,43,44],canutescu:38,cap:10,capabl:[24,30,34],captur:1,carbon:[9,22,43,49,50],carbonyl:[49,50],care:[0,8,10,31,32,35,37,41],carlo:[0,3,10,28,31,34,35,46],carmsd:[22,23,26],carri:[8,11,20],cast:37,categori:4,caus:[16,20,33],caution:21,caviti:26,cb_in_sidechain:50,cb_pack:[28,35,41],cb_packing_scor:37,cb_pairwise_funct:40,cb_po:22,cb_pos_on:[43,44],cb_pos_two:[43,44],cb_posit:44,cbeta:[28,31,34,35,41,42],cbeta_scor:[37,42],cbetaenvlisten:8,cbetascor:[8,35,37],cbpackingscor:[8,35,37],ccd:[3,30,31],ccdcloser:34,center:33,central:[22,27,41],centroid:31,certain:[1,2,4,8,10,16,26,27,28,29,35,37,39,40,41],certainli:1,ch1particl:49,ch2particl:49,ch3particl:49,ch_name:26,chain:[0,8,13,21,22,23,24],chain_idx:[8,21,31,34,35,36,39,40,41],chain_idx_list:36,chain_idx_on:40,chain_idx_two:40,chain_index:[26,34,39],chain_indic:40,chain_nam:[26,35],chainhandl:[21,22,29],chainid:0,chakravarti:38,chakravarty1999:[26,38],chanact:35,chanc:[8,10,35],chang:[1,3,4,5,8,10,16,20,21,27,28,29,32,34,35,36,39],change_frequ:[10,34],chapter:[29,33],charact:[13,20],charg:[8,20,21,25,32,49,50],charmm:[21,25,35],check:[0,1,2,3,5,8,11,13,14,16,22,25,26,30,32],check_io:37,check_xml:8,checkbasetyp:37,checkfinalmodel:35,checkmagicnumb:37,checkout:[8,16],checktypes:37,chemdict_tool:[5,7],chemic:[5,15,21,35,39],chemistri:[35,38],chemlib:[5,7],chi1:52,chi2:52,chi3:52,chi4:52,chi:52,child:13,childclass:1,chmod:8,choos:[20,31,34],chose:5,chosen:[0,13,34,35],cif:[0,5,7,13],ciiipgatcpgdyan:35,circumv:50,claim:20,clash:[3,28,31,32,34,35,39,41,42,44,47],clash_scor:42,clash_thresh:35,clashscor:[31,33,34,35],classic:48,claus:20,clean:[2,8,16],cleanli:37,clear:[14,21,22,31,35,40],clearenviron:[21,40],cleargap:29,clearpo:21,clearresidu:21,clip:13,clone:[8,18],close:[16,18,22,26,31,32,34,35,36,44],closed_posit:34,closegap:35,closelargedelet:35,closer:[3,26,30,31],closerbas:34,closesmalldelet:[32,35],closur:[32,35,38],clustal:[0,13],cluster:[3,31,37,40],cluster_thresh:[28,40],clutter:[1,8,26],cmake:0,cmake_support:[4,8,16,20],cmakecach:2,cmakelist:[1,2,4,8,16],coars:8,code:[0,1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,26,27,33,35],codetest:[4,8],coil:[24,28],collect:[11,14,21,28,40],collis:49,column:[26,28],combin:[20,25,26,27,28,31,34,35,38,39,41,44,52],come:[1,4,8,11,13,35,36,42,46,52],command:[0,1,7,8,11,12],commandlin:13,comment:[16,20],commerci:[8,20],commit:[8,16],common:[8,13,20,28],commonli:[8,18,30,31,41],commun:20,comp_lib:50,compar:[3,8,22,23,26,31,32,52],comparison:[35,38,52],compat:[16,25,37],compensatori:22,compil:[1,2,3,4,8,14,16,18,20,37,55],complain:1,complaint:16,complet:[14,16,22,25,32,34,35,36,52],complex:[8,16,36,44,49,53],compli:20,complianc:20,complib_dir_contain:[5,7],complib_dir_localhost:[5,7],compon:[5,7,10,15,26,33,41,50],compoundlib:[5,50],compress:[11,26],comput:[3,8,19,20,31,33,38,39,41],concaten:21,concept:8,concern:8,condit:[8,20,27],conf:[2,8],confid:[26,41],config:[4,8],config_head:4,configur:[2,8,10,16,20,31,47],conflict:16,conform:[26,32,34,38,46,52],connect:[4,5,10,16,21,25,26,31],connectivi:5,conop:[5,21,22,25,27,41,50,51],conquer:8,consecut:[26,27,41],consequenti:20,conserv:[18,29],consid:[0,4,8,10,13,14,16,21,22,26,27,28,31,32,34,35,36,39,40,41,44,47,49,50,52,54],consider_all_nod:10,consider_hydrogen:49,consider_ligand:36,consist:[3,8,20,21,25,28,29,31,32,34,35,36,37,40,44,49,52],conspicu:20,constant:[3,25,32,39,41,53],constitut:20,constraint:[13,26,32,34,40],constraintfunct:40,constru:20,construct:[0,3,9,21,22,26,28,29,34,37],constructatompo:9,constructbackboneframeresidu:[47,50],constructcbetapo:9,constructcterminaloxygen:9,constructetd:10,constructframeresidu:50,constructframeresidueheurist:50,constructfrmrotamergroup:[47,50],constructor:[21,25,29,32,34,37,40,41,47,49],constructrrmrotamergroup:50,constructsidechainframeresidu:50,contact:[40,54],contactfunct:40,contain:[0,1,2,3,4,5],content:[8,12,17,20,23,26,42,47,55],contigu:[25,36,37],continu:[1,21,29,32,47],contract:20,contrast:45,contribut:4,contributor:20,contributori:20,control:[0,3,8,10,20,31,34,36,40,49,50,52,53],conveni:[1,7,8,18,28,31,34,35],convent:[1,51],converg:[28,31,32,34],convers:[20,37],convert:[4,5,22,25,26,27,35,37,39,41,52,53],convert_module_data:4,convertbasetyp:37,cooler:[3,30,31],coolerbas:34,cooling_factor:[10,34],coord:[26,31],coord_idx:26,coord_info:26,coordin:[3,9,26,31,32,34,35,38,39,47],coordinfo:26,cope:16,copi:[2,3,4,8,16,18,20,21,22,29,31,34,35,40],copyright:20,copyright_cmak:20,core:[0,8,9,10,11],correct:[5,25],correctli:35,correspond:[0,10,16,21,22,25,26,27,31,37,49,52],corrupt:[21,40],cotain:26,could:[1,4,5,8,13,16,25,26,35],couldn:35,count:[14,29,34,35,39,41],countenclosedgap:29,countenclosedinsert:29,counter:34,counterclaim:20,counterpart:[31,41,50],coupl:[1,8,16,35],cours:8,coutsia:38,coutsias2005:[32,38],cover:[0,1,8,12,13,14,21,25,26,28,30,34,35],coverag:[0,3,35],cparticl:49,cpp:4,cpr:[51,52],cpu:[18,25,35],cpu_platform_support:25,crambin:[26,31,34],crash:47,createalign:[31,35],createentityfromview:[36,47],createfromfrmlist:[46,47],createfromrrmlist:46,createfullview:[30,31,35],createscwrl4particl:49,createsequ:[26,31,35],creation:[25,32,49],creator:[25,32],criteria:36,criterion:[10,34],criterium:31,croak:16,cross:20,crucial:8,crude:[0,35],cryst:38,cterminalclos:34,cumul:50,current:[2,4,5,8,10,14,16,21,22,25,26,31,34,35,37,40,41,42,49,50,53],custom:[8,26,34,35,36,37,48,51],customari:20,cutoff:[24,25,31,32,36,39,41],cycl:29,cyclic:[31,32,38],cyd:[51,52],cyh:[51,52],cys_hb3:21,cys_sg:21,cystein:[25,36,44,47,51],d_bin:41,dai:11,damag:20,dampen:25,danc:38,dare:4,dat:[26,37],data1:4,data2:4,data:[0,1,3,4,8,16,17,21,23,24,25],data_:37,data_gener:[3,37,48],data_to_stor:26,data_typ:26,databas:[0,9,23,24],databs:26,datatyp:26,date:[5,7,16,20],davi:38,davis2006:[22,38],dbg:8,dcmake_install_prefix:2,deactiv:10,dead:[10,38],deal:[35,36],debug:[8,10,21],decent:15,decid:[3,8,32],decis:27,declar:[4,8,16],decod:13,decompos:[3,10],decomposit:[10,28,46],decreas:34,dedic:[4,8,16],dee:10,deep:[22,35],def:[1,8,21,35],def_angl:21,defend:20,defin:[1,4,8,9,13,14,15,20,21,22,23,24,25],definem:8,degre:[22,26,27],delet:[0,2,8,22,35,49],deliber:20,deliv:[1,26,34,35],delta_scor:34,demand:35,demonstr:26,denovoclos:34,densiti:[22,32,38],dep1:4,dep2:4,dep:4,depend:0,dependency1:4,dependency2:4,depends_on:4,depth:[26,38],deriv:[1,20,26,38,43,44],descend:35,descent:[31,32,38],describ:[0,4,7,8,10,11,17,20,21,22,26,29,30,32,33,37,39,41,44,47,48,49,52,55],descript:[0,5,13,16,20,34,35,52],descriptor:26,descsrib:10,design:[1,3,19,20],desir:[9,18,25,31,32,34,35,39,40,41],despit:3,detail:[0,9,13,16,20,25,26,27,31,33,34,35,39,41,48,52],detect:[0,11,28,30],determin:[8,11,20,25,26,31,34,40,41],determinist:28,deuterium:35,develop:[1,3,8,16],deviat:[22,33,34,52],devot:12,dict:[4,28,31,33,34,39,41],dictionari:[4,5,13,15,33,38],did:[8,26,31,35],didn:7,didnt:5,differ:[1,2,4,8,10,15,16,20,21,26,28,29,31,35,39,41,47,51,52],differenti:49,dihedr:[9,18,22,23,25,26],dihedral_angl:22,dihedral_bin:41,dihedral_idx:52,dihedral_pair:27,dihedralconfigur:52,dill:38,dimens:27,dir:[4,8,18],direct:[8,20,22,24,26,41,49,50],directli:[8,10,18,26,31,35,36,40,44,49,51,52,54],directori:[1,2,4,5,7,8],dirti:1,dirtyccdclos:34,disabl:[1,16],disable_doctest:2,disable_document:2,disable_linkcheck:2,discard:26,disclaim:20,discocontain:40,disconnect:3,discret:[39,41],discuss:[20,26],disk:[8,25,28,39,41,52],displai:[11,13,14,20],dissimilar:28,dist:41,dist_bin:41,dist_bin_s:26,distanc:[9,22,26,28,31,35,36,39,40,41,43,49],distance_thresh:28,distant:40,distinct:[21,36,52],distinguish:3,distribut:[1,8,20,25,26,27,34,37,39,41,48,52],disulfid:[0,25,32,36,43],disulfid_bridg:[25,36],disulfid_score_thresh:36,disulfidscor:[36,44],dive:[16,35],diverg:8,divers:[26,28],dng:18,do_it:[39,41],doc:[2,4,8,16,20],docker:3,dockerfil:[5,7],docstr:13,doctest:[2,8,16],document:[1,2],doe:[1,3,4,8,9,10,11,13,15,16,20,22,26,30,31,34,35,37,40,48],doesn:[8,16,29,32,34,35,52],doesnt:52,doexternalscor:[39,41],dointernalscor:[39,41],domain:28,domin:10,don:[2,10,20,31,35,50],done:[1,8,11,13,16,23,25,27,31,34,35,37],donor:41,donorm:[39,41],dont:[0,34],dont_write_bytecod:1,dost_root:2,doubt:13,down:[13,22,26,34],download:5,dpm3_runtime_profiling_level:14,draw:[22,27,34],drawback:8,drawn:[27,34],drawphigivenpsi:27,drawpsigivenphi:27,drop:8,dssp:[3,26,41],dssp_state:41,due:[0,26,31,32,35,44],dump:52,dunbrack:[3,38,48],duplic:6,dure:[1,21,32,35,37,45,52],dynam:52,dynamicspatialorgan:3,e_cut:10,e_thresh:[10,35],e_tresh:10,each:[0,8,10,13,14,20,21,22,25,26,27,28,29,31,32,33,34,35,36,37,39,41],earli:3,earlier:2,easi:8,easier:[1,8,20],easili:[4,16,35],echo:8,edg:10,edge_idx:10,editor:1,editori:20,educ:8,effect:[4,8,10,25,36,44],effici:[21,28,34,38,42],egg:26,eigen3_include_dir:2,eigen:[2,3],either:[0,8,13,16,20,21,22,27,29,31,32,34,35,36,37,39,40,41,45,49,51,52],elabor:[8,20],electron:20,electrostat:[25,32],element:[1,10,21,22,26,28,31,33,37,40,44],elimin:[10,38],els:[8,16,36,37],emerg:1,empir:[43,44],emploi:16,empti:[8,11,13,22,26,28,31,35,49],enabl:[1,2,3,11,13,15,25,26],enable_mm:2,enable_ss:2,enclos:[20,29,35],encod:0,encount:[29,34],end:[0,1,2,4,8,10,11,13,16,20,21,22,26,28,29,31,35,38],end_resnum:35,end_transl:4,endian:37,energi:[0,3,8,10,18,25,32,34,35,36,39,41,44,45,46,47,49,50,53],energy_funct:[0,36],enforc:[0,3,21,31,34,35,36,39,40,41],engin:19,enough:[8,16,25,26,35,37],ensur:[2,8,18,31,35,37],ent:[0,13,21,25,26,33,36,42],ent_seq:42,enter:[35,45],entiti:[8,13,14,20,21,22,26,33,35,42,47],entityhandl:[13,21,22,33,35,36,40],entityview:[26,27,28,33,35],entri:[0,3,8,14,25,26,31,32,33,36,41,47,50],enumer:[8,10,21,25,26,31,35,40,47,50,51,52],env:[8,18,21,25,28,32,33,35,36,39,40,41,42],env_po:[32,36],env_structur:[21,40],environ:[1,3,8,21,28,29,31,32,34,35,36,37,39],epsilon:[10,25,36,53],equal:[34,39,41,44,50],equidist:52,equival:[35,39,41],error:[0,11,13,14,26,32,35,37],especi:28,estim:[10,33,34,38,41,44,52],etc:[1,3,8,16,22,26,31,40],evalu:[4,8,32,35,39,40,41],evaluategromacsposrul:9,even:[2,8,10,20,22,25,29,35],event:[20,28],eventu:13,ever:[16,34],everi:[0,1,8,10,13,21,22,26,27,28,31,32,34,35,36,39,40,41,44,46,49,50,52,53],everyth:[1,2,3,7,8],evolut:38,evolv:42,exact:[0,7,10,13,37],exactli:[2,10,26,28,31,35,40,44,51],exampl:[0,1,2,3,8,11,13,16,17,18,20,21,23,25,26,27,28,30],example_reconstruct:47,exce:[39,41],exceed:[26,29],except:[0,3,13,20,26,29,34,35],exclud:[8,20,26],exclus:[1,8,20,25],exec:7,execut:0,exercis:20,exisit:17,exist:[0,1,2,4,8,10,11,13,14,16,21,22,26,31,32,33,34,35,37,39,40,41,48,49,51,52],exit:[0,1,11,13],exit_cod:1,exit_statu:11,exot:8,exp:34,expect:[1,7,21,25,26,35,36,40,44,53],expens:26,experiment:35,explain:[1,8],explan:8,explicit:2,explicitli:20,explor:38,exponenti:34,exponentialcool:34,expos:26,express:[20,44],ext:11,extend:[1,4,8,16,17,24,26,28],extendatcterm:29,extendatnterm:29,extended_search:[31,35],extens:[0,3,11,13,29,35],extension_penalti:29,extent:26,extern:[3,4,5,8,34],external_script:[3,8],extra:[2,3,8,16,22,37,48],extra_bin:26,extra_force_field:35,extract:[8,9,21,22,23,25,26,27,28,30,31,32,34,35,36,39,40,41,44,50],extractbackbon:21,extractloopposit:25,extractstatist:27,extrem:22,f_i:26,f_idx:40,facilit:28,factor:[10,25,34,49],fail:[0,1,8,11,14,22,31,32,35],failur:[0,8,11,13,20,35,52],fall:32,fallback:52,fals:[1,8,10,11,13,22,25,26,29,31,34,35,36,44,47,49,50],fantast:8,far:[31,35],fast:[0,9,18,19,21,25,26,27,37,39,40,41,52],fasta:[0,13,30,35],faster:[10,25,26,32,33,40],fastest:[32,35],favor:33,favourit:1,fed:[4,16],fedora:8,fee:20,feed:[4,21,31],feel:[8,16],fellow:8,fetch:[13,16,18],few:[2,8,16,25,37,42],ff_aa:25,ff_aa_on:25,ff_aa_two:25,ff_ala:25,ff_arg:25,ff_asn:25,ff_asp:25,ff_cy:25,ff_cys2:25,ff_gln:25,ff_glu:25,ff_gly:25,ff_hisd:25,ff_hise:25,ff_ile:25,ff_leu:25,ff_lookup:[25,32,35],ff_lookup_charmm:37,ff_ly:25,ff_met:25,ff_phe:25,ff_pro:25,ff_ser:25,ff_thr:25,ff_trp:25,ff_tyr:25,ff_val:25,ff_xxx:25,field:[20,35,37,52],fifti:20,figur:16,file:[0,1,2,3,4,5,8],filecheck:16,fileexist:11,fileextens:11,filegzip:11,filenam:[0,8,11,13,25,26,27,28,37,39,41,48,52],filenotfound:33,fill:[4,8,13,16,23,26,29,30,31,33,35],fillfromdatabas:[31,35],fillfrommontecarlosampl:[31,35],fillloopsbydatabas:35,fillloopsbymontecarlo:35,filo:40,filtercandid:33,filtercandidateswithsc:33,final_model:[30,35],find:[4,7,8,10,16,21,23],findchain:42,findeigen3:20,findwithin:8,fine:8,finish:53,fire:[1,7],first:[0,1,8,10,13,16,18,21,22,25,26,27,28,29,31,32,34,35,36,39,40,41,43,44,47,49,52],fit:[16,20,22,26,30,31],fix:[3,8,11,16,25,32,36,37,39,41],fix_cterm:32,fix_nterm:32,fix_surrounding_hydrogen:25,flag1:4,flag2:4,flag:[0,2,4,8,10,11,13,22,26,35,36,49,50],flanking_rot_angle_on:22,flanking_rot_angle_two:22,fletch:[26,47],fletcher:35,flexibl:[0,19,36,44,47,49,50,53],flip:52,flood:26,flush:[1,16],fold:38,folder:[2,4,8,16,18,37],follow:[0,1,2,4,5,8,10,11,16,18,20,22,23,25,26,28,29,30,31,35,36,37,39,41,47,49,50,51,52],fontsiz:27,forbidden:8,forc:[25,32,35],force_const:[25,32],forcefield:23,forcefieldaminoacid:25,forcefieldbondinfo:25,forcefieldconnect:25,forcefieldharmonicangleinfo:25,forcefieldharmonicimproperinfo:25,forcefieldljpairinfo:25,forcefieldlookup:[25,32,35,37],forcefieldperiodicdihedralinfo:25,forcefieldureybradleyangleinfo:25,forg:16,forget:[1,8],form:[14,20,24,25,26,30,35,40,52],formal:[31,32,49,52],format:[0,5,13,20,26,48],formula:33,forward:16,found:[1,3,4,8,11,13,16,19,21,23,26,28,31,32,33,34,35,36,44,46,52],foundat:1,four:[9,34],fraction:[26,28,32,34],frag_db:[23,26,31,37],frag_info:26,frag_length:[23,26,28],frag_map:26,frag_po:[23,26,28],frag_residu:[23,26],frag_seq:[23,26],frag_siz:26,fragdb:[23,24,26,31,35,37],fragger:[13,23,26,28,34,35],fragger_handl:[13,35],fragger_map:26,fraggerhandl:[0,13,26,28,35],fraggermap:[26,28],fragment:[0,3,9,13,22,23,24],fragment_db:35,fragment_handl:28,fragment_info:26,fragment_length:[26,28],fragmentinfo:[26,31],fragments_per_posit:28,fragmentsampl:34,frame:[3,16,35,36],frame_energi:49,frame_residu:[45,47],frameresidu:[45,49,50],framework:[8,19,38],free:[0,8,20,35,51,52],frequenc:[26,34],frm:36,frmrotam:[44,49,53],frmrotamergroup:[44,46,49,50],from:[0,1,2,3,4,5,6,7,8,9,10,11,13,16,18,20,21,22,23,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],fromhhm:26,fromhoriz:26,fromresidu:52,front:[1,11,16],fstream:37,fudg:25,fulfil:[26,52],full:[0,1,3,8,10,21,25,26,29,30,31,34,35,36,47,49,50],full_seq:[29,31],fullgapextend:[29,35],fulli:[8,16,21,22,26,29,30,36],function_typ:40,functions_specific_to_your_act:8,fundament:37,funni:[2,8],further:[10,28,29,35,36,37],furthermor:37,futur:[3,25,26],gamma:[40,41,44],gamma_bin:41,gap:[0,3,9,18,24,25],gapextend:[29,35],gapfre:26,gapless:[0,13],gather:[4,12,16,26,28,47,49,52],gauc:52,gauch:52,gauche_minu:52,gauche_plu:52,gciiipgatcpgdyan:[31,35],gener:[0,1,2,3,5,8,10,13,14,16,18,19,20,23,24],generatedenovotrajectori:28,generatestructureprofil:26,geom:[21,22,25,26,28,32,35,44,49],geometr:[9,23],geoom:43,get:[0,1,2,7,8,16],getaa:[21,22,25],getaaa:21,getaah:21,getactivesubrotam:49,getallatomposit:[21,32,36],getallatomscoringkei:31,getallatomweight:31,getanchoratomindex:21,getangl:47,getangularbins:26,getatomcount:8,getatomnam:21,getatomnameamb:21,getatomnamecharmm:21,getaveragescor:31,getbackbonelist:[23,26],getbackbonescoringkei:31,getbackboneweight:31,getbins:27,getbinsperdimens:27,getbound:22,getc:22,getca:22,getcb:22,getchain:29,getchainindex:29,getchainnam:29,getchains:8,getcharg:25,getclust:31,getclusteredcandid:31,getcollisiondist:49,getconfid:26,getcoordidx:26,getcoordinfo:26,getcpuplatformsupport:25,getcreationd:5,getdefault:[25,32,35],getdefaultlib:5,getdihedralangl:26,getdihedralconfigur:52,getdistbins:26,getdisulfidbridg:25,getdisulfidconnect:25,getdsspstat:26,getel:21,getenviron:21,getenvsetdata:8,getepsilon:25,getfirstindex:21,getforcefieldaminoacid:25,getfragmentinfo:[26,31],getframeenergi:49,getfudgelj:25,getfudgeqq:25,geth1index:21,geth2index:21,geth3index:21,getheavyindex:25,gethistogramindex:[22,27],gethistogramindic:27,gethnindex:21,gethydrogenindex:[21,25],getindex:[21,25],getinternalconnect:25,getinternalenergi:49,getinternalenergyprefactor:49,getlargestclust:31,getlastindex:21,getlength:29,getlist:28,getlooplength:25,getloopstartindic:25,getmass:25,getmaxnumatom:21,getmaxnumhydrogen:21,getn:22,getnam:[47,49],getnonbondedcutoff:32,getnum:31,getnumatom:[21,25],getnumb:31,getnumcandid:31,getnumchain:8,getnumcoord:26,getnumfrag:26,getnumhydrogen:21,getnumloopresidu:25,getnumresidu:[8,21,25],getnumstempair:26,getnumsubrotam:49,geto:22,getolc:[21,22],getomegators:[21,22],getoxtindex:25,getpeptideboundconnect:25,getphiprobabilitygivenpsi:27,getphitors:[21,22,47],getpo:[21,49],getpotentialenergi:25,getpredict:26,getprob:[27,49],getpsiprobabilitygivenphi:27,getpsitors:[21,22,47],getr:33,getresiduedepth:26,getringpunch:33,getrotamericconfigur:52,getscor:[26,34],getscoringfunct:49,getselfenergi:49,getseqr:[21,40],getsequ:[21,22,26,31],getsequenceprofil:26,getsequenceprofilescoreskei:31,getsigma:25,getsimul:25,getsolventaccessibilitit:26,getstemrmsdskei:31,getstructureprofil:26,getstructureprofilescoreskei:31,getsubdb:26,getsubrotamerdefinit:49,getsystemcr:32,gettemperatur:[34,49],gettransform:22,getversionnumb:37,getweight:[28,31],ggg:35,gggaggg:35,gggggggggggggggggggg:35,git:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],gitignor:8,gitlab:54,give:[4,8,16,20,23,31,34,35,49],given:[0,1,3,4,8,9,10,11,13,14,21,22,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,44,47,49,50,52],glass:38,gln:[51,52],gln_ne2:21,global:[15,26,31,35,37],glu:[21,49,51,52],glu_oe1:21,glutam:51,glutamin:51,gly:[35,36,47,50,51],gly_n:21,glycin:[3,22,26,32,36,51],goal:[1,10,30],goe:[2,8,14,16,35,52],goldfarb:35,goldstein1994:[10,38],goldstein:[10,38],good:[4,8,18,25,26,35],goodwil:20,got:2,govern:20,grain:8,grant:20,graph:3,graph_initial_epsilon:36,graph_intial_epsilon:36,graph_max_complex:36,graphminim:[10,46],greatest:5,grep:2,grid:26,gromac:9,grossli:20,group:[4,14,24,26,27,41,44,45,46,47],group_definit:[27,41],group_idx:41,guarante:[26,28,31,34,36,37],gui:[8,27],guid:32,guidelin:[8,37],gzip:[0,5,11,13],haa:38,hand:[0,2,4,13,49],handl:[3,8,9,13,19],handler:28,happen:[1,8,25,26,28,29,34,35,49],hard:43,hardwar:18,harmless:20,harmon:[25,32],harmonic_angl:25,harmonic_bond:25,harmonic_improp:25,hasattr:35,hasdata:26,hasfraglength:26,hasfragmentinfo:31,hash:26,hasringpunch:33,have:0,hbond:[28,35,41,50,51],hbond_scor:37,hbondscor:[35,37],hdrogen:49,headach:8,header1:4,header2:4,header3:4,header4:4,header:[0,2,4,16,17],header_output_dir:4,headlin:8,heavi:[21,25,36,39,50],heavili:[26,47],helic:[22,24,25,28,35,41],helix:[18,22,34,47],hello:37,hello_world:8,hellyeah:18,help:[0,1,2,4,7,8,13,16,18,25,41],helpactiontest:1,helper:4,hen:26,henc:[8,14,21,26,37],here:[0,1,2,4,8,11,13,14,16,18,19,21,22,25,26,27,28,30,31,32,34,35,37,39,41,44,48,52],herebi:20,herein:20,het:35,heurist:[35,50],heuristicprocessor:21,hgfhvhefgdntngcmssgphfnpygkehgapvdenrhlg:0,hhblit:[0,13],hhm:[0,13,26,31],hhsearch:26,hidden:49,hide:[8,16],hierarch:[31,40],hierarchi:15,high:[3,8,16,30,35],high_resolut:22,higher:[31,40,41],highest:15,highli:[2,8],hint:13,histidin:[25,51],histogram:[27,34],histori:16,hit:[1,10,16,27,32],hmm:38,hold:20,home:[4,5],homo:[0,13],homolog:[0,12,18,19,35,38],homologu:26,honor:35,honour:35,hook:8,horiz:26,host:[4,7,8,16],hotfix:16,how:[1,7],howev:[5,20,26],hparticl:49,hpp:37,hsd:[51,52],hse:[51,52],html:[2,8,16],http:[7,8,18,19,20,54],hybrid:52,hydrogen:[3,21,22,25,35,38,41,49,50],hyphen:1,i_loop:[25,36],id_:37,idea:[1,8,21,23,25,26,35,40,49,53],ideal:[22,32,53],ident:[3,26,27,41,52],identif:20,identifi:[0,13,14,20,26,31,35,36,39,41,50,52],idx:[10,21,22,25,26,28,32,40,49],idx_ca_res_37:21,idxhandl:8,iff:[26,29,33],ifstream:37,ignor:[0,25,32,35],iii:20,illustr:26,image_nam:[5,7],imagehandl:22,imagin:8,imaginari:1,img:[7,22],immedi:[1,8,15,16],impact:[0,25,26],implement:[3,16,19,26,28,29,32,34,35,37,43,44,46,47,50,51,54],impli:20,implicit:2,improp:25,improv:[3,20,25,35,38,44],in_dir:4,in_fil:8,in_path:4,in_stream:37,in_stream_:37,inabl:20,inaccur:25,inaccurate_pot_energi:25,inact:53,inactive_internal_energi:53,incident:20,incl:[25,26,35],includ:[2,3,8,11,16,18,20,21,25,26,29,31,33,35,37,39,41,47],include_ligand:35,inclus:[20,35],incompat:[31,32],incomplet:[35,48],inconsist:[10,13,21,22,25,26,29,31,32,36,40,49],inconveni:16,incorpor:20,increas:[0,10,28,31,32,35,50],incur:20,indemn:20,indemnifi:20,independ:[0,3,25,36,48],index:[8,10,21,22,25,26,27,28,29,31,32,33,34,35,39,40,41,45,49,50,52],index_four:25,index_on:25,index_thre:25,index_two:25,indic:[8,10,11,13,20,21,22,25,26,27,28,29,31,32,35,36,40,44,47,49],indirect:20,individu:[20,39,41],inf:[10,32,35],infin:32,infinit:32,influenc:[13,28,40],info:[26,31,35,40],inform:[0,5,7,8,13,16,20,22,23,26,28,29,31,34,35,38,40,41,42,54],infring:20,inherit:[1,39,40,41,46],init:16,init_bb_list:34,init_frag:34,initi:[3,10,21,22,26,28,31,32,34,35,36,39,40,41,46,49,50,52],initial_bb:31,initial_epsilon:[10,53],initialis:1,inlin:37,inner:14,input:[0,1,3,13,16,18,25,26,27,28,32,34,35,36,39,40,41,44,48,53],insert:[21,22,29,31,34,35,53],insertinto:[21,22,31],insertloop:[29,35],insertloopcleargap:[29,31,35],insid:[1,4],insight:16,instanc:[3,8,13,24,25,37,54],instead:[0,1,2,3,4,8,11,26,28,29,31,34,35,50],institut:20,instruct:2,int16_t:37,int32_t:37,int_32_t:37,integ:[8,13,21,40],intend:[1,8,34],intent:26,intention:20,interact:[3,8,25,32,39,40,41,43,44,45,49],intercept:[39,41],interest:[1,10,25,26,34,37,49,52],interfac:[0,3,4,8,20,50],intermedi:8,intern:[0,1,3,4,5,8,16,21,24,25,26,27,28,31,32,34,35,36,37,38,39,40,41,46,49,50,53],internal_e_prefac:50,internal_e_prefactor:49,internal_energi:49,internet:8,interpl:52,interpol:[40,52],interpret:[8,11],intervent:8,intrins:2,introduc:[1,3,4,8,16,32,35],invalid:[8,21,25,26,29,32,35,36,39,40,41,45,49,51,52],invok:[2,4,8,15,16],involv:[16,30,44],iostream:37,irrevoc:20,is_c_ter:[25,36],is_cter:25,is_major:35,is_n_ter:[25,36],is_nter:25,isallatomscoringsetup:[31,35],isallset:21,isanyset:21,isbackbonescoringsetup:35,isctermin:29,isempti:31,isen:14,isntermin:29,isoleucin:51,isset:21,issimilar:52,issourc:37,issu:3,istermin:29,isvalid:47,item:[1,8,16,21,22,25,26,35,40],iter:[10,26,27,28,31,32,34,35,49],itself:[3,4,8,16,26,34,36,37,39,41,49],januari:20,job:[8,26,34,35],johner:38,join:[8,21,23,26,31,32,34,36],jone:38,jones1999:[26,38],journal:38,json:[0,13],jupyt:7,just:[1,2,8,13,15,16,23,25,26,29,31,35,50],kabsch1983:[26,38],kabsch:38,keep:[0,1,2,4,5,8,13,16,30],keep_non_converg:31,keep_sidechain:[8,36],kei:[0,13,26,28,31,34,35,39,40,41],kept:[8,16,25,31,32,36,45],kernel:38,keyword:27,kic:[30,31],kicclos:34,kick:13,kill_electrostat:25,kind:[1,8,20],kinemat:32,know:[2,52],knowledg:52,known:[4,11,21,40,50],krivov2009:[10,38,47],krivov:38,kwarg:1,l_e:49,lab:48,label:[16,25],lack:35,languag:[4,20],larg:[5,27,32,35],larger:[10,14,22,26,35,50],largest:[28,31,44],last:[1,4,21,22,25,29,31,32,34,35,40,41,48],last_psi:22,later:[1,8,10,21,47],latest:[2,5,7,8],latter:[0,5,16,35],launcher:[4,8],law:20,lawsuit:20,layer:44,layout:[26,37],lazi:49,lbfg:35,leach1998:[10,38],leach:38,lead:[0,8,9,11,22,25,31,32,36,39,41,48],least:[0,2,4,8,10,16,20,22,25,26,35,39,41,44],leav:1,left:[11,32],legal:[8,20],lemon:38,len:[22,23,25,26,28,31,35,36,41,47],length:[0,9,10,21,24,25,26,27,28,29,31,32,34,35,36,37,39,40,44],length_dep_weight:35,length_depend:31,less:[0,10,16,22,25,26,27,31,35,39,41,52],let:[1,7,8,22,26,31,47],letter:[3,5,21,22,26,27,34,51],leu:51,leu_h:21,leucin:51,level:[2,3,8,14,15,16,30,35,49],lexicograph:35,liabil:20,liabl:20,lib64:8,lib:[5,7,37],libexec:[4,8],libpromod3_nam:4,librari:[0,3,4],library1:4,library2:4,licenc:48,licens:3,licensor:20,life:16,ligand:[3,35,36,50],like:[0,1,4,7,8,16,35,37,48],limit:[0,3,20,26,32,35],line:[0,1,7,8,9,12],linear:[26,28,31,34,39,40,41],linear_weight:[31,34,39,41],linearcombin:31,linearscor:34,link:[0,2,4,8,16,20,21,25,26,28,34,36,39,40,41,42],link_cmd:4,linkcheck:[2,8,16],linker:[4,35],linker_length:35,list:[0,1,2,3,4,8,9,10,11,13,20,21,22,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,44,45,46,47,49,50,52,53],listen:8,literalinclud:8,litig:20,littl:[4,8,16,37],live:[4,8],lj_pair:25,load:[1,8,13,15,21,23],loadalign:[30,35],loadallatominteractionscor:39,loadallatompackingscor:39,loadamberforcefield:35,loadbb:26,loadbbdeplib:[0,36,47,48],loadcach:28,loadcbetascor:[31,34,41,42],loadcbpackingscor:41,loadcharmm:25,loadcharmmforcefield:35,loaddefaultallatomoverallscor:39,loaddefaultbackboneoverallscor:41,loadent:[0,13],loadfragdb:[23,24,31,35],loadhbondscor:41,loadlib:[0,36,48],loadpdb:[8,21,23,25,26,30,31,32,34,35,36,42,47],loadport:[25,26,27,37,39,41,52],loadreducedscor:41,loadsequenceprofil:[13,26,31],loadssagreementscor:41,loadstructuredb:[23,24,26,31,35],loadtorsionsampl:[22,24,27,34],loadtorsionsamplercoil:[24,31,35],loadtorsionsamplerextend:24,loadtorsionsamplerhel:24,loadtorsionscor:41,local:[2,5,7,25,26,27,39,41,52],localhost:7,locat:[2,3,4,5,10,22,24,26,29,37,39,41,49],log:[11,16,33,35,49,50],logic:0,loginfo:33,lone:49,lone_pair:49,longest:26,look:[5,8,11,16,22,26,36,40,50],lookup:[9,21,23],looooooong:10,loop:[0,3,8,13,18,19,21],loop_candid:31,loop_length:[25,26,31,36],loop_main:8,loop_po:25,loop_seq:31,loop_start_indic:[25,36],loopcandid:[28,30],loss:[16,20],lossi:26,lost:[1,16],lot:[1,8,13,16],low:[1,8,10,50],lower:[31,34,35,39,41],lowest:[31,34,49],lowest_energy_conform:34,lysin:51,machin:[25,26,27,37,39,41,52],macro:[4,8],made:[4,20,52],magic:[8,37],mai:[0,1,2,4,8,11,13,16,20,21,25,29,32,35],mail:20,main:[8,35,37,52],mainli:[21,34],maintain:[8,16],maintin:34,major:[16,35],makefil:[2,8],makestat:52,malfunct:20,malici:16,man:[2,8],manag:[4,8,20,42],mani:[11,13,26,32,33,35,50],manipul:22,manner:[8,10,34],manual:[1,2,5,8,9,16,26,31,34,35,37,49],map:[0,13,21,22,26,28,33,36],mariani:38,mark:[4,20,50],mass:25,massiv:28,master:[8,16],mat3:9,mat4:[9,22,28,35],match:[0,4,13,22,25,26,27,31,32,34,35,40,41],materi:[1,8],math:33,mathemat:[31,32],matplotlib:27,matric:38,matrix:[9,26],matter:[4,7,54],max:[9,10,21,29,33,35,36,41,52,53],max_alpha:41,max_beta:41,max_complex:[10,53],max_count:[39,41],max_d:41,max_dev:34,max_dist:[31,40],max_extens:35,max_gamma:41,max_iter:[28,31,35],max_iter_lbfg:35,max_iter_sd:35,max_length:29,max_loops_to_search:35,max_n:10,max_num_all_atom:35,max_p:50,max_prob:49,max_res_extens:35,max_step:32,max_to_show:14,max_visited_nod:10,maxfraglength:26,maxim:[10,26,28,31,32,34,35,38,40,41],maximum:[10,26,31,32,34,49,50],mc_closer:34,mc_cooler:34,mc_num_loop:35,mc_sampler:34,mc_scorer:34,mc_step:[10,35],mcsolv:10,mean:[4,8,13,16,20,21,25,32,35,36],meaning:[26,31],meant:[18,21,26,33,35,50],measur:28,mechan:[18,20,31,32,34,35,40],meddl:[7,35],media:20,medium:20,meet:20,member:[8,13,31,35],memori:[10,26,35,37],mention:[1,2],merchant:20,mere:20,merg:[16,25,28,29,31,35,36,40,49],merge_dist:35,mergegap:29,mergegapsbydist:35,mergemhandl:35,mess:[8,16,40],messi:16,met:51,methionin:[35,51],method:[0,1,10,13,21,25,26,27,32,35,36,37,50],metric:40,metropoli:[10,31,34],mhandl:[29,30,31,35],middl:16,might:[10,25,26,31,32,34,40,49,50,53],min:[31,41],min_alpha:41,min_beta:41,min_candid:31,min_d:41,min_dist:40,min_gamma:41,min_loops_requir:35,min_scor:31,mincadist:22,mind:[1,8],minim:3,minimizemodelenergi:35,minimum:[22,26,28,44],minor:[3,25,35],mirror:37,miser:14,mismatch:[21,35,40],miss:[0,11,13,25,35],mix:[0,4],mkdir:[2,8],mm_sy:[25,32],mm_sys_output:25,mm_system_cr:32,mmcif:[5,11],mmsystemcr:[25,32],mod:8,mode:[1,52],model_termini:35,modelling_issu:35,modellinghandl:[3,29,31,35],modellingissu:35,modeltermini:35,modif:[20,35],modifi:[8,16,20,22,31,35],modified_crambin:31,modul:[1,3],modular:19,module_data:4,mol:[8,9,18,21,22,23],molecular:[18,32,35],molprob:30,molprobity_bin:33,molprobity_execut:33,moment:8,monitor:1,monolith:8,mont:[0,3,10,28,31,34,35,46],montecarlo:3,mood:8,more:[1,2,4,7,8,10,13,14,16,20,28,35,44,49,54],most:[0,3,4,5,8,22,25,26,27,28,31,32,35,39,41,48,50],mostli:[4,16,49],motion:[22,38],mount:[5,7],movabl:25,move:[2,3,8,16,25,31,32,34,35,37],movement:28,mpscore:33,msg:11,msgerrorandexit:11,msm:3,msse4:2,much:[10,26,35],multi:18,multipl:[0,2,3,4,8,13,14,18,25,28,31,35,36,39,41],multipli:[10,34],multitempl:13,must:0,mutlipl:13,my_db_on:26,my_db_two:26,my_script:7,myclass:37,myclassptr:37,mytrg:0,n_coord:9,n_num:29,n_po:[9,22,41],n_stem:[9,23,26,29,31,32,34],n_stem_phi:34,n_ter:[32,50],naivesolv:10,name:[0,1,3,4,5,7,8,11,13,14,20,21,25,26,27,29,31,33,35,44,48,49,51,52],name_pymod:4,namespac:[7,13,37],nan:[32,35,52],nativ:37,necessari:[8,22,34,40],necessarili:[20,53],need:[1,2,3,4,5,8,11,13,15,16,22,25,26,27,28,31,32,35,36,37,39,40,41,47],need_config_head:4,neg:[1,10,25,32,40],negelect:[0,35],neglect:[28,32,45,49],neglect_size_on:31,neglig:20,neighbor:[8,21,35],neighbour:[35,52],network:[22,44],never:[13,16,26,31,35,36,37,39,41],nevertheless:[8,49],new_default:25,new_env_po:21,new_po:21,new_res_nam:49,new_siz:22,newli:[5,21,34],next:[1,8,16,22,27,28,29,37],next_aa:34,nglview:7,nice:8,nitrogen:[9,22,32,43,49,50],nobodi:1,node:10,node_idx:10,node_idx_on:10,node_idx_two:10,non:[0,4,10,13,16,20,24,25,27,28,29,31,32,35,37,47,48,50],non_rotamer:52,nonbonded_cutoff:[25,32],none:[13,26,28,33,34,35,36,49],nonredund:26,nonzero:52,norm:41,normal:[20,39,41],normalis:40,notabl:26,note:[0,2,8,13,14,21,22,25,26,28,31,32,34,35,36,37,39,40,41,47,50,51],notebook:7,noth:[0,4,8,13,14,20,34,49],notic:[1,4,16,20],notwithstand:20,novel:[19,38],novo:3,now:[3,8,14,16,18,22,26],nparticl:49,nterminalclos:34,null_model:31,num:[23,28,31,32,36],num_frag:[26,35],num_gap_extens:29,num_loop:31,num_residu:[21,25,34,36,39,40,41],num_residues_list:36,num_trajectori:28,number:[0,1,8,9,10,13,14,18,21,22,24,25,26,27,28,29,31,32,34,35,36,37,39,40,41,42,44,45,49,52],numer:35,numpi:[27,34],o_po:22,object:[0,3,8,13,14,20,21,22,23],oblig:20,observ:[10,26,32,50,53],obtain:[10,18,20,23,35],obviou:16,occupi:[45,50],occur:[21,28,35,40,41],ocparticl:49,odd:26,off:[1,8,14,35],offend:33,offer:[6,20,24,30,49,52],offset:[0,3,13,26,31,35],ofstream:37,often:[8,11,13,32],olc:22,old:[33,35],oligom:[0,13,30],oligomer:3,omega:[21,22],onc:[1,3,8,16,25,28,31,32,34,46,52,53],one_letter_cod:[21,23,26,31,32,34,36],onli:[0,1,2,4,8,10,11,13,14,15,16,20,21,22,25,26,28,29,31,33,34,35,36,37,39,41,44,47,48,50],only_longest_stretch:26,onto:[1,22,26,28],oparticl:49,open:[13,25,26,27,37,39,41,52,54],openmm:[2,18,25,32],openstructur:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],oper:[3,10,16,18,21,26,40],opt:[11,13,16],optim:[0,2,3,10,13,25,26,27,31,35,39,41,44,47,48,52],optimis:8,optimize_subrotam:[36,44],option:[0,2,3,5,7,13,26,31,32,35,52],order:[0,5,13,21,25,26,29,31,35,37,40],org:20,organ:[8,26,52],orient:[9,32,41],orig_indic:[31,33],origin:[5,7,9,13,16,20,22,26,31,34,35,40,53],ost:[0,1,2,3,4],ost_complib:[5,7],ost_double_precis:2,ost_ent:33,ost_librari:4,ost_root:[2,8],other:[0,1,2,3,4,8,10,14,16,20,21,22,31,32,35,36,39,41,42],other_index:22,other_particl:49,other_res_index:21,otherwis:[1,4,8,10,14,16,20,21,22,25,26,28,29,31,32,34,39,40,41,49,52],our:[4,5,8,16,26,31],out:[0,1,2,4,8,14,16,20,21,25,26,27,28,29,31,34,47,52],out_path:4,out_po:25,out_stream:37,out_stream_:37,outdat:[5,7],outer:[14,26],outlier:33,output:0,output_dir:4,outsid:[8,40],outstand:20,over:[2,4,13,16,26,32,34,35,49],overal:[10,34,40,46],overhead:25,overlap:[25,34,35,36],overli:16,overload:37,overrid:[2,5,25,50],overridden:4,overriden:5,overview:[8,16],overwrit:31,overwritten:25,own:[1,3,4,5],owner:20,ownership:20,oxt:[9,21,25],oxygen:[22,35,43,49,50],pack:21,packag:[4,8,16],pad:[22,37],page:[2,8,20],pai:1,pair:[9,25,26,27,28,32,34,36,37,39,40,41,44,49,52],pairwis:[3,8,10,22,28,31,35,39],pairwise_energi:10,pairwisefunct:[40,41],pairwisefunctiontyp:40,pairwisescor:[8,35],paper:[43,44,47,49],paragraph:[1,8],parallel:26,paramet:[1,4,8,9,10,11,13,14,15,21,22,24,25,26,27,28,29,31,32,33,34,35,36,38,39,40,41,43,44,45,46,48,49,50,51,52,53],parameter_index:26,parametr:[32,35,36,49,50],parent:35,pars:[0,11,12],parser:12,part:[0,1,8,16,18,20,21,26,34,35,40,44,46,47,49],partial:29,particip:[36,44],particl:[3,25,26,32,41,43,44,45,47],particle_typ:49,particular:[8,10,20,26,31,32,34,49,52],partner:[39,40,41],pass:[13,16,21,25,26,28,29,32,34,44,45,49,50],past:[8,16,22,29],patent:20,path:[1,2,4,5,8,11,16,18,25,26,27,33,39,41,52],path_to_chemlib:15,path_to_dockerfile_dir:5,path_to_promod3_checkout:6,pattern:38,paus:14,pdb:[0,5,8,11,13,18,21,22,23,24,25,26,30,31,32,33,34,35,36,42,47],penal:[29,35],penalti:[29,35],penultim:3,peopl:16,pep:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],peptid:[3,21,23,25,26,35,36,47],per:[4,8,10,12,16,21,27,31,34,35,39,40,41,44],percent:20,percentag:33,perfect:8,perfectli:8,perform:[0,10,16,18,19,20,25,28,31,32,33,34,35,37,40,44],period:25,periodic_dihedr:25,periodic_improp:25,permiss:[8,20],permut:10,perpetu:20,pertain:20,phase:25,phe:[51,52],phenix:33,phenylalanin:51,phi:[21,22,26,27,32,34,41,47,50,52],phi_bin:[41,52],phi_handl:47,philippsen:38,phipsisampl:34,phosphoserin:35,phrase:8,pick:[31,34],pictur:8,piec:[8,28],pipelin:[0,3,14],pivot:[31,32,34],pivot_on:[31,32],pivot_thre:[31,32],pivot_two:[31,32],place:[1,2,4,8,11,13,16,20,26],plain:[0,13],plan:16,plane:33,platform:[18,25],playground:7,pleas:[2,8,16,28,31,32,35,54],plot:27,plt:27,plu:[8,13,15,26,44,49],pm3_csc:16,pm3_openmm_cpu_thread:[18,25,35],pm3_runtime_profiling_level:14,pm3argpars:[0,11,12],pm3argumentpars:[0,11,13],pm_action:[1,4,8],pm_action_init:8,pm_bin:1,png:27,point:[2,7,8,13,15,21,26,28,34,35,40,52],pointer:[2,8,37],polar:[49,50],polar_direct:49,polici:8,pop:[16,31,34,40],popul:[2,16],port_str_db:26,portabl:[4,17,25,26,27],portable_binary_seri:37,portable_fil:4,portablebinarydatasink:37,portablebinarydatasourc:37,pos_end:28,pos_on:28,pos_start:28,pos_two:28,posit:[3,8,9],possibl:[0,3,8,10,13,16,20,22,25,26,27,29,31,32,34,35,36,37,39,40,41,44,46,49,51,52],post:13,postprocess:36,pot:25,pot_:32,potenti:[10,23,25,26,31,32,35,36,37,38,41],power:20,pqhpg:0,practic:[4,8,25,26],pre:[8,16],pre_commit:[8,16],preceed:36,precis:[2,31,35],precomput:23,pred:40,predefin:[4,18,25,35,39,41],predict:[13,26,28,35,38,40,41],prefactor:49,prefer:[2,4,20,26,52,53],prefilt:35,prefix:[1,4,8,11],prepar:[8,20,35],present:[22,28,32,36,49,50,52],prev_aa:34,prevent:[1,8],previous:[25,26,31,36,40],primary_rot_angl:22,principl:[34,40],print:[1,2,5,20,22,23,25,26,31,32,33,35,42],printstatist:26,printsummari:14,prior:35,privat:[1,37],pro:[21,27,51,52],probabilist:[26,50],probability_cutoff:50,probabl:[4,8,10,13,16,26,27,28,31,32,34,49,50,52],problem:[3,7,10,13,16,26,31,32,34,35,40,42,44,46,48,53],problemat:[3,5,28],proce:42,procedur:[10,28,34,36],process:[1,3,13,16,21,25,28,32,34,35,37,40,45,49,52],processor:5,produc:[0,1,2,4,8,10,26,29,33,35],product:[1,3,16,20],prof:[0,26,31],prof_dir:26,prof_path:26,profil:[0,3,12,13],profiledb:26,profilehandl:[13,26,28,31,35],prog:13,program:[4,5,8,12],project:[3,4,8,16],prolin:[22,33,51],promin:[0,20],promod3_mod:4,promod3_nam:4,promod3_name_head:4,promod3_path:8,promod3_root:8,promod3_shared_data_path:[8,37],promod3_unittest:[1,4,8],promod:[5,7],promot:8,propag:[8,22],proper:[16,26],properli:[1,35,39,41,50],properti:[21,22,35,52],propos:[29,31,32,34,44],proposed_posit:34,proposestep:34,prot:[8,23,26,32,34,36,47],prot_rec:8,protein:[0,18,19,24,25],proton:[21,25,51,52],prototyp:19,provid:[0,1,2,3,4,5,7,8,13,16,20,21,22,23,25,26,28,29,31,32,33,34,35,36,37,40,48,49,50,52],prune:[10,53],pscoringfunct:49,pseudo:[34,35,39,41],psi:[21,22,26,27,32,34,41,47,50,52],psi_bin:[41,52],psi_handl:47,psipr:[13,26,28,40,41],psipred_confid:41,psipred_pr:28,psipred_predict:[26,28,35],psipred_st:41,psipredpredict:23,pssm:[0,13],publicli:20,pull:[7,8,16,18],punch:[1,3,30],pure:0,purpos:[8,10,20,35,52],push:[7,16],pushverbositylevel:13,put:[1,4,8,11,13,35],pwd:5,py_run:[1,4,8],pyc:1,pylint:16,pylintrc:16,pymod:[4,8,16],pyplot:27,pytest:8,python2:8,python:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],python_root:2,pythonpath:8,qmean:2,qmeandisco:40,qualiti:35,quantum:38,queri:[26,52],querylib:52,question:[3,27],quickli:[5,8,32],quit:[8,13],rackovski:38,radian:[9,22,25,27],radii:[33,43],radiu:[8,33,39,41],raihvhqfgdlsqgcestgphynplavph:0,rais:[0,9,10,13,21,22,25,26,27,28,29,31,32,33,34,35,36,39,40,41,44,45,49,50,52],rama_iffi:33,ramachandran:33,random:[10,22,24,27,31,32,34],random_se:31,randomized_frag:22,randomli:[27,34],rang:[8,9,21,22,23,25,26,27,28,29,32,34,35,39,40,41,52],rank:31,rapid:38,rare:8,rather:[5,7,8,11,16,34,52],raw:[7,18,25,26,27,30,31],rawmodel:[3,8],reach:[0,29,32],read:[0,8,11,13,16,25,26,27,29,36,37,39,41,48,52],readabl:[0,8,13,20,52],readdunbrackfil:48,reader:[16,18],readi:[2,52],readm:[2,8,48],real:[8,13,37],realli:[1,2,8,11,16],reappear:16,reason:[8,16,20,32,34,53],rebas:16,rebuild:[2,8],recalcul:27,receiv:20,recent:[3,16],recip:[3,6,7],recipi:20,recoginz:51,recogn:[0,13],recognis:[1,8,16],recognit:38,recommend:[2,5,8,20,25,35],reconstruct:[0,3,8,18,21,22,25,30,32,35],reconstructcbetaposit:22,reconstructcstemoxygen:22,reconstructor:[32,35,36],reconstructoxygenposit:22,reconstructsidechain:[0,8,35,36],reconstructtest:8,record:[1,35],recreat:16,redistribut:20,reduc:[3,25,28,35,41],reduced_scor:37,reducedscor:[35,37],redund:[24,31],ref_backbon:[23,26],ref_fil:8,refactor:3,refer:[1,4,8,18,19,21,22,23,25,26,34],referenc:8,refresh:31,regard:[20,32,44],region:[0,25,28,29,32,34,35,45,50],regist:[4,8],registri:7,regress:38,regularli:5,reinterpret_cast:37,reject:[31,32,34],rel:[4,5,9,10,26,28,32,41],relat:[4,8,13,26,28,37,38,49],relax:30,relev:[2,3,4,7,25,36,49],reli:5,remain:[20,30,34,35],rememb:[1,8,34],remodel:[31,36],remodel_cutoff:36,remov:[2,3,10,22,25,26,29,31,33,35,36,40,47,49],removecoordin:26,removeterminalgap:35,renumb:[26,35],reorder:35,reordergap:35,replac:[3,20,21,22,34,35],replacefrag:22,report:[1,8,35],reportmolprobityscor:33,repositori:[1,4,8,16,54],repres:[10,20,21],represent:[22,23,25,26,27,37,39,41,49,52],reproduc:[3,20,35],reproduct:20,request:[26,28,48,52],requir:[0,2,3,5,8,13,16,19,20,21,22,26,27,28,31,32,35,36,37,42,49,50,51,52],reread:26,res_depth:26,res_idx:49,res_index:21,res_indic:[21,25,36],res_list:[21,25,32,36],res_num:21,resembl:16,reserv:11,reset:[10,21,25,32,34,40,49],resid:5,residu:[0,3,8,9,21,22,23,24,25,26,27,28,29,31,32,33,34,35,36,38,39,40,41,42,44,45,47,49],residue_depth:26,residue_index:[45,49,50],residue_list:35,residuedepth:26,residuehandl:[9,21,22,26,29,31,32,33,34,35,49,50,52],residuehandlelist:21,residueview:35,resiz:[22,37],resnum:[21,22,29,31,35,36,40],resnum_on:40,resnum_rang:35,resnum_two:40,resolut:[22,32],resolv:[16,21,32],resolvecystein:44,resort:35,respect:[9,25,35],respons:[8,16,20],rest:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],restart:7,restor:[22,31,34,40],restraint:[26,32],restrict:[8,16,29],restructuredtext:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],result:[0,2,8,10,20,25,27,28,31,32,33,34,35,36,38,44,52],resum:14,retain:20,reus:[35,36],review:[16,54],revis:20,reviv:16,rewrit:1,richardson:38,ridig:36,right:[1,2,8,13,20],rigid:[0,3],rigid_frame_cutoff:36,rigidblock:28,rij:43,ring:[3,30],ring_punch_detect:35,risk:20,rmsd:[22,23,26,28,31,32],rmsd_cutoff:[26,31,32],rmsd_thresh:[26,28],rnum:40,robot:38,role:13,root:[2,4,8,16],rosetta:41,rot:36,rot_constructor:47,rot_group:[47,50],rot_lib:50,rot_lib_entri:50,rota_out:33,rotam:[0,3,33,36,38,44,45],rotamer:[48,52],rotamer_group:[44,46,47],rotamer_id:47,rotamer_librari:[3,35,36,48],rotamer_model:36,rotamer_on:44,rotamer_res_indic:36,rotamer_two:44,rotamerconstructor:[3,49,50],rotamergraph:[36,46,47,49,53],rotamergroup:49,rotamerid:[47,50],rotamerlib:[35,36,37,48,50,52],rotamerlibentri:[50,52],rotat:[9,22],rotatearoundomegators:22,rotatearoundphipsitors:22,rotatearoundphitors:22,rotatearoundpsitors:22,rotationaroundlin:9,roughli:24,round:52,routin:[1,18,31],royalti:20,rrm:36,rrmrotam:[44,49],rrmrotamergroup:[44,46,49,50],rst1:4,rst2:4,rst:[4,8,16],rsync:8,rule:[5,8,9,16],run:0,runact:1,runexitstatustest:1,runmolprob:33,runmolprobityent:33,runnabl:8,runner:1,runtest:[1,8],runtim:[0,3,10,12],runtimeerror:[9,10,21,22,25,26,27,29,31,32,34,35,36,39,40,41,44,45,48,49,50,52],runtimeexcept:27,s_id:26,safe:[2,8],said:4,same:[0,1,2,4,7,8,10,13,14,20,21,25,26,28,31,32,34,35,36,37,39,40,41,42,45,48,49,50,52],samiti:35,sampl:[0,3,8,22,23],sampled_frag:34,samplemontecarlo:[3,34],sampler:[3,23,24,26],samplerbas:34,sampling_start_index:34,sander:38,saniti:2,sanity_check:2,satisfi:51,save:[16,22,25,26,27,28,31,34,37,39,40,41,52],savebb:26,savecach:28,savefig:27,savepdb:[18,21,22,25,26,30,31,32,34,35,36,47],saveport:[25,26,27,37,39,41,52],sc_data:32,sc_rec:[32,36],sc_rec_test:36,sc_result:32,scale:22,scatter:27,scheme:[1,8,13,21,26,29,34],schenk:38,schmidt:38,schwede:[8,18,19,38,54],sci:38,scicor:[8,18,19,54],scondari:35,scope:14,score:[0,3,8,13,19,23,26,28,29,30],score_contain:31,score_env:[31,34,42],score_threshold:44,score_vari:35,scorecontain:31,scorer:3,scorer_env:[28,31,34],scorerbas:34,scoring_weight:28,scoringgapextend:[29,35],scoringweight:[28,31,35],scratch:[26,34],scriptnam:11,scriptpath:8,scwrl3:[36,42],scwrl3disulfidscor:[43,44],scwrl3pairwisescor:43,scwrl4:[0,36,38,44,47],scwrl4particletyp:49,scwrl4rotamerconstructor:[3,47,50],scwrlrotamerconstructor:3,seamlessli:16,search:[0,2,3,8,21,26,28,31,33,35,36,41,44,49,50],searchdb:[23,26],second:[8,10,22,25,26,28,31,32,35,39,40,41,43,44],secondari:[3,13,26,28,38,41],secondli:8,section:[1,4,7,17,20,54,55],see:[0,1,8,9,10,11,13,16,18,20,21,25,26,27,29,31,33,34,35,37,39,40,41,52],seed:[10,24,27,31,32,34],seem:16,segment:22,select:[3,10,26,28,34,35,36,47],selenium:35,self:[1,8,10,44,47,49],self_energi:[10,49],sell:20,send:11,sensibl:35,sent:20,seok:38,separ:[1,3,8,10,20,25,27,35,39,41,44],seq:[13,21,23,26,28,29,31,35,40,42],seq_idx_on:28,seq_idx_two:28,seq_one_idx:28,seq_sep:[39,41],seq_tpl:[31,35],seq_trg:[31,35],seq_two_idx:28,seqid:[24,26],seqprof:13,seqr:[0,21,23,26,28,29,31,34,35,36,39,40,41],seqres_str:[21,32,36],seqsim:26,sequenc:[0,3,8,13,18,21,22,23],sequencefromchain:42,sequencehandl:[21,26,28,29,35,40],sequencelist:[21,35,40],sequenceprofil:26,sequenti:[22,35],ser:51,serial:[26,37],serializ:37,serin:51,serv:[1,13,26,28,31,34],servic:[16,20],set:[1,2,4,8,10,11,13,15,16,18,21,22,25,26,28,31,32,33,34,35,36,37,39,40,41,44,47,49,50,52,53],setaa:22,setactivesubrotam:49,setallatomscoringkei:31,setaroundomegators:22,setaroundphipsitors:22,setaroundphitors:22,setaroundpsitors:22,setbackbonescoringkei:31,setbackrub:22,setc:22,setca:22,setcb:22,setcharg:25,setcpuplatformsupport:25,setdefault:25,setdisulfidconnect:25,setenergi:[39,41],setenviron:[21,32,36,40],setepsilon:25,setfraggerhandl:35,setframeenergi:[47,49],setfudgelj:25,setfudgeqq:25,setinitialenviron:[21,31,32,34,36,40,42],setinternalconnect:25,setinternalenergi:49,setinternalenergyprefactor:49,setinterpol:52,setmass:25,setn:22,setnonbondedcutoff:32,seto:22,setolc:22,setpeptideboundconnect:25,setphitors:22,setpo:21,setprob:49,setpsipredpredict:[35,40,41],setpsitors:22,setresidu:21,setscor:41,setsequ:22,setsequenceoffset:35,setsequenceprofil:35,setsequenceprofilescoreskei:31,setsigma:25,setstemrmsdskei:31,setstructureprofil:26,setstructureprofilescoreskei:31,settemperatur:49,setup:[0,2,5,7,8,13],setupdefaultallatomscor:[31,35],setupdefaultbackbonescor:[31,35],setupsystem:25,setweight:31,sever:[0,2,3,5,8,10,13,24,26,27,28,31,32,35,36,40,41,42,44,48,49,52,53],sg_pos_on:43,sg_pos_two:43,shake:34,shall:20,shanno:35,shapovalov2011:[38,48],shapovalov:38,shared_ptr:37,shebang:8,sheet:35,shelenkov:38,shell:[1,2,8,11],shift:[22,26,29],shiftctermin:29,shiftextens:29,ship:[5,48],shorten:35,shorter:35,shortest:31,shortli:8,should:[1,2,4,5,7,8,10,11,13,16,18,20,22,23,26,27,28,31,32,34,35,36,37,40,45,47,49],show:[1,8,13,14,31,34,47,50],showcas:[1,21,25,27],shown:[8,14,35],shrink:22,shrug:38,side:[8,35,38],sidechain_pymod:8,sidechain_reconstructor:35,sidechain_rst:8,sidechain_test_data:8,sidechain_test_orig:36,sidechain_test_rec:36,sidechain_unit_test:8,sidechainparticl:50,sidechainreconstructiondata:[30,32],sidechainreconstructor:[25,30,32,35],sidenot:[26,36],sig1:52,sig2:52,sig3:52,sig4:52,sigma:25,silent:1,sim:25,similar:[1,2,13,16,23,26,28,40,41,52],similardihedr:52,similarli:[2,25,35],simpl:[0,9,22,26,34,35,39,40,41,52],simpler:[25,35],simplest:[5,8,30],simpli:[21,22,31,32,34,35,50,51,52],simplic:[23,26],simplif:13,simplifi:[3,22,25,26],simul:[10,25,31,32,34],sinc:[1,2,4,8,10,11,16,18,22,25,26,27,28,51],singl:[2,4,8,10,21,22,25,26,28,31,32,34,35,36,40,41,45,48,49,50,53],singleton:25,singular:[3,6],singularity_nohttp:7,sink:37,sit:8,site:[5,8],size:[8,21,22,26,27,32,34,37,39,40,41],sizeof:37,skip:[0,1,8,16,26,35,50],slide:28,slight:35,slightli:35,slow:37,slower:[18,25,26,27,35,39,41,52],small:[8,26,32,35,36],smaller:[22,26,28,32,41],smallest:47,smallish:[2,8],smart:16,smng:3,smooth:38,smtl:35,soding2005:[26,38],softsampl:34,softwar:[8,20,38],sol:47,sole:[1,16,20],soli:38,solis2006:[24,38],solut:[8,10,28,31,32,34,35,36,46,47],solv:[10,16,47,53],solvent:26,solventaccess:26,solver:3,some:[1,2,4,5,6,7,8,13,16,21,23,26,30,33,34,35,36,37,40,42,47,50,52],somedata:37,someth:[1,7,8,11,16,26],sometim:16,somewher:4,soon:[10,32,41,47,52],sort:[1,4,10,14,31,34,52],sound:16,sourc:[1,2,4,8,13,16,18,19,20,26,28,31,32,33,35,37,52],source1:[4,16],source2:[4,16],source3:4,source4:4,source_chain_idx:35,source_mhandl:35,sp3:52,space:[10,34,38],span:35,sparticl:49,spatial:[8,42],spawn:[1,8],spdbv:35,spdbv_style:35,special:[1,2,4,8,20,25,34,50,51,52],specif:[1,8,20,25,26,27,28,31,34,38,40,48,49,50,52],specifi:[0,2,4,5,9,10,22,26,27,31,32,35,36,40,49,52],specimen:11,speed:[3,25,35],spent:[14,18],sphere:43,sphinx:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],spin:38,spit:[29,34],split:42,sport:8,squar:26,src:[8,16],ss_agreement:41,ss_agreement_scor:37,ssagre:26,ssagreementscor:37,sse:2,sstream:37,stabil:38,stabl:16,stack:16,stage:[1,2,4,8],stai:[1,8,10,16,34],standalon:7,standard:[2,8,12,13,16,21,27,37,41,52],start:[0,1,2,4,7],start_idx:31,start_resnum:[21,22,26,31,34,35,36,39,40,41],start_resnum_list:36,start_rnum:40,start_temperatur:[10,34],starter:1,startscop:14,stash:[16,31,34,40],state:[1,2,8,20,21,26,31,34,40,41,44,51,52],statement:20,staticruntimeprofil:14,statist:[14,26,38],statu:[1,8],std:37,stderr:1,stdout:1,steadili:[10,34],steepest:[32,35],stem:[9,22,25,26,29,31,32,34,35,36],stemcoord:9,stempairorient:9,step:[8,10,14,16,18,19,28,29,30,31,32,34],stereo:35,stereo_chemical_problem_backbon:35,stereochem:[3,35],steric:52,still:[8,14,25,26,35,37],stop:[1,8,14,29,32],stop_criterion:32,stoppag:20,storabl:26,storag:[8,21,25,39,41],store:[0,1,3,8,9,16,18,21,22,25,26,27,28,29,31,32,34,35,36,37,47],stori:8,str:[1,11,13,14,15,21,22,25,26,27,28,29,31,32,33,34,35,36,37,39,40,41,49,51,52],str_len:37,straight:16,strategi:52,stream:37,stretch:[21,26,31,34,35,40,41],strict:16,strictli:3,string:[0,3,11,13,26,27,29,37],stringstream:37,strip:[0,35],struc:5,struct:[5,26,37],struct_db:23,structral:[21,40],structur:[0,3,8,13],structural_db:31,structuralgap:[29,33],structuralgaplist:[29,35],structure_db:[26,28,31,35,37],structure_db_on:26,structure_db_two:26,structure_dir:26,structure_id:26,structure_path:26,structure_sourc:13,structuredb:[3,13,24,26,28,31,35,37],structuredbdatatyp:26,structureprofil:26,studer:38,stuff:[26,39],style:[35,40,41],sub:[8,26],sub_frag:22,sub_res_list:26,subdir:8,subfold:8,subject:[8,20],sublicens:20,submiss:20,submit:20,submodul:8,submodule1:16,subpart:28,subrotam:[0,3,44,47,49],subrotameroptim:[36,53],subsequ:[10,20,22,35],subset:[0,13,25,26,28,31,32,35,36],subst:26,subst_matrix:26,substitut:26,substweightmatrix:26,subtre:[4,8],succeed:29,success:[10,11,34],successfulli:5,sudo:[5,7],suffici:26,suffix:11,sugar:6,suggest:[5,8,43],suit:[1,8,26],sulfur:[43,44,49,50],sum:[14,29,35,36,43,44,49],summari:[14,26],superpos:[22,26,28,31,32,34],superpose_stem:22,superposed_rmsd:[22,31],superposeonto:22,superposit:[3,28,31,34],superpost:28,supersed:20,supervis:1,support:[0,1,3,8,11,13,18,20,25,32,35],suppos:[16,34],sure:[2,7,8,13,16,26],surfac:26,surotam:49,surround:[25,26,32,36,39,41],symmetr:[26,40,52],symmetri:[39,41],sync:8,syntax:20,system:[1,2,4,8,16,20,23],t_sampler:27,tabl:26,tag:[5,7],tail:22,tailor:[21,35],take:[8,10,21,26,27,28,31,32,34,35,37,41,44,50,53],taken:[0,21,25,32,34,35,50],talk:1,target:[0,1,2,4,8,13,18,26,28,30,31,32,34,35,40],target_chain_idx:35,target_mhandl:35,target_pdb:33,target_sequ:26,task:[8,16,32,35,37,40],techniqu:10,tell:[1,8,11,13,16,26],temperatur:[10,31,34,49],templat:[0,1,3,13,18,30,35,37,40],temporari:[26,35],temporarili:16,term:[8,20,26,49,51,52,53],termin:[0,1,9,11,18,20,21,22,25,29,31,32,34,35,36,50],terminal_len:34,terminal_seqr:34,termini:[0,3,29,34,35],terminu:[26,34,35],test_:8,test_action_:1,test_action_do_awesom:1,test_action_help:1,test_awesome_featur:8,test_check_io:37,test_cod:8,test_doctest:8,test_foo:4,test_portable_binari:37,test_reconstruct_sidechain:8,test_sidechain_reconstruct:8,test_submodule1:16,test_suite_:4,test_suite_your_module_run:8,test_your_modul:16,testcas:[1,8],testcasenam:8,testexit0:1,testpmexist:1,testreconstruct:8,testutil:[1,8],text:[1,13,20,35],than:[4,8,13,14,16,21,22,26,28,31,32,33,35,36,41,44],thei:[2,5,8,16,21,22,25,26,27,31,32,33,34,35,44,49,50,51,52,54],them:[4,8,16,22,25,26,27,28,29,31,35,36,40,45],themselv:25,theoret:34,theori:[20,38],therefor:[5,8,22,24,26,28,32,34,35,52],thereof:[20,25],thi:[0,1,2,3,4,5,7,8,10,11,12,13,14,15,16,17,18,20,21,22,23,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,42,44,47,49,50,51,52,53,55],thing:[1,2,8,16,26,28,35,52],think:10,thoroughli:16,those:[0,1,2,4,8,10,13,16,20,25,31,35,36,37,39,41,47,52],though:[25,35,37],thr:51,thread:[18,25,35,38],three:[1,4,16,21,22,27,31,33,34,41,51,52],threonin:51,thresh:[22,49,52],threshold:[10,26,28,32,35,36,40,52],through:[1,8,9,20,22,26,29,35,39,41],throughout:[13,16,24,25],thrown:26,thu:[5,11,49],tidi:16,tightli:16,time:[1,5,8,13,14,16,18,28,35],timer:14,tini:[16,35],titl:[20,27],tlc:[21,51],tlc_an:21,tlctorotid:[47,51],tmp_buf:37,todens:22,toentiti:[18,21,22,25,26,32,34,36],toframeresidu:49,togeth:[8,16,26,44],too:[13,16,31,32,35,37,49],tool:[3,4,23,37,42,47],toolbox:16,top:[2,6,7,8,14,15,16,32,35],topic:[1,8,16],topolog:[25,32],torrmrotam:49,torsion:[0,13,21,22,23,24,26],torsion_angl:47,torsion_bin:41,torsion_plot:27,torsion_sampl:[22,26,31,32,34,35,37],torsion_sampler_coil:[28,37],torsion_sampler_extend:[28,37],torsion_sampler_hel:37,torsion_sampler_helix:28,torsion_sampler_list:26,torsion_scor:37,torsionprob:26,torsionsampl:[22,24,26,27,28,31,32,34,35,37,41],torsionscor:[35,37],tort:20,total:[10,14,26,28],touch:[1,8,25,32],toward:[0,3,8,13,26,29,32,35,39,41,47,49,50,53],tpl:[0,30,31,35],tpr:[51,52],trace:35,track:[3,11,20,30],trade:20,trademark:20,tradition:11,trail:0,train:[24,31,35],trajectori:[28,34],tran:[22,51,52],transfer:20,transform:[9,20,22,28,34,35,52],translat:[4,8,20,26,51,52],transomegators:22,treat:[3,8,25,35,36,37,52],treatment:50,tree:[1,4,8,10,16,46,47],treepack:3,treesolv:[10,36,47],trg:[0,13,31,35],tri:[10,28,29,35,44,52],trick:[1,7,16],trigger:[1,4,8,48],tripeptid:27,tripl:11,triplet:23,trp:[51,52],trustworthi:16,tryptophan:51,ttccpsivarsnfnvcrlpgtpea:[31,35],ttccpsivarsnfnvcrlpgtpeaicatgytciiipgatcpgdyan:35,ttccpsivarsnfnvcrlpgtpeaicatytgciiipgatcpgdyan:[31,35],tupl:[9,10,11,22,25,26,28,29,33,35,36,44],turn:[0,1,11,14,16,35],tutori:8,tweak:35,twice:[14,40],two:[1,7,8,10,16,21,22,25,26,28,29,31,32,35,36,37,39,40,41,43,44,47,49,51,52],txt:[1,2,4,8,16,20],type:[0,1,8,9,10,11,13,14,20,21,22,24,25,26,27,29,31,32,33,34,35,36,37,39,40,41,43,47,48,49,50],typedef:37,typenam:37,typic:[22,28,34,47,52],tyr:[51,52],tyrosin:51,uint32_t:37,uint:37,ultra:26,uncertain:8,uncharg:50,unclos:35,undefin:25,under:[4,8,20],undergo:[28,32,34,36],underli:[29,31,49],underscor:1,understand:16,understood:0,undo:10,unexpect:2,unfavor:[22,32],unfavour:[32,34,44],unfortun:16,unhandl:[0,13],uniba:[8,18,19,54],uniform:32,union:20,uniqu:[0,13,28,31,34,52],unittest:[1,8,16],univers:[8,54],unix:16,unknown:25,unless:[13,20,21,22,25,31,39,41],unlik:47,unrecognis:11,unset:[21,25,36],unsupport:[13,37],until:[8,10,32,35,40,50],untouch:22,untrack:1,unus:16,upat:5,updat:[3,5,7,8,16,21,25,29,31,32,35,36,40,42],updatedistribut:27,updateposit:[25,32],upon:[26,32,34],urei:25,urey_bradley_angl:25,usabl:16,usag:[0,3,10,13,24,26,31,32,36],use_amber_ff:35,use_bbdep_lib:36,use_frm:36,use_full_extend:35,use_scoring_extend:35,user:[1,5,8,19,54],userlevel:1,usr:[2,5,7,8],usual:[1,2,4,8,13,14,16,22,31,35,39],utilis:[8,16],v_size:37,val:[27,51],valid:[0,10,16,22,26,29,34,35,36,48,52],valin:51,valu:[2,10,11,13,21,22,25,26,28,31,34,35,37,39,40,41,44,47,49,50,51,52,53],valueerror:[28,35],vanish:40,varadarajan:38,vari:[4,37],variabl:[1,2,8,14,18,25,33,35,37],variant:[25,31],variou:[1,2,4,16,30],vec3:[9,21,22,26,32,33,43,44,49],vec3list:[28,49],vector:[25,27,31,37],verbal:20,verbos:1,veri:[1,8,11,16,25,28,35,37],verif:13,verifi:[1,11,16],version:[2,3,5,8,16,20,26,35,37,48,51],via:[1,5,8,13,15,25],view:[13,16,27,35,40],virtual:8,visibl:36,visual:18,volum:5,wai:[1,2,4,5,8,16,22,23,25,31,41,47,51],wait:8,walk:[1,8],want:[1,2,3,8,15,16,22,26,28,31,32,35,40,49,50,52,53,54],warn:[8,16,35],warranti:20,watch:8,web:[2,8],weight:[3,26,28,31,34,35,39,41],weird:[28,32,47],well:[0,4,16,21,27,28,29,31,35,37,41,47,52],went:[0,8],were:[16,26,31,35],wester:38,wether:10,what:[1,8,11,13,16,23,26,36,40],when:[1,3,4,5,8,10,13,14,21,22,25,26,27,28,29,31,34,35,36,37,38,40,41,44,47,48,49,50,52],whenev:[8,21,31,40],where:[0,1,3,4,5,8,10,11,13,14,16,20,21,22,25,26,27,31,35,37,39,40,41,48,49,50,52],wherea:26,wherev:20,whether:[3,5,8,10,11,13,20,22,25,26,31,32,34,36,39,40,41,49,50,52],which:[0,1,4,8,9,11,12,13,16,18,20,21,22,25,26,27,28,29,31,32,33,34,35,36,37,39,40,41,49,50,52],whistl:8,whitespac:0,who:[10,47],whole:[1,2,8,16,20,22,26,35,49],whom:20,why:[1,16],width:[10,37,47],wild:4,window:28,window_length:28,wise:4,wish:[2,17,27,35],with_aa:31,with_db:31,within:[2,3,4,8,14,16,20,21,25,28,29,33,35,36,39,41,52],without:[0,1,3,4,8,11,13,20,25,29,32,35,40,52],won:[0,35,36,50],word:4,work:[1,2,4,5,7,8,14,16,18,20,25,29,35,37],worldwid:20,worst:16,worth:54,would:[1,2,8,11,22,26,27,44],wrap:26,wrapper:[1,4,8,15,35],write:0,writebasetyp:37,writemagicnumb:37,writetypes:37,writeversionnumb:37,written:[8,20,37],wrong:[2,13],wwpdb:5,www:20,xlabel:27,xlim:27,xml:8,xxx:[22,51],xxx_num_atom:21,xxx_num_hydrogen:21,year:1,yet:[26,31,35],ylabel:27,ylim:27,you:[0,1,2,3,4,5,7,8,10,11,13,14,15,16,18,20,21,22,23,25,26,27,28,30,31,32,34,35,36,37,39,40,41,47,48,49,50,52,53,54],your:[1,2,4,5,7],your_modul:[8,16],yourself:[2,8,10,16,35,50],yyyi:20,zero:[0,26,35,52],zhou2005:[26,38],zhou:38,zip:[26,47]},titles:["ProMod3 Actions","<code class=\"docutils literal\"><span class=\"pre\">test_actions</span></code> - Testing Actions","Building ProMod3","Changelog","ProMod3&#8216;s Share Of CMake","Docker","ProMod3 and Containers","Singularity","Contributing","Geometry functions","Graph Minimizer","<code class=\"docutils literal\"><span class=\"pre\">helper</span></code> - Shared Functionality For the Everything","<code class=\"docutils literal\"><span class=\"pre\">core</span></code> - ProMod3 Core Functionality","<code class=\"docutils literal\"><span class=\"pre\">pm3argparse</span></code> - Parsing Command Lines","Runtime profiling","<code class=\"docutils literal\"><span class=\"pre\">SetCompoundsChemlib()</span></code>","ProMod3 Setup","Documentation For Developers","Getting Started","ProMod3","License","Handling All Atom Positions","Representing Loops","<code class=\"docutils literal\"><span class=\"pre\">loop</span></code> - Loop Handling","Loading Precomputed Objects","Generate <code class=\"docutils literal\"><span class=\"pre\">ost.mol.mm</span></code> systems","Structural Data","Sampling Dihedral Angles","Modelling Algorithms","Handling Gaps","<code class=\"docutils literal\"><span class=\"pre\">modelling</span></code> - Protein Modelling","Handling Loop Candidates","Fitting Loops Into Gaps","Model Checking","Generating Loops De Novo","Modelling Pipeline","Sidechain Reconstruction","Using Binary Files In ProMod3","References","All Atom Scorers","Backbone Score Environment","Backbone Scorers","<code class=\"docutils literal\"><span class=\"pre\">scoring</span></code> - Loop Scoring","Other Scoring Functions","Disulfid Bond Evaluation","Frame","Rotamer Graph","<code class=\"docutils literal\"><span class=\"pre\">sidechain</span></code> - Sidechain Modelling","Loading Rotamer Libraries","Rotamers","Rotamer Constructor","RotamerID","Rotamer Library","Subrotamer Optimization","Contributing","Documentation For Users"],titleterms:{"class":[21,22,26,27,29,31,36,39,40,41],"default":35,"function":[4,9,11,12,29,36,40,43,49],acid:[21,25,27],action:[0,1,4,5,7,8],actiontestcas:1,algorithm:28,all:[21,32,39],allatomclashscor:39,allatomenv:21,allatomenvposit:21,allatominteractionscor:39,allatomoverallscor:39,allatompackingscor:39,allatomposit:21,allatomscor:39,amino:[21,25,27],angl:27,api:1,argument:13,atom:[21,32,39],backbon:[32,40,41,52],backbonelist:22,backboneoverallscor:41,backbonescor:41,backbonescoreenv:40,base:[26,39,41],binari:37,block:[28,49],bond:44,branch:16,build:[0,2,5,7,35,49],can:51,candid:31,cbetascor:41,cbpackingscor:41,ccd:32,chain:26,changelog:3,check:33,clashscor:41,closer:34,cmake:[1,2,4,16],code:37,command:13,compound:[5,7],configur:52,construct:[40,50],constructor:50,contain:6,contribut:[8,54],conveni:40,cooler:34,core:12,creat:[1,25],data:[26,37],databas:26,defin:[26,27],definit:4,depend:[2,52],detect:33,develop:17,dihedr:27,directori:16,distinguish:21,disulfid:44,docker:5,document:[4,8,17,19,55],entri:52,environ:40,evalu:44,everyth:11,exampl:[31,37],execut:1,exisit:37,extend:29,featur:[8,26],file:[11,37],find:26,fit:32,forcefield:25,fragment:26,frame:[45,50],from:43,gap:[29,32],gener:[25,34],geometr:26,geometri:9,get:[18,51],git:16,graph:[10,46],group:49,handl:[21,23,29,31,35],have:1,hbondscor:41,header:37,helper:11,hook:16,how:[8,51],imag:[5,7],instal:2,integr:1,introduct:[4,11,13],issu:8,keep:31,kic:32,librari:[5,7,48,52],licens:[8,20],line:13,load:[24,48],lookup:25,loop:[22,23,25,31,32,34,42],loopcandid:31,mainten:4,make:[1,2],messag:11,minim:10,model:[0,18,28,30,31,33,35,47],modul:[4,8],mol:25,molprob:33,must:1,non:52,novo:[28,34],object:[24,34,45],optim:53,ost:[5,7,25],other:43,output:1,own:8,pairwis:40,pairwisescor:41,pars:13,parser:13,parti:8,particl:49,pipelin:[18,35],pm3argpars:13,portabl:37,posit:21,precomput:24,profil:14,promod3:[0,2,4,6,8,12,16,18,19,37],protein:30,psipredpredict:26,punch:33,quick:8,raw:35,reconstruct:36,reducedscor:41,refer:38,relax:32,releas:3,repres:22,residu:50,rigid:28,ring:33,rotam:[46,48,49,50,52],rotamerid:51,run:[1,2,5,7,18],runtim:14,sampl:27,sampler:[27,34],score:[31,40,42,43,49],scorer:[8,34,39,41],script:[1,5,7,8],scwrl3:43,scwrl4:49,sequenc:26,setcompoundschemlib:15,setup:16,share:[4,8,11],sidechain:[0,36,47],sidechainreconstructiondata:36,sidechainreconstructor:36,singular:7,smallest:49,ssagreementscor:41,stage:16,start:[8,18],step:35,structur:[16,26],subclass:1,subrotam:53,system:25,test:[1,4,8,11],test_act:1,third:8,torsion:27,torsionscor:41,track:31,triplet:27,type:52,unit:[1,4,8],user:55,write:8,your:8}})
\ No newline at end of file
diff --git a/doc/html/sidechain/disulfid.html b/doc/html/sidechain/disulfid.html
index 40a2bd96..9e47ea4c 100644
--- a/doc/html/sidechain/disulfid.html
+++ b/doc/html/sidechain/disulfid.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Disulfid Bond Evaluation &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Disulfid Bond Evaluation &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="sidechain - Sidechain Modelling" href="index.html" />
     <link rel="next" title="Loading Rotamer Libraries" href="loading.html" />
     <link rel="prev" title="Rotamer Graph" href="graph.html" />
@@ -77,10 +77,10 @@ rotamers to the result of the geometric expression.</p>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>rotamer_one</strong> (<a class="reference internal" href="rotamer.html#promod3.sidechain.RRMRotamer" title="promod3.sidechain.RRMRotamer"><code class="xref py py-class docutils literal"><span class="pre">RRMRotamer</span></code></a> , <a class="reference internal" href="rotamer.html#promod3.sidechain.FRMRotamer" title="promod3.sidechain.FRMRotamer"><code class="xref py py-class docutils literal"><span class="pre">FRMRotamer</span></code></a>) &#8211; First rotamer</li>
 <li><strong>rotamer_two</strong> (<a class="reference internal" href="rotamer.html#promod3.sidechain.RRMRotamer" title="promod3.sidechain.RRMRotamer"><code class="xref py py-class docutils literal"><span class="pre">RRMRotamer</span></code></a> , <a class="reference internal" href="rotamer.html#promod3.sidechain.FRMRotamer" title="promod3.sidechain.FRMRotamer"><code class="xref py py-class docutils literal"><span class="pre">FRMRotamer</span></code></a>) &#8211; Second rotamer</li>
-<li><strong>ca_pos_one</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; CA position of first rotamer</li>
-<li><strong>cb_pos_one</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; CB position of first rotamer</li>
-<li><strong>ca_pos_two</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; CA position of second rotamer</li>
-<li><strong>cb_pos_two</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; CB position of second rotamer</li>
+<li><strong>ca_pos_one</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; CA position of first rotamer</li>
+<li><strong>cb_pos_one</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; CB position of first rotamer</li>
+<li><strong>ca_pos_two</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; CA position of second rotamer</li>
+<li><strong>cb_pos_two</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; CB position of second rotamer</li>
 </ul>
 </td>
 </tr>
@@ -113,8 +113,8 @@ possible, the one with the optimal sum of scores gets estimated.</p>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>rotamer_groups</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of
 <a class="reference internal" href="rotamer.html#promod3.sidechain.FRMRotamerGroup" title="promod3.sidechain.FRMRotamerGroup"><code class="xref py py-class docutils literal"><span class="pre">FRMRotamerGroup</span></code></a>/<a class="reference internal" href="rotamer.html#promod3.sidechain.RRMRotamerGroup" title="promod3.sidechain.RRMRotamerGroup"><code class="xref py py-class docutils literal"><span class="pre">RRMRotamerGroup</span></code></a>) &#8211; Every group represents a cysteine</li>
-<li><strong>ca_positions</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; The CA positions of the according rotamers</li>
-<li><strong>cb_positions</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; The CB positions of the according rotamers</li>
+<li><strong>ca_positions</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; The CA positions of the according rotamers</li>
+<li><strong>cb_positions</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code> of <a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; The CB positions of the according rotamers</li>
 <li><strong>score_threshold</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; The score two rotamers must have to be considered
 as a disulfid bond</li>
 <li><strong>optimize_subrotamers</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; If set to true and the input consists of flexible
@@ -180,7 +180,7 @@ describe the optimal rotamers in the according rotamer groups.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/sidechain/frame.html b/doc/html/sidechain/frame.html
index f43158c0..a40d1175 100644
--- a/doc/html/sidechain/frame.html
+++ b/doc/html/sidechain/frame.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Frame &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Frame &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="sidechain - Sidechain Modelling" href="index.html" />
     <link rel="next" title="Rotamer Library" href="rotamer_lib.html" />
     <link rel="prev" title="Rotamers" href="rotamer.html" />
@@ -169,7 +169,7 @@ can be passed to rotamer groups for calculating frame energies.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/sidechain/graph.html b/doc/html/sidechain/graph.html
index c0032b48..e843e0a6 100644
--- a/doc/html/sidechain/graph.html
+++ b/doc/html/sidechain/graph.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Rotamer Graph &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Rotamer Graph &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="sidechain - Sidechain Modelling" href="index.html" />
     <link rel="next" title="Disulfid Bond Evaluation" href="disulfid.html" />
     <link rel="prev" title="Rotamer Constructor" href="rotamer_constructor.html" />
@@ -120,7 +120,7 @@ conformations for every amino acid position.</td>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/sidechain/index.html b/doc/html/sidechain/index.html
index e4fe610f..1f48d713 100644
--- a/doc/html/sidechain/index.html
+++ b/doc/html/sidechain/index.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>sidechain - Sidechain Modelling &mdash; ProMod3 1.3.0 documentation</title>
+    <title>sidechain - Sidechain Modelling &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="Documentation For Users" href="../users.html" />
     <link rel="next" title="RotamerID" href="rotamer_id.html" />
     <link rel="prev" title="Modelling Algorithms" href="../modelling/algorithms.html" />
@@ -63,7 +63,7 @@ pipelines available in the modelling module.</p>
 <span class="n">library</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">LoadBBDepLib</span><span class="p">()</span>
 <span class="c1"># we need a rotamer constructor to create any rotamers or </span>
 <span class="c1"># frame residues </span>
-<span class="n">rot_constructor</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">SCWRLRotamerConstructor</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+<span class="n">rot_constructor</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">SCWRL4RotamerConstructor</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
 
 <span class="c1"># create new entity from protein only containing the amino acids</span>
 <span class="n">prot</span> <span class="o">=</span> <span class="n">mol</span><span class="o">.</span><span class="n">CreateEntityFromView</span><span class="p">(</span><span class="n">prot</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s2">&quot;peptide=true&quot;</span><span class="p">),</span> <span class="kc">True</span><span class="p">)</span>
@@ -93,7 +93,9 @@ pipelines available in the modelling module.</p>
 <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">r</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">):</span>
     <span class="n">frame_residue</span> <span class="o">=</span> <span class="n">rot_constructor</span><span class="o">.</span><span class="n">ConstructBackboneFrameResidue</span><span class="p">(</span>
                         <span class="n">r</span><span class="p">,</span> <span class="n">rotamer_ids</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">i</span><span class="p">,</span>
-                        <span class="n">torsion_angles</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">,</span>
+                        <span class="n">torsion_angles</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span>
+                        <span class="n">torsion_angles</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span> 
+                        <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">,</span>
                         <span class="n">i</span> <span class="o">==</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">rotamer_ids</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span>
     <span class="n">frame_residues</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">frame_residue</span><span class="p">)</span>
 
@@ -110,7 +112,8 @@ pipelines available in the modelling module.</p>
 
     <span class="n">rot_group</span> <span class="o">=</span> <span class="n">rot_constructor</span><span class="o">.</span><span class="n">ConstructFRMRotamerGroup</span><span class="p">(</span>
                     <span class="n">r</span><span class="p">,</span> <span class="n">rotamer_ids</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">i</span><span class="p">,</span> <span class="n">library</span><span class="p">,</span>
-                    <span class="n">torsion_angles</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">torsion_angles</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span>
+                    <span class="n">torsion_angles</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">torsion_angles</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span>
+                    <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">,</span> <span class="n">i</span> <span class="o">==</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">rotamer_ids</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="mf">0.98</span><span class="p">)</span>
 
     <span class="c1"># calculate pairwise energies towards the rigid frame</span>
     <span class="c1"># the values will be stored and used by the solving algorithm</span>
@@ -149,6 +152,7 @@ pipelines available in the modelling module.</p>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="rotamer.html">Rotamers</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="rotamer.html#the-smallest-building-block-the-particle">The Smallest Building Block - The Particle</a></li>
+<li class="toctree-l2"><a class="reference internal" href="rotamer.html#the-scwrl4-scoring-function">The SCWRL4 scoring function</a></li>
 <li class="toctree-l2"><a class="reference internal" href="rotamer.html#id1">Rotamers</a></li>
 <li class="toctree-l2"><a class="reference internal" href="rotamer.html#rotamer-groups">Rotamer Groups</a></li>
 </ul>
@@ -214,7 +218,7 @@ pipelines available in the modelling module.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/sidechain/loading.html b/doc/html/sidechain/loading.html
index e45d778f..1e7bc185 100644
--- a/doc/html/sidechain/loading.html
+++ b/doc/html/sidechain/loading.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Loading Rotamer Libraries &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Loading Rotamer Libraries &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="sidechain - Sidechain Modelling" href="index.html" />
     <link rel="next" title="Subrotamer Optimization" href="subrotamer_optimizer.html" />
     <link rel="prev" title="Disulfid Bond Evaluation" href="disulfid.html" />
@@ -159,7 +159,7 @@ incomplete if the last problem gets triggered.</td>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/sidechain/rotamer.html b/doc/html/sidechain/rotamer.html
index 05a35906..e91619bd 100644
--- a/doc/html/sidechain/rotamer.html
+++ b/doc/html/sidechain/rotamer.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Rotamers &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Rotamers &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="sidechain - Sidechain Modelling" href="index.html" />
     <link rel="next" title="Frame" href="frame.html" />
     <link rel="prev" title="RotamerID" href="rotamer_id.html" />
@@ -53,175 +53,162 @@ Pairwise interactions between particles give raise to pairwise energies between
 rotamers. Nevertheless, the energy calculation itself happens on the level
 of RotamerGroups and is mostly hidden away in the construction of the
 the <a class="reference internal" href="graph.html#promod3.sidechain.RotamerGraph" title="promod3.sidechain.RotamerGraph"><code class="xref py py-class docutils literal"><span class="pre">RotamerGraph</span></code></a>. If you&#8217;re too lazy to build up your rotamers
-by hand, you might be interested in the <a class="reference internal" href="rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor" title="promod3.sidechain.SCWRLRotamerConstructor"><code class="xref py py-class docutils literal"><span class="pre">SCWRLRotamerConstructor</span></code></a>.</p>
+by hand, you might be interested in the <a class="reference internal" href="rotamer_constructor.html#promod3.sidechain.RotamerConstructor" title="promod3.sidechain.RotamerConstructor"><code class="xref py py-class docutils literal"><span class="pre">RotamerConstructor</span></code></a>.</p>
 <div class="section" id="the-smallest-building-block-the-particle">
 <h2>The Smallest Building Block - The Particle<a class="headerlink" href="#the-smallest-building-block-the-particle" title="Permalink to this headline">¶</a></h2>
-<p>Particles give raise to more complex objects such as rotamers and frame residues.
-They are the basis for calculating interaction energies based on a Lennard-Jones
-like term and an approximation of an hbond energy term.
-The Lennard-Jones term gets mainly controlled by the type of the particle, that
-has to be defined at initialization.</p>
+<p>Particles give raise to more complex objects such as rotamers and frame
+residues. They contain all data required to calculate pairwise energies.
+For every energy function available in ProMod3, there&#8217;s a particle creation
+function.</p>
 <dl class="class">
-<dt id="promod3.sidechain.SidechainParticle">
-<em class="property">class </em><code class="descclassname">promod3.sidechain.</code><code class="descname">SidechainParticle</code><a class="headerlink" href="#promod3.sidechain.SidechainParticle" title="Permalink to this definition">¶</a></dt>
-<dd><p>Enumerates the types of particle. Possible values:</p>
+<dt id="promod3.sidechain.PScoringFunction">
+<em class="property">class </em><code class="descclassname">promod3.sidechain.</code><code class="descname">PScoringFunction</code><a class="headerlink" href="#promod3.sidechain.PScoringFunction" title="Permalink to this definition">¶</a></dt>
+<dd><p>The available scoring functions between <a class="reference internal" href="#promod3.sidechain.Particle" title="promod3.sidechain.Particle"><code class="xref py py-class docutils literal"><span class="pre">Particle</span></code></a> objects</p>
 <ul class="simple">
-<li>HParticle   - represents hydrogen</li>
-<li>CParticle   - default representation of a carbon</li>
-<li>CH1Particle - represents carbon bound to 1 hydrogen</li>
-<li>CH2Particle - represents carbon bound to 2 hydrogen</li>
-<li>CH3Particle - represents carbon bound to 3 hydrogen</li>
-<li>NParticle   - represents nitrogen</li>
-<li>OParticle   - default representation of oxygen</li>
-<li>OCParticle  - represents carbonyl-oxygen for ASP/GLU</li>
-<li>SParticle   - represents sulfur</li>
+<li>SCWRL4</li>
 </ul>
 </dd></dl>
 
 <dl class="class">
 <dt id="promod3.sidechain.Particle">
-<em class="property">class </em><code class="descclassname">promod3.sidechain.</code><code class="descname">Particle</code><span class="sig-paren">(</span><em>type</em>, <em>pos</em>, <em>charge</em>, <em>name</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.Particle" title="Permalink to this definition">¶</a></dt>
-<dd><table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>type</strong> (<a class="reference internal" href="#promod3.sidechain.SidechainParticle" title="promod3.sidechain.SidechainParticle"><code class="xref py py-class docutils literal"><span class="pre">SidechainParticle</span></code></a>) &#8211; Type of particle</li>
-<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Positions of particle</li>
-<li><strong>charge</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Charge of particle, will be used in case H-Bonds</li>
-<li><strong>name</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; Name of particle. This name will be given to an actual
-<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.AtomHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.AtomHandle</span></code></a> if a rotamer gets applied
-to a <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a></li>
-</ul>
-</td>
-</tr>
-</tbody>
-</table>
-<dl class="method">
-<dt id="promod3.sidechain.Particle.PairwiseEnergy">
-<code class="descname">PairwiseEnergy</code><span class="sig-paren">(</span><em>other</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.Particle.PairwiseEnergy" title="Permalink to this definition">¶</a></dt>
-<dd><p>Calculates the interaction energy between two particles.</p>
+<em class="property">class </em><code class="descclassname">promod3.sidechain.</code><code class="descname">Particle</code><a class="headerlink" href="#promod3.sidechain.Particle" title="Permalink to this definition">¶</a></dt>
+<dd><p>The particle class. There&#8217;s no constructor. You can either use the
+<a class="reference internal" href="rotamer_constructor.html#promod3.sidechain.RotamerConstructor" title="promod3.sidechain.RotamerConstructor"><code class="xref py py-class docutils literal"><span class="pre">RotamerConstructor</span></code></a> to create full <code class="xref py py-class docutils literal"><span class="pre">RotamerGroup</span></code> objects
+with all underlying particles or the energy function specific creation
+functions.</p>
+<dl class="method">
+<dt id="promod3.sidechain.Particle.PairwiseScore">
+<code class="descname">PairwiseScore</code><span class="sig-paren">(</span><em>other_particle</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.Particle.PairwiseScore" title="Permalink to this definition">¶</a></dt>
+<dd><p>Calculates score between the two particles</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>other</strong> (<a class="reference internal" href="#promod3.sidechain.Particle" title="promod3.sidechain.Particle"><code class="xref py py-class docutils literal"><span class="pre">Particle</span></code></a>) &#8211; Interaction partner</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>other_particle</strong> (<a class="reference internal" href="#promod3.sidechain.Particle" title="promod3.sidechain.Particle"><code class="xref py py-class docutils literal"><span class="pre">Particle</span></code></a>) &#8211; The interacting particle</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">the interaction energy</td>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">The score</td>
 </tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.Particle.GetPos">
-<code class="descname">GetPos</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.Particle.GetPos" title="Permalink to this definition">¶</a></dt>
-<dd><table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">The Particle position</td>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a></td>
+</tr>
+<tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/exceptions.html#exceptions.RuntimeError" title="(in Python v2.7)"><code class="xref py py-exc docutils literal"><span class="pre">RuntimeError</span></code></a> if the scoring function
+parametrization of the two particles is inconsistent</td>
 </tr>
 </tbody>
 </table>
 </dd></dl>
 
 <dl class="method">
-<dt id="promod3.sidechain.Particle.GetCharge">
-<code class="descname">GetCharge</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.Particle.GetCharge" title="Permalink to this definition">¶</a></dt>
+<dt id="promod3.sidechain.Particle.GetName">
+<code class="descname">GetName</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.Particle.GetName" title="Permalink to this definition">¶</a></dt>
 <dd><table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Charge of particle used for HBond term</td>
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">The name of the particle, which corresponds to the
+atom name</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a></td>
 </tr>
 </tbody>
 </table>
 </dd></dl>
 
 <dl class="method">
-<dt id="promod3.sidechain.Particle.GetParticleType">
-<code class="descname">GetParticleType</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.Particle.GetParticleType" title="Permalink to this definition">¶</a></dt>
+<dt id="promod3.sidechain.Particle.GetCollisionDistance">
+<code class="descname">GetCollisionDistance</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.Particle.GetCollisionDistance" title="Permalink to this definition">¶</a></dt>
 <dd><table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Internal type of particle</td>
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">The &#8220;collision distance&#8221; all pairs of particles with
+their distance below the sum of their collision
+distances are considered as interacting and thus
+evaluated by the underlying scoring function.</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a></td>
 </tr>
 </tbody>
 </table>
 </dd></dl>
 
 <dl class="method">
-<dt id="promod3.sidechain.Particle.GetName">
-<code class="descname">GetName</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.Particle.GetName" title="Permalink to this definition">¶</a></dt>
+<dt id="promod3.sidechain.Particle.GetPos">
+<code class="descname">GetPos</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.Particle.GetPos" title="Permalink to this definition">¶</a></dt>
 <dd><table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Name of particle</td>
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">The position of the particle</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a></td>
 </tr>
 </tbody>
 </table>
 </dd></dl>
 
 <dl class="method">
-<dt id="promod3.sidechain.Particle.IsHBondDonor">
-<code class="descname">IsHBondDonor</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.Particle.IsHBondDonor" title="Permalink to this definition">¶</a></dt>
+<dt id="promod3.sidechain.Particle.GetScoringFunction">
+<code class="descname">GetScoringFunction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.Particle.GetScoringFunction" title="Permalink to this definition">¶</a></dt>
 <dd><table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Whether particle has defined polar direction</td>
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">The underlying scoring function</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#promod3.sidechain.PScoringFunction" title="promod3.sidechain.PScoringFunction"><code class="xref py py-class docutils literal"><span class="pre">PScoringFunction</span></code></a></td>
 </tr>
 </tbody>
 </table>
 </dd></dl>
 
-<dl class="method">
-<dt id="promod3.sidechain.Particle.IsHBondAcceptor">
-<code class="descname">IsHBondAcceptor</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.Particle.IsHBondAcceptor" title="Permalink to this definition">¶</a></dt>
-<dd><table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Whether particle has defined lone pairs</td>
-</tr>
-</tbody>
-</table>
 </dd></dl>
 
-<dl class="method">
-<dt id="promod3.sidechain.Particle.AddLonePair">
-<code class="descname">AddLonePair</code><span class="sig-paren">(</span><em>lone_pair</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.Particle.AddLonePair" title="Permalink to this definition">¶</a></dt>
-<dd><p>Adds lone pair, that gets evaluated in the HBond term.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>lone_pair</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Lone pair direction</td>
-</tr>
-</tbody>
-</table>
+</div>
+<div class="section" id="the-scwrl4-scoring-function">
+<h2>The SCWRL4 scoring function<a class="headerlink" href="#the-scwrl4-scoring-function" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="promod3.sidechain.SCWRL4ParticleType">
+<em class="property">class </em><code class="descclassname">promod3.sidechain.</code><code class="descname">SCWRL4ParticleType</code><a class="headerlink" href="#promod3.sidechain.SCWRL4ParticleType" title="Permalink to this definition">¶</a></dt>
+<dd><p>The SCWRL4 energy function differentiates between following particle types</p>
+<ul class="simple">
+<li>HParticle   - represents hydrogen</li>
+<li>CParticle   - default representation of a carbon</li>
+<li>CH1Particle - represents carbon bound to 1 hydrogen</li>
+<li>CH2Particle - represents carbon bound to 2 hydrogen</li>
+<li>CH3Particle - represents carbon bound to 3 hydrogen</li>
+<li>NParticle   - represents nitrogen</li>
+<li>OParticle   - default representation of oxygen</li>
+<li>OCParticle  - represents carbonyl-oxygen for ASP/GLU</li>
+<li>SParticle   - represents sulfur</li>
+</ul>
 </dd></dl>
 
 <dl class="method">
-<dt id="promod3.sidechain.Particle.SetPolarDirection">
-<code class="descname">SetPolarDirection</code><span class="sig-paren">(</span><em>polar_direction</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.Particle.SetPolarDirection" title="Permalink to this definition">¶</a></dt>
-<dd><p>Sets the polar direction of particle. In case of backbone
-hydrogen, this would be the direction of backbone-N to backbone-H.</p>
+<dt id="promod3.sidechain.CreateSCWRL4Particle">
+<code class="descclassname">promod3.sidechain.</code><code class="descname">CreateSCWRL4Particle</code><span class="sig-paren">(</span><em>name</em>, <em>particle_type</em>, <em>pos</em><span class="optional">[</span>, <em>charge</em>, <em>lone_pairs=None</em>, <em>polar_direction=None</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.CreateSCWRL4Particle" title="Permalink to this definition">¶</a></dt>
+<dd><p>Creates and returns a <a class="reference internal" href="#promod3.sidechain.Particle" title="promod3.sidechain.Particle"><code class="xref py py-class docutils literal"><span class="pre">Particle</span></code></a> that can evaluate the SCWRL4 scoring
+function</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>polar_direction</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Polar direction of particle</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>name</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; The name of the particle</li>
+<li><strong>particle_type</strong> (<a class="reference internal" href="#promod3.sidechain.SCWRL4ParticleType" title="promod3.sidechain.SCWRL4ParticleType"><code class="xref py py-class docutils literal"><span class="pre">SCWRL4ParticleType</span></code></a>) &#8211; The type of the particle</li>
+<li><strong>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; The position of the particle</li>
+<li><strong>charge</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; The charge of the particle, relevant for the hydrogen
+bond term</li>
+<li><strong>lone_pairs</strong> (<code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3List</span></code>) &#8211; Direction of all possible lone pairs of the particle,
+relevant for the hydrogen bond term</li>
+<li><strong>polar_direction</strong> (<a class="reference external" href="https://www.openstructure.org/docs/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; The polar direction of the particle,
+relevant for the hdrogen bond term</li>
+</ul>
+</td>
 </tr>
 </tbody>
 </table>
 </dd></dl>
 
-</dd></dl>
-
 </div>
 <div class="section" id="id1">
 <h2>Rotamers<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
@@ -291,7 +278,7 @@ in this process.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue to be reconstructed</li>
+<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue to be reconstructed</li>
 <li><strong>consider_hydrogens</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Flag, whether polar hydrogens should be added to
 <strong>res</strong></li>
 <li><strong>new_res_name</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; New name of <strong>res</strong>. Nothing happens in case of the
@@ -567,7 +554,7 @@ No atoms are removed from <strong>res</strong> in this process.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue to be reconstructed</li>
+<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue to be reconstructed</li>
 <li><strong>consider_hydrogens</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Flag, whether polar hydrogens should be added to
 the sidechain</li>
 <li><strong>new_res_name</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; New name of residue. Nothing happens in case of the
@@ -967,7 +954,7 @@ particles of the same residue.</li>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Rotamer index</li>
-<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue to be reconstructed</li>
+<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue to be reconstructed</li>
 <li><strong>consider_hydrogens</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Flag, whether polar hydrogens should be added to
 the sidechain</li>
 <li><strong>new_res_name</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; New name of residue. Nothing happens in case of the
@@ -1101,7 +1088,7 @@ particles of the same residue.</li>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Rotamer index</li>
-<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue to be reconstructed</li>
+<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue to be reconstructed</li>
 <li><strong>consider_hydrogens</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Flag, whether polar hydrogens should be added to
 the sidechain</li>
 <li><strong>new_res_name</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; New name of residue. Nothing happens in case of the
@@ -1185,6 +1172,7 @@ rotamers with <em>self_energy</em> &gt; <em>l_e</em> + <em>thresh</em></p>
   <ul>
 <li><a class="reference internal" href="#">Rotamers</a><ul>
 <li><a class="reference internal" href="#the-smallest-building-block-the-particle">The Smallest Building Block - The Particle</a></li>
+<li><a class="reference internal" href="#the-scwrl4-scoring-function">The SCWRL4 scoring function</a></li>
 <li><a class="reference internal" href="#id1">Rotamers</a></li>
 <li><a class="reference internal" href="#rotamer-groups">Rotamer Groups</a></li>
 </ul>
@@ -1225,7 +1213,7 @@ rotamers with <em>self_energy</em> &gt; <em>l_e</em> + <em>thresh</em></p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/sidechain/rotamer_constructor.html b/doc/html/sidechain/rotamer_constructor.html
index f787eed4..992881a6 100644
--- a/doc/html/sidechain/rotamer_constructor.html
+++ b/doc/html/sidechain/rotamer_constructor.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Rotamer Constructor &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Rotamer Constructor &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="sidechain - Sidechain Modelling" href="index.html" />
     <link rel="next" title="Rotamer Graph" href="graph.html" />
     <link rel="prev" title="Rotamer Library" href="rotamer_lib.html" />
@@ -45,70 +45,41 @@
   <div class="section" id="rotamer-constructor">
 <h1>Rotamer Constructor<a class="headerlink" href="#rotamer-constructor" title="Permalink to this headline">¶</a></h1>
 <p>Instead of creating rotamers by yourself, you can simply use the convenient
-functionality provided by ProMod3</p>
+functionality provided by ProMod3.</p>
 <div class="section" id="constructing-rotamers-and-frame-residues">
 <h2>Constructing Rotamers and Frame Residues<a class="headerlink" href="#constructing-rotamers-and-frame-residues" title="Permalink to this headline">¶</a></h2>
 <dl class="class">
-<dt id="promod3.sidechain.SCWRLRotamerConstructor">
-<em class="property">class </em><code class="descclassname">promod3.sidechain.</code><code class="descname">SCWRLRotamerConstructor</code><span class="sig-paren">(</span><em>cb_in_sidechain</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.SCWRLRotamerConstructor" title="Permalink to this definition">¶</a></dt>
-<dd><p>Constructing rotamers and frame residues that are parametrized according to
-the SCWRL4 method. They contain all heavy atoms, but also the
-polar hydrogens.
-In case of the <a class="reference internal" href="frame.html#promod3.sidechain.FrameResidue" title="promod3.sidechain.FrameResidue"><code class="xref py py-class docutils literal"><span class="pre">FrameResidue</span></code></a> construction, the
-constructor distinguishes between backbone and sidechain frame residues.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>cb_in_sidechain</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; If set to true, all constructed rotamers will contain
-the cb atom. This flag also affects the construction
-of frame residues and controls whether the cb atom
-shows up in the backbone frame residues or sidechain
-frame residues.
-This is useful when you want to represent ALA or
-GLY with actual rotamers, but be aware of increased
-runtime. This flag can be set to False for most
-modeling applications and you just don&#8217;t generate
-any rotamers for ALA and GLY.</td>
-</tr>
-</tbody>
-</table>
+<dt id="promod3.sidechain.RotamerConstructor">
+<em class="property">class </em><code class="descclassname">promod3.sidechain.</code><code class="descname">RotamerConstructor</code><a class="headerlink" href="#promod3.sidechain.RotamerConstructor" title="Permalink to this definition">¶</a></dt>
+<dd><p>Abstract base class that cannot be initialized from Python. It builds
+an interface implemented by energy function specific constructors
+(e.g. <a class="reference internal" href="#promod3.sidechain.SCWRL4RotamerConstructor" title="promod3.sidechain.SCWRL4RotamerConstructor"><code class="xref py py-class docutils literal"><span class="pre">SCWRL4RotamerConstructor</span></code></a>).</p>
 <dl class="method">
-<dt id="promod3.sidechain.SCWRLRotamerConstructor.ConstructRRMRotamerGroup">
-<code class="descname">ConstructRRMRotamerGroup</code><span class="sig-paren">(</span><em>res</em>, <em>id</em>, <em>residue_index</em>, <em>rot_lib</em><span class="optional">[</span>, <em>probability_cutoff = 0.98</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.SCWRLRotamerConstructor.ConstructRRMRotamerGroup" title="Permalink to this definition">¶</a></dt>
+<dt id="promod3.sidechain.RotamerConstructor.ConstructRRMRotamerGroup">
+<code class="descname">ConstructRRMRotamerGroup</code><span class="sig-paren">(</span><em>res</em>, <em>id</em>, <em>residue_index</em>, <em>rot_lib</em><span class="optional">[</span>, <em>phi = -1.0472</em>, <em>psi = -0.7854</em>, <em>n_ter = False</em>, <em>c_ter = False</em>, <em>probability_cutoff = 0.98</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerConstructor.ConstructRRMRotamerGroup" title="Permalink to this definition">¶</a></dt>
 <dd></dd></dl>
 
 <dl class="method">
 <dt>
-<code class="descname">ConstructRRMRotamerGroup</code><span class="sig-paren">(</span><em>all_atom_pos</em>, <em>aa_res_idx</em>, <em>id</em>, <em>residue_index</em>, <em>rot_lib</em><span class="optional">[</span>, <em>probability_cutoff = 0.98</em><span class="optional">]</span><span class="sig-paren">)</span></dt>
+<code class="descname">ConstructRRMRotamerGroup</code><span class="sig-paren">(</span><em>all_atom_pos</em>, <em>aa_res_idx</em>, <em>id</em>, <em>residue_index</em>, <em>rot_lib</em><span class="optional">[</span>, <em>phi = -1.0472</em>, <em>psi = -0.7854</em>, <em>n_ter = False</em>, <em>c_ter = False</em>, <em>probability_cutoff = 0.98</em><span class="optional">]</span><span class="sig-paren">)</span></dt>
 <dd></dd></dl>
 
 <dl class="method">
 <dt>
-<code class="descname">ConstructRRMRotamerGroup</code><span class="sig-paren">(</span><em>res</em>, <em>id</em>, <em>residue_index</em>, <em>rot_lib</em><span class="optional">[</span>, <em>phi = -1.0472</em>, <em>psi = -0.7854</em>, <em>probability_cutoff = 0.98</em><span class="optional">]</span><span class="sig-paren">)</span></dt>
+<code class="descname">ConstructRRMRotamerGroup</code><span class="sig-paren">(</span><em>res</em>, <em>id</em>, <em>residue_index</em>, <em>rot_lib_entries</em><span class="optional">[</span>, <em>phi = -1.0472</em>, <em>psi = -0.7854</em>, <em>n_ter = False</em>, <em>c_ter = False</em>, <em>probability_cutoff = 0.98</em><span class="optional">]</span><span class="sig-paren">)</span></dt>
 <dd></dd></dl>
 
 <dl class="method">
 <dt>
-<code class="descname">ConstructRRMRotamerGroup</code><span class="sig-paren">(</span><em>all_atom_pos</em>, <em>aa_res_idx</em>, <em>id</em>, <em>residue_index</em>, <em>rot_lib</em><span class="optional">[</span>, <em>phi = -1.0472</em>, <em>psi = -0.7854</em>, <em>probability_cutoff = 0.98</em><span class="optional">]</span><span class="sig-paren">)</span></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt>
-<code class="descname">ConstructRRMRotamerGroup</code><span class="sig-paren">(</span><em>res</em>, <em>id</em>, <em>residue_index</em>, <em>rot_lib_entries</em><span class="optional">[</span>, <em>probability_cutoff = 0.98</em><span class="optional">]</span><span class="sig-paren">)</span></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt>
-<code class="descname">ConstructRRMRotamerGroup</code><span class="sig-paren">(</span><em>all_atom_pos</em>, <em>aa_res_idx</em>, <em>id</em>, <em>residue_index</em>, <em>rot_lib_entries</em><span class="optional">[</span>, <em>probability_cutoff = 0.98</em><span class="optional">]</span><span class="sig-paren">)</span></dt>
+<code class="descname">ConstructRRMRotamerGroup</code><span class="sig-paren">(</span><em>all_atom_pos</em>, <em>aa_res_idx</em>, <em>id</em>, <em>residue_index</em>, <em>rot_lib_entries</em><span class="optional">[</span>, <em>phi = -1.0472</em>, <em>psi = -0.7854</em>, <em>n_ter = False</em>, <em>c_ter = False</em>, <em>probability_cutoff = 0.98</em><span class="optional">]</span><span class="sig-paren">)</span></dt>
 <dd><p>All functions are also avaible for their flexible rotamer model counterpart.
-=&gt;ConstructFRMRotamerGroup(...) with exactly the same parameters.</p>
+=&gt;ConstructFRMRotamerGroup(...) with the same parameters.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; To extract the required backbone atoms</li>
+<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; To extract the required backbone atoms</li>
 <li><strong>all_atom_pos</strong> (<a class="reference internal" href="../loop/all_atom.html#promod3.loop.AllAtomPositions" title="promod3.loop.AllAtomPositions"><code class="xref py py-class docutils literal"><span class="pre">promod3.loop.AllAtomPositions</span></code></a>) &#8211; To extract the required backbone atoms</li>
 <li><strong>aa_res_idx</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Index of residue in <strong>all_atom_pos</strong> from which to
 extract the required backbone atoms</li>
@@ -120,10 +91,10 @@ representing the own backbone...</li>
 <li><strong>rot_lib</strong> (<a class="reference internal" href="rotamer_lib.html#promod3.sidechain.RotamerLib" title="promod3.sidechain.RotamerLib"><code class="xref py py-class docutils literal"><span class="pre">RotamerLib</span></code></a> / <a class="reference internal" href="rotamer_lib.html#promod3.sidechain.BBDepRotamerLib" title="promod3.sidechain.BBDepRotamerLib"><code class="xref py py-class docutils literal"><span class="pre">BBDepRotamerLib</span></code></a>) &#8211; To search for rotamers</li>
 <li><strong>rot_lib_entries</strong> (<code class="xref py py-class docutils literal"><span class="pre">list</span></code>) &#8211; <a class="reference internal" href="rotamer_lib.html#promod3.sidechain.RotamerLibEntry" title="promod3.sidechain.RotamerLibEntry"><code class="xref py py-class docutils literal"><span class="pre">RotamerLibEntry</span></code></a> objects to circumvent the
 direct use of a rotamer library</li>
-<li><strong>phi</strong> &#8211; Phi dihedral angle used to search for rotamers if a
-<a class="reference internal" href="rotamer_lib.html#promod3.sidechain.BBDepRotamerLib" title="promod3.sidechain.BBDepRotamerLib"><code class="xref py py-class docutils literal"><span class="pre">BBDepRotamerLib</span></code></a> is given as input</li>
-<li><strong>psi</strong> &#8211; Psi dihedral angle used to search for rotamers if a
-<a class="reference internal" href="rotamer_lib.html#promod3.sidechain.BBDepRotamerLib" title="promod3.sidechain.BBDepRotamerLib"><code class="xref py py-class docutils literal"><span class="pre">BBDepRotamerLib</span></code></a> is given as input</li>
+<li><strong>phi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Phi dihedral angle</li>
+<li><strong>psi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; Psi dihedral angle</li>
+<li><strong>n_ter</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Whether the residue is n-terminal</li>
+<li><strong>c_ter</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Whether the residue is c-terminal</li>
 <li><strong>probability_cutoff</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; For some rotamers, there might be many low
 probability entries in the library.
 The function adds single rotamers to the group until
@@ -133,8 +104,7 @@ larger or equal <strong>probability_cutoff</strong>.</li>
 </td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">The rotamer group containing all constructed rotamers
-with internal energies assigned based on the
-probabilities extracted from the rotamer library.</p>
+with internal energies assigned.</p>
 </td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first"><a class="reference internal" href="rotamer.html#promod3.sidechain.RRMRotamerGroup" title="promod3.sidechain.RRMRotamerGroup"><code class="xref py py-class docutils literal"><span class="pre">RRMRotamerGroup</span></code></a></p>
@@ -150,25 +120,21 @@ positions are set in <strong>all_atom_pos</strong></p>
 </dd></dl>
 
 <dl class="method">
-<dt id="promod3.sidechain.SCWRLRotamerConstructor.ConstructBackboneFrameResidue">
-<code class="descname">ConstructBackboneFrameResidue</code><span class="sig-paren">(</span><em>res</em>, <em>id</em>, <em>residue_index</em>, <em>Real phi</em><span class="optional">[</span>, <em>n_ter = False</em>, <em>c_ter = False</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.SCWRLRotamerConstructor.ConstructBackboneFrameResidue" title="Permalink to this definition">¶</a></dt>
+<dt id="promod3.sidechain.RotamerConstructor.ConstructBackboneFrameResidue">
+<code class="descname">ConstructBackboneFrameResidue</code><span class="sig-paren">(</span><em>res</em>, <em>id</em>, <em>residue_index</em><span class="optional">[</span>, <em>phi = -1.0472</em>, <em>psi = -0.7854</em>, <em>n_ter = False</em>, <em>c_ter = False</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerConstructor.ConstructBackboneFrameResidue" title="Permalink to this definition">¶</a></dt>
 <dd></dd></dl>
 
 <dl class="method">
 <dt>
-<code class="descname">ConstructBackboneFrameResidue</code><span class="sig-paren">(</span><em>all_atom_pos</em>, <em>aa_res_idx</em>, <em>id</em>, <em>residue_index</em>, <em>Real phi</em><span class="optional">[</span>, <em>n_ter = False</em>, <em>c_ter = False</em><span class="optional">]</span><span class="sig-paren">)</span></dt>
-<dd><p>Constructs backbone frame residues for amino acid residues based on the
-parametrizations of SCWRL4. In case of <strong>n_ter</strong>, there are additional
-hydrogens added at the nitrogen to represent a proper n-terminus. The same
-is true for <strong>c_ter</strong>, an additional oxygen is built instead. In any case,
-a single hydrogen is added to the nitrogen (except proline), this is
-why the phi angle of the residue is required as an input.</p>
+<code class="descname">ConstructBackboneFrameResidue</code><span class="sig-paren">(</span><em>all_atom_pos</em>, <em>aa_res_idx</em>, <em>id</em>, <em>residue_index</em><span class="optional">[</span>, <em>phi = -1.0472</em>, <em>psi = -0.7854                                         n_ter = False</em>, <em>c_ter = False</em><span class="optional">]</span><span class="sig-paren">)</span></dt>
+<dd><p>Constructs frame residues only containing backbone atoms (the ones that
+don&#8217;t show up in a rotamer).</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue from which to extract the backbone positions</li>
+<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue from which to extract the backbone positions</li>
 <li><strong>all_atom_pos</strong> (<a class="reference internal" href="../loop/all_atom.html#promod3.loop.AllAtomPositions" title="promod3.loop.AllAtomPositions"><code class="xref py py-class docutils literal"><span class="pre">promod3.loop.AllAtomPositions</span></code></a>) &#8211; To extract the backbone positions</li>
 <li><strong>aa_res_idx</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Index of residue in <strong>all_atom_pos</strong> from which to
 extract the backbone positions</li>
@@ -177,12 +143,10 @@ extract the backbone positions</li>
 <a class="reference internal" href="frame.html#promod3.sidechain.Frame" title="promod3.sidechain.Frame"><code class="xref py py-class docutils literal"><span class="pre">Frame</span></code></a> you don&#8217;t want to calculate a pairwise
 energy of the sidechain particles towards particles
 representing the own backbone...</li>
-<li><strong>phi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; The dihedral angle of the current residue, required to
-construct the polar nitrogen hydrogen</li>
-<li><strong>n_ter</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Whether to add additional hydrogens at the nitrogen
-to represent a proper n-terminus</li>
-<li><strong>c_ter</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Whether to add an additional oxygen at the carbon to
-represent a proper c-terminus</li>
+<li><strong>phi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; The dihedral angle of the current residue</li>
+<li><strong>psi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; The dihedral angle of the current residue</li>
+<li><strong>n_ter</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Whether the residue is n-terminal</li>
+<li><strong>c_ter</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Whether the residue is c-terminal</li>
 </ul>
 </td>
 </tr>
@@ -199,27 +163,33 @@ positions are set in <strong>all_atom_pos</strong>.</p>
 </dd></dl>
 
 <dl class="method">
-<dt id="promod3.sidechain.SCWRLRotamerConstructor.ConstructSidechainFrameResidue">
-<code class="descname">ConstructSidechainFrameResidue</code><span class="sig-paren">(</span><em>res</em>, <em>id</em>, <em>residue_index</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.SCWRLRotamerConstructor.ConstructSidechainFrameResidue" title="Permalink to this definition">¶</a></dt>
+<dt id="promod3.sidechain.RotamerConstructor.ConstructSidechainFrameResidue">
+<code class="descname">ConstructSidechainFrameResidue</code><span class="sig-paren">(</span><em>res</em>, <em>id</em>, <em>residue_index</em><span class="optional">[</span>, <em>phi = -1.0472</em>, <em>psi = -0.7854</em>, <em>n_ter = False</em>, <em>c_ter = False</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerConstructor.ConstructSidechainFrameResidue" title="Permalink to this definition">¶</a></dt>
 <dd></dd></dl>
 
 <dl class="method">
 <dt>
-<code class="descname">ConstructSidechainFrameResidue</code><span class="sig-paren">(</span><em>all_atom</em>, <em>aa_res_idx</em>, <em>id</em>, <em>residue_index</em><span class="sig-paren">)</span></dt>
-<dd><p>Extracts all required positions from the input and generates a sidechain
-frame residue. Additionally to the heavy atoms, the function also produces
-particles for all polar hydrogens.</p>
+<code class="descname">ConstructSidechainFrameResidue</code><span class="sig-paren">(</span><em>all_atom_pos</em>, <em>aa_res_idx</em>, <em>id</em>, <em>residue_index</em><span class="optional">[</span>, <em>phi = -1.0472</em>, <em>psi = -0.7854                                         n_ter = False</em>, <em>c_ter = False</em><span class="optional">]</span><span class="sig-paren">)</span></dt>
+<dd><p>Constructs frame residues only containing sidechain atoms (the ones that
+you observe in a rotamer).</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue from which to extract the sidechain positions</li>
-<li><strong>all_atom_pos</strong> (<a class="reference internal" href="../loop/all_atom.html#promod3.loop.AllAtomPositions" title="promod3.loop.AllAtomPositions"><code class="xref py py-class docutils literal"><span class="pre">promod3.loop.AllAtomPositions</span></code></a>) &#8211; To extract the sidechain positions</li>
+<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue from which to extract the backbone positions</li>
+<li><strong>all_atom_pos</strong> (<a class="reference internal" href="../loop/all_atom.html#promod3.loop.AllAtomPositions" title="promod3.loop.AllAtomPositions"><code class="xref py py-class docutils literal"><span class="pre">promod3.loop.AllAtomPositions</span></code></a>) &#8211; To extract the backbone positions</li>
 <li><strong>aa_res_idx</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Index of residue in <strong>all_atom_pos</strong> from which to
-extract the sidechain positions</li>
+extract the backbone positions</li>
 <li><strong>id</strong> (<a class="reference internal" href="rotamer_id.html#promod3.sidechain.RotamerID" title="promod3.sidechain.RotamerID"><code class="xref py py-class docutils literal"><span class="pre">RotamerID</span></code></a>) &#8211; Identifies the sidechain</li>
-<li><strong>residue_index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; idenfifies residue in frame</li>
+<li><strong>residue_index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Important for the energy calculations towards the
+<a class="reference internal" href="frame.html#promod3.sidechain.Frame" title="promod3.sidechain.Frame"><code class="xref py py-class docutils literal"><span class="pre">Frame</span></code></a> you don&#8217;t want to calculate a pairwise
+energy of the sidechain particles towards particles
+representing the own backbone...</li>
+<li><strong>phi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; The dihedral angle of the current residue</li>
+<li><strong>psi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; The dihedral angle of the current residue</li>
+<li><strong>n_ter</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Whether the residue is n-terminal</li>
+<li><strong>c_ter</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Whether the residue is c-terminal</li>
 </ul>
 </td>
 </tr>
@@ -236,18 +206,73 @@ atom positions are set in <strong>all_atom_pos</strong>.</p>
 </dd></dl>
 
 <dl class="method">
-<dt id="promod3.sidechain.SCWRLRotamerConstructor.ConstructFrameResidue">
-<code class="descname">ConstructFrameResidue</code><span class="sig-paren">(</span><em>residue</em>, <em>residue_index</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.SCWRLRotamerConstructor.ConstructFrameResidue" title="Permalink to this definition">¶</a></dt>
-<dd><p>Constructs a <a class="reference internal" href="frame.html#promod3.sidechain.FrameResidue" title="promod3.sidechain.FrameResidue"><code class="xref py py-class docutils literal"><span class="pre">FrameResidue</span></code></a> from a <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>.
+<dt id="promod3.sidechain.RotamerConstructor.AssignInternalEnergies">
+<code class="descname">AssignInternalEnergies</code><span class="sig-paren">(</span><em>rot_group</em>, <em>id</em>, <em>residue_index</em><span class="optional">[</span>, <em>phi = -1.0472</em>, <em>psi = -0.7854</em>, <em>n_ter = False</em>, <em>c_ter = False</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerConstructor.AssignInternalEnergies" title="Permalink to this definition">¶</a></dt>
+<dd><p>Assigns an internal energy to every rotamer in <em>rot_group</em>, i.e. an energy
+value before looking at any structural component of the energy function.
+The default implementation simply assigns 0.0 to every rotamer, it&#8217;s up
+to the energy function specific constructors to override that behaviour.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>rot_group</strong> (<a class="reference internal" href="rotamer.html#promod3.sidechain.RRMRotamerGroup" title="promod3.sidechain.RRMRotamerGroup"><code class="xref py py-class docutils literal"><span class="pre">RRMRotamerGroup</span></code></a> / <a class="reference internal" href="rotamer.html#promod3.sidechain.FRMRotamerGroup" title="promod3.sidechain.FRMRotamerGroup"><code class="xref py py-class docutils literal"><span class="pre">FRMRotamerGroup</span></code></a>) &#8211; containing all rotamers for which internal energies have
+to be assigned</li>
+<li><strong>id</strong> (<a class="reference internal" href="rotamer_id.html#promod3.sidechain.RotamerID" title="promod3.sidechain.RotamerID"><code class="xref py py-class docutils literal"><span class="pre">RotamerID</span></code></a>) &#8211; Identifies the sidechain</li>
+<li><strong>residue_index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; The index of the residue which is represented by
+<em>rot_group</em></li>
+<li><strong>phi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; The dihedral angle of the current residue</li>
+<li><strong>psi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; The dihedral angle of the current residue</li>
+<li><strong>n_ter</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Whether the residue is n-terminal</li>
+<li><strong>c_ter</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Whether the residue is c-terminal</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="promod3.sidechain.SCWRL4RotamerConstructor">
+<em class="property">class </em><code class="descclassname">promod3.sidechain.</code><code class="descname">SCWRL4RotamerConstructor</code><span class="sig-paren">(</span><em>cb_in_sidechain</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.SCWRL4RotamerConstructor" title="Permalink to this definition">¶</a></dt>
+<dd><p>This object implements the full interface defined in
+<a class="reference internal" href="#promod3.sidechain.RotamerConstructor" title="promod3.sidechain.RotamerConstructor"><code class="xref py py-class docutils literal"><span class="pre">RotamerConstructor</span></code></a> and constructs rotamers and frame residues that
+are parametrized according to the SCWRL4 method. They contain all heavy atoms,
+but also the polar hydrogens.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>cb_in_sidechain</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; If set to true, all constructed rotamers will contain
+the cb atom. This flag also affects the construction
+of frame residues and controls whether the cb atom
+shows up in the backbone frame residues or sidechain
+frame residues.
+This is useful when you want to represent ALA or
+GLY with actual rotamers, but be aware of increased
+runtime. This flag can be set to False for most
+modeling applications and you just don&#8217;t generate
+any rotamers for ALA and GLY.</td>
+</tr>
+</tbody>
+</table>
+<dl class="method">
+<dt id="promod3.sidechain.SCWRL4RotamerConstructor.ConstructFrameResidue">
+<code class="descname">ConstructFrameResidue</code><span class="sig-paren">(</span><em>residue</em>, <em>residue_index</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.SCWRL4RotamerConstructor.ConstructFrameResidue" title="Permalink to this definition">¶</a></dt>
+<dd><p>Constructs a <a class="reference internal" href="frame.html#promod3.sidechain.FrameResidue" title="promod3.sidechain.FrameResidue"><code class="xref py py-class docutils literal"><span class="pre">FrameResidue</span></code></a> from a <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>.
 This can be useful to mark a region occupied by a ligand. Note, that
-there won&#8217;t be any parametrization of hbonds in this function. All atoms
-of the residue will be represented as carbons and hydrogens are skipped.</p>
+there won&#8217;t be any parametrization of hbonds in this function. All heavy
+atoms of the residue will be represented as carbons and hydrogens are
+skipped.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>residue</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue from which all atoms will be taken to
+<li><strong>residue</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue from which all atoms will be taken to
 construct a <a class="reference internal" href="frame.html#promod3.sidechain.FrameResidue" title="promod3.sidechain.FrameResidue"><code class="xref py py-class docutils literal"><span class="pre">FrameResidue</span></code></a>.</li>
 <li><strong>residue_index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Index this <a class="reference internal" href="frame.html#promod3.sidechain.FrameResidue" title="promod3.sidechain.FrameResidue"><code class="xref py py-class docutils literal"><span class="pre">FrameResidue</span></code></a> belongs to.</li>
 </ul>
@@ -261,11 +286,11 @@ construct a <a class="reference internal" href="frame.html#promod3.sidechain.Fra
 </dd></dl>
 
 <dl class="method">
-<dt id="promod3.sidechain.SCWRLRotamerConstructor.ConstructFrameResidueHeuristic">
-<code class="descname">ConstructFrameResidueHeuristic</code><span class="sig-paren">(</span><em>residue</em>, <em>residue_index</em>, <em>comp_lib</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.SCWRLRotamerConstructor.ConstructFrameResidueHeuristic" title="Permalink to this definition">¶</a></dt>
-<dd><p>Constructs a <a class="reference internal" href="frame.html#promod3.sidechain.FrameResidue" title="promod3.sidechain.FrameResidue"><code class="xref py py-class docutils literal"><span class="pre">FrameResidue</span></code></a> from a <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a> using
+<dt id="promod3.sidechain.SCWRL4RotamerConstructor.ConstructFrameResidueHeuristic">
+<code class="descname">ConstructFrameResidueHeuristic</code><span class="sig-paren">(</span><em>residue</em>, <em>residue_index</em>, <em>comp_lib</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.SCWRL4RotamerConstructor.ConstructFrameResidueHeuristic" title="Permalink to this definition">¶</a></dt>
+<dd><p>Constructs a <a class="reference internal" href="frame.html#promod3.sidechain.FrameResidue" title="promod3.sidechain.FrameResidue"><code class="xref py py-class docutils literal"><span class="pre">FrameResidue</span></code></a> from a <a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a> using
 a heuristic treatment of the atoms based on the passed compounds library.
-This is meant to be used as an alternative to <a class="reference internal" href="#promod3.sidechain.SCWRLRotamerConstructor.ConstructFrameResidue" title="promod3.sidechain.SCWRLRotamerConstructor.ConstructFrameResidue"><code class="xref py py-func docutils literal"><span class="pre">ConstructFrameResidue()</span></code></a>,
+This is meant to be used as an alternative to <a class="reference internal" href="#promod3.sidechain.SCWRL4RotamerConstructor.ConstructFrameResidue" title="promod3.sidechain.SCWRL4RotamerConstructor.ConstructFrameResidue"><code class="xref py py-func docutils literal"><span class="pre">ConstructFrameResidue()</span></code></a>,
 which will be called by this function if the residue is not known by the given
 compounds library.
 Only non-hydrogen atoms are considered and by default added as uncharged
@@ -273,7 +298,7 @@ carbons. Special treatment is used for atoms known by the compounds library
 in the following cases:</p>
 <ul class="simple">
 <li>carbons, nitrogens, oxygens and sulfur particles use an appropriate type
-as in the <a class="reference internal" href="rotamer.html#promod3.sidechain.SidechainParticle" title="promod3.sidechain.SidechainParticle"><code class="xref py py-class docutils literal"><span class="pre">SidechainParticle</span></code></a> enumeration</li>
+as in the <code class="xref py py-class docutils literal"><span class="pre">SidechainParticle</span></code> enumeration</li>
 <li>carbonyls are added as charged oxygen particles as hbond acceptors</li>
 </ul>
 <table class="docutils field-list" frame="void" rules="none">
@@ -281,10 +306,10 @@ as in the <a class="reference internal" href="rotamer.html#promod3.sidechain.Sid
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>residue</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue from which all atoms will be taken to
+<li><strong>residue</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Residue from which all atoms will be taken to
 construct a <a class="reference internal" href="frame.html#promod3.sidechain.FrameResidue" title="promod3.sidechain.FrameResidue"><code class="xref py py-class docutils literal"><span class="pre">FrameResidue</span></code></a>.</li>
 <li><strong>residue_index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; Index this <a class="reference internal" href="frame.html#promod3.sidechain.FrameResidue" title="promod3.sidechain.FrameResidue"><code class="xref py py-class docutils literal"><span class="pre">FrameResidue</span></code></a> belongs to.</li>
-<li><strong>comp_lib</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/compoundlib/#ost.conop.CompoundLib" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.CompoundLib</span></code></a>) &#8211; OST compound library to use</li>
+<li><strong>comp_lib</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/compoundlib/#ost.conop.CompoundLib" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.CompoundLib</span></code></a>) &#8211; OST compound library to use</li>
 </ul>
 </td>
 </tr>
@@ -296,9 +321,10 @@ construct a <a class="reference internal" href="frame.html#promod3.sidechain.Fra
 </dd></dl>
 
 <dl class="method">
-<dt id="promod3.sidechain.SCWRLRotamerConstructor.AssignInternalEnergies">
-<code class="descname">AssignInternalEnergies</code><span class="sig-paren">(</span><em>rot_group</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.SCWRLRotamerConstructor.AssignInternalEnergies" title="Permalink to this definition">¶</a></dt>
-<dd><p>Takes the rotamer group and assigns every single rotamer its internal
+<dt id="promod3.sidechain.SCWRL4RotamerConstructor.AssignInternalEnergies">
+<code class="descname">AssignInternalEnergies</code><span class="sig-paren">(</span><em>rot_group</em>, <em>id</em>, <em>residue_index</em><span class="optional">[</span>, <em>phi = -1.0472</em>, <em>psi = -0.7854</em>, <em>n_ter = False</em>, <em>c_ter = False</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.SCWRL4RotamerConstructor.AssignInternalEnergies" title="Permalink to this definition">¶</a></dt>
+<dd><p>Overrides the method defined in <a class="reference internal" href="#promod3.sidechain.RotamerConstructor" title="promod3.sidechain.RotamerConstructor"><code class="xref py py-class docutils literal"><span class="pre">RotamerConstructor</span></code></a>.
+Takes the rotamer group and assigns every single rotamer its internal
 energy based on the probabilistic approach used by SCWRL4.
 =&gt; -internal_e_prefac*log(p/max_p), where internal_e_prefac and p are
 rotamer specific and max_p is the maximum probablity of any of the rotamers
@@ -309,8 +335,18 @@ is already called at construction and the energies are properly assigned.</p>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>rot_group</strong> (<a class="reference internal" href="rotamer.html#promod3.sidechain.RRMRotamerGroup" title="promod3.sidechain.RRMRotamerGroup"><code class="xref py py-class docutils literal"><span class="pre">RRMRotamerGroup</span></code></a> / <a class="reference internal" href="rotamer.html#promod3.sidechain.FRMRotamerGroup" title="promod3.sidechain.FRMRotamerGroup"><code class="xref py py-class docutils literal"><span class="pre">FRMRotamerGroup</span></code></a>) &#8211; containing all rotamers for which internal energies have
-to be assigned</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>rot_group</strong> (<a class="reference internal" href="rotamer.html#promod3.sidechain.RRMRotamerGroup" title="promod3.sidechain.RRMRotamerGroup"><code class="xref py py-class docutils literal"><span class="pre">RRMRotamerGroup</span></code></a> / <a class="reference internal" href="rotamer.html#promod3.sidechain.FRMRotamerGroup" title="promod3.sidechain.FRMRotamerGroup"><code class="xref py py-class docutils literal"><span class="pre">FRMRotamerGroup</span></code></a>) &#8211; containing all rotamers for which internal energies have
+to be assigned</li>
+<li><strong>id</strong> (<a class="reference internal" href="rotamer_id.html#promod3.sidechain.RotamerID" title="promod3.sidechain.RotamerID"><code class="xref py py-class docutils literal"><span class="pre">RotamerID</span></code></a>) &#8211; Identifies the sidechain</li>
+<li><strong>residue_index</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>) &#8211; The index of the residue which is represented by
+<em>rot_group</em></li>
+<li><strong>phi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; The dihedral angle of the current residue</li>
+<li><strong>psi</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#float" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">float</span></code></a>) &#8211; The dihedral angle of the current residue</li>
+<li><strong>n_ter</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Whether the residue is n-terminal</li>
+<li><strong>c_ter</strong> (<a class="reference external" href="https://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bool</span></code></a>) &#8211; Whether the residue is c-terminal</li>
+</ul>
+</td>
 </tr>
 </tbody>
 </table>
@@ -369,7 +405,7 @@ to be assigned</td>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/sidechain/rotamer_id.html b/doc/html/sidechain/rotamer_id.html
index d63d36c4..80e2b683 100644
--- a/doc/html/sidechain/rotamer_id.html
+++ b/doc/html/sidechain/rotamer_id.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>RotamerID &mdash; ProMod3 1.3.0 documentation</title>
+    <title>RotamerID &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="sidechain - Sidechain Modelling" href="index.html" />
     <link rel="next" title="Rotamers" href="rotamer.html" />
     <link rel="prev" title="sidechain - Sidechain Modelling" href="index.html" />
@@ -94,7 +94,7 @@ or as <code class="docutils literal"><span class="pre">promod3.sidechain.Rotamer
 <div class="section" id="how-can-i-get-an-id">
 <h2>How can I get an ID?<a class="headerlink" href="#how-can-i-get-an-id" title="Permalink to this headline">¶</a></h2>
 <p>The RotamerID enum can directly be accessed from Python. Two convenient
-functions exist to get RotamerIDs from the <a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a> enum
+functions exist to get RotamerIDs from the <a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a> enum
 or from amino acid three letter codes.</p>
 <dl class="method">
 <dt id="promod3.sidechain.TLCToRotID">
@@ -119,12 +119,12 @@ exactly the naming convention defined above.</p>
 <dd><p>Directly translates <strong>aa</strong> into a RotamerID. Note, that it is not possible
 to generate special IDs this way
 (e.g. HSD, HSE or the special prolines/cysteins) since they&#8217;re simply not
-defined in <a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a></p>
+defined in <a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a></p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; AA enum of amino acid</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>aa</strong> (<a class="reference external" href="https://www.openstructure.org/docs/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.conop.AminoAcid</span></code></a>) &#8211; AA enum of amino acid</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><a class="reference internal" href="#promod3.sidechain.RotamerID" title="promod3.sidechain.RotamerID"><code class="xref py py-class docutils literal"><span class="pre">RotamerID</span></code></a>, XXX if <strong>aa</strong> is invalid.</td>
 </tr>
@@ -184,7 +184,7 @@ defined in <a class="reference external" href="https://www.openstructure.org/doc
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/sidechain/rotamer_lib.html b/doc/html/sidechain/rotamer_lib.html
index ef5d1822..ea9eb17d 100644
--- a/doc/html/sidechain/rotamer_lib.html
+++ b/doc/html/sidechain/rotamer_lib.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Rotamer Library &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Rotamer Library &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="sidechain - Sidechain Modelling" href="index.html" />
     <link rel="next" title="Rotamer Constructor" href="rotamer_constructor.html" />
     <link rel="prev" title="Frame" href="frame.html" />
@@ -444,7 +444,7 @@ NaN.</p>
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Source of dihedral angles</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Source of dihedral angles</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><a class="reference internal" href="#promod3.sidechain.RotamerLibEntry" title="promod3.sidechain.RotamerLibEntry"><code class="xref py py-class docutils literal"><span class="pre">RotamerLibEntry</span></code></a></td>
 </tr>
@@ -468,7 +468,7 @@ are NaN.</p>
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.8.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Source of dihedral angles</li>
+<li><strong>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.9.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; Source of dihedral angles</li>
 <li><strong>id</strong> (<a class="reference internal" href="rotamer_id.html#promod3.sidechain.RotamerID" title="promod3.sidechain.RotamerID"><code class="xref py py-class docutils literal"><span class="pre">RotamerID</span></code></a>) &#8211; The identity of the returned <a class="reference internal" href="#promod3.sidechain.RotamerLibEntry" title="promod3.sidechain.RotamerLibEntry"><code class="xref py py-class docutils literal"><span class="pre">RotamerLibEntry</span></code></a></li>
 </ul>
 </td>
@@ -720,7 +720,7 @@ valid and non rotameric, INVALID otherwise.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/sidechain/subrotamer_optimizer.html b/doc/html/sidechain/subrotamer_optimizer.html
index 9527a393..866eab60 100644
--- a/doc/html/sidechain/subrotamer_optimizer.html
+++ b/doc/html/sidechain/subrotamer_optimizer.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Subrotamer Optimization &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Subrotamer Optimization &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    '../',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="../index.html" />
     <link rel="up" title="sidechain - Sidechain Modelling" href="index.html" />
     <link rel="next" title="scoring - Loop Scoring" href="../scoring/index.html" />
     <link rel="prev" title="Loading Rotamer Libraries" href="loading.html" />
@@ -126,7 +126,7 @@ internal <a class="reference internal" href="graph.html#promod3.sidechain.Rotame
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
diff --git a/doc/html/user_contributions.html b/doc/html/user_contributions.html
new file mode 100644
index 00000000..ee0f7551
--- /dev/null
+++ b/doc/html/user_contributions.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Contributing &mdash; ProMod3 2.0.0 documentation</title>
+    
+    <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    './',
+        VERSION:     '2.0.0',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="index.html" />
+    <link rel="up" title="Documentation For Users" href="users.html" />
+    <link rel="next" title="Documentation For Developers" href="developers.html" />
+    <link rel="prev" title="SetCompoundsChemlib()" href="core/setcompoundschemlib.html" />
+   
+  <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+  
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
+  </head>
+  <body role="document">
+  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body" role="main">
+            
+  <div class="section" id="contributing">
+<h1>Contributing<a class="headerlink" href="#contributing" title="Permalink to this headline">¶</a></h1>
+<p>Please contact the ProMod3 developers if you implemented a modelling pipeline
+that you believe is worth sharing with other users.
+They can review the code and add it to the repository at:
+<a class="reference external" href="https://git.scicore.unibas.ch/schwede/ProMod3">https://git.scicore.unibas.ch/schwede/ProMod3</a>. Consider
+opening an account for the GitLab instance at sciCORE, University of Basel if
+you directly want to contribute to ProMod3&#8217;s core features. You can find more
+information on that matter in the developer section of the documentation
+(<a class="reference internal" href="contributing.html#how-to-contribute"><span class="std std-ref">Contributing</span></a>).</p>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+  <li><a href="index.html">Documentation overview</a><ul>
+  <li><a href="users.html">Documentation For Users</a><ul>
+      <li>Previous: <a href="core/setcompoundschemlib.html" title="previous chapter"><code class="docutils literal"><span class="pre">SetCompoundsChemlib()</span></code></a></li>
+      <li>Next: <a href="developers.html" title="next chapter">Documentation For Developers</a></li>
+  </ul></li>
+  </ul></li>
+</ul>
+</div>
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/user_contributions.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<div id="searchbox" style="display: none" role="search">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="footer">
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      
+      |
+      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
+      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
+      
+      |
+      <a href="_sources/user_contributions.txt"
+          rel="nofollow">Page source</a>
+    </div>
+
+    
+
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/html/users.html b/doc/html/users.html
index 241d3631..e576c735 100644
--- a/doc/html/users.html
+++ b/doc/html/users.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Documentation For Users &mdash; ProMod3 1.3.0 documentation</title>
+    <title>Documentation For Users &mdash; ProMod3 2.0.0 documentation</title>
     
     <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.3.0',
+        VERSION:     '2.0.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-    <link rel="top" title="ProMod3 1.3.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 2.0.0 documentation" href="index.html" />
     <link rel="next" title="Getting Started" href="gettingstarted.html" />
     <link rel="prev" title="ProMod3" href="index.html" />
    
@@ -118,6 +118,7 @@ scripts using the functionality of this library.</p>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="core/setcompoundschemlib.html"><code class="docutils literal"><span class="pre">SetCompoundsChemlib()</span></code></a></li>
+<li class="toctree-l1"><a class="reference internal" href="user_contributions.html">Contributing</a></li>
 </ul>
 </div>
 </div>
@@ -158,7 +159,7 @@ scripts using the functionality of this library.</p>
       <div class="clearer"></div>
     </div>
     <div class="footer">
-      &copy;2013-2018, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
+      &copy;2013-2019, SIB - Swiss Institute of Bioinformatics and Biozentrum - University of Basel.
       
       |
       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
-- 
GitLab