diff --git a/doc/html/_modules/index.html b/doc/html/_modules/index.html
index d3d433139b3918ebe25756b2ec513617ee1d0c4c..14ae5c46c28bdd1237ebef92280d2f3a56c1da83 100644
--- a/doc/html/_modules/index.html
+++ b/doc/html/_modules/index.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Overview: module code &mdash; ProMod3 1.1.0 documentation</title>
+    <title>Overview: module code &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,13 +23,15 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -37,22 +39,26 @@
           <div class="body" role="main">
             
   <h1>All modules for which code is available</h1>
-<ul><li><a href="AllAtomEnv.html">AllAtomEnv</a></li>
+<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="ClashScorer.html">ClashScorer</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>
@@ -66,13 +72,14 @@
 <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="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>
@@ -132,9 +139,6 @@
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -145,8 +149,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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>
 
diff --git a/doc/html/_modules/promod3.html b/doc/html/_modules/promod3.html
index 26f55e3abbf5e32a066e3b2d6749959bc84d1c91..56ad569c5a015eba844c0845422f1cb0b1216859 100644
--- a/doc/html/_modules/promod3.html
+++ b/doc/html/_modules/promod3.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>promod3 &mdash; ProMod3 1.1.0 documentation</title>
+    <title>promod3 &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,14 +23,16 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -38,22 +40,22 @@
           <div class="body" role="main">
             
   <h1>Source code for promod3</h1><div class="highlight"><pre>
-<span class="c"># enable access to loop and modelling via &quot;import promod3&quot;</span>
+<span></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="c"># load compounds library</span>
-<span class="c"># That way we do not need to call our scripts with the OST starter and are more</span>
-<span class="c"># flexible.</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="s">&quot;/users/staff/bioz/taurielg/GT/Code/ost/build/stage/share/openstructure/compounds.chemlib&quot;</span><span class="p">):</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>
@@ -62,58 +64,58 @@
 <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="s">&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="s">&quot;&#39; specified!</span><span class="se">\n</span><span class="s">A compounds library must either be &quot;</span>
-                           <span class="o">+</span> <span class="s">&quot;set at compile-time (&#39;compounds.chemlib&#39; file in &quot;</span>
-                           <span class="o">+</span> <span class="s">&quot;$OST_ROOT/share or below) or set in OST with &quot;</span>
-                           <span class="o">+</span> <span class="s">&quot;ost.conop.SetDefaultLib before importing any &quot;</span>
-                           <span class="o">+</span> <span class="s">&quot;promod3 module!&quot;</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="s">&#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="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="s">&quot;PROMOD3_SHARED_DATA_PATH&quot;</span><span class="p">)</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="s">&quot;PROMOD3_SHARED_DATA_PATH&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">path</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="c"># check if we already have an OST PrefixPath</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="s">&quot;/users/staff/bioz/taurielg/GT/Code/ost/build/stage&quot;</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="c"># check if we do have a compounds library</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="c"># ensure that PROMOD3_SHARED_DATA_PATH env. var. set and override if needed</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="c"># module_path = PROMOD3_ROOT/lib64/python2.7/site-packages/promod3</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="c"># get PROMOD3_ROOT</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="s">&quot;share&quot;</span><span class="p">,</span> <span class="s">&quot;promod3&quot;</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="c"># set version</span>
-<span class="n">__version__</span> <span class="o">=</span> <span class="s">&quot;1.1.0&quot;</span>
-<span class="n">__version_extended__</span> <span class="o">=</span> <span class="s">&quot;1.1.0 (release-1.1|ed199a7)&quot;</span>
+<span class="c1"># set version</span>
+<span class="n">__version__</span> <span class="o">=</span> <span class="s2">&quot;1.2.0&quot;</span>
+<span class="n">__version_extended__</span> <span class="o">=</span> <span class="s2">&quot;1.2.0 (release-1.2.0|d086aed)&quot;</span>
 
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;SetCompoundsChemlib&#39;</span><span class="p">,</span> <span class="s">&#39;GetProMod3SharedDataPath&#39;</span><span class="p">,</span>
-           <span class="s">&#39;SetProMod3SharedDataPath&#39;</span><span class="p">)</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="c">#  LocalWords:  OST os ost conop io SetCompoundsChemlib CHEMLIB param chemlib</span>
-<span class="c">#  LocalWords:  str SetDefaultLib RuleBasedProcessor PrefixPath RuntimeError</span>
-<span class="c">#  LocalWords:  GetSharedDataPath SetPrefixPath GetDefaultLib</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>
@@ -137,9 +139,6 @@
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -150,8 +149,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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>
 
diff --git a/doc/html/_modules/promod3/core/helper.html b/doc/html/_modules/promod3/core/helper.html
index cf69dc55340fc739cdb0373cb30c01f8600762f0..8307571516583bdd8aa501989cbe682ec047b0ed 100644
--- a/doc/html/_modules/promod3/core/helper.html
+++ b/doc/html/_modules/promod3/core/helper.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>promod3.core.helper &mdash; ProMod3 1.1.0 documentation</title>
+    <title>promod3.core.helper &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,14 +23,16 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../../../index.html" />
+    <link rel="top" title="ProMod3 1.2.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -38,7 +40,7 @@
           <div class="body" role="main">
             
   <h1>Source code for promod3.core.helper</h1><div class="highlight"><pre>
-<span class="sd">&quot;&quot;&quot;</span>
+<span></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>
 
@@ -61,8 +63,8 @@
 <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>
+    <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>
@@ -83,9 +85,9 @@
 <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="s">&#39;</span><span class="si">%s</span><span class="s"> file does not exist: </span><span class="si">%s</span><span class="se">\n</span><span class="s">&#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>
+        <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>
@@ -113,14 +115,14 @@
 <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="s">&#39;.gz&#39;</span><span class="p">:</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="s">&#39;</span><span class="si">%s</span><span class="s"> file in Gzip not supported: </span><span class="si">%s</span><span class="s">. &#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</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>
+    <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>
@@ -158,22 +160,22 @@
 <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="s">&#39;.gz&#39;</span><span class="p">:</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="s">&#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="s">&#39;</span><span class="si">%s</span><span class="s"> file extension not supported: </span><span class="si">%s</span><span class="s">. &#39;</span> <span class="o">%</span><span class="p">(</span><span class="n">prefix</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="s">&#39;Allowed extensions are: </span><span class="si">%s</span><span class="se">\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">extension_string</span><span class="p">,</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="s">&#39;&#39;</span><span class="p">:</span>
-        <span class="n">extension_string</span> <span class="o">=</span> <span class="s">&#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">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="s">&#39;, &#39;</span> <span class="o">+</span> <span class="s">&#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="s">&#39;.gz&#39;</span>
-            <span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s">&#39;</span><span class="si">%s</span><span class="s"> file extension not supported: </span><span class="si">%s</span><span class="s">. &#39;</span> <span class="o">%</span><span class="p">(</span><span class="n">prefix</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="s">&#39;Allowed extensions are: </span><span class="si">%s</span><span class="se">\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">extension_string</span><span class="p">,</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>
@@ -182,21 +184,21 @@
                 <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="s">&#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">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="s">&#39;, &#39;</span> <span class="o">+</span> <span class="s">&#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="s">&#39;.gz&#39;</span>
-    <span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s">&#39;</span><span class="si">%s</span><span class="s"> file extension not supported: </span><span class="si">%s</span><span class="s">. &#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</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="s">&#39;Allowed extensions are: </span><span class="si">%s</span><span class="se">\n</span><span class="s">&#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="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="s">&#39;MsgErrorAndExit&#39;</span><span class="p">,</span>
-    <span class="s">&#39;FileExists&#39;</span><span class="p">,</span>
-    <span class="s">&#39;FileExtension&#39;</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="c">#  LocalWords:  gzipped gz param str gzip bool</span>
+<span class="c1">#  LocalWords:  gzipped gz param str gzip bool</span>
 </pre></div>
 
           </div>
@@ -222,9 +224,6 @@
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -235,8 +234,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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>
 
diff --git a/doc/html/_modules/promod3/core/pm3argparse.html b/doc/html/_modules/promod3/core/pm3argparse.html
index a7e1be3fbe452bb61a94591e499bba82eefce2f9..c1d0b98a4fbe6006fddcc641a57dd76f0c1256f9 100644
--- a/doc/html/_modules/promod3/core/pm3argparse.html
+++ b/doc/html/_modules/promod3/core/pm3argparse.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>promod3.core.pm3argparse &mdash; ProMod3 1.1.0 documentation</title>
+    <title>promod3.core.pm3argparse &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,14 +23,16 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../../../index.html" />
+    <link rel="top" title="ProMod3 1.2.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -38,7 +40,7 @@
           <div class="body" role="main">
             
   <h1>Source code for promod3.core.pm3argparse</h1><div class="highlight"><pre>
-<span class="sd">&quot;&quot;&quot;</span>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
 <span class="sd">Extensions for the argparse module.</span>
 <span class="sd">&quot;&quot;&quot;</span>
 
@@ -47,9 +49,9 @@
 <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="c">#try:</span>
-<span class="c">#    import ujson as json</span>
-<span class="c">#except ImportError:</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>
@@ -66,9 +68,9 @@
         <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="s">&quot; gzip file &#39;&quot;</span> <span class="o">+</span> <span class="n">filename</span> <span class="o">+</span>
-                               <span class="s">&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="s">&#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">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>
@@ -77,22 +79,22 @@
     <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="s">&quot;JSON &#39;alignmentlist&#39; &#39;</span><span class="si">%s</span><span class="s">&#39; &quot;</span> <span class="o">%</span> <span class="n">seqtype</span><span class="o">+</span>
-                               <span class="s">&quot;from &#39;</span><span class="si">%s</span><span class="s">&#39; is &quot;</span> <span class="o">%</span> <span class="n">json_source</span><span class="o">+</span>
-                               <span class="s">&quot;missing the &#39;</span><span class="si">%s</span><span class="s">&#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">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="s">&quot;JSON &#39;alignmentlist&#39; &#39;</span><span class="si">%s</span><span class="s">&#39; &quot;</span> <span class="o">%</span> <span class="n">seqtype</span><span class="o">+</span>
-                                   <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; from&quot;</span> <span class="o">%</span> <span class="n">key_name</span><span class="o">+</span>
-                                   <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; is not a &quot;</span> <span class="o">%</span> <span class="n">json_source</span><span class="o">+</span>
-                                   <span class="s">&quot;</span><span class="si">%s</span><span class="s">&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="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="s">&quot;JSON &#39;alignmentlist&#39; &#39;</span><span class="si">%s</span><span class="s">&#39; &quot;</span> <span class="o">%</span> <span class="n">seqtype</span><span class="o">+</span>
-                               <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; from&quot;</span> <span class="o">%</span> <span class="n">key_name</span><span class="o">+</span>
-                               <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; is not a &quot;</span> <span class="o">%</span> <span class="n">json_source</span><span class="o">+</span>
-                               <span class="s">&quot;</span><span class="si">%s</span><span class="s">&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="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>
@@ -100,49 +102,49 @@
 <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="c"># alignments are stored via the &#39;alignmentlist&#39; key</span>
-    <span class="k">if</span> <span class="s">&#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="s">&quot;JSON object from &#39;</span><span class="si">%s</span><span class="s">&#39; does not &quot;</span> <span class="o">%</span> <span class="n">json_source</span><span class="o">+</span>
-                               <span class="s">&quot;provide an &#39;alignmentlist&#39; key.&quot;</span><span class="p">,</span> <span class="mi">21</span><span class="p">)</span>
-    <span class="c"># 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="s">&#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="s">&quot;JSON object from &#39;</span><span class="si">%s</span><span class="s">&#39; does not&quot;</span> <span class="o">%</span> <span class="n">json_source</span><span class="o">+</span>
-                               <span class="s">&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="c"># 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="s">&#39;alignmentlist&#39;</span><span class="p">]:</span>
-        <span class="c"># json_aln needs to be a dictionary</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="s">&quot;JSON &#39;alignmentlist&#39; member from &quot;</span><span class="o">+</span>
-                                   <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; is not a &#39; &quot;</span> <span class="o">%</span>  <span class="n">json_source</span><span class="o">+</span>
-                                   <span class="s">&quot; dictionary: </span><span class="si">%s</span><span class="s">&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="c"># an alignment has a &#39;target&#39; and a &#39;template&#39; dictionary</span>
-        <span class="c"># 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="s">&#39;target&#39;</span><span class="p">,</span> <span class="s">&#39;template&#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;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="s">&quot;JSON &#39;alignmentlist&#39; from &quot;</span><span class="o">+</span>
-                                       <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; does not &quot;</span> <span class="o">%</span> <span class="n">json_source</span><span class="o">+</span>
-                                       <span class="s">&quot;provide a &#39;</span><span class="si">%s</span><span class="s">&#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="c"># check sequence to be dictionary</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="s">&quot;JSON &#39;alignmentlist&#39; &#39;</span><span class="si">%s</span><span class="s">&#39; from&quot;</span> <span class="o">%</span> <span class="n">flav</span><span class="o">+</span>
-                                       <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; is not a &quot;</span> <span class="o">%</span> <span class="n">json_source</span><span class="o">+</span>
-                                       <span class="s">&quot;dictionary: </span><span class="si">%s</span><span class="s">&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="c"># 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="s">&#39;name&#39;</span><span class="p">,</span> <span class="s">&#39;seqres&#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;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="s">&#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="s">&#39;template&#39;</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="c"># 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="s">&#39;target&#39;</span><span class="p">][</span><span class="s">&#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="s">&#39;target&#39;</span><span class="p">][</span><span class="s">&#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="s">&#39;template&#39;</span><span class="p">][</span><span class="s">&#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="s">&#39;template&#39;</span><span class="p">][</span><span class="s">&#39;seqres&#39;</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="s">&#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="s">&#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="s">&#39;template&#39;</span><span class="p">][</span><span class="s">&#39;offset&#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">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>
@@ -158,28 +160,28 @@
 
 <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="s">&#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="s">&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="s">&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="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="s">&#39;.json&#39;</span><span class="p">,</span> <span class="s">&quot;JSON alignment&quot;</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="s">&quot;&#39;--json&#39; file &#39;</span><span class="si">%s</span><span class="s">&#39; &quot;</span> <span class="o">%</span> <span class="n">json_input</span><span class="o">+</span>
-                                   <span class="s">&quot;can not be processed: </span><span class="si">%s</span><span class="s">&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="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="s">&#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="s">&quot;&#39;--json&#39; file &#39;</span><span class="si">%s</span><span class="s">&#39; could &quot;</span> <span class="o">%</span> <span class="n">json_input</span><span class="o">+</span>
-                                       <span class="s">&quot;not be processed into a JSON object, &quot;</span><span class="o">+</span>
-                                       <span class="s">&quot;probably it&#39;s empty.&quot;</span><span class="p">,</span> <span class="mi">20</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>
@@ -189,121 +191,121 @@
         <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="s">&quot;&#39;--json&#39; string &#39;</span><span class="si">%s</span><span class="s">&#39; &quot;</span> <span class="o">%</span> <span class="n">json_input</span><span class="o">+</span>\
-                                   <span class="s">&quot;could not be decoded: </span><span class="si">%s</span><span class="s">&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="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="s">&quot;&#39;--&quot;</span> <span class="o">+</span> <span class="n">format</span> <span class="o">+</span> <span class="s">&quot; &quot;</span> <span class="o">+</span> <span class="n">seqfile</span> <span class="o">+</span> <span class="s">&quot;&#39;&quot;</span>
-    <span class="n">helper</span><span class="o">.</span><span class="n">FileExists</span><span class="p">(</span><span class="s">&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="c"># 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="s">&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="c"># loading the alignment, switch for gzip</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="s">&#39;.fas&#39;</span><span class="p">,</span> <span class="s">&quot;Alignment&quot;</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="c">#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="s">&#39;Bad FASTA file: File is empty&#39;</span><span class="p">,</span>
-                           <span class="s">&#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="s">&quot; refers to an empty file or &quot;</span> <span class="o">+</span>
-                                   <span class="s">&quot;its in the wrong format.&quot;</span><span class="p">,</span> <span class="mi">15</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="s">&quot;: error when reading alignment &quot;</span><span class="o">+</span>
-                                   <span class="s">&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="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="c"># checking the alignment</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="s">&quot; points to an alignment with only &quot;</span> <span class="o">+</span>
-                               <span class="s">&quot;1 sequence.&quot;</span><span class="p">,</span> <span class="mi">16</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="s">&quot; points to an alignment with more &quot;</span> <span class="o">+</span>
-                               <span class="s">&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="c"># identify target</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="s">&#39;trg&#39;</span><span class="p">,</span> <span class="s">&#39;target&#39;</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="s">&quot;: multiple targets found!&quot;</span><span class="p">,</span> <span class="mi">17</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="c"># reshuffle</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="c"># generate alignment</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="s">&#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">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="s">&#39;TEMPLATE&#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="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="s">&quot;&#39;--pdb &quot;</span> <span class="o">+</span> <span class="n">filename</span> <span class="o">+</span> <span class="s">&quot;&#39;&quot;</span>
-    <span class="n">helper</span><span class="o">.</span><span class="n">FileExists</span><span class="p">(</span><span class="s">&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="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="c">#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="s">&quot;: failure to parse PDB file: &quot;</span> <span class="o">+</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="s">&quot;&#39;--entity &quot;</span> <span class="o">+</span> <span class="n">filename</span> <span class="o">+</span> <span class="s">&quot;&#39;&quot;</span>
-    <span class="n">helper</span><span class="o">.</span><span class="n">FileExists</span><span class="p">(</span><span class="s">&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="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="c">#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="s">&#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="s">&quot;: not a supported format &quot;</span> <span class="o">+</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="s">&quot;: failure to parse PDB file: &quot;</span> <span class="o">+</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">_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="c"># IDs: (file_base = base file name with no extensions)</span>
-    <span class="c"># - file_base.chain_name</span>
-    <span class="c"># - file_base (iff only one chain in file)</span>
-    <span class="c"># - chain_name (iff only one file)</span>
-    <span class="c"># - note: single entry with key &#39;UNIQUE&#39; created if only one chain in total!</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="c"># parse structures</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="c"># get pure file name with no extension</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="s">&#39;.gz&#39;</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="c"># 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="s">&quot;peptide=True&quot;</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="c"># fill dict</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="s">&#39;UNIQUE&#39;</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="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="s">&#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="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="s">&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="s">&#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="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>
@@ -312,34 +314,34 @@
     <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="c"># 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="s">&#39;|&#39;</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="c"># set offset</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="c"># mismatch with existing one?</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="s">&quot;Inconsistent offsets between seq. name&quot;</span><span class="o">+</span>
-                                       <span class="s">&quot; and seq. in alignment for &quot;</span> <span class="o">+</span> <span class="n">seq_name</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="s">&quot;Non-integer offset defined in seq. name &quot;</span><span class="o">+</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="s">&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="c"># identify chain and attach view</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="s">&#39;UNIQUE&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">CreateFullView</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="s">&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="s">&quot; (should be &lt;FILE&gt;.&lt;CHAIN&gt;) to attach to&quot;</span><span class="o">+</span>
-                                   <span class="s">&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>
+            <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>
@@ -385,10 +387,10 @@
                                          <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="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="c">#pylint: disable=redefined-builtin</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>
@@ -397,7 +399,7 @@
 <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="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">:</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>
@@ -424,8 +426,8 @@
         <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>
+        <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>
@@ -434,11 +436,11 @@
 <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="s">&#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="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="s">&#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>
-</div>
+        <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></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>
 
@@ -507,10 +509,10 @@
 <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="s">&#39;ALIGNMENT&#39;</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;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="s">&#39;ALLOW_MULTITEMPLATE&#39;</span><span class="p">)</span>
-</div>
+            <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>
 
@@ -568,52 +570,52 @@
 <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="s">&#39;STRUCTURE&#39;</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;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="s">&#39;ATTACH_VIEWS&#39;</span><span class="p">)</span>
-</div>
+            <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>
+
     <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="c"># 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="s">&#39;-f&#39;</span><span class="p">,</span> <span class="s">&#39;--fasta&#39;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="p">(</span><span class="s">&#39;&lt;FILE&gt;&#39;</span><span class="p">),</span>
-                             <span class="n">help</span><span class="o">=</span><span class="s">&#39;Target-template alignment in FASTA format. &#39;</span><span class="o">+</span>
-                             <span class="s">&#39;Target sequence is either named &quot;trg&quot; or &#39;</span><span class="o">+</span>
-                             <span class="s">&#39;&quot;target&quot; or the first sequence is used. &#39;</span><span class="o">+</span>
-                             <span class="s">&#39;File can be plain or gzipped.&#39;</span><span class="p">,</span>
-                             <span class="n">action</span><span class="o">=</span><span class="s">&#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="c"># 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="s">&#39;-c&#39;</span><span class="p">,</span> <span class="s">&#39;--clustal&#39;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="p">(</span><span class="s">&#39;&lt;FILE&gt;&#39;</span><span class="p">),</span>
-                             <span class="n">help</span><span class="o">=</span><span class="s">&#39;Target-template alignment in CLUSTAL format. &#39;</span><span class="o">+</span>
-                             <span class="s">&#39;Target sequence is either named &quot;trg&quot; or &#39;</span><span class="o">+</span>
-                             <span class="s">&#39;&quot;target&quot; or the first sequence is used. &#39;</span><span class="o">+</span>
-                             <span class="s">&#39;File can be plain or gzipped.&#39;</span><span class="p">,</span>
-                             <span class="n">action</span><span class="o">=</span><span class="s">&#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="c"># 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="s">&#39;-j&#39;</span><span class="p">,</span> <span class="s">&#39;--json&#39;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="s">&#39;&lt;OBJECT&gt;|&lt;FILE&gt;&#39;</span><span class="p">,</span>
-                             <span class="n">help</span><span class="o">=</span><span class="s">&#39;Alignments provided as JSON file/object. &#39;</span><span class="o">+</span>
-                             <span class="s">&#39;File can be plain or gzipped.&#39;</span><span class="p">,</span>
-                             <span class="n">action</span><span class="o">=</span><span class="s">&#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"># 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="c"># 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="s">&#39;-p&#39;</span><span class="p">,</span> <span class="s">&#39;--pdb&#39;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="p">(</span><span class="s">&#39;&lt;FILE&gt;&#39;</span><span class="p">),</span>
-                             <span class="n">help</span><span class="o">=</span><span class="s">&#39;Structure in PDB format. &#39;</span><span class="o">+</span>
-                             <span class="s">&#39;File can be plain or gzipped.&#39;</span><span class="p">,</span>
-                             <span class="n">action</span><span class="o">=</span><span class="s">&#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="c"># 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="s">&#39;-e&#39;</span><span class="p">,</span> <span class="s">&#39;--entity&#39;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="p">(</span><span class="s">&#39;&lt;FILE&gt;&#39;</span><span class="p">),</span>
-                             <span class="n">help</span><span class="o">=</span><span class="s">&quot;Structure in any format readable by OST&#39;s &quot;</span><span class="o">+</span>
-                             <span class="s">&quot;io.LoadEntity method. Format is chosen by file &quot;</span><span class="o">+</span>
-                             <span class="s">&quot;ending. Recognized File Extensions: .ent, .pdb, &quot;</span><span class="o">+</span>
-                             <span class="s">&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="s">&#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="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></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="c"># class will grow, so for the moment pylint is ignored</span>
-    <span class="c">#pylint: disable=too-few-public-methods</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>
@@ -624,31 +626,31 @@
 
     <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="s">&#39;ALLOW_MULTITEMPLATE&#39;</span> <span class="ow">in</span> <span class="n">activated</span>
-        <span class="k">if</span> <span class="s">&#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">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="s">&#39;STRUCTURE&#39;</span> <span class="ow">in</span> <span class="n">activated</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="s">&#39;ATTACH_VIEWS&#39;</span> <span class="ow">in</span> <span class="n">activated</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">def</span> <span class="nf">_PostProcessAlignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-        <span class="c">#pylint: disable=no-member</span>
-        <span class="c">#pylint: disable=attribute-defined-outside-init</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="c"># parse fasta files</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="s">&quot;fasta&quot;</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="c"># parse clustal files</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="s">&quot;clustal&quot;</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="c"># parse JSON input</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>
@@ -656,41 +658,41 @@
             <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="c">#pylint: disable=attribute-defined-outside-init</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="c"># parse pdb files</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="c"># parse generic structures</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="s">&#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="s">&#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="s">&quot;Need to have structures and alignments to &quot;</span><span class="o">+</span>
-                                   <span class="s">&quot;attach views.&quot;</span><span class="p">,</span> <span class="mi">41</span><span class="p">)</span>
-        <span class="c"># get chain id to entity view (single chain) mapping (dict)</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="c"># go through all templates in all alignments</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="c">#  LocalWords:  param attr prog argparse ArgumentParser bool sys os init str</span>
-<span class="c">#  LocalWords:  progattr descattr argpinit argv formatter meth args namespace</span>
-<span class="c">#  LocalWords:  ArgumentDefaultsHelpFormatter sysargv AssembleParser fasta io</span>
-<span class="c">#  LocalWords:  metavar trg tpl FastA gzip tempfile ost promod aln stderr src</span>
-<span class="c">#  LocalWords:  AssembleTrgTplAln CreateSequence SetSequenceOffset LogError</span>
-<span class="c">#  LocalWords:  LogScript OptionsNamespace PostProcess AssembleAlignment JSON</span>
-<span class="c">#  LocalWords:  AddAlignment AlignmentList SEQNAME whitespaces nargs trgname</span>
-<span class="c">#  LocalWords:  PostProcessAlignment startswith seqfile elif MsgErrorAndExit</span>
-<span class="c">#  LocalWords:  len FileExists gz FileGzip readfile fh NamedTemporaryFile fas</span>
-<span class="c">#  LocalWords:  LoadAlignment exc GetCount fst GetSequence snd</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>
@@ -716,9 +718,6 @@
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -729,8 +728,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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>
 
diff --git a/doc/html/_modules/promod3/modelling/_closegaps.html b/doc/html/_modules/promod3/modelling/_closegaps.html
index fa180db91e0932f68fa4b7ad39facb3667f5385f..274675b56c5696d99e24d980f82da9afb4a611fd 100644
--- a/doc/html/_modules/promod3/modelling/_closegaps.html
+++ b/doc/html/_modules/promod3/modelling/_closegaps.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>promod3.modelling._closegaps &mdash; ProMod3 1.1.0 documentation</title>
+    <title>promod3.modelling._closegaps &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,14 +23,16 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../../../index.html" />
+    <link rel="top" title="ProMod3 1.2.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -38,90 +40,95 @@
           <div class="body" role="main">
             
   <h1>Source code for promod3.modelling._closegaps</h1><div class="highlight"><pre>
-<span class="sd">&#39;&#39;&#39;High-level functionality for modelling module to close gaps. Added in the</span>
+<span></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="c"># internal</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="c"># external</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="c">###############################################################################</span>
-<span class="c"># loop candidate selection setup</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="c"># returns (min_idx, min_score)</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="c"># dummy check</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="s">&quot;Need at least 1 candidate to choose from!&quot;</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="c"># setup weights</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">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="c"># 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="c"># copy to avoid changing db_scores</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="c"># 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="o">.</span><span class="n">backbone_scorer</span><span class="p">,</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="c"># add all atom scores?</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="c"># 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="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="c"># extract relevant loop candidates and scores</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="c"># add all atom scores</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="c"># get / return best</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="c"># translate to original indexing for all atom</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="c">###############################################################################</span>
-<span class="c"># helper functions</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="c"># DO NOT USE full ext. with max_len = -1 as this can use LOTS of memory</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="s">&quot;Cannot use neg. max_length with full extender!&quot;</span><span class="p">)</span>
-    <span class="c"># return appropriate gap extender</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="c"># get extender_penalties (note: changes as gaps filled)</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="c"># setup scoring extender</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="s">&quot;Cannot use ScoringGapExtender w/o max_length.&quot;</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>
@@ -132,24 +139,25 @@
                                <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="c"># helper for consistent logging...</span>
-    <span class="n">scor_str</span> <span class="o">=</span> <span class="s">&quot;BB&quot;</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="s">&quot;_DB&quot;</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="s">&quot;_AA&quot;</span>
-    <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s">&quot;Resolved </span><span class="si">%s</span><span class="s"> by filling </span><span class="si">%s</span><span class="s"> (</span><span class="si">%d</span><span class="s"> candidates, </span><span class="si">%s</span><span class="s">)&quot;</span> <span class="o">%</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">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="c"># get chain for gap</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="c"># get min_res_num, max_after_resnum</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>
@@ -158,9 +166,9 @@
         <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="c"># all loop candidates will be scored along the full max. extension ever</span>
-    <span class="c"># reached in the search before, so we build an overall frame, where we</span>
-    <span class="c"># insert the loops</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>
@@ -171,7 +179,7 @@
             <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="c"># prepare loop candidates for scoring</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>
@@ -184,87 +192,88 @@
             <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="c"># db scores requested</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="c"># get best</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">ost</span><span class="o">.</span><span class="n">LogVerbose</span><span class="p">(</span><span class="s">&quot;Gap </span><span class="si">%s</span><span class="s"> - </span><span class="si">%d</span><span class="s"> candidates, best (min) score </span><span class="si">%g</span><span class="s">&quot;</span> <span class="o">%</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="c"># resolve loop</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="c"># update model and clear gaps</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="c"># will return -1 if last gap removed, else next gap idx</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="s">&quot;Failed at loop insertion (</span><span class="si">%s</span><span class="s">)&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">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">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="c"># get chain for gap</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="c"># 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="s">&quot;inf&quot;</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="c"># get current best</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="c"># compare with others</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="c"># penalized by gap length</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="c"># keep best one</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="s">&quot;Gap </span><span class="si">%s</span><span class="s"> - </span><span class="si">%d</span><span class="s"> candidates, best (min) score </span><span class="si">%g</span><span class="s">&quot;</span> <span class="o">%</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="c"># finally resolve loop</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="c"># report</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="c"># update model and clear gaps</span>
-        <span class="c"># will return -1 if last gap removed, else next gap idx</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="s">&quot;Failed at loop insertion (</span><span class="si">%s</span><span class="s">)&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">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">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>
@@ -276,34 +285,35 @@
 <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="s">&#39;closegaps::_CloseLoop&#39;</span><span class="p">)</span>
-    <span class="c"># check consistency</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="s">&quot;Inconsistent list-lengths in _CloseLoop &quot;</span> \
-                           <span class="s">&quot;(</span><span class="si">%d</span><span class="s">, </span><span class="si">%d</span><span class="s">)&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="c"># check for empty candidate list</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="s">&quot;Failed at loop insertion (</span><span class="si">%s</span><span class="s">)&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">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="c"># choose variant</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">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">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="s">&quot;Unknown variant </span><span class="si">%d</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">variant</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="c"># It is possible to specify exact ranges that should be resolved by</span>
-    <span class="c"># the chain_idx and resnum_range parameters.</span>
-    <span class="c"># Let&#39;s check whether we care for that particular gap in case of one</span>
-    <span class="c"># parameter being set.</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>
@@ -316,13 +326,13 @@
         <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="c"># full overlap =&gt; current gap is fully enclosing range</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="c"># partial overlap =&gt; n-stem is within range</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="c"># partial overlap =&gt; c-stem is within range</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>
@@ -330,13 +340,16 @@
         <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="c"># get weights for Monte Carlo sampling (BB only)</span>
-    <span class="k">return</span> <span class="p">{</span><span class="s">&quot;reduced&quot;</span><span class="p">:</span> <span class="mf">3.0</span><span class="p">,</span>
-            <span class="s">&quot;cb_packing&quot;</span><span class="p">:</span> <span class="mf">2.0</span><span class="p">,</span>
-            <span class="s">&quot;hbond&quot;</span><span class="p">:</span> <span class="mf">1.0</span><span class="p">,</span>
-            <span class="s">&quot;clash&quot;</span><span class="p">:</span> <span class="mf">0.05</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="c">###############################################################################</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>
@@ -375,7 +388,8 @@
 <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 :mod:`ost.bindings.dssp`).</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>
@@ -402,48 +416,53 @@
 <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="s">&#39;closegaps::CloseSmallDeletions&#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="s">&quot;Trying to close small deletions (no. of gap(s): </span><span class="si">%d</span><span class="s">).&quot;</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="c"># check/setup scoring</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="n">clash_scorer</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">Get</span><span class="p">(</span><span class="s">&quot;clash&quot;</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="c"># iterating mhandle.gaps. The number of gaps may change during the process,</span>
-    <span class="c"># hence we run by &#39;while&#39;, comparing to the updated list of gaps. If a gap</span>
-    <span class="c"># gets closed, it is deleted from mhandle.gaps, otherwise, current_gap_index</span>
-    <span class="c"># as a counter is increased.</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="c"># in the end this determines if a gap was closed or not</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="c"># work on a copy of the gap, if not closed in the end, no harm done</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="c"># A deletion is a gap of size 0 in the template, this means that to</span>
-        <span class="c"># transform the template sequence into the target sequence, aa&#39;s vanish,</span>
-        <span class="c"># so the target sequence has gap characters, the template not.</span>
-        <span class="c"># If we are not looking at a deletion, do nothing.</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="c"># Try to close gap by relaxation: by checking how far we may extend</span>
-            <span class="c"># the gap, we get the backbone to be stretched. If no more extension</span>
-            <span class="c"># is possible, break out. On first successful relaxation for an</span>
-            <span class="c"># extension, we successfully stop.</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>
@@ -451,8 +470,8 @@
             <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="c"># gather residues for backbone relaxation, check that we get a</span>
-                <span class="c"># bunch of actual residues, otherwise jump to next extension</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>
@@ -467,34 +486,47 @@
                     <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="c"># backbone relaxation, for now we allow 300 steps or stop at</span>
-                <span class="c"># max. force of 0.1</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="c"># check for clashes</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">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="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="c"># if there is no clash and potential energy is low enough we</span>
-                <span class="c"># just solved a gap, delete it and update the scorer for the</span>
-                <span class="c"># changed model</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="s">&quot;Closed: </span><span class="si">%s</span><span class="s"> by relaxing </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</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="c"># On closed gap, it is removed so the no. of gaps goes down by itself.</span>
-        <span class="c"># In case of no success, counter needs to be increased to jump to the</span>
-        <span class="c"># next gap.</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>
+            <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>
@@ -524,54 +556,54 @@
 <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="s">&#39;closegaps::MergeGapsByDistance&#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="s">&quot;Trying to merge </span><span class="si">%d</span><span class="s"> gap(s) with distance </span><span class="si">%d</span><span class="s">.&quot;</span> <span class="o">%</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="c"># indicate if we merged gaps and should check for more</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="c"># The number of gaps changes on merge, so we cannot just iterate them.</span>
-    <span class="c"># If we merged gaps, we do not know if this was the last one so try_again</span>
-    <span class="c"># is set to True. If no more gaps were merged, we stop by leaving try_again</span>
-    <span class="c"># as False.</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="c"># iterate all but the last gap, since we are always looking ahead</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="c"># check that we are on the same chain</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="c"># check for range (if given)</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="c"># no merging of gaps at the end AND the start :)</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="c"># get the distance between the gaps</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="c"># NOTE: -1 can currently only happen when fixing ring punches</span>
-            <span class="c">#       in _pipeline.BuildSidechains</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="s">&quot;Non-sequential gaps found. Ignoring.&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;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="c"># gaps are close enough, combine! combine!</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="s">&quot;Merged gap </span><span class="si">%s</span><span class="s"> and </span><span class="si">%s</span><span class="s"> into </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</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>
+                <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>
@@ -579,7 +611,7 @@
                         <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">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>
@@ -677,139 +709,148 @@
 <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="s">&#39;closegaps::FillLoopsByDatabase&#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="s">&quot;Trying to fill </span><span class="si">%d</span><span class="s"> 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="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="c"># check/setup scoring</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="c"># some score variants cannot deal with multiple insertions in one &quot;gap&quot;</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="c"># do we want DB features?</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="c"># check min_loops_required</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="c"># get biggest loop (w/o stems) stored in db</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="c"># point to the current gap</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="c"># Iterate all gaps. Since the number of gaps may change, always compare to</span>
-    <span class="c"># an updated list. gap_idx is only increased when necessary, e.g. current</span>
-    <span class="c"># gap could not be removed.</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="c"># keep copy of original gap</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="c"># ignore terminal gaps and out-of-range (if range given)</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="c">##################################</span>
-        <span class="c"># find loop candidates</span>
-        <span class="c">##################################</span>
-        <span class="c"># list of LoopCandidates to fill gap</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="c"># list of StructuralGap corresponding to actual_candidates</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="c"># list of dicts with DB specific scores</span>
-        <span class="c"># -&gt; empty if not add_db_features</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="c"># number of loops found (stop if &gt;= max_loops_to_search)</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="c"># maximal length for this gap</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="c"># currently extended gap and gap-extender</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="c"># iteratively extend actual_gap until we have enough loops</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="c"># check if we have enough</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="c"># extend the gap</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="c"># ensure both stems are valid</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="c"># skip if we try to merge insertions when disallowed</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="c"># get candidates for the current loop</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="c"># skip gaps with no loop candidates</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="c"># check for stem rmsd before ApplyCCD</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="c"># try to close loops</span>
+            <span class="c1"># try to close loops</span>
             <span class="k">try</span><span class="p">:</span>
-                <span class="c">#pylint: disable=broad-except</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="c"># CCD should work even if no residues exist before and/or after</span>
-                <span class="c"># the stems. If this is not desired, you should skip those gaps.</span>
-                <span class="c"># 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="s">&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="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="c"># remove clashing ones if desired</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">scorer</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">Get</span><span class="p">(</span><span class="s">&quot;clash&quot;</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="n">score</span> <span class="o">=</span> <span class="n">scorer</span><span class="o">.</span><span class="n">CalculateScore</span><span class="p">(</span><span class="n">bb_list</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="k">if</span> <span class="n">score</span> <span class="o">&lt;</span> <span class="n">clash_thresh</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="c"># check for ring punchings</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>
@@ -817,16 +858,16 @@
                 <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="c"># skip if no loop was successfully closed</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="c"># deal with DB features</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="c"># get subset of stem rmsd scores</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="c"># add profile scores</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>
@@ -835,43 +876,44 @@
                 <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="c"># update list</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="c"># update candidate lists</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="c"># skip if we didn&#39;t find enough</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="s">&quot;Failed at loop insertion (</span><span class="si">%s</span><span class="s">), only </span><span class="si">%d</span><span class="s"> candidates&quot;</span> <span class="o">%</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="c">##################################</span>
-        <span class="c"># close loop</span>
-        <span class="c">##################################</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">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="c"># try next one if we failed</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="c"># all good: fix sidechains if we&#39;re in ring-punch-mode and continue</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>
+            <span class="n">gap_idx</span> <span class="o">=</span> <span class="n">new_idx</span></div>
+
 
-</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">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>
@@ -938,89 +980,96 @@
 <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="s">&#39;closegaps::FillLoopsByMonteCarlo&#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="s">&quot;Trying to fill </span><span class="si">%d</span><span class="s"> gap(s) by Monte Carlo.&quot;</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="c"># check/setup scoring</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="c"># point to the current gap</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="c"># Iterate all gaps. Since the number of gaps may change, always compare to</span>
-    <span class="c"># an updated list. gap_idx is only increased when necessary, e.g. current</span>
-    <span class="c"># gap could not be removed.</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="c"># keep copy of original gap</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="c"># ignore terminal gaps and out-of-range (if range given)</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="c">##################################</span>
-        <span class="c"># find loop candidates</span>
-        <span class="c">##################################</span>
-        <span class="c"># list of LoopCandidates to fill gap</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="c"># list of StructuralGap corresponding to actual_candidates</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="c"># number of loops found (stop if &gt;= max_loops_to_search)</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="c"># currently extended gap and gap-extender</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="c"># each extension can make it at most 1 longer...</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="c"># iteratively extend actual_gap</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="c"># extend the gap</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="c"># make sure, that the loop seq has at least length 3</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="c"># ensure both stems are valid</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="c"># skip if we try to merge insertions with score_variant=0</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="c"># setup sampler, closer, scorer and cooler for MC</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="c"># choose sampler</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>
@@ -1039,66 +1088,69 @@
                 <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="c"># the number of 109 is roughly the number of times we have to apply</span>
-                <span class="c"># a factor of 0.9 to 100 until it reaches a value of 0.001</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="c"># 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="s">&#39;Failed to set up MC components&#39;</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="c"># try to get candidates for the current loop</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="s">&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">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="c"># monte carlo cannot be initialized when the stems are too far</span>
-                <span class="c"># 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="s">&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="s">&quot; stems might be too far away...&quot;</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="c"># check for ring punchings</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="c"># skip if nothing found</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="c"># update candidate lists</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="c">##################################</span>
-        <span class="c"># close loop</span>
-        <span class="c">##################################</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_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="c"># try next one if we failed</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="c"># all good: fix sidechains if we&#39;re in ring-punch-mode and continue</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>
+            <span class="n">gap_idx</span> <span class="o">=</span> <span class="n">new_idx</span></div>
+
 
-</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">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>
@@ -1144,9 +1196,16 @@
 <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="c"># load stuff if needed</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>
@@ -1154,48 +1213,52 @@
     <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="c"># try to close small deletions by relaxing them</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="c"># iteratively merge gaps of distance i and fill loops by database</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">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="c"># if above fails, try DB-fill with less restrictions</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">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">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="c"># close remaining gaps by Monte Carlo</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">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="c"># last resort approach to close large deletions</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>
+                        <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>
 
-    <span class="c"># NOTE:</span>
-    <span class="c"># In the function above, we call :func:`FillLoopsByDatabase` multiple</span>
-    <span class="c"># times. First, we try to close &quot;easy&quot; gaps which require few extensions</span>
-    <span class="c"># (we wish to limit the damage we do on the template) and for which we have</span>
-    <span class="c"># plenty of loop candidates. If some gaps cannot be closed like this, we try</span>
-    <span class="c"># less restrictive options. This approach is helpful if neighboring gaps are</span>
-    <span class="c"># close together and the one closer to the C-terminus is easier to close.</span>
-    <span class="c"># Several variants were evaluated on 1752 target-template-pairs and this one</span>
-    <span class="c"># worked best.</span>
-</div>
 <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>
@@ -1230,24 +1293,24 @@
 <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="s">&#39;closegaps::ModelTermini&#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="c"># get terminal gaps (copies as we&#39;ll clear them as we go)</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="s">&quot;Trying to model </span><span class="si">%d</span><span class="s"> 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="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="c"># check/setup scoring</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="c"># model them</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="c"># extract info</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>
@@ -1257,7 +1320,7 @@
         <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="c"># choose sampler</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>
@@ -1268,50 +1331,51 @@
             <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="c"># choose closer</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="c"># setup scorer</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">start_resnum</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="c"># setup cooler</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="c"># the number of 109 is roughly the number of times we have to apply</span>
-        <span class="c"># a factor of 0.9 to 100 until it reaches a value of 0.001</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="c"># 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="s">&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="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="c"># score candidates</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="o">.</span><span class="n">backbone_scorer</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="c"># report</span>
-            <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s">&quot;Resolved terminal gap </span><span class="si">%s</span><span class="s"> (</span><span class="si">%d</span><span class="s"> candidates)&quot;</span> <span class="o">%</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="c"># update model and clear gap</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="s">&quot;Failed to model terminal gap (</span><span class="si">%s</span><span class="s">)&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">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>
+
 <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>
@@ -1358,51 +1422,51 @@
 <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="s">&#39;closegaps::CloseLargeDeletions&#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="s">&quot;Trying to resolve large deletions (</span><span class="si">%d</span><span class="s"> gap(s) left) by &quot;</span>
-                    <span class="s">&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="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="c"># check/setup scoring</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="c"># point to the current gap</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="c"># Iterate all gaps. Since the number of gaps may change, always compare to</span>
-    <span class="c"># an updated list. gap_idx is only increased when necessary, e.g. current</span>
-    <span class="c"># gap could not be removed.</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="c"># keep copy of original gap</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="c"># check whether we are in the desired range</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="c"># get chain for gap</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="c"># terminal gaps are not deletions...</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="c"># check if too long</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="c"># the function only works, if there are no gaps (del. AND insert.)</span>
-        <span class="c"># towards the n-ter in the same chain, except terminal gaps.</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>
@@ -1413,47 +1477,47 @@
             <span class="n">gap_idx</span> <span class="o">+=</span> <span class="mi">1</span>
             <span class="k">continue</span>
 
-        <span class="c"># extend gap to desired length</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="c"># extend the gap</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="c"># FAIL (Fragger needs at least 3 residues)</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="s">&quot;Failed in CloseLargeDeletions (</span><span class="si">%s</span><span class="s">)&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">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="c"># extract gap info</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="c"># let&#39;s find fragments!</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="c"># We generate two backbonelists based on residues beginning from the </span>
-        <span class="c"># n-terminus:</span>
-        <span class="c"># - bb_list: covers the full thing being sampled (incl. stuff in gap)</span>
-        <span class="c"># - initial_n_stem: n-stem residue before the fragment insertion</span>
-        <span class="c">#</span>
-        <span class="c"># After having found the ideal fragment, we cannot simply insert it into</span>
-        <span class="c"># the model, since all sidechain information would be lost.</span>
-        <span class="c"># We therefore need the initial_n_stem to store the initial N stem</span>
-        <span class="c"># positions. We can then calculate a transformation in the end and </span>
-        <span class="c"># apply it manually in the end for the according atom positions.</span>
-
-        <span class="c"># only put valid residues in bb_seq</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>
@@ -1464,43 +1528,45 @@
                 <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="c"># define region in fragger and region before, including the n_stem of </span>
-        <span class="c"># the fragment</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="c"># all fragments get now sampled and scored</span>
-        <span class="c"># the idea is to sample the fragments by moving the full part towards</span>
-        <span class="c"># the n-terminus</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="s">&quot;inf&quot;</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="s">&quot;clash&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s">&quot;reduced&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">}</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="c"># a simple score gets calculated and best chosen</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">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">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="c"># set best fragment into bb_list and </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="c"># reextract fragment, since the whole thing has undergone a </span>
-        <span class="c"># transformation</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="c"># We finally calculate the transformation from the initial positions</span>
-        <span class="c"># of all residues towards the n-terminus and apply it manually.</span>
-        <span class="c"># this is done to not loose all the sidechain information</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>
@@ -1509,26 +1575,26 @@
                 <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="c"># replace fragment part</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="c"># update score env. (manual to keep all atom sidechains)</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="c"># will return -1 if last gap removed</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="s">&quot;Resolved </span><span class="si">%s</span><span class="s"> by sampling </span><span class="si">%s</span><span class="s"> as linker&quot;</span> <span class="o">%</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="c"># reset all atom env. if it&#39;s set (changes are too drastic so we set all)</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>
+        <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="c"># these methods will be exported into module</span></div>
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;CloseSmallDeletions&#39;</span><span class="p">,</span> <span class="s">&#39;MergeGapsByDistance&#39;</span><span class="p">,</span> <span class="s">&#39;FillLoopsByDatabase&#39;</span><span class="p">,</span>
-           <span class="s">&#39;FillLoopsByMonteCarlo&#39;</span><span class="p">,</span> <span class="s">&#39;CloseGaps&#39;</span><span class="p">,</span> <span class="s">&#39;ModelTermini&#39;</span><span class="p">,</span> 
-           <span class="s">&#39;CloseLargeDeletions&#39;</span><span class="p">)</span>
+<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>
@@ -1554,9 +1620,6 @@
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -1567,8 +1630,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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>
 
diff --git a/doc/html/_modules/promod3/modelling/_denovo.html b/doc/html/_modules/promod3/modelling/_denovo.html
index 22a3704651712098494a0b1ca7fafa8ddac8995e..f50cd4b99d40498b61ea82a2c03c5d7a1c4c4bf1 100644
--- a/doc/html/_modules/promod3/modelling/_denovo.html
+++ b/doc/html/_modules/promod3/modelling/_denovo.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>promod3.modelling._denovo &mdash; ProMod3 1.1.0 documentation</title>
+    <title>promod3.modelling._denovo &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,14 +23,16 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../../../index.html" />
+    <link rel="top" title="ProMod3 1.2.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -38,7 +40,7 @@
           <div class="body" role="main">
             
   <h1>Source code for promod3.modelling._denovo</h1><div class="highlight"><pre>
-<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></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> 
@@ -48,6 +50,7 @@
                                <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>
@@ -87,6 +90,10 @@
 <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>
@@ -98,44 +105,47 @@
 <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="s">&quot;Seq too short for Denovo sampling (min length 9)&quot;</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="c"># check whether profile / psipred_prediction are consistent if present</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="s">&quot;Sequence of profile must match input sequence!&quot;</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="s">&quot;psipred_prediction must be consistent with the input sequence!&quot;</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="c"># we first have to build our own handler</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="c"># Lets setup a scorer with empty environment</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="s">&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="s">&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="s">&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="s">&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="s">&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="s">&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="s">&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="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="c"># the number of 109 is roughly the number of times we have to apply</span>
-    <span class="c"># a factor of 0.9 to 100 until it reaches a value of 0.001</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>
@@ -144,7 +154,8 @@
     <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="mi">1</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_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>
@@ -182,9 +193,6 @@
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -195,8 +203,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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>
 
diff --git a/doc/html/_modules/promod3/modelling/_fragger_handle.html b/doc/html/_modules/promod3/modelling/_fragger_handle.html
index b364e59e84bdc161277db70d4fdd6d75b428d73a..531c603fc37fa40fa0b34bc9931b32ad1dab6c19 100644
--- a/doc/html/_modules/promod3/modelling/_fragger_handle.html
+++ b/doc/html/_modules/promod3/modelling/_fragger_handle.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>promod3.modelling._fragger_handle &mdash; ProMod3 1.1.0 documentation</title>
+    <title>promod3.modelling._fragger_handle &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,14 +23,16 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../../../index.html" />
+    <link rel="top" title="ProMod3 1.2.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -38,7 +40,7 @@
           <div class="body" role="main">
             
   <h1>Source code for promod3.modelling._fragger_handle</h1><div class="highlight"><pre>
-<span class="sd">&#39;&#39;&#39;Python functionality to generate fraggers.&#39;&#39;&#39;</span>
+<span></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>
@@ -60,11 +62,11 @@
     <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="c"># group one, it&#39;s only sequence similarity...</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="c"># group two: [sequence_profile_weight, structure_profile_weight]</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>
@@ -77,7 +79,7 @@
             <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="c"># group_three: [ss_agreement_weight, torsion_weight, seqsim_weight] </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>
@@ -90,8 +92,8 @@
             <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="c"># group_four: [ss_agreement_weight, torsion_weight, </span>
-        <span class="c">#              sequence_profile_weight, structure_profile_weight]</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>
@@ -226,21 +228,21 @@
                  <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="c"># check</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="c"># can either be a SequenceHandle or simple string...</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="s">&quot;Sequence must be consistent with profile!&quot;</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="s">&quot;Sequence must be consistent with profile!&quot;</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="s">&quot;Sequence must be consistent with PsipredPred!&quot;</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="c"># keep all objects</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>
@@ -254,7 +256,7 @@
         <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="c"># the torsion samplers are only required if we have a psipred prediction</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>
@@ -278,13 +280,13 @@
 
             <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="s">&#39;H&#39;</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="s">&#39;E&#39;</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="c"># prepare map</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>
@@ -295,12 +297,12 @@
 <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="c"># this is for ranges (i.e. last touched index is end_pos-1)</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="c"># check</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="s">&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="c"># get</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>
@@ -335,12 +337,12 @@
             <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="c"># keep cached</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="c"># 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>
+        <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>
 
@@ -358,23 +360,23 @@
         <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>
+        <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>
+        <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="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="s">&#39;A&#39;</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>
 
@@ -382,13 +384,13 @@
         <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="s">&#39;A&#39;</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>
+        <span class="k">return</span> <span class="n">aa_after</span></div>
 
 
-<span class="c"># these methods will be exported into module</span></div>
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;FraggerHandle&#39;</span><span class="p">,)</span>
+<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>
@@ -414,9 +416,6 @@
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -427,8 +426,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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>
 
diff --git a/doc/html/_modules/promod3/modelling/_molprobity.html b/doc/html/_modules/promod3/modelling/_molprobity.html
index 864c296f37a35cb8b8bf9fb528c6f438c7bffdad..5af12776a9189ac243531d219e89b194a8bf091d 100644
--- a/doc/html/_modules/promod3/modelling/_molprobity.html
+++ b/doc/html/_modules/promod3/modelling/_molprobity.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>promod3.modelling._molprobity &mdash; ProMod3 1.1.0 documentation</title>
+    <title>promod3.modelling._molprobity &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,14 +23,16 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../../../index.html" />
+    <link rel="top" title="ProMod3 1.2.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -38,7 +40,7 @@
           <div class="body" role="main">
             
   <h1>Source code for promod3.modelling._molprobity</h1><div class="highlight"><pre>
-<span class="sd">&#39;&#39;&#39;Binding to external MolProbity tool to get scores.&#39;&#39;&#39;</span>
+<span></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>
@@ -84,46 +86,46 @@
 <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="c"># HELPER</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="s">&#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="s">&#39; &#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</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="c"># 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="s">&quot;phenix.molprobity&quot;</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="s">&#39;MOLPROBITY_EXECUTABLE&#39;</span><span class="p">)</span>
-    <span class="c"># 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="s">&quot;output.quiet=True&quot;</span><span class="p">,</span> \
-           <span class="s">&quot;output.coot=False&quot;</span><span class="p">,</span> <span class="s">&quot;output.probe_dots=False&quot;</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="c"># parse</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="s">&quot;ramachandran outliers&quot;</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="s">&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="s">&quot;favored&quot;</span><span class="p">):</span>
-            <span class="n">result</span><span class="p">[</span><span class="s">&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="s">&quot;rotamer outliers&quot;</span><span class="p">):</span>
-            <span class="n">result</span><span class="p">[</span><span class="s">&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="s">&quot;clashscore&quot;</span><span class="p">):</span>
-            <span class="n">result</span><span class="p">[</span><span class="s">&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="s">&quot;c-beta deviations&quot;</span><span class="p">):</span>
-            <span class="n">result</span><span class="p">[</span><span class="s">&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="s">&quot;molprobity score&quot;</span><span class="p">):</span>
-            <span class="n">result</span><span class="p">[</span><span class="s">&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="s">&quot;rms(bonds)&quot;</span><span class="p">):</span>
-            <span class="n">result</span><span class="p">[</span><span class="s">&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="s">&quot;rms(angles)&quot;</span><span class="p">):</span>
-            <span class="n">result</span><span class="p">[</span><span class="s">&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>
+            <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>
 <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>
@@ -132,29 +134,29 @@
 <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="c"># 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="s">&#39;.pdb&#39;</span><span class="p">)</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="c"># get result</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="c"># clean up</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>
+    <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="s">&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="s">&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="s">&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="s">&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="s">&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="s">&quot;Rotamer outliers&quot;</span><span class="p">])</span> <span class="o">+</span> <span class="s">&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="s">&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="s">&quot;Ramachandran favored&quot;</span><span class="p">])</span> <span class="o">+</span> <span class="s">&quot; %&quot;</span><span class="p">)</span>
-</div>
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;RunMolProbity&#39;</span><span class="p">,</span> <span class="s">&#39;RunMolProbityEntity&#39;</span><span class="p">,</span> <span class="s">&#39;ReportMolProbityScores&#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;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>
@@ -180,9 +182,6 @@
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -193,8 +192,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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>
 
diff --git a/doc/html/_modules/promod3/modelling/_pipeline.html b/doc/html/_modules/promod3/modelling/_pipeline.html
index 2e1e714435baa559314bc1a202cddcfc87fe7177..c1d5adaffcd1f890ae61ad2840f19f3a1b480a06 100644
--- a/doc/html/_modules/promod3/modelling/_pipeline.html
+++ b/doc/html/_modules/promod3/modelling/_pipeline.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>promod3.modelling._pipeline &mdash; ProMod3 1.1.0 documentation</title>
+    <title>promod3.modelling._pipeline &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,14 +23,16 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../../../index.html" />
+    <link rel="top" title="ProMod3 1.2.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -38,25 +40,25 @@
           <div class="body" role="main">
             
   <h1>Source code for promod3.modelling._pipeline</h1><div class="highlight"><pre>
-<span class="sd">&#39;&#39;&#39;High-level functionality for modelling module to build pipelines. Added in </span>
+<span></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="c"># internal</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="c"># external</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="c">###############################################################################</span>
-<span class="c"># helper functions</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>
@@ -64,7 +66,7 @@
 <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="s">&#39;ele=H&#39;</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>
@@ -84,53 +86,53 @@
 <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="c"># try all force fields in order</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="c"># check if we need to add hydrogens heuristically</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="c"># ok now we try...</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="c"># 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="s">&quot;Could not create mm topology for ff </span><span class="si">%d</span><span class="s">. </span><span class="si">%s</span><span class="s">&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="s">&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="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="c"># all good</span>
+            <span class="c1"># all good</span>
             <span class="k">return</span> <span class="n">topo</span>
-    <span class="c"># if we got here, nothing worked</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="c"># connect them first</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="c"># setup connected components</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="c"># try to add topology with special named chain</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="s">&#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">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="s">&quot;Failed to add ligands &quot;</span> <span class="o">+</span> <span class="n">view_res_str</span> <span class="o">+</span> \
-                         <span class="s">&quot; for energy minimization! Skipping...&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;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="c"># merge into main topology</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>
@@ -141,41 +143,41 @@
 <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="s">&#39;pipeline::_SetupMmSimulation&#39;</span><span class="p">)</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="c"># get general settings </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="c"># prepare entity with protein</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="s">&quot;cname!=&#39;_&#39;&quot;</span><span class="p">),</span> <span class="bp">True</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="s">&quot;Failed to setup protein for energy minimization!&quot;</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="c"># 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="s">&quot;cname=&#39;_&#39;&quot;</span><span class="p">),</span> <span class="bp">True</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="c"># use fast CPU platform by default</span>
-    <span class="c"># NOTE: settings.platform only relevant for mm.Simulation!</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="s">&#39;PM3_OPENMM_CPU_THREADS&#39;</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="s">&quot;CpuThreads&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&quot;1&quot;</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="s">&quot;CpuThreads&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">num_cpu_threads</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="c"># switch to &quot;mm.Platform.Reference&quot; as fallback</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="s">&quot;Switched to slower reference platform of OpenMM!&quot;</span><span class="p">)</span>
-    <span class="c"># finally set up the simulation</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>
@@ -183,24 +185,24 @@
 <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="c"># merge ligand chains into _</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="c"># 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="s">&#39;_&#39;</span><span class="p">:</span>
-            <span class="c"># 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="s">&#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="s">&#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="s">&#39;_&#39;</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="c"># remove old chain</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="c">###############################################################################</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>
@@ -231,43 +233,43 @@
 <span class="sd">                            if None.</span>
 <span class="sd">    :type torsion_sampler:  :class:`~promod3.loop.TorsionSampler`</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="s">&#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="s">&quot;Rebuilding sidechains.&quot;</span><span class="p">)</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="c"># check for ring punches</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="c"># try to fix them</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="s">&quot;Trying to fix </span><span class="si">%d</span><span class="s"> 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="c"># backup old gaps</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="c"># new gaps for mhandle</span>
-        <span class="c"># NOTE: we currently do not delete the punched residues here</span>
-        <span class="c">#       BUT they could be deleted when merging gaps below...</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="c"># load stuff if needed</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="c"># fix it</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="c"># re-build sidechains</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="c"># restore gaps</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>
+            <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>
+
 <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>
@@ -311,47 +313,47 @@
 <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="s">&#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="s">&quot;Minimize energy.&quot;</span><span class="p">)</span>
-    <span class="c"># ignore LogInfo in stereochemical problems if output up to info done</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="c"># setup force fields</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="c"># setup mm simulation</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="c"># check for certain failure -&gt; we get NaN if atoms are on top each other</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="s">&quot;OpenMM could not minimize energy as atoms are on top of &quot;</span>
-                     <span class="s">&quot;each other!&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;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="c"># settings to check for stereochemical problems</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="c"># update atoms</span>
-        <span class="n">ost</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">(</span><span class="s">&quot;Perform energy minimization &quot;</span>
-                    <span class="s">&quot;(iteration </span><span class="si">%d</span><span class="s">, energy: </span><span class="si">%g</span><span class="s">)&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="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="c"># check for stereochemical problems</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="s">&quot;aname!=OXT&quot;</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="c"># note: 10,10 parameters below are hard coded bond-/angle-tolerances</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>
@@ -359,91 +361,93 @@
                                                 <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="c"># 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="s">&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="s">&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="s">&quot;No more stereo-chemical problems &quot;</span>
-                        <span class="s">&quot;-&gt; final energy: </span><span class="si">%g</span><span class="s">&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="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="c"># update model</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="s">&quot;ele!=H&quot;</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="c"># return model with hydrogens</span>
-    <span class="k">return</span> <span class="n">simulation_ent</span>
-</div>
+    <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="s">&#39;pipeline::CheckFinalModel&#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="c"># report incomplete models</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="s">&quot;Chain </span><span class="si">%s</span><span class="s"> of returned model contains only </span><span class="si">%d</span><span class="s"> &quot;</span>\
-                           <span class="s">&quot;residues! This typically indicates that the &quot;</span>\
-                           <span class="s">&quot;template is mostly a Calpha trace or contains &quot;</span>\
-                           <span class="s">&quot;too many D-peptides.&quot;</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="s">&quot;Failed to close </span><span class="si">%d</span><span class="s"> gap(s). Returning incomplete model!&quot;</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="c"># check sequences</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="s">&#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="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="s">&quot;Sequence mismatch in chain </span><span class="si">%s</span><span class="s">!&quot;</span>\
-                               <span class="s">&quot; Expected &#39;</span><span class="si">%s</span><span class="s">&#39;. Got &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</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="c"># report ring punchings</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="s">&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="s">&quot; has been punched!&quot;</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="c"># report stereo-chemical problems</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="c"># 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="s">&quot;aname!=OXT&quot;</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="c"># note: 10,10 parameters below are hard coded bond-/angle-tolerances</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="c"># set bool props in model-residues</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="s">&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="s">&quot;CA&quot;</span><span class="p">,</span> <span class="s">&quot;N&quot;</span><span class="p">,</span> <span class="s">&quot;O&quot;</span><span class="p">,</span> <span class="s">&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="s">&quot;stereo_chemical_problem_backbone&quot;</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
-    <span class="c"># report bad residues</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="s">&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="s">&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="s">&quot;Stereo-chemical problem in backbone &quot;</span> <span class="o">+</span> \
-                        <span class="s">&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="s">&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="s">&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="s">&quot;Stereo-chemical problem in sidechain &quot;</span> <span class="o">+</span> \
-                        <span class="s">&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>
+        <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>
 
@@ -484,46 +488,46 @@
 <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="s">&#39;pipeline::BuildFromRawModel&#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="c"># ignore empty models</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="s">&quot;Cannot perform modelling with an empty raw model.&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;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="s">&quot;Starting modelling based on a raw model.&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;Starting modelling based on a raw model.&quot;</span><span class="p">)</span>
 
-    <span class="c"># a bit of setup</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">merge_distance</span> <span class="o">=</span> <span class="mi">4</span>
 
-    <span class="c"># remove terminal gaps</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="c"># close gaps</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="c"># build sidechains</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="c"># minimize energy of final model using molecular mechanics</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="c"># sanity checks</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="c"># done</span>
-    <span class="k">return</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</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="c"># these methods will be exported into module</span></div>
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;BuildFromRawModel&#39;</span><span class="p">,</span> <span class="s">&#39;BuildSidechains&#39;</span><span class="p">,</span> 
-           <span class="s">&#39;MinimizeModelEnergy&#39;</span><span class="p">,</span> <span class="s">&#39;CheckFinalModel&#39;</span><span class="p">)</span>
+<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>
@@ -549,9 +553,6 @@
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -562,8 +563,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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>
 
diff --git a/doc/html/_modules/promod3/modelling/_reconstruct_sidechains.html b/doc/html/_modules/promod3/modelling/_reconstruct_sidechains.html
index 0f4481042177f9a9f53d2889255300e5216c678c..d7c7bff455f34534db648e909c33f71fac8d4e60 100644
--- a/doc/html/_modules/promod3/modelling/_reconstruct_sidechains.html
+++ b/doc/html/_modules/promod3/modelling/_reconstruct_sidechains.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>promod3.modelling._reconstruct_sidechains &mdash; ProMod3 1.1.0 documentation</title>
+    <title>promod3.modelling._reconstruct_sidechains &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,14 +23,16 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../../../index.html" />
+    <link rel="top" title="ProMod3 1.2.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -38,37 +40,37 @@
           <div class="body" role="main">
             
   <h1>Source code for promod3.modelling._reconstruct_sidechains</h1><div class="highlight"><pre>
-<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></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="c">###############################################################################</span>
-<span class="c"># helper functions</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="c"># no idea what it is, so we stick with ALA </span>
-                     <span class="c"># =&gt; don&#39;t model sidechain</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="c"># def. fallback = helix</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="c"># try to get phi from torsion angles</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="s">&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="s">&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="s">&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="s">&quot;C&quot;</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>
@@ -76,19 +78,19 @@
 
 <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="c"># def. fallback = helix </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="c"># try to get psi from torsion angles</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="s">&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="s">&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="s">&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="s">&quot;N&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="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>
@@ -98,7 +100,7 @@
     <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="s">&#39;sidechain::_GetDihedrals&#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>
@@ -114,8 +116,8 @@
         <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="s">&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="s">&quot;c_ter&quot;</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>
@@ -124,15 +126,15 @@
     <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="c"># parse ligand residues</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="c"># special treatment for peptides</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="c"># get more info</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> \
@@ -140,29 +142,28 @@
                 <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="c"># try to add frame residues (ignore exceptions)</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="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">ALA</span> <span class="ow">and</span> <span class="n">rot_id</span> <span class="o">!=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">GLY</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">else</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">fr1</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="c"># ignore peptide treatment and treat below</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="c"># if it failed, treat it as an unknown entity</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="c"># try to add frame residues (skip exceptions)</span>
+            <span class="c1"># try to add frame residues (skip exceptions)</span>
             <span class="k">try</span><span class="p">:</span>
-                <span class="c"># NOTES:</span>
-                <span class="c"># - ConstructFrameResidueHeuristic has fall back if res unknown</span>
-                <span class="c"># - it only deals with few possible ligand cases and has not</span>
-                <span class="c">#   been tested extensively!</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>
@@ -179,18 +180,15 @@
 <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="c"># try to generate frame residues for all existing side chains</span>
-        <span class="c"># skip non-existing sidechains and CYS (if cystein_indices) and update</span>
-        <span class="c"># incomplete_sidechains and cystein_indices</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">if</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">ALA</span> <span class="ow">or</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">GLY</span><span class="p">:</span>
-                <span class="k">continue</span> <span class="c"># no sidechain to model</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>
@@ -198,17 +196,14 @@
             <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="c"># no frame residues to create, just update incomplete_sidechains</span>
-        <span class="c"># and cystein_indices if needed</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="k">if</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">ALA</span> <span class="ow">or</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">GLY</span><span class="p">:</span>
-                <span class="k">continue</span> <span class="c"># no sidechain to model</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>
@@ -220,19 +215,19 @@
 <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="c"># handle cysteins participating in a disulfid bond</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="c"># add FrameResidue</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="c"># set the position in the proteins residues</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="c"># add remaining ones according the given flags</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="c"># already handled</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>\
@@ -271,27 +266,24 @@
                       <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 (e.g. no ALA, GLY).</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="s">&#39;sidechain::_GetRotamerGroups&#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="c"># res.index (res_list[i]) for each modelled sc</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="c">#  linked to residue in residues_with_rotamer_group</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="c"># get frame for score evaluation</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="c"># build rotamers for chosen sidechains</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="c"># get rotamer ID</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">ALA</span> <span class="ow">or</span> <span class="n">rot_id</span> <span class="o">==</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">GLY</span><span class="p">:</span>
-            <span class="k">continue</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>
@@ -302,34 +294,34 @@
             <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="c"># fallback computation of omega as in OST-code</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="s">&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="s">&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="s">&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="s">&quot;CA&quot;</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="c"># omega not set if prev. res. missing</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="c"># get RotamerGroup</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="c"># keep best ones</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>
@@ -345,40 +337,40 @@
 <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="c"># this is required for the disulfid score evaluation</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="c"># some info we have to keep track of when evaluating disulfid bonds</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="c"># check ca, cb</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="s">&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="s">&quot;CB&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">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="c"># get RotamerGroup in case of cysteins, we do FRM in any case...</span>
-        <span class="c"># If we&#39;re suposed to keep the existing sidechains and the processed</span>
-        <span class="c"># cystein contains all required atoms, we manually construct an FRM</span>
-        <span class="c"># rotamer to still allow the rotamer to enter the disulfid bridge </span>
-        <span class="c"># resolving algorithm.  </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="s">&quot;SG&quot;</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="s">&quot;SG&quot;</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="c"># The temperature and self internal_e_prefactor parameter have </span>
-                <span class="c"># been copied from the SCWRLRotamerConstructor. Hacky...</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>               
@@ -401,7 +393,7 @@
                                                <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="c"># get CYS with disulfid bonds and the chosen rotamers</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>
   
@@ -414,10 +406,10 @@
     <span class="k">return</span> <span class="n">disulfid_indices</span><span class="p">,</span> <span class="n">disulfid_rotamers</span>
 
 
-<span class="c">###############################################################################</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="s">&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_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>
@@ -465,16 +457,16 @@
 <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="s">&#39;modelling::ReconstructSidechains&#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="c"># 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="s">&quot;frm&quot;</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="s">&quot;rrm&quot;</span><span class="p">:</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="s">&quot;Only </span><span class="se">\&quot;</span><span class="s">rrm</span><span class="se">\&quot;</span><span class="s"> and </span><span class="se">\&quot;</span><span class="s">frm</span><span class="se">\&quot;</span><span class="s"> allowed for rotamer_model!&quot;</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">LoadDunbrackLib</span><span class="p">()</span>
@@ -482,66 +474,66 @@
     <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="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="c"># 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="s">&quot;peptide=true and cname!=&#39;_&#39;&quot;</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="c"># parse residues (all lists of length len(prot.residues))</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="c"># set nter and cter (needed in _AddBackboneFrameResidues)</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="s">&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="s">&quot;c_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="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="c"># 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="c"># 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="c"># residue indices</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="c"># add ligands?</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="s">&quot;cname=&#39;_&#39;&quot;</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="c"># check special handling of cysteins</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="c"># residue indices of cysteins</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="c"># update frame_residues, incomplete_sidechains, cystein_indices</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="c"># update frame_residues, incomplete_sidechains with cysteins (if needed)</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="c"># get disulfid bridges and according rotamers</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="c"># update frame_residues, incomplete_sidechains</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="c"># update frame_residues, incomplete_sidechains</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="c"># get rotamer groups and residues they&#39;re linked to</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="c"># set up graph and solve to get best rotamers</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>
@@ -557,7 +549,7 @@
             <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="c"># update structure</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>
@@ -565,11 +557,11 @@
             <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="s">&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>
+            <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="c"># these methods will be exported into module</span></div>
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;ReconstructSidechains&#39;</span><span class="p">,)</span>
+<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>
@@ -595,9 +587,6 @@
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -608,8 +597,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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>
 
diff --git a/doc/html/_modules/promod3/modelling/_ring_punches.html b/doc/html/_modules/promod3/modelling/_ring_punches.html
index 5d01cf28297385b05f35c93061be5b2e7b6ec8ce..4b771e840db23370bf8db5fe918d73265fbcbcfb 100644
--- a/doc/html/_modules/promod3/modelling/_ring_punches.html
+++ b/doc/html/_modules/promod3/modelling/_ring_punches.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>promod3.modelling._ring_punches &mdash; ProMod3 1.1.0 documentation</title>
+    <title>promod3.modelling._ring_punches &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,14 +23,16 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../../../index.html" />
+    <link rel="top" title="ProMod3 1.2.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -38,7 +40,7 @@
           <div class="body" role="main">
             
   <h1>Source code for promod3.modelling._ring_punches</h1><div class="highlight"><pre>
-<span class="sd">&#39;&#39;&#39;Helper functions to deal with ring punchings.&#39;&#39;&#39;</span>
+<span></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>
@@ -47,8 +49,8 @@
 
 <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="s">&quot;ring_punches::_AddRing&quot;</span><span class="p">)</span>
-    <span class="c"># get exisiting atom positions</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>
@@ -59,34 +61,34 @@
             <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="c"># all good?</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="c"># all the ring there -&gt; good</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="s">&#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="c"># incomplete proline: 3 BB-pos there</span>
-        <span class="c"># get ring-plane from 3 pos</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="c"># fit circle in plane through 3 points:</span>
-        <span class="c"># - build 2 planes normal to ring-plane and vector connecting 2 points</span>
-        <span class="c"># - intersect 2 planes and resulting line with ring-plane  -&gt; DONE</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="c"># add ring</span>
+    <span class="c1"># add ring</span>
     <span class="k">if</span> <span class="n">allgood</span><span class="p">:</span>
-        <span class="c"># get ring radius</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="c"># append to list</span>
-        <span class="n">Ring</span> <span class="o">=</span> <span class="n">namedtuple</span><span class="p">(</span><span class="s">&#39;Ring&#39;</span><span class="p">,</span> <span class="s">&#39;center plane radius residue&#39;</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>
@@ -97,22 +99,22 @@
     <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="c"># check this atom (can be view or handle!)</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="c"># check all bonded partners</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="c"># two bonded atoms on diff. sides of the plane?</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="c"># get intersect</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>
@@ -134,21 +136,21 @@
 <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="s">&#39;ring_punches::GetRings&#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="s">&#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="s">&quot;CG&quot;</span><span class="p">,</span> <span class="s">&quot;CD1&quot;</span><span class="p">,</span> <span class="s">&quot;CD2&quot;</span><span class="p">,</span> <span class="s">&quot;CE1&quot;</span><span class="p">,</span> <span class="s">&quot;CE2&quot;</span><span class="p">,</span> <span class="s">&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="s">&#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="s">&quot;CG&quot;</span><span class="p">,</span> <span class="s">&quot;CD1&quot;</span><span class="p">,</span> <span class="s">&quot;NE1&quot;</span><span class="p">,</span> <span class="s">&quot;CD2&quot;</span><span class="p">,</span> <span class="s">&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="s">&quot;CD2&quot;</span><span class="p">,</span> <span class="s">&quot;CE2&quot;</span><span class="p">,</span> <span class="s">&quot;CE3&quot;</span><span class="p">,</span> <span class="s">&quot;CZ2&quot;</span><span class="p">,</span> <span class="s">&quot;CZ3&quot;</span><span class="p">,</span> <span class="s">&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="s">&#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="s">&quot;CG&quot;</span><span class="p">,</span> <span class="s">&quot;CD2&quot;</span><span class="p">,</span> <span class="s">&quot;ND1&quot;</span><span class="p">,</span> <span class="s">&quot;CE1&quot;</span><span class="p">,</span> <span class="s">&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="s">&#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="s">&quot;N&quot;</span><span class="p">,</span> <span class="s">&quot;CA&quot;</span><span class="p">,</span> <span class="s">&quot;CB&quot;</span><span class="p">,</span> <span class="s">&quot;CD&quot;</span><span class="p">,</span> <span class="s">&quot;CG&quot;</span><span class="p">])</span>
-    <span class="k">return</span> <span class="n">rings</span>
-</div>
+        <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>
 
@@ -159,20 +161,20 @@
 <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="s">&#39;ring_punches::GetRingPunches&#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="c"># we don&#39;t need to add residues multiple times</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="c"># check neighborhood (3A should be enough)</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>
+    <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>
@@ -184,15 +186,15 @@
 <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="s">&#39;ring_punches::HasRingPunches&#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="c"># check neighborhood (3A should be enough)</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>
+    <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>
 
@@ -207,23 +209,23 @@
 <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="s">&#39;ring_punches::FilterCandidates&#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="c"># precompute rings and range of rings to replace</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="s">&quot;cname=&quot;</span> <span class="o">+</span> <span class="n">chain_name</span> <span class="o">+</span> <span class="s">&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="s">&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="s">&quot;cname!=&quot;</span> <span class="o">+</span> <span class="n">chain_name</span> <span class="o">+</span> <span class="s">&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="s">&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">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="c"># filter loop candidates</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="c"># get loop-entity for checks</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>\
@@ -233,32 +235,32 @@
             <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="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="s">&#39;ring_punches::FilterCandidatesWithSC&#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="c"># precompute rings and range of rings to replace</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="s">&quot;cname=&quot;</span> <span class="o">+</span> <span class="n">chain_name</span> <span class="o">+</span> <span class="s">&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="s">&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="s">&quot;cname!=&quot;</span> <span class="o">+</span> <span class="n">chain_name</span> <span class="o">+</span> <span class="s">&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="s">&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">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="c"># filter loop candidates</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="c"># insert loop into model-copy</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="c"># add sidechains and check for clashes</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>
@@ -269,11 +271,11 @@
             <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>
+            <span class="n">lc_idx</span> <span class="o">+=</span> <span class="mi">1</span></div>
 
-<span class="c"># these methods will be exported into module</span></div>
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;GetRings&#39;</span><span class="p">,</span> <span class="s">&#39;GetRingPunches&#39;</span><span class="p">,</span> <span class="s">&#39;HasRingPunches&#39;</span><span class="p">,</span> <span class="s">&#39;FilterCandidates&#39;</span><span class="p">,</span>
-           <span class="s">&#39;FilterCandidatesWithSC&#39;</span><span class="p">)</span>
+<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>
@@ -299,9 +301,6 @@
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -312,8 +311,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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>
 
diff --git a/doc/html/_modules/test_actions.html b/doc/html/_modules/test_actions.html
index e28652fc4fab9827bcdfea9a5aab29b6a7725292..3e38acd2755e242982dc4cbd339696947ca9543e 100644
--- a/doc/html/_modules/test_actions.html
+++ b/doc/html/_modules/test_actions.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>test_actions &mdash; ProMod3 1.1.0 documentation</title>
+    <title>test_actions &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,14 +23,16 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -38,7 +40,7 @@
           <div class="body" role="main">
             
   <h1>Source code for test_actions</h1><div class="highlight"><pre>
-<span class="sd">&quot;&quot;&quot;</span>
+<span></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>
@@ -46,7 +48,7 @@
 <span class="kn">import</span> <span class="nn">subprocess</span>
 <span class="kn">import</span> <span class="nn">ost</span>
 
-<span class="c"># set verbosity level here, is propagated to all others</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>
@@ -77,11 +79,11 @@
         <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="c"># Determining the pm binary to be called. Going hard-coded is a bad</span>
-        <span class="c"># thing. But this is a unit test and we know where we are as all unit</span>
-        <span class="c"># tests are run in &quot;tests/MODULENAME&quot; within build-folder.</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="s">&#39;stage&#39;</span><span class="p">,</span> <span class="s">&#39;bin&#39;</span><span class="p">,</span> <span class="s">&#39;pm&#39;</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>
 
@@ -103,30 +105,30 @@
 <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="s">&quot;A &#39;pm_action&#39; attribute has to be defined by &quot;</span><span class="o">+</span>
-                               <span class="s">&quot;each subclass of &#39;test_actions.ActionTestCase&#39;&quot;</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="c"># run the action with arguments, wait for the job to finish and capture</span>
-        <span class="c"># output</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="s">&quot;stdout of &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span> <span class="o">%</span> <span class="s">&#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="s">&quot;------&quot;</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="s">&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="s">&quot;stderr of &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span> <span class="o">%</span> <span class="s">&#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="s">&quot;------&quot;</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="s">&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>
+            <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>
@@ -142,12 +144,12 @@
 <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="s">&quot;Exit code of &#39;</span><span class="si">%s</span><span class="s">&#39; &quot;</span> <span class="o">%</span> <span class="s">&#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="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="s">&quot;is supposed to be &#39;</span><span class="si">%d</span><span class="s">&#39; &quot;</span> <span class="o">%</span> <span class="n">exit_code</span><span class="o">+</span>
-                         <span class="s">&quot;but returned as &#39;</span><span class="si">%d</span><span class="s">&#39;.&quot;</span> <span class="o">%</span> <span class="n">exit_code_run</span><span class="p">)</span>
-</div>
+                         <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>
@@ -155,16 +157,16 @@
 <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="s">&quot;Could not find &#39;pm&#39; bin at &#39;</span><span class="si">%s</span><span class="s">&#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="s">&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="s">&quot;__main__&quot;</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="c">#  LocalWords:  attr meth ActionTestCase init str stdout stderr param bool</span>
+<span class="c1">#  LocalWords:  attr meth ActionTestCase init str stdout stderr param bool</span>
 </pre></div>
 
           </div>
@@ -188,9 +190,6 @@
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -201,8 +200,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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>
 
diff --git a/doc/html/_sources/buildsystem.txt b/doc/html/_sources/buildsystem.txt
index 4bb192686d60b60c60d52e9c0e8fb56b3334a91e..a601d619b695a46a2f15352e312e4bdaf91ab90f 100644
--- a/doc/html/_sources/buildsystem.txt
+++ b/doc/html/_sources/buildsystem.txt
@@ -143,11 +143,11 @@ safely delete the whole source folder.
 .. |qmean| replace:: QMEAN
 .. |eigen3| replace:: Eigen 3
 .. |openmm| replace:: OpenMM
-.. _qmean: http://swissmodel.expasy.org/qmean/cgi/index.cgi?
-.. _ost_l: http://www.OpenStructure.org
+.. _qmean: https://swissmodel.expasy.org/qmean/
+.. _ost_l: https://www.OpenStructure.org
 .. _cmake: https://cmake.org/
 .. _python: https://www.python.org/
-.. _boost: http://www.boost.org/
+.. _boost: https://www.boost.org/
 .. _eigen3: http://eigen.tuxfamily.org/index.php?title=Main_Page
 .. _openmm: http://openmm.org
 
diff --git a/doc/html/_sources/changelog.txt b/doc/html/_sources/changelog.txt
index aec8ac1362e2dbbf2f1e4d06a6ec6422e921b3d3..20e7a36a38c83e77511d058c8e9f459732964672 100644
--- a/doc/html/_sources/changelog.txt
+++ b/doc/html/_sources/changelog.txt
@@ -5,7 +5,36 @@
 Changelog
 ================================================================================
 
-Release 1.1
+Release 1.2.0
+--------------------------------------------------------------------------------
+
+* Graph optimizer has been separated from the sidechain module and can now be 
+  used for arbitrary optimization problems. Available optimization algorithms 
+  are TreePack, AStar and MonteCarlo.
+* Make it possible to distinguish between the scores of a loop towards a constant
+  environment (external scores) and the scores within the loop itself 
+  (internal scores).
+* Most scores based on pairwise interactions are now pairwise decomposable.
+* Disconnected loops at several locations can be scored at once.
+* Avoid the usage of the DSSP executable and use the OpenStructure internal
+  secondary structure assignment instead.
+* Allow to decide whether the CB atom belongs to the actual rotamer or to the
+  constant frame in sidechain optimization. This can be useful in design 
+  questions, where the identity of a rotamer is not given and you want to 
+  allow glycine or alanine.
+* The naming of the entries in the StructureDB is not strictly limited to 
+  4 letter codes anymore, arbitrary strings can be used instead.
+* Adding coordinates to the StructureDB does not require external tools anymore
+  (msms, dssp etc.), internal implementations are used instead.
+* The data that is stored in a StructureDB can be controlled at initialization,
+  everything except the sequence and the actual coordinates is optional.
+* Entries in the StructureDB can be removed again.
+* Allow to search positions of arbitrary copies in DynamicSpatialOrganizer 
+  by providing RT operators.
+* Several minor bug fixes, improvements, and speed-ups
+
+
+Release 1.1.0
 --------------------------------------------------------------------------------
 
 * Updated dependencies: need Eigen 3.3.0 and OST 1.7
diff --git a/doc/html/_sources/contributing.txt b/doc/html/_sources/contributing.txt
index 832af70cc2e46a71d3850967a075a8f423ece6d8..ae3c842c641522624e55d208c51e6a146773a033 100644
--- a/doc/html/_sources/contributing.txt
+++ b/doc/html/_sources/contributing.txt
@@ -201,7 +201,7 @@ sporting a single monolithic :file:`test_sidechain_reconstruction.py`.
 |python| code is evaluated using its own :py_docs:`unit testing framework
 <library/unittest.html>` with a little help from |ost_s|_ (|C++| uses the
 |boost| `Test Library
-<http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/index.html>`_). The
+<https://www.boost.org/doc/libs/1_53_0/libs/test/doc/html/index.html>`_). The
 basic scheme is to import your module, subclass :class:`unittest.TestCase` and
 make the whole file runnable as script using the most common |nameattr|_
 attribute. As an example we test the 
@@ -477,7 +477,7 @@ repository comes with a top-level :file:`doc` directory.
 
 While you should not spend to much time thinking about how to format
 documentation, here is a helpful list of standard formatters:
-http://sphinx-doc.org/markup/inline.html
+http://sphinx-doc.org/en/stable/markup/inline.html
 
 If you write new functionality for |project|, or fix bugs, feel free to extend
 the :file:`CHANGELOG` file. It will be automatically pulled into the
diff --git a/doc/html/_sources/core/graph_minimizer.txt b/doc/html/_sources/core/graph_minimizer.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a1ddb9639f2816086ee62f64861e5e2e5b9dacb2
--- /dev/null
+++ b/doc/html/_sources/core/graph_minimizer.txt
@@ -0,0 +1,235 @@
+Graph Minimizer
+================================================================================
+
+.. currentmodule:: promod3.core
+
+The graph minimizer solves an energy minimization problem where we have n
+nodes :math:`N_i`, with each node having several possible solutions. 
+Every solution has a self energy :math:`E_{self}` and pairwise energies in between nodes
+are possible. The goal is to select exactly one solution per node to obtain 
+a set :math:`X=[x_1, x_2, ..., x_n]` that minimizes:
+
+.. math::
+  F(X)=\displaystyle\sum_iE_{self}(N_i[x_i]) +\displaystyle \sum_i \displaystyle \sum_{j>i}E_{pair}(N_i[x_i], N_j[x_j])
+
+
+
+.. class:: GraphMinimizer
+
+  .. method:: AddNode(self_energies) 
+
+    Adds a node to the graph. 
+
+    :param self_energies: Directly controls the number of possible solutions in that
+                          node and assigns the corresponding self energies
+    :type self_energies:  :class:`list` of :class:`float`
+
+    :returns:           The idx of the added node
+    :rtype:             :class:`int`
+
+
+  .. method:: AddEdge(node_idx_one, node_idx_two, pairwise_energies) 
+
+    Adds an edge between the specified nodes.
+
+    :param node_idx_one: Index of the first node
+    :param node_idx_two: Index of the second node
+    :param pairwise_energies: The pairwise energies that contribute to the 
+                              overall energy function. There must be a list for
+                              every possible solution in node one. All of those
+                              lists must have exactly the length of possible 
+                              solutions in node two.
+
+    :type node_idx_one: :class:`int`
+    :type node_idx_two: :class:`int`
+    :type pairwise_energies: :class:`list` of :class:`list` of :class:`float`
+
+    :returns:           The idx of the added edge
+    :rtype:             :class:`int`
+    :raises: :exc:`~exceptions.RuntimeError` if *node_idx_one* or *node_idx_two* 
+             specify non existent nodes or when *pairwise_energies* is 
+             inconsistent with the number of solutions in the specified nodes.
+
+
+  .. method:: ApplyDEE(node_idx, [e_cut=0.0])
+
+    Applies dead end elimination on one particular node and potentially
+    deactivates certain solutions. The goldstein criterion is described in 
+    [goldstein1994]_.
+
+    :param node_idx:    Node to apply dead end elimination
+    :param e_cut:       If set to
+                        0.0, the default goldstein criterion is applied =>
+                        a solution is removed if it's dominated by all other
+                        solutions in the same node. If you increase this value,
+                        a solution must be dominated by at least this **e_cut**.
+
+    :type node_idx:     :class:`int`
+    :type e_cut:        :class:`float`
+
+    :returns:           :class:`bool` whether any solution has been deactivated.
+
+
+  .. method:: ApplyEdgeDecomposition(edge_idx, epsilon)
+
+    Applies edge decomposition on one particular edge and potentially
+    deactivates it. The exact decomposition  procedure is described in 
+    [krivov2009]_.
+
+    :param edge_idx:    Edge to decompose. 
+    :param epsilon:     The energy threshold to perform edge decomposition.
+
+    :type edge_idx:     :class:`int`
+    :type epsilon:      :class:`float`
+
+
+    :returns:           :class:`bool` whether the edge has been decomposed and 
+                        deactivated 
+
+
+
+  .. method:: Prune(epsilon, [e_cut=0.0, consider_all_nodes=False])
+
+    Performs edge decomposition followed by dead end elimination in an
+    iterative manner until no changes can be observed anymore given 
+    **epsilon**.
+
+    :param epsilon:     The energy threshold to perform edge decomposition.
+    :param e_cut:       Parameter to control dead end elimination.
+    :param consider_all_nodes: Flag, wether the dead end elimination should be
+                               applied to all nodes, or only those who are
+                               connected with an edge removed by edge 
+                               decomposition. This is useful if already a Prune
+                               operation has been performed => only those nodes
+                               connected to a removed edge have the chance for
+                               successful dead end elimination.
+
+    :type epsilon:      :class:`float`
+    :type e_cut:        :class:`float`
+    :type consider_all_nodes: :class:`bool`
+                        
+
+  .. method:: Reset()
+
+    Resets the graph by undoing any pruning operation (DEE and edge decomposition)
+
+
+  .. method:: TreeSolve([max_complexity=inf, initial_epsilon=0.02])
+
+    The method solves a graph using a minimal width tree decomposition
+    approach in an iterative manner. In every iteration, the algorithm performs
+    a pruning step (DEE / Edge Decomposition) and subsequently tries to solve 
+    each connected component in the graph separately. 
+    If the number of possible enumerations in the tree constructetd from a 
+    particular connected component is is larger **max_complexity**, 
+    this component is solved in a later iteration. The algorithm iterates until 
+    all connected components are solved and steadily increases the epsilon value 
+    resulting in a more and more agressive edge decomposition.
+    Algorithm further descsribed in [krivov2009]_.
+
+    :param max_complexity: Max number of possible permutations, that have to 
+                           be enumerated in the resulting tree after tree
+                           decomposition.
+
+    :param initial_epsilon: The initial energy threshold to perform edge
+                            decomposition.
+
+    :type max_complexity: :class:`int`
+    :type initial_epsilon: :class:`float`
+
+    :returns:           A tuple with the first element being a list of indices 
+                        representing the single solutions minimizing
+                        the overall energy function.
+                        The second element is the according energy value.
+
+
+  .. method:: AStarSolve(e_thresh, [max_n=100, max_visited_nodes=100000000])
+
+    The method solves a graph using the A\* algorithm. Besides creating the
+    minimal energy solution, the function produces a maximum of **max_n**
+    solutions sorted by energy. It aborts as soon as it sees the first solution
+    with an energy difference of **e_thresh** to the optimal solution or hits
+    **max_n**. If you're only interested in the optimal solution you should use
+    the TreeSolve function since it's much faster and uses less memory.
+    There is no automatic pruning of the graph using DEE or edge decomposition, 
+    so you have to do it by yourself, otherwise you'll have a looooooong 
+    runtime or even hit the **max_visited_nodes** parameter that caps the memory
+    usage. 
+    To have a valid solution you have to take care that you set the **e_cut** 
+    parameter in the pruning function to **e_tresh**.
+    Algorithm is described in [leach1998]_.
+
+    :param e_thresh:    Maximal energy difference of a solution to the
+                        optimal solution to be considered.
+
+    :param max_n:       The maximum number of solutions that will be generated.
+
+    :param  max_visited_nodes: Caps the memory usage of the algorithm. Besides
+                               The memory used for pairwise energies and self
+                               energies, the algorithm uses about 
+                               **max_visited_nodes** * 20 bytes.
+
+
+    :type e_thresh:      :class:`float`
+    :type max_n:        :class:`int`
+    :type max_visited_nodes: :class:`int`
+
+    :returns:           A tuple with the first element being a list of 
+                        solutions. The second element is a list
+                        of energies for the according solutions.
+
+
+  .. method:: MCSolve([n=100, mc_steps=100000, start_temperature=1000.0, \\
+                       change_frequency=1000, cooling_factor=0.9, seed=0]) 
+
+    Does a total of **n** Monte Carlo runs to find low energy solutions
+    of the graph. Each run starts with a random 
+    configuration. At each of the **mc_steps** steps, a random node and
+    a random solution at that location is selected and an energy difference 
+    of that random selection relative to the current configuration is 
+    estimated. If the difference in energy is negative, the step is 
+    accepted. If not, the step is accepted with a probability given by
+    the temperature dependent Metropolis criterion
+    :math:`exp^{\left(\frac{-e_{diff}}{T}\right)}`.
+    The temperature for every run starts with **start_temperature** 
+    and is multiplied every **change_frequency** steps with **cooling_factor**
+    to achieve a simulated annealing effect.
+    There is no automatic pruning of the graph using DEE or edge decomposition,
+    you have to do that by yourself.
+    
+    :param n:           Number of Monte Carlo runs 
+    :param mc_steps:    Number of Monte Carlo steps per run
+    :param start_temperature: Start temperature for the temperature dependent
+                              Metropolis criterion
+    :param change_frequency: Number of steps the temperature stays the same
+    :param cooling_factor: Factor to multiply temperature each 
+                          **change_frequency** steps
+    :param seed:        Seed for random number generator 
+
+    :type n:            :class:`int`
+    :type mc_steps:     :class:`int`
+    :type start_temperature: :class:`float`
+    :type change_frequency: :class:`int`
+    :type cooling_factor: :class:`float`
+    :type seed:         :class:`float`
+
+    :returns:           A tuple with the first element being a list of 
+                        solutions. The second element is a list
+                        of energies for the according solutions.
+
+  .. method:: NaiveSolve()
+
+    Don't even think of using this... This function only exists for debug 
+    purposes and does the full enumeration of the solution space. 
+    It might become faster with the appropriate  
+    `techniques <https://www.youtube.com/watch?v=fQGbXmkSArs>`_.
+
+    :returns:           A tuple with the first element being a list of indices 
+                        representing the single solutions minimizing
+                        the overall energy function.
+                        The second element is the according energy value.          
+
+
+.. [goldstein1994] Goldstein RF (1994). Efficient rotamer elimination applied to protein side-chains and related spin glasses. Biophys J.
+
+.. [leach1998] Leach AR, Lemon AP (1998). Explring the conformational space of prootein side chains using dead-end elimination and the A* algorithm. Proteins.
diff --git a/doc/html/_sources/core/index.txt b/doc/html/_sources/core/index.txt
index 17f9534aea783a5b313ec58c5ba52b4b9d199fcc..2af5fca9cace92deef375d4857a1c9b55f9ec0d5 100644
--- a/doc/html/_sources/core/index.txt
+++ b/doc/html/_sources/core/index.txt
@@ -16,3 +16,4 @@ Contents:
   helper
   geometry
   runtime_profiling
+  graph_minimizer
diff --git a/doc/html/_sources/loop/structure_db.txt b/doc/html/_sources/loop/structure_db.txt
index 631811ed79575c01da39b5dba4b94ad6a54729b2..a967d08a3823e6ae0eba26410ba7bdfa313ba358 100644
--- a/doc/html/_sources/loop/structure_db.txt
+++ b/doc/html/_sources/loop/structure_db.txt
@@ -3,30 +3,37 @@ Structural Data
 
 .. currentmodule:: promod3.loop
 
-The structural database serves as a container for structural backbone
-and profile data. It can be filled with chains of pdb structures with their
-corresponding profiles as they are produced by the HHSuite tools [soding2005]_. 
-Structural and profile data get complemented by with additional information.
-Following features get stored on a per residue basis:
-
-* The amino acid one letter code
-* The coordinates of the backbone atoms (N,CA,C,O)
-* The phi/psi dihedral angles
-* The secondary structure state as defined by dssp
-* The solvent accessibility in square Angstrom 
-* The residue depth defined as the average distance from all atoms of a
-  residue to the closest surface vertex as calculated by msms [sanner1996]_.
-  This is a simplified version of the residue depth as discussed in
-  [chakravarty1999]_ and gets directly calculated when structural information
-  gets added to the StructureDB.
-* The amino acid frequencies as given by an input sequence profile
-* The amino acid frequency derived from structural alignments as described
-  in [zhou2005]_ - Since the calculation of such a profile already requires a 
-  StructureDB, we end up in a hen and egg problem here... When adding
-  structural information to the StructureDB, the according memory gets
-  just allocated and set to zero. The usage of this information
-  is therefore only meaningful if you calculate these profiles
-  and manually set them (or load the provided default database).
+The structural database serves as a container for structural backbone and 
+sequence data. Custom accessor objects can be implemented that relate
+arbitrary features to structural data. Examples provided by ProMod3 include
+accession using matching stem geometry (see: :class:`FragDB`) or sequence
+features (see: :class:`Fragger`). 
+Besides backbone and sequence data, derived features can  
+optionally be stored. E.g. sequence profiles or secondary structure information.
+Optional data includes:
+
+  * The phi/psi dihedral angles
+  * The secondary structure state as defined by dssp
+  * The solvent accessibility in square Angstrom 
+  * The amino acid frequencies as given by an input sequence profile
+  * The residue depth - The residue depth is defined as the minimum distance of 
+    a residue towards any of the exposed residues. 
+    Distances are calculated using CB positions (artificially constructed in case 
+    of glycine) and exposed is defined as:
+    relative solvent accessibility > 25% and at least one atom being exposed
+    to the OUTER surface. To determine whether an atom is part of that outer 
+    surface, the full structure is placed into a 3D grid and a flood fill 
+    algorithm is used to determine the atoms of interest. 
+    Internal cavities are excluded by using this approach. This is a simplified 
+    version of the residue depth as discussed in [chakravarty1999]_ and gets 
+    directly calculated when structural information is added to the StructureDB.
+  * The amino acid frequency derived from structural alignments as described
+    in [zhou2005]_ - Since the calculation of such a profile already requires a 
+    StructureDB, we end up in a hen and egg problem here... When adding
+    structural information to the StructureDB, the according memory gets
+    just allocated and set to zero. The usage of this information
+    is therefore only meaningful if you calculate these profiles
+    and manually set them (or load the provided default database).
 
 Defining Chains and Fragments
 --------------------------------------------------------------------------------
@@ -34,27 +41,45 @@ Defining Chains and Fragments
 .. class:: CoordInfo()
 
   The CoordInfo gets automatically generated when new chains are added to
-  the structural database. It contains internal information of how
-  the according chain is stored in the database.
+  the structural database. It contains internal information of how a 
+  connected stretch of residues is stored in the database.
 
-  .. attribute:: pdb_id
+  .. attribute:: id
 
-    A character residue string containing the 4 character pdb_id and the
-    1 character chain_id. (:class:`str`) 
+    An id string specified when adding the corresponding stretch to the 
+    structure db
+
+  .. attribute:: chain_name
+
+    A chain name string specified when adding the corresponding stretch to the
+    structure db
 
   .. attribute:: offset
 
-    All residues of the added structures are stored in a linear memory layout.
-    The offset parameter tells us where it exactly starts. (:class:`int`)
+    All residues of the added stretch are stored in a linear memory layout.
+    The offset parameter tells us where it exactly starts in the global data 
+    structure. (:class:`int`)
 
   .. attribute:: size
 
-    The length of the stretch of residues. (:class:`int`)
+    The number of residues in that stretch (:class:`int`)
+
+  .. attribute:: start_resnum
+
+    Residue number of first residue in the added stretch. The residue number
+    is relative to the SEQRES provided in the input profile when adding the 
+    stuff to the structure db.
+
+  .. attribute:: shift
+
+    Translation from original coordinates that has been applied before storing
+    structural information in db.
 
 
 .. class:: FragmentInfo(chain_index, offset, length)
 
-  The FragmentInfo defines a fragment in the structural database.
+  The FragmentInfo defines any fragment in the structural database. If you 
+  implement your own accessor object, thats the information you want to store.
 
   :param chain_index:   Fills :attr:`chain_index`
 
@@ -64,17 +89,19 @@ Defining Chains and Fragments
 
   .. attribute:: chain_index
     
-    The index of the chain (defined by :class:`CoordInfo`) in the structure db this particle belongs to. (:class:`int`)
+    The index of the chain (defined by :class:`CoordInfo`) in the structure db 
+    this particle belongs to. (:class:`int`)
 
   .. attribute:: offset
 
-    Index of residue in **chain** the fragment starts. (:class:`int`)
+    Index of residue in **chain** the fragment starts. (0-based, :class:`int`)
 
   .. attribute:: length
 
     Length of the fragment (:class:`int`)
 
 
+
 The Structure Database
 --------------------------------------------------------------------------------
 
@@ -83,18 +110,46 @@ and fill it with content.
 
 .. literalinclude:: ../../../tests/doc/scripts/loop_structure_db.py
 
-Calculating the structural profiles is highly expensive and heavily depends on
+Calculating the structural profiles is expensive and heavily depends on
 the size of the database used as source. If you want to do this for a larger
 database, you might want to consider two things:
 
-1. Use a database of limited size as structural source (something
+1. Use a database of limited size to generate the actual profiles (something
    in between 5000 and 10000 nonredundant chains is enough)
 2. Use the :class:`ost.seq.ProfileDB` to gather profiles produced from jobs
    running in parallel
 
-.. class:: StructureDB()
 
-  .. staticmethod:: Load(filename, load_frequencies=True)
+.. class:: StructureDBDataType
+
+  The StructureDBDataType enum has to be passed at initialization of a 
+  StructureDB in order to define what data you want to store additionally
+  to backbone coordinates and sequence.
+  If you want to store all data possible, use All. If you only want a subset,
+  you can combine some of the datatypes with a bitwise or operation 
+  (see example script for StructureDB). One important note:
+  If you enable AAFrequenciesStruct, the actual information is not automatically
+  assigned. Only the according memory is allocated and set to zero, the actual 
+  information must be assigned manually (see example script again...).
+
+  All, Dihedrals, SolventAccessibilities, ResidueDepths, DSSP, AAFrequencies,
+  AAFrequenciesStruct
+  
+
+.. class:: StructureDB(data_to_store)
+
+  Generates an empty StructureDB that can be filled with content through
+  :func:`AddCoordinates`. The information extracted there is defined by
+  *data_to_store*. Have a look at the :class:`StructureDBDataType` 
+  documentation and at the example script...
+
+  :param data_to_store: Specifies what data to store in the database, several
+                        flags can be combined with a bitwise or operator.
+  :type data_to_store:  :class:`StructureDBDataType` 
+
+
+
+  .. staticmethod:: Load(filename)
                     LoadPortable(filename)
 
     Loads raw binary file generated with :meth:`Save` (optimized for fast
@@ -103,13 +158,6 @@ database, you might want to consider two things:
     
     :param filename: Path to the file from which to load the database.
     :type filename:  :class:`str`
-    :param load_frequencies: If True, the full database including profile
-                             information for every position gets loaded.
-                             A database without profiles loads faster and 
-                             requires less memory. But it's not possible
-                             to add new coordinates or call one of the
-                             profile dependent functions.
-    :type load_frequencies:  :class:`bool`
 
     :returns: The loaded data base
     :rtype:   :class:`StructureDB`
@@ -117,6 +165,7 @@ database, you might want to consider two things:
     :raises:  :exc:`~exceptions.RuntimeError` if file cannot be opened or if
               file cannot be parsed (see :ref:`here <portableIO>` for details).
 
+
   .. method:: Save(filename)
               SavePortable(filename)
 
@@ -127,73 +176,127 @@ database, you might want to consider two things:
     :param filename: Path to the file where the database will be saved
     :type filename:  :class:`str`
 
-    :raises:  :exc:`~exceptions.RuntimeError` if file cannot be opened or if
-              db has been loaded with load_frequencies=False (enforces only
-              complete databases to be saved down)
-
-  .. method:: AddCoordinates(pdb_id, chain_name, chain, surf, prof, \
-                             solvent_accessibility_string="solvent_accessibility")
-
-    This method takes a structural chain and searches the longest stretch of
-    connected residues containing all necessary backbone atoms. This stretch
-    gets then added to the database. Due to technical reasons, The maximal
-    extent along one of the base axis cannot exceed 650 A.
-    Following features are expected to be set on a per residue level in *chain*:
-    The secondary structure (e.g. call :meth:`ost.mol.alg.AssignSecStruct` on the
-    full :class:`ost.mol.EntityView` the *chain* belongs to) and
-    the solvent accessibility assigned using a float property with name 
-    *solvent_accessibility_string* as name on a per residue level (e.g. call 
-    :meth:`ost.mol.alg.Accessibility` on the full :class:`ost.mol.EntityView`
-    the chain belongs to and take care to pass the appropriate
-    *solvent_accessibility_string*).
-
-    :param pdb_id:      4-letter code of the structure the chain belongs to
-    :param chain_name:  Name of the chain consisting of one letter
-    :param chain:       The actual chain 
-    :param surf:        A surface describing the solvent accessible surface
-                        (we advise you to provide a surface estimated with the
-                        full :class:`ost.mol.EntityView` the *chain* belongs to)
-    :param prof:        Profile information for this *chain*.
-    :param solvent_accessibility_string: Name of float property where the 
-                                         solvent accessibilities are stored
-                                         on a per residue basis in *chain*
-
-    :type pdb_id:       :class:`str`
+    :raises:  :exc:`~exceptions.RuntimeError` if file cannot be opened 
+
+
+  .. method:: HasData(data_type)
+
+    Checks, whether requested data type is available in the current database.
+
+    :param data_type:   Data type to check
+    :type data_type:    :class:`StructureDBDataType`
+
+    :returns:           Whether the requested datatype is available
+    :rtype:             :class:`bool`
+
+
+  .. method:: AddCoordinates(id, chain_name, ent, seqres, prof=None, \
+                             only_longest_stretch=True)
+
+    This method takes an entity and adds coordinates and the sequence 
+    of one of its chains to the structural database. Additionally, all 
+    data as specified at the initialization of the database is extracted
+    fully automatically by considering the full *ent* (e.g. when 
+    calculating solvent accessibilities etc.).
+    The only exception is AAFrequencies, where a valid sequence profile 
+    is expected in *prof* that has matching sequence with *seqres*
+    All residues in chain with name *chain_name* must have residue numbers 
+    that directly relate them to the *seqres* with an indexing scheme 
+    starting from one.
+    If this is not the case, an error gets thrown. You might want to
+    consider to use :meth:`ost.seq.Renumber` for proper numbering.
+    Based on consecutive numbering and additionally checking for valid
+    peptide bonds, connected stretches are identified
+    and every added connected stretch gets its own entry with 
+    :class:`CoordInfo` as a descriptor. 
+    To avoid cluttering the database with many small fragments, the flag:
+    *only_longest_stretch* can be used. Set it to False if all
+    connected stretches of chain with name *chain_name* should be added.
+    There is one final catch you have to consider: Due to the internal
+    lossy data compression for the positions, the extent in x, y and
+    z - direction for every connected stretch is limited to 655A. This should
+    be sufficient for most structures, but stretches exceeding this maximum
+    are discarded. For storing the structural data given these restraints,
+    a translation is applied that gets stored as the *shift* attribute
+    in the according :class:`CoordInfo` object.
+
+    :param id:          identifier of the added structure (e.g. pdb id)
+    :param chain_name:  Name of the chain in *ent* you want to add
+    :param ent:         The full entity that must contain a chain named
+                        as specified by *chain_name*.
+    :param seqres:      The reference sequence of chain with name *chain_name*
+    :param prof:        Profile information for the chain with name 
+                        *chain_name*. The profile sequence must match *seqres*.
+    :param only_longest_stretch: Flag whether you want to add only the longest
+                                 connected stretch of residues are all connected
+                                 stretches of residues
+
+    :type id:           :class:`str`
     :type chain_name:   :class:`str`
-    :type chain:        :class:`ost.mol.ChainView`
-    :type surf:         :class:`ost.mol.SurfaceHandle`
+    :type ent:          :class:`ost.mol.EntityView`
+    :type seqres:       :class:`ost.seq.SequenceHandle`
     :type prof:         :class:`ost.seq.ProfileHandle`
-    :type solvent_accessibility_string: :class:`str`
+    :type only_longest_strech: :class:`bool`
 
-    :returns: DB index of added chain.
-    :rtype:   :class:`int`
+    :returns: indices of added stretches in db
+    :rtype:   :class:`list` of `int`
 
-    :raises:  :exc:`~exceptions.RuntimeError` if size of chain is too large,
-              when db has been loaded with load_frequencies=False or when the
-              ATOMSEQ form the *chain* can't be aligned with the SEQRES from
-              the *prof*.
+    :raises:  :exc:`~exceptions.RuntimeError` if the residues in chain with
+              name *chain_name* do not match *seqres* given the 
+              residue numbers, when AAFrequencies have to to be extracted and
+              the sequence in *prof* does not match the *seqres* or *prof* is 
+              invalid. 
 
-  .. method:: GetCoordIndex(pdb_id, chain_name)
 
-    :returns: The StructureDB index (in [0, :meth:`GetNumCoords`-1]) of the
-              chain of interest, -1 if it cannot be found.
-    :rtype:   :class:`int`
+  .. method:: RemoveCoordinates(coord_idx) 
+
+    Removes coordinates at specified location and all its associated data. This
+    has an impact on the offset values of all :class:`CoordInfo` objects 
+    that are internally stored afterwards and on the actual coord indices 
+    (all shifted by one). So make sure that you adapt your data access 
+    accordingly! 
+
+    :param coord_idx:   Specifies coordinates to be removed
+    :type coord_idx:    :class:`int`
 
-    :param pdb_id:      4-letter code of the structure the chain belongs to
-    :param chain_name:  Name of the chain consisting of one letter
+    :raises:  :exc:`~exceptions.RuntimeError` if *coord_idx* is invalid
+
+  .. method:: GetCoordIdx(id, chain_name)
+
+    :returns: The StructureDB indices (in [0, :meth:`GetNumCoords`-1]) of 
+              of all coords (connected stretches) with matching 
+              *id* / *chain_name*.
+    :rtype:   :class:`list` of :class:`int`
+
+    :param id:          Identifier given when calling :meth:`AddCoordinates`
+    :param chain_name:  Name of chain given when calling :meth:`AddCoordinates`
 
     :type pdb_id:       :class:`str`
     :type chain_name:   :class:`str`
 
+
   .. method:: GetCoordInfo(idx)
 
-    :returns: Object describing the chain with index *idx*.
+    :returns: Object describing the stretch of connected residues with 
+              index *idx*.
     :rtype:   :class:`CoordInfo`
 
     :param idx: The StructureDB index (in [0, :meth:`GetNumCoords`-1])
     :type idx:  :class:`int`
 
 
+  .. method:: GetNumCoords()
+
+    :returns: Number of connected stretches of residues that have been added to 
+              the database.
+    :rtype:   :class:`int`
+
+
+  .. method:: PrintStatistics()
+
+    Prints out some information about the db.
+
+
   .. method:: GetBackboneList(fragment, sequence)
               GetBackboneList(n_stem, c_stem, fragment, sequence)
 
@@ -212,20 +315,9 @@ database, you might want to consider two things:
     :type c_stem:  :class:`ost.mol.ResidueHandle`
 
     :raises:  :exc:`~exceptions.RuntimeError` if fragment is invalid (happens
-              if the fragment does not fully fit into one of the chains in the
-              database) or if *sequence* contains a one letter code which is not
-              one of the 20 default amino acids.
-
-
-  .. method:: GetNumCoords()
-
-    :returns: Number of chains that have been added to the database.
-    :rtype:   :class:`int`
-
-
-  .. method:: PrintStatistics()
-
-    Prints out some information about the db.
+              if the fragment does not fully fit into one of the connected 
+              stretches in the database) or if *sequence* contains a one letter 
+              code which is not one of the 20 default amino acids.
 
 
   .. method:: GetSequence(fragment)
@@ -238,7 +330,7 @@ database, you might want to consider two things:
 
     :raises:  :exc:`~exceptions.RuntimeError` if fragment is invalid. This is
               the case when the fragment does not fully fit into one of the
-              chains in the database.
+              connected stretches of residues in the database.
 
 
   .. method:: GetDSSPStates(fragment)
@@ -249,9 +341,10 @@ database, you might want to consider two things:
     :param fragment: Fragment definition from which to extract the states.
     :type fragment:  :class:`FragmentInfo`
 
-    :raises:  :exc:`~exceptions.RuntimeError` if fragment is invalid. This is
+    :raises:  :exc:`~exceptions.RuntimeError` if database does not contain dssp 
+              data or if fragment is invalid. This is
               the case when the fragment does not fully fit into one of the
-              chains in the database.
+              connected stretches of residues in the database.
 
 
   .. method:: GetDihedralAngles(fragment)
@@ -262,9 +355,11 @@ database, you might want to consider two things:
     :param fragment: Fragment definition from which to extract the dihedrals.
     :type fragment:  :class:`FragmentInfo`
 
-    :raises:  :exc:`~exceptions.RuntimeError` if fragment is invalid. This is
+    :raises:  :exc:`~exceptions.RuntimeError` if database does not contain 
+              dihedral angle data or if fragment is invalid. This is
               the case when the fragment does not fully fit into one of the
-              chains in the database.
+              connected stretches of residues in the database.
+
 
   .. method:: GetResidueDepths(fragment)
 
@@ -275,9 +370,11 @@ database, you might want to consider two things:
                      depths
     :type fragment:  :class:`FragmentInfo`
 
-    :raises:  :exc:`~exceptions.RuntimeError` if fragment is invalid. This is
+    :raises:  :exc:`~exceptions.RuntimeError` if database does not contain 
+              residue depth data or if fragment is invalid. This is
               the case when the fragment does not fully fit into one of the
-              chains in the database.
+              connected stretches of residues in the database.
+
 
   .. method:: GetSolventAccessibilitites(fragment)
 
@@ -289,9 +386,11 @@ database, you might want to consider two things:
                      accessibilities
     :type fragment:  :class:`FragmentInfo`
 
-    :raises:  :exc:`~exceptions.RuntimeError` if fragment is invalid. This is
+    :raises:  :exc:`~exceptions.RuntimeError` if database does not contain 
+              solvent accessibility data or if fragment is invalid. This is
               the case when the fragment does not fully fit into one of the
-              chains in the database.
+              connected stretches of residues in the database.
+
 
   .. method:: GetSequenceProfile(fragment)
 
@@ -304,10 +403,12 @@ database, you might want to consider two things:
 
     :type fragment:     :class:`FragmentInfo`
 
-    :raises:  :exc:`~exceptions.RuntimeError` if fragment is invalid. This is
+    :raises:  :exc:`~exceptions.RuntimeError` if database does not cotain
+              aa frequency data or if fragment is invalid. This is
               the case when the fragment does not fully fit into one of the
-              chains in the database.
-                        
+              connected stretches of residues in the database.
+                    
+
   .. method:: GetStructureProfile(fragment)
 
     :returns: The structure profile for the residues defined by *fragment* with
@@ -319,44 +420,50 @@ database, you might want to consider two things:
 
     :type fragment:     :class:`FragmentInfo`
 
-    :raises:  :exc:`~exceptions.RuntimeError` if fragment is invalid. This is
+    :raises:  :exc:`~exceptions.RuntimeError` if database does not contain
+              aa frequencies struct data or if fragment is invalid. This is
               the case when the fragment does not fully fit into one of the
-              chains in the database.
+              connected stretches of residues in the database.
 
-  .. method:: GenerateStructureProfile(other_db, fragment)
 
-    Takes the CA positions and residue depths for *fragment* defined from
-    *other_db* to calculate a structure profile using the full internal
-    structural data of this database with their corresponding residue depths.
+  .. method:: GenerateStructureProfile(bb_list, residue_depths)
 
-    :param fragment: Fragment definition from *other_db*.
-    :type fragment:  :class:`FragmentInfo`
-    :param other_db: Structural database from which we extract CA positions and
-                     residue depths for *fragment*.
-    :type other_db:  :class:`StructureDB`
+    Calculates a structure profile for *bb_list* with given *residue_depths*
+    using the full internal data of this StructureDB.
+
+    :param bb_list:  Positions for which to calculate the structural profile
+    :type bb_list:   :class:`BackboneList`
+    :param residue_depths: The residue depth for each residue in *bb_list* 
+                           as you would extract it from any StructureDB 
+                           containing that data. 
+    :type residue_depths:  :class:`list` of :class:`float`
 
     :returns: The structure profile for the input with the BLOSUM62
               probabilities as NULL model.
     :rtype:   :class:`ost.seq.ProfileHandle`
 
     :raises:  :exc:`~exceptions.RuntimeError` if *bb_list* and 
-              *residue_depths* differ in size or when their size is 0
+              *residue_depths* differ in size, when their size is 0
+              or when database does not contain aa frequencies struct data.
 
-  .. method:: SetStructureProfile(chain_idx, prof)
+
+  .. method:: SetStructureProfile(coord_idx, prof)
 
     Takes the *prof* and sets the corresponding StructureProfile
-    frequencies in entry with *chain_idx*
+    frequencies in entry with *coord_idx*
 
     :param prof:      Source of profile frequencies
-    :param chain_idx: StructureDB index of entry for which to set frequencies
+    :param coord_idx: StructureDB index of entry for which to set frequencies
                       (in [0, :meth:`GetNumCoords`-1])
 
     :type prof:       :class:`ost.seq.ProfileHandle`
-    :type chain_idx:  :class:`int`
+    :type coord_idx:  :class:`int`
+
+    :raises: :exc:`~exceptions.RuntimeError` if *coord_idx* does not match
+             any entry in the db, when the size of the *prof* does not
+             exactly match the size of entry at *coord_idx* or when database
+             does not contain aa frequency struct data.
 
-    :raises: :exc:`~exceptions.RuntimeError` if *chain_idx* does not match
-             any entry in the db or when the size of the *prof* does not
-             exactly match the size of entry at *chain_idx*
 
   .. method:: GetSubDB(indices)
 
@@ -437,6 +544,7 @@ This example illustrates how to create a custom FragDB based on a StructureDB:
     :return:    The bin size
     :rtype:     :class:`float`
 
+
   .. method:: AddFragments(fragment_length, rmsd_cutoff, structure_db)
 
     Iterates over all fragments of length **fragment_length** in the given structural database and adds them to the fragment database. Fragments will be skipped if there is already a fragment in the database that has an RMSD to the one being added smaller than **rmsd_cutoff**.
@@ -870,7 +978,6 @@ The PsipredPrediction class
 
 
 .. [soding2005] Söding J (2005). Protein homology detection by HMM-HMM comparison. Bioinformatics 21 (7): 951–960.
-.. [sanner1996] Sanner M, Olson AJ, Spehner JC (1996). Reduced Surface: an Efficient Way to Compute Molecular Surfaces. Biopolymers 38 (3): 305-320.
 .. [chakravarty1999] Chakravarty S, Varadarajan R (1999). Residue depth: a novel parameter for the analysis of protein structure and stability. Structure 7 (7): 723–732.
 .. [zhou2005] Zhou H, Zhou Y (2005). Fold Recognition by Combining Sequence Profiles Derived From Evolution and From Depth-Dependent Structural Alignment of Fragments. Proteins 58 (2): 321–328.
 .. [Jones1999] Jones DT (1999) Protein secondary structure prediction based on position-specific scoring matrices. J. Mol. Biol. 292: 195-202. 
diff --git a/doc/html/_sources/modelling/algorithms.txt b/doc/html/_sources/modelling/algorithms.txt
index 439fd2d9009650a24933a6ccaebb0a6d567c8528..7ff5ae3a33e08ccccdf6d98f87abe2748e1d0d19 100644
--- a/doc/html/_sources/modelling/algorithms.txt
+++ b/doc/html/_sources/modelling/algorithms.txt
@@ -24,11 +24,9 @@ iterative superposition multiple times by using a sliding window to select the
 initial subset and gathers all unique results. These results can be very 
 similar and only differ by single positions. The algorithm therefore reduces
 the amount of solutions by merging them based on a threshold of similarity.
-If the sum of matching positions within the distance threshold divided by
-the maximum length of the two solutions is above a cluster thresh, the two
-solutions get merged by producing a common solution containing the shared
-positions. As a final result, the algorithm therefore detects common rigid
-subsets of positions.
+The similarity is defined by the fraction of positions in solution A that are
+also present in solution B. As a final result, the algorithm therefore detects 
+common rigid subsets of positions.
 
 .. method:: RigidBlocks(bb_list_one, bb_list_two, [window_length = 12, max_iterations=20, distance_thresh=3.0, cluster_thresh=0.9])
 
diff --git a/doc/html/_sources/modelling/loop_candidates.txt b/doc/html/_sources/modelling/loop_candidates.txt
index dc3b5c96a28b7320d2fbb4dbdf47fe2492b49ff1..d0711c5a7c89292a61e3f1547ed28af62841382b 100644
--- a/doc/html/_sources/modelling/loop_candidates.txt
+++ b/doc/html/_sources/modelling/loop_candidates.txt
@@ -67,6 +67,12 @@ The LoopCandidates class
     
     Uses Monte Carlo simulated annealing to sample the loop to be modelled.
     If *initial_bb* is given, every Monte Carlo run starts from that configuration.
+
+    .. warning:: The :class:`~promod3.scoring.BackboneScoreEnv`
+                 attached to *scorer* will be altered in the specified stretch.
+                 You might consider the Stash / Pop mechanism of the 
+                 :class:`~promod3.scoring.BackboneScoreEnv` to restore to the 
+                 original state once the sampling is done.    
  
     :param initial_bb: Initial configuration used for the sampling
     :param seq:        The sequence of residues to be sampled
@@ -181,10 +187,14 @@ The LoopCandidates class
              useful to keep track of scores and other data extracted before.
     :rtype:  :class:`list` of :class:`int`
 
-  .. method:: CalculateBackboneScores(score_container, scorer, \
+  .. method:: CalculateBackboneScores(score_container, scorer, scorer_env,\
                                       start_resnum, chain_idx=0)
-              CalculateBackboneScores(score_container, scorer, keys, \
+              CalculateBackboneScores(score_container, scorer, scorer_env,\
+                                      keys, start_resnum, chain_idx=0)
+              CalculateBackboneScores(score_container, mhandle,\
                                       start_resnum, chain_idx=0)
+              CalculateBackboneScores(score_container, mhandle,\
+                                      keys, start_resnum, chain_idx=0)
               CalculateAllAtomScores(score_container, mhandle, \
                                      start_resnum, chain_idx=0)
               CalculateAllAtomScores(score_container, mhandle, keys, \
@@ -201,7 +211,10 @@ The LoopCandidates class
     :param scorer: Backbone scoring object with set environment for the
                    particular loop modelling problem.
     :type scorer:  :class:`~promod3.scoring.BackboneOverallScorer`
-    :param mhandle: Modelling handle set up for all atom scoring (see
+    :param scorer_env: The scoring environment attached to *scorer*
+    :type scorer_env: :class:`~promod3.scoring.BackboneScoreEnv`
+    :param mhandle: Modelling handle set up scoring (see
+                    :func:`SetupDefaultBackboneScoring`
                     :func:`SetupDefaultAllAtomScoring`).
     :type mhandle:  :class:`ModellingHandle`
     :param keys: Keys of the desired scorers. If not given, we use the set of
@@ -484,15 +497,25 @@ on loop candidates.
   a consistent naming of keys used for backbone and all atom scorers as set up
   by :func:`SetupDefaultBackboneScoring` and :func:`SetupDefaultAllAtomScoring`.
 
+  Different sets of weights are available. You can get general weights 
+  that have been optimized for a non redundant set of loops with lengths [3,14]
+  (including stem residues). The alternative is to get weights that have only
+  been optimized on a length specific subset of loops. By default you get
+  different weights for following lengths: [0,1,2,3,4], [5,6], [7,8], [9,10],
+  [11,12], [13,14]. 
+
   If you choose to modify the weights, please ensure to set consistently named
   keys in here and to use consistently named scorers and scoring computations!
 
-  .. staticmethod:: GetWeights(with_db=False, with_aa=False)
+  .. staticmethod:: GetWeights(with_db=False, with_aa=False,\
+                               length_dependent=False, loop_length=-1)
 
     :return: Named weights to be used when scoring loop candidates. The default
              weights were optimized to give the best performance when choosing
              the loop candidate with the lowest combined score. Each set of
-             weights includes (different) backbone scoring weights.
+             weights includes (different) backbone scoring weights, that are
+             optionally only trained on a subset of loops with corresponding 
+             loop length.
     :rtype:  :class:`dict` (keys: :class:`str`, values: :class:`float`)
 
     :param with_db: True to choose a set of weights including DB specific scores
@@ -500,12 +523,21 @@ on loop candidates.
     :type with_db:  :class:`bool`
     :param with_aa: True to choose a set of weights including all atom scores
     :type with_aa:  :class:`bool`
+    :param length_dependent: Whether to use general weights or their length 
+                             length dependent counterparts.
+    :type length_dependent: :class:`bool`
+    :param loop_length: Length of full loop. If no weights are available for
+                        this length or when *loop_length* is -1, the general
+                        weights are returned.
+    :type loop_length: :class:`int`
 
-  .. staticmethod:: SetWeights(with_db, with_aa, weights)
+  .. staticmethod:: SetWeights(with_db, with_aa, weights,\
+                               length_dependent=False, loop_length=-1)
 
     Overwrite a set of weights as returned by :meth:`GetWeights`.
 
-  .. staticmethod:: GetBackboneWeights(with_db=False, with_aa=False)
+  .. staticmethod:: GetBackboneWeights(with_db=False, with_aa=False,\
+                                       length_dependent=False, loop_length=-1)
 
     :return: Subset of :meth:`GetWeights` for backbone scoring as in
              :meth:`scoring.BackboneOverallScorer.CalculateLinearCombination`.
@@ -515,8 +547,13 @@ on loop candidates.
     :type with_db:  :class:`bool`
     :param with_aa: As in :meth:`GetWeights`
     :type with_aa:  :class:`bool`
+    :param length_dependent: As in :meth:`GetWeights`
+    :type length_dependent:  :class:`bool`
+    :param loop_length: As in :meth:`GetWeights`
+    :type loop_length:  :class:`int`
 
-  .. staticmethod:: GetAllAtomWeights(with_db=False)
+  .. staticmethod:: GetAllAtomWeights(with_db=False, length_dependent=False,\
+                                      loop_length=-1)
 
     :return: Subset of :meth:`GetWeights` for all atom scoring as in
              :meth:`scoring.AllAtomOverallScorer.CalculateLinearCombination`.
@@ -524,6 +561,10 @@ on loop candidates.
 
     :param with_db: As in :meth:`GetWeights`
     :type with_db:  :class:`bool`
+    :param length_dependent: As in :meth:`GetWeights`
+    :type length_dependent:  :class:`bool`
+    :param loop_length: As in :meth:`GetWeights`
+    :type loop_length:  :class:`int`
 
 
   .. staticmethod:: GetStemRMSDsKey()
diff --git a/doc/html/_sources/modelling/loop_closing.txt b/doc/html/_sources/modelling/loop_closing.txt
index 386458ba39abdf80e0b2289a35c5eb25b7cb6463..7ec7230b20a4e32fd9cc1f15a9e84ea7b549c113 100644
--- a/doc/html/_sources/modelling/loop_closing.txt
+++ b/doc/html/_sources/modelling/loop_closing.txt
@@ -197,7 +197,11 @@ the relaxer.
 
   .. method:: Run(bb_list, steps=100, stop_criterion=0.01)
 
-    Performs steepest descent on given BackboneList.
+    Performs steepest descent on given BackboneList. The function possibly fails
+    if there are particles (almost) on top of each other, resulting in NaN 
+    positions in the OpenMM system. The positions of **bb_list** are not touched
+    in this case and the function returns an infinit potential energy. 
+    In Python you can check for that with float("inf").
 
     :param bb_list:     To be relaxed
     :param steps:       number of steepest descent steps
@@ -209,7 +213,7 @@ the relaxer.
     :type steps:        :class:`int`
     :type stop_criterion: :class:`float`
 
-    :return: Forcefield energy upon relaxation
+    :return: Forcefield energy upon relaxation, infinity in case of OpenMM Error
     :rtype:  :class:`float`
 
     :raises:  :exc:`~exceptions.RuntimeError` if *bb_list* has not the same
@@ -332,7 +336,11 @@ Example usage:
   .. method:: Run(sc_data, steps=100, stop_criterion=0.01)
 
     Performs steepest descent for this system and writes updated positions into
-    *sc_data.env_pos.all_pos*.
+    *sc_data.env_pos.all_pos*. The function possibly fails
+    if there are particles (almost) on top of each other, resulting in NaN 
+    positions in the OpenMM system. The positions of *sc_data.env_pos.all_pos* 
+    are not touched in this case and the function returns an infinit potential 
+    energy. In Python you can check for that with float("inf").
 
     :param sc_data: Sidechain reconstruction result to be updated
     :type sc_data:  :class:`~promod3.modelling.SidechainReconstructionData`
@@ -342,7 +350,7 @@ Example usage:
                            that threshold, the relaxation aborts.
     :type stop_criterion:  :class:`float`
 
-    :return: Potential energy after relaxation
+    :return: Potential energy after relaxation, infinity in case of OpenMM Error
     :rtype:  :class:`float`
 
     :raises: :exc:`~exceptions.RuntimeError` if *sc_data* is incompatible with
diff --git a/doc/html/_sources/modelling/monte_carlo.txt b/doc/html/_sources/modelling/monte_carlo.txt
index 328b73d366cf8ce5a6affe7cce3d27a1d6325036..56e572a8788749bde35c415893a964126c5e67b9 100644
--- a/doc/html/_sources/modelling/monte_carlo.txt
+++ b/doc/html/_sources/modelling/monte_carlo.txt
@@ -402,18 +402,29 @@ The scorer asses a proposed conformation and are intended to return a pseudo
 energy, the lower the better.
 
 
-.. class:: LinearScorer(scorer, start_resnum, chain_idx, linear_weights)
+.. class:: LinearScorer(scorer, scorer_env, start_resnum, num_residues,
+                        chain_idx, linear_weights)
 
   The LinearScorer allows to combine the scores available from
   :class:`~promod3.scoring.BackboneOverallScorer` in a linear manner. See
   :meth:`~promod3.scoring.BackboneOverallScorer.CalculateLinearCombination` for a
   detailed description of the arguments.
 
+  .. warning:: The provided *scorer_env* will be altered in every 
+               :func:`GetScore` call.
+               You might consider the Stash / Pop mechanism of the 
+               :class:`~promod3.scoring.BackboneScoreEnv` to restore to the 
+               original state once the sampling is done.
+
   :param scorer: Scorer Object with set environment for the particular loop
                  modelling problem.
   :type scorer:  :class:`~promod3.scoring.BackboneOverallScorer`
+  :param scorer_env: The environment that is linked to the *scorer*
+  :type scorer_env: :class:`~promod3.scoring.BackboneScoreEnv`
   :param start_resnum: Res. number defining the position in the SEQRES.
   :type start_resnum:  :class:`int`
+  :param num_residues: Number of residues to score
+  :type num_residues: :class:`int`
   :param chain_idx: Index of chain the loop(s) belong to.
   :type chain_idx:  :class:`int`
   :param linear_weights: Weights for each desired scorer.
diff --git a/doc/html/_sources/modelling/pipeline.txt b/doc/html/_sources/modelling/pipeline.txt
index db7dc9d5bf060bf81fcca1e3b918b9824d6d145d..175b65c5d6554d15f76076e3bd3c530595a7cf64 100644
--- a/doc/html/_sources/modelling/pipeline.txt
+++ b/doc/html/_sources/modelling/pipeline.txt
@@ -236,10 +236,8 @@ Modelling Steps
     - "reduced": :class:`~promod3.scoring.ReducedScorer`
     - "clash": :class:`~promod3.scoring.ClashScorer`
     - "hbond": :class:`~promod3.scoring.HBondScorer`
-    - "ss_agreement": :class:`~promod3.scoring.SSAgreementScorer`
     - "torsion": :class:`~promod3.scoring.TorsionScorer`
     - "pairwise": :class:`~promod3.scoring.PairwiseScorer`
-    - "density": :class:`~promod3.scoring.DensityScorer`
 
     :param mhandle: The modelling handle. This will set the properties
                     :attr:`~ModellingHandle.backbone_scorer` and
diff --git a/doc/html/_sources/scoring/all_atom_scorers.txt b/doc/html/_sources/scoring/all_atom_scorers.txt
index 5637039287244c727e7e700670d182e2b64bacec..0a1b39b1613522dd671df0b73b32e98dcaac55eb 100644
--- a/doc/html/_sources/scoring/all_atom_scorers.txt
+++ b/doc/html/_sources/scoring/all_atom_scorers.txt
@@ -37,10 +37,10 @@ AllAtomOverallScorer class
     :type env:  :class:`~promod3.loop.AllAtomEnv`
 
   .. method:: CalculateLinearCombination(linear_weights, start_resnum, \
-                                         num_residues, chain_idx=0)
+                                         num_residues, chain_idx)
 
-    Calculate linear combination of scores for the desired loop (extracted from
-    environment) against the set environment (see
+    Calculate linear combination of scores for the desired loop(s) (extracted 
+    from environment) against the set environment (see
     :meth:`AllAtomScorer.CalculateScore`).
 
     :param linear_weights: Weights for each desired scorer. You can add a
@@ -48,14 +48,14 @@ AllAtomOverallScorer class
                            with key "intercept".
     :type linear_weights:  :class:`dict` (keys: :class:`str`,
                            values: :class:`float`)
-    :param start_resnum: Res. number defining the position in the SEQRES
+    :param start_resnum: Res. number(s) defining the position(s) in the SEQRES
                          (see :class:`~promod3.loop.AllAtomEnv` for indexing)
-    :type start_resnum:  :class:`int` / :class:`ost.mol.ResNum`
-    :param num_residues: Length of loop.
-    :type num_residues:  :class:`int`
-    :param chain_idx: Index of chain the loop belongs to
+    :type start_resnum:  :class:`int` / :class:`list` of :class:`int`
+    :param num_residues: Length of loop(s).
+    :type num_residues:  :class:`int` / :class:`list` of :class:`int`
+    :param chain_idx: Index of chain the loop(s) belongs to
                       (see :class:`~promod3.loop.AllAtomEnv` for indexing)
-    :type chain_idx:  :class:`int`
+    :type chain_idx:  :class:`int` / :class:`list` of :class:`int`
 
     :return: Score for the given set of atoms.
     :rtype:  :class:`float`
@@ -91,25 +91,20 @@ AllAtomScorer base class
     :param env: Link scorer to this score environment.
     :type env:  :class:`~promod3.loop.AllAtomEnv`
 
-  .. method:: CalculateScore(start_resnum, num_residues, chain_idx=0)
+  .. method:: CalculateScore(start_resnum, num_residues, chain_idx)
 
-    Calculates score for the desired loop (extracted from environment) against
+    Calculates score for the desired loop(s) (extracted from environment) against
     the set environment. Unless otherwise noted in the scorer, a lower "score"
     is better!
 
-    Note that the structural data of the loop is expected to be in the linked
-    environment before calling this! This behavior is different from the
-    corresponding function in :class:`BackboneScorer` as, for performance
-    reasons, we require all the comparisons to be done against the environment.
-
-    :param start_resnum: Res. number defining the position in the SEQRES
+    :param start_resnum: Res. number(s) defining the position(s) in the SEQRES
                          (see :class:`~promod3.loop.AllAtomEnv` for indexing)
-    :type start_resnum:  :class:`int` / :class:`ost.mol.ResNum`
-    :param num_residues: Length of loop.
-    :type num_residues:  :class:`int`
-    :param chain_idx: Index of chain the loop belongs to
+    :type start_resnum:  :class:`int` / :class:`list` of :class:`int`
+    :param num_residues: Length of loop(s).
+    :type num_residues:  :class:`int` / :class:`list` of :class:`int`
+    :param chain_idx: Index of chain the loop(s) belongs to
                       (see :class:`~promod3.loop.AllAtomEnv` for indexing)
-    :type chain_idx:  :class:`int`
+    :type chain_idx:  :class:`int` / :class:`list` of :class:`int`
 
     :return: Score for the given set of atoms.
     :rtype:  :class:`float`
@@ -121,25 +116,21 @@ AllAtomScorer base class
 
   .. method:: CalculateScoreProfile(start_resnum, num_residues, chain_idx=0)
 
-    Calculates per residue scores for the desired loop (extracted from
+    Calculates per residue scores for the desired loop(s) (extracted from
     environment) against the set environment.
 
-    Note that the structural data of the loop is expected to be in the linked
-    environment before calling this! This behavior is different from the
-    corresponding function in :class:`BackboneScorer` as, for performance
-    reasons, we require all the comparisons to be done against the environment.
-
-    :param start_resnum: Res. number defining the position in the SEQRES
+    :param start_resnum: Res. number(s) defining the position(s) in the SEQRES
                          (see :class:`~promod3.loop.AllAtomEnv` for indexing)
-    :type start_resnum:  :class:`int` / :class:`ost.mol.ResNum`
-    :param num_residues: Length of loop.
+    :type start_resnum:  :class:`int` / :class:`list` of :class:`int`
+    :param num_residues: Length of loop(s).
     :type num_residues:  :class:`int`
-    :param chain_idx: Index of chain the loop belongs to
+    :param chain_idx: Index of chain the loop(s) belongs to
                       (see :class:`~promod3.loop.AllAtomEnv` for indexing)
-    :type chain_idx:  :class:`int`
+    :type chain_idx:  :class:`int` / :class:`list` of :class:`int`
 
-    :return: Scores for the given loop, one for each residue.
-    :rtype:  :class:`list` of :class:`float`
+    :return: Scores for the given loop(s), one for each residue.
+    :rtype:  :class:`list` of :class:`float` / :class:`list` of :class:`list` 
+             of :class:`float`
 
     :raises: same :exc:`~exceptions.RuntimeError` as :meth:`CalculateScore`.
 
@@ -154,8 +145,11 @@ AllAtomInteractionScorer class
   *cutoff* and which are at least *seq_sep* residues apart. An energy is
   assigned to each distance using equally sized bins and distinguishing all
   possible pairs of atoms (usually the energy only differs for chemically
-  distinguishable heavy atoms). The calculated score is normalized by the number
-  of interacting atom pairs.
+  distinguishable heavy atoms). 
+  By default, the scorer calculates the scores by
+  including everything, the stuff set in the environment and the coordinates
+  in the input loops. You can change this behaviour with the according 
+  functions. 
 
   The scorer needs to be initialized either by loading a predefined scorer (e.g.
   :func:`LoadAllAtomInteractionScorer`) or by setting all energies (see :meth:`SetEnergy`).
@@ -204,6 +198,10 @@ AllAtomInteractionScorer class
 
     Setup one energy value. Unless a predefined scorer is loaded, this must be
     called for every pair of heavy atom types and for every *bin* < *bins*.
+    Internal symmetry is enforced => Calling SetEnergy(aaa1, aaa2, bin, energy) is
+    equivalent to calling SetEnergy(aaa1, aaa2, bin, energy) AND
+    SetEnergy(aaa2, aaa1, bin, energy).
+
 
     :param aaa1: Heavy atom type for first interaction partner.
     :type aaa1:  :class:`~promod3.loop.AminoAcidAtom`
@@ -216,6 +214,24 @@ AllAtomInteractionScorer class
 
     :raises: :exc:`~exceptions.RuntimeError` if inputs are invalid
 
+  .. method:: DoInternalScores(do_it) 
+
+    :param do_it:       Whether to include pairwise interactions within the 
+                        loop. True by default.
+    :type do_it:        :class:`bool`
+
+  .. method:: DoExternalScores(do_it) 
+
+    :param do_it:       Whether to include pairwise interactions towards the 
+                        environment. True by default.
+    :type do_it:        :class:`bool`
+
+  .. method:: DoNormalize(do_it) 
+
+    :param do_it:       Whether to normalize the calculated scores by the number
+                        of residues in the input loop. True by default.
+    :type do_it:        :class:`bool`
+
 
 .. function:: LoadAllAtomInteractionScorer()
 
@@ -230,8 +246,7 @@ AllAtomPackingScorer class
 
   Inherits all functionality of :class:`AllAtomScorer`. Evaluates pseudo
   energies by counting surrounding atoms within a certain *cutoff* radius around
-  all heavy atoms not belonging to the assessed residue itself. The calculated
-  score is normalized by the number of atoms being assessed.
+  all heavy atoms not belonging to the assessed residue itself. 
 
   The scorer needs to be initialized either by loading a predefined scorer (e.g.
   :func:`LoadAllAtomPackingScorer`) or by setting all energies (see
@@ -287,6 +302,12 @@ AllAtomPackingScorer class
 
     :raises: :exc:`~exceptions.RuntimeError` if inputs are invalid
 
+  .. method:: DoNormalize(do_it) 
+
+    :param do_it:       Whether to normalize the calculated scores by the number
+                        of residues in the input loop. True by default.
+    :type do_it:        :class:`bool`
+
 
 .. function:: LoadAllAtomPackingScorer()
 
@@ -302,5 +323,25 @@ AllAtomClashScorer class
   Inherits all functionality of :class:`AllAtomScorer`. Calculates a simple
   clash score of all atoms against the environment. There is no need to define
   any parameters here as all interaction energies are fixed (see Eq. (11) in
-  [canutescu2003b]_). The calculated score is normalized by the number of atoms
-  being assessed.
+  [canutescu2003b]_). By default, the scorer calculates the scores by
+  including everything, the stuff set in the environment and the coordinates
+  in the input loops. You can change this behaviour with the according 
+  functions. 
+
+  .. method:: DoInternalScores(do_it) 
+
+    :param do_it:       Whether to include pairwise interactions within the 
+                        loop. True by default.
+    :type do_it:        :class:`bool`
+
+  .. method:: DoExternalScores(do_it) 
+
+    :param do_it:       Whether to include pairwise interactions towards the 
+                        environment. True by default.
+    :type do_it:        :class:`bool`
+
+  .. method:: DoNormalize(do_it) 
+
+    :param do_it:       Whether to normalize the calculated scores by the number
+                        of residues in the input loop. True by default.
+    :type do_it:        :class:`bool`
diff --git a/doc/html/_sources/scoring/backbone_score_env.txt b/doc/html/_sources/scoring/backbone_score_env.txt
index f9c1e18ce2d2537df02f053e2932ab28d24b7712..25980a4d34ba90890e7686c87838fa8dcd0f1679 100644
--- a/doc/html/_sources/scoring/backbone_score_env.txt
+++ b/doc/html/_sources/scoring/backbone_score_env.txt
@@ -12,10 +12,18 @@ BackboneScoreEnv class
   used by the scorers. It is linked to a (list of) seqres (one per chain) at
   construction. The idea is to initialize it at the beginning of the modelling
   process with all known data (positions extracted from template, psipred
-  prediction, density map, etc) and then update the environment whenever a new
-  loop is being added. Note that, depending on the used scorers, some
-  information must be provided for the score to make sense and any env. data can
-  be set at any time before actually calculating a score.
+  prediction, etc). All scorers attached to that environment will see that data 
+  and can calculate scores accordingly.
+  Scoring with this setup is a two step process:
+
+  * Set the positions you want to score in the environment to make it available
+    to all attached scorers
+  * Call the scorers to get the desired scores
+
+  One problem that might occur is that you mess around with the environment and
+  at some point you want to restore the original state. The 
+  :class:`BackboneScoreEnv` provides a Stash / Pop mechanism to perform this 
+  task.
 
   :param seqres: Internal SEQRES to be set (single chain or list with one per
                  chain). Whenever setting structural data, consistency with this SEQRES is enforced.
@@ -94,17 +102,6 @@ BackboneScoreEnv class
              inconsistent with the number of internal chains or when one of the
              predictions' sizes is inconsistent with the internal SEQRES size.
 
-  .. method:: SetMap(map, resolution, all_atom=False)
-
-    Sets an internal density map, which is necessary to calculate some scores.
-
-    :param map:         The density map
-    :type map:          :class:`ost.img.ImageHandle`
-    :param resolution:  Expected resolution of the density map.
-    :type resolution:   :class:`float`
-    :param all_atom:    Whether the map is accurate enough to resolve all atoms.
-    :type all_atom:     :class:`bool`
-
   .. method:: AddPairwiseFunction(function, function_type)
 
     Adds a pairwise function that can be used in :meth:`ApplyPairwiseFunction`.
@@ -139,6 +136,26 @@ BackboneScoreEnv class
               res. numbers is invalid, the interaction partners are the same
               residue or when *f_idx* is an invalid index.
 
+  .. method:: Stash(start_rnum, num_residues, chain_idx) 
+
+    FILO style stashing. You can perform up to 100 stash operations to save
+    the current state of certain stretches in the environment. This state can
+    be restored by calling :func:`Pop`. In one stash operation you can either 
+    stash one stretch by providing integers as input or several stretches by 
+    providing lists of integers.
+
+    :param start_rnum:  start rnum of stretch to stash
+    :param num_residues: length of stretch to stash
+    :param chain_idx:   chain idx of stretch to stash
+
+    :type start_rnum:   :class:`int` / :class:`list` of :class:`int`
+    :type num_residues: :class:`int` / :class:`list` of :class:`int`
+    :type chain_idx:    :class:`int` / :class:`list` of :class:`int`
+
+  .. method:: Pop()
+
+    Remove and apply the the last stash operation.
+
   .. method:: GetSeqres()
 
     :return: SEQRES that was set in constructor (one sequence per chain).
diff --git a/doc/html/_sources/scoring/backbone_scorers.txt b/doc/html/_sources/scoring/backbone_scorers.txt
index ebb0bc300bd52033bb4a020ac0a5a63c390d3617..55a07ec77cc2e0ebc0b619c90c4ebaf824e9531a 100644
--- a/doc/html/_sources/scoring/backbone_scorers.txt
+++ b/doc/html/_sources/scoring/backbone_scorers.txt
@@ -36,55 +36,51 @@ BackboneOverallScorer class
     :param env: Link all scorers to this score environment.
     :type env:  :class:`BackboneScoreEnv`
 
-  .. method:: Calculate(key, bb_list, start_resnum, chain_idx=0)
+  .. method:: Calculate(key, start_resnum, num_residues, chain_idx=0)
 
-    Calculate score(s) for one or many loop(s) with
-    :meth:`BackboneScorer.CalculateScore`.
+    Calculate score for one or several stretches of amino acids given the 
+    current scoring environment.
 
     :param key: Key for desired scorer.
     :type key:  :class:`str`
-    :param bb_list: Loop(s) for which to calculate the given score
-    :type bb_list:  :class:`~promod3.loop.BackboneList` / :class:`list` of
-                    :class:`~promod3.loop.BackboneList`
     :param start_resnum: Res. number defining the position in the SEQRES
                          (see :class:`BackboneScoreEnv` for indexing)
-    :type start_resnum:  :class:`int`
-    :param chain_idx: Index of chain the loop(s) belong to
+    :type start_resnum:  :class:`int` / :class:`list` of :class:`int`
+    :param num_residues: Number of residues in the stretch(es) to score
+    :type num_residues: :class:`int` / :class:`list` of :class:`int`
+    :param chain_idx: Index of chain the stretch(es) belongs to
                       (see :class:`BackboneScoreEnv` for indexing)
-    :type chain_idx:  :class:`int`
+    :type chain_idx:  :class:`int` / :class:`list` of :class:`int`
 
-    :return: Score(s) calculated with the desired scorer for the given loop(s).
-             In the case of multiple loops, the returned list has the same
-             order as the input.
-    :rtype:  :class:`float` / :class:`list` of :class:`float`
+    :return: Score calculated with the desired scorer for the given stretch(es).
+    :rtype:  :class:`float` 
 
     :raises: :exc:`~exceptions.RuntimeError` if there is no scorer with that
              *key* or anything raised in :meth:`BackboneScorer.CalculateScore`.
 
-  .. method:: CalculateLinearCombination(linear_weights, bb_list, start_resnum,\
-                                         chain_idx=0)
+  .. method:: CalculateLinearCombination(linear_weights, start_resnum,\
+                                         num_residues, chain_idx=0)
 
-    Calculate linear combination(s) of scores for one or many loop(s).
+    Calculate linear combination of scores for one or several stretches of 
+    amino acids given the current scoring environment.
 
     :param linear_weights: Weights for each desired scorer. You can add a
                            constant value to each score by defining a weight
                            with key "intercept".
     :type linear_weights:  :class:`dict` (keys: :class:`str`,
                            values: :class:`float`)
-    :param bb_list: Loop(s) for which to calculate the given score
-    :type bb_list:  :class:`~promod3.loop.BackboneList` / :class:`list` of
-                    :class:`~promod3.loop.BackboneList`
     :param start_resnum: Res. number defining the position in the SEQRES
                          (see :class:`BackboneScoreEnv` for indexing)
-    :type start_resnum:  :class:`int`
-    :param chain_idx: Index of chain the loop(s) belong to
+    :type start_resnum:  :class:`int` / :class:`list` of :class:`int`
+    :param num_residues: Number of residues in the stretch(es) to score
+    :type num_residues: :class:`int` / :class:`list` of :class:`int`
+    :param chain_idx: Index of chain the stretch(es) belongs to
                       (see :class:`BackboneScoreEnv` for indexing)
-    :type chain_idx:  :class:`int`
+    :type chain_idx:  :class:`int` / :class:`list` of :class:`int`
 
-    :return: Linear combination(s) of the scores calculated with the desired
-             scorers for the given loop(s). In the case of multiple loops, the
-             returned list has the same order as the input.
-    :rtype:  :class:`float` / :class:`list` of :class:`float`
+    :return: Linear combination of the scores calculated with the desired
+             scorers for the given stretch(es)
+    :rtype:  :class:`float` 
 
     :raises: :exc:`~exceptions.RuntimeError` if *linear_weights* has a *key* for
              which no scorer exists or anything raised in
@@ -103,7 +99,7 @@ BackboneOverallScorer class
   :returns: Loads or creates the default scorers accessible through 
             following keys:
             "cb_packing", "cbeta", "reduced", "clash", "hbond", "ss_agreement",\
-            "torsion", "pairwise", "density"
+            "torsion", "pairwise"
   :rtype:   :class:`BackboneOverallScorer`
 
 
@@ -119,47 +115,46 @@ BackboneScorer base class
     :param env: Link scorer to this score environment.
     :type env:  :class:`BackboneScoreEnv`
 
-  .. method:: CalculateScore(bb_list, start_resnum, chain_idx=0)
+  .. method:: CalculateScore(start_resnum, num_residues, chain_idx=0)
 
-    Calculates score for the given loop internally and against the set
-    environment. Data in the environment, which overlaps with the given
-    *bb_list* is ignored. Unless otherwise noted in the scorer, a lower "score"
-    is better!
+    Calculates score for one or several stretches given the structural 
+    information in the attached environment. Unless otherwise noted in the 
+    scorer, a lower "score" is better!
 
-    :param bb_list: Loop for which to calculate the given score
-    :type bb_list:  :class:`~promod3.loop.BackboneList`
     :param start_resnum: Res. number defining the position in the SEQRES
                          (see :class:`BackboneScoreEnv` for indexing)
-    :type start_resnum:  :class:`int`
-    :param chain_idx: Index of chain the loop belongs to
+    :type start_resnum:  :class:`int` / :class:`list` of :class:`int`
+    :param num_residues: Number of residues in the stretch(es) to score
+    :type num_residues: :class:`int` / :class:`list` of :class:`int`
+    :param chain_idx: Index of chain the stretch(es) belongs to
                       (see :class:`BackboneScoreEnv` for indexing)
-    :type chain_idx:  :class:`int`
+    :type chain_idx:  :class:`int` / :class:`list` of :class:`int`
 
-    :return: Score for the given loop.
+    :return: Score for the given stretch(es).
     :rtype:  :class:`float`
 
     :raises: (for most scorers) :exc:`~exceptions.RuntimeError` if scorer was
              never attached to a score environment, if scorer has never been
-             properly initialized or if *chain_index* / *start_resnum* lead to
-             invalid positions.
+             properly initialized or if *start_resnum* / *num_residues* / 
+             *chain_idx* lead to invalid positions.
 
-  .. method:: CalculateScoreProfile(bb_list, start_resnum, chain_idx=0)
+  .. method:: CalculateScoreProfile(start_resnum, num_residues, chain_idx=0)
 
-    Calculates per residue scores for the given loop internally and against the
-    set environment. Data in the environment, which overlaps with the given
-    *bb_list* is ignored.
+    Calculates per residue scores for one or several stretches given the 
+    structural information in the attached environment.
 
-    :param bb_list: Loop for which to calculate the given scores
-    :type bb_list:  :class:`~promod3.loop.BackboneList`
     :param start_resnum: Res. number defining the position in the SEQRES
                          (see :class:`BackboneScoreEnv` for indexing)
-    :type start_resnum:  :class:`int`
-    :param chain_idx: Index of chain the loop belongs to
+    :type start_resnum:  :class:`int` / :class:`list` of :class:`int`
+    :param num_residues: Number of residues in the stretch(es) to score
+    :type num_residues: :class:`int` / :class:`list` of :class:`int`
+    :param chain_idx: Index of chain the stretch(es) belongs to
                       (see :class:`BackboneScoreEnv` for indexing)
-    :type chain_idx:  :class:`int`
+    :type chain_idx:  :class:`int` / :class:`list` of :class:`int`
 
-    :return: Scores for the given loop, one for each residue.
-    :rtype:  :class:`list` of :class:`float`
+    :return: Scores for the given stretch(es), one for each residue.
+    :rtype:  :class:`list` of :class:`float` or :class:`list` of :class:`list`
+             of :class:`float`
 
     :raises: same :exc:`~exceptions.RuntimeError` as :meth:`CalculateScore`.
 
@@ -171,25 +166,7 @@ CBPackingScorer class
 
   Inherits all functionality of :class:`BackboneScorer`. Evaluates pseudo
   energies by counting the number of other CB positions within a certain
-  *cutoff* radius of the CB position of the residue to be evaluated. The
-  calculated score is normalized by the number of residues in the loop.
-  In the default mode, the scorer scores a :class:`promod3.loop.BackboneList` 
-  given the defined environment. By placing this 
-  :class:`promod3.loop.BackboneList`, the score of the residues in the 
-  environment also change. It is possible to honour this effect by using the 
-  "IncludeEnv" mode. In this alternative mode, every environment residue close 
-  to the input :class:`promod3.loop.BackboneList` also contributes 
-  to the final score by adding the difference in score when the environment 
-  residue sees the original environment and the score when the environment would 
-  be modified by the :class:`promod3.loop.BackboneList`. You choose the mode 
-  by specifically calling the according CalculateEnergy functions. 
-  If you call the CalculateScore function from the parent class
-  (e.g. when the scorer is part of the :class:`BackboneOverallScorer`), it
-  gets checked what mode is currently active. You can toggle the mode by calling
-  the appropriate functions in this class. By default (when you load a scorer or
-  when you create a new scorer) the classic version gets called. If you want to
-  get per residue scores, the "IncludeEnv" mode makes not much sense and the 
-  scorer throws an error if a profile is requeset in this mode.
+  *cutoff* radius of the CB position of the residue to be evaluated. 
 
   The scorer needs to be initialized either by loading a predefined scorer (e.g.
   :func:`LoadCBPackingScorer`) or by setting all energies (see
@@ -245,16 +222,12 @@ CBPackingScorer class
 
     :raises: :exc:`~exceptions.RuntimeError` if inputs are invalid
 
-  .. method:: UseClassicMode()
+  .. method:: DoNormalize(do_it) 
 
-    If you call this function, the default mode is set to classic if the 
-    CalculateScore function from the parent class gets called. 
+    :param do_it:       Whether to normalize the calculated scores by the number
+                        of residues to be scored. True by default.
+    :type do_it:        :class:`bool`
 
-  .. method:: UseIncludeEnvMode()
-
-    If you call this function, the default mode is set to the 
-    described alternative mode if the CalculateScore function from the parent 
-    class gets called. 
 
 .. function:: LoadCBPackingScorer()
 
@@ -270,9 +243,8 @@ CBetaScorer class
   Inherits all functionality of :class:`BackboneScorer`. Evaluates a pairwise
   pseudo interaction energy between CB atoms which are located within a *cutoff*
   and which are at least *seq_sep* residues apart. An energy is assigned to each
-  distance using *bins* equally sized bins and distinguishing all possible pairs
-  of amino acids. The calculated score is normalized by the number of
-  interacting CB pairs.
+  distance using equally sized bins and distinguishing all possible pairs
+  of amino acids.  
 
   The scorer needs to be initialized either by loading a predefined scorer (e.g.
   :func:`LoadCBetaScorer`) or by setting all energies (see :meth:`SetEnergy`).
@@ -321,6 +293,9 @@ CBetaScorer class
 
     Setup one energy value. Unless a predefined scorer is loaded, this must be
     called for every pair of amino acids and for every *bin* < *bins*.
+    Internal symmetry is enforced => Calling SetEnergy(aa1, aa2, bin, energy) is
+    equivalent to calling SetEnergy(aa1, aa2, bin, energy) AND
+    SetEnergy(aa2, aa1, bin, energy).
 
     :param aa1: Amino acid for first interaction partner.
     :type aa1:  :class:`ost.conop.AminoAcid`
@@ -333,6 +308,25 @@ CBetaScorer class
 
     :raises: :exc:`~exceptions.RuntimeError` if inputs are invalid
 
+  .. method:: DoInternalScores(do_it) 
+
+    :param do_it:       Whether to include pairwise interactions between
+                        the scored residues. True by default.
+    :type do_it:        :class:`bool`
+
+  .. method:: DoExternalScores(do_it) 
+
+    :param do_it:       Whether to include pairwise interactions of the scored
+                        residues towards the surrounding environment. 
+                        True by default.
+    :type do_it:        :class:`bool`
+
+  .. method:: DoNormalize(do_it) 
+
+    :param do_it:       Whether to normalize the calculated scores by the number
+                        of residues to be scored. True by default.
+    :type do_it:        :class:`bool`
+
 
 .. function:: LoadCBetaScorer()
 
@@ -348,7 +342,7 @@ ReducedScorer class
   Inherits all functionality of :class:`BackboneScorer`. Evaluates a pairwise
   pseudo interaction energy between the reduced representation of residues.
   Every residue gets represented by its CA position p and a directional
-  component ``v = norm(ca_pos-n_pos) + norm (ca_pos-c_pos)``. Residues with CA
+  component ``v = norm(p-n_pos) + norm(p-c_pos)``. Residues with CA
   distance < *cutoff* and which are at least *seq_sep* residues apart are
   considered to be interacting. For interacting residues r1 and r2, we can
   define a line l between p1 and p2. The potential then considers:
@@ -358,10 +352,6 @@ ReducedScorer class
   * beta => angle between v2 and l
   * gamma => dihedral between (p1+v1,p1,p2,p2+v2)
 
-  Every pairwise interaction within the loop and to the environment gets
-  evaluated according to the given parametrization, summed up and finally
-  normalized by the number of total interactions.
-
   The scorer needs to be initialized either by loading a predefined scorer (e.g.
   :func:`LoadReducedScorer`) or by setting all energies (see :meth:`SetEnergy`).
 
@@ -418,6 +408,11 @@ ReducedScorer class
     called for every pair of amino acids, every *dist_bin* < *dist_bins*, every
     *alpha_bin* < *angle_bins*, every *beta_bin* < *angle_bins* and every
     *gamma_bin* < *dihedral_bins*.
+    Internal symmetry is enforced => Calling 
+    SetEnergy(aa1, aa2, dist_bin, alpha_bin, beta_bin, energy) is
+    equivalent to calling 
+    SetEnergy(aa1, aa2, dist_bin, alpha_bin, beta_bin, energy) AND
+    SetEnergy(aa2, aa1, dist_bin, beta_bin, alpha_bin, energy).
 
     :param aa1: Amino acid for first interaction partner.
     :type aa1:  :class:`ost.conop.AminoAcid`
@@ -436,6 +431,24 @@ ReducedScorer class
 
     :raises: :exc:`~exceptions.RuntimeError` if inputs are invalid
 
+  .. method:: DoInternalScores(do_it) 
+
+    :param do_it:       Whether to include pairwise interactions between
+                        the scored residues. True by default.
+    :type do_it:        :class:`bool`
+
+  .. method:: DoExternalScores(do_it) 
+
+    :param do_it:       Whether to include pairwise interactions of the scored
+                        residues towards the surrounding environment. 
+                        True by default.
+    :type do_it:        :class:`bool`
+
+  .. method:: DoNormalize(do_it) 
+
+    :param do_it:       Whether to normalize the calculated scores by the number
+                        of residues to be scored. True by default.
+    :type do_it:        :class:`bool`
 
 .. function:: LoadReducedScorer()
 
@@ -450,29 +463,27 @@ ClashScorer class
 
   Inherits all functionality of :class:`BackboneScorer`. Calculates a simple
   clash score of a loop itself and with the set environment. There is no need to
-  define any parameters here as all interaction energies are fixed. The
-  calculated score is normalized by the number of residues in the loop.
+  define any parameters here as all interaction energies are fixed (see Eq. (11) 
+  in [canutescu2003b]_). 
 
+  .. method:: DoInternalScores(do_it) 
 
-DensityScorer class
---------------------------------------------------------------------------------
+    :param do_it:       Whether to include pairwise interactions between
+                        the scored residues. True by default.
+    :type do_it:        :class:`bool`
 
-.. class:: DensityScorer
+  .. method:: DoExternalScores(do_it) 
 
-  Inherits all functionality of :class:`BackboneScorer`. Calculates the
-  normalized cross correlation between a density generated from the input
-  :class:`~promod3.loop.BackboneList` and a set map.
+    :param do_it:       Whether to include pairwise interactions of the scored
+                        residues towards the surrounding environment. 
+                        True by default.
+    :type do_it:        :class:`bool`
 
-  This scorer requires that the attached environment has a density map defined
-  (see :meth:`BackboneScoreEnv.SetMap`) as soon as a score is to be calculated.
-  The *resolution* and *all_atom* flags that were specified in SetMap determine
-  how the backbone list is translated into an artificial density map. If
-  *all_atom* is set to False (which is recommended for low resolution maps), the
-  artificial map gets constructed by only using CA positions instead of all
-  atoms.
+  .. method:: DoNormalize(do_it) 
 
-  Note that for this scorer a higher "score" is better! So take care when
-  combining this to other scores, where it is commonly the other way around.
+    :param do_it:       Whether to normalize the calculated scores by the number
+                        of residues to be scored. True by default.
+    :type do_it:        :class:`bool`
 
 
 HBondScorer class
@@ -499,10 +510,6 @@ HBondScorer class
   thats the one from which the energy is extracted. In all other cases, the
   energy is extracted from the 0 state.
 
-  Every pairwise interaction within the loop and to the environment gets
-  evaluated according to the given parametrization, summed up and finally
-  normalized by the number of residues in the loop.
-
   The scorer needs to be initialized either by loading a predefined scorer (e.g.
   :func:`LoadHBondScorer`) or by setting all energies (see :meth:`SetEnergy`).
 
@@ -589,6 +596,25 @@ HBondScorer class
 
     :raises: :exc:`~exceptions.RuntimeError` if inputs are invalid
 
+  .. method:: DoInternalScores(do_it) 
+
+    :param do_it:       Whether to include pairwise interactions between
+                        the scored residues. True by default.
+    :type do_it:        :class:`bool`
+
+  .. method:: DoExternalScores(do_it) 
+
+    :param do_it:       Whether to include pairwise interactions of the scored
+                        residues towards the surrounding environment. 
+                        True by default.
+    :type do_it:        :class:`bool`
+
+  .. method:: DoNormalize(do_it) 
+
+    :param do_it:       Whether to normalize the calculated scores by the number
+                        of residues to be scored. True by default.
+    :type do_it:        :class:`bool`
+
 
 .. function:: LoadHBondScorer()
 
@@ -607,8 +633,7 @@ SSAgreementScorer class
   structure in the model. In every score evaluation, the secondary structure of
   the loop is estimated by searching for hydrogen bonds leading to a secondary
   structure as defined by dssp. The hbonds are searched internally in the loop
-  as well as in the environment. The final score gets summed up over all
-  residues in the loop and normalized by the number of residues.
+  as well as in the environment. 
 
   The scorer needs to be initialized either by loading a predefined scorer (e.g.
   :func:`LoadSSAgreementScorer`) or by setting scores for all possible states
@@ -665,6 +690,11 @@ SSAgreementScorer class
 
     :raises: :exc:`~exceptions.RuntimeError` if inputs are invalid
 
+  .. method:: DoNormalize(do_it) 
+
+    :param do_it:       Whether to normalize the calculated scores by the number
+                        of residues to be scored. True by default.
+    :type do_it:        :class:`bool`
 
 .. function:: LoadSSAgreementScorer()
 
@@ -679,9 +709,7 @@ TorsionScorer class
 
   Inherits all functionality of :class:`BackboneScorer`. Evaluates pseudo
   energies based on the identity of three consecutive residues and the phi/psi
-  dihedral angles of the central residue. Every residue gets evaluated according
-  to the set parametrization and the final score gets normalized by the total
-  number of summed pseudo energies. The first phi and last psi angle get
+  dihedral angles of the central residue. The first phi and last psi angle get
   determined with the help of the environment if set.
 
   The scorer needs to be initialized either by loading a predefined scorer (e.g.
@@ -746,6 +774,11 @@ TorsionScorer class
 
     :raises: :exc:`~exceptions.RuntimeError` if inputs are invalid
 
+  .. method:: DoNormalize(do_it) 
+
+    :param do_it:       Whether to normalize the calculated scores by the number
+                        of residues to be scored. True by default.
+    :type do_it:        :class:`bool`
 
 .. function:: LoadTorsionScorer()
 
@@ -759,14 +792,28 @@ PairwiseScorer class
 .. class:: PairwiseScorer
 
   Inherits all functionality of :class:`BackboneScorer`. Evaluates a list of
-  generic pairwise functions (see :class:`PairwiseFunction`). When evaluating a
-  loop, the scores of all pairwise functions which involve a residue in the loop
-  are summed up (the other residue can be either in the loop or in the env.) and
-  normalized by the number of residues in the loop.
-
-  This scorer assumes that the attached environment has pairwise functions
-  defined (see :meth:`BackboneScoreEnv.ApplyPairwiseFunction`) as soon as a
-  score is to be calculated.
+  generic pairwise functions (see :class:`PairwiseFunction`). 
+  That are set in the attached scoring environment 
+  (see :meth:`BackboneScoreEnv.ApplyPairwiseFunction`).
 
   Note that for this scorer a higher "score" is better! So take care when
   combining this to other scores, where it is commonly the other way around.
+
+  .. method:: DoInternalScores(do_it) 
+
+    :param do_it:       Whether to include pairwise interactions between
+                        the scored residues. True by default.
+    :type do_it:        :class:`bool`
+
+  .. method:: DoExternalScores(do_it) 
+
+    :param do_it:       Whether to include pairwise interactions of the scored
+                        residues towards the surrounding environment. 
+                        True by default.
+    :type do_it:        :class:`bool`, true by default.
+
+  .. method:: DoNormalize(do_it) 
+
+    :param do_it:       Whether to normalize the calculated scores by the number
+                        of residues to be scored. True by default.
+    :type do_it:        :class:`bool`
diff --git a/doc/html/_sources/scoring/index.txt b/doc/html/_sources/scoring/index.txt
index 9b9a97882cf52c828b6d48133c6b721a34cb66b8..983d6b5587c5f70fc9088e6bdac386567fef16c3 100644
--- a/doc/html/_sources/scoring/index.txt
+++ b/doc/html/_sources/scoring/index.txt
@@ -9,8 +9,8 @@
 Tools and algorithms to score loops. The scoring system is split between an
 environment which contains model-specific data and scorers which evaluate loops.
 
-In this example, we load a structure, setup a score environment and a few
-scorers and finally score some loops:
+In this example, we load a structure, setup a score environment, link a few
+scorers to it and finally score some loops:
 
 .. literalinclude:: ../../../tests/doc/scripts/scoring_main.py
 
@@ -22,3 +22,4 @@ Contents:
    backbone_score_env
    backbone_scorers
    all_atom_scorers
+   other_scoring_functions
diff --git a/doc/html/_sources/scoring/other_scoring_functions.txt b/doc/html/_sources/scoring/other_scoring_functions.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f505232e026655cdebf83d068269e805eb99fedd
--- /dev/null
+++ b/doc/html/_sources/scoring/other_scoring_functions.txt
@@ -0,0 +1,56 @@
+Other Scoring Functions
+================================================================================
+
+.. currentmodule:: promod3.scoring
+
+
+Scoring Functions from SCWRL3
+--------------------------------------------------------------------------------
+
+.. method:: SCWRL3PairwiseScore(d, Rij)
+
+  Pairwise score from the SCWRL3 sidechain construction algorithm 
+  [canutescu2003b]_.
+
+  :param d:             Distance between the two interacting particles
+  :param Rij:           Summed hard-sphere radii of the interacting particles.
+                        Suggestions from the paper:
+
+                        - carbon: 1.6
+                        - oxygen: 1.3
+                        - nitrogen: 1.3
+                        - sulfur: 1.7
+
+  :type d:              :class:`float`
+  :type Rij:            :class:`float`
+
+  :returns:             The score
+  :rtype:               :class:`float`
+
+
+.. method:: SCWRL3DisulfidScore(ca_pos_one, cb_pos_one, sg_pos_one\
+                                ca_pos_two, cb_pos_two, sg_pos_two)
+
+  Implements the empirically derived disulfid score from the SCWRL3 sidechain 
+  construction algorithm [canutescu2003b]_.
+
+  :param ca_pos_one:    CA carbon position of first amino acid
+  :param cb_pos_one:    CB carbon position of first amino acid
+  :param sg_pos_one:    SG sulfur position of first amino acid
+  :param ca_pos_two:    CA carbon position of second amino acid
+  :param cb_pos_two:    CB carbon position of second amino acid
+  :param sg_pos_two:    SG sulfur position of second amino acid
+
+  :type ca_pos_one:     :class:`ost.geoom.Vec3`
+  :type cb_pos_one:     :class:`ost.geoom.Vec3`
+  :type sg_pos_one:     :class:`ost.geoom.Vec3`
+  :type ca_pos_two:     :class:`ost.geoom.Vec3`
+  :type cb_pos_two:     :class:`ost.geoom.Vec3`
+  :type sg_pos_two:     :class:`ost.geoom.Vec3`
+
+  :returns:             The score
+  :rtype:               :class:`float`
+
+
+
+.. [canutescu2003b] Canutescu AA, Shelenkov AA, Dunbrack RL Jr. (2003). A graph-theory algorithm for rapid protein side-chain prediction. Protein Sci (2003).
diff --git a/doc/html/_sources/sidechain/disulfid.txt b/doc/html/_sources/sidechain/disulfid.txt
index 5b330287975708bdf84fa008b20d2e63315f4895..1cee3075640728b8c205c8bf9d9ff0128d6eeb9d 100644
--- a/doc/html/_sources/sidechain/disulfid.txt
+++ b/doc/html/_sources/sidechain/disulfid.txt
@@ -7,8 +7,9 @@ When calculating the pairwise interaction energy between two rotamers building
 a disulfid bond, one would get an unfavourable energy due to "clashes" between
 the sulfur atoms. It is possible to improve performance in sidechain
 reconstruction regarding cysteins when finding and separately handle
-disulfid bonds. PROMOD3 implements a simple geometrical description 
-[canutescu2003b]_ . The paper proposes two rotamers to be in a disulfid
+disulfid bonds. The scoring module implements an empirically derived disulfid
+score (:func:`promod3.scoring.SCWRL3DisulfidScore`) as defined in 
+[canutescu2003b]_. The paper proposes two rotamers to be in a disulfid
 bonded state, if the resulting disulfid score plus the self energies of the 
 involved rotamers is below 45. If there are several cysteines close together,
 this problem gets another layer of complexity. One has to assure, that
@@ -16,38 +17,18 @@ every cysteine only participates in one disulfid bond but the network
 of disulfid bonds is geometrically optimal. SCWRL4 proposes an approach,
 that has also been implemented here.
 
-.. method:: DisulfidRawScore(ca_pos_one, cb_pos_one, sg_pos_one, \
-                             ca_pos_two, cb_pos_two, sg_pos_two)
-
-  Evaluates the geometric expression based on the input positions
-
-  :param ca_pos_one:    The CA position of first rotamer
-  :param cb_pos_one:    The CB position of first rotamer
-  :param sg_pos_one:    The gamma sulfur position of first rotamer
-  :param ca_pos_two:    The CA position of second rotamer
-  :param cb_pos_two:    The CB position of second rotamer
-  :param sg_pos_two:    The gamma sulfur position of second rotamer
-
-  :type ca_pos_one:     :class:`ost.geom.Vec3`
-  :type cb_pos_one:     :class:`ost.geom.Vec3`
-  :type sg_pos_one:     :class:`ost.geom.Vec3`
-  :type ca_pos_two:     :class:`ost.geom.Vec3`
-  :type cb_pos_two:     :class:`ost.geom.Vec3`
-  :type sg_pos_two:     :class:`ost.geom.Vec3`
-
-  :returns:             The result of the raw score
-
-  
 
 .. method:: DisulfidScore(rotamer_one, rotamer_two, ca_pos_one, cb_pos_one, \
                           ca_pos_two, cb_pos_two)
 
   Directly extracts the positions of the gamma sulfurs from the rotamers by
-  searching for particles with the name "SG". In case of :class:`RRMRotamer`
-  It expects exactly one gamma sulfur per rotamer. In case of
-  :class:`FRMRotamer` there can be an arbitrary number of gamma sulfurs per
-  rotamer (at least one), it then evaluates the score for all possible
-  combinations of gamma sulfurs and takes the minimum score.
+  searching for particles with the name "SG".
+  The found positions are then passed to 
+  :func:`promod3.scoring.SCWRL3DisulfidScore`. 
+  In case of :class:`RRMRotamer` it expects exactly one gamma sulfur per 
+  rotamer. In case of :class:`FRMRotamer` there can be an arbitrary number 
+  of gamma sulfurs per rotamer (at least one), it then evaluates the score 
+  for all possible combinations of gamma sulfurs and takes the minimum score.
   To get a final DisulfidScore, it finally adds the self energies of the
   rotamers to the result of the geometric expression.
 
@@ -108,6 +89,3 @@ that has also been implemented here.
             The tuples in the first list describe the indices of cysteins 
             participating in disulfid bonds. The tuples in the second list 
             describe the optimal rotamers in the according rotamer groups.
-
-
-.. [canutescu2003b] Canutescu AA, Shelenkov AA, Dunbrack RL Jr. (2003). A graph-theory algorithm for rapid protein side-chain prediction. Protein Sci (2003).
diff --git a/doc/html/_sources/sidechain/graph.txt b/doc/html/_sources/sidechain/graph.txt
index 33f3da97bd5f34cd341d31a25f09b733b3b015df..118c72eabb98ed98acdc13eafcb6f3af4bbbb867 100644
--- a/doc/html/_sources/sidechain/graph.txt
+++ b/doc/html/_sources/sidechain/graph.txt
@@ -6,15 +6,15 @@ Rotamer Graph
 Once having a frame representing the rigid parts, the internal energies in
 rotamer groups can be calculated. To come to a final solution of the sidechain
 modelling problem, the pairwise energies also have to be evaluated and an
-overall solution has to be found. PROMOD3 implements an interaction graph that
-takes a list of rotamer groups, calculates the pairwise energies, does edge
-decomposition and dead end elimination. Solutions can finally be found 
-using Tree decomposition, AStar or Monte Carlo approaches. 
+overall solution has to be found. PROMOD3 implements a
+:class:`promod3.core.GraphMinimizer` that allows to find solutions using
+tree decomposition, A* and Monte Carlo algorithms.
 
 .. class:: RotamerGraph
 
-  The Graph object has no constructor exported to python. It is meant to be
-  constructed using the static create functions.
+  The :class:`RotamerGraph` objects inherits from 
+  :class:`promod3.core.GraphMinimizer` and extends the minimizer by static
+  initialization functions.
 
   .. staticmethod:: CreateFromRRMList(rotamer_groups)
 
@@ -27,276 +27,3 @@ using Tree decomposition, AStar or Monte Carlo approaches.
     :type rotamer_groups:  :class:`list`
 
 
-  .. method:: Prune(epsilon, [e_cut=0.0, consider_all_nodes=False])
-
-    Performs edge decomposition followed by dead end elimination in an
-    iterative manner until no changes can be observed anymore given 
-    **epsilon**.
-
-    :param epsilon:     The energy threshold to perform edge decomposition.
-
-    :param e_cut:       Parameter to control dead end elimination. If set to
-                        0.0, the default goldstein criterion is applied =>
-                        the rotamer gets removed if it's dominated by all other
-                        rotamers in the same node. If you increase this value,
-                        a rotamer must be dominated by at least this **e_cut**.
-
-
-    :param consider_all_nodes: Flag, wether the dead end elimination should be
-                               applied to all nodes, or only those who are
-                               connected with an edge removed by edge 
-                               decomposition. This is useful if already a Prune
-                               operation has been performed => only those nodes
-                               connected to a removed edge have the chance for
-                               successful dead end elimination.
-
-    :type epsilon:      :class:`float`
-    :type e_cut:        :class:`float`
-    :type consider_all_nodes: :class:`bool`
-
-
-  .. method:: ApplyDEE(node_idx, [e_cut=0.0])
-
-    Applies dead end elimination on one particular node and potentially
-    deactivates certain rotamers.
-
-    :param node_idx:    Node to apply dead end elimination
-    :param e_cut:       If set to
-                        0.0, the default goldstein criterion is applied =>
-                        the rotamer gets removed if it's dominated by all other
-                        rotamers in the same node. If you increase this value,
-                        a rotamer must be dominated by at least this **e_cut**.
-
-    :type node_idx:     :class:`int`
-    :type e_cut:        :class:`float`
-
-    :returns:           :class:`bool` whether any rotamer has been deactivated.
-
-
-
-  .. method:: ApplyEdgeDecomposition(edge_idx, epsilon)
-
-    Applies edge decomposition on one particular edge and potentially
-    deactivates it.
-
-
-    :param edge_idx:    Edge to decompose. 
-                        the idx relates to the list you get back
-                        when calling the :meth:`GetEdges` function.
-
-    :param epsilon:     The energy threshold to perform edge decomposition.
-
-    :type edge_idx:     :class:`int`
-    :type epsilon:      :class:`float`
-
-
-    :returns:           :class:`bool` whether the edge has been decomposed and 
-                        deactivated 
-                        
-
-  .. method:: Reset()
-
-    Resets the graph by undoing any pruning operation (DEE and edge decomposition)
-
-
-  .. method:: TreeSolve([max_complexity=inf, initial_epsilon=0.02])
-
-    The method solves a rotamer graph using a minimal width tree decomposition
-    approach in an iterative manner. In every iteration, the algorithm performs
-    a pruning step (DEE / Edge Decomposition) and subsequently tries to solve 
-    each connected component in the graph separately. 
-    If the number of possible enumerations in the tree constructetd from a 
-    particular connected component is is larger **max_complexity**, 
-    this component is solved in a later iteration. The algorithm iterates until 
-    all connected components are solved and steadily increases the epsilon value 
-    resulting in a more and more agressive edge decomposition. This function
-    assumes all self energies of the rotamers to be calculated and properly set!
-
-    :param max_complexity: Max number of possible permutations, that have to 
-                           be enumerated in the resulting tree after tree
-                           decomposition.
-
-    :param initial_epsilon: The initial energy threshold to perform edge
-                            decomposition.
-
-    :type max_complexity: :class:`int`
-    :type initial_epsilon: :class:`float`
-
-    :returns:           A tuple with the first element being a list of indices 
-                        representing the single rotamers minimizing
-                        the overall energy functions from every rotamer group.
-                        The second element is the according energy value.
-
-
-  .. method:: AStarSolve(e_thresh, [max_n=100, max_visited_nodes=100000000])
-
-    The method solves a rotamer graph using the A\* algorithm. Besides creating
-    minimal energy solution, the function produces a maximum of **max_n**
-    solutions sorted by energy. It aborts as soon as it sees the first solution
-    with an energy difference of **e_thresh** to the optimal solution or hits
-    **max_n**. If you're only interested in the optimal solution you should use
-    the TreeSolve function since it's much faster and uses less memory.
-    There is no automatic pruning of the graph using DEE or edge decomposition, 
-    so you have to do it by yourself, otherwise you'll have a looooooong 
-    runtime or even hit the **max_visited_nodes** parameter that caps the memory
-    usage. 
-    To have a valid solution you have to take care that you set the **e_cut** 
-    parameter in the pruning function to **e_tresh**.
-    This function assumes all self energies of the rotamers to be calculated 
-    and properly set!
-
-    :param e_thresh:    Maximal energy difference of a solution to the
-                        optimal solution to be considered.
-
-    :param max_n:       The maximum number of solutions that will be generated.
-
-    :param  max_visited_nodes: Caps the memory usage of the algorithm. Besides
-                               The memory used for pairwise energies and self
-                               energies, the algorithm uses about 
-                               **max_visited_nodes** * 20 bytes.
-
-
-    :type e_thresh:      :class:`float`
-    :type max_n:        :class:`int`
-    :type max_visited_nodes: :class:`int`
-
-    :returns:           A tuple with the first element being a list of 
-                        solutions with indices representing the single rotamers 
-                        selected for that solution. The second element is a list
-                        of energies for the according solutions.
-
-
-  .. method:: MCSolve([n=100, mc_steps=100000, start_temperature=1000.0, \\
-                       change_frequency=1000, cooling_factor=0.9, seed=0]) 
-
-    Does a total of **n** Monte Carlo runs to find low energy solutions
-    of the RotamerGraph. Each run starts with a random rotamer
-    configuration. At each of the **mc_steps** steps, a random location and
-    a random rotamer at that location is selected and an energy difference 
-    of that random selection relative to the current configuration is 
-    estimated. If the difference in energy is negative, the step is 
-    accepted. If not, the step is accepted with a probability given by
-    the temperature dependent Metropolis criterion (exp(-ediff/T)).
-    The temperature for every run starts with **start_temperature** 
-    and is multiplied every **change_frequency** steps with **cooling_factor**
-    to achieve a simulated annealing effect.
-    There is no automatic pruning of the graph using DEE or edge decomposition,
-    you have to do that by yourself.
-    This function assumes all self energies of the rotamers to be calculated 
-    and properly set!
-    
-    :param n:           Number of Monte Carlo runs 
-    :param mc_steps:    Number of Monte Carlo steps per run
-    :param start_temperature: Start temperature for the temperature dependent
-                              Metropolis criterion
-    :param change_frequency: Number of steps the temperature stays the same
-    :param cooling_factor: Factor to multiply temperature each 
-                          **change_frequency** steps
-    :param seed:        Seed for random number generator 
-
-    :type n:            :class:`int`
-    :type mc_steps:     :class:`int`
-    :type start_temperature: :class:`float`
-    :type change_frequency: :class:`int`
-    :type cooling_factor: :class:`float`
-    :type seed:         :class:`float`
-
-    :returns:           A tuple with the first element being a list of 
-                        solutions with indices representing the single rotamers 
-                        selected for that solution. The second element is a list
-                        of energies for the according solutions.
-
-
-
-  .. method:: GetNumNodes()
-
-    :returns:           The number of nodes in the graph
-                        => every RotamerGroup is a node
-
-
-  .. method:: GetNumEdges()
-
-    :returns:           The number of edges in the graph, representing
-                        connections between nodes with at least one
-                        nonzero interaction
-
-
-  .. method:: GetNumActiveNodes()
-
-    :returns:           The number of nodes having more than one active rotamer, 
-                        even after performing pruning operations
-
-
-  .. method:: GetNumActiveEdges()
-
-    :returns:           The number of edges representing nonzero interactions,
-                        even after performing pruning operations
-
-
-  .. method:: GetNumRotamers()
-
-    :returns:           The total number of rotamers in the graph
-
-
-  .. method:: GetNumActiveRotamers()
-
-    :returns:           The total number of active rotamers (Total number of 
-                        rotamers minus those that have been deactivated by DEE)
-
-
-  .. method:: GetEdges()
-
-    :returns:           A list of tuples describing the edges 
-                        connecting nodes with nonzero pairwise interactions   
-
-
-  .. method:: GetActiveEdges()
-    
-    :returns:           A :class:`list` of :class:`tuples` describing the edges 
-                        connecting nodes with nonzero pairwise interactions 
-                        (All edges minus those that have been deactived by edge 
-                        decomposition)
-
-
-  .. method:: GetActiveRotamers(node_idx)
-
-    :param node_idx:    Specifies node from which the active rotamers should be 
-                        extracted
-
-    :type node_idx:     :class:`int`
-
-    :returns:           list of the rotamers that are active
-                        in specified node (all rotamers minus those that have 
-                        been deactivated using DEE) 
-
-
-  .. method:: GetSelfEnergies(node_idx)
-
-    :param node_idx:    Specifies node from which the self energies should be 
-                        extracted
-
-    :type node_idx:     :class:`int`
-
-    :returns:           list of self energies for all rotamers in 
-                        specified node as they are fed into the solving 
-                        algorithms. Note, that they might slightly differ 
-                        from the original self energies in the input rotamers
-                        because of approximations introduced in edge 
-                        decomposition.
-
-
-  .. method:: GetPairwiseEnergies(edge_idx)
-
-    :param edge_idx:    Specifies edge from which the pairwise energies should
-                        be extracted, the idx relates to the list you get back
-                        when calling the :meth:`GetEdges` function.
-
-    :type edge_idx:     :class:`int`
-
-    :returns:           list of list where you can extract 
-                        the energy of rotamer i in the first node in the
-                        edge with rotamer j in the second node in the edge 
-                        with: e = pairwise_energies[i][j]
-                         
-
-                       
diff --git a/doc/html/_sources/sidechain/rotamer.txt b/doc/html/_sources/sidechain/rotamer.txt
index a62ca72acb66bab21f99740b7d46912eba07b18a..40f882320bb51f59b604a6ea7de7106d8582ca2a 100644
--- a/doc/html/_sources/sidechain/rotamer.txt
+++ b/doc/html/_sources/sidechain/rotamer.txt
@@ -156,7 +156,8 @@ Rotamers
 
     Iterates over every particle and searches for the according atom in
     **res**. If it's present, the position gets reset to the particle position.
-    If not, a new atom gets added to **res**. 
+    If not, a new atom gets added to **res**. No atoms are removed from **res**
+    in this process. 
 
     :param res:         Residue to be reconstructed
     :param consider_hydrogens: Flag, whether polar hydrogens should be added to 
@@ -313,6 +314,7 @@ Rotamers
     Iterates over every particle of the active subrotamer and searches for the 
     according atom in **res**. If it's present, the position gets reset to the 
     particle position. If not, a new atom gets added to **res**. 
+    No atoms are removed from **res** in this process. 
 
     :param res:         Residue to be reconstructed
     :param consider_hydrogens: Flag, whether polar hydrogens should be added to 
diff --git a/doc/html/_sources/sidechain/rotamer_constructor.txt b/doc/html/_sources/sidechain/rotamer_constructor.txt
index 316c0aba0559e2c0061d8a5ed23641967093a00f..36c76a2c0857dc5bdbd5b3257e24e8b2bde5eaac 100644
--- a/doc/html/_sources/sidechain/rotamer_constructor.txt
+++ b/doc/html/_sources/sidechain/rotamer_constructor.txt
@@ -11,22 +11,33 @@ Constructing Rotamers and Frame Residues
 --------------------------------------------------------------------------------
 
 
-.. class:: SCWRLRotamerConstructor()
+.. 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. The rotamers start after the CB atom (typically CG). 
+  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`
+
+
   .. 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(n_pos, ca_pos, cb_pos, id,\
-                                       residue_index, rot_lib,\          
-                                       [probability_cutoff = 0.98])
   .. method:: ConstructRRMRotamerGroup(res, id, residue_index, rot_lib,\
                                        [phi = -1.0472, psi = -0.7854,\
                                         probability_cutoff = 0.98])
@@ -34,29 +45,19 @@ Constructing Rotamers and Frame Residues
                                        residue_index, rot_lib,\
                                        [phi = -1.0472, psi = -0.7854,\
                                         probability_cutoff = 0.98])
-  .. method:: ConstructRRMRotamerGroup(n_pos, ca_pos, cb_pos, id,\
-                                       residue_index, rot_lib,\
-                                       [phi = -1.0472, psi = -0.7854,\
-                                        probability_cutoff = 0.98])
   .. method:: ConstructRRMRotamerGroup(res, id, residue_index, rot_lib_entries,\
                                        [probability_cutoff = 0.98])
   .. method:: ConstructRRMRotamerGroup(all_atom_pos, aa_res_idx, id,\
                                        residue_index, rot_lib_entries,\
                                        [probability_cutoff = 0.98])
-  .. method:: ConstructRRMRotamerGroup(n_pos, ca_pos, cb_pos, id,\
-                                       residue_index, rot_lib_entries,\          
-                                       [probability_cutoff = 0.98])
 
     All functions are also avaible for their flexible rotamer model counterpart.
     =>ConstructFRMRotamerGroup(...) with exactly the same parameters. 
 
-    :param res:         To extract the N, CA, CB backbone anchor
-    :param all_atom_pos: To extract the N, CA, CB backbone anchor
+    :param res:         To extract the required backbone atoms
+    :param all_atom_pos: To extract the required backbone atoms
     :param aa_res_idx:  Index of residue in **all_atom_pos** from which to
-                        extract the backbone anchor
-    :param n_pos:       To directly feed in the backbone anchor positions
-    :param ca_pos:      To directly feed in the backbone anchor positions
-    :param cb_pos:      To directly feed in the backbone anchor positions
+                        extract the required backbone atoms
     :param id:          Identifies the sidechain.
     :param residue_index: Important for the energy calculations towards the 
                           :class:`Frame` you don't want to calculate a pairwise
@@ -82,9 +83,6 @@ Constructing Rotamers and Frame Residues
     :type res:          :class:`ost.mol.ResidueHandle`
     :type all_atom_pos: :class:`promod3.loop.AllAtomPositions`
     :type aa_res_idx:   :class:`int`
-    :type n_pos:        :class:`ost.geom.Vec3`
-    :type ca_pos:       :class:`ost.geom.Vec3`
-    :type cb_pos:       :class:`ost.geom.Vec3`
     :type id:           :class:`RotamerID`
     :type residue_index: :class:`int`
     :type rot_lib:      :class:`RotamerLib` / :class:`BBDepRotamerLib`
@@ -93,9 +91,8 @@ Constructing Rotamers and Frame Residues
     :rtype:             :class:`RRMRotamerGroup`
 
     :raises:  :exc:`~exceptions.RuntimeError` when not all required backbone
-              atoms are present in **residue**, not all required atom
-              positions are set in **all_atom_pos** or when the rotamer library
-              does not contain any entries for **id**
+              atoms are present in **residue** or not all required atom
+              positions are set in **all_atom_pos**
 
 
   .. method:: ConstructBackboneFrameResidue(res, id, residue_index, Real phi,\
@@ -105,13 +102,8 @@ Constructing Rotamers and Frame Residues
                                             residue_index, Real phi,\
                                             [n_ter = False, c_ter = False])
 
-  .. method:: ConstructBackboneFrameResidue(n_pos, ca_pos, c_pos, o_pos, cb_pos,\ 
-                                            id, residue_index, Real phi,\
-                                            [n_ter = False, c_ter = False])
-
-    Constructs backbone frame residues for amino acid residues. It extracts
-    the n, ca, c, o and cb positions and constructs a frame residue based on
-    the parametrizations of SCWRL4. In case of **n_ter**, there are additional
+    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
@@ -121,11 +113,6 @@ Constructing Rotamers and Frame Residues
     :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 backbone positions
-    :param n_pos:       To directly feed in the backbone positions
-    :param ca_pos:      To directly feed in the backbone positions
-    :param c_pos:       To directly feed in the backbone positions
-    :param o_pos:       To directly feed in the backbone positions
-    :param cb_pos:      To directly feed in the backbone positions
     :param id:          Identifies the sidechain
     :param residue_index: Important for the energy calculations towards the 
                           :class:`Frame` you don't want to calculate a pairwise
@@ -141,11 +128,6 @@ Constructing Rotamers and Frame Residues
     :type res:          :class:`ost.mol.ResidueHandle`
     :type all_atom_pos: :class:`promod3.loop.AllAtomPositions`
     :type aa_res_idx:   :class:`int`
-    :type n_pos:        :class:`ost.geom.Vec3`
-    :type ca_pos:       :class:`ost.geom.Vec3`
-    :type c_pos:        :class:`ost.geom.Vec3`
-    :type o_pos:        :class:`ost.geom.Vec3`
-    :type cb_pos:       :class:`ost.geom.Vec3`
     :type id:           :class:`RotamerID`
     :type residue_index: :class:`int`
     :type phi:          :class:`float`
@@ -156,7 +138,7 @@ Constructing Rotamers and Frame Residues
 
 
     :raises:  :exc:`~exceptions.RuntimeError` when not all required backbone
-              atoms are present in **residue**, not all required atom
+              atoms are present in **residue** or not all required atom
               positions are set in **all_atom_pos**.
 
 
diff --git a/doc/html/_static/alabaster.css b/doc/html/_static/alabaster.css
index 07a9e2a42ae0c0d42495b844723754f80d111911..517cb43e58b2e57a766cbed1ca59eddbe7f4515c 100644
--- a/doc/html/_static/alabaster.css
+++ b/doc/html/_static/alabaster.css
@@ -28,6 +28,7 @@ body {
     padding: 0;
 }
 
+
 div.document {
     width: 940px;
     margin: 30px auto 0 auto;
@@ -44,6 +45,8 @@ div.bodywrapper {
 
 div.sphinxsidebar {
     width: 220px;
+    font-size: 14px;
+    line-height: 1.5;
 }
 
 hr {
@@ -56,6 +59,10 @@ div.body {
     padding: 0 30px 0 30px;
 }
 
+div.body > .section {
+    text-align: left;
+}
+
 div.footer {
     width: 940px;
     margin: 20px auto 30px auto;
@@ -68,6 +75,11 @@ div.footer a {
     color: #888;
 }
 
+p.caption {
+    font-family: ;
+    font-size: inherit;
+}
+
 
 div.relations {
     display: none;
@@ -84,11 +96,6 @@ div.sphinxsidebar a:hover {
     border-bottom: 1px solid #999;
 }
 
-div.sphinxsidebar {
-    font-size: 14px;
-    line-height: 1.5;
-}
-
 div.sphinxsidebarwrapper {
     padding: 18px 10px;
 }
@@ -168,8 +175,8 @@ div.sphinxsidebar input {
 div.sphinxsidebar hr {
     border: none;
     height: 1px;
-    color: #999;
-    background: #999;
+    color: #AAA;
+    background: #AAA;
 
     text-align: left;
     margin-left: 0;
@@ -350,8 +357,12 @@ table.field-list td {
     padding: 0;
 }
 
+table.field-list p {
+    margin-bottom: 0.8em;
+}
+
 table.footnote td.label {
-    width: 0px;
+    width: .1px;
     padding: 0.3em 0 0.3em 0.5em;
 }
 
@@ -374,6 +385,7 @@ blockquote {
 }
 
 ul, ol {
+    /* Matches the 30px from the narrow-screen "li > ul" selector below */
     margin: 10px 0 10px 30px;
     padding: 0;
 }
@@ -411,6 +423,11 @@ a.reference {
     border-bottom: 1px dotted #004B6B;
 }
 
+/* Don't put an underline on images */
+a.image-reference, a.image-reference:hover {
+    border-bottom: none;
+}
+
 a.reference:hover {
     border-bottom: 1px solid #6D4100;
 }
@@ -460,6 +477,11 @@ a:hover tt, a:hover code {
     	margin-left: 0;
     }
 
+	li > ul {
+        /* Matches the 30px from the "ul, ol" selector above */
+		margin-left: 30px;
+	}
+
     .document {
     	width: auto;
     }
diff --git a/doc/html/_static/basic.css b/doc/html/_static/basic.css
index 9fa77d886d4f09c635c781bc3fadf10c8036c59e..65dfd7dfda92b36a93ea2b50d82d3917aec69c66 100644
--- a/doc/html/_static/basic.css
+++ b/doc/html/_static/basic.css
@@ -4,7 +4,7 @@
  *
  * Sphinx stylesheet -- basic theme.
  *
- * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -52,6 +52,8 @@ div.sphinxsidebar {
     width: 230px;
     margin-left: -100%;
     font-size: 90%;
+    word-wrap: break-word;
+    overflow-wrap : break-word;
 }
 
 div.sphinxsidebar ul {
@@ -187,6 +189,13 @@ div.genindex-jumpbox {
 
 /* -- general body styles --------------------------------------------------- */
 
+div.body p, div.body dd, div.body li, div.body blockquote {
+    -moz-hyphens: auto;
+    -ms-hyphens: auto;
+    -webkit-hyphens: auto;
+    hyphens: auto;
+}
+
 a.headerlink {
     visibility: hidden;
 }
diff --git a/doc/html/_static/custom.css b/doc/html/_static/custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..2a924f1d6a8bc930c5296bdb2d5c2d3e39b04a1c
--- /dev/null
+++ b/doc/html/_static/custom.css
@@ -0,0 +1 @@
+/* This file intentionally left blank. */
diff --git a/doc/html/_static/doctools.js b/doc/html/_static/doctools.js
index c7bfe760aa8b32cfa5676be000a43f465531ac0c..816349563588e87ca99c7cf2d6e54268e52e761d 100644
--- a/doc/html/_static/doctools.js
+++ b/doc/html/_static/doctools.js
@@ -4,7 +4,7 @@
  *
  * Sphinx JavaScript utilities for all documentation.
  *
- * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -124,6 +124,7 @@ var Documentation = {
     this.fixFirefoxAnchorBug();
     this.highlightSearchWords();
     this.initIndexTable();
+    
   },
 
   /**
@@ -252,6 +253,29 @@ var Documentation = {
     });
     var url = parts.join('/');
     return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+  },
+
+  initOnKeyListeners: function() {
+    $(document).keyup(function(event) {
+      var activeElementType = document.activeElement.tagName;
+      // don't navigate when in search box or textarea
+      if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
+        switch (event.keyCode) {
+          case 37: // left
+            var prevHref = $('link[rel="prev"]').prop('href');
+            if (prevHref) {
+              window.location.href = prevHref;
+              return false;
+            }
+          case 39: // right
+            var nextHref = $('link[rel="next"]').prop('href');
+            if (nextHref) {
+              window.location.href = nextHref;
+              return false;
+            }
+        }
+      }
+    });
   }
 };
 
@@ -260,4 +284,4 @@ _ = Documentation.gettext;
 
 $(document).ready(function() {
   Documentation.init();
-});
+});
\ No newline at end of file
diff --git a/doc/html/_static/pygments.css b/doc/html/_static/pygments.css
index 57eadc030ea86ea65a3747c27dfa3ef334f8f79a..8213e90bed399b1ddc4914808df328f5803e953f 100644
--- a/doc/html/_static/pygments.css
+++ b/doc/html/_static/pygments.css
@@ -4,8 +4,10 @@
 .highlight .err { border: 1px solid #FF0000 } /* Error */
 .highlight .k { color: #007020; font-weight: bold } /* Keyword */
 .highlight .o { color: #666666 } /* Operator */
+.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
 .highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
 .highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
 .highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
 .highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
 .highlight .gd { color: #A00000 } /* Generic.Deleted */
diff --git a/doc/html/_static/searchtools.js b/doc/html/_static/searchtools.js
index 0e794fd3e906970a10812199e11f9f159ab906b5..066857ce21b1b4b055f9a9308eb351237260fcca 100644
--- a/doc/html/_static/searchtools.js
+++ b/doc/html/_static/searchtools.js
@@ -2,14 +2,15 @@
  * searchtools.js_t
  * ~~~~~~~~~~~~~~~~
  *
- * Sphinx JavaScript utilties for the full-text search.
+ * Sphinx JavaScript utilities for the full-text search.
  *
- * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
 
 
+/* Non-minified version JS is _stemmer.js if file is provided */ 
 /**
  * Porter Stemmer
  */
@@ -373,8 +374,7 @@ var Search = {
     }
 
     // lookup as search terms in fulltext
-    results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term))
-                     .concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title));
+    results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
 
     // let the scorer override scores with a custom scoring function
     if (Scorer.score) {
@@ -538,23 +538,47 @@ var Search = {
   /**
    * search for full-text terms in the index
    */
-  performTermsSearch : function(searchterms, excluded, terms, score) {
+  performTermsSearch : function(searchterms, excluded, terms, titleterms) {
     var filenames = this._index.filenames;
     var titles = this._index.titles;
 
-    var i, j, file, files;
+    var i, j, file;
     var fileMap = {};
+    var scoreMap = {};
     var results = [];
 
     // perform the search on the required terms
     for (i = 0; i < searchterms.length; i++) {
       var word = searchterms[i];
+      var files = [];
+      var _o = [
+        {files: terms[word], score: Scorer.term},
+        {files: titleterms[word], score: Scorer.title}
+      ];
+
       // no match but word was a required one
-      if ((files = terms[word]) === undefined)
+      if ($u.every(_o, function(o){return o.files === undefined;})) {
         break;
-      if (files.length === undefined) {
-        files = [files];
       }
+      // found search word in contents
+      $u.each(_o, function(o) {
+        var _files = o.files;
+        if (_files === undefined)
+          return
+
+        if (_files.length === undefined)
+          _files = [_files];
+        files = files.concat(_files);
+
+        // set score for the word in each file to Scorer.term
+        for (j = 0; j < _files.length; j++) {
+          file = _files[j];
+          if (!(file in scoreMap))
+            scoreMap[file] = {}
+          scoreMap[file][word] = o.score;
+        }
+      });
+
       // create the mapping
       for (j = 0; j < files.length; j++) {
         file = files[j];
@@ -576,7 +600,9 @@ var Search = {
       // ensure that none of the excluded terms is in the search result
       for (i = 0; i < excluded.length; i++) {
         if (terms[excluded[i]] == file ||
-          $u.contains(terms[excluded[i]] || [], file)) {
+            titleterms[excluded[i]] == file ||
+            $u.contains(terms[excluded[i]] || [], file) ||
+            $u.contains(titleterms[excluded[i]] || [], file)) {
           valid = false;
           break;
         }
@@ -584,6 +610,9 @@ var Search = {
 
       // if we have still a valid result we can add it to the result list
       if (valid) {
+        // select one (max) score for the file.
+        // for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
+        var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
         results.push([filenames[file], titles[file], '', null, score]);
       }
     }
@@ -594,7 +623,7 @@ var Search = {
    * helper function to return a node containing the
    * search summary for a given text. keywords is a list
    * of stemmed words, hlwords is the list of normal, unstemmed
-   * words. the first one is used to find the occurance, the
+   * words. the first one is used to find the occurrence, the
    * latter for highlighting it.
    */
   makeSearchSummary : function(text, keywords, hlwords) {
diff --git a/doc/html/_static/websupport.js b/doc/html/_static/websupport.js
index 28d65db4aaf30db00ac3e591b88035ba434d4901..98e7f40b6327e673e382068cdfb3bf3674a06cca 100644
--- a/doc/html/_static/websupport.js
+++ b/doc/html/_static/websupport.js
@@ -2,9 +2,9 @@
  * websupport.js
  * ~~~~~~~~~~~~~
  *
- * sphinx.websupport utilties for all documentation.
+ * sphinx.websupport utilities for all documentation.
  *
- * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
diff --git a/doc/html/actions/index.html b/doc/html/actions/index.html
index 0a4e2803686157f938ff3a21635aadb3eadd0577..296203fb4df2cd69e74608d63abeb52226269b35 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.1.0 documentation</title>
+    <title>ProMod3 Actions &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -49,12 +51,12 @@ you can type <code class="docutils literal"><span class="pre">pm</span> <span cl
 <span id="promod-build-model"></span><h2>Building models<a class="headerlink" href="#building-models" title="Permalink to this headline">¶</a></h2>
 <p>You can run a full protein homology modelling pipeline from the command line
 with</p>
-<div class="highlight-console"><div class="highlight"><pre><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>
+<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;) [-o &lt;FILENAME&gt;]</span>
 </pre></div>
 </div>
 <p>Example usage:</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> pm build-model -f aln.fasta -p tpl.pdb
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> pm build-model -f aln.fasta -p tpl.pdb
 </pre></div>
 </div>
 <p>This reads a target-template alignment from <code class="file docutils literal"><span class="pre">aln.fasta</span></code> and a matching
@@ -71,7 +73,7 @@ Notes on the input formats:</p>
 <li><p class="first">Leading/trailing whitespaces of sequence names will always be deleted</p>
 </li>
 <li><p class="first">FASTA input example:</p>
-<div class="highlight-none"><div class="highlight"><pre>&gt;target
+<div class="highlight-none"><div class="highlight"><pre><span></span>&gt;target
 HGFHVHEFGDNTNGCMSSGPHFNPYGKEHGAPVDENRHLG
 &gt;2jlp-1.A|55
 RAIHVHQFGDLSQGCESTGPHYNPLAVPH------PQHPG
@@ -92,7 +94,7 @@ Those in turn are objects with keys
 &#8216;seqres&#8217; (string for aligned sequence) and optionally for templates
 &#8216;offset&#8217; (number of residues to skip in structure file attached to it).
 Example:</p>
-<div class="highlight-json"><div class="highlight"><pre><span class="p">{</span><span class="nt">&quot;alignmentlist&quot;</span><span class="p">:</span> <span class="p">[</span> <span class="p">{</span>
+<div class="highlight-json"><div class="highlight"><pre><span></span><span class="p">{</span><span class="nt">&quot;alignmentlist&quot;</span><span class="p">:</span> <span class="p">[</span> <span class="p">{</span>
   <span class="nt">&quot;target&quot;</span><span class="p">:</span> <span class="p">{</span>
       <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;mytrg&quot;</span><span class="p">,</span>
       <span class="nt">&quot;seqres&quot;</span><span class="p">:</span> <span class="s2">&quot;HGFHVHEFGDNTNGCMSSGPHFNPYGKEHGAPVDENRHLG&quot;</span>
@@ -108,7 +110,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="http://www.openstructure.org/docs/dev/io/io/#ost.io.LoadEntity" title="(in OpenStructure v1.6.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/dev/io/io/#ost.io.LoadEntity" title="(in OpenStructure v1.7.1)"><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
@@ -182,9 +184,6 @@ residue in the aligned sequence. Leading/trailing whitespaces of &lt;CHAINID&gt;
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -195,8 +194,8 @@ residue in the aligned sequence. Leading/trailing whitespaces of &lt;CHAINID&gt;
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/actions/index.txt"
diff --git a/doc/html/actions/index_dev.html b/doc/html/actions/index_dev.html
index 5b85e1b17a59c30e08cf733e350e284590fc685f..6ccb9257a0cccddf2f00c2951bde20792f651ac3 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.1.0 documentation</title>
+    <title>test_actions - Testing Actions &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -62,15 +64,15 @@ Python imports a module, its usually compiled into bytecode. This new file
 would clutter up the source repository, it would always show up as untracked
 file on <code class="docutils literal"><span class="pre">git</span> <span class="pre">status</span></code>. To prevent this, tell Python to stop producing
 bytecode right at the beginning of your test-script:</p>
-<div class="highlight-python"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
+<div class="highlight-default"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
 2
 3
 4
-5</pre></div></td><td class="code"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">sys</span>
+5</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">sys</span>
 
-<span class="c"># this is needed so there will be no test_actions.pyc created in the source</span>
-<span class="c"># directory</span>
-<span class="hll"><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="c1"># this is needed so there will be no test_actions.pyc created in the source</span>
+<span class="c1"># directory</span>
+<span class="hll"><span class="n">sys</span><span class="o">.</span><span class="n">dont_write_bytecode</span> <span class="o">=</span> <span class="kc">True</span>
 </span></pre></div>
 </td></tr></table></div>
 <p>Line 5 does the trick. This needs to be set by you in every action unit test
@@ -101,20 +103,20 @@ called <code class="docutils literal"><span class="pre">do-awesome</span></code>
 action. So here we create a file <code class="file docutils literal"><span class="pre">test_action_do_awesome.py</span></code> (recognise
 the underscore between <code class="docutils literal"><span class="pre">do</span></code> and <code class="docutils literal"><span class="pre">awesome</span></code> instead of a hyphen, that&#8217;s
 <a class="reference external" href="https://www.python.org/dev/peps/pep-0008/">PEP 8</a>).</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> touch &lt;SOURCE&gt;/actions/tests/test_action_do_awesome.py
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> touch &lt;SOURCE&gt;/actions/tests/test_action_do_awesome.py
 <span class="gp">$</span>
 </pre></div>
 </div>
 <p>As a starter, we disable bytecode compilation in the script:</p>
-<div class="highlight-python"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
+<div class="highlight-default"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
 2
 3
 4
-5</pre></div></td><td class="code"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">sys</span>
+5</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">sys</span>
 
-<span class="c"># this is needed so there will be no test_actions.pyc created in the source</span>
-<span class="c"># directory</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="c1"># this is needed so there will be no test_actions.pyc created in the source</span>
+<span class="c1"># directory</span>
+<span class="n">sys</span><span class="o">.</span><span class="n">dont_write_bytecode</span> <span class="o">=</span> <span class="kc">True</span>
 </pre></div>
 </td></tr></table></div>
 </div>
@@ -130,7 +132,7 @@ add your new script:</p>
 4
 5
 6
-7</pre></div></td><td class="code"><div class="highlight"><pre><span class="nb">set</span><span class="p">(</span><span class="s">ACTION_UNIT_TESTS</span>
+7</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="nb">set</span><span class="p">(</span><span class="s">ACTION_UNIT_TESTS</span>
   <span class="s">test_action_help.py</span>
 <span class="hll">  <span class="s">test_action_do_awesome.py</span>
 </span>  <span class="s">test_actions.py</span> <span class="c"># leave this as last item so it will be executed first!</span>
@@ -152,20 +154,20 @@ other action test script is run.</p>
 tests. By spawning off from this you inherit a bunch of useful methods for your
 testing. To make it work, the childclass needs to be set up properly. But
 first, <code class="file docutils literal"><span class="pre">test_actions.py</span></code> has to be loaded as a module:</p>
-<div class="highlight-python"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>6</pre></div></td><td class="code"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">test_actions</span>
+<div class="highlight-default"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>6</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">test_actions</span>
 </pre></div>
 </td></tr></table></div>
 <p>To showcase, the test cases, we explain how one would (and does) test the
 <code class="docutils literal"><span class="pre">help</span></code> action of <code class="docutils literal"><span class="pre">pm</span></code>.
 First, we create the childclass for the action.
 Go for <code class="xref py py-class docutils literal"><span class="pre">&lt;NAME&gt;ActionTests</span></code> as a naming scheme:</p>
-<div class="highlight-python"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 7
+<div class="highlight-default"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 7
  8
  9
-10</pre></div></td><td class="code"><div class="highlight"><pre><span class="k">class</span> <span class="nc">HelpActionTests</span><span class="p">(</span><span class="n">test_actions</span><span class="o">.</span><span class="n">ActionTestCase</span><span class="p">):</span>
+10</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">HelpActionTests</span><span class="p">(</span><span class="n">test_actions</span><span class="o">.</span><span class="n">ActionTestCase</span><span class="p">):</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="n">test_actions</span><span class="o">.</span><span class="n">ActionTestCase</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>
-        <span class="bp">self</span><span class="o">.</span><span class="n">pm_action</span> <span class="o">=</span> <span class="s">&#39;help&#39;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">pm_action</span> <span class="o">=</span> <span class="s1">&#39;help&#39;</span>
 </pre></div>
 </td></tr></table></div>
 <p>Pay attention that in your own class, you must set <code class="xref py py-attr docutils literal"><span class="pre">pm_action</span></code> to make
@@ -178,8 +180,8 @@ is derived from the <a class="reference external" href="https://docs.python.org/
 states will be placed in the userlevel documentation. This topic is already
 covered in <a class="reference internal" href="#test_actions.ActionTestCase" title="test_actions.ActionTestCase"><code class="xref py py-class docutils literal"><span class="pre">test_actions.ActionTestCase</span></code></a> by <a class="reference internal" href="#test_actions.ActionTestCase.RunExitStatusTest" title="test_actions.ActionTestCase.RunExitStatusTest"><code class="xref py py-meth docutils literal"><span class="pre">RunExitStatusTest()</span></code></a>.
 As an example, testing for <code class="docutils literal"><span class="pre">$?=0</span></code> could work like this:</p>
-<div class="highlight-python"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>11
-12</pre></div></td><td class="code"><div class="highlight"><pre>    <span class="k">def</span> <span class="nf">testExit0</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<div class="highlight-default"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>11
+12</pre></div></td><td class="code"><div class="highlight"><pre><span></span>    <span class="k">def</span> <span class="nf">testExit0</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">RunExitStatusTest</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">list</span><span class="p">())</span>
 </pre></div>
 </td></tr></table></div>
@@ -191,13 +193,13 @@ 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="http://www.OpenStructure.org">OST</a>&#8216;s <a class="reference external" href="http://www.openstructure.org/docs/dev/base/testutils/#module-ost.testutils" title="(in OpenStructure v1.6.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/dev/base/testutils/#module-ost.testutils" title="(in OpenStructure v1.7.1)"><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-python"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>13
+<div class="highlight-default"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>13
 14
-15</pre></div></td><td class="code"><div class="highlight"><pre><span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span>
-    <span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">testutils</span>
+15</pre></div></td><td class="code"><div class="highlight"><pre><span></span><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">from</span> <span class="nn">ost</span> <span class="k">import</span> <span class="n">testutils</span>
     <span class="n">testutils</span><span class="o">.</span><span class="n">RunTests</span><span class="p">()</span>
 </pre></div>
 </td></tr></table></div>
@@ -208,7 +210,7 @@ as a script:</p>
 <p>Unit tests are executed via <code class="docutils literal"><span class="pre">make</span> <span class="pre">check</span></code> and so are ProMod3 action tests.
 But for every test script, we also provide a private <code class="docutils literal"><span class="pre">make</span></code> target, ending
 with <code class="file docutils literal"><span class="pre">_run</span></code>. To solely run the tests for the awesome action, hit</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> make test_action_do_awesome.py_run
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> make test_action_do_awesome.py_run
 </pre></div>
 </div>
 </div>
@@ -225,20 +227,20 @@ parameter <code class="xref py py-attr docutils literal"><span class="pre">verbo
 output onto the command line. The idea is to turn it on for development, but
 once done, disable it to keep output of unit tests low.</p>
 <p>To get the test for exit code <code class="docutils literal"><span class="pre">0</span></code> talking to you, just do</p>
-<div class="highlight-python"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>11
-12</pre></div></td><td class="code"><div class="highlight"><pre>    <span class="k">def</span> <span class="nf">testExit0</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">RunExitStatusTest</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">list</span><span class="p">(),</span> <span class="n">verbose</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<div class="highlight-default"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>11
+12</pre></div></td><td class="code"><div class="highlight"><pre><span></span>    <span class="k">def</span> <span class="nf">testExit0</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">RunExitStatusTest</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">list</span><span class="p">(),</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
 </pre></div>
 </td></tr></table></div>
 <p>and</p>
-<div class="highlight-python"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>11
-12</pre></div></td><td class="code"><div class="highlight"><pre>    <span class="k">def</span> <span class="nf">testExit0</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<div class="highlight-default"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>11
+12</pre></div></td><td class="code"><div class="highlight"><pre><span></span>    <span class="k">def</span> <span class="nf">testExit0</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">RunExitStatusTest</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">list</span><span class="p">())</span>
 </pre></div>
 </td></tr></table></div>
 <p>keeps it silent (<code class="xref py py-attr docutils literal"><span class="pre">verbose</span></code> is set to <code class="docutils literal"><span class="pre">False</span></code> by default). If enabled,
 output will be separated into <code class="file docutils literal"><span class="pre">stdout</span></code> and <code class="file docutils literal"><span class="pre">stderr</span></code>:</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> make test_action_do_awesome.py_run
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> make test_action_do_awesome.py_run
 <span class="go">&lt;Lots of output from the build process&gt;</span>
 <span class="go">running checks test_action_do_awesome.py</span>
 <span class="go">stdout of &#39;&lt;BUILD&gt;/stage/bin/pm do-awesome&#39;</span>
@@ -401,9 +403,6 @@ file (also complains if a directory is found instead).</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -414,8 +413,8 @@ file (also complains if a directory is found instead).</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/actions/index_dev.txt"
diff --git a/doc/html/buildsystem.html b/doc/html/buildsystem.html
index a716f5434283bb2cfa80fb2322bbd42795c26a38..35f13e27f897ffd19b473c8b25914860f5296b0c 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.1.0 documentation</title>
+    <title>Building ProMod3 &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 1.2.0 documentation" href="index.html" />
     <link rel="up" title="Documentation For Users" href="users.html" />
     <link rel="next" title="modelling - Protein Modelling" href="modelling/index.html" />
     <link rel="prev" title="ProMod3 Actions" href="actions/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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -43,20 +45,20 @@
 <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="http://www.OpenStructure.org">OpenStructure</a> (OST), requiring at least version
+<p>ProMod3 is build on top of <a class="reference external" href="https://www.OpenStructure.org">OpenStructure</a> (OST), requiring at least version
 1.7. 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 in version
 2.8.7 or higher. <a class="reference external" href="https://www.python.org/">Python</a> works well from version 2.7. For OST and the
-C++ bit of ProMod3, <a class="reference external" href="http://www.boost.org/">Boost</a> is required in version 1.53.0 (the same as
+C++ bit of ProMod3, <a class="reference external" href="https://www.boost.org/">Boost</a> is required in version 1.53.0 (the same as
 used for OST). Also <a class="reference external" href="http://eigen.tuxfamily.org/index.php?title=Main_Page">Eigen 3</a> is needed. To build
 documentation, <a class="reference external" href="http://sphinx-doc.org/">Sphinx</a> 1.2b1 is required.</p>
 <p>The currently preferred versions are:</p>
 <ul class="simple">
-<li><a class="reference external" href="http://www.OpenStructure.org">OST</a> 1.7</li>
+<li><a class="reference external" href="https://www.OpenStructure.org">OST</a> 1.7</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>
-<li><a class="reference external" href="http://www.boost.org/">Boost</a> 1.53.0</li>
+<li><a class="reference external" href="https://www.boost.org/">Boost</a> 1.53.0</li>
 <li><a class="reference external" href="http://eigen.tuxfamily.org/index.php?title=Main_Page">Eigen 3</a> 3.3.0</li>
 <li><a class="reference external" href="http://sphinx-doc.org/">Sphinx</a> 1.3.1</li>
 </ul>
@@ -68,9 +70,9 @@ and certain directories needed for building ProMod3. Basically it is called
 right from a shell with the directory containing the top-level
 <code class="file docutils literal"><span class="pre">CMakeLists.txt</span></code> as an argument. The preferred approach is to generate a
 build folder and configure and compile in there:</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">#</span> execute this in the ProMod3 root folder
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">#</span> execute this in the ProMod3 root folder
 <span class="gp">$</span> mkdir build
-<span class="gp">$</span> <span class="nb">cd </span>build
+<span class="gp">$</span> <span class="nb">cd</span> build
 <span class="gp">$</span> cmake .. -DOST_ROOT<span class="o">=</span>&lt;PATH TO OST&gt;
 </pre></div>
 </div>
@@ -115,7 +117,7 @@ really got rebuild and similar things required.</p>
 <div class="section" id="running-make">
 <h2>Running Make<a class="headerlink" href="#running-make" title="Permalink to this headline">¶</a></h2>
 <p>After configuring, you want to build ProMod3 by</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> make
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> make
 </pre></div>
 </div>
 <p>to populate the <code class="file docutils literal"><span class="pre">stage</span></code> directory with a ready-to-go version of the
@@ -139,7 +141,7 @@ builder</li>
 <h2>Installing ProMod3<a class="headerlink" href="#installing-project" title="Permalink to this headline">¶</a></h2>
 <p>If you wish to install ProMod3 (note that you can also safely keep it all in
 the <code class="file docutils literal"><span class="pre">stage</span></code> directory), you can use</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> make install
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> make install
 </pre></div>
 </div>
 <p>By default, this will copy the <code class="file docutils literal"><span class="pre">stage</span></code> directory to <code class="file docutils literal"><span class="pre">/usr/local</span></code>. To
@@ -195,9 +197,6 @@ safely delete the whole source folder.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -208,8 +207,8 @@ safely delete the whole source folder.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/buildsystem.txt"
diff --git a/doc/html/changelog.html b/doc/html/changelog.html
index 0893031cb90a205da543e19cea1f2bea928af80f..eb7599505c23f99c322703313c255a3e1b2221d5 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.1.0 documentation</title>
+    <title>Changelog &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,14 +23,16 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 1.2.0 documentation" href="index.html" />
     <link rel="prev" title="Using Binary Files In ProMod3" href="portableIO.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -39,8 +41,37 @@
             
   <div class="section" id="changelog">
 <h1>Changelog<a class="headerlink" href="#changelog" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="release-1-1">
-<h2>Release 1.1<a class="headerlink" href="#release-1-1" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="release-1-2-0">
+<h2>Release 1.2.0<a class="headerlink" href="#release-1-2-0" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Graph optimizer has been separated from the sidechain module and can now be
+used for arbitrary optimization problems. Available optimization algorithms
+are TreePack, AStar and MonteCarlo.</li>
+<li>Make it possible to distinguish between the scores of a loop towards a constant
+environment (external scores) and the scores within the loop itself
+(internal scores).</li>
+<li>Most scores based on pairwise interactions are now pairwise decomposable.</li>
+<li>Disconnected loops at several locations can be scored at once.</li>
+<li>Avoid the usage of the DSSP executable and use the OpenStructure internal
+secondary structure assignment instead.</li>
+<li>Allow to decide whether the CB atom belongs to the actual rotamer or to the
+constant frame in sidechain optimization. This can be useful in design
+questions, where the identity of a rotamer is not given and you want to
+allow glycine or alanine.</li>
+<li>The naming of the entries in the StructureDB is not strictly limited to
+4 letter codes anymore, arbitrary strings can be used instead.</li>
+<li>Adding coordinates to the StructureDB does not require external tools anymore
+(msms, dssp etc.), internal implementations are used instead.</li>
+<li>The data that is stored in a StructureDB can be controlled at initialization,
+everything except the sequence and the actual coordinates is optional.</li>
+<li>Entries in the StructureDB can be removed again.</li>
+<li>Allow to search positions of arbitrary copies in DynamicSpatialOrganizer
+by providing RT operators.</li>
+<li>Several minor bug fixes, improvements, and speed-ups</li>
+</ul>
+</div>
+<div class="section" id="release-1-1-0">
+<h2>Release 1.1.0<a class="headerlink" href="#release-1-1-0" title="Permalink to this headline">¶</a></h2>
 <ul class="simple">
 <li>Updated dependencies: need Eigen 3.3.0 and OST 1.7</li>
 <li>Changes in modelling pipeline: remove clashing loop candidates early, new
@@ -80,7 +111,8 @@ 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-1-1">Release 1.1</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>
 <li><a class="reference internal" href="#release-1-0">Release 1.0</a></li>
 </ul>
 </li>
@@ -108,9 +140,6 @@ selected loops, reconstruct hydrogens and minimize energy with MM</li>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -121,8 +150,8 @@ selected loops, reconstruct hydrogens and minimize energy with MM</li>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/changelog.txt"
diff --git a/doc/html/cmake/index.html b/doc/html/cmake/index.html
index 4f3556eef9038ea882168fed65877fa5ab20eacc..1fc84c2ff3361ed264a8c77a5004745a711fd9a0 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.1.0 documentation</title>
+    <title>ProMod3‘s Share Of CMake &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -73,7 +75,7 @@ various <code class="file docutils literal"><span class="pre">CMakeLists.txt</sp
 <dl class="command">
 <dt id="command:module">
 <code class="descname">module</code><a class="headerlink" href="#command:module" title="Permalink to this definition">¶</a></dt>
-<dd><div class="highlight-cmake"><div class="highlight"><pre><span class="nb">module</span><span class="p">(</span><span class="s">NAME</span> <span class="s">name</span>
+<dd><div class="highlight-cmake"><div class="highlight"><pre><span></span><span class="nb">module</span><span class="p">(</span><span class="s">NAME</span> <span class="s">name</span>
        <span class="s">SOURCES</span> <span class="s">source1</span> <span class="s">source2</span>
        <span class="s">HEADERS</span> <span class="s">header1</span> <span class="s">header2</span> <span class="s">[IN_DIR</span> <span class="s">dir]</span>
                <span class="s">[header3</span> <span class="s">header4</span> <span class="s">[IN_DIR</span> <span class="s">dir]]</span>
@@ -114,7 +116,7 @@ libraries here, such as <code class="docutils literal"><span class="pre">${OST_L
 <dl class="command">
 <dt id="command:pymod">
 <code class="descname">pymod</code><a class="headerlink" href="#command:pymod" title="Permalink to this definition">¶</a></dt>
-<dd><div class="highlight-cmake"><div class="highlight"><pre><span class="nb">pymod</span><span class="p">(</span><span class="s">NAME</span> <span class="s">name</span>
+<dd><div class="highlight-cmake"><div class="highlight"><pre><span></span><span class="nb">pymod</span><span class="p">(</span><span class="s">NAME</span> <span class="s">name</span>
       <span class="s">CPP</span> <span class="s">source1</span> <span class="s">source2</span>
       <span class="s">PY</span> <span class="s">source</span> <span class="s">source2</span> <span class="s">[IN_DIR</span> <span class="s">dir]</span>
          <span class="s">[source3</span> <span class="s">source4</span> <span class="s">[IN_DIR</span> <span class="s">dir]]</span>
@@ -162,7 +164,7 @@ headers in the <code class="file docutils literal"><span class="pre">config</spa
 <dl class="command">
 <dt id="command:convert_module_data">
 <code class="descname">convert_module_data</code><a class="headerlink" href="#command:convert_module_data" title="Permalink to this definition">¶</a></dt>
-<dd><div class="highlight-cmake"><div class="highlight"><pre><span class="nb">convert_module_data</span><span class="p">(</span><span class="s">MODULE</span> <span class="s">name</span>
+<dd><div class="highlight-cmake"><div class="highlight"><pre><span></span><span class="nb">convert_module_data</span><span class="p">(</span><span class="s">MODULE</span> <span class="s">name</span>
                     <span class="s">FILE</span> <span class="s">file</span>
                     <span class="s">SCRIPT</span> <span class="s">script</span>
                     <span class="s">[ARGS</span> <span class="s">args]</span><span class="p">)</span>
@@ -184,7 +186,7 @@ If given, <code class="docutils literal"><span class="pre">args</span></code> ca
 <dl class="command">
 <dt id="command:promod3_unittest">
 <code class="descname">promod3_unittest</code><a class="headerlink" href="#command:promod3_unittest" title="Permalink to this definition">¶</a></dt>
-<dd><div class="highlight-cmake"><div class="highlight"><pre><span class="nb">promod3_unittest</span><span class="p">(</span><span class="s">MODULE</span> <span class="s">name</span>
+<dd><div class="highlight-cmake"><div class="highlight"><pre><span></span><span class="nb">promod3_unittest</span><span class="p">(</span><span class="s">MODULE</span> <span class="s">name</span>
                  <span class="s">SOURCES</span> <span class="s">source1</span> <span class="s">[source2</span> <span class="s">...]</span>
                  <span class="s">[LINK</span> <span class="s">library1/</span> <span class="s">linker</span> <span class="s">flag1</span> <span class="s">[library2/</span> <span class="s">linker</span> <span class="s">flag2</span> <span class="s">...]]</span>
                  <span class="s">[DATA</span> <span class="s">data1</span> <span class="s">[data2</span> <span class="s">...]]</span>
@@ -240,7 +242,7 @@ By default all unit tests are registered to be executed with the
 <dl class="command">
 <dt id="command:add_doc_source">
 <code class="descname">add_doc_source</code><a class="headerlink" href="#command:add_doc_source" title="Permalink to this definition">¶</a></dt>
-<dd><div class="highlight-cmake"><div class="highlight"><pre><span class="nb">add_doc_source</span><span class="p">(</span><span class="s">NAME</span> <span class="s">name</span>
+<dd><div class="highlight-cmake"><div class="highlight"><pre><span></span><span class="nb">add_doc_source</span><span class="p">(</span><span class="s">NAME</span> <span class="s">name</span>
                <span class="s">RST</span> <span class="s">rst1</span> <span class="s">[rst2...]</span><span class="p">)</span>
 </pre></div>
 </div>
@@ -265,7 +267,7 @@ name or a CMake list.</dd>
 <dl class="command">
 <dt id="command:add_doc_dependency">
 <code class="descname">add_doc_dependency</code><a class="headerlink" href="#command:add_doc_dependency" title="Permalink to this definition">¶</a></dt>
-<dd><div class="highlight-cmake"><div class="highlight"><pre><span class="nb">add_doc_dependency</span><span class="p">(</span><span class="s">NAME</span> <span class="s">name</span>
+<dd><div class="highlight-cmake"><div class="highlight"><pre><span></span><span class="nb">add_doc_dependency</span><span class="p">(</span><span class="s">NAME</span> <span class="s">name</span>
                    <span class="s">DEP</span> <span class="s">dependency1</span> <span class="s">[dependency2...]</span><span class="p">)</span>
 </pre></div>
 </div>
@@ -292,7 +294,7 @@ absolute path.</dd>
 <dl class="command">
 <dt id="command:pm_action">
 <code class="descname">pm_action</code><a class="headerlink" href="#command:pm_action" title="Permalink to this definition">¶</a></dt>
-<dd><div class="highlight-cmake"><div class="highlight"><pre><span class="nb">pm_action</span><span class="p">(</span><span class="s">ACTION</span> <span class="s">action-script</span>
+<dd><div class="highlight-cmake"><div class="highlight"><pre><span></span><span class="nb">pm_action</span><span class="p">(</span><span class="s">ACTION</span> <span class="s">action-script</span>
           <span class="s">TARGET</span> <span class="s">target</span><span class="p">)</span>
 </pre></div>
 </div>
@@ -363,9 +365,6 @@ target has to be created <strong>before</strong> any action may be attached to i
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -376,8 +375,8 @@ target has to be created <strong>before</strong> any action may be attached to i
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/cmake/index.txt"
diff --git a/doc/html/contributing.html b/doc/html/contributing.html
index a603efdf074a16bb0b6c713c9757612dc40d17f5..bac4dc1ddde827f6df550f11ea81f3c188323372 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.1.0 documentation</title>
+    <title>Contributing &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -53,27 +55,27 @@ the repository into a directory and just changed into it.</p>
 work fine with all the other new fellows waiting for release right from the
 beginning. Therefore you need to switch branches as a first step. Git will
 tell you for which branch you went, a story of failure otherwise.</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git checkout develop
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> git checkout develop
 <span class="go">Switched to branch &#39;develop&#39;</span>
 </pre></div>
 </div>
 <p>Sitting on top of the right code basis, you should just spawn your own branch
 from it. As an example, your feature will go by the name of &#8216;sidechain&#8217;.</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git checkout -b sidechain
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> git checkout -b sidechain
 <span class="go">Switched to a new branch &#39;sidechain&#39;</span>
 </pre></div>
 </div>
 <p>This time, Git should tell you about going for <strong>a new</strong> branch.</p>
 <p>Before starting to create anything for real, now is the perfect moment to
 install our very own Git hook to check some coding rules on commit.</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> cp extras/pre_commit/pre-commit .git/hooks/
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> cp extras/pre_commit/pre-commit .git/hooks/
 </pre></div>
 </div>
 <p>With that in place, changes which break our coding standards will abort any
 commit.</p>
 <p>Now create the directory structure where your project will live. Here is the
 list of directories which are likely to be used in every project.</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> mkdir -p sidechain/doc
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> mkdir -p sidechain/doc
 <span class="gp">$</span> mkdir -p sidechain/pymod
 <span class="gp">$</span> mkdir -p sidechain/tests
 </pre></div>
@@ -81,7 +83,7 @@ list of directories which are likely to be used in every project.</p>
 <p>If you run <code class="docutils literal"><span class="pre">git</span> <span class="pre">status</span></code> at this point, you will see basically nothing. That
 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 class="gp">$</span> touch sidechain/pymod/__init__.py
+<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
 </pre></div>
@@ -93,7 +95,7 @@ your documentation.</p>
 <p>For integration with <strong class="command">make</strong>, the build system needs to now about the
 new module and its members. This goes for setting up new CMake files and
 extending some around the directory root.</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> touch sidechain/CMakeLists.txt
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> touch sidechain/CMakeLists.txt
 <span class="gp">$</span> touch sidechain/pymod/CMakeLists.txt
 <span class="gp">$</span> touch sidechain/doc/CMakeLists.txt
 </pre></div>
@@ -101,7 +103,7 @@ extending some around the directory root.</p>
 <p>Each of those files still needs a bit of content. The simplest one comes from
 the module&#8217;s root, <code class="file docutils literal"><span class="pre">sidechain/CMakeLists.txt</span></code>:</p>
 <div class="highlight-cmake"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
-2</pre></div></td><td class="code"><div class="highlight"><pre><span class="nb">add_subdirectory</span><span class="p">(</span><span class="s">pymod</span><span class="p">)</span>
+2</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="nb">add_subdirectory</span><span class="p">(</span><span class="s">pymod</span><span class="p">)</span>
 <span class="nb">add_subdirectory</span><span class="p">(</span><span class="s">doc</span><span class="p">)</span>
 </pre></div>
 </td></tr></table></div>
@@ -113,7 +115,7 @@ configurations. The next level in <code class="file docutils literal"><span clas
 2
 3
 4
-5</pre></div></td><td class="code"><div class="highlight"><pre><span class="nb">set</span><span class="p">(</span><span class="s">SIDECHAIN_RST</span>
+5</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="nb">set</span><span class="p">(</span><span class="s">SIDECHAIN_RST</span>
 <span class="s">index.rst</span>
 <span class="p">)</span>
 
@@ -138,7 +140,7 @@ a couple of examples around in this repository. Here is the most basic
 2
 3
 4
-5</pre></div></td><td class="code"><div class="highlight"><pre><span class="nb">set</span><span class="p">(</span><span class="s">SIDECHAIN_PYMOD</span>
+5</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="nb">set</span><span class="p">(</span><span class="s">SIDECHAIN_PYMOD</span>
 <span class="s">__init__.py</span>
 <span class="p">)</span>
 
@@ -166,7 +168,7 @@ top level <code class="file docutils literal"><span class="pre">CMakeLists.txt</
 12
 13
 14
-15</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">## &lt;lots of cmake commands...&gt;</span>
+15</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="c">## &lt;lots of cmake commands...&gt;</span>
 
 <span class="c">## sub dirs to be recognised by CMake</span>
 <span class="c">## e.g. add_subdirectory(src), subdirs have their own CMakeLists.txt</span>
@@ -198,8 +200,8 @@ still can stay in your repository while being out of the source tree by using
 sub-directories. ProMod3 comes with a dedicated prefix &#8216;build*&#8217; in
 <code class="file docutils literal"><span class="pre">.gitignore</span></code>. Have a directory <code class="file docutils literal"><span class="pre">build</span></code> and <code class="file docutils literal"><span class="pre">build-dbg</span></code> and it
 will not show up in <code class="docutils literal"><span class="pre">git</span> <span class="pre">status</span></code>.</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> mkdir build
-<span class="gp">$</span> <span class="nb">cd </span>build
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> mkdir build
+<span class="gp">$</span> <span class="nb">cd</span> build
 </pre></div>
 </div>
 <p>To actually create all the makefiles and generated files, you may use one of
@@ -208,7 +210,7 @@ those scripts only need to be pointed to an OST staging tree. Even if you
 are on a system not covered by available scripts, their code may help you at
 the CMake command. Once you managed to conquer a new system, feel free to add
 a new configuration script. The following example assumes Fedora 19.</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> ../conf-scripts/fedora-19-conf ../../ost.git/stage
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> ../conf-scripts/fedora-19-conf ../../ost.git/stage
 </pre></div>
 </div>
 <p>From this point, <strong class="command">make</strong> should work and you could start adding your
@@ -219,13 +221,13 @@ beginning. At some point, new code needs testing anyway to see if it does what
 it should, so just do this by writing unit tests. Test sources are stored in
 files with a prefix <code class="file docutils literal"><span class="pre">test_</span></code> and usually come per submodule instead of
 sporting a single monolithic <code class="file docutils literal"><span class="pre">test_sidechain_reconstruction.py</span></code>.</p>
-<p>Python code is evaluated using its own <a class="reference external" href="https://docs.python.org/2.7/library/unittest.html">unit testing framework</a> with a little help from <a class="reference external" href="http://www.OpenStructure.org">OST</a> (C++ uses the
-Boost <a class="reference external" href="http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/index.html">Test Library</a>). The
+<p>Python code is evaluated using its own <a class="reference external" href="https://docs.python.org/2.7/library/unittest.html">unit testing framework</a> with a little help from <a class="reference external" href="https://www.OpenStructure.org">OST</a> (C++ uses the
+Boost <a class="reference external" href="https://www.boost.org/doc/libs/1_53_0/libs/test/doc/html/index.html">Test Library</a>). The
 basic scheme is to import your module, subclass <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> and
 make the whole file runnable as script using the most common <a class="reference external" href="https://docs.python.org/2.7/library/__main__.html"><code class="xref py py-attr docutils literal"><span class="pre">__name__</span></code></a>
 attribute. As an example we test the
 <a class="reference internal" href="modelling/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> function:</p>
-<div class="highlight-python"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
+<div class="highlight-default"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
  2
  3
  4
@@ -243,24 +245,24 @@ attribute. As an example we test the
 16
 17
 18
-19</pre></div></td><td class="code"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">unittest</span>
-<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">modelling</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">mol</span>
+19</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">unittest</span>
+<span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">modelling</span>
+<span class="kn">from</span> <span class="nn">ost</span> <span class="k">import</span> <span class="n">io</span><span class="p">,</span><span class="n">mol</span>
 <span class="kn">import</span> <span class="nn">os</span>
 
 <span class="k">class</span> <span class="nc">ReconstructTests</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="k">def</span> <span class="nf">testReconstruct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-    	<span class="n">in_file</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="s">&#39;data&#39;</span><span class="p">,</span> <span class="s">&#39;1eye.pdb&#39;</span><span class="p">)</span>
-    	<span class="n">ref_file</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="s">&#39;data&#39;</span><span class="p">,</span> <span class="s">&#39;1eye_rec.pdb&#39;</span><span class="p">)</span>
-    	<span class="c"># get and reconstruct 1eye</span>
+    	<span class="n">in_file</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="s1">&#39;data&#39;</span><span class="p">,</span> <span class="s1">&#39;1eye.pdb&#39;</span><span class="p">)</span>
+    	<span class="n">ref_file</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="s1">&#39;data&#39;</span><span class="p">,</span> <span class="s1">&#39;1eye_rec.pdb&#39;</span><span class="p">)</span>
+    	<span class="c1"># get and reconstruct 1eye</span>
     	<span class="n">prot</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">in_file</span><span class="p">)</span>
-    	<span class="n">modelling</span><span class="o">.</span><span class="n">ReconstructSidechains</span><span class="p">(</span><span class="n">prot</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="c"># compare with reference solution</span>
+    	<span class="n">modelling</span><span class="o">.</span><span class="n">ReconstructSidechains</span><span class="p">(</span><span class="n">prot</span><span class="p">,</span> <span class="n">keep_sidechains</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+    	<span class="c1"># compare with reference solution</span>
     	<span class="n">prot_rec</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">ref_file</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">prot</span><span class="o">.</span><span class="n">GetAtomCount</span><span class="p">(),</span> <span class="n">prot_rec</span><span class="o">.</span><span class="n">GetAtomCount</span><span class="p">())</span>
 
-<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span>
-    <span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">testutils</span>
+<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">from</span> <span class="nn">ost</span> <span class="k">import</span> <span class="n">testutils</span>
     <span class="n">testutils</span><span class="o">.</span><span class="n">RunTests</span><span class="p">()</span>
 </pre></div>
 </td></tr></table></div>
@@ -270,7 +272,7 @@ First, tell CMake to search <code class="file docutils literal"><span class="pre
 by extending the list of sub-directories in <code class="file docutils literal"><span class="pre">sidechain/CMakeLists.txt</span></code>:</p>
 <div class="highlight-cmake"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
 2
-3</pre></div></td><td class="code"><div class="highlight"><pre> <span class="nb">add_subdirectory</span><span class="p">(</span><span class="s">pymod</span><span class="p">)</span>
+3</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="nb">add_subdirectory</span><span class="p">(</span><span class="s">pymod</span><span class="p">)</span>
  <span class="nb">add_subdirectory</span><span class="p">(</span><span class="s">doc</span><span class="p">)</span>
  <span class="nb">add_subdirectory</span><span class="p">(</span><span class="s">tests</span><span class="p">)</span>
 </pre></div>
@@ -289,7 +291,7 @@ you.</p>
  9
 10
 11
-12</pre></div></td><td class="code"><div class="highlight"><pre><span class="nb">set</span><span class="p">(</span><span class="s">SIDECHAIN_UNIT_TESTS</span>
+12</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="nb">set</span><span class="p">(</span><span class="s">SIDECHAIN_UNIT_TESTS</span>
   <span class="s">test_reconstruct_sidechains.py</span>
 <span class="p">)</span>
 
@@ -314,10 +316,10 @@ you.</p>
 launcher found in your staging directory at <code class="file docutils literal"><span class="pre">stage/bin/pm</span></code>. This little
 guy helps keeping the shell environment in the right mood to carry out your
 job. So usually you will start an action by</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> stage/bin/pm <span class="nb">help</span>
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> stage/bin/pm <span class="nb">help</span>
 </pre></div>
 </div>
-<p>To start your own action, follow <a class="reference internal" href="#how-to-start-your-own-module"><span>How To Start Your Own Module</span></a> until
+<p>To start your own action, follow <a class="reference internal" href="#how-to-start-your-own-module"><span class="std std-ref">How To Start Your Own Module</span></a> until
 creating a directory structure for a new module. Also <strong>do</strong> go for a dedicated
 branch for action-development. There you can produce intermediate commits while
 other branches stay clean in case you have to do some work there which needs to
@@ -325,7 +327,7 @@ get public.</p>
 <p>After preparing your repository its time to create a file for the action. That
 is a bit different than for modules. Assuming we are sitting in the
 repository&#8217;s root:</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> touch action/pm-awesome-action
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> touch action/pm-awesome-action
 <span class="gp">$</span> chmod +x action/pm-awesome-action
 </pre></div>
 </div>
@@ -342,7 +344,7 @@ executable, which does not propagate if you do it <strong>after</strong> the fir
 4
 5
 6
-7</pre></div></td><td class="code"><div class="highlight"><pre> <span class="nb">add_custom_target</span><span class="p">(</span><span class="s">actions</span> <span class="s">ALL</span><span class="p">)</span>
+7</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="nb">add_custom_target</span><span class="p">(</span><span class="s">actions</span> <span class="s">ALL</span><span class="p">)</span>
  <span class="nb">add_subdirectory</span><span class="p">(</span><span class="s">tests</span><span class="p">)</span>
 
  <span class="nb">pm_action_init</span><span class="p">()</span>
@@ -376,11 +378,11 @@ that&#8217;s enough to get everything just right.</p>
 Your action will have own function definitions, variables and all the bells
 and whistles. Hiding behind <a class="reference external" href="https://docs.python.org/2.7/library/__main__.html"><code class="xref py py-attr docutils literal"><span class="pre">__main__</span></code></a> keeps everything separated and makes
 things easier when it gets to debugging. So just after</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">alot</span>
+<div class="highlight-python"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">alot</span>
 
 <span class="k">def</span> <span class="nf">functions_specific_to_your_action</span><span class="p">(</span><span class="o">...</span><span class="p">):</span>
 
-<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span>
+<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="o">&lt;</span><span class="n">put</span> <span class="n">together</span> <span class="n">what</span> <span class="n">your</span> <span class="n">action</span> <span class="n">should</span> <span class="n">do</span> <span class="n">here</span><span class="o">&gt;</span>
 </pre></div>
 </div>
@@ -463,7 +465,7 @@ and <code class="docutils literal"><span class="pre">ost</span></code> as in the
 folder and adapt it for your purposes. First, you will have to fix the paths
 to ProMod3 and OST in the <code class="file docutils literal"><span class="pre">Makefile</span></code> by changing the following
 lines:</p>
-<div class="highlight-make"><div class="highlight"><pre><span class="c"># path to OST and ProMod3 stage</span>
+<div class="highlight-make"><div class="highlight"><pre><span></span><span class="c"># path to OST and ProMod3 stage</span>
 <span class="nv">OST_ROOT</span> <span class="o">=</span> &lt;DEFINEME&gt;/ost/build/stage
 <span class="nv">PROMOD3_ROOT</span> <span class="o">=</span> &lt;DEFINEME&gt;/ProMod3/build/stage
 </pre></div>
@@ -518,7 +520,7 @@ crucial. For documentation which does not relate to a particular module, the
 repository comes with a top-level <code class="file docutils literal"><span class="pre">doc</span></code> directory.</p>
 <p>While you should not spend to much time thinking about how to format
 documentation, here is a helpful list of standard formatters:
-<a class="reference external" href="http://sphinx-doc.org/markup/inline.html">http://sphinx-doc.org/markup/inline.html</a></p>
+<a class="reference external" href="http://sphinx-doc.org/en/stable/markup/inline.html">http://sphinx-doc.org/en/stable/markup/inline.html</a></p>
 <p>If you write new functionality for ProMod3, or fix bugs, feel free to extend
 the <code class="file docutils literal"><span class="pre">CHANGELOG</span></code> file. It will be automatically pulled into the
 documentation.</p>
@@ -532,13 +534,13 @@ they can be included in the documentation using the
 <a class="reference external" href="http://www.sphinx-doc.org/en/stable/markup/code.html#includes">literalinclude</a>
 directive. For instance, if you add a new example code <code class="file docutils literal"><span class="pre">loop_main.py</span></code>,
 you would add it in your module documentation as follows:</p>
-<div class="highlight-rest"><div class="highlight"><pre><span class="p">..</span> <span class="ow">literalinclude</span><span class="p">::</span> ../../../tests/doc/scripts/loop_main.py
+<div class="highlight-rest"><div class="highlight"><pre><span></span><span class="p">..</span> <span class="ow">literalinclude</span><span class="p">::</span> ../../../tests/doc/scripts/loop_main.py
 </pre></div>
 </div>
 <p>If your example does not relate to a specific module and the documentation is
 in the top-level <code class="file docutils literal"><span class="pre">doc</span></code> directory, you need to drop one of the <code class="docutils literal"><span class="pre">..</span></code> as
 follows:</p>
-<div class="highlight-rest"><div class="highlight"><pre><span class="p">..</span> <span class="ow">literalinclude</span><span class="p">::</span> ../../tests/doc/scripts/hello_world.py
+<div class="highlight-rest"><div class="highlight"><pre><span></span><span class="p">..</span> <span class="ow">literalinclude</span><span class="p">::</span> ../../tests/doc/scripts/hello_world.py
 </pre></div>
 </div>
 <p>To ensure that the code examples keep on working, a unit test has to be defined
@@ -556,7 +558,7 @@ test.</li>
 there is no need to compile ProMod3 to read it. Our policy is to keep that
 folder in-sync with the latest documentation at least on the <code class="docutils literal"><span class="pre">master</span></code> branch
 (i.e. for every release). You can use the following commands to do the update:</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> <span class="nb">cd</span> &lt;PROMOD3_PATH&gt;/build
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> <span class="nb">cd</span> &lt;PROMOD3_PATH&gt;/build
 <span class="gp">$</span> make html
 <span class="gp">$</span> rsync -iv -az --exclude<span class="o">=</span><span class="s2">&quot;.*&quot;</span> --delete <span class="se">\</span>
 <span class="go">        &quot;stage/share/promod3/html/&quot; &quot;../doc/html&quot;</span>
@@ -639,9 +641,6 @@ contributions to web pages using ProMod3.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -652,8 +651,8 @@ contributions to web pages using ProMod3.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/contributing.txt"
diff --git a/doc/html/core/geometry.html b/doc/html/core/geometry.html
index d5c2a5d69c5b5b2f98ed0b572ee1ea3d57f40a2a..900922c9480a79a05d8d4d0393301ca893b7ba61 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.1.0 documentation</title>
+    <title>Geometry functions &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -53,14 +55,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -76,16 +78,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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.7.1)"><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.7.1)"><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.7.1)"><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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -102,9 +104,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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.7.1)"><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.7.1)"><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>
@@ -114,7 +116,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -131,16 +133,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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.7.1)"><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.7.1)"><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.7.1)"><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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -157,8 +159,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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.7.1)"><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>
@@ -166,7 +168,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="http://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.6.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/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">Mat4</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -183,7 +185,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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>
@@ -191,7 +193,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="http://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat3" title="(in OpenStructure v1.6.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/dev/geom/mat/#ost.geom.Mat3" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">Mat3</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -208,7 +210,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -227,7 +229,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -337,9 +339,6 @@ angles and one distance and is used in the fragment database for fast lookups.</
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -350,8 +349,8 @@ angles and one distance and is used in the fragment database for fast lookups.</
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/core/geometry.txt"
diff --git a/doc/html/core/graph_minimizer.html b/doc/html/core/graph_minimizer.html
new file mode 100644
index 0000000000000000000000000000000000000000..b77f621ee96716e2529ad7cbd601bfa656199ce3
--- /dev/null
+++ b/doc/html/core/graph_minimizer.html
@@ -0,0 +1,402 @@
+<!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>Graph Minimizer &mdash; ProMod3 1.2.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.2.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>
+    <link rel="top" title="ProMod3 1.2.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" />
+   
+  <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="graph-minimizer">
+<h1>Graph Minimizer<a class="headerlink" href="#graph-minimizer" title="Permalink to this headline">¶</a></h1>
+<p>The graph minimizer solves an energy minimization problem where we have n
+nodes <span class="math">N_i</span>, with each node having several possible solutions.
+Every solution has a self energy <span class="math">E_{self}</span> and pairwise energies in between nodes
+are possible. The goal is to select exactly one solution per node to obtain
+a set <span class="math">X=[x_1, x_2, ..., x_n]</span> that minimizes:</p>
+<div class="math">
+<p><span class="math">F(X)=\displaystyle\sum_iE_{self}(N_i[x_i]) +\displaystyle \sum_i \displaystyle \sum_{j&gt;i}E_{pair}(N_i[x_i], N_j[x_j])</span></p>
+</div><dl class="class">
+<dt id="promod3.core.GraphMinimizer">
+<em class="property">class </em><code class="descclassname">promod3.core.</code><code class="descname">GraphMinimizer</code><a class="headerlink" href="#promod3.core.GraphMinimizer" title="Permalink to this definition">¶</a></dt>
+<dd><dl class="method">
+<dt id="promod3.core.GraphMinimizer.AddNode">
+<code class="descname">AddNode</code><span class="sig-paren">(</span><em>self_energies</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.GraphMinimizer.AddNode" title="Permalink to this definition">¶</a></dt>
+<dd><p>Adds a node to the graph.</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>self_energies</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; Directly controls the number of possible solutions in that
+node and assigns the corresponding self energies</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">The idx of the added node</td>
+</tr>
+<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#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a></td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.core.GraphMinimizer.AddEdge">
+<code class="descname">AddEdge</code><span class="sig-paren">(</span><em>node_idx_one</em>, <em>node_idx_two</em>, <em>pairwise_energies</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.GraphMinimizer.AddEdge" title="Permalink to this definition">¶</a></dt>
+<dd><p>Adds an edge between the specified nodes.</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>node_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; Index of the first node</li>
+<li><strong>node_idx_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; Index of the second node</li>
+<li><strong>pairwise_energies</strong> (<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> 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; The pairwise energies that contribute to the
+overall energy function. There must be a list for
+every possible solution in node one. All of those
+lists must have exactly the length of possible
+solutions in node two.</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">The idx of the added edge</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://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></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>node_idx_one</em> or <em>node_idx_two</em>
+specify non existent nodes or when <em>pairwise_energies</em> is
+inconsistent with the number of solutions in the specified nodes.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.core.GraphMinimizer.ApplyDEE">
+<code class="descname">ApplyDEE</code><span class="sig-paren">(</span><em>node_idx</em><span class="optional">[</span>, <em>e_cut=0.0</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.GraphMinimizer.ApplyDEE" title="Permalink to this definition">¶</a></dt>
+<dd><p>Applies dead end elimination on one particular node and potentially
+deactivates certain solutions. The goldstein criterion is described in
+<a class="reference internal" href="#goldstein1994" id="id1">[goldstein1994]</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>node_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; Node to apply dead end elimination</li>
+<li><strong>e_cut</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; If set to
+0.0, the default goldstein criterion is applied =&gt;
+a solution is removed if it&#8217;s dominated by all other
+solutions in the same node. If you increase this value,
+a solution must be dominated by at least this <strong>e_cut</strong>.</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last"><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> whether any solution has been deactivated.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.core.GraphMinimizer.ApplyEdgeDecomposition">
+<code class="descname">ApplyEdgeDecomposition</code><span class="sig-paren">(</span><em>edge_idx</em>, <em>epsilon</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.GraphMinimizer.ApplyEdgeDecomposition" title="Permalink to this definition">¶</a></dt>
+<dd><p>Applies edge decomposition on one particular edge and potentially
+deactivates it. The exact decomposition  procedure is described in
+<a class="reference internal" href="../sidechain/index.html#krivov2009" id="id2">[krivov2009]</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>edge_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; Edge to decompose.</li>
+<li><strong>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; The energy threshold to perform edge decomposition.</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last"><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> whether the edge has been decomposed and
+deactivated</p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.core.GraphMinimizer.Prune">
+<code class="descname">Prune</code><span class="sig-paren">(</span><em>epsilon</em><span class="optional">[</span>, <em>e_cut=0.0</em>, <em>consider_all_nodes=False</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.GraphMinimizer.Prune" title="Permalink to this definition">¶</a></dt>
+<dd><p>Performs edge decomposition followed by dead end elimination in an
+iterative manner until no changes can be observed anymore given
+<strong>epsilon</strong>.</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>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; The energy threshold to perform edge decomposition.</li>
+<li><strong>e_cut</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; Parameter to control dead end elimination.</li>
+<li><strong>consider_all_nodes</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, wether the dead end elimination should be
+applied to all nodes, or only those who are
+connected with an edge removed by edge
+decomposition. This is useful if already a Prune
+operation has been performed =&gt; only those nodes
+connected to a removed edge have the chance for
+successful dead end elimination.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.core.GraphMinimizer.Reset">
+<code class="descname">Reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.GraphMinimizer.Reset" title="Permalink to this definition">¶</a></dt>
+<dd><p>Resets the graph by undoing any pruning operation (DEE and edge decomposition)</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.core.GraphMinimizer.TreeSolve">
+<code class="descname">TreeSolve</code><span class="sig-paren">(</span><span class="optional">[</span><em>max_complexity=inf</em>, <em>initial_epsilon=0.02</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.GraphMinimizer.TreeSolve" title="Permalink to this definition">¶</a></dt>
+<dd><p>The method solves a graph using a minimal width tree decomposition
+approach in an iterative manner. In every iteration, the algorithm performs
+a pruning step (DEE / Edge Decomposition) and subsequently tries to solve
+each connected component in the graph separately.
+If the number of possible enumerations in the tree constructetd from a
+particular connected component is is larger <strong>max_complexity</strong>,
+this component is solved in a later iteration. The algorithm iterates until
+all connected components are solved and steadily increases the epsilon value
+resulting in a more and more agressive edge decomposition.
+Algorithm further descsribed in <a class="reference internal" href="../sidechain/index.html#krivov2009" id="id3">[krivov2009]</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>max_complexity</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 possible permutations, that have to
+be enumerated in the resulting tree after tree
+decomposition.</li>
+<li><strong>initial_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; The initial energy threshold to perform edge
+decomposition.</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">A tuple with the first element being a list of indices
+representing the single solutions minimizing
+the overall energy function.
+The second element is the according energy value.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.core.GraphMinimizer.AStarSolve">
+<code class="descname">AStarSolve</code><span class="sig-paren">(</span><em>e_thresh</em><span class="optional">[</span>, <em>max_n=100</em>, <em>max_visited_nodes=100000000</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.GraphMinimizer.AStarSolve" title="Permalink to this definition">¶</a></dt>
+<dd><p>The method solves a graph using the A* algorithm. Besides creating the
+minimal energy solution, the function produces a maximum of <strong>max_n</strong>
+solutions sorted by energy. It aborts as soon as it sees the first solution
+with an energy difference of <strong>e_thresh</strong> to the optimal solution or hits
+<strong>max_n</strong>. If you&#8217;re only interested in the optimal solution you should use
+the TreeSolve function since it&#8217;s much faster and uses less memory.
+There is no automatic pruning of the graph using DEE or edge decomposition,
+so you have to do it by yourself, otherwise you&#8217;ll have a looooooong
+runtime or even hit the <strong>max_visited_nodes</strong> parameter that caps the memory
+usage.
+To have a valid solution you have to take care that you set the <strong>e_cut</strong>
+parameter in the pruning function to <strong>e_tresh</strong>.
+Algorithm is described in <a class="reference internal" href="#leach1998" id="id4">[leach1998]</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>e_thresh</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; Maximal energy difference of a solution to the
+optimal solution to be considered.</li>
+<li><strong>max_n</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 maximum number of solutions that will be generated.</li>
+<li><strong>max_visited_nodes</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; Caps the memory usage of the algorithm. Besides
+The memory used for pairwise energies and self
+energies, the algorithm uses about
+<strong>max_visited_nodes</strong> * 20 bytes.</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">A tuple with the first element being a list of
+solutions. The second element is a list
+of energies for the according solutions.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.core.GraphMinimizer.MCSolve">
+<code class="descname">MCSolve</code><span class="sig-paren">(</span><span class="optional">[</span><em>n=100</em>, <em>mc_steps=100000</em>, <em>start_temperature=1000.0</em>, <em>change_frequency=1000</em>, <em>cooling_factor=0.9</em>, <em>seed=0</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.GraphMinimizer.MCSolve" title="Permalink to this definition">¶</a></dt>
+<dd><p>Does a total of <strong>n</strong> Monte Carlo runs to find low energy solutions
+of the graph. Each run starts with a random
+configuration. At each of the <strong>mc_steps</strong> steps, a random node and
+a random solution at that location is selected and an energy difference
+of that random selection relative to the current configuration is
+estimated. If the difference in energy is negative, the step is
+accepted. If not, the step is accepted with a probability given by
+the temperature dependent Metropolis criterion
+<span class="math">exp^{\left(\frac{-e_{diff}}{T}\right)}</span>.
+The temperature for every run starts with <strong>start_temperature</strong>
+and is multiplied every <strong>change_frequency</strong> steps with <strong>cooling_factor</strong>
+to achieve a simulated annealing effect.
+There is no automatic pruning of the graph using DEE or edge decomposition,
+you have to do that by yourself.</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>n</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 Monte Carlo runs</li>
+<li><strong>mc_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; Number of Monte Carlo steps per run</li>
+<li><strong>start_temperature</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; Start temperature for the temperature dependent
+Metropolis criterion</li>
+<li><strong>change_frequency</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 steps the temperature stays the same</li>
+<li><strong>cooling_factor</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; Factor to multiply temperature each
+<strong>change_frequency</strong> steps</li>
+<li><strong>seed</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; Seed for random number generator</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">A tuple with the first element being a list of
+solutions. The second element is a list
+of energies for the according solutions.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.core.GraphMinimizer.NaiveSolve">
+<code class="descname">NaiveSolve</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.core.GraphMinimizer.NaiveSolve" title="Permalink to this definition">¶</a></dt>
+<dd><p>Don&#8217;t even think of using this... This function only exists for debug
+purposes and does the full enumeration of the solution space.
+It might become faster with the appropriate
+<a class="reference external" href="https://www.youtube.com/watch?v=fQGbXmkSArs">techniques</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">Returns:</th><td class="field-body">A tuple with the first element being a list of indices
+representing the single solutions minimizing
+the overall energy function.
+The second element is the according energy value.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<table class="docutils citation" frame="void" id="goldstein1994" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id1">[goldstein1994]</a></td><td>Goldstein RF (1994). Efficient rotamer elimination applied to protein side-chains and related spin glasses. Biophys J.</td></tr>
+</tbody>
+</table>
+<table class="docutils citation" frame="void" id="leach1998" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id4">[leach1998]</a></td><td>Leach AR, Lemon AP (1998). Explring the conformational space of prootein side chains using dead-end elimination and the A* algorithm. Proteins.</td></tr>
+</tbody>
+</table>
+</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><a href="index.html"><code class="docutils literal"><span class="pre">core</span></code> - ProMod3 Core Functionality</a><ul>
+      <li>Previous: <a href="runtime_profiling.html" title="previous chapter">Runtime profiling</a></li>
+      <li>Next: <a href="setcompoundschemlib.html" title="next chapter"><code class="docutils literal"><span class="pre">SetCompoundsChemlib()</span></code></a></li>
+  </ul></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/core/graph_minimizer.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;2017, ProMod3 authors.
+      
+      |
+      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/core/graph_minimizer.txt"
+          rel="nofollow">Page source</a>
+    </div>
+
+    
+
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/html/core/helper.html b/doc/html/core/helper.html
index fbc111e15392a003d2646f3e8cfbb502a57fdf29..b15aa835e6882643e637d7eb5a35c4ab2dfed05b 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.1.0 documentation</title>
+    <title>helper - Shared Functionality For the Everything &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -48,15 +50,15 @@ rather empty modules left alone.</p>
 </div>
 <div class="section" id="messages">
 <h2>Messages<a class="headerlink" href="#messages" title="Permalink to this headline">¶</a></h2>
-<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">promod3.core</span> <span class="kn">import</span> <span class="n">helper</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">promod3.core</span> <span class="k">import</span> <span class="n">helper</span>
 
-<span class="n">helper</span><span class="o">.</span><span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s">&quot;Something failed!&quot;</span><span class="p">,</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="s2">&quot;Something failed!&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
 </pre></div>
 </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="http://www.openstructure.org/docs/dev/base/logging/">error log</a> and
+<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
 exit the Python interpreter.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -81,20 +83,20 @@ traditionally reserved to successful commands.</li>
 <h2>File Tests<a class="headerlink" href="#file-tests" title="Permalink to this headline">¶</a></h2>
 <p>The following example parses an argument (call as <code class="docutils literal"><span class="pre">pm</span> <span class="pre">SCRIPTNAME</span> <span class="pre">FILENAME</span></code>) as
 a file name and checks whether it is a <code class="docutils literal"><span class="pre">pdb</span></code> or <code class="docutils literal"><span class="pre">mmcif</span></code> file.</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="sd">&quot;&quot;&quot;Test for file reading.&quot;&quot;&quot;</span>
-<span class="kn">from</span> <span class="nn">promod3.core</span> <span class="kn">import</span> <span class="n">helper</span>
-<span class="kn">from</span> <span class="nn">promod3.core</span> <span class="kn">import</span> <span class="n">pm3argparse</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="sd">&quot;&quot;&quot;Test for file reading.&quot;&quot;&quot;</span>
+<span class="kn">from</span> <span class="nn">promod3.core</span> <span class="k">import</span> <span class="n">helper</span>
+<span class="kn">from</span> <span class="nn">promod3.core</span> <span class="k">import</span> <span class="n">pm3argparse</span>
 
 <span class="n">p</span> <span class="o">=</span> <span class="n">pm3argparse</span><span class="o">.</span><span class="n">PM3ArgumentParser</span><span class="p">(</span><span class="n">__doc__</span><span class="p">)</span>
-<span class="n">p</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s">&#39;file&#39;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">)</span>
+<span class="n">p</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s1">&#39;file&#39;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">)</span>
 <span class="n">opts</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">Parse</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="s">&#39;Test file&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">file</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="s1">&#39;Test file&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">file</span><span class="p">)</span>
 
-<span class="n">opts</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">ext</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">gz</span> <span class="o">=</span> <span class="n">helper</span><span class="o">.</span><span class="n">FileExtension</span><span class="p">(</span><span class="s">&#39;Test file&#39;</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span>
+<span class="n">opts</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">ext</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">gz</span> <span class="o">=</span> <span class="n">helper</span><span class="o">.</span><span class="n">FileExtension</span><span class="p">(</span><span class="s1">&#39;Test file&#39;</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span>
                                                     <span class="n">opts</span><span class="o">.</span><span class="n">file</span><span class="p">,</span>
-                                                    <span class="p">(</span><span class="s">&#39;pdb&#39;</span><span class="p">,</span> <span class="s">&#39;mmcif&#39;</span><span class="p">),</span>
-                                                    <span class="n">gzip</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+                                                    <span class="p">(</span><span class="s1">&#39;pdb&#39;</span><span class="p">,</span> <span class="s1">&#39;mmcif&#39;</span><span class="p">),</span>
+                                                    <span class="n">gzip</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
 </pre></div>
 </div>
 <dl class="function">
@@ -237,9 +239,6 @@ script will terminate if a gzip file is found.</li>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -250,8 +249,8 @@ script will terminate if a gzip file is found.</li>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/core/helper.txt"
diff --git a/doc/html/core/index.html b/doc/html/core/index.html
index af6c850eff696102202c58faeb9a58eb77c6a922..5181a7ec3f9ebc0f20af734e7e212686766b04df 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.1.0 documentation</title>
+    <title>core - ProMod3 Core Functionality &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -59,6 +61,7 @@ modeling per se but cover standard programming issues.</p>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="geometry.html">Geometry functions</a></li>
 <li class="toctree-l1"><a class="reference internal" href="runtime_profiling.html">Runtime profiling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="graph_minimizer.html">Graph Minimizer</a></li>
 </ul>
 </div>
 </div>
@@ -94,9 +97,6 @@ modeling per se but cover standard programming issues.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -107,8 +107,8 @@ modeling per se but cover standard programming issues.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/core/index.txt"
diff --git a/doc/html/core/pm3argparse.html b/doc/html/core/pm3argparse.html
index 6f049e99f43e4b5e6051f44e039b68398b84ddcb..d62653ffea18b35be5d89bfbb6bc57a49f822885 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.1.0 documentation</title>
+    <title>pm3argparse - Parsing Command Lines &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -52,14 +54,14 @@ There <a class="reference internal" href="#promod3.core.pm3argparse.PM3ArgumentP
 simplification. It provides a set of standard arguments you just need to
 activate for your action plus it comes with some verification functionality for
 input.</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="sd">&quot;&quot;&quot;</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="sd">&quot;&quot;&quot;</span>
 <span class="sd">Place the description of your script right in the file and import</span>
 <span class="sd">it via &#39;__doc__&#39; as description to the parser (&#39;-h&#39;, &#39;--help&#39;).</span>
 <span class="sd">&quot;&quot;&quot;</span>
 
-<span class="kn">from</span> <span class="nn">promod3.core</span> <span class="kn">import</span> <span class="n">pm3argparse</span>
+<span class="kn">from</span> <span class="nn">promod3.core</span> <span class="k">import</span> <span class="n">pm3argparse</span>
 
-<span class="c"># make sure we see output when passing &#39;-h&#39;</span>
+<span class="c1"># make sure we see output when passing &#39;-h&#39;</span>
 <span class="kn">import</span> <span class="nn">ost</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> 
 
@@ -154,7 +156,7 @@ sequence is used. File can be plain or gzipped.</li>
 <li><code class="docutils literal"><span class="pre">-j/--json</span> <span class="pre">&lt;OBJECT&gt;|&lt;FILE&gt;</span></code> - Alignments provided as JSON
 file/object. File can be plain or gzipped.</li>
 </ul>
-<p>See <a class="reference internal" href="../actions/index.html#promod-build-model"><span>here</span></a> for details on the file formats.</p>
+<p>See <a class="reference internal" href="../actions/index.html#promod-build-model"><span class="std std-ref">here</span></a> for details on the file formats.</p>
 <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">fasta</span></code> - filled with the input of the <code class="docutils literal"><span class="pre">--fasta</span></code> option, a
@@ -211,7 +213,7 @@ input is post processed and checked in <a class="reference internal" href="#prom
 to <a class="reference internal" href="#promod3.core.pm3argparse.PM3ArgumentParser.AddAlignment" title="promod3.core.pm3argparse.PM3ArgumentParser.AddAlignment"><code class="xref py py-meth docutils literal"><span class="pre">AddAlignment()</span></code></a>. Chains for each sequence
 are identified based on the sequence name of the
 templates in the alignments (see 
-<a class="reference internal" href="../actions/index.html#promod-build-model"><span>here</span></a> for details).</td>
+<a class="reference internal" href="../actions/index.html#promod-build-model"><span class="std std-ref">here</span></a> for details).</td>
 </tr>
 </tbody>
 </table>
@@ -334,9 +336,6 @@ and with the right constraints.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -347,8 +346,8 @@ and with the right constraints.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/core/pm3argparse.txt"
diff --git a/doc/html/core/runtime_profiling.html b/doc/html/core/runtime_profiling.html
index c0b3d5d6181ec1cbe5963d9be53733855a330d43..9a316a58d06f5c3532b8285059c6330bbd0d804b 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.1.0 documentation</title>
+    <title>Runtime profiling &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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="next" title="Graph Minimizer" href="graph_minimizer.html" />
     <link rel="prev" title="Geometry functions" href="geometry.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -170,7 +172,7 @@ will fail miserably if timers are currently running.</p>
   <li><a href="../users.html">Documentation For Users</a><ul>
   <li><a href="index.html"><code class="docutils literal"><span class="pre">core</span></code> - ProMod3 Core Functionality</a><ul>
       <li>Previous: <a href="geometry.html" title="previous chapter">Geometry functions</a></li>
-      <li>Next: <a href="setcompoundschemlib.html" title="next chapter"><code class="docutils literal"><span class="pre">SetCompoundsChemlib()</span></code></a></li>
+      <li>Next: <a href="graph_minimizer.html" title="next chapter">Graph Minimizer</a></li>
   </ul></li>
   </ul></li>
   </ul></li>
@@ -191,9 +193,6 @@ will fail miserably if timers are currently running.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -204,8 +203,8 @@ will fail miserably if timers are currently running.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/core/runtime_profiling.txt"
diff --git a/doc/html/core/setcompoundschemlib.html b/doc/html/core/setcompoundschemlib.html
index 1d400cd0581fb53191bd47ace59e84b0d5bb8f75..f508395a188297ba61d37c1f24607c48a129d7ee 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.1.0 documentation</title>
+    <title>SetCompoundsChemlib() &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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="Runtime profiling" href="runtime_profiling.html" />
+    <link rel="prev" title="Graph Minimizer" href="graph_minimizer.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -75,7 +77,7 @@ enabled globally.</p>
 <ul>
   <li><a href="../index.html">Documentation overview</a><ul>
   <li><a href="../users.html">Documentation For Users</a><ul>
-      <li>Previous: <a href="runtime_profiling.html" title="previous chapter">Runtime profiling</a></li>
+      <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>
   </ul></li>
   </ul></li>
@@ -96,9 +98,6 @@ enabled globally.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -109,8 +108,8 @@ enabled globally.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/core/setcompoundschemlib.txt"
diff --git a/doc/html/dev_setup.html b/doc/html/dev_setup.html
index 3ff8fe004347ca275dbef3cb11121d983eb8b853..e9d4c0d3b23421906c54b4db0b65a092ee138e38 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.1.0 documentation</title>
+    <title>ProMod3 Setup &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -85,9 +87,9 @@ created something that could go into a release, tidy things up according to the
 rules from above and merge it into <code class="docutils literal"><span class="pre">develop</span></code>. From there it will
 automatically find its way into the next release.</p>
 <p>To set up your own branch, start from a current <code class="docutils literal"><span class="pre">develop</span></code> branch:</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git checkout develop         <span class="c"># switch to branch develop</span>
-<span class="gp">$</span> git pull --rebase            <span class="c"># update branch develop</span>
-<span class="gp">$</span> git checkout -b &lt;BRANCHNAME&gt; <span class="c"># create branch &lt;BRANCHNAME&gt; and switch to it</span>
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> git checkout develop         <span class="c1"># switch to branch develop</span>
+<span class="gp">$</span> git pull --rebase            <span class="c1"># update branch develop</span>
+<span class="gp">$</span> git checkout -b &lt;BRANCHNAME&gt; <span class="c1"># create branch &lt;BRANCHNAME&gt; and switch to it</span>
 </pre></div>
 </div>
 <p>Over time, <code class="docutils literal"><span class="pre">develop</span></code> may recognise some changes, e.g. new features, which you
@@ -95,7 +97,7 @@ want to make use of in your project. Keeping your branch up to date is a three
 step process. Git does not allow updates on top of changed code, so either
 changes have to be committed, or if in the middle of implementing something,
 stored away temporarily. Making commits is straight forward:</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git commit -m <span class="s1">&#39;&lt;DESCRIPTION&gt;&#39;</span> <span class="c"># commit changes including a comment</span>
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> git commit -m <span class="s1">&#39;&lt;DESCRIPTION&gt;&#39;</span> <span class="c1"># commit changes including a comment</span>
 </pre></div>
 </div>
 <p>Hiding your changes away from Git just for updating files is a bit more
@@ -106,15 +108,15 @@ you have changed, too, and stashed away, this may end up in a non-resolvable
 merge conflict and your changes are lost. Usually the log tells you, which
 files were recently modified. Moving all current changes to the stack is
 achieved by:</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git stash save
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> git stash save
 </pre></div>
 </div>
 <p>To revive them, use:</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git stash pop
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> git stash pop
 </pre></div>
 </div>
 <p>After cleaning up your branch, switch to <code class="docutils literal"><span class="pre">develop</span></code>, update it and switch back:</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git checkout develop
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> git checkout develop
 <span class="gp">$</span> git pull --rebase
 <span class="gp">$</span> git checkout &lt;BRANCHNAME&gt;
 </pre></div>
@@ -123,11 +125,11 @@ achieved by:</p>
 and rebasing. A rebase may only be done, if you <strong>never</strong> pushed your branch to
 the origin of the repository (otherwise you will mess up history, in the worst
 case <code class="docutils literal"><span class="pre">develop</span></code> may be unusable once you merge):</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git rebase develop
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> git rebase develop
 </pre></div>
 </div>
 <p>For branches which are available to others, do a proper merge:</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git merge develop
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> git merge develop
 </pre></div>
 </div>
 <p>This may require some manual conflict solving and will end up in a merge commit.</p>
@@ -136,17 +138,17 @@ case <code class="docutils literal"><span class="pre">develop</span></code> may
 <h2>Git Hooks<a class="headerlink" href="#git-hooks" title="Permalink to this headline">¶</a></h2>
 <p>Git hooks are scripts invoked by Git in connection to certain commands.
 ProMod3 currently provides one for <strong class="command">commit</strong>. It is installed by</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> cp extras/pre_commit/pre-commit .git/hooks/
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> cp extras/pre_commit/pre-commit .git/hooks/
 </pre></div>
 </div>
 <p>Its task is applying coding standards and doing a bunch of other checks on the
 files involved in a commit. Everything around the script is hosted in
 <code class="file docutils literal"><span class="pre">extras/pre_commit/</span></code>. The checks can be manually executed with</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> python .git/hooks/pre-commit
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> python .git/hooks/pre-commit
 </pre></div>
 </div>
 <p>If you ever have to skip the hook,</p>
-<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git commit --no-verify
+<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> git commit --no-verify
 </pre></div>
 </div>
 <p>does the trick. <strong>But</strong> checks are always run on the complete file containing
@@ -172,7 +174,7 @@ is invoked on unit test code, where we may go a little bit less restrictive.</p>
 everything together that belongs together&#8217;. That is, code, documentation and
 extra data should be gathered on a per-module basis immediately in the
 repository root. The directory structure of your module should look like this:</p>
-<div class="highlight-text"><div class="highlight"><pre>promod3.git/                            Project folder
+<div class="highlight-text"><div class="highlight"><pre><span></span>promod3.git/                            Project folder
       your_module/                      Module directory
             CMakeLists.txt              CMake configuration
             data/                       Extra data (if needed)
@@ -204,13 +206,13 @@ repository root. The directory structure of your module should look like this:</
 <p>Additionally to the module directories there are a few extra folders:</p>
 <ul class="simple">
 <li><code class="file docutils literal"><span class="pre">actions</span></code>: Scripts callable as <code class="docutils literal"><span class="pre">pm</span> <span class="pre">&lt;ACTION_NAME&gt;</span></code>.
-See <a class="reference internal" href="contributing.html#how-to-start-your-own-action"><span>here</span></a> for details.</li>
+See <a class="reference internal" href="contributing.html#how-to-start-your-own-action"><span class="std std-ref">here</span></a> for details.</li>
 <li><code class="file docutils literal"><span class="pre">cmake_support</span></code>: Helper functions for CMake.
-See <a class="reference internal" href="cmake/index.html#pm3-cmake-doc"><span>here</span></a> for details.</li>
+See <a class="reference internal" href="cmake/index.html#pm3-cmake-doc"><span class="std std-ref">here</span></a> for details.</li>
 <li><code class="file docutils literal"><span class="pre">doc</span></code>: High-level documentation, test scripts (<code class="file docutils literal"><span class="pre">doc/tests</span></code>) and a
 copy of the generated html documentation (<code class="file docutils literal"><span class="pre">doc/html</span></code>). The latter must
 be kept up-to-date at least on the <code class="docutils literal"><span class="pre">master</span></code> branch.
-See <a class="reference internal" href="contributing.html#writing-documentation"><span>here</span></a> for details.</li>
+See <a class="reference internal" href="contributing.html#writing-documentation"><span class="std std-ref">here</span></a> for details.</li>
 <li><code class="file docutils literal"><span class="pre">extras</span></code>: Extra data and information that doesn&#8217;t fit anywhere
 else (e.g. Git hooks or scripts to recreate the binary files).</li>
 <li><code class="file docutils literal"><span class="pre">scripts</span></code>: Input for scripts that end up in <code class="file docutils literal"><span class="pre">stage/bin</span></code></li>
@@ -225,7 +227,7 @@ Python modules are declared there as well as which files belong to the
 documentation. CMake is a rather complex topic (unfortunately all usable
 build systems seem to be) so we skip a detailed view, here, and just advice you
 to go by example. There is a tiny bit of documentation on our additions to
-CMake <a class="reference internal" href="cmake/index.html#pm3-cmake-doc"><span>here</span></a>. If you really need to make changes to the
+CMake <a class="reference internal" href="cmake/index.html#pm3-cmake-doc"><span class="std std-ref">here</span></a>. If you really need to make changes to the
 build system, other than adding new files and modules, you have to dive into
 CMake documentation all by yourself and on your own responsibility. You have
 been warned.</p>
@@ -283,9 +285,6 @@ modules from there, use the binaries from <code class="file docutils literal"><s
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -296,8 +295,8 @@ modules from there, use the binaries from <code class="file docutils literal"><s
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/dev_setup.txt"
diff --git a/doc/html/developers.html b/doc/html/developers.html
index b0e89ed94976d7191cf20e01038ccd570dec8c19..b4788adaa2c9a212f38ce7a82ff156f543384003 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.1.0 documentation</title>
+    <title>Documentation For Developers &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,15 +23,17 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 1.2.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="stylesheet" href="_static/custom.css" type="text/css" />
   
-  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -114,9 +116,6 @@ new features.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -127,8 +126,8 @@ new features.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/developers.txt"
diff --git a/doc/html/genindex.html b/doc/html/genindex.html
index a4b8a6fb84b1412936a635669decd771273df8ab..9c340199ed41ec9655e600be1df72fc7e51dbcdd 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.1.0 documentation</title>
+    <title>Index &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,13 +24,15 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 1.2.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -230,6 +232,10 @@
   </dt>
 
       
+  <dt><a href="core/graph_minimizer.html#promod3.core.GraphMinimizer.AddEdge">AddEdge() (promod3.core.GraphMinimizer method)</a>
+  </dt>
+
+      
   <dt><a href="modelling/loop_candidates.html#promod3.modelling.LoopCandidates.AddFragmentInfo">AddFragmentInfo() (promod3.modelling.LoopCandidates method)</a>
   </dt>
 
@@ -260,6 +266,10 @@
   </dt>
 
       
+  <dt><a href="core/graph_minimizer.html#promod3.core.GraphMinimizer.AddNode">AddNode() (promod3.core.GraphMinimizer method)</a>
+  </dt>
+
+      
   <dt><a href="modelling/loop_closing.html#promod3.modelling.BackboneRelaxer.AddNRestraint">AddNRestraint() (promod3.modelling.BackboneRelaxer method)</a>
   </dt>
 
@@ -329,12 +339,12 @@
   <dt><a href="modelling/pipeline.html#promod3.modelling.ModellingHandle.all_atom_sidechain_env">all_atom_sidechain_env (promod3.modelling.ModellingHandle attribute)</a>
   </dt>
 
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="loop/all_atom.html#promod3.loop.AllAtomEnvPositions.all_pos">all_pos (promod3.loop.AllAtomEnvPositions attribute)</a>
   </dt>
 
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="scoring/all_atom_scorers.html#promod3.scoring.AllAtomClashScorer">AllAtomClashScorer (class in promod3.scoring)</a>
   </dt>
@@ -430,11 +440,11 @@
   </dt>
 
       
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.ApplyDEE">ApplyDEE() (promod3.sidechain.RotamerGraph method)</a>
+  <dt><a href="core/graph_minimizer.html#promod3.core.GraphMinimizer.ApplyDEE">ApplyDEE() (promod3.core.GraphMinimizer method)</a>
   </dt>
 
       
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.ApplyEdgeDecomposition">ApplyEdgeDecomposition() (promod3.sidechain.RotamerGraph method)</a>
+  <dt><a href="core/graph_minimizer.html#promod3.core.GraphMinimizer.ApplyEdgeDecomposition">ApplyEdgeDecomposition() (promod3.core.GraphMinimizer method)</a>
   </dt>
 
       
@@ -486,7 +496,7 @@
   </dt>
 
       
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.AStarSolve">AStarSolve() (promod3.sidechain.RotamerGraph method)</a>
+  <dt><a href="core/graph_minimizer.html#promod3.core.GraphMinimizer.AStarSolve">AStarSolve() (promod3.core.GraphMinimizer method)</a>
   </dt>
 
       
@@ -682,6 +692,10 @@
   </dt>
 
       
+  <dt><a href="loop/structure_db.html#promod3.loop.CoordInfo.chain_name">chain_name (promod3.loop.CoordInfo attribute)</a>
+  </dt>
+
+      
   <dt><a href="modelling/pipeline.html#promod3.modelling.CheckFinalModel">CheckFinalModel() (in module promod3.modelling)</a>
   </dt>
 
@@ -815,7 +829,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>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructBackboneFrameResidue">[2]</a>
+  <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>
 
       
@@ -835,7 +849,7 @@
   </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>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructRRMRotamerGroup">[6]</a>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructRRMRotamerGroup">[7]</a>, <a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor.ConstructRRMRotamerGroup">[8]</a>
+  <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>
 
       
@@ -932,10 +946,6 @@
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
-  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.DensityScorer">DensityScorer (class in promod3.scoring)</a>
-  </dt>
-
-      
   <dt><a href="modelling/monte_carlo.html#promod3.modelling.DirtyCCDCloser">DirtyCCDCloser (class in promod3.modelling)</a>
   </dt>
 
@@ -955,20 +965,122 @@
   <dt><a href="core/geometry.html#promod3.core.StemPairOrientation.distance">distance (promod3.core.StemPairOrientation attribute)</a>
   </dt>
 
+      
+  <dt><a href="modelling/sidechain_reconstruction.html#promod3.modelling.SidechainReconstructionData.disulfid_bridges">disulfid_bridges (promod3.modelling.SidechainReconstructionData attribute)</a>
+  </dt>
+
+      
+  <dt><a href="sidechain/disulfid.html#promod3.sidechain.DisulfidScore">DisulfidScore() (in module promod3.sidechain)</a>
+  </dt>
+
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
-  <dt><a href="modelling/sidechain_reconstruction.html#promod3.modelling.SidechainReconstructionData.disulfid_bridges">disulfid_bridges (promod3.modelling.SidechainReconstructionData attribute)</a>
+  <dt><a href="scoring/all_atom_scorers.html#promod3.scoring.AllAtomClashScorer.DoExternalScores">DoExternalScores() (promod3.scoring.AllAtomClashScorer method)</a>
   </dt>
 
+      <dd><dl>
+        
+  <dt><a href="scoring/all_atom_scorers.html#promod3.scoring.AllAtomInteractionScorer.DoExternalScores">(promod3.scoring.AllAtomInteractionScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.CBetaScorer.DoExternalScores">(promod3.scoring.CBetaScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.ClashScorer.DoExternalScores">(promod3.scoring.ClashScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.HBondScorer.DoExternalScores">(promod3.scoring.HBondScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.PairwiseScorer.DoExternalScores">(promod3.scoring.PairwiseScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.ReducedScorer.DoExternalScores">(promod3.scoring.ReducedScorer method)</a>
+  </dt>
+
+      </dl></dd>
       
-  <dt><a href="sidechain/disulfid.html#promod3.sidechain.DisulfidRawScore">DisulfidRawScore() (in module promod3.sidechain)</a>
+  <dt><a href="scoring/all_atom_scorers.html#promod3.scoring.AllAtomClashScorer.DoInternalScores">DoInternalScores() (promod3.scoring.AllAtomClashScorer method)</a>
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="scoring/all_atom_scorers.html#promod3.scoring.AllAtomInteractionScorer.DoInternalScores">(promod3.scoring.AllAtomInteractionScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.CBetaScorer.DoInternalScores">(promod3.scoring.CBetaScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.ClashScorer.DoInternalScores">(promod3.scoring.ClashScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.HBondScorer.DoInternalScores">(promod3.scoring.HBondScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.PairwiseScorer.DoInternalScores">(promod3.scoring.PairwiseScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.ReducedScorer.DoInternalScores">(promod3.scoring.ReducedScorer method)</a>
   </dt>
 
+      </dl></dd>
       
-  <dt><a href="sidechain/disulfid.html#promod3.sidechain.DisulfidScore">DisulfidScore() (in module promod3.sidechain)</a>
+  <dt><a href="scoring/all_atom_scorers.html#promod3.scoring.AllAtomClashScorer.DoNormalize">DoNormalize() (promod3.scoring.AllAtomClashScorer method)</a>
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="scoring/all_atom_scorers.html#promod3.scoring.AllAtomInteractionScorer.DoNormalize">(promod3.scoring.AllAtomInteractionScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/all_atom_scorers.html#promod3.scoring.AllAtomPackingScorer.DoNormalize">(promod3.scoring.AllAtomPackingScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.CBPackingScorer.DoNormalize">(promod3.scoring.CBPackingScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.CBetaScorer.DoNormalize">(promod3.scoring.CBetaScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.ClashScorer.DoNormalize">(promod3.scoring.ClashScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.HBondScorer.DoNormalize">(promod3.scoring.HBondScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.PairwiseScorer.DoNormalize">(promod3.scoring.PairwiseScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.ReducedScorer.DoNormalize">(promod3.scoring.ReducedScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.SSAgreementScorer.DoNormalize">(promod3.scoring.SSAgreementScorer method)</a>
+  </dt>
+
+        
+  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.TorsionScorer.DoNormalize">(promod3.scoring.TorsionScorer method)</a>
   </dt>
 
+      </dl></dd>
       
   <dt><a href="loop/torsion_sampler.html#promod3.loop.TorsionSampler.Draw">Draw() (promod3.loop.TorsionSampler method)</a>, <a href="loop/torsion_sampler.html#promod3.loop.TorsionSampler.Draw">[1]</a>
   </dt>
@@ -1302,14 +1414,6 @@
   </dt>
 
       
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.GetActiveEdges">GetActiveEdges() (promod3.sidechain.RotamerGraph method)</a>
-  </dt>
-
-      
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.GetActiveRotamers">GetActiveRotamers() (promod3.sidechain.RotamerGraph method)</a>
-  </dt>
-
-      
   <dt><a href="sidechain/rotamer.html#promod3.sidechain.FRMRotamer.GetActiveSubrotamer">GetActiveSubrotamer() (promod3.sidechain.FRMRotamer method)</a>
   </dt>
 
@@ -1418,7 +1522,7 @@
   </dt>
 
       
-  <dt><a href="loop/structure_db.html#promod3.loop.StructureDB.GetCoordIndex">GetCoordIndex() (promod3.loop.StructureDB method)</a>
+  <dt><a href="loop/structure_db.html#promod3.loop.StructureDB.GetCoordIdx">GetCoordIdx() (promod3.loop.StructureDB method)</a>
   </dt>
 
       
@@ -1454,10 +1558,6 @@
   </dt>
 
       
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.GetEdges">GetEdges() (promod3.sidechain.RotamerGraph method)</a>
-  </dt>
-
-      
   <dt><a href="loop/all_atom.html#promod3.loop.AminoAcidLookup.GetElement">GetElement() (promod3.loop.AminoAcidLookup static method)</a>
   </dt>
 
@@ -1553,6 +1653,8 @@
   </dt>
 
       </dl></dd>
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="loop/mm_system_creation.html#promod3.loop.MmSystemCreator.GetIndexing">GetIndexing() (promod3.loop.MmSystemCreator method)</a>
   </dt>
@@ -1561,8 +1663,6 @@
   <dt><a href="loop/mm_system_creation.html#promod3.loop.ForcefieldLookup.GetInternalConnectivity">GetInternalConnectivity() (promod3.loop.ForcefieldLookup method)</a>
   </dt>
 
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="sidechain/rotamer.html#promod3.sidechain.FRMRotamer.GetInternalEnergy">GetInternalEnergy() (promod3.sidechain.FRMRotamer method)</a>
   </dt>
@@ -1632,18 +1732,6 @@
   </dt>
 
       
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.GetNumActiveEdges">GetNumActiveEdges() (promod3.sidechain.RotamerGraph method)</a>
-  </dt>
-
-      
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.GetNumActiveNodes">GetNumActiveNodes() (promod3.sidechain.RotamerGraph method)</a>
-  </dt>
-
-      
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.GetNumActiveRotamers">GetNumActiveRotamers() (promod3.sidechain.RotamerGraph method)</a>
-  </dt>
-
-      
   <dt><a href="loop/all_atom.html#promod3.loop.AllAtomPositions.GetNumAtoms">GetNumAtoms() (promod3.loop.AllAtomPositions method)</a>
   </dt>
 
@@ -1666,10 +1754,6 @@
   </dt>
 
       
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.GetNumEdges">GetNumEdges() (promod3.sidechain.RotamerGraph method)</a>
-  </dt>
-
-      
   <dt><a href="loop/structure_db.html#promod3.loop.FragDB.GetNumFragments">GetNumFragments() (promod3.loop.FragDB method)</a>
   </dt>
 
@@ -1682,10 +1766,6 @@
   </dt>
 
       
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.GetNumNodes">GetNumNodes() (promod3.sidechain.RotamerGraph method)</a>
-  </dt>
-
-      
   <dt><a href="loop/all_atom.html#promod3.loop.AllAtomPositions.GetNumResidues">GetNumResidues() (promod3.loop.AllAtomPositions method)</a>
   </dt>
 
@@ -1696,10 +1776,6 @@
 
       </dl></dd>
       
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.GetNumRotamers">GetNumRotamers() (promod3.sidechain.RotamerGraph method)</a>
-  </dt>
-
-      
   <dt><a href="loop/structure_db.html#promod3.loop.FragDB.GetNumStemPairs">GetNumStemPairs() (promod3.loop.FragDB method)</a>
   </dt>
 
@@ -1736,10 +1812,6 @@
   </dt>
 
       
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.GetPairwiseEnergies">GetPairwiseEnergies() (promod3.sidechain.RotamerGraph method)</a>
-  </dt>
-
-      
   <dt><a href="sidechain/rotamer.html#promod3.sidechain.Particle.GetParticleType">GetParticleType() (promod3.sidechain.Particle method)</a>
   </dt>
 
@@ -1820,20 +1892,16 @@
   </dt>
 
       
-  <dt><a href="loop/structure_db.html#promod3.loop.Fragger.GetScore">GetScore() (promod3.loop.Fragger method)</a>, <a href="loop/structure_db.html#promod3.loop.Fragger.GetScore">[1]</a>
+  <dt><a href="modelling/monte_carlo.html#promod3.modelling.GetScore">GetScore() (in module promod3.modelling)</a>
   </dt>
 
       <dd><dl>
         
-  <dt><a href="modelling/monte_carlo.html#promod3.modelling.LinearScorer.GetScore">(promod3.modelling.LinearScorer method)</a>
+  <dt><a href="loop/structure_db.html#promod3.loop.Fragger.GetScore">(promod3.loop.Fragger method)</a>, <a href="loop/structure_db.html#promod3.loop.Fragger.GetScore">[1]</a>
   </dt>
 
       </dl></dd>
       
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.GetSelfEnergies">GetSelfEnergies() (promod3.sidechain.RotamerGraph method)</a>
-  </dt>
-
-      
   <dt><a href="sidechain/rotamer.html#promod3.sidechain.FRMRotamer.GetSelfEnergy">GetSelfEnergy() (promod3.sidechain.FRMRotamer method)</a>
   </dt>
 
@@ -1933,6 +2001,10 @@
   <dt><a href="modelling/loop_candidates.html#promod3.modelling.ScoringWeights.GetWeights">GetWeights() (promod3.modelling.ScoringWeights static method)</a>
   </dt>
 
+      
+  <dt><a href="core/graph_minimizer.html#promod3.core.GraphMinimizer">GraphMinimizer (class in promod3.core)</a>
+  </dt>
+
   </dl></td>
 </tr></table>
 
@@ -1952,12 +2024,16 @@
   </dt>
 
       
-  <dt><a href="loop/structure_db.html#promod3.loop.FragDB.HasFragLength">HasFragLength() (promod3.loop.FragDB method)</a>
+  <dt><a href="loop/structure_db.html#promod3.loop.StructureDB.HasData">HasData() (promod3.loop.StructureDB method)</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
+  <dt><a href="loop/structure_db.html#promod3.loop.FragDB.HasFragLength">HasFragLength() (promod3.loop.FragDB method)</a>
+  </dt>
+
+      
   <dt><a href="modelling/loop_candidates.html#promod3.modelling.LoopCandidates.HasFragmentInfos">HasFragmentInfos() (promod3.modelling.LoopCandidates method)</a>
   </dt>
 
@@ -1976,6 +2052,10 @@
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
+  <dt><a href="loop/structure_db.html#promod3.loop.CoordInfo.id">id (promod3.loop.CoordInfo attribute)</a>
+  </dt>
+
+      
   <dt><a href="loop/mm_system_creation.html#promod3.loop.ForcefieldHarmonicImproperInfo.index_four">index_four (promod3.loop.ForcefieldHarmonicImproperInfo attribute)</a>
   </dt>
 
@@ -2099,12 +2179,12 @@
   <dt><a href="modelling/pipeline.html#promod3.modelling.IsAllAtomScoringSetUp">IsAllAtomScoringSetUp() (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.IsAllSet">IsAllSet() (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.IsAnySet">IsAnySet() (promod3.loop.AllAtomPositions method)</a>
   </dt>
@@ -2190,10 +2270,6 @@
   </dt>
 
       
-  <dt><a href="modelling/monte_carlo.html#promod3.modelling.LinearScorer">LinearScorer (class in promod3.modelling)</a>
-  </dt>
-
-      
   <dt><a href="loop/mm_system_creation.html#promod3.loop.ForcefieldConnectivity.lj_pairs">lj_pairs (promod3.loop.ForcefieldConnectivity attribute)</a>
   </dt>
 
@@ -2299,12 +2375,12 @@
   <dt><a href="sidechain/loading.html#promod3.sidechain.LoadDunbrackLib">LoadDunbrackLib() (in module promod3.sidechain)</a>
   </dt>
 
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="loop/load_loop_objects.html#promod3.loop.LoadFragDB">LoadFragDB() (in module promod3.loop)</a>
   </dt>
 
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="scoring/backbone_scorers.html#promod3.scoring.LoadHBondScorer">LoadHBondScorer() (in module promod3.scoring)</a>
   </dt>
@@ -2460,7 +2536,7 @@
   </dt>
 
       
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.MCSolve">MCSolve() (promod3.sidechain.RotamerGraph method)</a>
+  <dt><a href="core/graph_minimizer.html#promod3.core.GraphMinimizer.MCSolve">MCSolve() (promod3.core.GraphMinimizer method)</a>
   </dt>
 
       
@@ -2540,6 +2616,10 @@
   <dt><a href="core/geometry.html#promod3.core.StemCoords.n_coord">n_coord (promod3.core.StemCoords attribute)</a>
   </dt>
 
+      
+  <dt><a href="core/graph_minimizer.html#promod3.core.GraphMinimizer.NaiveSolve">NaiveSolve() (promod3.core.GraphMinimizer method)</a>
+  </dt>
+
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
@@ -2593,10 +2673,6 @@
   </dt>
 
       
-  <dt><a href="loop/structure_db.html#promod3.loop.CoordInfo.pdb_id">pdb_id (promod3.loop.CoordInfo attribute)</a>
-  </dt>
-
-      
   <dt><a href="loop/mm_system_creation.html#promod3.loop.ForcefieldConnectivity.periodic_dihedrals">periodic_dihedrals (promod3.loop.ForcefieldConnectivity attribute)</a>
   </dt>
 
@@ -2636,6 +2712,10 @@
   </dt>
 
       
+  <dt><a href="scoring/backbone_score_env.html#promod3.scoring.BackboneScoreEnv.Pop">Pop() (promod3.scoring.BackboneScoreEnv method)</a>
+  </dt>
+
+      
   <dt><a href="loop/structure_db.html#promod3.loop.FragDB.PrintStatistics">PrintStatistics() (promod3.loop.FragDB method)</a>
   </dt>
 
@@ -2713,7 +2793,7 @@
 
       </dl></dd>
       
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.Prune">Prune() (promod3.sidechain.RotamerGraph method)</a>
+  <dt><a href="core/graph_minimizer.html#promod3.core.GraphMinimizer.Prune">Prune() (promod3.core.GraphMinimizer method)</a>
   </dt>
 
       
@@ -2794,6 +2874,10 @@
   </dt>
 
       
+  <dt><a href="loop/structure_db.html#promod3.loop.StructureDB.RemoveCoordinates">RemoveCoordinates() (promod3.loop.StructureDB method)</a>
+  </dt>
+
+      
   <dt><a href="modelling/pipeline.html#promod3.modelling.RemoveTerminalGaps">RemoveTerminalGaps() (in module promod3.modelling)</a>
   </dt>
 
@@ -2814,12 +2898,12 @@
   </dt>
 
       
-  <dt><a href="modelling/monte_carlo.html#promod3.modelling.ExponentialCooler.Reset">Reset() (promod3.modelling.ExponentialCooler method)</a>
+  <dt><a href="core/graph_minimizer.html#promod3.core.GraphMinimizer.Reset">Reset() (promod3.core.GraphMinimizer method)</a>
   </dt>
 
       <dd><dl>
         
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.Reset">(promod3.sidechain.RotamerGraph method)</a>
+  <dt><a href="modelling/monte_carlo.html#promod3.modelling.ExponentialCooler.Reset">(promod3.modelling.ExponentialCooler method)</a>
   </dt>
 
       </dl></dd>
@@ -2835,12 +2919,12 @@
   <dt><a href="modelling/algorithms.html#promod3.modelling.RigidBlocks">RigidBlocks() (in module promod3.modelling)</a>, <a href="modelling/algorithms.html#promod3.modelling.RigidBlocks">[1]</a>, <a href="modelling/algorithms.html#promod3.modelling.RigidBlocks">[2]</a>
   </dt>
 
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="loop/backbone.html#promod3.loop.BackboneList.RMSD">RMSD() (promod3.loop.BackboneList method)</a>
   </dt>
 
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="modelling/sidechain_reconstruction.html#promod3.modelling.SidechainReconstructionData.rotamer_res_indices">rotamer_res_indices (promod3.modelling.SidechainReconstructionData attribute)</a>
   </dt>
@@ -3070,6 +3154,14 @@
   </dt>
 
       
+  <dt><a href="scoring/other_scoring_functions.html#promod3.scoring.SCWRL3DisulfidScore">SCWRL3DisulfidScore() (in module promod3.scoring)</a>
+  </dt>
+
+      
+  <dt><a href="scoring/other_scoring_functions.html#promod3.scoring.SCWRL3PairwiseScore">SCWRL3PairwiseScore() (in module promod3.scoring)</a>
+  </dt>
+
+      
   <dt><a href="sidechain/rotamer_constructor.html#promod3.sidechain.SCWRLRotamerConstructor">SCWRLRotamerConstructor (class in promod3.sidechain)</a>
   </dt>
 
@@ -3272,10 +3364,6 @@
   </dt>
 
       
-  <dt><a href="scoring/backbone_score_env.html#promod3.scoring.BackboneScoreEnv.SetMap">SetMap() (promod3.scoring.BackboneScoreEnv method)</a>
-  </dt>
-
-      
   <dt><a href="loop/mm_system_creation.html#promod3.loop.ForcefieldLookup.SetMasses">SetMasses() (promod3.loop.ForcefieldLookup method)</a>
   </dt>
 
@@ -3291,8 +3379,6 @@
   <dt><a href="loop/backbone.html#promod3.loop.BackboneList.SetO">SetO() (promod3.loop.BackboneList method)</a>
   </dt>
 
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="loop/backbone.html#promod3.loop.BackboneList.SetOLC">SetOLC() (promod3.loop.BackboneList method)</a>
   </dt>
@@ -3301,6 +3387,8 @@
   <dt><a href="loop/mm_system_creation.html#promod3.loop.ForcefieldLookup.SetPeptideBoundConnectivity">SetPeptideBoundConnectivity() (promod3.loop.ForcefieldLookup method)</a>
   </dt>
 
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="sidechain/rotamer.html#promod3.sidechain.Particle.SetPolarDirection">SetPolarDirection() (promod3.sidechain.Particle method)</a>
   </dt>
@@ -3384,6 +3472,10 @@
   </dt>
 
       
+  <dt><a href="loop/structure_db.html#promod3.loop.CoordInfo.shift">shift (promod3.loop.CoordInfo attribute)</a>
+  </dt>
+
+      
   <dt><a href="modelling/gap_handling.html#promod3.modelling.StructuralGap.ShiftCTerminal">ShiftCTerminal() (promod3.modelling.StructuralGap method)</a>
   </dt>
 
@@ -3448,10 +3540,18 @@
   </dt>
 
       
+  <dt><a href="loop/structure_db.html#promod3.loop.CoordInfo.start_resnum">start_resnum (promod3.loop.CoordInfo attribute)</a>
+  </dt>
+
+      
   <dt><a href="core/runtime_profiling.html#promod3.core.StaticRuntimeProfiler.StartScoped">StartScoped() (promod3.core.StaticRuntimeProfiler static method)</a>
   </dt>
 
       
+  <dt><a href="scoring/backbone_score_env.html#promod3.scoring.BackboneScoreEnv.Stash">Stash() (promod3.scoring.BackboneScoreEnv method)</a>
+  </dt>
+
+      
   <dt><a href="core/runtime_profiling.html#promod3.core.StaticRuntimeProfiler">StaticRuntimeProfiler (class in promod3.core)</a>
   </dt>
 
@@ -3480,6 +3580,10 @@
   </dt>
 
       
+  <dt><a href="loop/structure_db.html#promod3.loop.StructureDBDataType">StructureDBDataType (class in promod3.loop)</a>
+  </dt>
+
+      
   <dt><a href="sidechain/subrotamer_optimizer.html#promod3.sidechain.SubrotamerOptimizer">SubrotamerOptimizer() (in module promod3.sidechain)</a>
   </dt>
 
@@ -3548,7 +3652,7 @@
   </dt>
 
       
-  <dt><a href="sidechain/graph.html#promod3.sidechain.RotamerGraph.TreeSolve">TreeSolve() (promod3.sidechain.RotamerGraph method)</a>
+  <dt><a href="core/graph_minimizer.html#promod3.core.GraphMinimizer.TreeSolve">TreeSolve() (promod3.core.GraphMinimizer method)</a>
   </dt>
 
   </dl></td>
@@ -3571,18 +3675,10 @@
   </dt>
 
       </dl></dd>
-      
-  <dt><a href="loop/mm_system_creation.html#promod3.loop.ForcefieldConnectivity.urey_bradley_angles">urey_bradley_angles (promod3.loop.ForcefieldConnectivity attribute)</a>
-  </dt>
-
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
-  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.CBPackingScorer.UseClassicMode">UseClassicMode() (promod3.scoring.CBPackingScorer method)</a>
-  </dt>
-
-      
-  <dt><a href="scoring/backbone_scorers.html#promod3.scoring.CBPackingScorer.UseIncludeEnvMode">UseIncludeEnvMode() (promod3.scoring.CBPackingScorer method)</a>
+  <dt><a href="loop/mm_system_creation.html#promod3.loop.ForcefieldConnectivity.urey_bradley_angles">urey_bradley_angles (promod3.loop.ForcefieldConnectivity attribute)</a>
   </dt>
 
   </dl></td>
@@ -3612,9 +3708,6 @@
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -3625,8 +3718,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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>
 
diff --git a/doc/html/gettingstarted.html b/doc/html/gettingstarted.html
index 58aa46d167e2e9cdf9ec4730f9396b637b60f214..59d380cc535caf6eeeef9579265227872a159245 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.1.0 documentation</title>
+    <title>Getting Started &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -46,27 +48,27 @@
 <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>here</span></a>).</li>
+(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>
 <blockquote>
-<div><div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> pm &lt;COMMAND&gt;
+<div><div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> pm &lt;COMMAND&gt;
 </pre></div>
 </div>
 <p>Here <code class="docutils literal"><span class="pre">&lt;COMMAND&gt;</span></code> can be:</p>
 <ul>
-<li><p class="first">a predefined &#8220;action&#8221; (see <a class="reference internal" href="actions/index.html#promod-actions"><span>here</span></a>)</p>
+<li><p class="first">a predefined &#8220;action&#8221; (see <a class="reference internal" href="actions/index.html#promod-actions"><span class="std std-ref">here</span></a>)</p>
 </li>
 <li><p class="first">the path to a python script, such as the following example:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">io</span>
-<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">loop</span>
+<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">promod3</span> <span class="k">import</span> <span class="n">loop</span>
 
-<span class="c"># generate backbone with dihedrals of a helix and store it</span>
-<span class="n">sequence</span> <span class="o">=</span> <span class="s">&quot;HELLYEAH&quot;</span>
+<span class="c1"># generate backbone with dihedrals of a helix and store it</span>
+<span class="n">sequence</span> <span class="o">=</span> <span class="s2">&quot;HELLYEAH&quot;</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">sequence</span><span class="p">)</span>
-<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">bb_list</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="s">&quot;test.pdb&quot;</span><span class="p">)</span>
+<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">bb_list</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="s2">&quot;test.pdb&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
 <p>The execution of this script should generate a <code class="docutils literal"><span class="pre">test.pdb</span></code> file, which you
@@ -86,7 +88,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 <code class="xref py py-mod docutils literal"><span class="pre">ost.mol.mm</span></code> from OST)</li>
+(using <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/molmm/#module-ost.mol.mm" title="(in OpenStructure v1.7.1)"><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
@@ -138,9 +140,6 @@ not set, 1 thread will be used by default.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -151,8 +150,8 @@ not set, 1 thread will be used by default.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/gettingstarted.txt"
diff --git a/doc/html/index.html b/doc/html/index.html
index 99a24e3a4490f694d3d4e4ddca49fb7b85a122c8..8366b1a0370f0e05e9ef08a432a26c596cc7599a 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>Welcome To ProMod3’s Documentation! &mdash; ProMod3 1.1.0 documentation</title>
+    <title>Welcome To ProMod3’s Documentation! &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,14 +23,16 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="#" />
+    <link rel="top" title="ProMod3 1.2.0 documentation" href="#" />
     <link rel="next" title="Documentation For Users" href="users.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -73,9 +75,9 @@
 <div class="section" id="indices-and-tables">
 <h1>Indices And Tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
 <ul class="simple">
-<li><a class="reference internal" href="genindex.html"><span>Index</span></a></li>
-<li><a class="reference internal" href="py-modindex.html"><span>Module Index</span></a></li>
-<li><a class="reference internal" href="search.html"><span>Search Page</span></a></li>
+<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li>
+<li><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></li>
+<li><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></li>
 </ul>
 </div>
 
@@ -115,9 +117,6 @@
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -128,8 +127,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/index.txt"
diff --git a/doc/html/loop/all_atom.html b/doc/html/loop/all_atom.html
index 88e7357757fc1066ae4c7d8287ae90582124e50b..f55f5ccc9606e4d4f586b92a251c0db72815ab2f 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.1.0 documentation</title>
+    <title>Handling All Atom Positions &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -46,32 +48,32 @@
 positions of all their heavy atoms and an environment (<a class="reference internal" href="#promod3.loop.AllAtomEnv" title="promod3.loop.AllAtomEnv"><code class="xref py py-class docutils literal"><span class="pre">AllAtomEnv</span></code></a>) to
 handle changes during loop modelling.</p>
 <p>The example below showcases some operations on the two classes:</p>
-<div class="highlight-python"><div class="highlight"><pre><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">geom</span>
-<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">loop</span>
+<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="p">,</span> <span class="n">geom</span>
+<span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">loop</span>
 
-<span class="c"># load example (has res. numbering starting at 1)</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="s">&quot;data/1CRN.pdb&quot;</span><span class="p">)</span>
+<span class="c1"># load example (has res. numbering starting at 1)</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="s2">&quot;data/1CRN.pdb&quot;</span><span class="p">)</span>
 <span class="n">res_list</span> <span class="o">=</span> <span class="n">ent</span><span class="o">.</span><span class="n">residues</span>
-<span class="n">seqres_str</span> <span class="o">=</span> <span class="s">&#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">res_list</span><span class="p">])</span>
+<span class="n">seqres_str</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">res_list</span><span class="p">])</span>
 
-<span class="c"># initialize an environment</span>
+<span class="c1"># initialize an environment</span>
 <span class="n">env</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">AllAtomEnv</span><span class="p">(</span><span class="n">seqres_str</span><span class="p">)</span>
 <span class="n">env</span><span class="o">.</span><span class="n">SetInitialEnvironment</span><span class="p">(</span><span class="n">ent</span><span class="p">)</span>
 
-<span class="c"># get all atom position for part of it</span>
+<span class="c1"># get all atom position for part of it</span>
 <span class="n">all_atoms</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">AllAtomPositions</span><span class="p">(</span><span class="n">res_list</span><span class="p">[</span><span class="mi">35</span><span class="p">:</span><span class="mi">44</span><span class="p">])</span>
-<span class="c"># change pos. at res. index 1 (= res. number 37)</span>
-<span class="n">idx_ca_res_37</span> <span class="o">=</span> <span class="n">all_atoms</span><span class="o">.</span><span class="n">GetIndex</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s">&quot;CA&quot;</span><span class="p">)</span>
+<span class="c1"># change pos. at res. index 1 (= res. number 37)</span>
+<span class="n">idx_ca_res_37</span> <span class="o">=</span> <span class="n">all_atoms</span><span class="o">.</span><span class="n">GetIndex</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;CA&quot;</span><span class="p">)</span>
 <span class="n">new_pos</span> <span class="o">=</span> <span class="n">all_atoms</span><span class="o">.</span><span class="n">GetPos</span><span class="p">(</span><span class="n">idx_ca_res_37</span><span class="p">)</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="mf">0.2</span><span class="p">,</span> <span class="mf">0.2</span><span class="p">,</span> <span class="mf">0.2</span><span class="p">)</span>
 <span class="n">all_atoms</span><span class="o">.</span><span class="n">SetPos</span><span class="p">(</span><span class="n">idx_ca_res_37</span><span class="p">,</span> <span class="n">new_pos</span><span class="p">)</span>
-<span class="c"># insert into ent and store updated entity</span>
+<span class="c1"># insert into ent and store updated entity</span>
 <span class="n">all_atoms</span><span class="o">.</span><span class="n">InsertInto</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">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="mi">37</span><span class="p">)</span>
-<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">ent</span><span class="p">,</span> <span class="s">&quot;all_atom_pos.pdb&quot;</span><span class="p">)</span>
+<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">ent</span><span class="p">,</span> <span class="s2">&quot;all_atom_pos.pdb&quot;</span><span class="p">)</span>
 
-<span class="c"># update environment with new positions</span>
+<span class="c1"># update environment with new positions</span>
 <span class="n">env</span><span class="o">.</span><span class="n">SetEnvironment</span><span class="p">(</span><span class="n">all_atoms</span><span class="p">,</span> <span class="mi">36</span><span class="p">)</span>
-<span class="c"># store all positions of environment</span>
-<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">env</span><span class="o">.</span><span class="n">GetAllAtomPositions</span><span class="p">()</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="s">&quot;all_atom_env.pdb&quot;</span><span class="p">)</span>
+<span class="c1"># store all positions of environment</span>
+<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">env</span><span class="o">.</span><span class="n">GetAllAtomPositions</span><span class="p">()</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="s2">&quot;all_atom_env.pdb&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
 <div class="section" id="the-allatomenv-class">
@@ -88,8 +90,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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>
@@ -111,7 +113,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -141,7 +143,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.7.1)"><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>
@@ -218,7 +220,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceList</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -352,7 +354,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -398,7 +400,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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>
@@ -448,7 +450,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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>
@@ -552,7 +554,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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>
@@ -831,9 +833,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 <code class="xref py py-class docutils literal"><span class="pre">ost.conop.HeuristicProcessor</span></code>.</td>
+Connectivity resolved with <a class="reference external" href="https://www.openstructure.org/docs/dev/conop/connectivity/#ost.conop.HeuristicProcessor" title="(in OpenStructure v1.7.1)"><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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityHandle</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -853,8 +855,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ChainHandle" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ChainHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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>
@@ -947,7 +949,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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">
@@ -960,7 +962,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</td>
 </tr>
 </tbody>
 </table>
@@ -982,7 +984,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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>
@@ -1012,7 +1014,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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>
@@ -1041,7 +1043,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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>
@@ -1069,7 +1071,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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>
@@ -1093,7 +1095,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</td>
 </tr>
 </tbody>
 </table>
@@ -1125,7 +1127,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">AminoAcid</span></code></a>) &#8211; Amino acid type</td>
 </tr>
 </tbody>
 </table>
@@ -1158,7 +1160,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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">
@@ -1252,7 +1254,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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>
@@ -1276,7 +1278,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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>
@@ -1333,9 +1335,6 @@ when residue is N terminal.</td>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -1346,8 +1345,8 @@ when residue is N terminal.</td>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/loop/all_atom.txt"
diff --git a/doc/html/loop/backbone.html b/doc/html/loop/backbone.html
index 6bad77d4feef8e70af8d8177c659f86e348f5206..66ce38d5af9496f7bbe2f19aba706759a7b4b519 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.1.0 documentation</title>
+    <title>Representing Loops &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -44,27 +46,27 @@
 <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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityHandle</span></code></a>.</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">io</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">promod3</span> <span class="kn">import</span> <span class="n">loop</span>
+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.7.1)"><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>
 
-<span class="n">sequence</span> <span class="o">=</span> <span class="s">&quot;AAAAAAAA&quot;</span>
+<span class="n">sequence</span> <span class="o">=</span> <span class="s2">&quot;AAAAAAAA&quot;</span>
 
-<span class="c"># the backbone gets initially constructed with backbone dihedrals</span>
-<span class="c"># typical for helices</span>
+<span class="c1"># the backbone gets initially constructed with backbone dihedrals</span>
+<span class="c1"># typical for helices</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">sequence</span><span class="p">)</span>
 
-<span class="c"># let&#39;s have a look at the set dihedral angles</span>
+<span class="c1"># let&#39;s have a look at the set dihedral angles</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_list</span><span class="p">)):</span>
-    <span class="k">print</span> <span class="s">&quot;Looking at position </span><span class="si">%d</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">i</span>
+    <span class="nb">print</span> <span class="s2">&quot;Looking at position </span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">i</span>
     <span class="k">if</span> <span class="n">i</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-        <span class="k">print</span> <span class="s">&quot;phi: </span><span class="si">%.4f</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">bb_list</span><span class="o">.</span><span class="n">GetPhiTorsion</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+        <span class="nb">print</span> <span class="s2">&quot;phi: </span><span class="si">%.4f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">bb_list</span><span class="o">.</span><span class="n">GetPhiTorsion</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
     <span class="k">if</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">bb_list</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span>
-        <span class="k">print</span> <span class="s">&quot;psi: </span><span class="si">%.4f</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">bb_list</span><span class="o">.</span><span class="n">GetPsiTorsion</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+        <span class="nb">print</span> <span class="s2">&quot;psi: </span><span class="si">%.4f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">bb_list</span><span class="o">.</span><span class="n">GetPsiTorsion</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
 
 
-<span class="c"># we now use a TorsionSampler to set random dihedral angles</span>
+<span class="c1"># we now use a TorsionSampler to set random dihedral angles</span>
 <span class="n">torsion_sampler</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">LoadTorsionSampler</span><span class="p">()</span>
 <span class="n">idx</span> <span class="o">=</span> <span class="n">torsion_sampler</span><span class="o">.</span><span class="n">GetHistogramIndex</span><span class="p">(</span><span class="n">conop</span><span class="o">.</span><span class="n">ALA</span><span class="p">,</span> 
                                         <span class="n">conop</span><span class="o">.</span><span class="n">ALA</span><span class="p">,</span> 
@@ -76,8 +78,8 @@ converted from, to, or inserted to a <a class="reference external" href="http://
     <span class="k">if</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">bb_list</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span>
         <span class="n">bb_list</span><span class="o">.</span><span class="n">SetPsiTorsion</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">dihedrals</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
 
-<span class="c"># let&#39;s save down the randomized fragment</span>
-<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">bb_list</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="s">&quot;randomized_fragment.pdb&quot;</span><span class="p">)</span>
+<span class="c1"># let&#39;s save down the randomized fragment</span>
+<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">bb_list</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="s2">&quot;randomized_fragment.pdb&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
 <div class="section" id="the-backbonelist-class">
@@ -158,7 +160,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -182,7 +184,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="http://www.openstructure.org/docs/dev/img/base/img/#ost.img.ImageHandle" title="(in OpenStructure v1.6.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/dev/img/base/img/#ost.img.ImageHandle" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ost.img.ImageHandle</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -192,7 +194,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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>
@@ -211,7 +213,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityHandle</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -228,8 +230,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ChainHandle" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ChainHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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>
@@ -245,7 +247,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="http://www.openstructure.org/docs/dev/img/base/img/#ost.img.ImageHandle" title="(in OpenStructure v1.6.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/dev/img/base/img/#ost.img.ImageHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -264,7 +266,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="http://www.openstructure.org/docs/dev/geom/composite/#ost.geom.AlignedCuboid" title="(in OpenStructure v1.6.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/dev/geom/composite/#ost.geom.AlignedCuboid" title="(in OpenStructure v1.7.1)"><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>
@@ -367,7 +369,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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>
@@ -392,7 +394,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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>
@@ -444,7 +446,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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>
@@ -461,7 +463,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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>
@@ -487,12 +489,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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.7.1)"><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.7.1)"><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.7.1)"><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.7.1)"><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>
@@ -562,12 +564,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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.7.1)"><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.7.1)"><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.7.1)"><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.7.1)"><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>
@@ -631,7 +633,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -648,7 +650,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="http://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.6.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/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a>) &#8211; The transformation</li>
 </ul>
 </td>
 </tr>
@@ -668,7 +670,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="http://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.6.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/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a>) &#8211; The transformation</li>
 </ul>
 </td>
 </tr>
@@ -684,7 +686,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="http://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.6.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/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Mat4</span></code></a>) &#8211; The transformation</td>
 </tr>
 </tbody>
 </table>
@@ -704,12 +706,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="http://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.6.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/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.7.1)"><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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -729,7 +731,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="http://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.6.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/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.7.1)"><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>
@@ -994,9 +996,6 @@ backbone list.</td>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -1007,8 +1006,8 @@ backbone list.</td>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/loop/backbone.txt"
diff --git a/doc/html/loop/index.html b/doc/html/loop/index.html
index 26fc9a364cac64b1de012f48f2c7f886312da19b..a5305baf5a718d55881b2c2c0a09a37b90b63495 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.1.0 documentation</title>
+    <title>loop - Loop Handling &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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="All Atom Scorers" href="../scoring/all_atom_scorers.html" />
+    <link rel="prev" title="Other Scoring Functions" href="../scoring/other_scoring_functions.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -44,14 +46,14 @@
 <p>Tools and algorithms for loop handling. This module provides ways for
 representation of peptides and to obtain fragments to potentially use as
 loops. The following example should give you an idea of what can be done:</p>
-<div class="highlight-python"><div class="highlight"><pre><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</span> <span class="kn">import</span> <span class="n">loop</span>
+<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="p">,</span> <span class="n">seq</span>
+<span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">loop</span>
 
-<span class="c"># load an example structure</span>
-<span class="n">prot</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="s">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
+<span class="c1"># load an example structure</span>
+<span class="n">prot</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="s1">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
 
-<span class="c"># extract some additional information</span>
-<span class="n">seqres</span> <span class="o">=</span> <span class="s">&#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">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">])</span>
+<span class="c1"># extract some additional information</span>
+<span class="n">seqres</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">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">])</span>
 <span class="n">frag_pos</span> <span class="o">=</span> <span class="mi">35</span>
 <span class="n">frag_length</span> <span class="o">=</span> <span class="mi">9</span>
 <span class="n">frag_seq</span> <span class="o">=</span> <span class="n">seqres</span><span class="p">[</span><span class="n">frag_pos</span><span class="p">:</span><span class="n">frag_pos</span><span class="o">+</span><span class="n">frag_length</span><span class="p">]</span>
@@ -60,29 +62,29 @@ loops. The following example should give you an idea of what can be done:</p>
 <span class="n">n_stem</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">frag_pos</span><span class="p">]</span>
 <span class="n">c_stem</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">frag_pos</span><span class="o">+</span><span class="n">frag_length</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
 
-<span class="c"># extract potential loops from fragment database based on geometry</span>
+<span class="c1"># extract potential loops from fragment database based on geometry</span>
 <span class="n">frag_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">fragments</span> <span class="o">=</span> <span class="n">frag_db</span><span class="o">.</span><span class="n">SearchDB</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">frag_length</span><span class="p">)</span>
-<span class="k">print</span> <span class="s">&quot;Num. fragments found in FragDB: </span><span class="si">%d</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">fragments</span><span class="p">)</span>
-<span class="c"># compare with reference</span>
+<span class="nb">print</span> <span class="s2">&quot;Num. fragments found in FragDB: </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">fragments</span><span class="p">)</span>
+<span class="c1"># compare with reference</span>
 <span class="n">struct_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">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">fragments</span><span class="p">)):</span>
-    <span class="c"># get structure from structural database</span>
+    <span class="c1"># get structure from structural database</span>
     <span class="n">bb_list</span> <span class="o">=</span> <span class="n">struct_db</span><span class="o">.</span><span class="n">GetBackboneList</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">fragments</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">frag_seq</span><span class="p">)</span>
-    <span class="n">ca_rmsd</span> <span class="o">=</span> <span class="n">bb_list</span><span class="o">.</span><span class="n">CARMSD</span><span class="p">(</span><span class="n">ref_backbone</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
-    <span class="k">print</span> <span class="s">&quot;-&gt; fragment </span><span class="si">%d</span><span class="s"> has CA RMSD of </span><span class="si">%.3f</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">ca_rmsd</span><span class="p">)</span>
+    <span class="n">ca_rmsd</span> <span class="o">=</span> <span class="n">bb_list</span><span class="o">.</span><span class="n">CARMSD</span><span class="p">(</span><span class="n">ref_backbone</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+    <span class="nb">print</span> <span class="s2">&quot;-&gt; fragment </span><span class="si">%d</span><span class="s2"> has CA RMSD of </span><span class="si">%.3f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">ca_rmsd</span><span class="p">)</span>
 
-<span class="c"># extract potential loops from fragment database based on sequence</span>
+<span class="c1"># extract potential loops from fragment database based on sequence</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">frag_seq</span><span class="p">)</span>
-<span class="c"># for simplicity we just use a sequence similarity score</span>
+<span class="c1"># for simplicity we just use a sequence similarity score</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">seq</span><span class="o">.</span><span class="n">alg</span><span class="o">.</span><span class="n">BLOSUM62</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">struct_db</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
-<span class="k">print</span> <span class="s">&quot;Num. fragments found in Fragger: </span><span class="si">%d</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">fragger</span><span class="p">)</span>
-<span class="c"># compare fraggers with reference</span>
+<span class="nb">print</span> <span class="s2">&quot;Num. fragments found in Fragger: </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">fragger</span><span class="p">)</span>
+<span class="c1"># compare fraggers with reference</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">ca_rmsd</span> <span class="o">=</span> <span class="n">fragger</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">CARMSD</span><span class="p">(</span><span class="n">ref_backbone</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
-    <span class="k">print</span> <span class="s">&quot;-&gt; fragment </span><span class="si">%d</span><span class="s"> has CA RMSD of </span><span class="si">%.3f</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">ca_rmsd</span><span class="p">)</span>
+    <span class="n">ca_rmsd</span> <span class="o">=</span> <span class="n">fragger</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">CARMSD</span><span class="p">(</span><span class="n">ref_backbone</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+    <span class="nb">print</span> <span class="s2">&quot;-&gt; fragment </span><span class="si">%d</span><span class="s2"> has CA RMSD of </span><span class="si">%.3f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">ca_rmsd</span><span class="p">)</span>
 </pre></div>
 </div>
 <p>Contents:</p>
@@ -132,7 +134,7 @@ loops. The following example should give you an idea of what can be done:</p>
 <ul>
   <li><a href="../index.html">Documentation overview</a><ul>
   <li><a href="../users.html">Documentation For Users</a><ul>
-      <li>Previous: <a href="../scoring/all_atom_scorers.html" title="previous chapter">All Atom Scorers</a></li>
+      <li>Previous: <a href="../scoring/other_scoring_functions.html" title="previous chapter">Other Scoring Functions</a></li>
       <li>Next: <a href="backbone.html" title="next chapter">Representing Loops</a></li>
   </ul></li>
   </ul></li>
@@ -153,9 +155,6 @@ loops. The following example should give you an idea of what can be done:</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -166,8 +165,8 @@ loops. The following example should give you an idea of what can be done:</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/loop/index.txt"
diff --git a/doc/html/loop/load_loop_objects.html b/doc/html/loop/load_loop_objects.html
index 56f91dea84cc704904c77f5eb31e1cdb7f96a875..f4448c847bc47421cb1cea2cac00a984da67ef97 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.1.0 documentation</title>
+    <title>Loading Precomputed Objects &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -201,9 +203,6 @@ Proteins, 62(4):892–908, Mar 2006.</dd>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -214,8 +213,8 @@ Proteins, 62(4):892–908, Mar 2006.</dd>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/loop/load_loop_objects.txt"
diff --git a/doc/html/loop/mm_system_creation.html b/doc/html/loop/mm_system_creation.html
index 0c214fb25876f02900cc6f80891671864c4882a5..7a13b5a81bab534b6c2f5ab1556b940c28955f58 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.1.0 documentation</title>
+    <title>Generate ost.mol.mm systems &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -40,49 +42,49 @@
           <div class="body" role="main">
             
   <div class="section" id="generate-ost-mol-mm-systems">
-<h1>Generate <code class="xref py py-mod docutils literal"><span class="pre">ost.mol.mm</span></code> systems<a class="headerlink" href="#generate-ost-mol-mm-systems" title="Permalink to this headline">¶</a></h1>
-<p>To simplify the creation of <code class="xref py py-mod docutils literal"><span class="pre">ost.mol.mm</span></code> / OpenMM simulations for loops in
+<h1>Generate <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/molmm/#module-ost.mol.mm" title="(in OpenStructure v1.7.1)"><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.7.1)"><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>
-<div class="highlight-python"><div class="highlight"><pre><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">geom</span>
-<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">loop</span>
+<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="p">,</span> <span class="n">geom</span>
+<span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">loop</span>
 
-<span class="c"># setup system creator</span>
+<span class="c1"># setup system creator</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="n">mm_sys</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">MmSystemCreator</span><span class="p">(</span><span class="n">ff_lookup</span><span class="p">)</span>
 
-<span class="c"># load example (has res. numbering starting at 1)</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="s">&quot;data/1CRN.pdb&quot;</span><span class="p">)</span>
+<span class="c1"># load example (has res. numbering starting at 1)</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="s2">&quot;data/1CRN.pdb&quot;</span><span class="p">)</span>
 <span class="n">res_list</span> <span class="o">=</span> <span class="n">ent</span><span class="o">.</span><span class="n">residues</span>
 <span class="n">num_residues</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="c"># get all atom positions for full protein</span>
+<span class="c1"># get all atom positions for full protein</span>
 <span class="n">all_atoms</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">AllAtomPositions</span><span class="p">(</span><span class="n">res_list</span><span class="p">)</span>
-<span class="c"># here full structure in res_indices but in practice this could</span>
-<span class="c"># be just a subset of residues relevant to the loop of interest</span>
+<span class="c1"># here full structure in res_indices but in practice this could</span>
+<span class="c1"># be just a subset of residues relevant to the loop of interest</span>
 <span class="n">res_indices</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_residues</span><span class="p">)</span>
-<span class="c"># define two loops (indices into res_indices list)</span>
+<span class="c1"># define two loops (indices into res_indices list)</span>
 <span class="n">loop_start_indices</span> <span class="o">=</span> <span class="p">[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">20</span><span class="p">]</span>
 <span class="n">loop_lengths</span> <span class="o">=</span> <span class="p">[</span><span class="mi">6</span><span class="p">,</span> <span class="mi">4</span><span class="p">]</span>
-<span class="c"># define which of the res_indices is terminal</span>
-<span class="n">is_n_ter</span> <span class="o">=</span> <span class="p">[</span><span class="bp">True</span><span class="p">]</span> <span class="o">+</span> <span class="p">[</span><span class="bp">False</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="n">num_residues</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
-<span class="n">is_c_ter</span> <span class="o">=</span> <span class="p">[</span><span class="bp">False</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="n">num_residues</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="p">[</span><span class="bp">True</span><span class="p">]</span>
-<span class="c"># get disulfid bridges</span>
+<span class="c1"># define which of the res_indices is terminal</span>
+<span class="n">is_n_ter</span> <span class="o">=</span> <span class="p">[</span><span class="kc">True</span><span class="p">]</span> <span class="o">+</span> <span class="p">[</span><span class="kc">False</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="n">num_residues</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
+<span class="n">is_c_ter</span> <span class="o">=</span> <span class="p">[</span><span class="kc">False</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="n">num_residues</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="p">[</span><span class="kc">True</span><span class="p">]</span>
+<span class="c1"># get disulfid bridges</span>
 <span class="n">disulfid_bridges</span> <span class="o">=</span> <span class="n">mm_sys</span><span class="o">.</span><span class="n">GetDisulfidBridges</span><span class="p">(</span><span class="n">all_atoms</span><span class="p">,</span> <span class="n">res_indices</span><span class="p">)</span>
-<span class="c"># setup MM system</span>
+<span class="c1"># setup MM system</span>
 <span class="n">mm_sys</span><span class="o">.</span><span class="n">SetupSystem</span><span class="p">(</span><span class="n">all_atoms</span><span class="p">,</span> <span class="n">res_indices</span><span class="p">,</span> <span class="n">loop_start_indices</span><span class="p">,</span>
                    <span class="n">loop_lengths</span><span class="p">,</span> <span class="n">is_n_ter</span><span class="p">,</span> <span class="n">is_c_ter</span><span class="p">,</span> <span class="n">disulfid_bridges</span><span class="p">)</span>
 
-<span class="c"># run simulation</span>
+<span class="c1"># run simulation</span>
 <span class="n">sim</span> <span class="o">=</span> <span class="n">mm_sys</span><span class="o">.</span><span class="n">GetSimulation</span><span class="p">()</span>
-<span class="k">print</span> <span class="s">&quot;Potential energy before: </span><span class="si">%g</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">sim</span><span class="o">.</span><span class="n">GetPotentialEnergy</span><span class="p">()</span>
+<span class="nb">print</span> <span class="s2">&quot;Potential energy before: </span><span class="si">%g</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">sim</span><span class="o">.</span><span class="n">GetPotentialEnergy</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="mf">0.01</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
-<span class="k">print</span> <span class="s">&quot;Potential energy after: </span><span class="si">%g</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">sim</span><span class="o">.</span><span class="n">GetPotentialEnergy</span><span class="p">()</span>
+<span class="nb">print</span> <span class="s2">&quot;Potential energy after: </span><span class="si">%g</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">sim</span><span class="o">.</span><span class="n">GetPotentialEnergy</span><span class="p">()</span>
 
-<span class="c"># extract new loop positions and store it</span>
+<span class="c1"># extract new loop positions and store it</span>
 <span class="n">mm_sys</span><span class="o">.</span><span class="n">ExtractLoopPositions</span><span class="p">(</span><span class="n">all_atoms</span><span class="p">,</span> <span class="n">res_indices</span><span class="p">)</span>
-<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">all_atoms</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="s">&quot;mm_sys_output.pdb&quot;</span><span class="p">)</span>
+<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">all_atoms</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="s2">&quot;mm_sys_output.pdb&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
 <div class="admonition note">
@@ -286,7 +288,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="http://www.openstructure.org/docs/dev/mol/mm/simulation/#ost.mol.mm.Simulation" title="(in OpenStructure v1.6.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/dev/mol/mm/simulation/#ost.mol.mm.Simulation" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.mm.Simulation</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -433,7 +435,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="http://www.openstructure.org/docs/dev/mol/mm/simulation/#ost.mol.mm.Simulation" title="(in OpenStructure v1.6.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/dev/mol/mm/simulation/#ost.mol.mm.Simulation" title="(in OpenStructure v1.7.1)"><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
@@ -511,7 +513,7 @@ less machine-dependent).</p>
 <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><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></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 file cannot be opened or if
-file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a> for details).</td>
+file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a> for details).</td>
 </tr>
 </tbody>
 </table>
@@ -523,7 +525,7 @@ file cannot be parsed (see <a class="reference internal" href="../portableIO.htm
 <dt id="promod3.loop.ForcefieldLookup.SavePortable">
 <code class="descname">SavePortable</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.ForcefieldLookup.SavePortable" title="Permalink to this definition">¶</a></dt>
 <dd><p>Saves a raw / portable binary representation. Use portable files for
-distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a>
+distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a>
 for details.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -546,7 +548,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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>
@@ -662,7 +664,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="http://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.SetFudgeLJ" title="(in OpenStructure v1.6.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/dev/mol/mm/topology/#ost.mol.mm.Topology.SetFudgeLJ" title="(in OpenStructure v1.7.1)"><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>
@@ -678,7 +680,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="http://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.SetFudgeQQ" title="(in OpenStructure v1.6.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/dev/mol/mm/topology/#ost.mol.mm.Topology.SetFudgeQQ" title="(in OpenStructure v1.7.1)"><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>
@@ -693,7 +695,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="http://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.SetMasses" title="(in OpenStructure v1.6.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/dev/mol/mm/topology/#ost.mol.mm.Topology.SetMasses" title="(in OpenStructure v1.7.1)"><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>
@@ -717,7 +719,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="http://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.SetCharges" title="(in OpenStructure v1.6.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/dev/mol/mm/topology/#ost.mol.mm.Topology.SetCharges" title="(in OpenStructure v1.7.1)"><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>
@@ -742,7 +744,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="http://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.SetSigmas" title="(in OpenStructure v1.6.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/dev/mol/mm/topology/#ost.mol.mm.Topology.SetSigmas" title="(in OpenStructure v1.7.1)"><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>
@@ -767,7 +769,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="http://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.SetEpsilons" title="(in OpenStructure v1.6.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/dev/mol/mm/topology/#ost.mol.mm.Topology.SetEpsilons" title="(in OpenStructure v1.7.1)"><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>
@@ -913,7 +915,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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>
@@ -930,7 +932,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="http://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology" title="(in OpenStructure v1.6.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/dev/mol/mm/topology/#ost.mol.mm.Topology" title="(in OpenStructure v1.7.1)"><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
@@ -1040,7 +1042,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="http://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.AddHarmonicBond" title="(in OpenStructure v1.6.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/dev/mol/mm/topology/#ost.mol.mm.Topology.AddHarmonicBond" title="(in OpenStructure v1.7.1)"><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>
@@ -1102,7 +1104,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="http://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.AddHarmonicAngle" title="(in OpenStructure v1.6.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/dev/mol/mm/topology/#ost.mol.mm.Topology.AddHarmonicAngle" title="(in OpenStructure v1.7.1)"><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>
@@ -1179,7 +1181,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="http://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.AddUreyBradleyAngle" title="(in OpenStructure v1.6.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/dev/mol/mm/topology/#ost.mol.mm.Topology.AddUreyBradleyAngle" title="(in OpenStructure v1.7.1)"><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>
@@ -1284,8 +1286,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="http://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.AddPeriodicDihedral" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.AddPeriodicImproper" title="(in OpenStructure v1.6.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/dev/mol/mm/topology/#ost.mol.mm.Topology.AddPeriodicDihedral" title="(in OpenStructure v1.7.1)"><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.7.1)"><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>
@@ -1389,7 +1391,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="http://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.AddHarmonicImproper" title="(in OpenStructure v1.6.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/dev/mol/mm/topology/#ost.mol.mm.Topology.AddHarmonicImproper" title="(in OpenStructure v1.7.1)"><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>
@@ -1479,7 +1481,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="http://www.openstructure.org/docs/dev/mol/mm/topology/#ost.mol.mm.Topology.AddLJPair" title="(in OpenStructure v1.6.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/dev/mol/mm/topology/#ost.mol.mm.Topology.AddLJPair" title="(in OpenStructure v1.7.1)"><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>
@@ -1583,9 +1585,6 @@ False, False)</em>.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -1596,8 +1595,8 @@ False, False)</em>.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/loop/mm_system_creation.txt"
diff --git a/doc/html/loop/structure_db.html b/doc/html/loop/structure_db.html
index 3cd58befeece6c7b0a2c8e9667378dd6f46fb7ba..c565062c92806ae5eab083fd3b8b93f87ff8c94b 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.1.0 documentation</title>
+    <title>Structural Data &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -41,57 +43,89 @@
             
   <div class="section" id="structural-data">
 <h1>Structural Data<a class="headerlink" href="#structural-data" title="Permalink to this headline">¶</a></h1>
-<p>The structural database serves as a container for structural backbone
-and profile data. It can be filled with chains of pdb structures with their
-corresponding profiles as they are produced by the HHSuite tools <a class="reference internal" href="#soding2005" id="id1">[soding2005]</a>.
-Structural and profile data get complemented by with additional information.
-Following features get stored on a per residue basis:</p>
-<ul class="simple">
-<li>The amino acid one letter code</li>
-<li>The coordinates of the backbone atoms (N,CA,C,O)</li>
+<p>The structural database serves as a container for structural backbone and
+sequence data. Custom accessor objects can be implemented that relate
+arbitrary features to structural data. Examples provided by ProMod3 include
+accession using matching stem geometry (see: <a class="reference internal" href="#promod3.loop.FragDB" title="promod3.loop.FragDB"><code class="xref py py-class docutils literal"><span class="pre">FragDB</span></code></a>) or sequence
+features (see: <a class="reference internal" href="#promod3.loop.Fragger" title="promod3.loop.Fragger"><code class="xref py py-class docutils literal"><span class="pre">Fragger</span></code></a>).
+Besides backbone and sequence data, derived features can
+optionally be stored. E.g. sequence profiles or secondary structure information.
+Optional data includes:</p>
+<blockquote>
+<div><ul class="simple">
 <li>The phi/psi dihedral angles</li>
 <li>The secondary structure state as defined by dssp</li>
 <li>The solvent accessibility in square Angstrom</li>
-<li>The residue depth defined as the average distance from all atoms of a
-residue to the closest surface vertex as calculated by msms <a class="reference internal" href="#sanner1996" id="id2">[sanner1996]</a>.
-This is a simplified version of the residue depth as discussed in
-<a class="reference internal" href="#chakravarty1999" id="id3">[chakravarty1999]</a> and gets directly calculated when structural information
-gets added to the StructureDB.</li>
 <li>The amino acid frequencies as given by an input sequence profile</li>
+<li>The residue depth - The residue depth is defined as the minimum distance of
+a residue towards any of the exposed residues.
+Distances are calculated using CB positions (artificially constructed in case
+of glycine) and exposed is defined as:
+relative solvent accessibility &gt; 25% and at least one atom being exposed
+to the OUTER surface. To determine whether an atom is part of that outer
+surface, the full structure is placed into a 3D grid and a flood fill
+algorithm is used to determine the atoms of interest.
+Internal cavities are excluded by using this approach. This is a simplified
+version of the residue depth as discussed in <a class="reference internal" href="#chakravarty1999" id="id1">[chakravarty1999]</a> and gets
+directly calculated when structural information is added to the StructureDB.</li>
 <li>The amino acid frequency derived from structural alignments as described
-in <a class="reference internal" href="#zhou2005" id="id4">[zhou2005]</a> - Since the calculation of such a profile already requires a
+in <a class="reference internal" href="#zhou2005" id="id2">[zhou2005]</a> - Since the calculation of such a profile already requires a
 StructureDB, we end up in a hen and egg problem here... When adding
 structural information to the StructureDB, the according memory gets
 just allocated and set to zero. The usage of this information
 is therefore only meaningful if you calculate these profiles
 and manually set them (or load the provided default database).</li>
 </ul>
+</div></blockquote>
 <div class="section" id="defining-chains-and-fragments">
 <h2>Defining Chains and Fragments<a class="headerlink" href="#defining-chains-and-fragments" title="Permalink to this headline">¶</a></h2>
 <dl class="class">
 <dt id="promod3.loop.CoordInfo">
 <em class="property">class </em><code class="descclassname">promod3.loop.</code><code class="descname">CoordInfo</code><a class="headerlink" href="#promod3.loop.CoordInfo" title="Permalink to this definition">¶</a></dt>
 <dd><p>The CoordInfo gets automatically generated when new chains are added to
-the structural database. It contains internal information of how
-the according chain is stored in the database.</p>
+the structural database. It contains internal information of how a
+connected stretch of residues is stored in the database.</p>
+<dl class="attribute">
+<dt id="promod3.loop.CoordInfo.id">
+<code class="descname">id</code><a class="headerlink" href="#promod3.loop.CoordInfo.id" title="Permalink to this definition">¶</a></dt>
+<dd><p>An id string specified when adding the corresponding stretch to the
+structure db</p>
+</dd></dl>
+
 <dl class="attribute">
-<dt id="promod3.loop.CoordInfo.pdb_id">
-<code class="descname">pdb_id</code><a class="headerlink" href="#promod3.loop.CoordInfo.pdb_id" title="Permalink to this definition">¶</a></dt>
-<dd><p>A character residue string containing the 4 character pdb_id and the
-1 character chain_id. (<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>)</p>
+<dt id="promod3.loop.CoordInfo.chain_name">
+<code class="descname">chain_name</code><a class="headerlink" href="#promod3.loop.CoordInfo.chain_name" title="Permalink to this definition">¶</a></dt>
+<dd><p>A chain name string specified when adding the corresponding stretch to the
+structure db</p>
 </dd></dl>
 
 <dl class="attribute">
 <dt id="promod3.loop.CoordInfo.offset">
 <code class="descname">offset</code><a class="headerlink" href="#promod3.loop.CoordInfo.offset" title="Permalink to this definition">¶</a></dt>
-<dd><p>All residues of the added structures are stored in a linear memory layout.
-The offset parameter tells us where it exactly starts. (<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>)</p>
+<dd><p>All residues of the added stretch are stored in a linear memory layout.
+The offset parameter tells us where it exactly starts in the global data
+structure. (<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>)</p>
 </dd></dl>
 
 <dl class="attribute">
 <dt id="promod3.loop.CoordInfo.size">
 <code class="descname">size</code><a class="headerlink" href="#promod3.loop.CoordInfo.size" title="Permalink to this definition">¶</a></dt>
-<dd><p>The length of the stretch of residues. (<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>)</p>
+<dd><p>The number of residues in that stretch (<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>)</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="promod3.loop.CoordInfo.start_resnum">
+<code class="descname">start_resnum</code><a class="headerlink" href="#promod3.loop.CoordInfo.start_resnum" title="Permalink to this definition">¶</a></dt>
+<dd><p>Residue number of first residue in the added stretch. The residue number
+is relative to the SEQRES provided in the input profile when adding the
+stuff to the structure db.</p>
+</dd></dl>
+
+<dl class="attribute">
+<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.</p>
 </dd></dl>
 
 </dd></dl>
@@ -99,7 +133,8 @@ The offset parameter tells us where it exactly starts. (<a class="reference exte
 <dl class="class">
 <dt id="promod3.loop.FragmentInfo">
 <em class="property">class </em><code class="descclassname">promod3.loop.</code><code class="descname">FragmentInfo</code><span class="sig-paren">(</span><em>chain_index</em>, <em>offset</em>, <em>length</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.FragmentInfo" title="Permalink to this definition">¶</a></dt>
-<dd><p>The FragmentInfo defines a fragment in the structural database.</p>
+<dd><p>The FragmentInfo defines any fragment in the structural database. If you
+implement your own accessor object, thats the information you want to store.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -116,13 +151,14 @@ The offset parameter tells us where it exactly starts. (<a class="reference exte
 <dl class="attribute">
 <dt id="promod3.loop.FragmentInfo.chain_index">
 <code class="descname">chain_index</code><a class="headerlink" href="#promod3.loop.FragmentInfo.chain_index" title="Permalink to this definition">¶</a></dt>
-<dd><p>The index of the chain (defined by <a class="reference internal" href="#promod3.loop.CoordInfo" title="promod3.loop.CoordInfo"><code class="xref py py-class docutils literal"><span class="pre">CoordInfo</span></code></a>) in the structure db this particle belongs to. (<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>)</p>
+<dd><p>The index of the chain (defined by <a class="reference internal" href="#promod3.loop.CoordInfo" title="promod3.loop.CoordInfo"><code class="xref py py-class docutils literal"><span class="pre">CoordInfo</span></code></a>) in the structure db
+this particle belongs to. (<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>)</p>
 </dd></dl>
 
 <dl class="attribute">
 <dt id="promod3.loop.FragmentInfo.offset">
 <code class="descname">offset</code><a class="headerlink" href="#promod3.loop.FragmentInfo.offset" title="Permalink to this definition">¶</a></dt>
-<dd><p>Index of residue in <strong>chain</strong> the fragment starts. (<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>)</p>
+<dd><p>Index of residue in <strong>chain</strong> the fragment starts. (0-based, <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>)</p>
 </dd></dl>
 
 <dl class="attribute">
@@ -138,97 +174,141 @@ The offset parameter tells us where it exactly starts. (<a class="reference exte
 <h2>The Structure Database<a class="headerlink" href="#the-structure-database" title="Permalink to this headline">¶</a></h2>
 <p>The following code example demonstrates how to create a structural database
 and fill it with content.</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">loop</span>
-<span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">io</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">loop</span>
+<span class="kn">from</span> <span class="nn">ost</span> <span class="k">import</span> <span class="n">io</span><span class="p">,</span> <span class="n">seq</span>
 <span class="kn">import</span> <span class="nn">os</span>
 
-<span class="c"># we also need the external tools dssp and msms, you have to make</span>
-<span class="c"># sure that they are somewhere in your PATH</span>
-<span class="kn">from</span> <span class="nn">ost.bindings</span> <span class="kn">import</span> <span class="n">dssp</span>
-<span class="kn">from</span> <span class="nn">ost.bindings</span> <span class="kn">import</span> <span class="n">msms</span>
-
-<span class="n">structure_db</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">StructureDB</span><span class="p">()</span>
+<span class="c1"># StructureDB where all data get extracted</span>
+<span class="n">structure_db_one</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">StructureDB</span><span class="p">(</span><span class="n">loop</span><span class="o">.</span><span class="n">StructureDBDataType</span><span class="o">.</span><span class="n">All</span><span class="p">)</span>
 
-<span class="c"># lets fill in some structures. It gets assumed, that all required</span>
-<span class="c"># data lies in the following directories</span>
-<span class="n">structure_dir</span> <span class="o">=</span> <span class="s">&quot;data&quot;</span>
-<span class="n">prof_dir</span> <span class="o">=</span> <span class="s">&quot;data&quot;</span>
+<span class="c1"># StructureDB where we only have the default data </span>
+<span class="c1"># (positions and sequence) plus residue depths and dihedrals.</span>
+<span class="c1"># In order to pass the required flags, we use a bitwise or.</span>
+<span class="n">structure_db_two</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">StructureDB</span><span class="p">(</span>
+                   <span class="n">loop</span><span class="o">.</span><span class="n">StructureDBDataType</span><span class="o">.</span><span class="n">ResidueDepths</span> <span class="o">|</span>
+                   <span class="n">loop</span><span class="o">.</span><span class="n">StructureDBDataType</span><span class="o">.</span><span class="n">Dihedrals</span><span class="p">)</span>
 
-<span class="c"># the first 4 letters are suposed to be the pdb id, and the last one</span>
-<span class="c"># the corresponding chain name. The naming of the files in the</span>
-<span class="c"># directories is e.g. 1CRN.pdb for the structure and 1CRNA.hhm for</span>
-<span class="c"># the profile. Please note, that the structure can contain several</span>
-<span class="c"># chains, whereas the hhm file is only for that specific chain.</span>
-<span class="n">ids</span> <span class="o">=</span> <span class="p">[</span><span class="s">&quot;1CRNA&quot;</span><span class="p">,</span> <span class="s">&quot;1AKIA&quot;</span><span class="p">]</span>
+<span class="c1"># Lets fill in some structures. It gets assumed, that all required</span>
+<span class="c1"># data lies in the following directories.</span>
+<span class="n">structure_dir</span> <span class="o">=</span> <span class="s2">&quot;data&quot;</span>
+<span class="n">prof_dir</span> <span class="o">=</span> <span class="s2">&quot;data&quot;</span>
 
-<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">ids</span><span class="p">:</span>
+<span class="c1"># The naming of the files in the directories is e.g. 1CRN.pdb for </span>
+<span class="c1"># the structure and 1CRNA.hhm for the profile. Please note, </span>
+<span class="c1"># that the structure can contain several chains, whereas the hhm </span>
+<span class="c1"># file is only for that specific chain.</span>
+<span class="n">structure_ids</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;1CRN&quot;</span><span class="p">,</span> <span class="s2">&quot;1AKI&quot;</span><span class="p">]</span>
+<span class="n">chain_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;A&quot;</span><span class="p">,</span> <span class="s2">&quot;A&quot;</span><span class="p">]</span>
 
-    <span class="n">pdb_id</span> <span class="o">=</span> <span class="n">i</span><span class="p">[:</span><span class="mi">4</span><span class="p">]</span>
-    <span class="n">chain_id</span> <span class="o">=</span> <span class="n">i</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span>
+<span class="k">for</span> <span class="n">s_id</span><span class="p">,</span> <span class="n">ch_name</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">structure_ids</span><span class="p">,</span> <span class="n">chain_names</span><span class="p">):</span>
 
-    <span class="c"># join together the data paths</span>
-    <span class="n">structure_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">join</span><span class="p">(</span><span class="n">structure_dir</span><span class="p">,</span> <span class="n">pdb_id</span> <span class="o">+</span> <span class="s">&quot;.pdb&quot;</span><span class="p">)</span>
-    <span class="n">prof_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">join</span><span class="p">(</span><span class="n">prof_dir</span><span class="p">,</span> <span class="n">pdb_id</span> <span class="o">+</span> <span class="n">chain_id</span> <span class="o">+</span> <span class="s">&quot;.hhm&quot;</span><span class="p">)</span>
+    <span class="c1"># Join together the data paths.</span>
+    <span class="n">structure_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">join</span><span class="p">(</span><span class="n">structure_dir</span><span class="p">,</span> <span class="n">s_id</span> <span class="o">+</span> <span class="s2">&quot;.pdb&quot;</span><span class="p">)</span>
+    <span class="n">prof_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">join</span><span class="p">(</span><span class="n">prof_dir</span><span class="p">,</span> <span class="n">s_id</span> <span class="o">+</span> <span class="n">ch_name</span> <span class="o">+</span> <span class="s2">&quot;.hhm&quot;</span><span class="p">)</span>
 
-    <span class="c"># let&#39;s load the structure</span>
-    <span class="n">structure</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">structure_path</span><span class="p">)</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s">&quot;peptide=True&quot;</span><span class="p">)</span>
-    <span class="n">single_chain_structure</span> <span class="o">=</span> <span class="n">structure</span><span class="o">.</span><span class="n">Select</span><span class="p">(</span><span class="s">&quot;cname=&quot;</span> <span class="o">+</span> <span class="n">chain_id</span><span class="p">)</span>
+    <span class="c1"># Let&#39;s load the structure.</span>
+    <span class="n">structure</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">structure_path</span><span class="p">)</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="c"># and the according profile in hhm format</span>
+    <span class="c1"># And the according profile in hhm format.</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">prof_path</span><span class="p">)</span>
 
-    <span class="c"># we run dssp in a way, that the secondary structure, as well as</span>
-    <span class="c"># the solvent accessibily gets assigned</span>
-    <span class="n">dssp</span><span class="o">.</span><span class="n">AssignDSSP</span><span class="p">(</span><span class="n">structure</span><span class="p">,</span> <span class="n">extract_burial_status</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
-
-    <span class="c"># as a final step we need the surface as calculated by msms</span>
-    <span class="n">surf</span> <span class="o">=</span> <span class="n">msms</span><span class="o">.</span><span class="n">CalculateSurface</span><span class="p">(</span><span class="n">structure</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
-
-    <span class="c"># let&#39;s add it! Please note, that we calculated solvent </span>
-    <span class="c"># accessiblity / secondary structure and surface on the full</span>
-    <span class="c"># structure but only add one of the chains.</span>
-    <span class="n">structure_db</span><span class="o">.</span><span class="n">AddCoordinates</span><span class="p">(</span><span class="n">pdb_id</span><span class="p">,</span> <span class="n">chain_id</span><span class="p">,</span>
-                                <span class="n">single_chain_structure</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="n">surf</span><span class="p">,</span> <span class="n">prof</span><span class="p">)</span>
-
-<span class="c"># we now have two structures in the database...</span>
-
-<span class="c"># Please note, that there is no profile derived from structures</span>
-<span class="c"># assigned yet. To demonstrate, we use our small db to derive</span>
-<span class="c"># profiles.</span>
-<span class="n">src_db</span> <span class="o">=</span> <span class="n">structure_db</span>
-<span class="c"># In practice you might want to use the default StructureDB instead:</span>
-<span class="c"># src_db = loop.LoadStructureDB()</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">structure_db</span><span class="o">.</span><span class="n">GetNumCoords</span><span class="p">()):</span>
-    <span class="c"># get the CoordInfo for chain with index i </span>
-    <span class="n">coord_info</span> <span class="o">=</span> <span class="n">structure_db</span><span class="o">.</span><span class="n">GetCoordInfo</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
-    <span class="c"># define a fragment, that covers the full length</span>
+    <span class="c1"># For simplicity we use as SEQRES the sequence from the profile.</span>
+    <span class="c1"># In this case the numbering of the structures already matches.</span>
+    <span class="n">seqres</span> <span class="o">=</span> <span class="n">seq</span><span class="o">.</span><span class="n">CreateSequence</span><span class="p">(</span><span class="n">ch_name</span><span class="p">,</span> <span class="n">prof</span><span class="o">.</span><span class="n">sequence</span><span class="p">)</span>
+
+    <span class="c1"># Add the stuff to the first StructureDB</span>
+    <span class="n">structure_db_one</span><span class="o">.</span><span class="n">AddCoordinates</span><span class="p">(</span><span class="n">s_id</span><span class="p">,</span> <span class="n">ch_name</span><span class="p">,</span> <span class="n">structure</span><span class="p">,</span> 
+                                    <span class="n">seqres</span><span class="p">,</span> <span class="n">prof</span><span class="p">)</span>
+
+    <span class="c1"># Add the stuff to the second StructureDB, </span>
+    <span class="c1"># No profile required here...</span>
+    <span class="n">structure_db_two</span><span class="o">.</span><span class="n">AddCoordinates</span><span class="p">(</span><span class="n">s_id</span><span class="p">,</span> <span class="n">ch_name</span><span class="p">,</span> <span class="n">structure</span><span class="p">,</span> 
+                                    <span class="n">seqres</span><span class="p">)</span>
+
+                                
+<span class="c1"># We now have two structures in both databases...</span>
+
+<span class="c1"># Please note, that there is no profile derived from structures</span>
+<span class="c1"># assigned yet to structure_db_one, the memory is only allocated</span>
+<span class="c1"># and set to zero. In structure_db_two, there&#39;ll never be stored a </span>
+<span class="c1"># structure profile as we did not initialize it accordingly. </span>
+<span class="c1"># However, we can still use its coordinates and residue depths to</span>
+<span class="c1"># generate profiles!  </span>
+<span class="c1"># To demonstrate, we use our structure_db_two to derive profiles </span>
+<span class="c1"># and set them in structure_db_one.</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">structure_db_one</span><span class="o">.</span><span class="n">GetNumCoords</span><span class="p">()):</span>
+
+    <span class="c1"># get the CoordInfo for chain with index i </span>
+    <span class="n">coord_info</span> <span class="o">=</span> <span class="n">structure_db_one</span><span class="o">.</span><span class="n">GetCoordInfo</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+
+    <span class="c1"># define a fragment, that covers the full length</span>
     <span class="n">frag_info</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">FragmentInfo</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">coord_info</span><span class="o">.</span><span class="n">size</span><span class="p">)</span>
-    <span class="c"># generate a profile based on the structural data in the src_db</span>
-    <span class="n">prof</span> <span class="o">=</span> <span class="n">src_db</span><span class="o">.</span><span class="n">GenerateStructureProfile</span><span class="p">(</span><span class="n">structure_db</span><span class="p">,</span> <span class="n">frag_info</span><span class="p">)</span>
-    <span class="c"># and add it to the previously created structure_db</span>
-    <span class="n">structure_db</span><span class="o">.</span><span class="n">SetStructureProfile</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">prof</span><span class="p">)</span>
 
-<span class="c"># That&#39;s it! Let&#39;s save it down...</span>
-<span class="n">structure_db</span><span class="o">.</span><span class="n">Save</span><span class="p">(</span><span class="s">&quot;my_db.dat&quot;</span><span class="p">)</span>
+    <span class="c1"># extract all required information</span>
+    <span class="n">sequence</span> <span class="o">=</span> <span class="n">structure_db_one</span><span class="o">.</span><span class="n">GetSequence</span><span class="p">(</span><span class="n">frag_info</span><span class="p">)</span>
+    <span class="n">bb_list</span> <span class="o">=</span> <span class="n">structure_db_one</span><span class="o">.</span><span class="n">GetBackboneList</span><span class="p">(</span><span class="n">frag_info</span><span class="p">,</span> <span class="n">sequence</span><span class="p">)</span>
+    <span class="n">res_depths</span> <span class="o">=</span> <span class="n">structure_db_one</span><span class="o">.</span><span class="n">GetResidueDepths</span><span class="p">(</span><span class="n">frag_info</span><span class="p">)</span>
+
+    <span class="c1"># generate structure profiles based on structure_db_two</span>
+    <span class="n">prof</span> <span class="o">=</span> <span class="n">structure_db_two</span><span class="o">.</span><span class="n">GenerateStructureProfile</span><span class="p">(</span><span class="n">bb_list</span><span class="p">,</span> 
+                                                     <span class="n">res_depths</span><span class="p">)</span>
+    <span class="c1"># and add it to the previously created structure_db</span>
+    <span class="n">structure_db_one</span><span class="o">.</span><span class="n">SetStructureProfile</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">prof</span><span class="p">)</span>
+
+<span class="c1"># That&#39;s it! Let&#39;s save both databases down.</span>
+<span class="c1"># structure_db_two will use much less memory, as it contains less data. </span>
+<span class="c1"># Sidenote: We&#39;re saving the portable version. If you intent to use </span>
+<span class="c1"># your database only on one system, the Save / Load functions should</span>
+<span class="c1"># be preferred, as the loading will be much faster.</span>
+<span class="n">structure_db_one</span><span class="o">.</span><span class="n">SavePortable</span><span class="p">(</span><span class="s2">&quot;my_db_one.dat&quot;</span><span class="p">)</span>
+<span class="n">structure_db_two</span><span class="o">.</span><span class="n">SavePortable</span><span class="p">(</span><span class="s2">&quot;my_db_two.dat&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
-<p>Calculating the structural profiles is highly expensive and heavily depends on
+<p>Calculating the structural profiles is expensive and heavily depends on
 the size of the database used as source. If you want to do this for a larger
 database, you might want to consider two things:</p>
 <ol class="arabic simple">
-<li>Use a database of limited size as structural source (something
+<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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileDB" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.ProfileDB" title="(in OpenStructure v1.7.1)"><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">
+<dt id="promod3.loop.StructureDBDataType">
+<em class="property">class </em><code class="descclassname">promod3.loop.</code><code class="descname">StructureDBDataType</code><a class="headerlink" href="#promod3.loop.StructureDBDataType" title="Permalink to this definition">¶</a></dt>
+<dd><p>The StructureDBDataType enum has to be passed at initialization of a
+StructureDB in order to define what data you want to store additionally
+to backbone coordinates and sequence.
+If you want to store all data possible, use All. If you only want a subset,
+you can combine some of the datatypes with a bitwise or operation
+(see example script for StructureDB). One important note:
+If you enable AAFrequenciesStruct, the actual information is not automatically
+assigned. Only the according memory is allocated and set to zero, the actual
+information must be assigned manually (see example script again...).</p>
+<p>All, Dihedrals, SolventAccessibilities, ResidueDepths, DSSP, AAFrequencies,
+AAFrequenciesStruct</p>
+</dd></dl>
+
 <dl class="class">
 <dt id="promod3.loop.StructureDB">
-<em class="property">class </em><code class="descclassname">promod3.loop.</code><code class="descname">StructureDB</code><a class="headerlink" href="#promod3.loop.StructureDB" title="Permalink to this definition">¶</a></dt>
-<dd><dl class="staticmethod">
+<em class="property">class </em><code class="descclassname">promod3.loop.</code><code class="descname">StructureDB</code><span class="sig-paren">(</span><em>data_to_store</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB" title="Permalink to this definition">¶</a></dt>
+<dd><p>Generates an empty StructureDB that can be filled with content through
+<a class="reference internal" href="#promod3.loop.StructureDB.AddCoordinates" title="promod3.loop.StructureDB.AddCoordinates"><code class="xref py py-func docutils literal"><span class="pre">AddCoordinates()</span></code></a>. The information extracted there is defined by
+<em>data_to_store</em>. Have a look at the <a class="reference internal" href="#promod3.loop.StructureDBDataType" title="promod3.loop.StructureDBDataType"><code class="xref py py-class docutils literal"><span class="pre">StructureDBDataType</span></code></a>
+documentation and at the example script...</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>data_to_store</strong> (<a class="reference internal" href="#promod3.loop.StructureDBDataType" title="promod3.loop.StructureDBDataType"><code class="xref py py-class docutils literal"><span class="pre">StructureDBDataType</span></code></a>) &#8211; Specifies what data to store in the database, several
+flags can be combined with a bitwise or operator.</td>
+</tr>
+</tbody>
+</table>
+<dl class="staticmethod">
 <dt id="promod3.loop.StructureDB.Load">
-<em class="property">static </em><code class="descname">Load</code><span class="sig-paren">(</span><em>filename</em>, <em>load_frequencies=True</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.Load" title="Permalink to this definition">¶</a></dt>
+<em class="property">static </em><code class="descname">Load</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.Load" title="Permalink to this definition">¶</a></dt>
 <dt id="promod3.loop.StructureDB.LoadPortable">
 <em class="property">static </em><code class="descname">LoadPortable</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.LoadPortable" title="Permalink to this definition">¶</a></dt>
 <dd><p>Loads raw binary file generated with <a class="reference internal" href="#promod3.loop.StructureDB.Save" title="promod3.loop.StructureDB.Save"><code class="xref py py-meth docutils literal"><span class="pre">Save()</span></code></a> (optimized for fast
@@ -238,26 +318,14 @@ less machine-dependent).</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"><ul class="first simple">
-<li><strong>filename</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; Path to the file from which to load the database.</li>
-<li><strong>load_frequencies</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, the full database including profile
-information for every position gets loaded.
-A database without profiles loads faster and
-requires less memory. But it&#8217;s not possible
-to add new coordinates or call one of the
-profile dependent functions.</li>
-</ul>
-</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</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; Path to the file from which to load the database.</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">The loaded data base</p>
-</td>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">The loaded data base</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="#promod3.loop.StructureDB" title="promod3.loop.StructureDB"><code class="xref py py-class docutils literal"><span class="pre">StructureDB</span></code></a></p>
-</td>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#promod3.loop.StructureDB" title="promod3.loop.StructureDB"><code class="xref py py-class docutils literal"><span class="pre">StructureDB</span></code></a></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 file cannot be opened or if
-file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a> for details).</p>
-</td>
+<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 file cannot be opened or if
+file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a> for details).</td>
 </tr>
 </tbody>
 </table>
@@ -269,7 +337,7 @@ file cannot be parsed (see <a class="reference internal" href="../portableIO.htm
 <dt id="promod3.loop.StructureDB.SavePortable">
 <code class="descname">SavePortable</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.SavePortable" title="Permalink to this definition">¶</a></dt>
 <dd><p>Saves a raw / portable binary representation. Use portable files for
-distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a>
+distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a>
 for details.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -277,9 +345,25 @@ for details.</p>
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</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; Path to the file where the database will be saved</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 file cannot be opened or if
-db has been loaded with load_frequencies=False (enforces only
-complete databases to be saved down)</td>
+<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 file cannot be opened</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.loop.StructureDB.HasData">
+<code class="descname">HasData</code><span class="sig-paren">(</span><em>data_type</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.HasData" title="Permalink to this definition">¶</a></dt>
+<dd><p>Checks, whether requested data type is available in the current database.</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>data_type</strong> (<a class="reference internal" href="#promod3.loop.StructureDBDataType" title="promod3.loop.StructureDBDataType"><code class="xref py py-class docutils literal"><span class="pre">StructureDBDataType</span></code></a>) &#8211; Data type to check</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">Whether the requested datatype is available</td>
+</tr>
+<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#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>
@@ -287,47 +371,62 @@ complete databases to be saved down)</td>
 
 <dl class="method">
 <dt id="promod3.loop.StructureDB.AddCoordinates">
-<code class="descname">AddCoordinates</code><span class="sig-paren">(</span><em>pdb_id</em>, <em>chain_name</em>, <em>chain</em>, <em>surf</em>, <em>prof</em>, <em>solvent_accessibility_string=&quot;solvent_accessibility&quot;</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.AddCoordinates" title="Permalink to this definition">¶</a></dt>
-<dd><p>This method takes a structural chain and searches the longest stretch of
-connected residues containing all necessary backbone atoms. This stretch
-gets then added to the database. Due to technical reasons, The maximal
-extent along one of the base axis cannot exceed 650 A.
-Following features are expected to be set on a per residue level in <em>chain</em>:
-The secondary structure (e.g. call <code class="xref py py-meth docutils literal"><span class="pre">ost.mol.alg.AssignSecStruct()</span></code> on the
-full <a class="reference external" href="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityView</span></code></a> the <em>chain</em> belongs to) and
-the solvent accessibility assigned using a float property with name
-<em>solvent_accessibility_string</em> as name on a per residue level (e.g. call
-<code class="xref py py-meth docutils literal"><span class="pre">ost.mol.alg.Accessibility()</span></code> on the full <a class="reference external" href="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityView</span></code></a>
-the chain belongs to and take care to pass the appropriate
-<em>solvent_accessibility_string</em>).</p>
+<code class="descname">AddCoordinates</code><span class="sig-paren">(</span><em>id</em>, <em>chain_name</em>, <em>ent</em>, <em>seqres</em>, <em>prof=None</em>, <em>only_longest_stretch=True</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.AddCoordinates" title="Permalink to this definition">¶</a></dt>
+<dd><p>This method takes an entity and adds coordinates and the sequence
+of one of its chains to the structural database. Additionally, all
+data as specified at the initialization of the database is extracted
+fully automatically by considering the full <em>ent</em> (e.g. when
+calculating solvent accessibilities etc.).
+The only exception is AAFrequencies, where a valid sequence profile
+is expected in <em>prof</em> that has matching sequence with <em>seqres</em>
+All residues in chain with name <em>chain_name</em> must have residue numbers
+that directly relate them to the <em>seqres</em> with an indexing scheme
+starting from one.
+If this is not the case, an error gets thrown. You might want to
+consider to use <code class="xref py py-meth docutils literal"><span class="pre">ost.seq.Renumber()</span></code> for proper numbering.
+Based on consecutive numbering and additionally checking for valid
+peptide bonds, connected stretches are identified
+and every added connected stretch gets its own entry with
+<a class="reference internal" href="#promod3.loop.CoordInfo" title="promod3.loop.CoordInfo"><code class="xref py py-class docutils literal"><span class="pre">CoordInfo</span></code></a> as a descriptor.
+To avoid cluttering the database with many small fragments, the flag:
+<em>only_longest_stretch</em> can be used. Set it to False if all
+connected stretches of chain with name <em>chain_name</em> should be added.
+There is one final catch you have to consider: Due to the internal
+lossy data compression for the positions, the extent in x, y and
+z - direction for every connected stretch is limited to 655A. This should
+be sufficient for most structures, but stretches exceeding this maximum
+are discarded. For storing the structural data given these restraints,
+a translation is applied that gets stored as the <em>shift</em> attribute
+in the according <a class="reference internal" href="#promod3.loop.CoordInfo" title="promod3.loop.CoordInfo"><code class="xref py py-class docutils literal"><span class="pre">CoordInfo</span></code></a> object.</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>pdb_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; 4-letter code of the structure the chain belongs to</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 consisting of one letter</li>
-<li><strong>chain</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ChainView" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ChainView</span></code></a>) &#8211; The actual chain</li>
-<li><strong>surf</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/mol/base/surface/#ost.mol.SurfaceHandle" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.SurfaceHandle</span></code></a>) &#8211; A surface describing the solvent accessible surface
-(we advise you to provide a surface estimated with the
-full <a class="reference external" href="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.EntityView</span></code></a> the <em>chain</em> belongs to)</li>
-<li><strong>prof</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a>) &#8211; Profile information for this <em>chain</em>.</li>
-<li><strong>solvent_accessibility_string</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 float property where the
-solvent accessibilities are stored
-on a per residue basis in <em>chain</em></li>
+<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.7.1)"><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.7.1)"><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.7.1)"><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
+stretches of residues</li>
 </ul>
 </td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">DB index of added chain.</p>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">indices of added stretches in db</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://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></p>
+<tr class="field-odd 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 <cite>int</cite></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 size of chain is too large,
-when db has been loaded with load_frequencies=False or when the
-ATOMSEQ form the <em>chain</em> can&#8217;t be aligned with the SEQRES from
-the <em>prof</em>.</p>
+<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 the residues in chain with
+name <em>chain_name</em> do not match <em>seqres</em> given the
+residue numbers, when AAFrequencies have to to be extracted and
+the sequence in <em>prof</em> does not match the <em>seqres</em> or <em>prof</em> is
+invalid.</p>
 </td>
 </tr>
 </tbody>
@@ -335,22 +434,43 @@ the <em>prof</em>.</p>
 </dd></dl>
 
 <dl class="method">
-<dt id="promod3.loop.StructureDB.GetCoordIndex">
-<code class="descname">GetCoordIndex</code><span class="sig-paren">(</span><em>pdb_id</em>, <em>chain_name</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.GetCoordIndex" title="Permalink to this definition">¶</a></dt>
+<dt id="promod3.loop.StructureDB.RemoveCoordinates">
+<code class="descname">RemoveCoordinates</code><span class="sig-paren">(</span><em>coord_idx</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.RemoveCoordinates" title="Permalink to this definition">¶</a></dt>
+<dd><p>Removes coordinates at specified location and all its associated data. This
+has an impact on the offset values of all <a class="reference internal" href="#promod3.loop.CoordInfo" title="promod3.loop.CoordInfo"><code class="xref py py-class docutils literal"><span class="pre">CoordInfo</span></code></a> objects
+that are internally stored afterwards and on the actual coord indices
+(all shifted by one). So make sure that you adapt your data access
+accordingly!</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>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; Specifies coordinates to be removed</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>coord_idx</em> is invalid</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.loop.StructureDB.GetCoordIdx">
+<code class="descname">GetCoordIdx</code><span class="sig-paren">(</span><em>id</em>, <em>chain_name</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.GetCoordIdx" 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"><p class="first">The StructureDB index (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]) of the
-chain of interest, -1 if it cannot be found.</p>
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">The StructureDB indices (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]) of
+of all coords (connected stretches) with matching
+<em>id</em> / <em>chain_name</em>.</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://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></p>
+<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#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</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>pdb_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; 4-letter code of the structure the chain belongs to</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 consisting of one letter</li>
+<li><strong>id</strong> &#8211; Identifier given when calling <a class="reference internal" href="#promod3.loop.StructureDB.AddCoordinates" title="promod3.loop.StructureDB.AddCoordinates"><code class="xref py py-meth docutils literal"><span class="pre">AddCoordinates()</span></code></a></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 chain given when calling <a class="reference internal" href="#promod3.loop.StructureDB.AddCoordinates" title="promod3.loop.StructureDB.AddCoordinates"><code class="xref py py-meth docutils literal"><span class="pre">AddCoordinates()</span></code></a></li>
 </ul>
 </td>
 </tr>
@@ -365,7 +485,8 @@ chain of interest, -1 if it cannot be found.</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">Object describing the chain with index <em>idx</em>.</td>
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Object describing the stretch of connected residues with
+index <em>idx</em>.</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#promod3.loop.CoordInfo" title="promod3.loop.CoordInfo"><code class="xref py py-class docutils literal"><span class="pre">CoordInfo</span></code></a></td>
 </tr>
@@ -375,6 +496,28 @@ chain of interest, -1 if it cannot be found.</p>
 </table>
 </dd></dl>
 
+<dl class="method">
+<dt id="promod3.loop.StructureDB.GetNumCoords">
+<code class="descname">GetNumCoords</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.GetNumCoords" 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">Number of connected stretches of residues that have been added to
+the database.</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>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.loop.StructureDB.PrintStatistics">
+<code class="descname">PrintStatistics</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.PrintStatistics" title="Permalink to this definition">¶</a></dt>
+<dd><p>Prints out some information about the db.</p>
+</dd></dl>
+
 <dl class="method">
 <dt id="promod3.loop.StructureDB.GetBackboneList">
 <code class="descname">GetBackboneList</code><span class="sig-paren">(</span><em>fragment</em>, <em>sequence</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.GetBackboneList" title="Permalink to this definition">¶</a></dt>
@@ -393,44 +536,23 @@ chain of interest, -1 if it cannot be found.</p>
 <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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
 </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 fragment is invalid (happens
-if the fragment does not fully fit into one of the chains in the
-database) or if <em>sequence</em> contains a one letter code which is not
-one of the 20 default amino acids.</p>
+if the fragment does not fully fit into one of the connected
+stretches in the database) or if <em>sequence</em> contains a one letter
+code which is not one of the 20 default amino acids.</p>
 </td>
 </tr>
 </tbody>
 </table>
 </dd></dl>
 
-<dl class="method">
-<dt id="promod3.loop.StructureDB.GetNumCoords">
-<code class="descname">GetNumCoords</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.GetNumCoords" 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">Number of chains that have been added to the database.</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>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.loop.StructureDB.PrintStatistics">
-<code class="descname">PrintStatistics</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.PrintStatistics" title="Permalink to this definition">¶</a></dt>
-<dd><p>Prints out some information about the db.</p>
-</dd></dl>
-
 <dl class="method">
 <dt id="promod3.loop.StructureDB.GetSequence">
 <code class="descname">GetSequence</code><span class="sig-paren">(</span><em>fragment</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.GetSequence" title="Permalink to this definition">¶</a></dt>
@@ -446,7 +568,7 @@ one of the 20 default amino acids.</p>
 </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 fragment is invalid. This is
 the case when the fragment does not fully fit into one of the
-chains in the database.</td>
+connected stretches of residues in the database.</td>
 </tr>
 </tbody>
 </table>
@@ -465,9 +587,10 @@ chains in the database.</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 states.</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 fragment is invalid. This is
+<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 database does not contain dssp
+data or if fragment is invalid. This is
 the case when the fragment does not fully fit into one of the
-chains in the database.</td>
+connected stretches of residues in the database.</td>
 </tr>
 </tbody>
 </table>
@@ -486,9 +609,10 @@ chains in the database.</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 dihedrals.</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 fragment is invalid. This is
+<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 database does not contain
+dihedral angle data or if fragment is invalid. This is
 the case when the fragment does not fully fit into one of the
-chains in the database.</td>
+connected stretches of residues in the database.</td>
 </tr>
 </tbody>
 </table>
@@ -508,9 +632,10 @@ chains in the database.</td>
 <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 residue
 depths</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 fragment is invalid. This is
+<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 database does not contain
+residue depth data or if fragment is invalid. This is
 the case when the fragment does not fully fit into one of the
-chains in the database.</td>
+connected stretches of residues in the database.</td>
 </tr>
 </tbody>
 </table>
@@ -531,9 +656,10 @@ as calculated by dssp.</td>
 <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 solvent
 accessibilities</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 fragment is invalid. This is
+<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 database does not contain
+solvent accessibility data or if fragment is invalid. This is
 the case when the fragment does not fully fit into one of the
-chains in the database.</td>
+connected stretches of residues in the database.</td>
 </tr>
 </tbody>
 </table>
@@ -549,14 +675,15 @@ chains 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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.7.1)"><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>
 </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 fragment is invalid. This is
+<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 database does not cotain
+aa frequency data or if fragment is invalid. This is
 the case when the fragment does not fully fit into one of the
-chains in the database.</td>
+connected stretches of residues in the database.</td>
 </tr>
 </tbody>
 </table>
@@ -572,14 +699,15 @@ chains 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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.7.1)"><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>
 </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 fragment is invalid. This is
+<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 database does not contain
+aa frequencies struct data or if fragment is invalid. This is
 the case when the fragment does not fully fit into one of the
-chains in the database.</td>
+connected stretches of residues in the database.</td>
 </tr>
 </tbody>
 </table>
@@ -587,18 +715,18 @@ chains in the database.</td>
 
 <dl class="method">
 <dt id="promod3.loop.StructureDB.GenerateStructureProfile">
-<code class="descname">GenerateStructureProfile</code><span class="sig-paren">(</span><em>other_db</em>, <em>fragment</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.GenerateStructureProfile" title="Permalink to this definition">¶</a></dt>
-<dd><p>Takes the CA positions and residue depths for <em>fragment</em> defined from
-<em>other_db</em> to calculate a structure profile using the full internal
-structural data of this database with their corresponding residue depths.</p>
+<code class="descname">GenerateStructureProfile</code><span class="sig-paren">(</span><em>bb_list</em>, <em>residue_depths</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.GenerateStructureProfile" title="Permalink to this definition">¶</a></dt>
+<dd><p>Calculates a structure profile for <em>bb_list</em> with given <em>residue_depths</em>
+using the full internal data of this StructureDB.</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>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 <em>other_db</em>.</li>
-<li><strong>other_db</strong> (<a class="reference internal" href="#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 from which we extract CA positions and
-residue depths for <em>fragment</em>.</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; Positions for which to calculate the structural profile</li>
+<li><strong>residue_depths</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; The residue depth for each residue in <em>bb_list</em>
+as you would extract it from any StructureDB
+containing that data.</li>
 </ul>
 </td>
 </tr>
@@ -606,11 +734,12 @@ residue depths for <em>fragment</em>.</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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.7.1)"><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
-<em>residue_depths</em> differ in size or when their size is 0</p>
+<em>residue_depths</em> differ in size, when their size is 0
+or when database does not contain aa frequencies struct data.</p>
 </td>
 </tr>
 </tbody>
@@ -619,23 +748,24 @@ probabilities as NULL model.</p>
 
 <dl class="method">
 <dt id="promod3.loop.StructureDB.SetStructureProfile">
-<code class="descname">SetStructureProfile</code><span class="sig-paren">(</span><em>chain_idx</em>, <em>prof</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.SetStructureProfile" title="Permalink to this definition">¶</a></dt>
+<code class="descname">SetStructureProfile</code><span class="sig-paren">(</span><em>coord_idx</em>, <em>prof</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.StructureDB.SetStructureProfile" title="Permalink to this definition">¶</a></dt>
 <dd><p>Takes the <em>prof</em> and sets the corresponding StructureProfile
-frequencies in entry with <em>chain_idx</em></p>
+frequencies in entry with <em>coord_idx</em></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>prof</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.6.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>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; StructureDB index of entry for which to set frequencies
+<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.7.1)"><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>
 </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>chain_idx</em> does not match
-any entry in the db or when the size of the <em>prof</em> does not
-exactly match the size of entry at <em>chain_idx</em></p>
+<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>coord_idx</em> does not match
+any entry in the db, when the size of the <em>prof</em> does not
+exactly match the size of entry at <em>coord_idx</em> or when database
+does not contain aa frequency struct data.</p>
 </td>
 </tr>
 </tbody>
@@ -677,40 +807,40 @@ between the N-stem C atom and the C-stem N atom). It can therefore be searched
 for fragments matching a certain geometry of N and C stems. The bins are
 accessed through a hash table, making searching the database ultra fast.</p>
 <p>This example illustrates how to create a custom FragDB based on a StructureDB:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">io</span>
-<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">loop</span>
+<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">promod3</span> <span class="k">import</span> <span class="n">loop</span>
 
-<span class="c"># let&#39;s load the default structure_db </span>
-<span class="n">structure_db</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">StructureDB</span><span class="o">.</span><span class="n">LoadPortable</span><span class="p">(</span><span class="s">&quot;data/port_str_db.dat&quot;</span><span class="p">)</span>
-<span class="c"># in practice you might want to use the default StructureDB instead:</span>
-<span class="c"># structure_db = loop.LoadStructureDB()</span>
+<span class="c1"># let&#39;s load the default structure_db </span>
+<span class="n">structure_db</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">StructureDB</span><span class="o">.</span><span class="n">LoadPortable</span><span class="p">(</span><span class="s2">&quot;data/port_str_db.dat&quot;</span><span class="p">)</span>
+<span class="c1"># in practice you might want to use the default StructureDB instead:</span>
+<span class="c1"># structure_db = loop.LoadStructureDB()</span>
 
-<span class="c"># and our beloved crambin...</span>
-<span class="n">structure</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="s">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
+<span class="c1"># and our beloved crambin...</span>
+<span class="n">structure</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="s1">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
 
-<span class="c"># we now want to connect the residue with index 17 and 21</span>
+<span class="c1"># we now want to connect the residue with index 17 and 21</span>
 <span class="n">sub_res_list</span> <span class="o">=</span> <span class="n">structure</span><span class="o">.</span><span class="n">residues</span><span class="p">[</span><span class="mi">17</span><span class="p">:</span><span class="mi">22</span><span class="p">]</span>
 <span class="n">n_stem</span> <span class="o">=</span> <span class="n">sub_res_list</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
 <span class="n">c_stem</span> <span class="o">=</span> <span class="n">sub_res_list</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
-<span class="n">frag_seq</span> <span class="o">=</span> <span class="s">&#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">sub_res_list</span><span class="p">])</span>
+<span class="n">frag_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">sub_res_list</span><span class="p">])</span>
 
-<span class="c"># a custom FragDB can be built to identify fragments</span>
-<span class="c"># fulfilling these particular geometric constraints</span>
+<span class="c1"># a custom FragDB can be built to identify fragments</span>
+<span class="c1"># fulfilling these particular geometric constraints</span>
 <span class="n">frag_db</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">FragDB</span><span class="p">(</span><span class="mf">1.0</span><span class="p">,</span> <span class="mi">20</span><span class="p">)</span>
 
-<span class="c"># at this point we add all possible fragments of length 5 </span>
-<span class="c"># with an RMSD threshold of 0.5</span>
+<span class="c1"># at this point we add all possible fragments of length 5 </span>
+<span class="c1"># with an RMSD threshold of 0.5</span>
 <span class="n">frag_db</span><span class="o">.</span><span class="n">AddFragments</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="n">structure_db</span><span class="p">)</span>
 
-<span class="c"># the FragDB can now be used to extract FragmentInfo objects to</span>
-<span class="c"># finally query the StructureDB</span>
+<span class="c1"># the FragDB can now be used to extract FragmentInfo objects to</span>
+<span class="c1"># finally query the StructureDB</span>
 <span class="n">fragment_infos</span> <span class="o">=</span> <span class="n">frag_db</span><span class="o">.</span><span class="n">SearchDB</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="mi">5</span><span class="p">)</span>
 
-<span class="c"># get the fragments in form of BackboneList objects and store them</span>
+<span class="c1"># get the fragments in form of BackboneList objects and store them</span>
 <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">f_i</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">fragment_infos</span><span class="p">):</span>
     <span class="n">bb_list</span> <span class="o">=</span> <span class="n">structure_db</span><span class="o">.</span><span class="n">GetBackboneList</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">f_i</span><span class="p">,</span> <span class="n">frag_seq</span><span class="p">)</span>
-    <span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">bb_list</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="o">+</span> <span class="s">&quot;.pdb&quot;</span><span class="p">)</span>
+    <span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">bb_list</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;.pdb&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
 <dl class="class">
@@ -747,7 +877,7 @@ less machine-dependent).</p>
 <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#promod3.loop.FragDB" title="promod3.loop.FragDB"><code class="xref py py-class docutils literal"><span class="pre">FragDB</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 file cannot be opened or if
-file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a> for details).</td>
+file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a> for details).</td>
 </tr>
 </tbody>
 </table>
@@ -759,7 +889,7 @@ file cannot be parsed (see <a class="reference internal" href="../portableIO.htm
 <dt id="promod3.loop.FragDB.SavePortable">
 <code class="descname">SavePortable</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.FragDB.SavePortable" title="Permalink to this definition">¶</a></dt>
 <dd><p>Saves a raw / portable binary representation. Use portable files for
-distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a>
+distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a>
 for details.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -922,8 +1052,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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
@@ -963,9 +1093,9 @@ Calculates the avg. substitution matrix based sequence similarity of amino acids
 when comparing a potential fragment from the <a class="reference internal" href="#promod3.loop.StructureDB" title="promod3.loop.StructureDB"><code class="xref py py-class docutils literal"><span class="pre">StructureDB</span></code></a> and the target
 sequence</li>
 <li><strong>SSAgree</strong>:
-Calculates the avg. agreement of the predicted secondary structure by PSIPRED <a class="reference internal" href="#jones1999" id="id5">[Jones1999]</a>
-and the dssp <a class="reference internal" href="#kabsch1983" id="id6">[kabsch1983]</a> assignment stored in the <a class="reference internal" href="#promod3.loop.StructureDB" title="promod3.loop.StructureDB"><code class="xref py py-class docutils literal"><span class="pre">StructureDB</span></code></a>.
-The Agreement term is based on a probabilistic approach also used in HHSearch <a class="reference internal" href="#soding2005" id="id7">[soding2005]</a>.</li>
+Calculates the avg. agreement of the predicted secondary structure by PSIPRED <a class="reference internal" href="#jones1999" id="id3">[Jones1999]</a>
+and the dssp <a class="reference internal" href="#kabsch1983" id="id4">[kabsch1983]</a> assignment stored in the <a class="reference internal" href="#promod3.loop.StructureDB" title="promod3.loop.StructureDB"><code class="xref py py-class docutils literal"><span class="pre">StructureDB</span></code></a>.
+The Agreement term is based on a probabilistic approach also used in HHSearch <a class="reference internal" href="#soding2005" id="id5">[soding2005]</a>.</li>
 <li><strong>TorsionProbability</strong>:
 Calculates the avg. probability of observing the phi/psi dihedral angles of a potential
 fragment from the <a class="reference internal" href="#promod3.loop.StructureDB" title="promod3.loop.StructureDB"><code class="xref py py-class docutils literal"><span class="pre">StructureDB</span></code></a> given the target sequence. The probabilities are
@@ -980,51 +1110,51 @@ fragment from the <a class="reference internal" href="#promod3.loop.StructureDB"
 in between them. The scores are calculated as L1 distances between the profile columns.
 In this case, the amino acid frequencies extracted from structural alignments are used.</li>
 </ul>
-<div class="highlight-python"><div class="highlight"><pre><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</span> <span class="kn">import</span> <span class="n">loop</span>
+<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="p">,</span> <span class="n">seq</span>
+<span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">loop</span>
 
-<span class="c"># load an example structure</span>
-<span class="n">prot</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="s">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
+<span class="c1"># load an example structure</span>
+<span class="n">prot</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="s1">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
 
-<span class="c"># extract some additional information</span>
-<span class="n">seqres</span> <span class="o">=</span> <span class="s">&#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">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">])</span>
+<span class="c1"># extract some additional information</span>
+<span class="n">seqres</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">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">])</span>
 <span class="n">frag_pos</span> <span class="o">=</span> <span class="mi">35</span>
 <span class="n">frag_length</span> <span class="o">=</span> <span class="mi">9</span>
 <span class="n">frag_seq</span> <span class="o">=</span> <span class="n">seqres</span><span class="p">[</span><span class="n">frag_pos</span><span class="p">:</span><span class="n">frag_pos</span><span class="o">+</span><span class="n">frag_length</span><span class="p">]</span>
 <span class="n">frag_residues</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">frag_pos</span><span class="p">:</span><span class="n">frag_pos</span><span class="o">+</span><span class="n">frag_length</span><span class="p">]</span>
 <span class="n">ref_backbone</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">frag_seq</span><span class="p">,</span> <span class="n">frag_residues</span><span class="p">)</span>
 
-<span class="c"># let&#39;s load the StructureDB and a substitution matrix</span>
+<span class="c1"># let&#39;s load the StructureDB and a substitution matrix</span>
 <span class="n">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">subst_matrix</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="c"># the fragger object needs to be initialized with its target sequence</span>
+<span class="c1"># the fragger object needs to be initialized with its target sequence</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">frag_seq</span><span class="p">)</span>
 
-<span class="c"># we could now add an arbitrary number of parameters from different</span>
-<span class="c"># features for now we only go for the sequence similarity score</span>
+<span class="c1"># we could now add an arbitrary number of parameters from different</span>
+<span class="c1"># features for now we only go for the sequence similarity score</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">subst_matrix</span><span class="p">)</span>
 
-<span class="c"># the Fragger can finally be filled by providing a StructureDB</span>
+<span class="c1"># the Fragger can finally be filled by providing a StructureDB</span>
 <span class="n">fragger</span><span class="o">.</span><span class="n">Fill</span><span class="p">(</span><span class="n">db</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
 
-<span class="c"># let&#39;s see how good the fragments are...</span>
+<span class="c1"># let&#39;s see how good the fragments are...</span>
 <span class="n">below_three</span> <span class="o">=</span> <span class="mi">0</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">ca_rmsd</span> <span class="o">=</span> <span class="n">fragger</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">CARMSD</span><span class="p">(</span><span class="n">ref_backbone</span><span class="p">,</span><span class="bp">True</span><span class="p">)</span>
-    <span class="k">print</span> <span class="s">&quot;Fragment </span><span class="si">%d</span><span class="s"> has CA RMSD of </span><span class="si">%.3f</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">ca_rmsd</span><span class="p">)</span>
+    <span class="n">ca_rmsd</span> <span class="o">=</span> <span class="n">fragger</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">CARMSD</span><span class="p">(</span><span class="n">ref_backbone</span><span class="p">,</span><span class="kc">True</span><span class="p">)</span>
+    <span class="nb">print</span> <span class="s2">&quot;Fragment </span><span class="si">%d</span><span class="s2"> has CA RMSD of </span><span class="si">%.3f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">ca_rmsd</span><span class="p">)</span>
     <span class="k">if</span> <span class="n">ca_rmsd</span> <span class="o">&lt;</span> <span class="mf">3.0</span><span class="p">:</span>
         <span class="n">below_three</span> <span class="o">+=</span> <span class="mi">1</span>
 
 <span class="n">fraction</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">below_three</span><span class="p">)</span><span class="o">/</span><span class="nb">len</span><span class="p">(</span><span class="n">fragger</span><span class="p">)</span>
-<span class="k">print</span> <span class="s">&quot;Fraction of fragments below 3A: </span><span class="si">%.2f</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">fraction</span>
+<span class="nb">print</span> <span class="s2">&quot;Fraction of fragments below 3A: </span><span class="si">%.2f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">fraction</span>
 
-<span class="c"># add into a cached map with ID based on frag_pos</span>
+<span class="c1"># add into a cached map with ID based on frag_pos</span>
 <span class="n">fragger_map</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">FraggerMap</span><span class="p">()</span>
 <span class="k">if</span> <span class="ow">not</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_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="c"># store it for future use</span>
-<span class="n">fragger_map</span><span class="o">.</span><span class="n">SaveBB</span><span class="p">(</span><span class="s">&quot;frag_map.dat&quot;</span><span class="p">)</span>
+<span class="c1"># store it for future use</span>
+<span class="n">fragger_map</span><span class="o">.</span><span class="n">SaveBB</span><span class="p">(</span><span class="s2">&quot;frag_map.dat&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
 <dl class="class">
@@ -1147,7 +1277,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -1165,7 +1295,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -1567,37 +1697,31 @@ to <strong>to</strong>, not including <strong>to</strong> itself</p>
 <table class="docutils citation" frame="void" id="soding2005" rules="none">
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
-<tr><td class="label">[soding2005]</td><td><em>(<a class="fn-backref" href="#id1">1</a>, <a class="fn-backref" href="#id7">2</a>)</em> Söding J (2005). Protein homology detection by HMM-HMM comparison. Bioinformatics 21 (7): 951–960.</td></tr>
-</tbody>
-</table>
-<table class="docutils citation" frame="void" id="sanner1996" rules="none">
-<colgroup><col class="label" /><col /></colgroup>
-<tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id2">[sanner1996]</a></td><td>Sanner M, Olson AJ, Spehner JC (1996). Reduced Surface: an Efficient Way to Compute Molecular Surfaces. Biopolymers 38 (3): 305-320.</td></tr>
+<tr><td class="label"><a class="fn-backref" href="#id5">[soding2005]</a></td><td>Söding J (2005). Protein homology detection by HMM-HMM comparison. Bioinformatics 21 (7): 951–960.</td></tr>
 </tbody>
 </table>
 <table class="docutils citation" frame="void" id="chakravarty1999" rules="none">
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id3">[chakravarty1999]</a></td><td>Chakravarty S, Varadarajan R (1999). Residue depth: a novel parameter for the analysis of protein structure and stability. Structure 7 (7): 723–732.</td></tr>
+<tr><td class="label"><a class="fn-backref" href="#id1">[chakravarty1999]</a></td><td>Chakravarty S, Varadarajan R (1999). Residue depth: a novel parameter for the analysis of protein structure and stability. Structure 7 (7): 723–732.</td></tr>
 </tbody>
 </table>
 <table class="docutils citation" frame="void" id="zhou2005" rules="none">
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id4">[zhou2005]</a></td><td>Zhou H, Zhou Y (2005). Fold Recognition by Combining Sequence Profiles Derived From Evolution and From Depth-Dependent Structural Alignment of Fragments. Proteins 58 (2): 321–328.</td></tr>
+<tr><td class="label"><a class="fn-backref" href="#id2">[zhou2005]</a></td><td>Zhou H, Zhou Y (2005). Fold Recognition by Combining Sequence Profiles Derived From Evolution and From Depth-Dependent Structural Alignment of Fragments. Proteins 58 (2): 321–328.</td></tr>
 </tbody>
 </table>
 <table class="docutils citation" frame="void" id="jones1999" rules="none">
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id5">[Jones1999]</a></td><td>Jones DT (1999) Protein secondary structure prediction based on position-specific scoring matrices. J. Mol. Biol. 292: 195-202.</td></tr>
+<tr><td class="label"><a class="fn-backref" href="#id3">[Jones1999]</a></td><td>Jones DT (1999) Protein secondary structure prediction based on position-specific scoring matrices. J. Mol. Biol. 292: 195-202.</td></tr>
 </tbody>
 </table>
 <table class="docutils citation" frame="void" id="kabsch1983" rules="none">
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id6">[kabsch1983]</a></td><td>Kabsch W, Sander C (1983) Dictionary of protein secondary structure: pattern recognition of hydrogen-bonded and geometrical features. Biopolymers 22 2577-2637.</td></tr>
+<tr><td class="label"><a class="fn-backref" href="#id4">[kabsch1983]</a></td><td>Kabsch W, Sander C (1983) Dictionary of protein secondary structure: pattern recognition of hydrogen-bonded and geometrical features. Biopolymers 22 2577-2637.</td></tr>
 </tbody>
 </table>
 </div>
@@ -1648,9 +1772,6 @@ to <strong>to</strong>, not including <strong>to</strong> itself</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -1661,8 +1782,8 @@ to <strong>to</strong>, not including <strong>to</strong> itself</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/loop/structure_db.txt"
diff --git a/doc/html/loop/torsion_sampler.html b/doc/html/loop/torsion_sampler.html
index b74d69f2abcffb9915d106d749bc10a39a861a27..a345480fca90401711b957096c5b1e58a1c3edf0 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.1.0 documentation</title>
+    <title>Sampling Dihedral Angles &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -54,23 +56,23 @@ most methods which need to access a specific distribution can either take 3
 residue names or an index as input.</p>
 <p>As a showcase example, we randomly sample from a given torsion sample and
 store the resulting samples as a scatter plot:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">loop</span>
-<span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">conop</span>
-<span class="c"># this requires matplotlib and numpy</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">loop</span>
+<span class="kn">from</span> <span class="nn">ost</span> <span class="k">import</span> <span class="n">conop</span>
+<span class="c1"># this requires matplotlib and numpy</span>
 <span class="kn">import</span> <span class="nn">matplotlib</span>
-<span class="c"># change next line, if you wish to use a GUI-based plot-output</span>
-<span class="n">matplotlib</span><span class="o">.</span><span class="n">use</span><span class="p">(</span><span class="s">&quot;Agg&quot;</span><span class="p">)</span>
-<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
-<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
+<span class="c1"># change next line, if you wish to use a GUI-based plot-output</span>
+<span class="n">matplotlib</span><span class="o">.</span><span class="n">use</span><span class="p">(</span><span class="s2">&quot;Agg&quot;</span><span class="p">)</span>
+<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
 
-<span class="c"># load a default sampler</span>
+<span class="c1"># load a default sampler</span>
 <span class="n">t_sampler</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">LoadTorsionSampler</span><span class="p">()</span>
 
-<span class="c"># dihedral angles will be stored in here</span>
+<span class="c1"># dihedral angles will be stored in here</span>
 <span class="n">phi</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
 <span class="n">psi</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
 
-<span class="c"># draw from a random distribution</span>
+<span class="c1"># draw from a random distribution</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">1000</span><span class="p">):</span>
     <span class="n">dihedral_pair</span> <span class="o">=</span> <span class="n">t_sampler</span><span class="o">.</span><span class="n">Draw</span><span class="p">(</span><span class="n">conop</span><span class="o">.</span><span class="n">ALA</span><span class="p">,</span> 
                                    <span class="n">conop</span><span class="o">.</span><span class="n">PRO</span><span class="p">,</span> 
@@ -78,16 +80,16 @@ store the resulting samples as a scatter plot:</p>
     <span class="n">phi</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dihedral_pair</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
     <span class="n">psi</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dihedral_pair</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
 
-<span class="c"># and plot it</span>
+<span class="c1"># and plot it</span>
 <span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="p">)</span>
 <span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">(</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="p">)</span>
-<span class="n">plt</span><span class="o">.</span><span class="n">plot</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="s">&#39;.&#39;</span><span class="p">)</span>
-<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">&quot;phi&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="s">&#39;large&#39;</span><span class="p">)</span>
-<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">&quot;psi&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="s">&#39;large&#39;</span><span class="p">)</span>
-<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s">&quot;ALA-PRO-ALA&quot;</span><span class="p">)</span>
+<span class="n">plt</span><span class="o">.</span><span class="n">plot</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="s1">&#39;.&#39;</span><span class="p">)</span>
+<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s2">&quot;phi&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="s1">&#39;large&#39;</span><span class="p">)</span>
+<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s2">&quot;psi&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="s1">&#39;large&#39;</span><span class="p">)</span>
+<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">&quot;ALA-PRO-ALA&quot;</span><span class="p">)</span>
 
-<span class="c"># store plot as png file</span>
-<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="s">&quot;torsion_plot.png&quot;</span><span class="p">)</span>
+<span class="c1"># store plot as png file</span>
+<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="s2">&quot;torsion_plot.png&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
 <div class="section" id="defining-amino-acid-triplets">
@@ -136,7 +138,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.7.1)"><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>
@@ -173,7 +175,7 @@ less machine-dependent).</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 file cannot be opened or if
-file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a> for details).</p>
+file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a> for details).</p>
 </td>
 </tr>
 </tbody>
@@ -186,7 +188,7 @@ file cannot be parsed (see <a class="reference internal" href="../portableIO.htm
 <dt id="promod3.loop.TorsionSampler.SavePortable">
 <code class="descname">SavePortable</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.loop.TorsionSampler.SavePortable" title="Permalink to this definition">¶</a></dt>
 <dd><p>Saves a raw / portable binary representation. Use portable files for
-distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a>
+distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a>
 for details.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -208,9 +210,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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.7.1)"><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.7.1)"><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>
@@ -250,9 +252,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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.7.1)"><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.7.1)"><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>
@@ -288,9 +290,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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.7.1)"><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.7.1)"><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>
@@ -332,9 +334,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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.7.1)"><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.7.1)"><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>
@@ -376,9 +378,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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.7.1)"><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.7.1)"><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>
@@ -422,9 +424,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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.7.1)"><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.7.1)"><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>
@@ -446,9 +448,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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.7.1)"><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.7.1)"><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>
@@ -580,9 +582,6 @@ standard amino acid</td>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -593,8 +592,8 @@ standard amino acid</td>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/loop/torsion_sampler.txt"
diff --git a/doc/html/modelling/algorithms.html b/doc/html/modelling/algorithms.html
index 38468c44ec13aa3c4aa4dbcb41263e7bda7d9045..b1460016b5cbcfe61e31e8ed6d1046b06db0591c 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.1.0 documentation</title>
+    <title>Modelling Algorithms &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -59,11 +61,9 @@ iterative superposition multiple times by using a sliding window to select the
 initial subset and gathers all unique results. These results can be very
 similar and only differ by single positions. The algorithm therefore reduces
 the amount of solutions by merging them based on a threshold of similarity.
-If the sum of matching positions within the distance threshold divided by
-the maximum length of the two solutions is above a cluster thresh, the two
-solutions get merged by producing a common solution containing the shared
-positions. As a final result, the algorithm therefore detects common rigid
-subsets of positions.</p>
+The similarity is defined by the fraction of positions in solution A that are
+also present in solution B. As a final result, the algorithm therefore detects
+common rigid subsets of positions.</p>
 <dl class="method">
 <dt id="promod3.modelling.RigidBlocks">
 <code class="descclassname">promod3.modelling.</code><code class="descname">RigidBlocks</code><span class="sig-paren">(</span><em>bb_list_one</em>, <em>bb_list_two</em><span class="optional">[</span>, <em>window_length = 12</em>, <em>max_iterations=20</em>, <em>distance_thresh=3.0</em>, <em>cluster_thresh=0.9</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.RigidBlocks" title="Permalink to this definition">¶</a></dt>
@@ -94,7 +94,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="http://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.6.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/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.7.1)"><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>
@@ -112,7 +112,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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>
@@ -133,9 +133,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.7.1)"><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="http://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.6.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/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.7.1)"><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>
@@ -172,7 +172,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="http://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.6.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/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.7.1)"><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>
@@ -235,8 +235,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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
@@ -313,7 +313,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>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="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>
 <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>
@@ -328,7 +328,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -342,6 +342,8 @@ get used instead.</li>
 default one gets loaded with default objects with
 following keys: clash, reduced, cb_packing, hbond, cbeta, 
 torsion and pairwise</li>
+<li><strong>scorer_env</strong> (<a class="reference internal" href="../scoring/backbone_score_env.html#promod3.scoring.BackboneScoreEnv" title="promod3.scoring.BackboneScoreEnv"><code class="xref py py-class docutils literal"><span class="pre">promod3.scoring.BackboneScoreEnv</span></code></a>) &#8211; The scoring env that relates to <strong>scorer</strong>
+This environment will be changed!</li>
 <li><strong>scoring_weights</strong> (<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>) &#8211; Linear weights for different scores. If not provided,
 the output of ScoringWeights.GetWeights() is used.
 Please note, that the weights must be consistent
@@ -402,9 +404,6 @@ with the keys of the scores in <strong>scorer</strong></li>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -415,8 +414,8 @@ with the keys of the scores in <strong>scorer</strong></li>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/modelling/algorithms.txt"
diff --git a/doc/html/modelling/gap_handling.html b/doc/html/modelling/gap_handling.html
index 916d24a1617cf48a310fc932dd1a2904acf28c82..8e83430f89eac925f45cf57d400164e1a46dfd4b 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.1.0 documentation</title>
+    <title>Handling Gaps &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -58,8 +60,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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>
@@ -114,7 +116,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ChainHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ChainHandle" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ChainHandle</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -265,13 +267,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>)</p>
 </dd></dl>
 
 <dl class="attribute">
@@ -298,7 +300,7 @@ False if no new extension possible.</p>
 <dt id="promod3.modelling.GapExtender">
 <em class="property">class </em><code class="descclassname">promod3.modelling.</code><code class="descname">GapExtender</code><span class="sig-paren">(</span><em>gap</em>, <em>seqres</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.GapExtender" title="Permalink to this definition">¶</a></dt>
 <dd><p>The extender cycles through the following steps:</p>
-<div class="highlight-none"><div class="highlight"><pre>   -
+<div class="highlight-none"><div class="highlight"><pre><span></span>   -
   --
    --
  ---
@@ -316,7 +318,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -357,7 +359,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.7.1)"><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
@@ -410,7 +412,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -643,9 +645,6 @@ gaps of different chains or an N-terminal gap with a C-terminal gap.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -656,8 +655,8 @@ gaps of different chains or an N-terminal gap with a C-terminal gap.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/modelling/gap_handling.txt"
diff --git a/doc/html/modelling/index.html b/doc/html/modelling/index.html
index 6760e8c8f9de9611a3f6c785bf48e46c6aac9f9d..f174544b00d56c836153fa3d634cf72b85c14c7f 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.1.0 documentation</title>
+    <title>modelling - Protein Modelling &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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="Building ProMod3" href="../buildsystem.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -48,18 +50,18 @@ capabilities to extract useful template data for the target and to fill the
 remaining structural data to create a full model of the target. In its simplest
 form, you can use a target-template alignment and a template structure to create
 a model fully automatically as follows:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">io</span>
-<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">modelling</span>
+<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">promod3</span> <span class="k">import</span> <span class="n">modelling</span>
 
-<span class="c"># get raw model</span>
-<span class="n">tpl</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="s">&#39;data/1crn_cut.pdb&#39;</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="s">&#39;data/1crn.fasta&#39;</span><span class="p">)</span>
+<span class="c1"># get raw model</span>
+<span class="n">tpl</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="s1">&#39;data/1crn_cut.pdb&#39;</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="s1">&#39;data/1crn.fasta&#39;</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="mi">1</span><span class="p">,</span> <span class="n">tpl</span><span class="o">.</span><span class="n">CreateFullView</span><span class="p">())</span>
 <span class="n">mhandle</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">BuildRawModel</span><span class="p">(</span><span class="n">aln</span><span class="p">)</span>
 
-<span class="c"># build final model</span>
+<span class="c1"># build final model</span>
 <span class="n">final_model</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">BuildFromRawModel</span><span class="p">(</span><span class="n">mhandle</span><span class="p">)</span>
-<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">final_model</span><span class="p">,</span> <span class="s">&#39;model.pdb&#39;</span><span class="p">)</span>
+<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">final_model</span><span class="p">,</span> <span class="s1">&#39;model.pdb&#39;</span><span class="p">)</span>
 </pre></div>
 </div>
 <p>The various steps involved in protein modelling are described here:</p>
@@ -148,9 +150,6 @@ a model fully automatically as follows:</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -161,8 +160,8 @@ a model fully automatically as follows:</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/modelling/index.txt"
diff --git a/doc/html/modelling/loop_candidates.html b/doc/html/modelling/loop_candidates.html
index 411f6291eb8c6e3e75449d21e66646eb648fb8b2..d150dfe33b6c2843f8a4e7add8ce97a950b1c2fa 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.1.0 documentation</title>
+    <title>Handling Loop Candidates &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -47,59 +49,59 @@ filled manually or generated using static filling functions using the
 functionality from the <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> or Monte Carlo algorithms.
 Once it contains candidates you can apply closing, scoring or clustering
 algorithms on all loop candidates. Example:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">io</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">scoring</span><span class="p">,</span> <span class="n">modelling</span>
+<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">promod3</span> <span class="k">import</span> <span class="n">loop</span><span class="p">,</span> <span class="n">scoring</span><span class="p">,</span> <span class="n">modelling</span>
 
-<span class="c"># let&#39;s load a crambin structure from the pdb</span>
-<span class="n">crambin</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="s">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
-<span class="n">SEQRES</span> <span class="o">=</span> <span class="s">&#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">crambin</span><span class="o">.</span><span class="n">residues</span><span class="p">])</span>
+<span class="c1"># let&#39;s load a crambin structure from the pdb</span>
+<span class="n">crambin</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="s1">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
+<span class="n">SEQRES</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">crambin</span><span class="o">.</span><span class="n">residues</span><span class="p">])</span>
 
-<span class="c"># this is the sequence we want to remodel</span>
+<span class="c1"># this is the sequence we want to remodel</span>
 <span class="n">loop_seq</span> <span class="o">=</span> <span class="n">SEQRES</span><span class="p">[</span><span class="mi">23</span><span class="p">:</span><span class="mi">31</span><span class="p">]</span>
 
-<span class="c"># let&#39;s define the stem residues</span>
+<span class="c1"># let&#39;s define the stem residues</span>
 <span class="n">n_stem</span> <span class="o">=</span> <span class="n">crambin</span><span class="o">.</span><span class="n">residues</span><span class="p">[</span><span class="mi">23</span><span class="p">]</span>
 <span class="n">c_stem</span> <span class="o">=</span> <span class="n">crambin</span><span class="o">.</span><span class="n">residues</span><span class="p">[</span><span class="mi">30</span><span class="p">]</span>
 
-<span class="c"># we use the StructureDB as source for structural information</span>
+<span class="c1"># we use the StructureDB as source for structural information</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="c"># the FragDB allows to access the StructureDB based on geometric </span>
-<span class="c"># features of the loop stem residue</span>
+<span class="c1"># the FragDB allows to access the StructureDB based on geometric </span>
+<span class="c1"># features of the loop stem residue</span>
 <span class="n">frag_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="c"># the LoopCandidates allow to handle several loops at once</span>
-<span class="c"># we directly want to find potential loop candidates from the</span>
-<span class="c"># previously loaded databases</span>
+<span class="c1"># the LoopCandidates allow to handle several loops at once</span>
+<span class="c1"># we directly want to find potential loop candidates from the</span>
+<span class="c1"># previously loaded databases</span>
 <span class="n">loop_candidates</span> <span class="o">=</span> <span class="n">modelling</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">loop_seq</span><span class="p">,</span> <span class="n">frag_db</span><span class="p">,</span> <span class="n">structure_db</span><span class="p">)</span>
 
-<span class="c"># candidates usually don&#39;t match exactly the required stem coords.</span>
-<span class="c"># CCD (Cyclic Coordinate Descent) is one way to enforce this match.</span>
+<span class="c1"># candidates usually don&#39;t match exactly the required stem coords.</span>
+<span class="c1"># CCD (Cyclic Coordinate Descent) is one way to enforce this match.</span>
 <span class="n">loop_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="c"># setup backbone scorer with clash and cbeta scoring</span>
+<span class="c1"># setup backbone scorer with clash and cbeta scoring</span>
 <span class="n">score_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">SEQRES</span><span class="p">)</span>
 <span class="n">score_env</span><span class="o">.</span><span class="n">SetInitialEnvironment</span><span class="p">(</span><span class="n">crambin</span><span class="p">)</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</span><span class="p">[</span><span class="s">&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="s">&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;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;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="o">.</span><span class="n">AttachEnvironment</span><span class="p">(</span><span class="n">score_env</span><span class="p">)</span>
 
-<span class="c"># the scorer can then be used on the LoopCandidates object to</span>
-<span class="c"># calculate desired scores (here: cbeta &amp; clash, start resnum = 24)</span>
+<span class="c1"># the scorer can then be used on the LoopCandidates object to</span>
+<span class="c1"># calculate desired scores (here: cbeta &amp; clash, start resnum = 24)</span>
 <span class="n">bb_scores</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">ScoreContainer</span><span class="p">()</span>
-<span class="n">loop_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">scorer</span><span class="p">,</span>
-                                        <span class="p">[</span><span class="s">&quot;cbeta&quot;</span><span class="p">,</span> <span class="s">&quot;clash&quot;</span><span class="p">],</span> <span class="mi">24</span><span class="p">)</span>
-<span class="c"># we finally perform a weighted linear combination of the scores,</span>
-<span class="c"># pick the best one, insert it into our structure and save it</span>
-<span class="n">weights</span> <span class="o">=</span> <span class="p">{</span><span class="s">&quot;cbeta&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s">&quot;clash&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">}</span>
+<span class="n">loop_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">scorer</span><span class="p">,</span> <span class="n">score_env</span><span class="p">,</span>
+                                        <span class="p">[</span><span class="s2">&quot;cbeta&quot;</span><span class="p">,</span> <span class="s2">&quot;clash&quot;</span><span class="p">],</span> <span class="mi">24</span><span class="p">)</span>
+<span class="c1"># we finally perform a weighted linear combination of the scores,</span>
+<span class="c1"># pick the best one, insert it into our structure and save it</span>
+<span class="n">weights</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;cbeta&quot;</span><span class="p">:</span> <span class="mi">1</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="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">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_candidate</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="n">bb_list</span> <span class="o">=</span> <span class="n">loop_candidates</span><span class="p">[</span><span class="n">min_candidate</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">crambin</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="n">n_stem</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">())</span>
-<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">crambin</span><span class="p">,</span> <span class="s">&quot;modified_crambin.pdb&quot;</span><span class="p">)</span>
+<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">crambin</span><span class="p">,</span> <span class="s2">&quot;modified_crambin.pdb&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
 <div class="section" id="the-loopcandidates-class">
@@ -130,8 +132,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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>
@@ -163,6 +165,14 @@ atoms.</p>
 <em class="property">static </em><code class="descname">FillFromMonteCarloSampler</code><span class="sig-paren">(</span><em>initial_bb</em>, <em>seq</em>, <em>num_loops</em>, <em>steps</em>, <em>sampler</em>, <em>closer</em>, <em>scorer</em>, <em>cooler</em>, <em>random_seed=0</em><span class="sig-paren">)</span></dt>
 <dd><p>Uses Monte Carlo simulated annealing to sample the loop to be modelled.
 If <em>initial_bb</em> is given, every Monte Carlo run starts from that configuration.</p>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">The <a class="reference internal" href="../scoring/backbone_score_env.html#promod3.scoring.BackboneScoreEnv" title="promod3.scoring.BackboneScoreEnv"><code class="xref py py-class docutils literal"><span class="pre">BackboneScoreEnv</span></code></a>
+attached to <em>scorer</em> will be altered in the specified stretch.
+You might consider the Stash / Pop mechanism of the
+<a class="reference internal" href="../scoring/backbone_score_env.html#promod3.scoring.BackboneScoreEnv" title="promod3.scoring.BackboneScoreEnv"><code class="xref py py-class docutils literal"><span class="pre">BackboneScoreEnv</span></code></a> to restore to the
+original state once the sampling is done.</p>
+</div>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -173,10 +183,10 @@ If <em>initial_bb</em> is given, every Monte Carlo run starts from that configur
 <li><strong>num_loops</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 loop candidates to return</li>
 <li><strong>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; Number of MC steps to perform for each loop candidate
 generated</li>
-<li><strong>sampler</strong> (<a class="reference internal" href="monte_carlo.html#mc-sampler-object"><span>Sampler Object</span></a>) &#8211; Used to generate a new configuration at each MC step</li>
-<li><strong>closer</strong> (<a class="reference internal" href="monte_carlo.html#mc-closer-object"><span>Closer Object</span></a>) &#8211; Used to close the loop after each MC step</li>
-<li><strong>scorer</strong> (<a class="reference internal" href="monte_carlo.html#mc-scorer-object"><span>Scorer Object</span></a>) &#8211; Used to score the generated configurations at each MC step</li>
-<li><strong>cooler</strong> (<a class="reference internal" href="monte_carlo.html#mc-cooler-object"><span>Cooler Object</span></a>) &#8211; Controls the temperature profile of the simulated annealing</li>
+<li><strong>sampler</strong> (<a class="reference internal" href="monte_carlo.html#mc-sampler-object"><span class="std std-ref">Sampler Object</span></a>) &#8211; Used to generate a new configuration at each MC step</li>
+<li><strong>closer</strong> (<a class="reference internal" href="monte_carlo.html#mc-closer-object"><span class="std std-ref">Closer Object</span></a>) &#8211; Used to close the loop after each MC step</li>
+<li><strong>scorer</strong> (<a class="reference internal" href="monte_carlo.html#mc-scorer-object"><span class="std std-ref">Scorer Object</span></a>) &#8211; Used to score the generated configurations at each MC step</li>
+<li><strong>cooler</strong> (<a class="reference internal" href="monte_carlo.html#mc-cooler-object"><span class="std std-ref">Cooler Object</span></a>) &#8211; Controls the temperature profile of the simulated annealing</li>
 <li><strong>random_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 to feed the random number generator for
 accepting/rejecting proposed monte carlo steps.
 For every monte carlo run, the random number generator
@@ -234,9 +244,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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
@@ -278,9 +288,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -303,9 +313,13 @@ useful to keep track of scores and other data extracted before.</p>
 
 <dl class="method">
 <dt id="promod3.modelling.LoopCandidates.CalculateBackboneScores">
-<code class="descname">CalculateBackboneScores</code><span class="sig-paren">(</span><em>score_container</em>, <em>scorer</em>, <em>start_resnum</em>, <em>chain_idx=0</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.LoopCandidates.CalculateBackboneScores" title="Permalink to this definition">¶</a></dt>
+<code class="descname">CalculateBackboneScores</code><span class="sig-paren">(</span><em>score_container</em>, <em>scorer</em>, <em>scorer_env</em>, <em>start_resnum</em>, <em>chain_idx=0</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.LoopCandidates.CalculateBackboneScores" title="Permalink to this definition">¶</a></dt>
+<dt>
+<code class="descname">CalculateBackboneScores</code><span class="sig-paren">(</span><em>score_container</em>, <em>scorer</em>, <em>scorer_env</em>, <em>keys</em>, <em>start_resnum</em>, <em>chain_idx=0</em><span class="sig-paren">)</span></dt>
 <dt>
-<code class="descname">CalculateBackboneScores</code><span class="sig-paren">(</span><em>score_container</em>, <em>scorer</em>, <em>keys</em>, <em>start_resnum</em>, <em>chain_idx=0</em><span class="sig-paren">)</span></dt>
+<code class="descname">CalculateBackboneScores</code><span class="sig-paren">(</span><em>score_container</em>, <em>mhandle</em>, <em>start_resnum</em>, <em>chain_idx=0</em><span class="sig-paren">)</span></dt>
+<dt>
+<code class="descname">CalculateBackboneScores</code><span class="sig-paren">(</span><em>score_container</em>, <em>mhandle</em>, <em>keys</em>, <em>start_resnum</em>, <em>chain_idx=0</em><span class="sig-paren">)</span></dt>
 <dt id="promod3.modelling.LoopCandidates.CalculateAllAtomScores">
 <code class="descname">CalculateAllAtomScores</code><span class="sig-paren">(</span><em>score_container</em>, <em>mhandle</em>, <em>start_resnum</em>, <em>chain_idx=0</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.LoopCandidates.CalculateAllAtomScores" title="Permalink to this definition">¶</a></dt>
 <dt>
@@ -322,7 +336,9 @@ Note that (unless otherwise noted) a lower &#8220;score&#8221; is better!</p>
 key names (or the ones from <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>scorer</strong> (<a class="reference internal" href="../scoring/backbone_scorers.html#promod3.scoring.BackboneOverallScorer" title="promod3.scoring.BackboneOverallScorer"><code class="xref py py-class docutils literal"><span class="pre">BackboneOverallScorer</span></code></a>) &#8211; Backbone scoring object with set environment for the
 particular loop modelling problem.</li>
-<li><strong>mhandle</strong> (<a class="reference internal" href="pipeline.html#promod3.modelling.ModellingHandle" title="promod3.modelling.ModellingHandle"><code class="xref py py-class docutils literal"><span class="pre">ModellingHandle</span></code></a>) &#8211; Modelling handle set up for all atom scoring (see
+<li><strong>scorer_env</strong> (<a class="reference internal" href="../scoring/backbone_score_env.html#promod3.scoring.BackboneScoreEnv" title="promod3.scoring.BackboneScoreEnv"><code class="xref py py-class docutils literal"><span class="pre">BackboneScoreEnv</span></code></a>) &#8211; The scoring environment attached to <em>scorer</em></li>
+<li><strong>mhandle</strong> (<a class="reference internal" href="pipeline.html#promod3.modelling.ModellingHandle" title="promod3.modelling.ModellingHandle"><code class="xref py py-class docutils literal"><span class="pre">ModellingHandle</span></code></a>) &#8211; Modelling handle set up scoring (see
+<a class="reference internal" href="pipeline.html#promod3.modelling.SetupDefaultBackboneScoring" title="promod3.modelling.SetupDefaultBackboneScoring"><code class="xref py py-func docutils literal"><span class="pre">SetupDefaultBackboneScoring()</span></code></a>
 <a class="reference internal" href="pipeline.html#promod3.modelling.SetupDefaultAllAtomScoring" title="promod3.modelling.SetupDefaultAllAtomScoring"><code class="xref py py-func docutils literal"><span class="pre">SetupDefaultAllAtomScoring()</span></code></a>).</li>
 <li><strong>keys</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#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>) &#8211; Keys of the desired scorers. If not given, we use the set of
 keys given by <a class="reference internal" href="#promod3.modelling.ScoringWeights.GetBackboneScoringKeys" title="promod3.modelling.ScoringWeights.GetBackboneScoringKeys"><code class="xref py py-meth docutils literal"><span class="pre">ScoringWeights.GetBackboneScoringKeys()</span></code></a> /
@@ -348,7 +364,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle.GetAverageScore" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.ProfileHandle.GetAverageScore" title="(in OpenStructure v1.7.1)"><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>
@@ -364,7 +380,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -396,8 +412,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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>
@@ -801,11 +817,17 @@ matching keys).</p>
 <dd><p>Globally accessible set of weights to be used in scoring. This also defines
 a consistent naming of keys used for backbone and all atom scorers as set up
 by <a class="reference internal" href="pipeline.html#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="pipeline.html#promod3.modelling.SetupDefaultAllAtomScoring" title="promod3.modelling.SetupDefaultAllAtomScoring"><code class="xref py py-func docutils literal"><span class="pre">SetupDefaultAllAtomScoring()</span></code></a>.</p>
+<p>Different sets of weights are available. You can get general weights
+that have been optimized for a non redundant set of loops with lengths [3,14]
+(including stem residues). The alternative is to get weights that have only
+been optimized on a length specific subset of loops. By default you get
+different weights for following lengths: [0,1,2,3,4], [5,6], [7,8], [9,10],
+[11,12], [13,14].</p>
 <p>If you choose to modify the weights, please ensure to set consistently named
 keys in here and to use consistently named scorers and scoring computations!</p>
 <dl class="staticmethod">
 <dt id="promod3.modelling.ScoringWeights.GetWeights">
-<em class="property">static </em><code class="descname">GetWeights</code><span class="sig-paren">(</span><em>with_db=False</em>, <em>with_aa=False</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.ScoringWeights.GetWeights" title="Permalink to this definition">¶</a></dt>
+<em class="property">static </em><code class="descname">GetWeights</code><span class="sig-paren">(</span><em>with_db=False</em>, <em>with_aa=False</em>, <em>length_dependent=False</em>, <em>loop_length=-1</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.ScoringWeights.GetWeights" 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" />
@@ -813,7 +835,9 @@ keys in here and to use consistently named scorers and scoring computations!</p>
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Named weights to be used when scoring loop candidates. The default
 weights were optimized to give the best performance when choosing
 the loop candidate with the lowest combined score. Each set of
-weights includes (different) backbone scoring weights.</p>
+weights includes (different) backbone scoring weights, that are
+optionally only trained on a subset of loops with corresponding
+loop length.</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://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> (keys: <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>, values: <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>)</p>
@@ -823,6 +847,11 @@ weights includes (different) backbone scoring weights.</p>
 <li><strong>with_db</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 to choose a set of weights including DB specific scores
 (stem RMSD and profile scores)</li>
 <li><strong>with_aa</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 to choose a set of weights including all atom scores</li>
+<li><strong>length_dependent</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 use general weights or their length
+length dependent counterparts.</li>
+<li><strong>loop_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 of full loop. If no weights are available for
+this length or when <em>loop_length</em> is -1, the general
+weights are returned.</li>
 </ul>
 </td>
 </tr>
@@ -832,13 +861,13 @@ weights includes (different) backbone scoring weights.</p>
 
 <dl class="staticmethod">
 <dt id="promod3.modelling.ScoringWeights.SetWeights">
-<em class="property">static </em><code class="descname">SetWeights</code><span class="sig-paren">(</span><em>with_db</em>, <em>with_aa</em>, <em>weights</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.ScoringWeights.SetWeights" title="Permalink to this definition">¶</a></dt>
+<em class="property">static </em><code class="descname">SetWeights</code><span class="sig-paren">(</span><em>with_db</em>, <em>with_aa</em>, <em>weights</em>, <em>length_dependent=False</em>, <em>loop_length=-1</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.ScoringWeights.SetWeights" title="Permalink to this definition">¶</a></dt>
 <dd><p>Overwrite a set of weights as returned by <a class="reference internal" href="#promod3.modelling.ScoringWeights.GetWeights" title="promod3.modelling.ScoringWeights.GetWeights"><code class="xref py py-meth docutils literal"><span class="pre">GetWeights()</span></code></a>.</p>
 </dd></dl>
 
 <dl class="staticmethod">
 <dt id="promod3.modelling.ScoringWeights.GetBackboneWeights">
-<em class="property">static </em><code class="descname">GetBackboneWeights</code><span class="sig-paren">(</span><em>with_db=False</em>, <em>with_aa=False</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.ScoringWeights.GetBackboneWeights" title="Permalink to this definition">¶</a></dt>
+<em class="property">static </em><code class="descname">GetBackboneWeights</code><span class="sig-paren">(</span><em>with_db=False</em>, <em>with_aa=False</em>, <em>length_dependent=False</em>, <em>loop_length=-1</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.ScoringWeights.GetBackboneWeights" 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" />
@@ -853,6 +882,8 @@ weights includes (different) backbone scoring weights.</p>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
 <li><strong>with_db</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; As in <a class="reference internal" href="#promod3.modelling.ScoringWeights.GetWeights" title="promod3.modelling.ScoringWeights.GetWeights"><code class="xref py py-meth docutils literal"><span class="pre">GetWeights()</span></code></a></li>
 <li><strong>with_aa</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; As in <a class="reference internal" href="#promod3.modelling.ScoringWeights.GetWeights" title="promod3.modelling.ScoringWeights.GetWeights"><code class="xref py py-meth docutils literal"><span class="pre">GetWeights()</span></code></a></li>
+<li><strong>length_dependent</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; As in <a class="reference internal" href="#promod3.modelling.ScoringWeights.GetWeights" title="promod3.modelling.ScoringWeights.GetWeights"><code class="xref py py-meth docutils literal"><span class="pre">GetWeights()</span></code></a></li>
+<li><strong>loop_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; As in <a class="reference internal" href="#promod3.modelling.ScoringWeights.GetWeights" title="promod3.modelling.ScoringWeights.GetWeights"><code class="xref py py-meth docutils literal"><span class="pre">GetWeights()</span></code></a></li>
 </ul>
 </td>
 </tr>
@@ -862,17 +893,24 @@ weights includes (different) backbone scoring weights.</p>
 
 <dl class="staticmethod">
 <dt id="promod3.modelling.ScoringWeights.GetAllAtomWeights">
-<em class="property">static </em><code class="descname">GetAllAtomWeights</code><span class="sig-paren">(</span><em>with_db=False</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.ScoringWeights.GetAllAtomWeights" title="Permalink to this definition">¶</a></dt>
+<em class="property">static </em><code class="descname">GetAllAtomWeights</code><span class="sig-paren">(</span><em>with_db=False</em>, <em>length_dependent=False</em>, <em>loop_length=-1</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.ScoringWeights.GetAllAtomWeights" 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">Subset of <a class="reference internal" href="#promod3.modelling.ScoringWeights.GetWeights" title="promod3.modelling.ScoringWeights.GetWeights"><code class="xref py py-meth docutils literal"><span class="pre">GetWeights()</span></code></a> for all atom scoring as in
-<code class="xref py py-meth docutils literal"><span class="pre">scoring.AllAtomOverallScorer.CalculateLinearCombination()</span></code>.</td>
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Subset of <a class="reference internal" href="#promod3.modelling.ScoringWeights.GetWeights" title="promod3.modelling.ScoringWeights.GetWeights"><code class="xref py py-meth docutils literal"><span class="pre">GetWeights()</span></code></a> for all atom scoring as in
+<code class="xref py py-meth docutils literal"><span class="pre">scoring.AllAtomOverallScorer.CalculateLinearCombination()</span></code>.</p>
+</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/stdtypes.html#dict" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">dict</span></code></a> (keys: <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>, values: <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 class="field-even 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> (keys: <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>, values: <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>)</p>
+</td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>with_db</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; As in <a class="reference internal" href="#promod3.modelling.ScoringWeights.GetWeights" title="promod3.modelling.ScoringWeights.GetWeights"><code class="xref py py-meth docutils literal"><span class="pre">GetWeights()</span></code></a></td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>with_db</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; As in <a class="reference internal" href="#promod3.modelling.ScoringWeights.GetWeights" title="promod3.modelling.ScoringWeights.GetWeights"><code class="xref py py-meth docutils literal"><span class="pre">GetWeights()</span></code></a></li>
+<li><strong>length_dependent</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; As in <a class="reference internal" href="#promod3.modelling.ScoringWeights.GetWeights" title="promod3.modelling.ScoringWeights.GetWeights"><code class="xref py py-meth docutils literal"><span class="pre">GetWeights()</span></code></a></li>
+<li><strong>loop_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; As in <a class="reference internal" href="#promod3.modelling.ScoringWeights.GetWeights" title="promod3.modelling.ScoringWeights.GetWeights"><code class="xref py py-meth docutils literal"><span class="pre">GetWeights()</span></code></a></li>
+</ul>
+</td>
 </tr>
 </tbody>
 </table>
@@ -960,93 +998,92 @@ gap for a model. This shows the combined usage of <a class="reference internal"
 keep a consistent modelling environment, <a class="reference internal" href="#promod3.modelling.LoopCandidates" title="promod3.modelling.LoopCandidates"><code class="xref py py-class docutils literal"><span class="pre">LoopCandidates</span></code></a> with its
 scoring routines, <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> for keeping track of scores and
 <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> to combine scores:</p>
-<div class="highlight-python"><div class="highlight"><pre><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</span> <span class="kn">import</span> <span class="n">modelling</span><span class="p">,</span> <span class="n">loop</span>
-
-<span class="c"># setup raw model</span>
-<span class="n">tpl</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="s">&#39;data/1crn_cut.pdb&#39;</span><span class="p">)</span>
-<span class="n">seq_trg</span> <span class="o">=</span> <span class="s">&#39;TTCCPSIVARSNFNVCRLPGTPEAICATYTGCIIIPGATCPGDYAN&#39;</span>
-<span class="n">seq_tpl</span> <span class="o">=</span> <span class="s">&#39;TTCCPSIVARSNFNVCRLPGTPEA------GCIIIPGATCPGDYAN&#39;</span>
-<span class="n">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="s">&#39;trg&#39;</span><span class="p">,</span> <span class="n">seq_trg</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="s">&#39;tpl&#39;</span><span class="p">,</span> <span class="n">seq_tpl</span><span class="p">))</span>
+<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="p">,</span> <span class="n">seq</span>
+<span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">modelling</span><span class="p">,</span> <span class="n">loop</span>
+
+<span class="c1"># setup raw model</span>
+<span class="n">tpl</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="s1">&#39;data/1crn_cut.pdb&#39;</span><span class="p">)</span>
+<span class="n">seq_trg</span> <span class="o">=</span> <span class="s1">&#39;TTCCPSIVARSNFNVCRLPGTPEAICATYTGCIIIPGATCPGDYAN&#39;</span>
+<span class="n">seq_tpl</span> <span class="o">=</span> <span class="s1">&#39;TTCCPSIVARSNFNVCRLPGTPEA------GCIIIPGATCPGDYAN&#39;</span>
+<span class="n">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="s1">&#39;trg&#39;</span><span class="p">,</span> <span class="n">seq_trg</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="s1">&#39;tpl&#39;</span><span class="p">,</span> <span class="n">seq_tpl</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="mi">1</span><span class="p">,</span> <span class="n">tpl</span><span class="o">.</span><span class="n">CreateFullView</span><span class="p">())</span>
 <span class="n">mhandle</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">BuildRawModel</span><span class="p">(</span><span class="n">aln</span><span class="p">)</span>
-<span class="k">print</span><span class="p">(</span><span class="s">&quot;Number of gaps in raw model: </span><span class="si">%d</span><span class="s">&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="nb">print</span><span class="p">(</span><span class="s2">&quot;Number of gaps in raw model: </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="c"># setup default scorers for modelling handle</span>
+<span class="c1"># setup default scorers for modelling handle</span>
 <span class="n">modelling</span><span class="o">.</span><span class="n">SetupDefaultBackboneScoring</span><span class="p">(</span><span class="n">mhandle</span><span class="p">)</span>
 <span class="n">modelling</span><span class="o">.</span><span class="n">SetupDefaultAllAtomScoring</span><span class="p">(</span><span class="n">mhandle</span><span class="p">)</span>
 
-<span class="c"># setup databases</span>
+<span class="c1"># setup databases</span>
 <span class="n">frag_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="c"># get data for gap to close</span>
+<span class="c1"># get data for gap to close</span>
 <span class="n">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="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">Copy</span><span class="p">()</span>
-<span class="k">print</span><span class="p">(</span><span class="s">&quot;Gap to close: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">gap</span><span class="p">))</span>
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Gap to close: </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</span><span class="p">))</span>
 <span class="n">n_stem</span> <span class="o">=</span> <span class="n">gap</span><span class="o">.</span><span class="n">before</span>
 <span class="n">c_stem</span> <span class="o">=</span> <span class="n">gap</span><span class="o">.</span><span class="n">after</span>
 <span class="n">start_resnum</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="n">start_idx</span> <span class="o">=</span> <span class="n">start_resnum</span> <span class="o">-</span> <span class="mi">1</span>   <span class="c"># res. num. starts at 1</span>
+<span class="n">start_idx</span> <span class="o">=</span> <span class="n">start_resnum</span> <span class="o">-</span> <span class="mi">1</span>   <span class="c1"># res. num. starts at 1</span>
 
-<span class="c"># get loop candidates from FragDB</span>
+<span class="c1"># get loop candidates from FragDB</span>
 <span class="n">candidates</span> <span class="o">=</span> <span class="n">modelling</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">gap</span><span class="o">.</span><span class="n">full_seq</span><span class="p">,</span> <span class="n">frag_db</span><span class="p">,</span> <span class="n">structure_db</span><span class="p">)</span>
-<span class="k">print</span><span class="p">(</span><span class="s">&quot;Number of loop candidates: </span><span class="si">%d</span><span class="s">&quot;</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="nb">print</span><span class="p">(</span><span class="s2">&quot;Number of loop candidates: </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">candidates</span><span class="p">))</span>
 
-<span class="c"># all scores will be kept in a score container which we update</span>
+<span class="c1"># all scores will be kept in a score container which we update</span>
 <span class="n">all_scores</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">ScoreContainer</span><span class="p">()</span>
-<span class="c"># the keys used to identify scores are globally defined</span>
-<span class="k">print</span><span class="p">(</span><span class="s">&quot;Stem RMSD key = &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span> \
+<span class="c1"># the keys used to identify scores are globally defined</span>
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Stem RMSD key = &#39;</span><span class="si">%s</span><span class="s2">&#39;&quot;</span> \
       <span class="o">%</span> <span class="n">modelling</span><span class="o">.</span><span class="n">ScoringWeights</span><span class="o">.</span><span class="n">GetStemRMSDsKey</span><span class="p">())</span>
-<span class="k">print</span><span class="p">(</span><span class="s">&quot;Profile keys = [&#39;</span><span class="si">%s</span><span class="s">&#39;, &#39;</span><span class="si">%s</span><span class="s">&#39;]&quot;</span> \
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Profile keys = [&#39;</span><span class="si">%s</span><span class="s2">&#39;, &#39;</span><span class="si">%s</span><span class="s2">&#39;]&quot;</span> \
       <span class="o">%</span> <span class="p">(</span><span class="n">modelling</span><span class="o">.</span><span class="n">ScoringWeights</span><span class="o">.</span><span class="n">GetSequenceProfileScoresKey</span><span class="p">(),</span>
          <span class="n">modelling</span><span class="o">.</span><span class="n">ScoringWeights</span><span class="o">.</span><span class="n">GetStructureProfileScoresKey</span><span class="p">()))</span>
-<span class="k">print</span><span class="p">(</span><span class="s">&quot;Backbone scoring keys = </span><span class="si">%s</span><span class="s">&quot;</span> \
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Backbone scoring keys = </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">modelling</span><span class="o">.</span><span class="n">ScoringWeights</span><span class="o">.</span><span class="n">GetBackboneScoringKeys</span><span class="p">()))</span>
-<span class="k">print</span><span class="p">(</span><span class="s">&quot;All atom scoring keys = </span><span class="si">%s</span><span class="s">&quot;</span> \
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;All atom scoring keys = </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">modelling</span><span class="o">.</span><span class="n">ScoringWeights</span><span class="o">.</span><span class="n">GetAllAtomScoringKeys</span><span class="p">()))</span>
 
-<span class="c"># get stem RMSDs for each candidate (i.e. how well does it fit?)</span>
-<span class="c"># -&gt; this must be done before CCD to be meaningful</span>
+<span class="c1"># get stem RMSDs for each candidate (i.e. how well does it fit?)</span>
+<span class="c1"># -&gt; this must be done before CCD to be meaningful</span>
 <span class="n">candidates</span><span class="o">.</span><span class="n">CalculateStemRMSDs</span><span class="p">(</span><span class="n">all_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="c"># close the candidates with CCD</span>
+<span class="c1"># close the candidates with CCD</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">print</span><span class="p">(</span><span class="s">&quot;Number of closed loop candidates: </span><span class="si">%d</span><span class="s">&quot;</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="nb">print</span><span class="p">(</span><span class="s2">&quot;Number of closed loop candidates: </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">candidates</span><span class="p">))</span>
 
-<span class="c"># get subset of previously computed scores</span>
+<span class="c1"># get subset of previously computed scores</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">orig_indices</span><span class="p">)</span>
 
-<span class="c"># add profile scores (needs profile for target sequence)</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="s">&quot;data/1CRNA.hhm&quot;</span><span class="p">)</span>
+<span class="c1"># add profile scores (needs profile for target sequence)</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="s2">&quot;data/1CRNA.hhm&quot;</span><span class="p">)</span>
 <span class="n">candidates</span><span class="o">.</span><span class="n">CalculateSequenceProfileScores</span><span class="p">(</span><span class="n">all_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_idx</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">all_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_idx</span><span class="p">)</span>
-<span class="c"># add backbone scores</span>
-<span class="n">scorer</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">backbone_scorer</span>
-<span class="n">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">scorer</span><span class="p">,</span> <span class="n">start_resnum</span><span class="p">)</span>
-<span class="c"># add all atom scores</span>
+<span class="c1"># add backbone scores</span>
+<span class="n">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="c1"># add all atom scores</span>
 <span class="n">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="c"># use default weights to combine scores</span>
-<span class="n">weights</span> <span class="o">=</span> <span class="n">modelling</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="o">=</span><span class="bp">True</span><span class="p">,</span>
-                                              <span class="n">with_aa</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<span class="c1"># use default weights to combine scores</span>
+<span class="n">weights</span> <span class="o">=</span> <span class="n">modelling</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="o">=</span><span class="kc">True</span><span class="p">,</span>
+                                              <span class="n">with_aa</span><span class="o">=</span><span class="kc">True</span><span class="p">)</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="c"># rank them (best = lowest &quot;score&quot;)</span>
+<span class="c1"># rank them (best = lowest &quot;score&quot;)</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">scores</span><span class="p">)])</span>
-<span class="k">print</span><span class="p">(</span><span class="s">&quot;Ranked candidates: score, index&quot;</span><span class="p">)</span>
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Ranked candidates: score, index&quot;</span><span class="p">)</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="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%g</span><span class="s">, </span><span class="si">%d</span><span class="s">&quot;</span> <span class="o">%</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="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%g</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="n">v</span><span class="p">,</span><span class="n">i</span><span class="p">))</span>
 
-<span class="c"># insert best into model, update scorers and clear gaps</span>
+<span class="c1"># insert best into model, update scorers and clear gaps</span>
 <span class="n">best_candidate</span> <span class="o">=</span> <span class="n">candidates</span><span class="p">[</span><span class="n">arg_sorted_scores</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]]</span>
 <span class="n">modelling</span><span class="o">.</span><span class="n">InsertLoopClearGaps</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">best_candidate</span><span class="p">,</span> <span class="n">gap</span><span class="p">)</span>
-<span class="k">print</span><span class="p">(</span><span class="s">&quot;Number of gaps in closed model: </span><span class="si">%d</span><span class="s">&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="n">io</span><span class="o">.</span><span class="n">SavePDB</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="s">&quot;model.pdb&quot;</span><span class="p">)</span>
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Number of gaps in closed model: </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="n">io</span><span class="o">.</span><span class="n">SavePDB</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="s2">&quot;model.pdb&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
 </div>
@@ -1095,9 +1132,6 @@ scoring routines, <a class="reference internal" href="#promod3.modelling.ScoreCo
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -1108,8 +1142,8 @@ scoring routines, <a class="reference internal" href="#promod3.modelling.ScoreCo
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/modelling/loop_candidates.txt"
diff --git a/doc/html/modelling/loop_closing.html b/doc/html/modelling/loop_closing.html
index 6c740a42b4a178d4631dec8b11877fdf935647b4..855a9c19766f437ec7e4b9163396c9abfdfab5f0 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.1.0 documentation</title>
+    <title>Fitting Loops Into Gaps &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -81,11 +83,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -122,8 +124,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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>
@@ -282,7 +284,11 @@ should be kept rigid during relaxation.</li>
 <dl class="method">
 <dt id="promod3.modelling.BackboneRelaxer.Run">
 <code class="descname">Run</code><span class="sig-paren">(</span><em>bb_list</em>, <em>steps=100</em>, <em>stop_criterion=0.01</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.BackboneRelaxer.Run" title="Permalink to this definition">¶</a></dt>
-<dd><p>Performs steepest descent on given BackboneList.</p>
+<dd><p>Performs steepest descent on given BackboneList. The function possibly fails
+if there are particles (almost) on top of each other, resulting in NaN
+positions in the OpenMM system. The positions of <strong>bb_list</strong> are not touched
+in this case and the function returns an infinit potential energy.
+In Python you can check for that with float(&#8220;inf&#8221;).</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -296,7 +302,7 @@ relaxation aborts.</li>
 </ul>
 </td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Forcefield energy upon relaxation</p>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Forcefield energy upon relaxation, infinity in case of OpenMM Error</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://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></p>
@@ -320,7 +326,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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>
@@ -342,7 +348,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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>
@@ -365,7 +371,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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>
@@ -387,7 +393,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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>
@@ -409,7 +415,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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>
@@ -464,33 +470,33 @@ means no cutoff.</td>
 <a class="reference internal" href="sidechain_reconstruction.html#promod3.modelling.SidechainReconstructor" title="promod3.modelling.SidechainReconstructor"><code class="xref py py-class docutils literal"><span class="pre">SidechainReconstructor</span></code></a>, it may be desired to
 quickly relax the loop. The <a class="reference internal" href="#promod3.modelling.AllAtomRelaxer" title="promod3.modelling.AllAtomRelaxer"><code class="xref py py-class docutils literal"><span class="pre">AllAtomRelaxer</span></code></a> class takes care of that.</p>
 <p>Example usage:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">io</span>
-<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">modelling</span><span class="p">,</span> <span class="n">loop</span>
+<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">promod3</span> <span class="k">import</span> <span class="n">modelling</span><span class="p">,</span> <span class="n">loop</span>
 
-<span class="c"># load example (has res. numbering starting at 1)</span>
-<span class="n">prot</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="s">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
+<span class="c1"># load example (has res. numbering starting at 1)</span>
+<span class="n">prot</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="s1">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
 <span class="n">res_list</span> <span class="o">=</span> <span class="n">prot</span><span class="o">.</span><span class="n">residues</span>
-<span class="n">seqres_str</span> <span class="o">=</span> <span class="s">&#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">res_list</span><span class="p">])</span>
+<span class="n">seqres_str</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">res_list</span><span class="p">])</span>
 
-<span class="c"># initialize AllAtom environment and sidechain reconstructor</span>
+<span class="c1"># initialize AllAtom environment and sidechain reconstructor</span>
 <span class="n">env</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">AllAtomEnv</span><span class="p">(</span><span class="n">seqres_str</span><span class="p">)</span>
 <span class="n">env</span><span class="o">.</span><span class="n">SetInitialEnvironment</span><span class="p">(</span><span class="n">prot</span><span class="p">)</span>
 <span class="n">sc_rec</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">SidechainReconstructor</span><span class="p">()</span>
 <span class="n">sc_rec</span><span class="o">.</span><span class="n">AttachEnvironment</span><span class="p">(</span><span class="n">env</span><span class="p">)</span>
 
-<span class="c"># &quot;reconstruct&quot; subset (res. num. 6..10) -&gt; sidechains kept here</span>
+<span class="c1"># &quot;reconstruct&quot; subset (res. num. 6..10) -&gt; sidechains kept here</span>
 <span class="n">sc_result</span> <span class="o">=</span> <span class="n">sc_rec</span><span class="o">.</span><span class="n">Reconstruct</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
-<span class="c"># setup sys creator</span>
+<span class="c1"># setup sys creator</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="n">mm_sys</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">MmSystemCreator</span><span class="p">(</span><span class="n">ff_lookup</span><span class="p">)</span>
 <span class="n">relaxer</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">AllAtomRelaxer</span><span class="p">(</span><span class="n">sc_result</span><span class="p">,</span> <span class="n">mm_sys</span><span class="p">)</span>
-<span class="c"># relax loop</span>
+<span class="c1"># relax loop</span>
 <span class="n">pot_e</span> <span class="o">=</span> <span class="n">relaxer</span><span class="o">.</span><span class="n">Run</span><span class="p">(</span><span class="n">sc_result</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="k">print</span> <span class="s">&quot;Potential energy after: </span><span class="si">%g</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">pot_e</span>
-<span class="c"># update environment with solution</span>
+<span class="nb">print</span> <span class="s2">&quot;Potential energy after: </span><span class="si">%g</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">pot_e</span>
+<span class="c1"># update environment with solution</span>
 <span class="n">env</span><span class="o">.</span><span class="n">SetEnvironment</span><span class="p">(</span><span class="n">sc_result</span><span class="o">.</span><span class="n">env_pos</span><span class="p">)</span>
-<span class="c"># store all positions of environment</span>
-<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">env</span><span class="o">.</span><span class="n">GetAllAtomPositions</span><span class="p">()</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="s">&#39;aa_relax_test.pdb&#39;</span><span class="p">)</span>
+<span class="c1"># store all positions of environment</span>
+<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">env</span><span class="o">.</span><span class="n">GetAllAtomPositions</span><span class="p">()</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="s1">&#39;aa_relax_test.pdb&#39;</span><span class="p">)</span>
 </pre></div>
 </div>
 <dl class="class">
@@ -515,7 +521,11 @@ system creator, which takes care of generating a simulation object.</p>
 <dt id="promod3.modelling.AllAtomRelaxer.Run">
 <code class="descname">Run</code><span class="sig-paren">(</span><em>sc_data</em>, <em>steps=100</em>, <em>stop_criterion=0.01</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.AllAtomRelaxer.Run" title="Permalink to this definition">¶</a></dt>
 <dd><p>Performs steepest descent for this system and writes updated positions into
-<em>sc_data.env_pos.all_pos</em>.</p>
+<em>sc_data.env_pos.all_pos</em>. The function possibly fails
+if there are particles (almost) on top of each other, resulting in NaN
+positions in the OpenMM system. The positions of <em>sc_data.env_pos.all_pos</em>
+are not touched in this case and the function returns an infinit potential
+energy. In Python you can check for that with float(&#8220;inf&#8221;).</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -528,7 +538,7 @@ that threshold, the relaxation aborts.</li>
 </ul>
 </td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Potential energy after relaxation</p>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Potential energy after relaxation, infinity in case of OpenMM Error</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://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></p>
@@ -638,9 +648,6 @@ the one given in the constructor.</td>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -651,8 +658,8 @@ the one given in the constructor.</td>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/modelling/loop_closing.txt"
diff --git a/doc/html/modelling/model_checking.html b/doc/html/modelling/model_checking.html
index ef3d3396534f0b22419b019bf9cb10aee814dc23..09e289a764b2ca1f29fb91b4b6340b7a7d009a0e 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.1.0 documentation</title>
+    <title>Model Checking &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -55,14 +57,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a> or <a class="reference external" href="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">Vec3</span></code></a>),
-plane (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/composite/#ost.geom.Plane" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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.7.1)"><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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ResidueHandle</span></code></a>).</td>
 </tr>
 </tbody>
 </table>
@@ -78,11 +80,11 @@ residue (<a class="reference external" href="http://www.openstructure.org/docs/d
 <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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a> or <a class="reference external" href="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ResidueHandle</span></code></a>) which
 have a punched ring.</p>
 </td>
 </tr>
@@ -101,7 +103,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a> or <a class="reference external" href="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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>
@@ -126,7 +128,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -152,9 +154,9 @@ See <a class="reference internal" href="#promod3.modelling.FilterCandidates" tit
 <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>
 <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 class="n">clashscore</span> <span class="o">=</span> <span class="n">result</span><span class="p">[</span><span class="s">&quot;Clashscore&quot;</span><span class="p">]</span>
-<span class="n">rota_out</span> <span class="o">=</span> <span class="n">result</span><span class="p">[</span><span class="s">&quot;Rotamer outliers&quot;</span><span class="p">]</span>
-<span class="n">rama_iffy</span> <span class="o">=</span> <span class="mf">100.</span> <span class="o">-</span> <span class="n">result</span><span class="p">[</span><span class="s">&quot;Ramachandran favored&quot;</span><span class="p">]</span>
+<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>
+<span class="n">rota_out</span> <span class="o">=</span> <span class="n">result</span><span class="p">[</span><span class="s2">&quot;Rotamer outliers&quot;</span><span class="p">]</span>
+<span class="n">rama_iffy</span> <span class="o">=</span> <span class="mf">100.</span> <span class="o">-</span> <span class="n">result</span><span class="p">[</span><span class="s2">&quot;Ramachandran favored&quot;</span><span class="p">]</span>
 <span class="n">mpscore</span> <span class="o">=</span> <span class="p">((</span> <span class="mf">0.426</span> <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">clashscore</span><span class="p">)</span> <span class="p">)</span> <span class="o">+</span>
          <span class="p">(</span> <span class="mf">0.33</span> <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">rota_out</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span> <span class="p">)</span> <span class="o">+</span>
          <span class="p">(</span> <span class="mf">0.25</span> <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">rama_iffy</span> <span class="o">-</span> <span class="mi">2</span><span class="p">))</span> <span class="p">))</span> <span class="o">+</span> <span class="mf">0.5</span>
@@ -191,7 +193,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="http://www.openstructure.org/docs/dev/base/settings/#ost.settings.FileNotFound" title="(in OpenStructure v1.6.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/dev/base/settings/#ost.settings.FileNotFound" title="(in OpenStructure v1.7.1)"><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>
@@ -208,7 +210,7 @@ executable is not found.</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>ost_ent</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -273,9 +275,6 @@ executable is not found.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -286,8 +285,8 @@ executable is not found.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/modelling/model_checking.txt"
diff --git a/doc/html/modelling/monte_carlo.html b/doc/html/modelling/monte_carlo.html
index c3239cb82b334f9c53cda4c07dfd39faff17e065..699ce4a0b55d40d6f04e0ac58e79ee5df88f86fb 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.1.0 documentation</title>
+    <title>Generating Loops De Novo &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -46,66 +48,67 @@ novo structure candidates for loops or N-/C-Termini. Every iteration of the
 sampling process consists basically of four steps and we define objects for
 each step:</p>
 <ul class="simple">
-<li><a class="reference internal" href="#mc-sampler-object"><span>Sampler Object</span></a>: Propose new conformation</li>
-<li><a class="reference internal" href="#mc-closer-object"><span>Closer Object</span></a>: Adapt new conformation to the environment</li>
-<li><a class="reference internal" href="#mc-scorer-object"><span>Scorer Object</span></a>: Score the new conformation</li>
-<li><a class="reference internal" href="#mc-cooler-object"><span>Cooler Object</span></a>: Accept/Reject new conformation based on the score and
+<li><a class="reference internal" href="#mc-sampler-object"><span class="std std-ref">Sampler Object</span></a>: Propose new conformation</li>
+<li><a class="reference internal" href="#mc-closer-object"><span class="std std-ref">Closer Object</span></a>: Adapt new conformation to the environment</li>
+<li><a class="reference internal" href="#mc-scorer-object"><span class="std std-ref">Scorer Object</span></a>: Score the new conformation</li>
+<li><a class="reference internal" href="#mc-cooler-object"><span class="std std-ref">Cooler Object</span></a>: Accept/Reject new conformation based on the score and
 a temperature controlled Metropolis criterion</li>
 </ul>
 <p>These steps can be arbitrarily combined to generate custom Monte Carlo sampling
 pipelines. This combination either happens manually or by using the convenient
 <a class="reference internal" href="#promod3.modelling.SampleMonteCarlo" title="promod3.modelling.SampleMonteCarlo"><code class="xref py py-func docutils literal"><span class="pre">SampleMonteCarlo()</span></code></a> function. For example, here we show how to apply Monte
 Carlo sampling to the N-terminal part of crambin:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">io</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">scoring</span><span class="p">,</span> <span class="n">modelling</span>
-<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
+<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">promod3</span> <span class="k">import</span> <span class="n">loop</span><span class="p">,</span> <span class="n">scoring</span><span class="p">,</span> <span class="n">modelling</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
 
-<span class="c"># setup protein</span>
-<span class="n">prot</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="s">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
+<span class="c1"># setup protein</span>
+<span class="n">prot</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="s1">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
 
 <span class="n">chain_index</span> <span class="o">=</span> <span class="mi">0</span>
 <span class="n">start_resnum</span> <span class="o">=</span> <span class="mi">1</span>
 <span class="n">terminal_len</span> <span class="o">=</span> <span class="mi">8</span>
 
-<span class="n">seqres</span> <span class="o">=</span> <span class="s">&#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">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">])</span>
+<span class="n">seqres</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">prot</span><span class="o">.</span><span class="n">residues</span><span class="p">])</span>
 <span class="n">terminal_seqres</span> <span class="o">=</span> <span class="n">seqres</span><span class="p">[:</span><span class="n">terminal_len</span><span class="p">]</span>
 
-<span class="c"># setup mc_sampler</span>
+<span class="c1"># setup mc_sampler</span>
 <span class="n">torsion_sampler</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">LoadTorsionSampler</span><span class="p">()</span>
 <span class="n">mc_sampler</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">SoftSampler</span><span class="p">(</span><span class="n">terminal_seqres</span><span class="p">,</span> <span class="n">torsion_sampler</span><span class="p">,</span>
                                    <span class="mf">10.0</span> <span class="o">/</span> <span class="mi">180</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="p">)</span>
 
-<span class="c"># setup mc_closer</span>
+<span class="c1"># setup mc_closer</span>
 <span class="n">mc_closer</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">NTerminalCloser</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">terminal_len</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
 
-<span class="c"># setup backbone scorer with clash and cbeta scoring</span>
+<span class="c1"># setup backbone scorer with clash and cbeta scoring</span>
 <span class="n">score_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">seqres</span><span class="p">)</span>
 <span class="n">score_env</span><span class="o">.</span><span class="n">SetInitialEnvironment</span><span class="p">(</span><span class="n">prot</span><span class="p">)</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</span><span class="p">[</span><span class="s">&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="s">&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;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;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="o">.</span><span class="n">AttachEnvironment</span><span class="p">(</span><span class="n">score_env</span><span class="p">)</span>
 
-<span class="c"># set up mc_scorer</span>
+<span class="c1"># set up mc_scorer</span>
 <span class="n">weights</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">()</span>
-<span class="n">weights</span><span class="p">[</span><span class="s">&quot;cbeta&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mf">10.0</span>
-<span class="n">weights</span><span class="p">[</span><span class="s">&quot;clash&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.1</span>
-<span class="n">mc_scorer</span> <span class="o">=</span> <span class="n">modelling</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">start_resnum</span><span class="p">,</span>
+<span class="n">weights</span><span class="p">[</span><span class="s2">&quot;cbeta&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mf">10.0</span>
+<span class="n">weights</span><span class="p">[</span><span class="s2">&quot;clash&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.1</span>
+<span class="n">mc_scorer</span> <span class="o">=</span> <span class="n">modelling</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">score_env</span><span class="p">,</span>
+                                   <span class="n">start_resnum</span><span class="p">,</span> <span class="n">terminal_len</span><span class="p">,</span>
                                    <span class="n">chain_index</span><span class="p">,</span> <span class="n">weights</span><span class="p">)</span>
 
-<span class="c"># setup mc_cooler</span>
+<span class="c1"># setup mc_cooler</span>
 <span class="n">mc_cooler</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">ExponentialCooler</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mf">0.9</span><span class="p">)</span>
 
-<span class="c"># create BackboneList from n-terminus</span>
+<span class="c1"># create BackboneList from n-terminus</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">terminal_seqres</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">terminal_len</span><span class="p">])</span>
 
-<span class="c"># shake it!</span>
+<span class="c1"># shake it!</span>
 <span class="n">modelling</span><span class="o">.</span><span class="n">SampleMonteCarlo</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="mi">10000</span><span class="p">,</span> <span class="n">bb_list</span><span class="p">,</span> <span class="bp">False</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+                           <span class="n">mc_cooler</span><span class="p">,</span> <span class="mi">10000</span><span class="p">,</span> <span class="n">bb_list</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
 
-<span class="c"># save down the result</span>
-<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">bb_list</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="s">&quot;sampled_frag.pdb&quot;</span><span class="p">)</span>
+<span class="c1"># save down the result</span>
+<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">bb_list</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="s2">&quot;sampled_frag.pdb&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
 <dl class="method">
@@ -124,12 +127,12 @@ ever encountered or the last accepted proposal.</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>sampler</strong> (<a class="reference internal" href="#mc-sampler-object"><span>Sampler Object</span></a>) &#8211; Sampler object capable of initializing and altering
+<li><strong>sampler</strong> (<a class="reference internal" href="#mc-sampler-object"><span class="std std-ref">Sampler Object</span></a>) &#8211; Sampler object capable of initializing and altering
 conformations.</li>
-<li><strong>closer</strong> (<a class="reference internal" href="#mc-closer-object"><span>Closer Object</span></a>) &#8211; Closer object to adapt a new conformation to
+<li><strong>closer</strong> (<a class="reference internal" href="#mc-closer-object"><span class="std std-ref">Closer Object</span></a>) &#8211; Closer object to adapt a new conformation to
 the environment.</li>
-<li><strong>scorer</strong> (<a class="reference internal" href="#mc-scorer-object"><span>Scorer Object</span></a>) &#8211; Scorer object to score new loop conformations.</li>
-<li><strong>cooler</strong> (<a class="reference internal" href="#mc-cooler-object"><span>Cooler Object</span></a>) &#8211; Cooler object to control the temperature of the
+<li><strong>scorer</strong> (<a class="reference internal" href="#mc-scorer-object"><span class="std std-ref">Scorer Object</span></a>) &#8211; Scorer object to score new loop conformations.</li>
+<li><strong>cooler</strong> (<a class="reference internal" href="#mc-cooler-object"><span class="std std-ref">Cooler Object</span></a>) &#8211; Cooler object to control the temperature of the
 Monte Carlo trajectory.</li>
 <li><strong>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; Number of Monte Carlo iterations to be performed.</li>
 <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; The chosen conformation gets stored here.</li>
@@ -410,9 +413,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -459,9 +462,9 @@ the stems given by the closer.</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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -501,7 +504,7 @@ 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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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> &#8211; Defining stem positions the closed conformation should
 adapt.</li>
@@ -542,7 +545,7 @@ 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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">Whether closing was successful</td>
@@ -560,7 +563,7 @@ 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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">Whether closing was successful</td>
@@ -575,12 +578,22 @@ adapt.</td>
 <p>The scorer asses a proposed conformation and are intended to return a pseudo
 energy, the lower the better.</p>
 <dl class="class">
-<dt id="promod3.modelling.LinearScorer">
-<em class="property">class </em><code class="descclassname">promod3.modelling.</code><code class="descname">LinearScorer</code><span class="sig-paren">(</span><em>scorer</em>, <em>start_resnum</em>, <em>chain_idx</em>, <em>linear_weights</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.LinearScorer" title="Permalink to this definition">¶</a></dt>
+<dt>
+<code class="descname">LinearScorer(scorer, scorer_env, start_resnum, num_residues,</code></dt>
+<dt>
+<code class="descname">chain_idx, linear_weights)</code></dt>
 <dd><p>The LinearScorer allows to combine the scores available from
 <a class="reference internal" href="../scoring/backbone_scorers.html#promod3.scoring.BackboneOverallScorer" title="promod3.scoring.BackboneOverallScorer"><code class="xref py py-class docutils literal"><span class="pre">BackboneOverallScorer</span></code></a> in a linear manner. See
 <a class="reference internal" href="../scoring/backbone_scorers.html#promod3.scoring.BackboneOverallScorer.CalculateLinearCombination" title="promod3.scoring.BackboneOverallScorer.CalculateLinearCombination"><code class="xref py py-meth docutils literal"><span class="pre">CalculateLinearCombination()</span></code></a> for a
 detailed description of the arguments.</p>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">The provided <em>scorer_env</em> will be altered in every
+<a class="reference internal" href="#promod3.modelling.GetScore" title="promod3.modelling.GetScore"><code class="xref py py-func docutils literal"><span class="pre">GetScore()</span></code></a> call.
+You might consider the Stash / Pop mechanism of the
+<a class="reference internal" href="../scoring/backbone_score_env.html#promod3.scoring.BackboneScoreEnv" title="promod3.scoring.BackboneScoreEnv"><code class="xref py py-class docutils literal"><span class="pre">BackboneScoreEnv</span></code></a> to restore to the
+original state once the sampling is done.</p>
+</div>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -588,7 +601,9 @@ detailed description of the arguments.</p>
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>scorer</strong> (<a class="reference internal" href="../scoring/backbone_scorers.html#promod3.scoring.BackboneOverallScorer" title="promod3.scoring.BackboneOverallScorer"><code class="xref py py-class docutils literal"><span class="pre">BackboneOverallScorer</span></code></a>) &#8211; Scorer Object with set environment for the particular loop
 modelling problem.</li>
+<li><strong>scorer_env</strong> (<a class="reference internal" href="../scoring/backbone_score_env.html#promod3.scoring.BackboneScoreEnv" title="promod3.scoring.BackboneScoreEnv"><code class="xref py py-class docutils literal"><span class="pre">BackboneScoreEnv</span></code></a>) &#8211; The environment that is linked to the <em>scorer</em></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; Res. number defining the position in the SEQRES.</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; Number of residues to score</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 loop(s) belong to.</li>
 <li><strong>linear_weights</strong> (<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> (keys: <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>,
 values: <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; Weights for each desired scorer.</li>
@@ -602,8 +617,8 @@ which no scorer exists</p>
 </tbody>
 </table>
 <dl class="method">
-<dt id="promod3.modelling.LinearScorer.GetScore">
-<code class="descname">GetScore</code><span class="sig-paren">(</span><em>bb_list</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.LinearScorer.GetScore" title="Permalink to this definition">¶</a></dt>
+<dt id="promod3.modelling.GetScore">
+<code class="descclassname">promod3.modelling.</code><code class="descname">GetScore</code><span class="sig-paren">(</span><em>bb_list</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.modelling.GetScore" 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" />
@@ -713,9 +728,6 @@ the returned temperature gets multiplied by the <em>cooling_factor</em>.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -726,8 +738,8 @@ the returned temperature gets multiplied by the <em>cooling_factor</em>.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/modelling/monte_carlo.txt"
diff --git a/doc/html/modelling/pipeline.html b/doc/html/modelling/pipeline.html
index fdf455dc507efbf870475eb13814ee084bf355c3..b6f656ecba8cbd3f151e1bbe9622165265c5f3ec 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.1.0 documentation</title>
+    <title>Modelling Pipeline &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -58,41 +60,41 @@ heuristics)</li>
 with the <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> function. If you want to run and tweak the
 internal steps, you can start with the  following code and adapt it to your
 purposes:</p>
-<div class="highlight-python" id="modelling-steps-example"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">io</span>
-<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">modelling</span><span class="p">,</span> <span class="n">loop</span>
+<div class="highlight-default" id="modelling-steps-example"><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">promod3</span> <span class="k">import</span> <span class="n">modelling</span><span class="p">,</span> <span class="n">loop</span>
 
-<span class="c"># setup</span>
+<span class="c1"># setup</span>
 <span class="n">merge_distance</span> <span class="o">=</span> <span class="mi">4</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="c"># get raw model</span>
-<span class="n">tpl</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="s">&#39;data/1crn_cut.pdb&#39;</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="s">&#39;data/1crn.fasta&#39;</span><span class="p">)</span>
+<span class="c1"># get raw model</span>
+<span class="n">tpl</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="s1">&#39;data/1crn_cut.pdb&#39;</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="s1">&#39;data/1crn.fasta&#39;</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="mi">1</span><span class="p">,</span> <span class="n">tpl</span><span class="o">.</span><span class="n">CreateFullView</span><span class="p">())</span>
 <span class="n">mhandle</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">BuildRawModel</span><span class="p">(</span><span class="n">aln</span><span class="p">)</span>
 
-<span class="c"># we&#39;re not modelling termini</span>
+<span class="c1"># we&#39;re not modelling termini</span>
 <span class="n">modelling</span><span class="o">.</span><span class="n">RemoveTerminalGaps</span><span class="p">(</span><span class="n">mhandle</span><span class="p">)</span>
 
-<span class="c"># perform loop modelling to close all gaps</span>
+<span class="c1"># perform loop modelling to close all gaps</span>
 <span class="n">modelling</span><span class="o">.</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="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="c"># build sidechains</span>
+<span class="c1"># build sidechains</span>
 <span class="n">modelling</span><span class="o">.</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="c"># minimize energy of final model using molecular mechanics</span>
+<span class="c1"># minimize energy of final model using molecular mechanics</span>
 <span class="n">modelling</span><span class="o">.</span><span class="n">MinimizeModelEnergy</span><span class="p">(</span><span class="n">mhandle</span><span class="p">)</span>
 
-<span class="c"># check final model and report issues</span>
+<span class="c1"># check final model and report issues</span>
 <span class="n">modelling</span><span class="o">.</span><span class="n">CheckFinalModel</span><span class="p">(</span><span class="n">mhandle</span><span class="p">)</span>
 
-<span class="c"># extract final model</span>
+<span class="c1"># extract final model</span>
 <span class="n">final_model</span> <span class="o">=</span> <span class="n">mhandle</span><span class="o">.</span><span class="n">model</span>
-<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">final_model</span><span class="p">,</span> <span class="s">&#39;model.pdb&#39;</span><span class="p">)</span>
+<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">final_model</span><span class="p">,</span> <span class="s1">&#39;model.pdb&#39;</span><span class="p">)</span>
 </pre></div>
 </div>
 <div class="section" id="build-raw-modelling-handle">
@@ -115,7 +117,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">EntityHandle</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -141,13 +143,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.7.1)"><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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">SequenceList</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -156,7 +158,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.7.1)"><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
@@ -165,7 +167,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.ProfileHandle</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -319,7 +321,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityView" title="(in OpenStructure v1.7.1)"><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
@@ -347,7 +349,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.7.1)"><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
@@ -373,7 +375,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.AlignmentHandle.SetSequenceOffset" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.AlignmentHandle.SetSequenceOffset" title="(in OpenStructure v1.7.1)"><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>
@@ -393,7 +395,7 @@ the resulting model will always start its residue numbering at 1)</li>
 <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
-<a class="reference internal" href="#modelling-steps-example"><span>above</span></a>. If you wish to use your own
+<a class="reference internal" href="#modelling-steps-example"><span class="std std-ref">above</span></a>. If you wish to use your own
 pipeline, you can use that code as a starting point for your own custom
 modelling pipeline. For reproducibility, we recommend that you keep copies
 of custom pipelines.</p>
@@ -411,12 +413,12 @@ 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="http://www.openstructure.org/docs/dev/mol/mm/forcefield/#ost.mol.mm.LoadAMBERForcefield" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/mol/mm/forcefield/#ost.mol.mm.LoadCHARMMForcefield" title="(in OpenStructure v1.6.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/dev/mol/mm/forcefield/#ost.mol.mm.LoadAMBERForcefield" title="(in OpenStructure v1.7.1)"><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.7.1)"><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="http://www.openstructure.org/docs/dev/mol/mm/forcefield/#ost.mol.mm.Forcefield" title="(in OpenStructure v1.6.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/dev/mol/mm/forcefield/#ost.mol.mm.Forcefield" title="(in OpenStructure v1.7.1)"><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
@@ -427,7 +429,7 @@ existing parametrization are skipped.</li>
 <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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">Entity</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -449,10 +451,8 @@ The scorers added (with their respective keys) are:</p>
 <li>&#8220;reduced&#8221;: <a class="reference internal" href="../scoring/backbone_scorers.html#promod3.scoring.ReducedScorer" title="promod3.scoring.ReducedScorer"><code class="xref py py-class docutils literal"><span class="pre">ReducedScorer</span></code></a></li>
 <li>&#8220;clash&#8221;: <a class="reference internal" href="../scoring/backbone_scorers.html#promod3.scoring.ClashScorer" title="promod3.scoring.ClashScorer"><code class="xref py py-class docutils literal"><span class="pre">ClashScorer</span></code></a></li>
 <li>&#8220;hbond&#8221;: <a class="reference internal" href="../scoring/backbone_scorers.html#promod3.scoring.HBondScorer" title="promod3.scoring.HBondScorer"><code class="xref py py-class docutils literal"><span class="pre">HBondScorer</span></code></a></li>
-<li>&#8220;ss_agreement&#8221;: <a class="reference internal" href="../scoring/backbone_scorers.html#promod3.scoring.SSAgreementScorer" title="promod3.scoring.SSAgreementScorer"><code class="xref py py-class docutils literal"><span class="pre">SSAgreementScorer</span></code></a></li>
 <li>&#8220;torsion&#8221;: <a class="reference internal" href="../scoring/backbone_scorers.html#promod3.scoring.TorsionScorer" title="promod3.scoring.TorsionScorer"><code class="xref py py-class docutils literal"><span class="pre">TorsionScorer</span></code></a></li>
 <li>&#8220;pairwise&#8221;: <a class="reference internal" href="../scoring/backbone_scorers.html#promod3.scoring.PairwiseScorer" title="promod3.scoring.PairwiseScorer"><code class="xref py py-class docutils literal"><span class="pre">PairwiseScorer</span></code></a></li>
-<li>&#8220;density&#8221;: <a class="reference internal" href="../scoring/backbone_scorers.html#promod3.scoring.DensityScorer" title="promod3.scoring.DensityScorer"><code class="xref py py-class docutils literal"><span class="pre">DensityScorer</span></code></a></li>
 </ul>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -604,7 +604,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="http://www.openstructure.org/docs/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.6.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/dev/geom/mat/#ost.geom.Mat4" title="(in OpenStructure v1.7.1)"><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>
@@ -635,7 +635,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.ProfileHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -673,7 +673,7 @@ with seqres in <strong>mhandle</strong></p>
 
 <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><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="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>
 <dd><p>Tries to close all gaps in a model, except termini. It will go through
 following steps:</p>
 <ul class="simple">
@@ -713,6 +713,11 @@ gets executed.</li>
 processed</li>
 <li><strong>resnum_range</strong> (<code class="xref py py-class docutils literal"><span class="pre">tuple</span></code> containing two <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; If not None, only gaps within this resnum range get
 processed.</li>
+<li><strong>length_dep_weights</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; <a class="reference internal" href="loop_candidates.html#promod3.modelling.ScoringWeights" title="promod3.modelling.ScoringWeights"><code class="xref py py-class docutils literal"><span class="pre">ScoringWeights</span></code></a> provides different sets
+of weights that have been trained on different
+loop subsets. If this flag is true, the length
+dependent weights are used to close loops with
+database / Monte Carlo.</li>
 </ul>
 </td>
 </tr>
@@ -730,19 +735,19 @@ Before diving into the more demanding tasks in modeling, those may be closed
 already in the raw-model. After closure some checks are done to see if the
 solution is stereochemically sensible.</p>
 <p>Closed gaps are removed from <code class="xref py py-attr docutils literal"><span class="pre">mhandle.gaps</span></code>.</p>
-<div class="highlight-python"><div class="highlight"><pre><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</span> <span class="kn">import</span> <span class="n">modelling</span>
+<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="p">,</span> <span class="n">seq</span>
+<span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">modelling</span>
 
-<span class="c"># setup</span>
-<span class="n">tpl</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="s">&#39;data/gly.pdb&#39;</span><span class="p">)</span>
-<span class="n">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="s">&#39;trg&#39;</span><span class="p">,</span> <span class="s">&#39;GGG-GGG&#39;</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="s">&#39;tpl&#39;</span><span class="p">,</span> <span class="s">&#39;GGGAGGG&#39;</span><span class="p">))</span>
+<span class="c1"># setup</span>
+<span class="n">tpl</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="s1">&#39;data/gly.pdb&#39;</span><span class="p">)</span>
+<span class="n">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="s1">&#39;trg&#39;</span><span class="p">,</span> <span class="s1">&#39;GGG-GGG&#39;</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="s1">&#39;tpl&#39;</span><span class="p">,</span> <span class="s1">&#39;GGGAGGG&#39;</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="mi">1</span><span class="p">,</span> <span class="n">tpl</span><span class="o">.</span><span class="n">CreateFullView</span><span class="p">())</span>
 <span class="n">mhandle</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">BuildRawModel</span><span class="p">(</span><span class="n">aln</span><span class="p">)</span>
-<span class="c"># close small deletion</span>
-<span class="k">print</span> <span class="s">&#39;Number of gaps before: </span><span class="si">%d</span><span class="s">&#39;</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="c1"># close small deletion</span>
+<span class="nb">print</span> <span class="s1">&#39;Number of gaps before: </span><span class="si">%d</span><span class="s1">&#39;</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="n">modelling</span><span class="o">.</span><span class="n">CloseSmallDeletions</span><span class="p">(</span><span class="n">mhandle</span><span class="p">)</span>
-<span class="k">print</span> <span class="s">&#39;Number of gaps after: </span><span class="si">%d</span><span class="s">&#39;</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="nb">print</span> <span class="s1">&#39;Number of gaps after: </span><span class="si">%d</span><span class="s1">&#39;</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>
 </pre></div>
 </div>
 <table class="docutils field-list" frame="void" rules="none">
@@ -763,7 +768,8 @@ The gap is penalized according as
 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="http://www.openstructure.org/docs/dev/bindings/dssp/#module-ost.bindings.dssp" title="(in OpenStructure v1.6.0)"><code class="xref py py-mod docutils literal"><span class="pre">ost.bindings.dssp</span></code></a>).</li>
+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.7.1)"><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
@@ -796,21 +802,21 @@ stretch of original gaps and the deleted region. Original gaps will be
 removed. Stem residues count to the gap, so <strong>A-A-A</strong> has a distance of 0.</p>
 <p>IMPORTANT: we assume here that <em>mhandle</em> stores gaps sequentially.
 Non-sequential gaps are ignored!</p>
-<div class="highlight-python"><div class="highlight"><pre><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</span> <span class="kn">import</span> <span class="n">modelling</span>
+<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="p">,</span> <span class="n">seq</span>
+<span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">modelling</span>
 
-<span class="c"># setup</span>
-<span class="n">tpl</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="s">&#39;data/1crn_cut.pdb&#39;</span><span class="p">)</span>
-<span class="n">seq_trg</span> <span class="o">=</span> <span class="s">&#39;TTCCPSIVARSNFNVCRLPGTPEAICATGYTCIIIPGATCPGDYAN&#39;</span>
-<span class="n">seq_tpl</span> <span class="o">=</span> <span class="s">&#39;TTCCPSIVARSNFNVCRLPGTPEA----G--CIIIPGATCPGDYAN&#39;</span>
-<span class="n">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="s">&#39;trg&#39;</span><span class="p">,</span> <span class="n">seq_trg</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="s">&#39;tpl&#39;</span><span class="p">,</span> <span class="n">seq_tpl</span><span class="p">))</span>
+<span class="c1"># setup</span>
+<span class="n">tpl</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="s1">&#39;data/1crn_cut.pdb&#39;</span><span class="p">)</span>
+<span class="n">seq_trg</span> <span class="o">=</span> <span class="s1">&#39;TTCCPSIVARSNFNVCRLPGTPEAICATGYTCIIIPGATCPGDYAN&#39;</span>
+<span class="n">seq_tpl</span> <span class="o">=</span> <span class="s1">&#39;TTCCPSIVARSNFNVCRLPGTPEA----G--CIIIPGATCPGDYAN&#39;</span>
+<span class="n">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="s1">&#39;trg&#39;</span><span class="p">,</span> <span class="n">seq_trg</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="s1">&#39;tpl&#39;</span><span class="p">,</span> <span class="n">seq_tpl</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="mi">1</span><span class="p">,</span> <span class="n">tpl</span><span class="o">.</span><span class="n">CreateFullView</span><span class="p">())</span>
 <span class="n">mhandle</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">BuildRawModel</span><span class="p">(</span><span class="n">aln</span><span class="p">)</span>
-<span class="c"># merge gaps</span>
-<span class="k">print</span> <span class="s">&#39;Number of gaps before: </span><span class="si">%d</span><span class="s">&#39;</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="c1"># merge gaps</span>
+<span class="nb">print</span> <span class="s1">&#39;Number of gaps before: </span><span class="si">%d</span><span class="s1">&#39;</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="n">modelling</span><span class="o">.</span><span class="n">MergeGapsByDistance</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
-<span class="k">print</span> <span class="s">&#39;Number of gaps after: </span><span class="si">%d</span><span class="s">&#39;</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="nb">print</span> <span class="s1">&#39;Number of gaps after: </span><span class="si">%d</span><span class="s1">&#39;</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>
 </pre></div>
 </div>
 <table class="docutils field-list" frame="void" rules="none">
@@ -834,29 +840,29 @@ 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><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="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>
 <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
 residues.
 This function cannot fill gaps at C- or N-terminal.</p>
-<div class="highlight-python"><div class="highlight"><pre><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</span> <span class="kn">import</span> <span class="n">modelling</span><span class="p">,</span> <span class="n">loop</span>
+<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="p">,</span> <span class="n">seq</span>
+<span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">modelling</span><span class="p">,</span> <span class="n">loop</span>
 
-<span class="c"># setup</span>
-<span class="n">tpl</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="s">&#39;data/1crn_cut.pdb&#39;</span><span class="p">)</span>
-<span class="n">seq_trg</span> <span class="o">=</span> <span class="s">&#39;TTCCPSIVARSNFNVCRLPGTPEAICATYTGCIIIPGATCPGDYAN&#39;</span>
-<span class="n">seq_tpl</span> <span class="o">=</span> <span class="s">&#39;TTCCPSIVARSNFNVCRLPGTPEA------GCIIIPGATCPGDYAN&#39;</span>
-<span class="n">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="s">&#39;trg&#39;</span><span class="p">,</span> <span class="n">seq_trg</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="s">&#39;tpl&#39;</span><span class="p">,</span> <span class="n">seq_tpl</span><span class="p">))</span>
+<span class="c1"># setup</span>
+<span class="n">tpl</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="s1">&#39;data/1crn_cut.pdb&#39;</span><span class="p">)</span>
+<span class="n">seq_trg</span> <span class="o">=</span> <span class="s1">&#39;TTCCPSIVARSNFNVCRLPGTPEAICATYTGCIIIPGATCPGDYAN&#39;</span>
+<span class="n">seq_tpl</span> <span class="o">=</span> <span class="s1">&#39;TTCCPSIVARSNFNVCRLPGTPEA------GCIIIPGATCPGDYAN&#39;</span>
+<span class="n">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="s1">&#39;trg&#39;</span><span class="p">,</span> <span class="n">seq_trg</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="s1">&#39;tpl&#39;</span><span class="p">,</span> <span class="n">seq_tpl</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="mi">1</span><span class="p">,</span> <span class="n">tpl</span><span class="o">.</span><span class="n">CreateFullView</span><span class="p">())</span>
 <span class="n">mhandle</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">BuildRawModel</span><span class="p">(</span><span class="n">aln</span><span class="p">)</span>
-<span class="c"># close gaps</span>
-<span class="k">print</span> <span class="s">&#39;Number of gaps before: </span><span class="si">%d</span><span class="s">&#39;</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="c1"># close gaps</span>
+<span class="nb">print</span> <span class="s1">&#39;Number of gaps before: </span><span class="si">%d</span><span class="s1">&#39;</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="n">modelling</span><span class="o">.</span><span class="n">FillLoopsByDatabase</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span> <span class="n">loop</span><span class="o">.</span><span class="n">LoadFragDB</span><span class="p">(),</span>
                               <span class="n">loop</span><span class="o">.</span><span class="n">LoadStructureDB</span><span class="p">(),</span>
                               <span class="n">loop</span><span class="o">.</span><span class="n">LoadTorsionSamplerCoil</span><span class="p">())</span>
-<span class="k">print</span> <span class="s">&#39;Number of gaps after: </span><span class="si">%d</span><span class="s">&#39;</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="nb">print</span> <span class="s1">&#39;Number of gaps after: </span><span class="si">%d</span><span class="s1">&#39;</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>
 </pre></div>
 </div>
 <table class="docutils field-list" frame="void" rules="none">
@@ -922,6 +928,11 @@ approx. 2x slower than without and will give a
 slight improvement in loop selection.</li>
 <li><strong>clash_thresh</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; If &gt; 0, we only keep loop candidates which have a
 backbone clash score lower than this.</li>
+<li><strong>length_dep_weights</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; <a class="reference internal" href="loop_candidates.html#promod3.modelling.ScoringWeights" title="promod3.modelling.ScoringWeights"><code class="xref py py-class docutils literal"><span class="pre">ScoringWeights</span></code></a> provides different sets
+of weights that have been trained on different
+loop subsets. If this flag is true, the length
+dependent weights are used to select the final 
+loops.</li>
 </ul>
 </td>
 </tr>
@@ -931,7 +942,7 @@ backbone clash score lower than this.</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><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="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>
 <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>.
@@ -941,22 +952,22 @@ more loop candidates to be found.</p>
 <em>fragger_handles</em> is given) <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> lists. The latter
 is only used if the gap length is &gt;= the length of fragments stored.</p>
 <p>This function cannot fill gaps at C- or N-terminal.</p>
-<div class="highlight-python"><div class="highlight"><pre><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</span> <span class="kn">import</span> <span class="n">modelling</span><span class="p">,</span> <span class="n">loop</span>
+<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="p">,</span> <span class="n">seq</span>
+<span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">modelling</span><span class="p">,</span> <span class="n">loop</span>
 
-<span class="c"># setup</span>
-<span class="n">tpl</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="s">&#39;data/1crn_cut.pdb&#39;</span><span class="p">)</span>
-<span class="n">seq_trg</span> <span class="o">=</span> <span class="s">&#39;TTCCPSIVARSNFNVCRLPGTPEAICATYTGCIIIPGATCPGDYAN&#39;</span>
-<span class="n">seq_tpl</span> <span class="o">=</span> <span class="s">&#39;TTCCPSIVARSNFNVCRLPGTPEA------GCIIIPGATCPGDYAN&#39;</span>
-<span class="n">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="s">&#39;trg&#39;</span><span class="p">,</span> <span class="n">seq_trg</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="s">&#39;tpl&#39;</span><span class="p">,</span> <span class="n">seq_tpl</span><span class="p">))</span>
+<span class="c1"># setup</span>
+<span class="n">tpl</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="s1">&#39;data/1crn_cut.pdb&#39;</span><span class="p">)</span>
+<span class="n">seq_trg</span> <span class="o">=</span> <span class="s1">&#39;TTCCPSIVARSNFNVCRLPGTPEAICATYTGCIIIPGATCPGDYAN&#39;</span>
+<span class="n">seq_tpl</span> <span class="o">=</span> <span class="s1">&#39;TTCCPSIVARSNFNVCRLPGTPEA------GCIIIPGATCPGDYAN&#39;</span>
+<span class="n">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="s1">&#39;trg&#39;</span><span class="p">,</span> <span class="n">seq_trg</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="s1">&#39;tpl&#39;</span><span class="p">,</span> <span class="n">seq_tpl</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="mi">1</span><span class="p">,</span> <span class="n">tpl</span><span class="o">.</span><span class="n">CreateFullView</span><span class="p">())</span>
 <span class="n">mhandle</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">BuildRawModel</span><span class="p">(</span><span class="n">aln</span><span class="p">)</span>
-<span class="c"># close gaps</span>
-<span class="k">print</span> <span class="s">&#39;Number of gaps before: </span><span class="si">%d</span><span class="s">&#39;</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="c1"># close gaps</span>
+<span class="nb">print</span> <span class="s1">&#39;Number of gaps before: </span><span class="si">%d</span><span class="s1">&#39;</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="n">modelling</span><span class="o">.</span><span class="n">FillLoopsByMonteCarlo</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span>
                               	<span class="n">loop</span><span class="o">.</span><span class="n">LoadTorsionSamplerCoil</span><span class="p">())</span>
-<span class="k">print</span> <span class="s">&#39;Number of gaps after: </span><span class="si">%d</span><span class="s">&#39;</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="nb">print</span> <span class="s1">&#39;Number of gaps after: </span><span class="si">%d</span><span class="s1">&#39;</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>
 </pre></div>
 </div>
 <table class="docutils field-list" frame="void" rules="none">
@@ -990,6 +1001,11 @@ fragger handle for each chain in <em>mhandle</em>.</li>
 processed</li>
 <li><strong>resnum_range</strong> (<code class="xref py py-class docutils literal"><span class="pre">tuple</span></code> containing two <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; If not None, only gaps within this resnum range get
 processed</li>
+<li><strong>length_dep_weights</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; <a class="reference internal" href="loop_candidates.html#promod3.modelling.ScoringWeights" title="promod3.modelling.ScoringWeights"><code class="xref py py-class docutils literal"><span class="pre">ScoringWeights</span></code></a> provides different sets
+of weights that have been trained on different
+loop subsets. If this flag is true, the length
+dependent weights are used to select the final 
+loops.</li>
 </ul>
 </td>
 </tr>
@@ -1044,22 +1060,22 @@ but we do not assume that the resulting termini are of high quality!</p>
 <em>fragger_handles</em> is given) <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> lists. The latter
 is only used if the gap length is &gt;= the length of fragments stored.</p>
 <p>Terminal gaps of length 1 are ignored by this function!</p>
-<div class="highlight-python"><div class="highlight"><pre><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</span> <span class="kn">import</span> <span class="n">modelling</span><span class="p">,</span> <span class="n">loop</span>
+<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="p">,</span> <span class="n">seq</span>
+<span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">modelling</span><span class="p">,</span> <span class="n">loop</span>
 
-<span class="c"># setup</span>
-<span class="n">tpl</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="s">&#39;data/gly.pdb&#39;</span><span class="p">)</span>
-<span class="n">seq_trg</span> <span class="o">=</span> <span class="s">&#39;AAAAGGGGGGGGGGGGGGGGGGGGAAAAAA&#39;</span>
-<span class="n">seq_tpl</span> <span class="o">=</span> <span class="s">&#39;----GGGGGGGGGGGGGGGGGGGG------&#39;</span>
-<span class="n">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="s">&#39;trg&#39;</span><span class="p">,</span> <span class="n">seq_trg</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="s">&#39;tpl&#39;</span><span class="p">,</span> <span class="n">seq_tpl</span><span class="p">))</span>
+<span class="c1"># setup</span>
+<span class="n">tpl</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="s1">&#39;data/gly.pdb&#39;</span><span class="p">)</span>
+<span class="n">seq_trg</span> <span class="o">=</span> <span class="s1">&#39;AAAAGGGGGGGGGGGGGGGGGGGGAAAAAA&#39;</span>
+<span class="n">seq_tpl</span> <span class="o">=</span> <span class="s1">&#39;----GGGGGGGGGGGGGGGGGGGG------&#39;</span>
+<span class="n">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="s1">&#39;trg&#39;</span><span class="p">,</span> <span class="n">seq_trg</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="s1">&#39;tpl&#39;</span><span class="p">,</span> <span class="n">seq_tpl</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="mi">1</span><span class="p">,</span> <span class="n">tpl</span><span class="o">.</span><span class="n">CreateFullView</span><span class="p">())</span>
 <span class="n">mhandle</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">BuildRawModel</span><span class="p">(</span><span class="n">aln</span><span class="p">)</span>
-<span class="c"># close gaps</span>
-<span class="k">print</span> <span class="s">&#39;Number of gaps before: </span><span class="si">%d</span><span class="s">&#39;</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="c1"># close gaps</span>
+<span class="nb">print</span> <span class="s1">&#39;Number of gaps before: </span><span class="si">%d</span><span class="s1">&#39;</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="n">modelling</span><span class="o">.</span><span class="n">ModelTermini</span><span class="p">(</span><span class="n">mhandle</span><span class="p">,</span>
                        <span class="n">loop</span><span class="o">.</span><span class="n">LoadTorsionSamplerCoil</span><span class="p">())</span>
-<span class="k">print</span> <span class="s">&#39;Number of gaps after: </span><span class="si">%d</span><span class="s">&#39;</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="nb">print</span> <span class="s1">&#39;Number of gaps after: </span><span class="si">%d</span><span class="s1">&#39;</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>
 </pre></div>
 </div>
 <table class="docutils field-list" frame="void" rules="none">
@@ -1118,7 +1134,7 @@ if None.</li>
 <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>
 <dd><p>Minimize energy of final model using molecular mechanics.</p>
-<p>Uses <code class="xref py py-mod docutils literal"><span class="pre">ost.mol.mm</span></code> to perform energy minimization.
+<p>Uses <a class="reference external" href="https://www.openstructure.org/docs/dev/mol/mm/molmm/#module-ost.mol.mm" title="(in OpenStructure v1.7.1)"><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>
@@ -1142,7 +1158,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="http://www.openstructure.org/docs/dev/mol/mm/forcefield/#ost.mol.mm.Forcefield" title="(in OpenStructure v1.6.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/dev/mol/mm/forcefield/#ost.mol.mm.Forcefield" title="(in OpenStructure v1.7.1)"><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>
@@ -1150,7 +1166,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">Entity</span></code></a></p>
 </td>
 </tr>
 </tbody>
@@ -1217,9 +1233,6 @@ CHARMM one (see <a class="reference internal" href="#promod3.modelling.BuildFrom
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -1230,8 +1243,8 @@ CHARMM one (see <a class="reference internal" href="#promod3.modelling.BuildFrom
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/modelling/pipeline.txt"
diff --git a/doc/html/modelling/sidechain_reconstruction.html b/doc/html/modelling/sidechain_reconstruction.html
index e5940d829e08a43dfb35a33ca4a8b2867f4ca481..9bd233f6342c3accca52b5b18c3d9a8572c40fcd 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.1.0 documentation</title>
+    <title>Sidechain Reconstruction &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -44,48 +46,48 @@
 <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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.7.1)"><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>
 <p>Example usage:</p>
-<div class="highlight-python"><div class="highlight"><pre><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">mol</span>
-<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">modelling</span>
+<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="p">,</span> <span class="n">mol</span>
+<span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">modelling</span>
 
-<span class="c"># load a protein </span>
-<span class="n">prot</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="s">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
-<span class="c"># get only 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="s">&quot;peptide=true&quot;</span><span class="p">),</span> <span class="bp">True</span><span class="p">)</span>
-<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">prot</span><span class="p">,</span> <span class="s">&#39;sidechain_test_orig.pdb&#39;</span><span class="p">)</span>
-<span class="c"># reconstruct sidechains</span>
-<span class="n">modelling</span><span class="o">.</span><span class="n">ReconstructSidechains</span><span class="p">(</span><span class="n">prot</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">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">prot</span><span class="p">,</span> <span class="s">&#39;sidechain_test_rec.pdb&#39;</span><span class="p">)</span>
+<span class="c1"># load a protein </span>
+<span class="n">prot</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="s1">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
+<span class="c1"># get only 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>
+<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">prot</span><span class="p">,</span> <span class="s1">&#39;sidechain_test_orig.pdb&#39;</span><span class="p">)</span>
+<span class="c1"># reconstruct sidechains</span>
+<span class="n">modelling</span><span class="o">.</span><span class="n">ReconstructSidechains</span><span class="p">(</span><span class="n">prot</span><span class="p">,</span> <span class="n">keep_sidechains</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">prot</span><span class="p">,</span> <span class="s1">&#39;sidechain_test_rec.pdb&#39;</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">ost</span> <span class="kn">import</span> <span class="n">io</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">modelling</span>
+<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">promod3</span> <span class="k">import</span> <span class="n">loop</span><span class="p">,</span> <span class="n">modelling</span>
 
-<span class="c"># load example (has res. numbering starting at 1)</span>
-<span class="n">prot</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="s">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
+<span class="c1"># load example (has res. numbering starting at 1)</span>
+<span class="n">prot</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="s1">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
 <span class="n">res_list</span> <span class="o">=</span> <span class="n">prot</span><span class="o">.</span><span class="n">residues</span>
-<span class="n">seqres_str</span> <span class="o">=</span> <span class="s">&#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">res_list</span><span class="p">])</span>
+<span class="n">seqres_str</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">res_list</span><span class="p">])</span>
 
-<span class="c"># initialize AllAtom environment and sidechain reconstructor</span>
+<span class="c1"># initialize AllAtom environment and sidechain reconstructor</span>
 <span class="n">env</span> <span class="o">=</span> <span class="n">loop</span><span class="o">.</span><span class="n">AllAtomEnv</span><span class="p">(</span><span class="n">seqres_str</span><span class="p">)</span>
 <span class="n">env</span><span class="o">.</span><span class="n">SetInitialEnvironment</span><span class="p">(</span><span class="n">prot</span><span class="p">)</span>
-<span class="n">sc_rec</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">SidechainReconstructor</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">sc_rec</span> <span class="o">=</span> <span class="n">modelling</span><span class="o">.</span><span class="n">SidechainReconstructor</span><span class="p">(</span><span class="n">keep_sidechains</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
 <span class="n">sc_rec</span><span class="o">.</span><span class="n">AttachEnvironment</span><span class="p">(</span><span class="n">env</span><span class="p">)</span>
 
-<span class="c"># reconstruct subset (res. num. 6..10)</span>
+<span class="c1"># reconstruct subset (res. num. 6..10)</span>
 <span class="n">res</span> <span class="o">=</span> <span class="n">sc_rec</span><span class="o">.</span><span class="n">Reconstruct</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
-<span class="c"># reconstruct two loops (6..10 and 20..25)</span>
+<span class="c1"># reconstruct two loops (6..10 and 20..25)</span>
 <span class="n">res</span> <span class="o">=</span> <span class="n">sc_rec</span><span class="o">.</span><span class="n">Reconstruct</span><span class="p">(</span><span class="n">start_resnum_list</span><span class="o">=</span><span class="p">[</span><span class="mi">6</span><span class="p">,</span> <span class="mi">20</span><span class="p">],</span>
                          <span class="n">num_residues_list</span><span class="o">=</span><span class="p">[</span><span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">],</span>
                          <span class="n">chain_idx_list</span><span class="o">=</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="c"># update environment with solution</span>
+<span class="c1"># update environment with solution</span>
 <span class="n">env</span><span class="o">.</span><span class="n">SetEnvironment</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">env_pos</span><span class="p">)</span>
-<span class="c"># store all positions of environment</span>
-<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">env</span><span class="o">.</span><span class="n">GetAllAtomPositions</span><span class="p">()</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="s">&#39;sc_rec_test.pdb&#39;</span><span class="p">)</span>
+<span class="c1"># store all positions of environment</span>
+<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">env</span><span class="o">.</span><span class="n">GetAllAtomPositions</span><span class="p">()</span><span class="o">.</span><span class="n">ToEntity</span><span class="p">(),</span> <span class="s1">&#39;sc_rec_test.pdb&#39;</span><span class="p">)</span>
 </pre></div>
 </div>
 <div class="section" id="reconstruct-function">
@@ -99,7 +101,7 @@ and used to reconstruct sidechains of single loops</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 last simple">
-<li><strong>ent</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.7.1)"><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
@@ -180,9 +182,9 @@ residues within <em>remodel_cutoff</em> already have a
 sidechain, the <em>rigid_frame_cutoff</em> won&#8217;t have any
 effect.</li>
 <li><strong>graph_max_complexity</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. complexity for
-<a class="reference internal" href="../sidechain/graph.html#promod3.sidechain.RotamerGraph.TreeSolve" title="promod3.sidechain.RotamerGraph.TreeSolve"><code class="xref py py-meth docutils literal"><span class="pre">promod3.sidechain.RotamerGraph.TreeSolve()</span></code></a>.</li>
+<code class="xref py py-meth docutils literal"><span class="pre">promod3.sidechain.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
-<a class="reference internal" href="../sidechain/graph.html#promod3.sidechain.RotamerGraph.TreeSolve" title="promod3.sidechain.RotamerGraph.TreeSolve"><code class="xref py py-meth docutils literal"><span class="pre">promod3.sidechain.RotamerGraph.TreeSolve()</span></code></a>.</li>
+<code class="xref py py-meth docutils literal"><span class="pre">promod3.sidechain.RotamerGraph.TreeSolve()</span></code>.</li>
 <li><strong>disulfid_score_thresh</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; If <code class="xref py py-meth docutils literal"><span class="pre">DisulfidScore()</span></code> between two CYS is
 below this threshold, we consider them to be
 disulfid-bonded.</li>
@@ -210,7 +212,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.7.1)"><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>
@@ -430,9 +432,6 @@ in the environment (same length as <em>env_pos.res_indices</em>)</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -443,8 +442,8 @@ in the environment (same length as <em>env_pos.res_indices</em>)</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/modelling/sidechain_reconstruction.txt"
diff --git a/doc/html/objects.inv b/doc/html/objects.inv
index 81a8d72de97fcc038be6300b37887a25fa9ac54c..c7226c83d6d29c07ee6392a031ad29887d8c9f0f 100644
Binary files a/doc/html/objects.inv and b/doc/html/objects.inv differ
diff --git a/doc/html/portableIO.html b/doc/html/portableIO.html
index 74404d4b6a833266bab8ea6dc38f97bf5f7be463..b91204173e557b1e87324a27ef1dca714af4745b 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.1.0 documentation</title>
+    <title>Using Binary Files In ProMod3 &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 1.2.0 documentation" href="index.html" />
     <link rel="up" title="Documentation For Developers" href="developers.html" />
     <link rel="next" title="Changelog" href="changelog.html" />
     <link rel="prev" title="ProMod3‘s Share Of CMake" href="cmake/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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -108,7 +110,7 @@ Generally, we store any data-structure value-by-value as fixed-width types!</p>
 </ul>
 <p>Each serializable class must define a <code class="docutils literal"><span class="pre">Serialize</span></code> function that accepts sinks
 and sources, such as:</p>
-<div class="highlight-cpp"><div class="highlight"><pre><span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">DS</span><span class="o">&gt;</span>
+<div class="highlight-cpp"><div class="highlight"><pre><span></span><span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">DS</span><span class="o">&gt;</span>
 <span class="kt">void</span> <span class="n">Serialize</span><span class="p">(</span><span class="n">DS</span><span class="o">&amp;</span> <span class="n">ds</span><span class="p">)</span> <span class="p">{</span>
   <span class="c1">// serialize element-by-element</span>
 <span class="p">}</span>
@@ -116,7 +118,7 @@ and sources, such as:</p>
 </div>
 <p>Or if this is not possible for an object of type <code class="docutils literal"><span class="pre">T</span></code>, we need to define
 global functions such as:</p>
-<div class="highlight-cpp"><div class="highlight"><pre><span class="kr">inline</span> <span class="kt">void</span> <span class="nf">Serialize</span><span class="p">(</span><span class="n">core</span><span class="o">::</span><span class="n">PortableBinaryDataSource</span><span class="o">&amp;</span> <span class="n">ds</span><span class="p">,</span> <span class="n">T</span><span class="o">&amp;</span> <span class="n">t</span><span class="p">)</span> <span class="p">{</span> <span class="p">}</span>
+<div class="highlight-cpp"><div class="highlight"><pre><span></span><span class="kr">inline</span> <span class="kt">void</span> <span class="nf">Serialize</span><span class="p">(</span><span class="n">core</span><span class="o">::</span><span class="n">PortableBinaryDataSource</span><span class="o">&amp;</span> <span class="n">ds</span><span class="p">,</span> <span class="n">T</span><span class="o">&amp;</span> <span class="n">t</span><span class="p">)</span> <span class="p">{</span> <span class="p">}</span>
 <span class="kr">inline</span> <span class="kt">void</span> <span class="nf">Serialize</span><span class="p">(</span><span class="n">core</span><span class="o">::</span><span class="n">PortableBinaryDataSink</span><span class="o">&amp;</span> <span class="n">ds</span><span class="p">,</span> <span class="n">T</span> <span class="n">t</span><span class="p">)</span> <span class="p">{</span> <span class="p">}</span>
 </pre></div>
 </div>
@@ -143,17 +145,17 @@ serialize the values manually and convert each element appropriately.</li>
 <h2>Code Example<a class="headerlink" href="#code-example" title="Permalink to this headline">¶</a></h2>
 <p>Here is an example of a class which provides functionality for portable
 and non-portable I/O:</p>
-<div class="highlight-cpp"><div class="highlight"><pre><span class="c1">// includes for this class</span>
-<span class="cp">#include &lt;boost/shared_ptr.hpp&gt;</span>
-<span class="cp">#include &lt;iostream&gt;</span>
-<span class="cp">#include &lt;fstream&gt;</span>
-<span class="cp">#include &lt;sstream&gt;</span>
-<span class="cp">#include &lt;vector&gt;</span>
+<div class="highlight-cpp"><div class="highlight"><pre><span></span><span class="c1">// includes for this class</span>
+<span class="cp">#include</span> <span class="cpf">&lt;boost/shared_ptr.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;fstream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;sstream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;vector&gt;</span><span class="cp"></span>
 
 <span class="c1">// includes for I/O</span>
-<span class="cp">#include &lt;promod3/core/message.hh&gt;</span>
-<span class="cp">#include &lt;promod3/core/portable_binary_serializer.hh&gt;</span>
-<span class="cp">#include &lt;promod3/core/check_io.hh&gt;</span>
+<span class="cp">#include</span> <span class="cpf">&lt;promod3/core/message.hh&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;promod3/core/portable_binary_serializer.hh&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;promod3/core/check_io.hh&gt;</span><span class="cp"></span>
 
 <span class="k">using</span> <span class="k">namespace</span> <span class="n">promod3</span><span class="p">;</span>
 
@@ -468,9 +470,6 @@ in the <code class="file docutils literal"><span class="pre">extras/data_generat
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -481,8 +480,8 @@ in the <code class="file docutils literal"><span class="pre">extras/data_generat
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/portableIO.txt"
diff --git a/doc/html/py-modindex.html b/doc/html/py-modindex.html
index 71f4bc4ddf7474eec8f663839da66c0d80c4b9f4..0cffbd52840bb625fccf1333a540286df84606de 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.1.0 documentation</title>
+    <title>Python Module Index &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 1.2.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
 
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -122,9 +124,6 @@
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -135,8 +134,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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>
 
diff --git a/doc/html/scoring/all_atom_scorers.html b/doc/html/scoring/all_atom_scorers.html
index 8927ea93c0fbfb5b887ce479eeb401617d21b90f..13c1d1c279dfbd5ac7e6fde246648a6a043be515 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.1.0 documentation</title>
+    <title>All Atom Scorers &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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="next" title="Other Scoring Functions" href="other_scoring_functions.html" />
     <link rel="prev" title="Backbone Scorers" href="backbone_scorers.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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -102,9 +104,9 @@
 
 <dl class="method">
 <dt id="promod3.scoring.AllAtomOverallScorer.CalculateLinearCombination">
-<code class="descname">CalculateLinearCombination</code><span class="sig-paren">(</span><em>linear_weights</em>, <em>start_resnum</em>, <em>num_residues</em>, <em>chain_idx=0</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomOverallScorer.CalculateLinearCombination" title="Permalink to this definition">¶</a></dt>
-<dd><p>Calculate linear combination of scores for the desired loop (extracted from
-environment) against the set environment (see
+<code class="descname">CalculateLinearCombination</code><span class="sig-paren">(</span><em>linear_weights</em>, <em>start_resnum</em>, <em>num_residues</em>, <em>chain_idx</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomOverallScorer.CalculateLinearCombination" title="Permalink to this definition">¶</a></dt>
+<dd><p>Calculate linear combination of scores for the desired loop(s) (extracted
+from environment) against the set environment (see
 <a class="reference internal" href="#promod3.scoring.AllAtomScorer.CalculateScore" title="promod3.scoring.AllAtomScorer.CalculateScore"><code class="xref py py-meth docutils literal"><span class="pre">AllAtomScorer.CalculateScore()</span></code></a>).</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -115,10 +117,10 @@ environment) against the set environment (see
 values: <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; Weights for each desired scorer. You can add a
 constant value to each score by defining a weight
 with key &#8220;intercept&#8221;.</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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.6.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><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> / <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; Res. number(s) defining the position(s) in the SEQRES
 (see <a class="reference internal" href="../loop/all_atom.html#promod3.loop.AllAtomEnv" title="promod3.loop.AllAtomEnv"><code class="xref py py-class docutils literal"><span class="pre">AllAtomEnv</span></code></a> for indexing)</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; Index of chain the loop belongs to
+<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> / <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; Length of loop(s).</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> / <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; Index of chain the loop(s) belongs to
 (see <a class="reference internal" href="../loop/all_atom.html#promod3.loop.AllAtomEnv" title="promod3.loop.AllAtomEnv"><code class="xref py py-class docutils literal"><span class="pre">AllAtomEnv</span></code></a> for indexing)</li>
 </ul>
 </td>
@@ -195,23 +197,19 @@ following keys:
 
 <dl class="method">
 <dt id="promod3.scoring.AllAtomScorer.CalculateScore">
-<code class="descname">CalculateScore</code><span class="sig-paren">(</span><em>start_resnum</em>, <em>num_residues</em>, <em>chain_idx=0</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomScorer.CalculateScore" title="Permalink to this definition">¶</a></dt>
-<dd><p>Calculates score for the desired loop (extracted from environment) against
+<code class="descname">CalculateScore</code><span class="sig-paren">(</span><em>start_resnum</em>, <em>num_residues</em>, <em>chain_idx</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomScorer.CalculateScore" title="Permalink to this definition">¶</a></dt>
+<dd><p>Calculates score for the desired loop(s) (extracted from environment) against
 the set environment. Unless otherwise noted in the scorer, a lower &#8220;score&#8221;
 is better!</p>
-<p>Note that the structural data of the loop is expected to be in the linked
-environment before calling this! This behavior is different from the
-corresponding function in <a class="reference internal" href="backbone_scorers.html#promod3.scoring.BackboneScorer" title="promod3.scoring.BackboneScorer"><code class="xref py py-class docutils literal"><span class="pre">BackboneScorer</span></code></a> as, for performance
-reasons, we require all the comparisons to be done against the environment.</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>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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.6.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><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> / <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; Res. number(s) defining the position(s) in the SEQRES
 (see <a class="reference internal" href="../loop/all_atom.html#promod3.loop.AllAtomEnv" title="promod3.loop.AllAtomEnv"><code class="xref py py-class docutils literal"><span class="pre">AllAtomEnv</span></code></a> for indexing)</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; Index of chain the loop belongs to
+<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> / <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; Length of loop(s).</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> / <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; Index of chain the loop(s) belongs to
 (see <a class="reference internal" href="../loop/all_atom.html#promod3.loop.AllAtomEnv" title="promod3.loop.AllAtomEnv"><code class="xref py py-class docutils literal"><span class="pre">AllAtomEnv</span></code></a> for indexing)</li>
 </ul>
 </td>
@@ -235,29 +233,26 @@ invalid positions.</p>
 <dl class="method">
 <dt id="promod3.scoring.AllAtomScorer.CalculateScoreProfile">
 <code class="descname">CalculateScoreProfile</code><span class="sig-paren">(</span><em>start_resnum</em>, <em>num_residues</em>, <em>chain_idx=0</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomScorer.CalculateScoreProfile" title="Permalink to this definition">¶</a></dt>
-<dd><p>Calculates per residue scores for the desired loop (extracted from
+<dd><p>Calculates per residue scores for the desired loop(s) (extracted from
 environment) against the set environment.</p>
-<p>Note that the structural data of the loop is expected to be in the linked
-environment before calling this! This behavior is different from the
-corresponding function in <a class="reference internal" href="backbone_scorers.html#promod3.scoring.BackboneScorer" title="promod3.scoring.BackboneScorer"><code class="xref py py-class docutils literal"><span class="pre">BackboneScorer</span></code></a> as, for performance
-reasons, we require all the comparisons to be done against the environment.</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>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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.6.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><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> / <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; Res. number(s) defining the position(s) in the SEQRES
 (see <a class="reference internal" href="../loop/all_atom.html#promod3.loop.AllAtomEnv" title="promod3.loop.AllAtomEnv"><code class="xref py py-class docutils literal"><span class="pre">AllAtomEnv</span></code></a> for indexing)</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; Index of chain the loop belongs to
+<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(s).</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> / <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; Index of chain the loop(s) belongs to
 (see <a class="reference internal" href="../loop/all_atom.html#promod3.loop.AllAtomEnv" title="promod3.loop.AllAtomEnv"><code class="xref py py-class docutils literal"><span class="pre">AllAtomEnv</span></code></a> for indexing)</li>
 </ul>
 </td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Scores for the given loop, one for each residue.</p>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Scores for the given loop(s), one for each residue.</p>
 </td>
 </tr>
-<tr class="field-odd 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></p>
+<tr class="field-odd 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> / <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>
+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></p>
 </td>
 </tr>
 <tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><p class="first last">same <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> as <a class="reference internal" href="#promod3.scoring.AllAtomScorer.CalculateScore" title="promod3.scoring.AllAtomScorer.CalculateScore"><code class="xref py py-meth docutils literal"><span class="pre">CalculateScore()</span></code></a>.</p>
@@ -280,8 +275,11 @@ pseudo interaction energy between all atoms which are located within a
 <em>cutoff</em> and which are at least <em>seq_sep</em> residues apart. An energy is
 assigned to each distance using equally sized bins and distinguishing all
 possible pairs of atoms (usually the energy only differs for chemically
-distinguishable heavy atoms). The calculated score is normalized by the number
-of interacting atom pairs.</p>
+distinguishable heavy atoms).
+By default, the scorer calculates the scores by
+including everything, the stuff set in the environment and the coordinates
+in the input loops. You can change this behaviour with the according
+functions.</p>
 <p>The scorer needs to be initialized either by loading a predefined scorer (e.g.
 <a class="reference internal" href="#promod3.scoring.LoadAllAtomInteractionScorer" title="promod3.scoring.LoadAllAtomInteractionScorer"><code class="xref py py-func docutils literal"><span class="pre">LoadAllAtomInteractionScorer()</span></code></a>) or by setting all energies (see <a class="reference internal" href="#promod3.scoring.AllAtomInteractionScorer.SetEnergy" title="promod3.scoring.AllAtomInteractionScorer.SetEnergy"><code class="xref py py-meth docutils literal"><span class="pre">SetEnergy()</span></code></a>).</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -322,7 +320,7 @@ less machine-dependent).</p>
 <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#promod3.scoring.AllAtomInteractionScorer" title="promod3.scoring.AllAtomInteractionScorer"><code class="xref py py-class docutils literal"><span class="pre">AllAtomInteractionScorer</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 file cannot be opened or if
-file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a> for details).</td>
+file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a> for details).</td>
 </tr>
 </tbody>
 </table>
@@ -334,7 +332,7 @@ file cannot be parsed (see <a class="reference internal" href="../portableIO.htm
 <dt id="promod3.scoring.AllAtomInteractionScorer.SavePortable">
 <code class="descname">SavePortable</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomInteractionScorer.SavePortable" title="Permalink to this definition">¶</a></dt>
 <dd><p>Saves a raw / portable binary representation. Use portable files for
-distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a>
+distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a>
 for details.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -352,7 +350,10 @@ for details.</p>
 <dt id="promod3.scoring.AllAtomInteractionScorer.SetEnergy">
 <code class="descname">SetEnergy</code><span class="sig-paren">(</span><em>aaa1</em>, <em>aaa2</em>, <em>bin</em>, <em>energy</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomInteractionScorer.SetEnergy" title="Permalink to this definition">¶</a></dt>
 <dd><p>Setup one energy value. Unless a predefined scorer is loaded, this must be
-called for every pair of heavy atom types and for every <em>bin</em> &lt; <em>bins</em>.</p>
+called for every pair of heavy atom types and for every <em>bin</em> &lt; <em>bins</em>.
+Internal symmetry is enforced =&gt; Calling SetEnergy(aaa1, aaa2, bin, energy) is
+equivalent to calling SetEnergy(aaa1, aaa2, bin, energy) AND
+SetEnergy(aaa2, aaa1, bin, energy).</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -372,6 +373,48 @@ called for every pair of heavy atom types and for every <em>bin</em> &lt; <em>bi
 </table>
 </dd></dl>
 
+<dl class="method">
+<dt id="promod3.scoring.AllAtomInteractionScorer.DoInternalScores">
+<code class="descname">DoInternalScores</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomInteractionScorer.DoInternalScores" 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"><strong>do_it</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 include pairwise interactions within the
+loop. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.AllAtomInteractionScorer.DoExternalScores">
+<code class="descname">DoExternalScores</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomInteractionScorer.DoExternalScores" 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"><strong>do_it</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 include pairwise interactions towards the
+environment. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.AllAtomInteractionScorer.DoNormalize">
+<code class="descname">DoNormalize</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomInteractionScorer.DoNormalize" 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"><strong>do_it</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 normalize the calculated scores by the number
+of residues in the input loop. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
 </dd></dl>
 
 <dl class="function">
@@ -397,8 +440,7 @@ called for every pair of heavy atom types and for every <em>bin</em> &lt; <em>bi
 <em class="property">class </em><code class="descclassname">promod3.scoring.</code><code class="descname">AllAtomPackingScorer</code><span class="sig-paren">(</span><em>cutoff</em>, <em>max_count</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomPackingScorer" title="Permalink to this definition">¶</a></dt>
 <dd><p>Inherits all functionality of <a class="reference internal" href="#promod3.scoring.AllAtomScorer" title="promod3.scoring.AllAtomScorer"><code class="xref py py-class docutils literal"><span class="pre">AllAtomScorer</span></code></a>. Evaluates pseudo
 energies by counting surrounding atoms within a certain <em>cutoff</em> radius around
-all heavy atoms not belonging to the assessed residue itself. The calculated
-score is normalized by the number of atoms being assessed.</p>
+all heavy atoms not belonging to the assessed residue itself.</p>
 <p>The scorer needs to be initialized either by loading a predefined scorer (e.g.
 <a class="reference internal" href="#promod3.scoring.LoadAllAtomPackingScorer" title="promod3.scoring.LoadAllAtomPackingScorer"><code class="xref py py-func docutils literal"><span class="pre">LoadAllAtomPackingScorer()</span></code></a>) or by setting all energies (see
 <a class="reference internal" href="#promod3.scoring.AllAtomPackingScorer.SetEnergy" title="promod3.scoring.AllAtomPackingScorer.SetEnergy"><code class="xref py py-meth docutils literal"><span class="pre">SetEnergy()</span></code></a>).</p>
@@ -437,7 +479,7 @@ less machine-dependent).</p>
 <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#promod3.scoring.AllAtomPackingScorer" title="promod3.scoring.AllAtomPackingScorer"><code class="xref py py-class docutils literal"><span class="pre">AllAtomPackingScorer</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 file cannot be opened or if
-file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a> for details).</td>
+file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a> for details).</td>
 </tr>
 </tbody>
 </table>
@@ -449,7 +491,7 @@ file cannot be parsed (see <a class="reference internal" href="../portableIO.htm
 <dt id="promod3.scoring.AllAtomPackingScorer.SavePortable">
 <code class="descname">SavePortable</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomPackingScorer.SavePortable" title="Permalink to this definition">¶</a></dt>
 <dd><p>Saves a raw / portable binary representation. Use portable files for
-distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a>
+distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a>
 for details.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -486,6 +528,20 @@ called for every heavy atom type and for every <em>count</em> &lt;= <em>max_coun
 </table>
 </dd></dl>
 
+<dl class="method">
+<dt id="promod3.scoring.AllAtomPackingScorer.DoNormalize">
+<code class="descname">DoNormalize</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomPackingScorer.DoNormalize" 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"><strong>do_it</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 normalize the calculated scores by the number
+of residues in the input loop. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
 </dd></dl>
 
 <dl class="function">
@@ -512,8 +568,52 @@ called for every heavy atom type and for every <em>count</em> &lt;= <em>max_coun
 <dd><p>Inherits all functionality of <a class="reference internal" href="#promod3.scoring.AllAtomScorer" title="promod3.scoring.AllAtomScorer"><code class="xref py py-class docutils literal"><span class="pre">AllAtomScorer</span></code></a>. Calculates a simple
 clash score of all atoms against the environment. There is no need to define
 any parameters here as all interaction energies are fixed (see Eq. (11) in
-<a class="reference internal" href="../sidechain/disulfid.html#canutescu2003b" id="id1">[canutescu2003b]</a>). The calculated score is normalized by the number of atoms
-being assessed.</p>
+<a class="reference internal" href="other_scoring_functions.html#canutescu2003b" id="id1">[canutescu2003b]</a>). By default, the scorer calculates the scores by
+including everything, the stuff set in the environment and the coordinates
+in the input loops. You can change this behaviour with the according
+functions.</p>
+<dl class="method">
+<dt id="promod3.scoring.AllAtomClashScorer.DoInternalScores">
+<code class="descname">DoInternalScores</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomClashScorer.DoInternalScores" 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"><strong>do_it</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 include pairwise interactions within the
+loop. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.AllAtomClashScorer.DoExternalScores">
+<code class="descname">DoExternalScores</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomClashScorer.DoExternalScores" 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"><strong>do_it</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 include pairwise interactions towards the
+environment. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.AllAtomClashScorer.DoNormalize">
+<code class="descname">DoNormalize</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.AllAtomClashScorer.DoNormalize" 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"><strong>do_it</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 normalize the calculated scores by the number
+of residues in the input loop. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
 </dd></dl>
 
 </div>
@@ -543,7 +643,7 @@ being assessed.</p>
   <li><a href="../users.html">Documentation For Users</a><ul>
   <li><a href="index.html"><code class="docutils literal"><span class="pre">scoring</span></code> - Loop Scoring</a><ul>
       <li>Previous: <a href="backbone_scorers.html" title="previous chapter">Backbone Scorers</a></li>
-      <li>Next: <a href="../loop/index.html" title="next chapter"><code class="docutils literal"><span class="pre">loop</span></code> - Loop Handling</a></li>
+      <li>Next: <a href="other_scoring_functions.html" title="next chapter">Other Scoring Functions</a></li>
   </ul></li>
   </ul></li>
   </ul></li>
@@ -564,9 +664,6 @@ being assessed.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -577,8 +674,8 @@ being assessed.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/scoring/all_atom_scorers.txt"
diff --git a/doc/html/scoring/backbone_score_env.html b/doc/html/scoring/backbone_score_env.html
index 68882801ba831d30ef8131e11bf36ff921a7e56f..ba266b5c47f71e48c6d9bb4a8d9385fae41aca80 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.1.0 documentation</title>
+    <title>Backbone Score Environment &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -50,16 +52,24 @@
 used by the scorers. It is linked to a (list of) seqres (one per chain) at
 construction. The idea is to initialize it at the beginning of the modelling
 process with all known data (positions extracted from template, psipred
-prediction, density map, etc) and then update the environment whenever a new
-loop is being added. Note that, depending on the used scorers, some
-information must be provided for the score to make sense and any env. data can
-be set at any time before actually calculating a score.</p>
+prediction, etc). All scorers attached to that environment will see that data
+and can calculate scores accordingly.
+Scoring with this setup is a two step process:</p>
+<ul class="simple">
+<li>Set the positions you want to score in the environment to make it available
+to all attached scorers</li>
+<li>Call the scorers to get the desired scores</li>
+</ul>
+<p>One problem that might occur is that you mess around with the environment and
+at some point you want to restore the original state. The
+<a class="reference internal" href="#promod3.scoring.BackboneScoreEnv" title="promod3.scoring.BackboneScoreEnv"><code class="xref py py-class docutils literal"><span class="pre">BackboneScoreEnv</span></code></a> provides a Stash / Pop mechanism to perform this
+task.</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>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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><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>
@@ -96,7 +106,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.EntityHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -120,7 +130,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResNum" title="(in OpenStructure v1.7.1)"><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>
@@ -178,25 +188,6 @@ predictions&#8217; sizes is inconsistent with the internal SEQRES size.</td>
 </table>
 </dd></dl>
 
-<dl class="method">
-<dt id="promod3.scoring.BackboneScoreEnv.SetMap">
-<code class="descname">SetMap</code><span class="sig-paren">(</span><em>map</em>, <em>resolution</em>, <em>all_atom=False</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.BackboneScoreEnv.SetMap" title="Permalink to this definition">¶</a></dt>
-<dd><p>Sets an internal density map, which is necessary to calculate some scores.</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>map</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/img/base/img/#ost.img.ImageHandle" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.img.ImageHandle</span></code></a>) &#8211; The density map</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; Expected resolution of the density map.</li>
-<li><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; Whether the map is accurate enough to resolve all atoms.</li>
-</ul>
-</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
 <dl class="method">
 <dt id="promod3.scoring.BackboneScoreEnv.AddPairwiseFunction">
 <code class="descname">AddPairwiseFunction</code><span class="sig-paren">(</span><em>function</em>, <em>function_type</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.BackboneScoreEnv.AddPairwiseFunction" title="Permalink to this definition">¶</a></dt>
@@ -250,6 +241,35 @@ residue or when <em>f_idx</em> is an invalid index.</p>
 </table>
 </dd></dl>
 
+<dl class="method">
+<dt id="promod3.scoring.BackboneScoreEnv.Stash">
+<code class="descname">Stash</code><span class="sig-paren">(</span><em>start_rnum</em>, <em>num_residues</em>, <em>chain_idx</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.BackboneScoreEnv.Stash" title="Permalink to this definition">¶</a></dt>
+<dd><p>FILO style stashing. You can perform up to 100 stash operations to save
+the current state of certain stretches in the environment. This state can
+be restored by calling <a class="reference internal" href="#promod3.scoring.BackboneScoreEnv.Pop" title="promod3.scoring.BackboneScoreEnv.Pop"><code class="xref py py-func docutils literal"><span class="pre">Pop()</span></code></a>. In one stash operation you can either
+stash one stretch by providing integers as input or several stretches by
+providing lists of integers.</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>start_rnum</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> / <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; start rnum of stretch to stash</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> / <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; length of stretch to stash</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> / <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; chain idx of stretch to stash</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.BackboneScoreEnv.Pop">
+<code class="descname">Pop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.BackboneScoreEnv.Pop" title="Permalink to this definition">¶</a></dt>
+<dd><p>Remove and apply the the last stash operation.</p>
+</dd></dl>
+
 <dl class="method">
 <dt id="promod3.scoring.BackboneScoreEnv.GetSeqres">
 <code class="descname">GetSeqres</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.BackboneScoreEnv.GetSeqres" title="Permalink to this definition">¶</a></dt>
@@ -259,7 +279,7 @@ residue or when <em>f_idx</em> is an invalid index.</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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.SequenceList" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ost.seq.SequenceList</span></code></a></td>
 </tr>
 </tbody>
 </table>
@@ -369,7 +389,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.SequenceHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -384,7 +404,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="http://www.openstructure.org/docs/dev/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.6.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/dev/seq/base/seq/#ost.seq.AlignmentHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -483,9 +503,6 @@ inconsistent with SEQRES you initialized the DiscoContainer with</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -496,8 +513,8 @@ inconsistent with SEQRES you initialized the DiscoContainer with</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/scoring/backbone_score_env.txt"
diff --git a/doc/html/scoring/backbone_scorers.html b/doc/html/scoring/backbone_scorers.html
index dec79f579c701f4453884c1ed2f4be565d356be5..4506d8b105711c4c625961a962ac78029e86c3eb 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.1.0 documentation</title>
+    <title>Backbone Scorers &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -102,30 +104,27 @@
 
 <dl class="method">
 <dt id="promod3.scoring.BackboneOverallScorer.Calculate">
-<code class="descname">Calculate</code><span class="sig-paren">(</span><em>key</em>, <em>bb_list</em>, <em>start_resnum</em>, <em>chain_idx=0</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.BackboneOverallScorer.Calculate" title="Permalink to this definition">¶</a></dt>
-<dd><p>Calculate score(s) for one or many loop(s) with
-<a class="reference internal" href="#promod3.scoring.BackboneScorer.CalculateScore" title="promod3.scoring.BackboneScorer.CalculateScore"><code class="xref py py-meth docutils literal"><span class="pre">BackboneScorer.CalculateScore()</span></code></a>.</p>
+<code class="descname">Calculate</code><span class="sig-paren">(</span><em>key</em>, <em>start_resnum</em>, <em>num_residues</em>, <em>chain_idx=0</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.BackboneOverallScorer.Calculate" title="Permalink to this definition">¶</a></dt>
+<dd><p>Calculate score for one or several stretches of amino acids given the
+current scoring environment.</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>key</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; Key for desired scorer.</li>
-<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> / <code class="xref py py-class docutils literal"><span class="pre">list</span></code> of
-<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; Loop(s) for which to calculate the given score</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; Res. number defining the position in the SEQRES
+<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> / <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; Res. number defining the position in the SEQRES
 (see <a class="reference internal" href="backbone_score_env.html#promod3.scoring.BackboneScoreEnv" title="promod3.scoring.BackboneScoreEnv"><code class="xref py py-class docutils literal"><span class="pre">BackboneScoreEnv</span></code></a> for indexing)</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 loop(s) belong to
+<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> / <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; Number of residues in the stretch(es) to score</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> / <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; Index of chain the stretch(es) belongs to
 (see <a class="reference internal" href="backbone_score_env.html#promod3.scoring.BackboneScoreEnv" title="promod3.scoring.BackboneScoreEnv"><code class="xref py py-class docutils literal"><span class="pre">BackboneScoreEnv</span></code></a> for indexing)</li>
 </ul>
 </td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Score(s) calculated with the desired scorer for the given loop(s).
-In the case of multiple loops, the returned list has the same
-order as the input.</p>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Score calculated with the desired scorer for the given stretch(es).</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://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> / <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></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://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></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 there is no scorer with that
@@ -138,8 +137,9 @@ order as the input.</p>
 
 <dl class="method">
 <dt id="promod3.scoring.BackboneOverallScorer.CalculateLinearCombination">
-<code class="descname">CalculateLinearCombination</code><span class="sig-paren">(</span><em>linear_weights</em>, <em>bb_list</em>, <em>start_resnum</em>, <em>chain_idx=0</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.BackboneOverallScorer.CalculateLinearCombination" title="Permalink to this definition">¶</a></dt>
-<dd><p>Calculate linear combination(s) of scores for one or many loop(s).</p>
+<code class="descname">CalculateLinearCombination</code><span class="sig-paren">(</span><em>linear_weights</em>, <em>start_resnum</em>, <em>num_residues</em>, <em>chain_idx=0</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.BackboneOverallScorer.CalculateLinearCombination" title="Permalink to this definition">¶</a></dt>
+<dd><p>Calculate linear combination of scores for one or several stretches of
+amino acids given the current scoring environment.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -149,21 +149,19 @@ order as the input.</p>
 values: <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; Weights for each desired scorer. You can add a
 constant value to each score by defining a weight
 with key &#8220;intercept&#8221;.</li>
-<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> / <code class="xref py py-class docutils literal"><span class="pre">list</span></code> of
-<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; Loop(s) for which to calculate the given score</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; Res. number defining the position in the SEQRES
+<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> / <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; Res. number defining the position in the SEQRES
 (see <a class="reference internal" href="backbone_score_env.html#promod3.scoring.BackboneScoreEnv" title="promod3.scoring.BackboneScoreEnv"><code class="xref py py-class docutils literal"><span class="pre">BackboneScoreEnv</span></code></a> for indexing)</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 loop(s) belong to
+<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> / <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; Number of residues in the stretch(es) to score</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> / <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; Index of chain the stretch(es) belongs to
 (see <a class="reference internal" href="backbone_score_env.html#promod3.scoring.BackboneScoreEnv" title="promod3.scoring.BackboneScoreEnv"><code class="xref py py-class docutils literal"><span class="pre">BackboneScoreEnv</span></code></a> for indexing)</li>
 </ul>
 </td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Linear combination(s) of the scores calculated with the desired
-scorers for the given loop(s). In the case of multiple loops, the
-returned list has the same order as the input.</p>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Linear combination of the scores calculated with the desired
+scorers for the given stretch(es)</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://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> / <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></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://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></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>linear_weights</em> has a <em>key</em> for
@@ -202,7 +200,7 @@ which no scorer exists or anything raised in
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Loads or creates the default scorers accessible through
 following keys:
-&#8220;cb_packing&#8221;, &#8220;cbeta&#8221;, &#8220;reduced&#8221;, &#8220;clash&#8221;, &#8220;hbond&#8221;, &#8220;ss_agreement&#8221;,&#8221;torsion&#8221;, &#8220;pairwise&#8221;, &#8220;density&#8221;</td>
+&#8220;cb_packing&#8221;, &#8220;cbeta&#8221;, &#8220;reduced&#8221;, &#8220;clash&#8221;, &#8220;hbond&#8221;, &#8220;ss_agreement&#8221;,&#8221;torsion&#8221;, &#8220;pairwise&#8221;</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#promod3.scoring.BackboneOverallScorer" title="promod3.scoring.BackboneOverallScorer"><code class="xref py py-class docutils literal"><span class="pre">BackboneOverallScorer</span></code></a></td>
 </tr>
@@ -232,25 +230,24 @@ following keys:
 
 <dl class="method">
 <dt id="promod3.scoring.BackboneScorer.CalculateScore">
-<code class="descname">CalculateScore</code><span class="sig-paren">(</span><em>bb_list</em>, <em>start_resnum</em>, <em>chain_idx=0</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.BackboneScorer.CalculateScore" title="Permalink to this definition">¶</a></dt>
-<dd><p>Calculates score for the given loop internally and against the set
-environment. Data in the environment, which overlaps with the given
-<em>bb_list</em> is ignored. Unless otherwise noted in the scorer, a lower &#8220;score&#8221;
-is better!</p>
+<code class="descname">CalculateScore</code><span class="sig-paren">(</span><em>start_resnum</em>, <em>num_residues</em>, <em>chain_idx=0</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.BackboneScorer.CalculateScore" title="Permalink to this definition">¶</a></dt>
+<dd><p>Calculates score for one or several stretches given the structural
+information in the attached environment. Unless otherwise noted in the
+scorer, a lower &#8220;score&#8221; is better!</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>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; Loop for which to calculate the given score</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; Res. number defining the position in the SEQRES
+<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> / <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; Res. number defining the position in the SEQRES
 (see <a class="reference internal" href="backbone_score_env.html#promod3.scoring.BackboneScoreEnv" title="promod3.scoring.BackboneScoreEnv"><code class="xref py py-class docutils literal"><span class="pre">BackboneScoreEnv</span></code></a> for indexing)</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 loop belongs to
+<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> / <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; Number of residues in the stretch(es) to score</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> / <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; Index of chain the stretch(es) belongs to
 (see <a class="reference internal" href="backbone_score_env.html#promod3.scoring.BackboneScoreEnv" title="promod3.scoring.BackboneScoreEnv"><code class="xref py py-class docutils literal"><span class="pre">BackboneScoreEnv</span></code></a> for indexing)</li>
 </ul>
 </td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Score for the given loop.</p>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Score for the given stretch(es).</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://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></p>
@@ -258,8 +255,8 @@ is better!</p>
 </tr>
 <tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><p class="first last">(for most scorers) <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 scorer was
 never attached to a score environment, if scorer has never been
-properly initialized or if <em>chain_index</em> / <em>start_resnum</em> lead to
-invalid positions.</p>
+properly initialized or if <em>start_resnum</em> / <em>num_residues</em> /
+<em>chain_idx</em> lead to invalid positions.</p>
 </td>
 </tr>
 </tbody>
@@ -268,27 +265,27 @@ invalid positions.</p>
 
 <dl class="method">
 <dt id="promod3.scoring.BackboneScorer.CalculateScoreProfile">
-<code class="descname">CalculateScoreProfile</code><span class="sig-paren">(</span><em>bb_list</em>, <em>start_resnum</em>, <em>chain_idx=0</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.BackboneScorer.CalculateScoreProfile" title="Permalink to this definition">¶</a></dt>
-<dd><p>Calculates per residue scores for the given loop internally and against the
-set environment. Data in the environment, which overlaps with the given
-<em>bb_list</em> is ignored.</p>
+<code class="descname">CalculateScoreProfile</code><span class="sig-paren">(</span><em>start_resnum</em>, <em>num_residues</em>, <em>chain_idx=0</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.BackboneScorer.CalculateScoreProfile" title="Permalink to this definition">¶</a></dt>
+<dd><p>Calculates per residue scores for one or several stretches given the
+structural information in the attached environment.</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>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; Loop for which to calculate the given scores</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; Res. number defining the position in the SEQRES
+<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> / <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; Res. number defining the position in the SEQRES
 (see <a class="reference internal" href="backbone_score_env.html#promod3.scoring.BackboneScoreEnv" title="promod3.scoring.BackboneScoreEnv"><code class="xref py py-class docutils literal"><span class="pre">BackboneScoreEnv</span></code></a> for indexing)</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 loop belongs to
+<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> / <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; Number of residues in the stretch(es) to score</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> / <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; Index of chain the stretch(es) belongs to
 (see <a class="reference internal" href="backbone_score_env.html#promod3.scoring.BackboneScoreEnv" title="promod3.scoring.BackboneScoreEnv"><code class="xref py py-class docutils literal"><span class="pre">BackboneScoreEnv</span></code></a> for indexing)</li>
 </ul>
 </td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Scores for the given loop, one for each residue.</p>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Scores for the given stretch(es), one for each residue.</p>
 </td>
 </tr>
-<tr class="field-odd 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></p>
+<tr class="field-odd 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> or <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>
+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></p>
 </td>
 </tr>
 <tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><p class="first last">same <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> as <a class="reference internal" href="#promod3.scoring.BackboneScorer.CalculateScore" title="promod3.scoring.BackboneScorer.CalculateScore"><code class="xref py py-meth docutils literal"><span class="pre">CalculateScore()</span></code></a>.</p>
@@ -308,25 +305,7 @@ set environment. Data in the environment, which overlaps with the given
 <em class="property">class </em><code class="descclassname">promod3.scoring.</code><code class="descname">CBPackingScorer</code><span class="sig-paren">(</span><em>cutoff</em>, <em>max_count</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.CBPackingScorer" title="Permalink to this definition">¶</a></dt>
 <dd><p>Inherits all functionality of <a class="reference internal" href="#promod3.scoring.BackboneScorer" title="promod3.scoring.BackboneScorer"><code class="xref py py-class docutils literal"><span class="pre">BackboneScorer</span></code></a>. Evaluates pseudo
 energies by counting the number of other CB positions within a certain
-<em>cutoff</em> radius of the CB position of the residue to be evaluated. The
-calculated score is normalized by the number of residues in the loop.
-In the default mode, the scorer scores a <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>
-given the defined environment. By placing this
-<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>, the score of the residues in the
-environment also change. It is possible to honour this effect by using the
-&#8220;IncludeEnv&#8221; mode. In this alternative mode, every environment residue close
-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> also contributes
-to the final score by adding the difference in score when the environment
-residue sees the original environment and the score when the environment would
-be modified by the <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>. You choose the mode
-by specifically calling the according CalculateEnergy functions.
-If you call the CalculateScore function from the parent class
-(e.g. when the scorer is part of the <a class="reference internal" href="#promod3.scoring.BackboneOverallScorer" title="promod3.scoring.BackboneOverallScorer"><code class="xref py py-class docutils literal"><span class="pre">BackboneOverallScorer</span></code></a>), it
-gets checked what mode is currently active. You can toggle the mode by calling
-the appropriate functions in this class. By default (when you load a scorer or
-when you create a new scorer) the classic version gets called. If you want to
-get per residue scores, the &#8220;IncludeEnv&#8221; mode makes not much sense and the
-scorer throws an error if a profile is requeset in this mode.</p>
+<em>cutoff</em> radius of the CB position of the residue to be evaluated.</p>
 <p>The scorer needs to be initialized either by loading a predefined scorer (e.g.
 <a class="reference internal" href="#promod3.scoring.LoadCBPackingScorer" title="promod3.scoring.LoadCBPackingScorer"><code class="xref py py-func docutils literal"><span class="pre">LoadCBPackingScorer()</span></code></a>) or by setting all energies (see
 <a class="reference internal" href="#promod3.scoring.CBPackingScorer.SetEnergy" title="promod3.scoring.CBPackingScorer.SetEnergy"><code class="xref py py-meth docutils literal"><span class="pre">SetEnergy()</span></code></a>).</p>
@@ -365,7 +344,7 @@ less machine-dependent).</p>
 <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#promod3.scoring.CBPackingScorer" title="promod3.scoring.CBPackingScorer"><code class="xref py py-class docutils literal"><span class="pre">CBPackingScorer</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 file cannot be opened or if
-file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a> for details).</td>
+file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a> for details).</td>
 </tr>
 </tbody>
 </table>
@@ -377,7 +356,7 @@ file cannot be parsed (see <a class="reference internal" href="../portableIO.htm
 <dt id="promod3.scoring.CBPackingScorer.SavePortable">
 <code class="descname">SavePortable</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.CBPackingScorer.SavePortable" title="Permalink to this definition">¶</a></dt>
 <dd><p>Saves a raw / portable binary representation. Use portable files for
-distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a>
+distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a>
 for details.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -401,7 +380,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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>
@@ -415,18 +394,17 @@ called for every type of amino acids and for every <em>count</em> &lt;= <em>max_
 </dd></dl>
 
 <dl class="method">
-<dt id="promod3.scoring.CBPackingScorer.UseClassicMode">
-<code class="descname">UseClassicMode</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.CBPackingScorer.UseClassicMode" title="Permalink to this definition">¶</a></dt>
-<dd><p>If you call this function, the default mode is set to classic if the
-CalculateScore function from the parent class gets called.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.scoring.CBPackingScorer.UseIncludeEnvMode">
-<code class="descname">UseIncludeEnvMode</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.CBPackingScorer.UseIncludeEnvMode" title="Permalink to this definition">¶</a></dt>
-<dd><p>If you call this function, the default mode is set to the
-described alternative mode if the CalculateScore function from the parent
-class gets called.</p>
+<dt id="promod3.scoring.CBPackingScorer.DoNormalize">
+<code class="descname">DoNormalize</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.CBPackingScorer.DoNormalize" 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"><strong>do_it</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 normalize the calculated scores by the number
+of residues to be scored. True by default.</td>
+</tr>
+</tbody>
+</table>
 </dd></dl>
 
 </dd></dl>
@@ -455,9 +433,8 @@ class gets called.</p>
 <dd><p>Inherits all functionality of <a class="reference internal" href="#promod3.scoring.BackboneScorer" title="promod3.scoring.BackboneScorer"><code class="xref py py-class docutils literal"><span class="pre">BackboneScorer</span></code></a>. Evaluates a pairwise
 pseudo interaction energy between CB atoms which are located within a <em>cutoff</em>
 and which are at least <em>seq_sep</em> residues apart. An energy is assigned to each
-distance using <em>bins</em> equally sized bins and distinguishing all possible pairs
-of amino acids. The calculated score is normalized by the number of
-interacting CB pairs.</p>
+distance using equally sized bins and distinguishing all possible pairs
+of amino acids.</p>
 <p>The scorer needs to be initialized either by loading a predefined scorer (e.g.
 <a class="reference internal" href="#promod3.scoring.LoadCBetaScorer" title="promod3.scoring.LoadCBetaScorer"><code class="xref py py-func docutils literal"><span class="pre">LoadCBetaScorer()</span></code></a>) or by setting all energies (see <a class="reference internal" href="#promod3.scoring.CBetaScorer.SetEnergy" title="promod3.scoring.CBetaScorer.SetEnergy"><code class="xref py py-meth docutils literal"><span class="pre">SetEnergy()</span></code></a>).</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -498,7 +475,7 @@ less machine-dependent).</p>
 <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#promod3.scoring.CBetaScorer" title="promod3.scoring.CBetaScorer"><code class="xref py py-class docutils literal"><span class="pre">CBetaScorer</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 file cannot be opened or if
-file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a> for details).</td>
+file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a> for details).</td>
 </tr>
 </tbody>
 </table>
@@ -510,7 +487,7 @@ file cannot be parsed (see <a class="reference internal" href="../portableIO.htm
 <dt id="promod3.scoring.CBetaScorer.SavePortable">
 <code class="descname">SavePortable</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.CBetaScorer.SavePortable" title="Permalink to this definition">¶</a></dt>
 <dd><p>Saves a raw / portable binary representation. Use portable files for
-distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a>
+distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a>
 for details.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -528,14 +505,17 @@ for details.</p>
 <dt id="promod3.scoring.CBetaScorer.SetEnergy">
 <code class="descname">SetEnergy</code><span class="sig-paren">(</span><em>aa1</em>, <em>aa2</em>, <em>bin</em>, <em>energy</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.CBetaScorer.SetEnergy" title="Permalink to this definition">¶</a></dt>
 <dd><p>Setup one energy value. Unless a predefined scorer is loaded, this must be
-called for every pair of amino acids and for every <em>bin</em> &lt; <em>bins</em>.</p>
+called for every pair of amino acids and for every <em>bin</em> &lt; <em>bins</em>.
+Internal symmetry is enforced =&gt; Calling SetEnergy(aa1, aa2, bin, energy) is
+equivalent to calling SetEnergy(aa1, aa2, bin, energy) AND
+SetEnergy(aa2, aa1, bin, energy).</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>aa1</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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.7.1)"><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>
@@ -548,6 +528,49 @@ called for every pair of amino acids and for every <em>bin</em> &lt; <em>bins</e
 </table>
 </dd></dl>
 
+<dl class="method">
+<dt id="promod3.scoring.CBetaScorer.DoInternalScores">
+<code class="descname">DoInternalScores</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.CBetaScorer.DoInternalScores" 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"><strong>do_it</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 include pairwise interactions between
+the scored residues. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.CBetaScorer.DoExternalScores">
+<code class="descname">DoExternalScores</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.CBetaScorer.DoExternalScores" 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"><strong>do_it</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 include pairwise interactions of the scored
+residues towards the surrounding environment.
+True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.CBetaScorer.DoNormalize">
+<code class="descname">DoNormalize</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.CBetaScorer.DoNormalize" 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"><strong>do_it</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 normalize the calculated scores by the number
+of residues to be scored. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
 </dd></dl>
 
 <dl class="function">
@@ -574,7 +597,7 @@ called for every pair of amino acids and for every <em>bin</em> &lt; <em>bins</e
 <dd><p>Inherits all functionality of <a class="reference internal" href="#promod3.scoring.BackboneScorer" title="promod3.scoring.BackboneScorer"><code class="xref py py-class docutils literal"><span class="pre">BackboneScorer</span></code></a>. Evaluates a pairwise
 pseudo interaction energy between the reduced representation of residues.
 Every residue gets represented by its CA position p and a directional
-component <code class="docutils literal"><span class="pre">v</span> <span class="pre">=</span> <span class="pre">norm(ca_pos-n_pos)</span> <span class="pre">+</span> <span class="pre">norm</span> <span class="pre">(ca_pos-c_pos)</span></code>. Residues with CA
+component <code class="docutils literal"><span class="pre">v</span> <span class="pre">=</span> <span class="pre">norm(p-n_pos)</span> <span class="pre">+</span> <span class="pre">norm(p-c_pos)</span></code>. Residues with CA
 distance &lt; <em>cutoff</em> and which are at least <em>seq_sep</em> residues apart are
 considered to be interacting. For interacting residues r1 and r2, we can
 define a line l between p1 and p2. The potential then considers:</p>
@@ -584,9 +607,6 @@ define a line l between p1 and p2. The potential then considers:</p>
 <li>beta =&gt; angle between v2 and l</li>
 <li>gamma =&gt; dihedral between (p1+v1,p1,p2,p2+v2)</li>
 </ul>
-<p>Every pairwise interaction within the loop and to the environment gets
-evaluated according to the given parametrization, summed up and finally
-normalized by the number of total interactions.</p>
 <p>The scorer needs to be initialized either by loading a predefined scorer (e.g.
 <a class="reference internal" href="#promod3.scoring.LoadReducedScorer" title="promod3.scoring.LoadReducedScorer"><code class="xref py py-func docutils literal"><span class="pre">LoadReducedScorer()</span></code></a>) or by setting all energies (see <a class="reference internal" href="#promod3.scoring.ReducedScorer.SetEnergy" title="promod3.scoring.ReducedScorer.SetEnergy"><code class="xref py py-meth docutils literal"><span class="pre">SetEnergy()</span></code></a>).</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -631,7 +651,7 @@ less machine-dependent).</p>
 <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#promod3.scoring.ReducedScorer" title="promod3.scoring.ReducedScorer"><code class="xref py py-class docutils literal"><span class="pre">ReducedScorer</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 file cannot be opened or if
-file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a> for details).</td>
+file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a> for details).</td>
 </tr>
 </tbody>
 </table>
@@ -643,7 +663,7 @@ file cannot be parsed (see <a class="reference internal" href="../portableIO.htm
 <dt id="promod3.scoring.ReducedScorer.SavePortable">
 <code class="descname">SavePortable</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.ReducedScorer.SavePortable" title="Permalink to this definition">¶</a></dt>
 <dd><p>Saves a raw / portable binary representation. Use portable files for
-distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a>
+distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a>
 for details.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -663,14 +683,19 @@ for details.</p>
 <dd><p>Setup one energy value. Unless a predefined scorer is loaded, this must be
 called for every pair of amino acids, every <em>dist_bin</em> &lt; <em>dist_bins</em>, every
 <em>alpha_bin</em> &lt; <em>angle_bins</em>, every <em>beta_bin</em> &lt; <em>angle_bins</em> and every
-<em>gamma_bin</em> &lt; <em>dihedral_bins</em>.</p>
+<em>gamma_bin</em> &lt; <em>dihedral_bins</em>.
+Internal symmetry is enforced =&gt; Calling
+SetEnergy(aa1, aa2, dist_bin, alpha_bin, beta_bin, energy) is
+equivalent to calling
+SetEnergy(aa1, aa2, dist_bin, alpha_bin, beta_bin, energy) AND
+SetEnergy(aa2, aa1, dist_bin, beta_bin, alpha_bin, energy).</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>aa1</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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.7.1)"><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>
@@ -686,6 +711,49 @@ called for every pair of amino acids, every <em>dist_bin</em> &lt; <em>dist_bins
 </table>
 </dd></dl>
 
+<dl class="method">
+<dt id="promod3.scoring.ReducedScorer.DoInternalScores">
+<code class="descname">DoInternalScores</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.ReducedScorer.DoInternalScores" 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"><strong>do_it</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 include pairwise interactions between
+the scored residues. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.ReducedScorer.DoExternalScores">
+<code class="descname">DoExternalScores</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.ReducedScorer.DoExternalScores" 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"><strong>do_it</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 include pairwise interactions of the scored
+residues towards the surrounding environment.
+True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.ReducedScorer.DoNormalize">
+<code class="descname">DoNormalize</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.ReducedScorer.DoNormalize" 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"><strong>do_it</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 normalize the calculated scores by the number
+of residues to be scored. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
 </dd></dl>
 
 <dl class="function">
@@ -711,28 +779,51 @@ called for every pair of amino acids, every <em>dist_bin</em> &lt; <em>dist_bins
 <em class="property">class </em><code class="descclassname">promod3.scoring.</code><code class="descname">ClashScorer</code><a class="headerlink" href="#promod3.scoring.ClashScorer" title="Permalink to this definition">¶</a></dt>
 <dd><p>Inherits all functionality of <a class="reference internal" href="#promod3.scoring.BackboneScorer" title="promod3.scoring.BackboneScorer"><code class="xref py py-class docutils literal"><span class="pre">BackboneScorer</span></code></a>. Calculates a simple
 clash score of a loop itself and with the set environment. There is no need to
-define any parameters here as all interaction energies are fixed. The
-calculated score is normalized by the number of residues in the loop.</p>
+define any parameters here as all interaction energies are fixed (see Eq. (11)
+in <a class="reference internal" href="other_scoring_functions.html#canutescu2003b" id="id1">[canutescu2003b]</a>).</p>
+<dl class="method">
+<dt id="promod3.scoring.ClashScorer.DoInternalScores">
+<code class="descname">DoInternalScores</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.ClashScorer.DoInternalScores" 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"><strong>do_it</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 include pairwise interactions between
+the scored residues. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.ClashScorer.DoExternalScores">
+<code class="descname">DoExternalScores</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.ClashScorer.DoExternalScores" 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"><strong>do_it</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 include pairwise interactions of the scored
+residues towards the surrounding environment.
+True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.ClashScorer.DoNormalize">
+<code class="descname">DoNormalize</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.ClashScorer.DoNormalize" 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"><strong>do_it</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 normalize the calculated scores by the number
+of residues to be scored. True by default.</td>
+</tr>
+</tbody>
+</table>
 </dd></dl>
 
-</div>
-<div class="section" id="densityscorer-class">
-<h2>DensityScorer class<a class="headerlink" href="#densityscorer-class" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="promod3.scoring.DensityScorer">
-<em class="property">class </em><code class="descclassname">promod3.scoring.</code><code class="descname">DensityScorer</code><a class="headerlink" href="#promod3.scoring.DensityScorer" title="Permalink to this definition">¶</a></dt>
-<dd><p>Inherits all functionality of <a class="reference internal" href="#promod3.scoring.BackboneScorer" title="promod3.scoring.BackboneScorer"><code class="xref py py-class docutils literal"><span class="pre">BackboneScorer</span></code></a>. Calculates the
-normalized cross correlation between a density generated from 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">BackboneList</span></code></a> and a set map.</p>
-<p>This scorer requires that the attached environment has a density map defined
-(see <a class="reference internal" href="backbone_score_env.html#promod3.scoring.BackboneScoreEnv.SetMap" title="promod3.scoring.BackboneScoreEnv.SetMap"><code class="xref py py-meth docutils literal"><span class="pre">BackboneScoreEnv.SetMap()</span></code></a>) as soon as a score is to be calculated.
-The <em>resolution</em> and <em>all_atom</em> flags that were specified in SetMap determine
-how the backbone list is translated into an artificial density map. If
-<em>all_atom</em> is set to False (which is recommended for low resolution maps), the
-artificial map gets constructed by only using CA positions instead of all
-atoms.</p>
-<p>Note that for this scorer 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>
 </dd></dl>
 
 </div>
@@ -757,9 +848,6 @@ states. State 1 for helical residues, state 2 for extended residues and state
 0 for other residues. If the state of two interacting particles is the same,
 thats the one from which the energy is extracted. In all other cases, the
 energy is extracted from the 0 state.</p>
-<p>Every pairwise interaction within the loop and to the environment gets
-evaluated according to the given parametrization, summed up and finally
-normalized by the number of residues in the loop.</p>
 <p>The scorer needs to be initialized either by loading a predefined scorer (e.g.
 <a class="reference internal" href="#promod3.scoring.LoadHBondScorer" title="promod3.scoring.LoadHBondScorer"><code class="xref py py-func docutils literal"><span class="pre">LoadHBondScorer()</span></code></a>) or by setting all energies (see <a class="reference internal" href="#promod3.scoring.HBondScorer.SetEnergy" title="promod3.scoring.HBondScorer.SetEnergy"><code class="xref py py-meth docutils literal"><span class="pre">SetEnergy()</span></code></a>).</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -811,7 +899,7 @@ less machine-dependent).</p>
 <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#promod3.scoring.HBondScorer" title="promod3.scoring.HBondScorer"><code class="xref py py-class docutils literal"><span class="pre">HBondScorer</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 file cannot be opened or if
-file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a> for details).</td>
+file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a> for details).</td>
 </tr>
 </tbody>
 </table>
@@ -823,7 +911,7 @@ file cannot be parsed (see <a class="reference internal" href="../portableIO.htm
 <dt id="promod3.scoring.HBondScorer.SavePortable">
 <code class="descname">SavePortable</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.HBondScorer.SavePortable" title="Permalink to this definition">¶</a></dt>
 <dd><p>Saves a raw / portable binary representation. Use portable files for
-distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a>
+distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a>
 for details.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -866,6 +954,49 @@ called for every state ([0, 1, 2]), every <em>d_bin</em> &lt; <em>d_bins</em>, e
 </table>
 </dd></dl>
 
+<dl class="method">
+<dt id="promod3.scoring.HBondScorer.DoInternalScores">
+<code class="descname">DoInternalScores</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.HBondScorer.DoInternalScores" 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"><strong>do_it</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 include pairwise interactions between
+the scored residues. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.HBondScorer.DoExternalScores">
+<code class="descname">DoExternalScores</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.HBondScorer.DoExternalScores" 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"><strong>do_it</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 include pairwise interactions of the scored
+residues towards the surrounding environment.
+True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.HBondScorer.DoNormalize">
+<code class="descname">DoNormalize</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.HBondScorer.DoNormalize" 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"><strong>do_it</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 normalize the calculated scores by the number
+of residues to be scored. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
 </dd></dl>
 
 <dl class="function">
@@ -895,8 +1026,7 @@ psipred prediction, its confidence and the actually occurring secondary
 structure in the model. In every score evaluation, the secondary structure of
 the loop is estimated by searching for hydrogen bonds leading to a secondary
 structure as defined by dssp. The hbonds are searched internally in the loop
-as well as in the environment. The final score gets summed up over all
-residues in the loop and normalized by the number of residues.</p>
+as well as in the environment.</p>
 <p>The scorer needs to be initialized either by loading a predefined scorer (e.g.
 <a class="reference internal" href="#promod3.scoring.LoadSSAgreementScorer" title="promod3.scoring.LoadSSAgreementScorer"><code class="xref py py-func docutils literal"><span class="pre">LoadSSAgreementScorer()</span></code></a>) or by setting scores for all possible states
 (see <a class="reference internal" href="#promod3.scoring.SSAgreementScorer.SetScore" title="promod3.scoring.SSAgreementScorer.SetScore"><code class="xref py py-meth docutils literal"><span class="pre">SetScore()</span></code></a>).</p>
@@ -924,7 +1054,7 @@ less machine-dependent).</p>
 <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#promod3.scoring.SSAgreementScorer" title="promod3.scoring.SSAgreementScorer"><code class="xref py py-class docutils literal"><span class="pre">SSAgreementScorer</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 file cannot be opened or if
-file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a> for details).</td>
+file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a> for details).</td>
 </tr>
 </tbody>
 </table>
@@ -936,7 +1066,7 @@ file cannot be parsed (see <a class="reference internal" href="../portableIO.htm
 <dt id="promod3.scoring.SSAgreementScorer.SavePortable">
 <code class="descname">SavePortable</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.SSAgreementScorer.SavePortable" title="Permalink to this definition">¶</a></dt>
 <dd><p>Saves a raw / portable binary representation. Use portable files for
-distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a>
+distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a>
 for details.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -974,6 +1104,20 @@ is loaded, this must be called for every combination of states.</p>
 </table>
 </dd></dl>
 
+<dl class="method">
+<dt id="promod3.scoring.SSAgreementScorer.DoNormalize">
+<code class="descname">DoNormalize</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.SSAgreementScorer.DoNormalize" 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"><strong>do_it</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 normalize the calculated scores by the number
+of residues to be scored. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
 </dd></dl>
 
 <dl class="function">
@@ -999,9 +1143,7 @@ is loaded, this must be called for every combination of states.</p>
 <em class="property">class </em><code class="descclassname">promod3.scoring.</code><code class="descname">TorsionScorer</code><span class="sig-paren">(</span><em>group_definitions</em>, <em>torsion_bins</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.TorsionScorer" title="Permalink to this definition">¶</a></dt>
 <dd><p>Inherits all functionality of <a class="reference internal" href="#promod3.scoring.BackboneScorer" title="promod3.scoring.BackboneScorer"><code class="xref py py-class docutils literal"><span class="pre">BackboneScorer</span></code></a>. Evaluates pseudo
 energies based on the identity of three consecutive residues and the phi/psi
-dihedral angles of the central residue. Every residue gets evaluated according
-to the set parametrization and the final score gets normalized by the total
-number of summed pseudo energies. The first phi and last psi angle get
+dihedral angles of the central residue. The first phi and last psi angle get
 determined with the help of the environment if set.</p>
 <p>The scorer needs to be initialized either by loading a predefined scorer (e.g.
 <a class="reference internal" href="#promod3.scoring.LoadTorsionScorer" title="promod3.scoring.LoadTorsionScorer"><code class="xref py py-func docutils literal"><span class="pre">LoadTorsionScorer()</span></code></a>) or by setting all energies (see <a class="reference internal" href="#promod3.scoring.TorsionScorer.SetEnergy" title="promod3.scoring.TorsionScorer.SetEnergy"><code class="xref py py-meth docutils literal"><span class="pre">SetEnergy()</span></code></a>)
@@ -1045,7 +1187,7 @@ less machine-dependent).</p>
 <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#promod3.scoring.TorsionScorer" title="promod3.scoring.TorsionScorer"><code class="xref py py-class docutils literal"><span class="pre">TorsionScorer</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 file cannot be opened or if
-file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a> for details).</td>
+file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a> for details).</td>
 </tr>
 </tbody>
 </table>
@@ -1057,7 +1199,7 @@ file cannot be parsed (see <a class="reference internal" href="../portableIO.htm
 <dt id="promod3.scoring.TorsionScorer.SavePortable">
 <code class="descname">SavePortable</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.TorsionScorer.SavePortable" title="Permalink to this definition">¶</a></dt>
 <dd><p>Saves a raw / portable binary representation. Use portable files for
-distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a>
+distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a>
 for details.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -1097,6 +1239,20 @@ numbering starting at 0.</li>
 </table>
 </dd></dl>
 
+<dl class="method">
+<dt id="promod3.scoring.TorsionScorer.DoNormalize">
+<code class="descname">DoNormalize</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.TorsionScorer.DoNormalize" 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"><strong>do_it</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 normalize the calculated scores by the number
+of residues to be scored. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
 </dd></dl>
 
 <dl class="function">
@@ -1121,15 +1277,54 @@ numbering starting at 0.</li>
 <dt id="promod3.scoring.PairwiseScorer">
 <em class="property">class </em><code class="descclassname">promod3.scoring.</code><code class="descname">PairwiseScorer</code><a class="headerlink" href="#promod3.scoring.PairwiseScorer" title="Permalink to this definition">¶</a></dt>
 <dd><p>Inherits all functionality of <a class="reference internal" href="#promod3.scoring.BackboneScorer" title="promod3.scoring.BackboneScorer"><code class="xref py py-class docutils literal"><span class="pre">BackboneScorer</span></code></a>. Evaluates a list of
-generic pairwise functions (see <a class="reference internal" href="backbone_score_env.html#promod3.scoring.PairwiseFunction" title="promod3.scoring.PairwiseFunction"><code class="xref py py-class docutils literal"><span class="pre">PairwiseFunction</span></code></a>). When evaluating a
-loop, the scores of all pairwise functions which involve a residue in the loop
-are summed up (the other residue can be either in the loop or in the env.) and
-normalized by the number of residues in the loop.</p>
-<p>This scorer assumes that the attached environment has pairwise functions
-defined (see <a class="reference internal" href="backbone_score_env.html#promod3.scoring.BackboneScoreEnv.ApplyPairwiseFunction" title="promod3.scoring.BackboneScoreEnv.ApplyPairwiseFunction"><code class="xref py py-meth docutils literal"><span class="pre">BackboneScoreEnv.ApplyPairwiseFunction()</span></code></a>) as soon as a
-score is to be calculated.</p>
+generic pairwise functions (see <a class="reference internal" href="backbone_score_env.html#promod3.scoring.PairwiseFunction" title="promod3.scoring.PairwiseFunction"><code class="xref py py-class docutils literal"><span class="pre">PairwiseFunction</span></code></a>).
+That are set in the attached scoring environment
+(see <a class="reference internal" href="backbone_score_env.html#promod3.scoring.BackboneScoreEnv.ApplyPairwiseFunction" title="promod3.scoring.BackboneScoreEnv.ApplyPairwiseFunction"><code class="xref py py-meth docutils literal"><span class="pre">BackboneScoreEnv.ApplyPairwiseFunction()</span></code></a>).</p>
 <p>Note that for this scorer 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>
+<dl class="method">
+<dt id="promod3.scoring.PairwiseScorer.DoInternalScores">
+<code class="descname">DoInternalScores</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.PairwiseScorer.DoInternalScores" 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"><strong>do_it</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 include pairwise interactions between
+the scored residues. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.PairwiseScorer.DoExternalScores">
+<code class="descname">DoExternalScores</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.PairwiseScorer.DoExternalScores" 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"><strong>do_it</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>, true by default.) &#8211; Whether to include pairwise interactions of the scored
+residues towards the surrounding environment.
+True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.PairwiseScorer.DoNormalize">
+<code class="descname">DoNormalize</code><span class="sig-paren">(</span><em>do_it</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.PairwiseScorer.DoNormalize" 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"><strong>do_it</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 normalize the calculated scores by the number
+of residues to be scored. True by default.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
 </dd></dl>
 
 </div>
@@ -1150,7 +1345,6 @@ combining this to other scores, where it is commonly the other way around.</p>
 <li><a class="reference internal" href="#cbetascorer-class">CBetaScorer class</a></li>
 <li><a class="reference internal" href="#reducedscorer-class">ReducedScorer class</a></li>
 <li><a class="reference internal" href="#clashscorer-class">ClashScorer class</a></li>
-<li><a class="reference internal" href="#densityscorer-class">DensityScorer class</a></li>
 <li><a class="reference internal" href="#hbondscorer-class">HBondScorer class</a></li>
 <li><a class="reference internal" href="#ssagreementscorer-class">SSAgreementScorer class</a></li>
 <li><a class="reference internal" href="#torsionscorer-class">TorsionScorer class</a></li>
@@ -1186,9 +1380,6 @@ combining this to other scores, where it is commonly the other way around.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -1199,8 +1390,8 @@ combining this to other scores, where it is commonly the other way around.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/scoring/backbone_scorers.txt"
diff --git a/doc/html/scoring/index.html b/doc/html/scoring/index.html
index eeee00139663ac1378844f314705e982f862f19b..a4932116e359e50f04612cff56958ab438775738 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.1.0 documentation</title>
+    <title>scoring - Loop Scoring &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -43,35 +45,30 @@
 <span id="scoring-loop-scoring"></span><h1><a class="reference internal" href="#module-promod3.scoring" title="promod3.scoring: Loop Scoring"><code class="xref py py-mod docutils literal"><span class="pre">scoring</span></code></a> - Loop Scoring<a class="headerlink" href="#module-promod3.scoring" title="Permalink to this headline">¶</a></h1>
 <p>Tools and algorithms to score loops. The scoring system is split between an
 environment which contains model-specific data and scorers which evaluate loops.</p>
-<p>In this example, we load a structure, setup a score environment and a few
-scorers and finally score some loops:</p>
-<div class="highlight-python"><div class="highlight"><pre><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</span> <span class="kn">import</span> <span class="n">loop</span><span class="p">,</span> <span class="n">scoring</span>
+<p>In this example, we load a structure, setup a score environment, link a few
+scorers to it and finally score some loops:</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="p">,</span> <span class="n">seq</span>
+<span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">loop</span><span class="p">,</span> <span class="n">scoring</span>
 
-<span class="c"># load data</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="s">&quot;data/1CRN.pdb&quot;</span><span class="p">)</span>
-<span class="n">ent_seq</span> <span class="o">=</span> <span class="n">seq</span><span class="o">.</span><span class="n">SequenceFromChain</span><span class="p">(</span><span class="s">&#39;A&#39;</span><span class="p">,</span> <span class="n">ent</span><span class="o">.</span><span class="n">FindChain</span><span class="p">(</span><span class="s">&#39;A&#39;</span><span class="p">))</span>
+<span class="c1"># load data</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="s2">&quot;data/1CRN.pdb&quot;</span><span class="p">)</span>
+<span class="n">ent_seq</span> <span class="o">=</span> <span class="n">seq</span><span class="o">.</span><span class="n">SequenceFromChain</span><span class="p">(</span><span class="s1">&#39;A&#39;</span><span class="p">,</span> <span class="n">ent</span><span class="o">.</span><span class="n">FindChain</span><span class="p">(</span><span class="s1">&#39;A&#39;</span><span class="p">))</span>
 
-<span class="c"># setup score environment linked to entity</span>
+<span class="c1"># setup score environment linked to entity</span>
 <span class="n">score_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">ent_seq</span><span class="p">)</span>
 <span class="n">score_env</span><span class="o">.</span><span class="n">SetInitialEnvironment</span><span class="p">(</span><span class="n">ent</span><span class="p">)</span>
 
-<span class="c"># setup scorers attached to that env.</span>
+<span class="c1"># setup scorers attached to that env.</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">score_env</span><span class="p">)</span>
 <span class="n">cbeta_scorer</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">cbeta_scorer</span><span class="o">.</span><span class="n">AttachEnvironment</span><span class="p">(</span><span class="n">score_env</span><span class="p">)</span>
 
-<span class="c"># get backbone list to be scored</span>
-<span class="c"># (here extracted from the structure, but it could be anything)</span>
-<span class="n">ev</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="s">&quot;rnum &gt;= 23 and rnum &lt;= 30&quot;</span><span class="p">)</span>
-<span class="n">bb_seq</span> <span class="o">=</span> <span class="s">&#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">ev</span><span class="o">.</span><span class="n">residues</span><span class="p">])</span>
-<span class="n">bb_res</span> <span class="o">=</span> <span class="p">[</span><span class="n">r</span><span class="o">.</span><span class="n">handle</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">ev</span><span class="o">.</span><span class="n">residues</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">bb_res</span><span class="p">)</span>
-
-<span class="c"># score it (note that 23 is the starting res. num.)</span>
-<span class="k">print</span> <span class="s">&quot;Clash-Score&quot;</span><span class="p">,</span> <span class="n">clash_scorer</span><span class="o">.</span><span class="n">CalculateScore</span><span class="p">(</span><span class="n">bb_list</span><span class="p">,</span> <span class="mi">23</span><span class="p">)</span>
-<span class="k">print</span> <span class="s">&quot;CBeta-Score&quot;</span><span class="p">,</span> <span class="n">cbeta_scorer</span><span class="o">.</span><span class="n">CalculateScore</span><span class="p">(</span><span class="n">bb_list</span><span class="p">,</span> <span class="mi">23</span><span class="p">)</span>
+<span class="c1"># calculate scores for 10 residues starting at residue number 23.</span>
+<span class="c1"># all required structural information comes from the environment</span>
+<span class="c1"># that can evolve as the modelling proceeds.</span>
+<span class="nb">print</span> <span class="s2">&quot;Clash-Score&quot;</span><span class="p">,</span> <span class="n">clash_scorer</span><span class="o">.</span><span class="n">CalculateScore</span><span class="p">(</span><span class="mi">23</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
+<span class="nb">print</span> <span class="s2">&quot;CBeta-Score&quot;</span><span class="p">,</span> <span class="n">cbeta_scorer</span><span class="o">.</span><span class="n">CalculateScore</span><span class="p">(</span><span class="mi">23</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
 </pre></div>
 </div>
 <p>Contents:</p>
@@ -90,7 +87,6 @@ scorers and finally score some loops:</p>
 <li class="toctree-l2"><a class="reference internal" href="backbone_scorers.html#cbetascorer-class">CBetaScorer class</a></li>
 <li class="toctree-l2"><a class="reference internal" href="backbone_scorers.html#reducedscorer-class">ReducedScorer class</a></li>
 <li class="toctree-l2"><a class="reference internal" href="backbone_scorers.html#clashscorer-class">ClashScorer class</a></li>
-<li class="toctree-l2"><a class="reference internal" href="backbone_scorers.html#densityscorer-class">DensityScorer class</a></li>
 <li class="toctree-l2"><a class="reference internal" href="backbone_scorers.html#hbondscorer-class">HBondScorer class</a></li>
 <li class="toctree-l2"><a class="reference internal" href="backbone_scorers.html#ssagreementscorer-class">SSAgreementScorer class</a></li>
 <li class="toctree-l2"><a class="reference internal" href="backbone_scorers.html#torsionscorer-class">TorsionScorer class</a></li>
@@ -105,6 +101,10 @@ scorers and finally score some loops:</p>
 <li class="toctree-l2"><a class="reference internal" href="all_atom_scorers.html#allatomclashscorer-class">AllAtomClashScorer class</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="other_scoring_functions.html">Other Scoring Functions</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="other_scoring_functions.html#scoring-functions-from-scwrl3">Scoring Functions from SCWRL3</a></li>
+</ul>
+</li>
 </ul>
 </div>
 </div>
@@ -140,9 +140,6 @@ scorers and finally score some loops:</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -153,8 +150,8 @@ scorers and finally score some loops:</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/scoring/index.txt"
diff --git a/doc/html/scoring/other_scoring_functions.html b/doc/html/scoring/other_scoring_functions.html
new file mode 100644
index 0000000000000000000000000000000000000000..84fd8c9ef503d117db981bca48acef9d3ac51edb
--- /dev/null
+++ b/doc/html/scoring/other_scoring_functions.html
@@ -0,0 +1,182 @@
+<!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>Other Scoring Functions &mdash; ProMod3 1.2.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.2.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>
+    <link rel="top" title="ProMod3 1.2.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" />
+   
+  <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="other-scoring-functions">
+<h1>Other Scoring Functions<a class="headerlink" href="#other-scoring-functions" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="scoring-functions-from-scwrl3">
+<h2>Scoring Functions from SCWRL3<a class="headerlink" href="#scoring-functions-from-scwrl3" title="Permalink to this headline">¶</a></h2>
+<dl class="method">
+<dt id="promod3.scoring.SCWRL3PairwiseScore">
+<code class="descclassname">promod3.scoring.</code><code class="descname">SCWRL3PairwiseScore</code><span class="sig-paren">(</span><em>d</em>, <em>Rij</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.SCWRL3PairwiseScore" title="Permalink to this definition">¶</a></dt>
+<dd><p>Pairwise score from the SCWRL3 sidechain construction algorithm
+<a class="reference internal" href="#canutescu2003b" id="id1">[canutescu2003b]</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>d</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; Distance between the two interacting particles</li>
+<li><strong>Rij</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; <p>Summed hard-sphere radii of the interacting particles.
+Suggestions from the paper:</p>
+<ul>
+<li>carbon: 1.6</li>
+<li>oxygen: 1.3</li>
+<li>nitrogen: 1.3</li>
+<li>sulfur: 1.7</li>
+</ul>
+</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">The score</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://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></p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="promod3.scoring.SCWRL3DisulfidScore">
+<code class="descclassname">promod3.scoring.</code><code class="descname">SCWRL3DisulfidScore</code><span class="sig-paren">(</span><em>ca_pos_one</em>, <em>cb_pos_one</em>, <em>sg_pos_one                              ca_pos_two</em>, <em>cb_pos_two</em>, <em>sg_pos_two</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.scoring.SCWRL3DisulfidScore" title="Permalink to this definition">¶</a></dt>
+<dd><p>Implements the empirically derived disulfid score from the SCWRL3 sidechain
+construction algorithm <a class="reference internal" href="#canutescu2003b" id="id2">[canutescu2003b]</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>ca_pos_one</strong> (<code class="xref py py-class docutils literal"><span class="pre">ost.geoom.Vec3</span></code>) &#8211; CA carbon position of first amino acid</li>
+<li><strong>cb_pos_one</strong> (<code class="xref py py-class docutils literal"><span class="pre">ost.geoom.Vec3</span></code>) &#8211; CB carbon position of first amino acid</li>
+<li><strong>sg_pos_one</strong> (<code class="xref py py-class docutils literal"><span class="pre">ost.geoom.Vec3</span></code>) &#8211; SG sulfur position of first amino acid</li>
+<li><strong>ca_pos_two</strong> (<code class="xref py py-class docutils literal"><span class="pre">ost.geoom.Vec3</span></code>) &#8211; CA carbon position of second amino acid</li>
+<li><strong>cb_pos_two</strong> (<code class="xref py py-class docutils literal"><span class="pre">ost.geoom.Vec3</span></code>) &#8211; CB carbon position of second amino acid</li>
+<li><strong>sg_pos_two</strong> (<code class="xref py py-class docutils literal"><span class="pre">ost.geoom.Vec3</span></code>) &#8211; SG sulfur position of second amino acid</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">The score</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://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></p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<table class="docutils citation" frame="void" id="canutescu2003b" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label">[canutescu2003b]</td><td><em>(<a class="fn-backref" href="#id1">1</a>, <a class="fn-backref" href="#id2">2</a>)</em> Canutescu AA, Shelenkov AA, Dunbrack RL Jr. (2003). A graph-theory algorithm for rapid protein side-chain prediction. Protein Sci (2003).</td></tr>
+</tbody>
+</table>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+  <h3><a href="../index.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Other Scoring Functions</a><ul>
+<li><a class="reference internal" href="#scoring-functions-from-scwrl3">Scoring Functions from SCWRL3</a></li>
+</ul>
+</li>
+</ul>
+<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><a href="index.html"><code class="docutils literal"><span class="pre">scoring</span></code> - Loop Scoring</a><ul>
+      <li>Previous: <a href="all_atom_scorers.html" title="previous chapter">All Atom Scorers</a></li>
+      <li>Next: <a href="../loop/index.html" title="next chapter"><code class="docutils literal"><span class="pre">loop</span></code> - Loop Handling</a></li>
+  </ul></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/scoring/other_scoring_functions.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;2017, ProMod3 authors.
+      
+      |
+      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/scoring/other_scoring_functions.txt"
+          rel="nofollow">Page source</a>
+    </div>
+
+    
+
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/html/search.html b/doc/html/search.html
index 98d9a3d5ad7153ae993b4f5982f6a12181cde6d8..1c793321b2669486cb96bdc37c9952d85df9c8d9 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.1.0 documentation</title>
+    <title>Search &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.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="_static/searchtools.js"></script>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 1.2.0 documentation" href="index.html" />
   <script type="text/javascript">
     jQuery(function() { Search.loadIndex("searchindex.js"); });
   </script>
@@ -32,12 +32,14 @@
   <script type="text/javascript" id="searchindexloader"></script>
   
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -87,8 +89,8 @@
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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>
 
diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js
index da50d0e0a294c6e24a3095b14bcb0d8117909f0d..0c62df2650b19609ccc5d2fdf8536279e9693cc2 100644
--- a/doc/html/searchindex.js
+++ b/doc/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({envversion:46,filenames:["actions/index","actions/index_dev","buildsystem","changelog","cmake/index","contributing","core/geometry","core/helper","core/index","core/pm3argparse","core/runtime_profiling","core/setcompoundschemlib","dev_setup","developers","gettingstarted","index","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","scoring/all_atom_scorers","scoring/backbone_score_env","scoring/backbone_scorers","scoring/index","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:{"":{"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,1,0,"-"]},"promod3.core":{ConstructAtomPos:[6,6,1,""],ConstructCBetaPos:[6,6,1,""],ConstructCTerminalOxygens:[6,6,1,""],EvaluateGromacsPosRule:[6,6,1,""],RotationAroundLine:[6,6,1,""],StaticRuntimeProfiler:[10,2,1,""],StemCoords:[6,2,1,""],StemPairOrientation:[6,2,1,""],helper:[7,1,0,"-"],pm3argparse:[9,1,0,"-"]},"promod3.core.StaticRuntimeProfiler":{Clear:[10,4,1,""],IsEnabled:[10,4,1,""],PrintSummary:[10,4,1,""],Start:[10,4,1,""],StartScoped:[10,4,1,""],Stop:[10,4,1,""]},"promod3.core.StemCoords":{c_coord:[6,5,1,""],ca_coord:[6,5,1,""],n_coord:[6,5,1,""]},"promod3.core.StemPairOrientation":{angle_four:[6,5,1,""],angle_one:[6,5,1,""],angle_three:[6,5,1,""],angle_two:[6,5,1,""],distance:[6,5,1,""]},"promod3.core.helper":{FileExists:[7,6,1,""],FileExtension:[7,6,1,""],FileGzip:[7,6,1,""],MsgErrorAndExit:[7,6,1,""]},"promod3.core.pm3argparse":{PM3ArgumentParser:[9,2,1,""]},"promod3.core.pm3argparse.PM3ArgumentParser":{"__init__":[9,3,1,""],AddAlignment:[9,3,1,""],AddStructure:[9,3,1,""],AssembleParser:[9,3,1,""],Parse:[9,3,1,""],action:[9,5,1,""]},"promod3.loop":{AllAtomEnv:[16,2,1,""],AllAtomEnvPositions:[16,2,1,""],AllAtomPositions:[16,2,1,""],AminoAcidAtom:[16,2,1,""],AminoAcidHydrogen:[16,2,1,""],AminoAcidLookup:[16,2,1,""],BackboneList:[17,2,1,""],CoordInfo:[21,2,1,""],ForcefieldAminoAcid:[20,2,1,""],ForcefieldBondInfo:[20,2,1,""],ForcefieldConnectivity:[20,2,1,""],ForcefieldHarmonicAngleInfo:[20,2,1,""],ForcefieldHarmonicImproperInfo:[20,2,1,""],ForcefieldLJPairInfo:[20,2,1,""],ForcefieldLookup:[20,2,1,""],ForcefieldPeriodicDihedralInfo:[20,2,1,""],ForcefieldUreyBradleyAngleInfo:[20,2,1,""],FragDB:[21,2,1,""],Fragger:[21,2,1,""],FraggerMap:[21,2,1,""],FragmentInfo:[21,2,1,""],LoadFragDB:[19,3,1,""],LoadStructureDB:[19,3,1,""],LoadTorsionSampler:[19,3,1,""],LoadTorsionSamplerCoil:[19,3,1,""],LoadTorsionSamplerExtended:[19,3,1,""],LoadTorsionSamplerHelical:[19,3,1,""],MmSystemCreator:[20,2,1,""],PsipredPrediction:[21,2,1,""],StructureDB:[21,2,1,""],TorsionSampler:[22,2,1,""]},"promod3.loop.AllAtomEnv":{ClearEnvironment:[16,3,1,""],GetAllAtomPositions:[16,3,1,""],GetEnvironment:[16,3,1,""],GetSeqres:[16,3,1,""],SetEnvironment:[16,3,1,""],SetInitialEnvironment:[16,3,1,""]},"promod3.loop.AllAtomEnvPositions":{all_pos:[16,5,1,""],res_indices:[16,5,1,""]},"promod3.loop.AllAtomPositions":{AllAtomPositions:[16,3,1,""],ClearPos:[16,3,1,""],ClearResidue:[16,3,1,""],Copy:[16,3,1,""],Extract:[16,3,1,""],ExtractBackbone:[16,3,1,""],GetAA:[16,3,1,""],GetFirstIndex:[16,3,1,""],GetIndex:[16,3,1,""],GetLastIndex:[16,3,1,""],GetNumAtoms:[16,3,1,""],GetNumResidues:[16,3,1,""],GetOmegaTorsion:[16,3,1,""],GetPhiTorsion:[16,3,1,""],GetPos:[16,3,1,""],GetPsiTorsion:[16,3,1,""],GetSequence:[16,3,1,""],InsertInto:[16,3,1,""],IsAllSet:[16,3,1,""],IsAnySet:[16,3,1,""],IsSet:[16,3,1,""],SetPos:[16,3,1,""],SetResidue:[16,3,1,""],ToEntity:[16,3,1,""]},"promod3.loop.AminoAcidLookup":{GetAA:[16,4,1,""],GetAAA:[16,4,1,""],GetAAH:[16,4,1,""],GetAnchorAtomIndex:[16,4,1,""],GetAtomName:[16,4,1,""],GetAtomNameAmber:[16,4,1,""],GetAtomNameCharmm:[16,4,1,""],GetElement:[16,4,1,""],GetH1Index:[16,4,1,""],GetH2Index:[16,4,1,""],GetH3Index:[16,4,1,""],GetHNIndex:[16,4,1,""],GetHydrogenIndex:[16,4,1,""],GetIndex:[16,4,1,""],GetMaxNumAtoms:[16,4,1,""],GetMaxNumHydrogens:[16,4,1,""],GetNumAtoms:[16,4,1,""],GetNumHydrogens:[16,4,1,""],GetOLC:[16,4,1,""]},"promod3.loop.BackboneList":{"__len__":[17,3,1,""],ApplyTransform:[17,3,1,""],BackboneList:[17,3,1,""],CARMSD:[17,3,1,""],Copy:[17,3,1,""],Extract:[17,3,1,""],GetAA:[17,3,1,""],GetBounds:[17,3,1,""],GetC:[17,3,1,""],GetCA:[17,3,1,""],GetCB:[17,3,1,""],GetN:[17,3,1,""],GetO:[17,3,1,""],GetOLC:[17,3,1,""],GetOmegaTorsion:[17,3,1,""],GetPhiTorsion:[17,3,1,""],GetPsiTorsion:[17,3,1,""],GetSequence:[17,3,1,""],GetTransform:[17,3,1,""],InsertInto:[17,3,1,""],MinCADistance:[17,3,1,""],RMSD:[17,3,1,""],ReconstructCBetaPositions:[17,3,1,""],ReconstructCStemOxygen:[17,3,1,""],ReconstructOxygenPositions:[17,3,1,""],ReplaceFragment:[17,3,1,""],RotateAroundOmegaTorsion:[17,3,1,""],RotateAroundPhiPsiTorsion:[17,3,1,""],RotateAroundPhiTorsion:[17,3,1,""],RotateAroundPsiTorsion:[17,3,1,""],Set:[17,3,1,""],SetAA:[17,3,1,""],SetAroundOmegaTorsion:[17,3,1,""],SetAroundPhiPsiTorsion:[17,3,1,""],SetAroundPhiTorsion:[17,3,1,""],SetAroundPsiTorsion:[17,3,1,""],SetBackrub:[17,3,1,""],SetC:[17,3,1,""],SetCA:[17,3,1,""],SetCB:[17,3,1,""],SetN:[17,3,1,""],SetO:[17,3,1,""],SetOLC:[17,3,1,""],SetSequence:[17,3,1,""],SuperposeOnto:[17,3,1,""],ToDensity:[17,3,1,""],ToEntity:[17,3,1,""],TransOmegaTorsions:[17,3,1,""],append:[17,3,1,""],clear:[17,3,1,""],empty:[17,3,1,""],resize:[17,3,1,""]},"promod3.loop.CoordInfo":{offset:[21,5,1,""],pdb_id:[21,5,1,""],size:[21,5,1,""]},"promod3.loop.ForcefieldBondInfo":{bond_length:[20,5,1,""],force_constant:[20,5,1,""],index_one:[20,5,1,""],index_two:[20,5,1,""]},"promod3.loop.ForcefieldConnectivity":{harmonic_angles:[20,5,1,""],harmonic_bonds:[20,5,1,""],harmonic_impropers:[20,5,1,""],lj_pairs:[20,5,1,""],periodic_dihedrals:[20,5,1,""],periodic_impropers:[20,5,1,""],urey_bradley_angles:[20,5,1,""]},"promod3.loop.ForcefieldHarmonicAngleInfo":{angle:[20,5,1,""],force_constant:[20,5,1,""],index_one:[20,5,1,""],index_three:[20,5,1,""],index_two:[20,5,1,""]},"promod3.loop.ForcefieldHarmonicImproperInfo":{angle:[20,5,1,""],force_constant:[20,5,1,""],index_four:[20,5,1,""],index_one:[20,5,1,""],index_three:[20,5,1,""],index_two:[20,5,1,""]},"promod3.loop.ForcefieldLJPairInfo":{epsilon:[20,5,1,""],index_one:[20,5,1,""],index_two:[20,5,1,""],sigma:[20,5,1,""]},"promod3.loop.ForcefieldLookup":{GetAA:[20,3,1,""],GetCharges:[20,3,1,""],GetDefault:[20,4,1,""],GetDisulfidConnectivity:[20,3,1,""],GetEpsilons:[20,3,1,""],GetFudgeLJ:[20,3,1,""],GetFudgeQQ:[20,3,1,""],GetHeavyIndex:[20,3,1,""],GetHydrogenIndex:[20,3,1,""],GetInternalConnectivity:[20,3,1,""],GetMasses:[20,3,1,""],GetNumAtoms:[20,3,1,""],GetOXTIndex:[20,3,1,""],GetPeptideBoundConnectivity:[20,3,1,""],GetSigmas:[20,3,1,""],Load:[20,4,1,""],LoadCHARMM:[20,4,1,""],LoadPortable:[20,4,1,""],Save:[20,3,1,""],SavePortable:[20,3,1,""],SetCharges:[20,3,1,""],SetDefault:[20,4,1,""],SetDisulfidConnectivity:[20,3,1,""],SetEpsilons:[20,3,1,""],SetFudgeLJ:[20,3,1,""],SetFudgeQQ:[20,3,1,""],SetInternalConnectivity:[20,3,1,""],SetMasses:[20,3,1,""],SetPeptideBoundConnectivity:[20,3,1,""],SetSigmas:[20,3,1,""]},"promod3.loop.ForcefieldPeriodicDihedralInfo":{force_constant:[20,5,1,""],index_four:[20,5,1,""],index_one:[20,5,1,""],index_three:[20,5,1,""],index_two:[20,5,1,""],multiplicity:[20,5,1,""],phase:[20,5,1,""]},"promod3.loop.ForcefieldUreyBradleyAngleInfo":{angle:[20,5,1,""],angle_force_constant:[20,5,1,""],bond_force_constant:[20,5,1,""],bond_length:[20,5,1,""],index_one:[20,5,1,""],index_three:[20,5,1,""],index_two:[20,5,1,""]},"promod3.loop.FragDB":{AddFragments:[21,3,1,""],GetAngularBinSize:[21,3,1,""],GetDistBinSize:[21,3,1,""],GetNumFragments:[21,3,1,""],GetNumStemPairs:[21,3,1,""],HasFragLength:[21,3,1,""],Load:[21,4,1,""],LoadPortable:[21,4,1,""],MaxFragLength:[21,3,1,""],PrintStatistics:[21,3,1,""],Save:[21,3,1,""],SavePortable:[21,3,1,""],SearchDB:[21,3,1,""]},"promod3.loop.Fragger":{"__getitem__":[21,3,1,""],"__len__":[21,3,1,""],AddSSAgreeParameters:[21,3,1,""],AddSeqIDParameters:[21,3,1,""],AddSeqSimParameters:[21,3,1,""],AddSequenceProfileParameters:[21,3,1,""],AddStructureProfileParameters:[21,3,1,""],AddTorsionProbabilityParameters:[21,3,1,""],Fill:[21,3,1,""],GetFragmentInfo:[21,3,1,""],GetScore:[21,3,1,""]},"promod3.loop.FraggerMap":{"__getitem__":[21,3,1,""],"__setitem__":[21,3,1,""],Contains:[21,3,1,""],Load:[21,3,1,""],LoadBB:[21,3,1,""],Save:[21,3,1,""],SaveBB:[21,3,1,""]},"promod3.loop.FragmentInfo":{chain_index:[21,5,1,""],length:[21,5,1,""],offset:[21,5,1,""]},"promod3.loop.MmSystemCreator":{ExtractLoopPositions:[20,3,1,""],GetCpuPlatformSupport:[20,3,1,""],GetDisulfidBridges:[20,3,1,""],GetForcefieldAminoAcids:[20,3,1,""],GetIndexing:[20,3,1,""],GetLoopLengths:[20,3,1,""],GetLoopStartIndices:[20,3,1,""],GetNumLoopResidues:[20,3,1,""],GetNumResidues:[20,3,1,""],GetSimulation:[20,3,1,""],SetCpuPlatformSupport:[20,3,1,""],SetupSystem:[20,3,1,""],UpdatePositions:[20,3,1,""]},"promod3.loop.PsipredPrediction":{"__len__":[21,3,1,""],Add:[21,3,1,""],Extract:[21,3,1,""],FromHHM:[21,3,1,""],FromHoriz:[21,3,1,""],GetConfidence:[21,3,1,""],GetConfidences:[21,3,1,""],GetPrediction:[21,3,1,""],GetPredictions:[21,3,1,""],PsipredPrediction:[21,3,1,""]},"promod3.loop.StructureDB":{AddCoordinates:[21,3,1,""],GenerateStructureProfile:[21,3,1,""],GetBackboneList:[21,3,1,""],GetCoordIndex:[21,3,1,""],GetCoordInfo:[21,3,1,""],GetDSSPStates:[21,3,1,""],GetDihedralAngles:[21,3,1,""],GetNumCoords:[21,3,1,""],GetResidueDepths:[21,3,1,""],GetSequence:[21,3,1,""],GetSequenceProfile:[21,3,1,""],GetSolventAccessibilitites:[21,3,1,""],GetStructureProfile:[21,3,1,""],GetSubDB:[21,3,1,""],Load:[21,4,1,""],LoadPortable:[21,4,1,""],PrintStatistics:[21,3,1,""],Save:[21,3,1,""],SavePortable:[21,3,1,""],SetStructureProfile:[21,3,1,""]},"promod3.loop.TorsionSampler":{Draw:[22,3,1,""],DrawPhiGivenPsi:[22,3,1,""],DrawPsiGivenPhi:[22,3,1,""],ExtractStatistics:[22,3,1,""],GetBinSize:[22,3,1,""],GetBinsPerDimension:[22,3,1,""],GetHistogramIndex:[22,3,1,""],GetHistogramIndices:[22,3,1,""],GetPhiProbabilityGivenPsi:[22,3,1,""],GetProbability:[22,3,1,""],GetPsiProbabilityGivenPhi:[22,3,1,""],Load:[22,4,1,""],LoadPortable:[22,4,1,""],Save:[22,3,1,""],SavePortable:[22,3,1,""],UpdateDistributions:[22,3,1,""]},"promod3.modelling":{AllAtomRelaxer:[27,2,1,""],BackboneRelaxer:[27,2,1,""],BuildFromRawModel:[30,6,1,""],BuildRawModel:[30,6,1,""],BuildSidechains:[30,6,1,""],CCD:[27,2,1,""],CCDCloser:[29,2,1,""],CTerminalCloser:[29,2,1,""],CheckFinalModel:[30,6,1,""],ClearGaps:[24,6,1,""],CloseGaps:[30,6,1,""],CloseLargeDeletions:[30,6,1,""],CloseSmallDeletions:[30,6,1,""],CountEnclosedGaps:[24,6,1,""],CountEnclosedInsertions:[24,6,1,""],DirtyCCDCloser:[29,2,1,""],ExponentialCooler:[29,2,1,""],FillLoopsByDatabase:[30,6,1,""],FillLoopsByMonteCarlo:[30,6,1,""],FilterCandidates:[28,6,1,""],FilterCandidatesWithSC:[28,6,1,""],FraggerHandle:[23,2,1,""],FragmentSampler:[29,2,1,""],FullGapExtender:[24,2,1,""],GapExtender:[24,2,1,""],GenerateDeNovoTrajectories:[23,6,1,""],GetRingPunches:[28,6,1,""],GetRings:[28,6,1,""],HasRingPunches:[28,6,1,""],InsertLoop:[30,6,1,""],InsertLoopClearGaps:[24,6,1,""],IsAllAtomScoringSetUp:[30,6,1,""],IsBackboneScoringSetUp:[30,6,1,""],KIC:[27,2,1,""],KICCloser:[29,2,1,""],LinearScorer:[29,2,1,""],LoopCandidates:[26,2,1,""],MergeGaps:[24,6,1,""],MergeGapsByDistance:[30,6,1,""],MergeMHandle:[30,6,1,""],MinimizeModelEnergy:[30,6,1,""],ModelTermini:[30,6,1,""],ModellingHandle:[30,2,1,""],NTerminalCloser:[29,2,1,""],PhiPsiSampler:[29,2,1,""],ReconstructSidechains:[31,6,1,""],RemoveTerminalGaps:[30,6,1,""],ReorderGaps:[30,6,1,""],ReportMolProbityScores:[28,6,1,""],RigidBlocks:[23,3,1,""],RunMolProbity:[28,6,1,""],RunMolProbityEntity:[28,6,1,""],SampleMonteCarlo:[29,3,1,""],ScoreContainer:[26,2,1,""],ScoringGapExtender:[24,2,1,""],ScoringWeights:[26,2,1,""],SetPsipredPredictions:[30,6,1,""],SetSequenceProfiles:[30,6,1,""],SetupDefaultAllAtomScoring:[30,6,1,""],SetupDefaultBackboneScoring:[30,6,1,""],ShiftExtension:[24,2,1,""],SidechainReconstructionData:[31,2,1,""],SidechainReconstructor:[31,2,1,""],SoftSampler:[29,2,1,""],StructuralGap:[24,2,1,""],StructuralGapList:[24,2,1,""]},"promod3.modelling.AllAtomRelaxer":{GetSystemCreator:[27,3,1,""],Run:[27,3,1,""],UpdatePositions:[27,3,1,""]},"promod3.modelling.BackboneRelaxer":{AddCARestraint:[27,3,1,""],AddCBRestraint:[27,3,1,""],AddCRestraint:[27,3,1,""],AddNRestraint:[27,3,1,""],AddORestraint:[27,3,1,""],GetNonBondedCutoff:[27,3,1,""],Run:[27,3,1,""],SetNonBondedCutoff:[27,3,1,""]},"promod3.modelling.CCD":{CCD:[27,3,1,""],Close:[27,3,1,""]},"promod3.modelling.CCDCloser":{Close:[29,3,1,""]},"promod3.modelling.DirtyCCDCloser":{Close:[29,3,1,""]},"promod3.modelling.ExponentialCooler":{GetTemperature:[29,3,1,""],Reset:[29,3,1,""]},"promod3.modelling.FraggerHandle":{Get:[23,3,1,""],GetList:[23,3,1,""],LoadCached:[23,3,1,""],SaveCached:[23,3,1,""]},"promod3.modelling.FragmentSampler":{Initialize:[29,3,1,""],ProposeStep:[29,3,1,""]},"promod3.modelling.FullGapExtender":{Extend:[24,3,1,""]},"promod3.modelling.GapExtender":{Extend:[24,3,1,""]},"promod3.modelling.KIC":{Close:[27,3,1,""],KIC:[27,3,1,""]},"promod3.modelling.KICCloser":{Close:[29,3,1,""]},"promod3.modelling.LinearScorer":{GetScore:[29,3,1,""]},"promod3.modelling.LoopCandidates":{Add:[26,3,1,""],AddFragmentInfo:[26,3,1,""],ApplyCCD:[26,3,1,""],ApplyKIC:[26,3,1,""],CalculateAllAtomScores:[26,3,1,""],CalculateBackboneScores:[26,3,1,""],CalculateSequenceProfileScores:[26,3,1,""],CalculateStemRMSDs:[26,3,1,""],CalculateStructureProfileScores:[26,3,1,""],Extract:[26,3,1,""],FillFromDatabase:[26,4,1,""],FillFromMonteCarloSampler:[26,4,1,""],GetClusteredCandidates:[26,3,1,""],GetClusters:[26,3,1,""],GetFragmentInfo:[26,3,1,""],GetLargestCluster:[26,3,1,""],GetSequence:[26,3,1,""],HasFragmentInfos:[26,3,1,""],Remove:[26,3,1,""]},"promod3.modelling.ModellingHandle":{Copy:[30,3,1,""],all_atom_scorer:[30,5,1,""],all_atom_scorer_env:[30,5,1,""],all_atom_sidechain_env:[30,5,1,""],backbone_scorer:[30,5,1,""],backbone_scorer_env:[30,5,1,""],gaps:[30,5,1,""],model:[30,5,1,""],profiles:[30,5,1,""],psipred_predictions:[30,5,1,""],seqres:[30,5,1,""],sidechain_reconstructor:[30,5,1,""]},"promod3.modelling.PhiPsiSampler":{Initialize:[29,3,1,""],ProposeStep:[29,3,1,""]},"promod3.modelling.ScoreContainer":{Contains:[26,3,1,""],Copy:[26,3,1,""],Extend:[26,3,1,""],Extract:[26,3,1,""],Get:[26,3,1,""],GetNumCandidates:[26,3,1,""],IsEmpty:[26,3,1,""],LinearCombine:[26,3,1,""],Set:[26,3,1,""]},"promod3.modelling.ScoringGapExtender":{Extend:[24,3,1,""]},"promod3.modelling.ScoringWeights":{GetAllAtomScoringKeys:[26,4,1,""],GetAllAtomWeights:[26,4,1,""],GetBackboneScoringKeys:[26,4,1,""],GetBackboneWeights:[26,4,1,""],GetSequenceProfileScoresKey:[26,4,1,""],GetStemRMSDsKey:[26,4,1,""],GetStructureProfileScoresKey:[26,4,1,""],GetWeights:[26,4,1,""],SetAllAtomScoringKeys:[26,4,1,""],SetBackboneScoringKeys:[26,4,1,""],SetSequenceProfileScoresKey:[26,4,1,""],SetStemRMSDsKey:[26,4,1,""],SetStructureProfileScoresKey:[26,4,1,""],SetWeights:[26,4,1,""]},"promod3.modelling.ShiftExtension":{Extend:[24,3,1,""]},"promod3.modelling.SidechainReconstructionData":{disulfid_bridges:[31,5,1,""],env_pos:[31,5,1,""],is_c_ter:[31,5,1,""],is_n_ter:[31,5,1,""],loop_lengths:[31,5,1,""],loop_start_indices:[31,5,1,""],rotamer_res_indices:[31,5,1,""]},"promod3.modelling.SidechainReconstructor":{AttachEnvironment:[31,3,1,""],Reconstruct:[31,3,1,""]},"promod3.modelling.SoftSampler":{Initialize:[29,3,1,""],ProposeStep:[29,3,1,""]},"promod3.modelling.StructuralGap":{Copy:[24,3,1,""],ExtendAtCTerm:[24,3,1,""],ExtendAtNTerm:[24,3,1,""],GetChain:[24,3,1,""],GetChainIndex:[24,3,1,""],GetChainName:[24,3,1,""],GetLength:[24,3,1,""],IsCTerminal:[24,3,1,""],IsNTerminal:[24,3,1,""],IsTerminal:[24,3,1,""],ShiftCTerminal:[24,3,1,""],after:[24,5,1,""],before:[24,5,1,""],full_seq:[24,5,1,""],length:[24,5,1,""],seq:[24,5,1,""]},"promod3.scoring":{AllAtomClashScorer:[33,2,1,""],AllAtomInteractionScorer:[33,2,1,""],AllAtomOverallScorer:[33,2,1,""],AllAtomPackingScorer:[33,2,1,""],AllAtomScorer:[33,2,1,""],BackboneOverallScorer:[35,2,1,""],BackboneScoreEnv:[34,2,1,""],BackboneScorer:[35,2,1,""],CBPackingScorer:[35,2,1,""],CBetaScorer:[35,2,1,""],ClashScorer:[35,2,1,""],ConstraintFunction:[34,2,1,""],ContactFunction:[34,2,1,""],DensityScorer:[35,2,1,""],DiscoContainer:[34,2,1,""],HBondScorer:[35,2,1,""],LoadAllAtomInteractionScorer:[33,6,1,""],LoadAllAtomPackingScorer:[33,6,1,""],LoadCBPackingScorer:[35,6,1,""],LoadCBetaScorer:[35,6,1,""],LoadDefaultAllAtomOverallScorer:[33,6,1,""],LoadDefaultBackboneOverallScorer:[35,6,1,""],LoadHBondScorer:[35,6,1,""],LoadReducedScorer:[35,6,1,""],LoadSSAgreementScorer:[35,6,1,""],LoadTorsionScorer:[35,6,1,""],PairwiseFunction:[34,2,1,""],PairwiseFunctionType:[34,2,1,""],PairwiseScorer:[35,2,1,""],ReducedScorer:[35,2,1,""],SSAgreementScorer:[35,2,1,""],TorsionScorer:[35,2,1,""]},"promod3.scoring.AllAtomInteractionScorer":{Load:[33,4,1,""],LoadPortable:[33,4,1,""],Save:[33,3,1,""],SavePortable:[33,3,1,""],SetEnergy:[33,3,1,""]},"promod3.scoring.AllAtomOverallScorer":{"__getitem__":[33,3,1,""],"__setitem__":[33,3,1,""],AttachEnvironment:[33,3,1,""],CalculateLinearCombination:[33,3,1,""],Contains:[33,3,1,""],Get:[33,3,1,""]},"promod3.scoring.AllAtomPackingScorer":{Load:[33,4,1,""],LoadPortable:[33,4,1,""],Save:[33,3,1,""],SavePortable:[33,3,1,""],SetEnergy:[33,3,1,""]},"promod3.scoring.AllAtomScorer":{AttachEnvironment:[33,3,1,""],CalculateScore:[33,3,1,""],CalculateScoreProfile:[33,3,1,""]},"promod3.scoring.BackboneOverallScorer":{"__getitem__":[35,3,1,""],"__setitem__":[35,3,1,""],AttachEnvironment:[35,3,1,""],Calculate:[35,3,1,""],CalculateLinearCombination:[35,3,1,""],Contains:[35,3,1,""],Get:[35,3,1,""]},"promod3.scoring.BackboneScoreEnv":{AddPairwiseFunction:[34,3,1,""],ApplyPairwiseFunction:[34,3,1,""],ClearEnvironment:[34,3,1,""],Copy:[34,3,1,""],GetSeqres:[34,3,1,""],SetEnvironment:[34,3,1,""],SetInitialEnvironment:[34,3,1,""],SetMap:[34,3,1,""],SetPsipredPrediction:[34,3,1,""]},"promod3.scoring.BackboneScorer":{AttachEnvironment:[35,3,1,""],CalculateScore:[35,3,1,""],CalculateScoreProfile:[35,3,1,""]},"promod3.scoring.CBPackingScorer":{Load:[35,4,1,""],LoadPortable:[35,4,1,""],Save:[35,3,1,""],SavePortable:[35,3,1,""],SetEnergy:[35,3,1,""],UseClassicMode:[35,3,1,""],UseIncludeEnvMode:[35,3,1,""]},"promod3.scoring.CBetaScorer":{Load:[35,4,1,""],LoadPortable:[35,4,1,""],Save:[35,3,1,""],SavePortable:[35,3,1,""],SetEnergy:[35,3,1,""]},"promod3.scoring.DiscoContainer":{AddStructuralInfo:[34,6,1,""],AttachConstraints:[34,6,1,""]},"promod3.scoring.HBondScorer":{Load:[35,4,1,""],LoadPortable:[35,4,1,""],Save:[35,3,1,""],SavePortable:[35,3,1,""],SetEnergy:[35,3,1,""]},"promod3.scoring.PairwiseFunction":{Score:[34,3,1,""]},"promod3.scoring.ReducedScorer":{Load:[35,4,1,""],LoadPortable:[35,4,1,""],Save:[35,3,1,""],SavePortable:[35,3,1,""],SetEnergy:[35,3,1,""]},"promod3.scoring.SSAgreementScorer":{Load:[35,4,1,""],LoadPortable:[35,4,1,""],Save:[35,3,1,""],SavePortable:[35,3,1,""],SetScore:[35,3,1,""]},"promod3.scoring.TorsionScorer":{Load:[35,4,1,""],LoadPortable:[35,4,1,""],Save:[35,3,1,""],SavePortable:[35,3,1,""],SetEnergy:[35,3,1,""]},"promod3.sidechain":{AAToRotID:[44,3,1,""],BBDepRotamerLib:[45,2,1,""],DisulfidRawScore:[37,3,1,""],DisulfidScore:[37,3,1,""],FRMRotamer:[42,2,1,""],FRMRotamerGroup:[42,2,1,""],Frame:[38,2,1,""],FrameResidue:[38,2,1,""],LoadDunbrackLib:[41,3,1,""],LoadPenultimateLib:[41,3,1,""],Particle:[42,2,1,""],RRMRotamer:[42,2,1,""],RRMRotamerGroup:[42,2,1,""],ReadDunbrackFile:[41,3,1,""],ResolveCysteins:[37,3,1,""],RotamerGraph:[39,2,1,""],RotamerID:[44,2,1,""],RotamerLib:[45,2,1,""],RotamerLibEntry:[45,2,1,""],SCWRLRotamerConstructor:[43,2,1,""],SidechainParticle:[42,2,1,""],SubrotamerOptimizer:[46,3,1,""],TLCToRotID:[44,3,1,""]},"promod3.sidechain.BBDepRotamerLib":{AddRotamer:[45,3,1,""],Load:[45,4,1,""],LoadPortable:[45,4,1,""],MakeStatic:[45,3,1,""],QueryLib:[45,3,1,""],Save:[45,3,1,""],SavePortable:[45,3,1,""],SetInterpolate:[45,3,1,""]},"promod3.sidechain.FRMRotamer":{"__getitem__":[42,3,1,""],"__len__":[42,3,1,""],AddFrameEnergy:[42,3,1,""],AddSubrotamerDefinition:[42,3,1,""],ApplyOnResidue:[42,3,1,""],GetActiveSubrotamer:[42,3,1,""],GetFrameEnergy:[42,3,1,""],GetInternalEnergy:[42,3,1,""],GetInternalEnergyPrefactor:[42,3,1,""],GetNumSubrotamers:[42,3,1,""],GetProbability:[42,3,1,""],GetSelfEnergy:[42,3,1,""],GetSubrotamerDefinition:[42,3,1,""],GetTemperature:[42,3,1,""],SetActiveSubrotamer:[42,3,1,""],SetFrameEnergy:[42,3,1,""],SetInternalEnergy:[42,3,1,""],SetInternalEnergyPrefactor:[42,3,1,""],SetProbability:[42,3,1,""],SetTemperature:[42,3,1,""],ToFrameResidue:[42,3,1,""],ToRRMRotamer:[42,3,1,""]},"promod3.sidechain.FRMRotamerGroup":{"__getitem__":[42,3,1,""],"__len__":[42,3,1,""],AddFrameEnergy:[42,3,1,""],ApplyOnResidue:[42,3,1,""],ApplySelfEnergyThresh:[42,3,1,""],Merge:[42,3,1,""],SetFrameEnergy:[42,3,1,""]},"promod3.sidechain.FrameResidue":{"__getitem__":[38,3,1,""],"__len__":[38,3,1,""]},"promod3.sidechain.Particle":{AddLonePair:[42,3,1,""],GetCharge:[42,3,1,""],GetName:[42,3,1,""],GetParticleType:[42,3,1,""],GetPos:[42,3,1,""],IsHBondAcceptor:[42,3,1,""],IsHBondDonor:[42,3,1,""],PairwiseEnergy:[42,3,1,""],SetPolarDirection:[42,3,1,""]},"promod3.sidechain.RRMRotamer":{"__getitem__":[42,3,1,""],"__len__":[42,3,1,""],AddFrameEnergy:[42,3,1,""],ApplyOnResidue:[42,3,1,""],GetFrameEnergy:[42,3,1,""],GetInternalEnergy:[42,3,1,""],GetInternalEnergyPrefactor:[42,3,1,""],GetProbability:[42,3,1,""],GetSelfEnergy:[42,3,1,""],SetFrameEnergy:[42,3,1,""],SetInternalEnergy:[42,3,1,""],SetInternalEnergyPrefactor:[42,3,1,""],SetProbability:[42,3,1,""],ToFrameResidue:[42,3,1,""]},"promod3.sidechain.RRMRotamerGroup":{"__getitem__":[42,3,1,""],"__len__":[42,3,1,""],AddFrameEnergy:[42,3,1,""],ApplyOnResidue:[42,3,1,""],ApplySelfEnergyThresh:[42,3,1,""],Merge:[42,3,1,""],SetFrameEnergy:[42,3,1,""]},"promod3.sidechain.RotamerGraph":{AStarSolve:[39,3,1,""],ApplyDEE:[39,3,1,""],ApplyEdgeDecomposition:[39,3,1,""],CreateFromFRMList:[39,4,1,""],CreateFromRRMList:[39,4,1,""],GetActiveEdges:[39,3,1,""],GetActiveRotamers:[39,3,1,""],GetEdges:[39,3,1,""],GetNumActiveEdges:[39,3,1,""],GetNumActiveNodes:[39,3,1,""],GetNumActiveRotamers:[39,3,1,""],GetNumEdges:[39,3,1,""],GetNumNodes:[39,3,1,""],GetNumRotamers:[39,3,1,""],GetPairwiseEnergies:[39,3,1,""],GetSelfEnergies:[39,3,1,""],MCSolve:[39,3,1,""],Prune:[39,3,1,""],Reset:[39,3,1,""],TreeSolve:[39,3,1,""]},"promod3.sidechain.RotamerLib":{AddRotamer:[45,3,1,""],Load:[45,4,1,""],LoadPortable:[45,4,1,""],MakeStatic:[45,3,1,""],QueryLib:[45,3,1,""],Save:[45,3,1,""],SavePortable:[45,3,1,""]},"promod3.sidechain.RotamerLibEntry":{FromResidue:[45,4,1,""],IsSimilar:[45,3,1,""],SimilarDihedral:[45,3,1,""],chi1:[45,5,1,""],chi2:[45,5,1,""],chi3:[45,5,1,""],chi4:[45,5,1,""],probability:[45,5,1,""],sig1:[45,5,1,""],sig2:[45,5,1,""],sig3:[45,5,1,""],sig4:[45,5,1,""]},"promod3.sidechain.SCWRLRotamerConstructor":{AssignInternalEnergies:[43,3,1,""],ConstructBackboneFrameResidue:[43,3,1,""],ConstructFrameResidue:[43,3,1,""],ConstructFrameResidueHeuristic:[43,3,1,""],ConstructRRMRotamerGroup:[43,3,1,""],ConstructSidechainFrameResidue:[43,3,1,""]},"test_actions.ActionTestCase":{RunAction:[1,3,1,""],RunExitStatusTest:[1,3,1,""],pm_action:[1,5,1,""],pm_bin:[1,5,1,""],testPMExists:[1,3,1,""]},promod3:{SetCompoundsChemlib:[11,6,1,""],core:[8,1,0,"-"],loop:[18,1,0,"-"],modelling:[25,1,0,"-"],scoring:[36,1,0,"-"],sidechain:[40,1,0,"-"]},test_actions:{ActionTestCase:[1,2,1,""]}},objnames:{"0":["cmake","command","CMake command"],"1":["py","module","Python module"],"2":["py","class","Python class"],"3":["py","method","Python method"],"4":["py","staticmethod","Python static method"],"5":["py","attribute","Python attribute"],"6":["py","function","Python function"]},objtypes:{"0":"cmake:command","1":"py:module","2":"py:class","3":"py:method","4":"py:staticmethod","5":"py:attribute","6":"py:function"},terms:{"10a":31,"1akia":21,"1crn":[16,18,20,21,25,26,27,29,30,31,36,40],"1crn_cut":[25,26,30],"1crna":[21,26],"1ey":5,"1eye_rec":5,"2010dunbracklib":32,"20a":31,"2b1":2,"2jlp":0,"30a":31,"3x3":6,"__doc__":[7,9],"__getitem__":[21,33,35,38,42],"__init__":[1,5,9,12],"__len__":[17,21,38,42],"__main__":[1,5],"__name__":[1,5],"__setitem__":[21,33,35],"_data":32,"_name":4,"_run":[1,4],"_xml":4,"boolean":7,"break":[4,5,12],"byte":[32,39],"case":[0,1,5,12,17,21,22,24,27,29,30,31,32,35,37,40,42,43,45],"char":[17,32],"class":[],"const":32,"default":[],"enum":44,"export":[5,16,39],"final":[5,14,21,23,25,26,30,34,35,36,37,39,40,42],"float":[6,16,17,20,21,22,23,24,26,27,28,29,30,31,32,33,34,35,37,39,42,43,45,46],"function":[],"import":[0,1,5,7,9,12,14,16,17,18,20,21,22,25,26,27,29,30,31,36,40,42,43],"int":[1,6,7,10,16,17,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34,35,38,39,42,43,45,46],"long":30,"new":[1,3,5,9,12,13,16,17,20,21,24,26,27,29,30,31,32,34,35,40,42],"null":21,"public":[5,32,41],"return":[1,5,6,7,9,10,11,16,17,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34,35,37,38,39,41,42,43,44,45],"s\u00f6ding":21,"short":[5,12,32],"static":[5,10,16,20,21,22,26,31,32,33,35,39,41,45],"super":40,"switch":[5,12,34],"throw":[1,32,35,40,41],"true":[1,7,9,10,16,17,18,19,20,21,24,26,27,28,29,30,31,32,33,35,37,40,43],"try":[1,5,14,24,30,32,45],"void":32,"while":[1,4,5,10,16,20,30,32],aa1:35,aa2:35,aa_aft:21,aa_befor:21,aa_clash:[30,33],aa_interact:[30,33],aa_pack:[30,33],aa_packing_scor:32,aa_relax_test:27,aa_res_idx:43,aa_scor:32,aa_with_rotam:40,aaa1:33,aaa2:33,aaa:[16,33],aaaaaaaa:17,aaaaggggggggggggggggggggaaaaaa:30,aah:16,aatorotid:44,abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz:30,abil:12,abl:[2,5],abort:[5,27,30,39],about:[1,4,5,21,30,39],abov:[0,1,5,9,12,17,23,24,26,30,32,44,45],absolut:4,academ:5,accept:[9,26,27,29,30,31,32,39],acceptor:[35,43],access:[4,5,16,17,21,22,26,30,33,34,35,42,44],accessibili:21,accessibl:21,accord:[12,16,17,20,21,22,23,24,26,29,30,31,35,37,39,40,42,43,45],accur:[23,34],accuraci:[23,27],achiev:[12,39],acknowledg:5,across:[1,45],act:27,action_nam:12,action_unit_test:1,actiontest:1,activ:[9,10,12,35,37,39,42,46],active_internal_energi:46,actual:[5,9,12,17,21,29,30,31,34,35,42,45],actual_posit:29,actual_step:29,adapt:[5,20,27,29,30,41],add:[1,2,4,5,9,14,16,21,22,26,27,30,31,33,34,35,37,40,42,43],add_argu:7,add_custom_target:5,add_doc_depend:4,add_doc_sourc:[4,5],add_subdirectori:5,addalign:9,addcarestraint:27,addcbrestraint:27,addcoordin:21,addcrestraint:27,addfrag:21,addfragmentinfo:26,addframeenergi:42,addharmonicangl:20,addharmonicbond:20,addharmonicimprop:20,addit:[4,7,9,10,12,17,18,20,21,28,30,32,43],addition:[1,4,12,16,20,43],addljpair:20,addlonepair:42,addnrestraint:27,addorestraint:27,addpairwisefunct:34,addperiodicdihedr:20,addperiodicimprop:20,address:32,addrotam:45,addseqidparamet:21,addseqsimparamet:[18,21],addsequenceprofileparamet:21,addssagreeparamet:21,addstructur:9,addstructuralinfo:34,addstructureprofileparamet:21,addsubrotamerdefinit:42,addtorsionprobabilityparamet:21,addureybradleyangl:20,admir:5,advanc:23,advantag:20,advic:[5,12],advis:21,affect:[5,17,44],after:[1,2,4,5,9,12,16,17,20,21,22,24,26,27,29,30,32,34,39,41,43,45],after_c_stem:17,afterward:[5,30],again:[2,5,23],against:[33,35],agg:22,agglom:26,ago:1,agreement:[21,23,35],agress:[2,39],ala:[17,22,27,40,44],ala_cb:16,ala_h1:16,ala_h:16,alanin:44,alg:[18,21],algorithm:[],alia:24,align:[0,9,14,21,23,25,30,34],alignedcuboid:17,alignmenthandl:[23,30,34],alignmentlist:[0,9,30],all:[],all_atom:[16,17,20,34,35,42,43],all_atom_env:16,all_atom_po:[16,43],all_atom_scor:30,all_atom_scorer_env:30,all_atom_sidechain_env:30,all_po:[16,20,27],all_scor:26,allatom:[27,30,31],allatomclashscor:[],allatominteractionscor:[],allatomoverallscor:[],allatompackingscor:[],allatomrelax:[20,27],alloc:21,allow:[0,2,3,5,7,12,17,21,22,23,26,29,30,32,33,35],allow_multitempl:9,allow_prepro_ci:17,almost:4,aln:[0,23,25,26,30,34],aln_sourc:9,alon:7,along:[1,5,21],alot:5,alpha:[6,17,35,40],alpha_bin:35,alreadi:[1,4,5,12,17,20,21,23,26,30,31,33,34,35,39,42,43,45,46],also:[1,2,4,5,7,12,21,22,23,26,27,28,29,30,31,35,37,38,39,41,43,45],alter:29,altern:[4,5,29,30,35,41,43],alwai:[0,1,5,12,24,29,30,32],amber:[16,30],ambig:45,ambigu:45,aminoacid:[16,17,20,22,35,44,45],aminoacidatom:[16,33],aminoacidhydrogen:16,aminoacidlookup:[16,20],among:26,amount:[14,23,45],analysi:[21,27,28],analyt:[26,45],anchor:[6,16,43],ancient:11,ang:34,angl:[],angle_bin:35,angle_bin_s:21,angle_force_const:20,angle_four:6,angle_on:6,angle_thre:6,angle_two:6,angstrom:[21,27],ani:[0,1,4,5,9,10,11,14,16,17,20,21,22,24,26,28,29,30,31,32,33,34,35,38,39,40,42,43],anneal:[26,29,39],announc:[1,5],anoth:[4,10,17,24,27,30,31,37],anymor:39,anyon:[5,12],anyth:[0,2,5,9,10,11,26,27,31,33,35,36],anywai:5,anywher:12,apart:[1,26,30,31,33,35],append:[0,9,17,21,22,30,40],appli:[7,11,12,17,24,26,27,29,30,31,37,39,40,42],applic:[1,27],applyccd:26,applyde:39,applyedgedecomposit:39,applyk:26,applyonresidu:[40,42],applypairwisefunct:[34,35],applysd:20,applyselfenergythresh:[40,42],applytransform:17,approach:[2,21,23,30,32,37,39,40,43],appropri:[21,22,30,32,35,43],approx:30,approxim:[20,39,42],arbitrari:[16,21,37],arbitrarili:29,arg:[1,4,9,44],arg_ca:16,arg_hd3:16,arg_sorted_scor:26,arginin:44,argpars:9,argument:[],argumentpars:9,argv:9,around:[1,4,5,6,12,17,26,27,30,33,35],arrai:[0,5,32],artifici:35,ascend:24,ask:5,asn:44,asn_c:16,asn_hb2:16,asp:[16,42,44,45],asp_ha:16,asp_o:16,asparagin:44,aspart:[44,45],ass:29,assembl:9,assemblepars:9,assertequ:5,assess:[33,34],assign:[17,21,26,29,33,35,41,43,46],assigndssp:21,assigninternalenergi:43,assignsecstruct:21,associ:[24,38],assum:[1,4,5,20,21,27,30,32,34,35,37,39],assur:37,astar:[3,39],astarsolv:39,atom:[],atom_idx:[16,20],atom_nam:[16,20],atomhandl:42,atomseq:21,attach:[0,4,5,9,16,20,23,24,30,31,33,34,35,36],attach_view:9,attachconstraint:34,attachenviron:[26,27,29,31,33,35,36],attachview:[25,26,30],attent:[1,12],attribut:[5,9,30,31,45],autom:[2,4],automat:[1,5,7,10,12,21,25,26,32,39,45],automatis:5,avaibl:43,avail:[1,2,5,11,12,14,20,29,40],availabl:5,averag:[21,26,34,37],avg:21,avg_sampling_per_posit:23,avoid:[7,11,27,29],awai:[12,31,42],awar:5,awesom:[1,5],axi:[6,17,21],back:[1,12,20,29,39],backbon:[],backbone_scor:[26,30],backbone_scorer_env:30,backbonelist:[],backboneoverallscor:[],backbonerelax:[27,30],backbonescor:[],backbonescoreenv:[],backbonescoreenvlisten:5,background:[2,31],backrub:17,backward:32,bad:20,base:[],base_target:4,bashrc:5,basi:[4,5,12,21,27,29,42],basic:[1,2,5,7,12,22,29,30,40,42,45],bb_list:[14,16,17,18,21,24,26,27,29,30,34,35,36],bb_list_on:23,bb_list_two:23,bb_re:36,bb_score:26,bb_seq:36,bbdeprotamerlib:[31,32,41,43,45],becaus:[5,12,16,30,34,39],becom:45,been:[2,12,19,21,26,27,33,35,37,39,41,45],befor:[1,4,5,9,12,17,20,21,22,24,26,27,29,30,31,32,33,34],begin:[1,5,16,17,29,34],behav:1,behavior:33,behaviour:[9,34,45],behind:5,bell:5,belong:[4,12,16,17,21,24,26,29,30,31,33,34,35,38,42,43],belov:21,below:[0,5,16,20,21,23,26,27,31,32,33,35,37],below_thre:21,besid:[2,4,9,39],best:[4,26,30,37],best_candid:26,beta:[6,17,28,35],beta_bin:35,better:[20,26,29,30,33,35],between:[1,9,17,20,21,23,24,26,27,29,30,31,32,33,34,35,36,37,38,39,42,43,45],beyond:9,big:[20,32],bilinearli:45,bin:[1,5,12,14,21,22,33,35,45],bin_siz:45,binari:[],bind:[21,30],bins_per_dimens:22,bioinformat:21,biol:21,biopolym:21,bit:[1,2,5,12,26,30],blank:5,blosum62:[18,21,23,34],bond:[],bond_force_const:20,bond_length:[6,20],bool:[1,5,7,9,10,16,17,19,20,21,24,26,27,28,29,30,31,32,33,34,35,37,39,42,43,45],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],boost_librari:4,boost_root:2,both:[16,24,30,37,40,45],bound:[16,20,23,26,42],bradlei:20,branch:[],branchnam:12,brew:4,bridg:[19,20,27,30,31],briefli:12,bring:5,broken:1,broyden:30,bug:[3,5,12],build_disulfid:31,builder:2,buildfromrawmodel:[25,30],buildrawmodel:[0,25,26,30],buildsidechain:30,buildup:[40,42],built:[4,20,21,34,38,43],bunch:[1,9,12],bytecod:1,c_coord:6,c_num:24,c_po:[6,17,35,43],c_stem:[6,18,21,24,26,27,29],c_stem_idx:[],c_stem_psi:29,c_str:32,c_ter:[27,43],ca_coord:6,ca_pairwise_funct:34,ca_po:[6,17,35,43],ca_pos_on:37,ca_pos_two:37,ca_posit:37,ca_rmsd:[18,21],cach:[2,21,23],calcul:[5,17,21,22,23,26,27,29,33,34,35,37,38,39,42,43],calculateallatomscor:26,calculatebackbonescor:26,calculateenergi:35,calculatelinearcombin:[26,29,33,35],calculatescor:[33,35,36],calculatescoreprofil:[33,35],calculatesequenceprofilescor:26,calculatestemrmsd:26,calculatestructureprofilescor:26,calculatesurfac:21,call:[1,2,4,5,7,9,10,11,12,16,20,21,22,24,26,29,30,31,32,33,35,39,42,43,45],callabl:[9,12],calpha:30,calul:22,came:5,can:[],cand:30,candid:[],cannot:[0,5,9,20,21,22,24,30,32,33,35,41,44,45],canutescu2003:27,canutescu2003b:[33,37],canutescu:[27,37],cap:39,capabl:[19,25,29],captur:1,carbon:[6,17,42,43],carbonyl:[42,43],care:[0,5,21,26,27,30,32,35,39],carlo:[3,23,26,29,30,39],carmsd:[17,18,21],carri:[5,7],cast:32,categori:4,caus:[12,28],caution:16,cb_pack:[23,30,35],cb_packing_scor:32,cb_pairwise_funct:34,cb_po:[17,43],cb_pos_on:37,cb_pos_two:37,cb_posit:37,cbeta:[23,26,29,30,35,36],cbeta_scor:[32,36],cbetaenvlisten:5,cbetascor:[],cbpackingscor:[],ccd:[],ccdcloser:29,center:28,central:[17,22,35],centroid:26,certain:[1,2,4,5,12,21,22,23,24,30,32,33,35,39],certainli:1,ch1particl:42,ch2particl:42,ch3particl:42,chain:[],chain_id:21,chain_idx:[5,16,21,26,29,30,31,33,34,35],chain_idx_list:31,chain_idx_on:34,chain_idx_two:34,chain_index:[21,29,33,35],chain_indic:34,chain_nam:[21,30],chainhandl:[16,17,24],chainid:0,chainview:21,chakravarti:21,chakravarty1999:21,chanact:30,chanc:[5,30,39],chang:[1,3,4,5,12,16,22,24,27,29,30,31,35,39],change_frequ:[29,39],chapter:[24,28],charact:[9,21],charg:[5,16,20,27,42,43],charmm:[16,20,30],check:[],check_io:32,check_xml:5,checkbasetyp:32,checkfinalmodel:30,checkmagicnumb:32,checkout:[5,12],checktypes:32,chemic:[11,16,33],chi1:45,chi2:45,chi3:45,chi4:45,chi:45,child:9,childclass:1,chmod:5,choos:[26,29,35],chosen:[0,9,29,30],cif:[0,9],ciiipgatcpgdyan:30,circumv:43,citat:27,clash:[3,23,26,27,29,30,33,35,36,37,40],clash_scor:36,clash_thresh:30,clashscor:[],classic:[35,41],clean:[2,5,12],cleanli:32,clear:[10,16,17,26,30,34],clearenviron:[16,34],cleargap:24,clearli:[],clearpo:16,clearresidu:16,clever:[],clip:9,clone:5,close:[12,14,17,21,26,27,29,30,31,35,37],closed_posit:29,closegap:30,closelargedelet:30,closer:[],closesmalldelet:[27,30],closest:21,closur:[27,30],clustal:[0,9],cluster:[3,23,26,32,34],cluster_thresh:[23,34],clutter:[1,5],cmake:[],cmake_support:[4,5,12],cmakecach:2,cmakelist:[1,2,4,5,12],cname:21,coars:5,code:[],codetest:[4,5],coil:[19,23],collect:[7,10,16,23,34],column:[21,23],combin:[20,21,22,23,26,29,30,33,35,37,45],come:[1,4,5,7,9,30,31,39],command:[],commandlin:9,comment:12,commerci:5,commit:[5,12],common:[5,9,23],commonli:[5,14,25,26,35],comp_lib:43,compar:[3,5,17,18,21,26,27,45],comparison:[21,30,33,45],compat:[12,20,32],compensatori:17,compil:[1,2,4,5,10,12,14,32,47],complain:1,complaint:12,complement:21,complet:[10,12,17,20,21,27,29,30,31,45],complex:[5,12,31,37,42,46],compon:[11,21,28,35,39],compound:[11,43],compoundlib:43,compress:7,comput:[3,5,21,26,28,33,35],concaten:16,concept:5,concern:5,condit:[5,22],conf:[2,5],confid:[21,35],config:[4,5],config_head:4,configur:[2,5,12,26,39,45],conflict:12,conform:[21,27,29,39,40,45],connect:[4,12,16,20,21,26,39],conop:[16,17,20,22,35,43,44],conquer:5,consecut:[22,35],conserv:[14,24],consid:[4,5,10,12,16,17,21,22,23,26,27,29,30,31,33,34,35,37,39,41,43,45],consider_all_nod:39,consider_hydrogen:42,consider_ligand:31,consist:[3,5,16,20,21,23,24,26,27,29,30,31,32,34,37,42,45],constant:[20,27,33,35,46],constraint:[9,21,27,34],constraintfunct:34,construct:[],constructatompo:6,constructbackboneframeresidu:[40,43],constructcbetapo:6,constructcterminaloxygen:6,constructetd:39,constructframeresidu:43,constructframeresidueheurist:43,constructfrmrotamergroup:[40,43],constructor:[],constructrrmrotamergroup:43,constructsidechainframeresidu:43,contact:34,contactfunct:34,contain:[0,1,2,4,5,6,7,9,12,16,17,19,20,21,22,23,26,29,30,31,33,34,35,36,37,38,40,41,42,43,45],content:[5,8,13,15,18,21,36,40,47],contigu:[20,31,32],continu:[1,16,24,27,40],contrast:38,contribut:[],control:[0,5,26,29,31,34,39,42,45,46],conveni:[],convent:[1,44],converg:[23,26,27,29],convers:32,convert:[4,17,20,21,22,30,32,33,35,45,46],convert_module_data:4,convertbasetyp:32,cool:[],cooler:[],cooling_factor:[29,39],coord:26,coord_info:21,coordin:[6,21,26,27,30,40],coordinfo:21,cope:12,copi:[2,4,5,12,14,16,17,24,26,30,34],core:[],correct:20,correctli:30,correl:35,correspond:[12,16,17,20,21,22,26,32,33,45],corrupt:[16,34],could:[1,4,5,9,12,20,21,30,36],count:[10,24,29,30,33,35],countenclosedgap:24,countenclosedinsert:24,counterpart:[35,43],coupl:[1,5,12,30],cours:5,coutsia:27,cover:[1,5,8,10,16,20,21,23,25,29],coverag:30,cparticl:42,cpp:4,cpr:[44,45],cpu:[14,20,30],cpu_platform_support:20,crambin:[21,26,29],crash:40,createalign:[26,30],createentityfromview:[31,40],createfromfrmlist:[39,40],createfromrrmlist:39,createfullview:[25,26,30],createsequ:[26,30],creation:[20,27],creator:[20,27],criteria:31,criterion:[29,39],criterium:26,croak:12,cross:35,crucial:5,cterminalclos:29,cumul:43,current:[2,4,5,10,12,16,17,20,21,26,29,30,32,34,35,39,42,43,46],custom:[5,21,29,30,31,32,44],cutoff:[19,20,26,27,31,33,35],cycl:24,cyclic:[26,27],cyd:[44,45],cyh:[44,45],cys_hb3:16,cys_sg:16,cystein:[20,31,37,40,44],d_bin:35,dai:7,dampen:20,dare:4,dat:[21,32],data1:4,data2:4,data:[],data_:32,data_gener:32,databas:[],databs:21,date:12,dbg:5,dcmake_install_prefix:2,deactiv:39,dead:39,deal:[30,31],debug:[5,16],decent:11,decid:[5,27],decis:22,declar:[4,5,12],decod:9,decompos:39,decomposit:[23,39],decreas:29,dedic:[4,5,12],dee:39,deep:[17,30],def:[1,5,16,30],def_angl:16,defin:[],definem:5,degre:[17,21,22,41],delet:[0,2,5,17,30,42],deliv:[1,21,29,30],delta_scor:29,demand:30,demonstr:21,densiti:[17,27,30,34,35,41],densityscor:[],dep1:4,dep2:4,dep:4,dependency1:4,dependency2:4,depends_on:4,depth:21,deriv:[1,21,41],descend:30,descent:[26,27],describ:[4,7,13,16,17,21,24,25,27,28,32,33,35,37,39,40,42,45,47],descript:[0,9,12,29,37,45],design:[1,41],desir:[6,14,20,26,27,29,30,33,35],despit:[],detail:[0,6,9,12,20,21,22,26,28,29,30,33,35,45],detect:[],determin:[5,7,20,26,29,34,35],determinist:23,deuterium:30,develop:[],deviat:[17,28,29,41,45],devot:8,dict:[4,23,26,28,29,33,35],dictionari:[4,9,11,21,28],did:[5,26,30],differ:[1,2,4,5,11,12,16,21,23,24,26,30,33,35,39,40,44,45],dihedr:[],dihedral_angl:17,dihedral_bin:35,dihedral_idx:45,dihedral_pair:22,dimens:22,dir:[4,5],direct:[5,17,19,35,42,43],directli:[5,21,26,30,31,34,37,41,42,43,44,45],directori:[],dirti:1,dirtyccdclos:29,disabl:[1,12],disable_doctest:2,disable_document:2,disable_linkcheck:2,discocontain:34,discret:[33,35],discuss:21,disk:[5,20,23,33,35,45],displai:[7,9,10],dissimilar:23,dist:35,dist_bin:35,dist_bin_s:21,distanc:[6,17,21,23,26,30,31,33,34,35],distance_thresh:23,distant:34,distinct:[16,31],distribut:[1,5,20,21,22,29,32,33,35,41,45],disulfid:[],disulfid_bridg:[20,31],disulfid_score_thresh:31,disulfidrawscor:37,disulfidscor:[31,37],dive:[12,30],diverg:5,divers:[21,23],divid:23,dng:14,doc:[2,4,5,12],docstr:9,doctest:[2,5,12],document:[],doe:[1,4,5,6,7,9,11,12,17,21,25,26,30,32,34,39,41,43],doesn:[5,12,24,27,29,45],domain:23,domin:39,don:[2,26,30,43],done:[1,5,7,9,12,18,20,22,26,30,32,33],donor:35,dont_write_bytecod:1,dost_root:2,doubt:9,down:[9,17,21,29],dpm3_runtime_profiling_level:10,draw:[17,22,29],drawback:5,drawn:[22,29],drawphigivenpsi:22,drawpsigivenphi:22,drop:5,dssp:[21,30,35],dssp_state:35,due:[21,26,27,30,37,41],dump:45,dunbrack:[27,31,37,40,41],dure:[1,16,27,30,32,38,45],dynam:45,e_cut:39,e_thresh:[30,39],e_tresh:39,each:[0,5,9,10,16,17,20,21,22,23,24,26,28,29,30,31,32,33,35,39],earli:3,earlier:2,easi:5,easier:[1,5],easili:[4,12,30],echo:5,edg:39,edge_idx:39,ediff:39,editor:1,educ:5,effect:[4,5,20,31,35,37,39],effici:[16,21,23,29],egg:21,eigen3_include_dir:2,eigen:[2,3],either:[0,5,9,12,16,17,22,24,26,27,29,30,31,32,33,34,35,38,42,44,45],elabor:5,electrostat:[20,27],element:[1,16,17,21,23,26,28,32,34,37,39],elenumerador:[],elimin:39,els:[5,12,31,32],emerg:1,emploi:12,empti:[5,7,9,17,21,23,26,30,42],enabl:[1,2,7,9,11,20],enable_mm:2,enable_ss:2,enclos:[24,30],encod:0,encount:[24,29],end:[0,1,2,4,5,7,9,12,16,17,21,23,24,26,30,39],end_resnum:30,end_transl:4,endian:32,energi:[3,5,14,20,27,29,30,33,35,37,38,39,42,43,46],enforc:[16,21,26,29,30,31,34],enough:[5,12,20,21,30,32,34],ensur:[2,5,14,26,30,32],ent:[0,9,16,20,28,31,36],ent_seq:36,enter:38,entiti:[5,9,10,16,17,28,30,36,40],entityhandl:[9,16,17,28,30,31,34],entityview:[21,22,23,28,30],entri:[],enumer:[5,16,20,21,26,34,39,40,42,43,44],env:[5,14,16,20,27,28,30,31,33,34,35,36],env_po:[27,31],env_structur:[16,34],environ:[],epsilon:[20,31,39,46],equal:[29,33,35,37,43],equidist:45,equival:30,error:[0,7,9,10,30,32,35],especi:23,estim:[21,28,29,35,37,39,41],etc:[1,5,12,17,26,34],evalu:[],evaluategromacsposrul:6,even:[2,5,17,20,24,30,39],event:23,eventu:9,ever:[12,29],everi:[0,1,5,16,17,21,22,23,26,27,29,30,31,33,34,35,37,39,42,43,45,46],everyth:[],evolut:21,exact:32,exactli:[2,21,23,26,30,34,37,43,44],exampl:[],example_reconstruct:40,exce:[21,33,35],exceed:24,except:[0,9,24,30,43],exclud:5,exclus:[1,5,20],execut:[],exisit:[],exist:[1,2,4,5,7,9,10,12,16,17,21,26,27,28,29,30,32,33,34,35,41,42,44,45],exit:[0,1,7,9],exit_cod:1,exit_statu:7,exot:5,exp:[29,39],expect:[1,16,20,21,30,31,33,34,37,46],expens:21,experiment:30,explain:[1,5],explan:5,explicit:2,exponenti:29,exponentialcool:29,express:37,ext:7,extend:[],extendatcterm:24,extendatnterm:24,extended_search:[26,30],extens:[0,3,7,9,24,30],extension_penalti:24,extent:21,extern:[4,5,21],extra:[2,5,12,17,32],extra_bin:21,extra_force_field:30,extract:[5,6,16,17,18,20,21,22,23,25,26,27,29,30,31,33,34,35,36,37,39,41,43],extract_burial_statu:21,extractbackbon:16,extractloopposit:20,extractstatist:22,extrem:17,f_i:21,f_idx:34,facilit:23,factor:[20,29,39,41,42],fail:[0,1,5,7,10,17,26,30],failur:[0,5,7,9,45],fall:27,fallback:45,fals:[1,5,7,9,17,20,21,24,26,29,30,31,34,35,37,39,42,43],far:[26,30],fast:[6,14,16,20,21,22,32,33,34,35,45],fasta:[0,9,25,30],faster:[20,21,27,28,34,39],fastest:[27,30],favor:28,favourit:1,feasibl:[],fed:[4,12,39],fedora:5,feed:[4,16,26,43],feel:[5,12],fellow:5,fetch:12,few:[2,5,12,20,32,36],ff_aa:20,ff_aa_on:20,ff_aa_two:20,ff_ala:20,ff_arg:20,ff_asn:20,ff_asp:20,ff_cy:20,ff_cys2:20,ff_gln:20,ff_glu:20,ff_gly:20,ff_hisd:20,ff_hise:20,ff_ile:20,ff_leu:20,ff_lookup:[20,27,30],ff_lookup_charmm:32,ff_ly:20,ff_met:20,ff_phe:20,ff_pro:20,ff_ser:20,ff_thr:20,ff_trp:20,ff_tyr:20,ff_val:20,ff_xxx:20,field:[30,32,45],figur:12,file:[],filecheck:12,fileexist:7,fileextens:7,filegzip:7,filenam:[0,5,7,9,20,21,22,23,32,33,35,41,45],filenotfound:28,fill:[4,5,9,12,18,21,24,25,26,28,30],fillfromdatabas:[26,30],fillfrommontecarlosampl:[26,30],fillloopsbydatabas:30,fillloopsbymontecarlo:30,filtercandid:28,filtercandidateswithsc:28,final_model:[25,30],find:[],findchain:36,findwithin:5,fine:5,finish:46,fire:1,first:[0,1,5,9,12,14,16,17,20,21,22,23,24,26,27,29,30,31,33,34,35,37,39,40,42,45],fit:[],fix:[3,5,7,12,20,27,31,32,33,35],fix_cterm:27,fix_nterm:27,fix_surrounding_hydrogen:20,flag1:4,flag2:4,flag:[0,2,4,5,7,17,31,35,39,42],flanking_rot_angle_on:17,flanking_rot_angle_two:17,fletch:[21,40],fletcher:30,flexibl:[31,37,40,41,42,43,46],flip:45,flush:[1,12],fold:21,folder:[2,4,5,12,14,32],follow:[0,1,2,4,5,7,12,14,17,18,20,21,23,24,25,30,31,32,33,35,39,40,42,43,44,45],fontsiz:22,forbidden:5,forc:[20,27,30],force_const:[20,27],forcefield:[],forcefieldaminoacid:20,forcefieldbondinfo:20,forcefieldconnect:20,forcefieldharmonicangleinfo:20,forcefieldharmonicimproperinfo:20,forcefieldljpairinfo:20,forcefieldlookup:[20,27,30,32],forcefieldperiodicdihedralinfo:20,forcefieldureybradleyangleinfo:20,forg:12,forget:[1,5],form:[10,19,20,21,25,30,34,45],formal:[26,27,42,45],format:[0,5,9,21,41],formatt:5,formula:28,forward:12,found:[1,4,5,7,9,12,16,18,21,23,26,27,28,29,30,31,39,45],foundat:1,four:[6,29],fraction:[21,27,29],frag_db:[18,21,26,32],frag_info:21,frag_length:[18,21,23],frag_map:21,frag_po:[18,21,23],frag_residu:[18,21],frag_seq:[18,21],frag_siz:21,fragdb:[18,19,21,26,30,32],fragger:[18,21,23,29,30],fragger_handl:30,fragger_map:21,fraggerhandl:[21,23,30],fraggermap:[21,23],fragment:[],fragment_db:30,fragment_handl:23,fragment_info:21,fragment_length:[21,23],fragmentinfo:[21,26],fragments_per_posit:23,fragmentsampl:29,frame:[],frame_energi:42,frame_residu:[38,40],frameresidu:[38,42,43],framework:5,free:[5,44,45],frequenc:[21,29],frm:31,frmrotam:[37,42,46],frmrotamergroup:[37,39,42,43],from:[0,1,2,4,5,6,7,9,12,14,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,42,43,44,45],fromhhm:21,fromhoriz:21,fromresidu:45,front:[1,7,12],fstream:32,fudg:20,fulfil:[21,45],full:[0,1,5,16,19,20,21,24,25,26,29,31,40,42],full_seq:[24,26],fullgapextend:[24,30],fulli:[5,12,16,17,21,24,25,31],function_typ:34,functions_specific_to_your_act:5,fundament:32,funni:[2,5],further:[23,24,30,31,32],furthermor:32,futur:[20,21],gamma:[34,35,37],gamma_bin:35,gap:[],gapextend:[24,30],gapfre:21,gather:[4,8,12,21,23,40,42,45],gciiipgatcpgdyan:[26,30],gener:[],generatedenovotrajectori:23,generatestructureprofil:21,geom:[16,17,20,23,27,30,37,42,43],geometr:[],get:[],getaa:[16,17,20],getaaa:16,getaah:16,getactiveedg:39,getactiverotam:39,getactivesubrotam:42,getallatomposit:[16,27,31],getallatomscoringkei:26,getallatomweight:26,getanchoratomindex:16,getangl:40,getangularbins:21,getatomcount:5,getatomnam:16,getatomnameamb:16,getatomnamecharmm:16,getaveragescor:26,getbackbonelist:[18,21],getbackbonescoringkei:26,getbackboneweight:26,getbins:22,getbinsperdimens:22,getbound:17,getc:17,getca:17,getcb:17,getchain:24,getchainindex:24,getchainnam:24,getchains:5,getcharg:[20,42],getclust:26,getclusteredcandid:26,getconfid:21,getcoordindex:21,getcoordinfo:21,getcpuplatformsupport:20,getdefault:[20,27,30],getdihedralangl:21,getdistbins:21,getdisulfidbridg:20,getdisulfidconnect:20,getdsspstat:21,getedg:39,getel:16,getenviron:16,getenvsetdata:5,getepsilon:20,getfirstindex:16,getforcefieldaminoacid:20,getfragmentinfo:[21,26],getframeenergi:42,getfudgelj:20,getfudgeqq:20,geth1index:16,geth2index:16,geth3index:16,getheavyindex:20,gethistogramindex:[17,22],gethistogramindic:22,gethnindex:16,gethydrogenindex:[16,20],getindex:[16,20],getinternalconnect:20,getinternalenergi:42,getinternalenergyprefactor:42,getlargestclust:26,getlastindex:16,getlength:24,getlist:23,getlooplength:20,getloopstartindic:20,getmass:20,getmaxnumatom:16,getmaxnumhydrogen:16,getn:17,getnam:[40,42],getnonbondedcutoff:27,getnum:26,getnumactiveedg:39,getnumactivenod:39,getnumactiverotam:39,getnumatom:[16,20],getnumb:26,getnumcandid:26,getnumchain:5,getnumcoord:21,getnumedg:39,getnumfrag:21,getnumhydrogen:16,getnumloopresidu:20,getnumnod:39,getnumresidu:[5,16,20],getnumrotam:39,getnumstempair:21,getnumsubrotam:42,geto:17,getolc:[16,17],getomegators:[16,17],getoxtindex:20,getpairwiseenergi:39,getparticletyp:42,getpeptideboundconnect:20,getphiprobabilitygivenpsi:22,getphitors:[16,17,40],getpo:[16,42],getpotentialenergi:20,getpredict:21,getprob:[22,42],getpsiprobabilitygivenphi:22,getpsitors:[16,17,40],getr:28,getresiduedepth:21,getringpunch:28,getscor:[21,29],getselfenergi:[39,42],getseqr:[16,34],getsequ:[16,17,21,26],getsequenceprofil:21,getsequenceprofilescoreskei:26,getsigma:20,getsimul:20,getsolventaccessibilitit:21,getstemrmsdskei:26,getstructureprofil:21,getstructureprofilescoreskei:26,getsubdb:21,getsubrotamerdefinit:42,getsystemcr:27,gettemperatur:[29,42],gettransform:17,getversionnumb:32,getweight:[23,26],ggg:30,gggaggg:30,gggggggggggggggggggg:30,git:[],gitignor:5,give:[4,5,12,18,26,29,30,42],given:[0,1,4,5,6,7,9,10,16,17,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,37,39,40,42,43,45],gln:44,gln_ne2:16,global:[11,26,32],glu:[16,42,44,45],glu_oe1:16,glutam:44,glutamin:44,gly:[30,31,40,44],gly_n:16,glycin:[17,27,31,44],goal:[1,25],goe:[2,5,10,12,30,45],goldfarb:30,goldstein:39,good:[4,5,14,20,21,30],got:2,grain:5,graph:[],graph_initial_epsilon:31,graph_intial_epsilon:31,graph_max_complex:31,grep:2,gromac:6,group:[],group_definit:[22,35],group_idx:35,guarante:[21,23,26,31,32],gui:[5,22],guid:27,guidelin:[5,32],gzip:[0,7,9],hand:[2,4,9,42],handl:[],handler:23,happen:[1,5,20,21,23,24,29,30,42],hardwar:14,harmon:[20,27],harmonic_angl:20,harmonic_bond:20,harmonic_improp:20,hasfraglength:21,hasfragmentinfo:26,hash:21,hasringpunch:28,have:[],hbond:[23,30,35,42,43,44],hbond_scor:32,hbondscor:[],headach:5,header1:4,header2:4,header3:4,header4:4,header:[],header_output_dir:4,headlin:5,heavi:[16,20,31,33,43],heavili:[21,40],helic:[17,19,20,23,30,35,41],helix:[14,17,29,40],hello:32,hello_world:5,hellyeah:14,help:[0,1,2,4,5,9,12,14,20,35],helpactiontest:1,helper:[],hen:21,henc:[5,10,16,21,32],here:[0,1,2,4,5,7,9,10,12,14,16,17,20,21,22,23,25,26,27,29,30,32,33,35,36,37,45],het:30,heurist:[30,43],heuristicprocessor:16,hgfhvhefgdntngcmssgphfnpygkehgapvdenrhlg:0,hhm:[21,26],hhsearch:21,hhsuit:21,hidden:42,hide:[5,12],hierarch:[26,34],hierarchi:11,high:[3,5,12,25,30],high_resolut:17,higher:[2,26,34,35],highest:11,highli:[2,5,21],hint:9,histidin:[20,44],histogram:[22,29],histori:12,hit:[1,12,22,27,39],hmm:21,holi:[],home:4,homolog:[0,8,14,21,30],homologu:21,honor:30,honour:[30,35],hook:[],horiz:21,host:[4,12],hotfix:12,hous:[],how:[],hparticl:42,hpp:32,hsd:[44,45],hse:[44,45],html:[2,5,12],http:5,hydrogen:[3,16,17,20,21,30,35,42,43],hyphen:1,i_loop:[20,31],id_:32,idea:[1,5,16,18,20,21,30,34,42,46],ideal:[17,27,46],idenfifi:43,ident:[21,22,35,45],identifi:[0,9,10,21,26,30,31,33,35,43,45],idx:[16,17,20,21,23,27,34,39,42],idx_ca_res_37:16,idxhandl:5,iff:[21,24,28],ifstream:32,ignor:[0,20,27,30,35],illustr:21,imagehandl:[17,34],imagin:5,imaginari:1,img:[17,34],immedi:[1,5,11,12],impact:20,implement:[12,21,23,24,27,30,32,37,39,40,44],implicit:2,improp:20,improv:[3,19,20,30,37,40],in_dir:4,in_fil:5,in_path:4,in_stream:32,in_stream_:32,inaccur:20,inaccurate_pot_energi:20,inact:46,inactive_internal_energi:46,incl:[20,21,30],includ:[2,5,7,12,14,16,19,20,21,24,26,28,30,32,40],include_ligand:30,includeenv:35,inclus:30,incompat:[26,27],incomplet:[30,41],inconsist:[9,16,17,20,21,24,26,27,31,34],inconveni:12,increas:[23,26,27,30,39],independ:[20,31,41],index:[5,15,16,17,20,21,22,23,24,26,27,28,29,30,33,34,35,38,42,43,45],index_four:20,index_on:20,index_thre:20,index_two:20,indic:[],individu:[33,35],inf:39,influenc:[9,23,34],info:[21,26,30,34],inform:[5,9,12,17,18,19,21,23,24,26,30,34],inherit:[1,33,34,35],init:12,init_bb_list:29,init_frag:29,initi:[3,16,17,21,23,26,27,29,30,31,33,34,35,39,42,45],initial_bb:26,initial_epsilon:[39,46],initialis:1,inlin:[5,32],inner:10,input:[0,1,3,9,12,14,20,21,22,23,27,29,30,31,33,35,37,39,41,43,46],insert:[16,17,24,26,29,30,46],insertinto:[16,17,26],insertloop:[24,30],insertloopcleargap:[24,26,30],insid:[1,4],insight:12,inspir:27,instanc:[3,5,9,19,20,32],instead:[1,2,4,5,7,21,23,24,26,29,30,35,43],instruct:2,int16_t:32,int32_t:32,int_32_t:32,integ:[5,9,16],intend:[1,5,29],interact:[5,20,27,33,34,35,37,38,39,42],intercept:[33,35],interest:[1,20,21,29,32,39,42,45],interfac:[0,4,5],intermedi:5,intern:[0,1,4,5,12,16,19,20,21,22,23,26,27,29,30,31,32,34,35,39,42,43,46],internal_e_prefac:43,internal_e_prefactor:42,internal_energi:42,internet:5,interpol:[34,45],interpret:[5,7],intervent:5,intrins:2,introduc:[1,4,5,12,27,30,39],invalid:[5,16,20,21,24,27,30,31,33,34,35,38,42,44,45],invok:[2,4,5,11,12],involv:[12,25,35,37],iostream:32,is_c_ter:[20,31],is_cter:20,is_n_ter:[20,31],is_nter:20,isallatomscoringsetup:[26,30],isallset:16,isanyset:16,isbackbonescoringsetup:30,isctermin:24,isempti:26,isen:10,ishbondacceptor:42,ishbonddonor:42,isntermin:24,isoleucin:44,isset:16,issimilar:45,issourc:32,istermin:24,isvalid:40,item:[1,5,12,16,17,20,21,30,34],iter:[21,22,23,26,27,29,30,39,42],itself:[4,5,12,21,29,31,32,33,35,42],job:[5,21,30],join:[5,16,18,21,26,27,29,31,36],jone:[21,42],jones1999:21,json:[0,9],just:[1,2,5,9,11,12,18,20,21,24,26,30],kabsch1983:21,kabsch:21,keep:[],keep_non_converg:26,keep_sidechain:[5,31],kei:[0,9,21,23,26,29,30,33,34,35],kept:[5,12,20,26,27,31,38],kernel:41,keyword:22,kic:[],kicclos:29,kick:9,kill_electrostat:20,kind:[1,5],kinemat:27,know:[2,45],known:[4,7,16,34,43],kortemm:27,krivov2009:[40,41],krivov:40,kwarg:1,l_e:42,lab:41,label:[12,20],lack:30,languag:4,larg:[21,22,27,30],larger:[10,17,21,30,39,43],largest:[23,26,37],last:[1,4,16,17,20,21,24,26,27,29,30,34,35,41],last_psi:17,later:[1,5,16,39],latest:[2,5],latter:[0,12,30],launcher:[4,5],layer:37,layout:[21,32],lazi:42,lbfg:30,lead:[0,5,6,7,17,20,26,27,31,33,35,41],least:[0,2,4,5,12,17,20,30,33,35,37,39],leav:1,left:[7,27],legal:5,len:[17,18,20,21,23,26,30,31,35,40],length:[6,16,19,20,21,22,23,24,26,27,30,31,32,33,34,37],lennard:42,less:[0,12,17,20,21,22,26,30,33,35,39,45],let:[1,5,17,21,26,40],letter:[16,17,21,22,29,44],leu:44,leu_h:16,leucin:44,level:[2,3,5,10,11,12,21,25,30,42],lexicograph:30,lib64:5,libari:41,libexec:[4,5],libpromod3_nam:4,librari:[],library1:4,library2:4,licenc:41,life:12,ligand:[3,30,31,43],like:[1,4,5,12,30,32,41,42],limit:[21,27,30],line:[],linear:[21,23,26,29,33,35],linear_weight:[26,29,33,35],linearcombin:26,linearscor:29,liner:34,link:[2,4,5,12,16,20,21,23,31,33,34,35,36],link_cmd:4,linkcheck:[2,5,12],linker:[4,30],linker_length:30,list:[0,1,2,3,4,5,6,7,9,16,17,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,42,43,45,46],listen:5,literalinclud:5,littl:[4,5,12,32],live:[4,5],lj_pair:20,load:[],load_frequ:[19,21],loadalign:[25,30],loadallatominteractionscor:33,loadallatompackingscor:33,loadamberforcefield:30,loadbb:21,loadcach:23,loadcbetascor:[26,29,35,36],loadcbpackingscor:35,loadcharmm:20,loadcharmmforcefield:30,loaddefaultallatomoverallscor:33,loaddefaultbackboneoverallscor:35,loaddunbracklib:[40,41],loadent:[0,9],loadfragdb:[18,19,26,30],loadhbondscor:35,loadpdb:[5,16,18,20,21,25,26,27,29,30,31,36,40],loadpenultimatelib:41,loadport:[20,21,22,32,33,35,45],loadreducedscor:35,loadsequenceprofil:[21,26],loadssagreementscor:35,loadstructuredb:[18,19,21,26,30],loadtorsionsampl:[17,19,22,29],loadtorsionsamplercoil:[19,26,30],loadtorsionsamplerextend:19,loadtorsionsamplerhel:19,loadtorsionscor:35,local:[2,20,21,22,33,35,45],locat:[2,4,17,24,32,33,35,39,42],log:[7,12,28,42,43],logic:0,loginfo:28,lone:42,lone_pair:42,longer:[],longest:21,look:[5,7,12,17,31,34],lookup:[],looooooong:39,loop:[],loop_candid:26,loop_length:[20,21,31],loop_main:5,loop_po:20,loop_seq:26,loop_start:[],loop_start_indic:[20,31],loopcandid:[],loss:12,lost:[1,12],lot:[1,5,9,12],lovel:41,lovell2000:41,low:[1,5,35,39,43],lower:[26,29,30,33,35],lowest:[26,29,42],lowest_energy_conform:29,lysin:44,machin:[20,21,22,32,33,35,45],macro:[4,5],made:[4,45],magic:[5,32],mai:[0,1,2,4,5,7,9,12,16,20,24,27,30],main:[30,32,45],mainli:[16,29,41,42],maintain:[5,12],major:12,makefil:[2,5],makestat:45,malici:12,man:[2,5],manag:[4,5],mandel:27,mandell2009:27,mani:[7,9,27,28,30,35,43],manipul:17,manner:[5,29,39],manual:[1,2,5,6,12,21,26,29,30,32,42],map:[16,17,21,23,28,31,34,35],mar:19,mark:[4,43],markup:5,mass:20,massiv:23,master:[5,12],mat3:6,mat4:[6,17,23,30],match:[0,4,20,21,22,23,26,27,29,30,34,35],materi:[1,5],math:28,mathemat:[26,27],matplotlib:22,matric:21,matrix:[6,21],matter:4,max:[6,16,24,28,30,31,35,39,45,46],max_alpha:35,max_beta:35,max_complex:[39,46],max_count:[33,35],max_d:35,max_dev:29,max_dist:[26,34],max_extens:30,max_gamma:35,max_iter:[23,26,30],max_iter_lbfg:30,max_iter_sd:30,max_length:24,max_loops_to_search:30,max_n:39,max_num_all_atom:30,max_p:43,max_prob:42,max_res_extens:30,max_step:27,max_to_show:10,max_visited_nod:39,maxfraglength:21,maxim:[19,21,23,26,27,29,30,34,35,39],maximum:[23,26,27,29,39,42,43],mc_closer:29,mc_cooler:29,mc_num_loop:30,mc_sampler:29,mc_scorer:29,mc_step:[30,39],mcsolv:39,mean:[4,5,9,12,16,20,27,30,31],meaning:[21,26,41],meant:[14,16,21,28,30,39,43],measur:23,mechan:[14,27,30],meddl:30,member:[5,9,26,30],memori:[21,30,32,39],mention:[1,2],merg:[12,20,23,24,26,30,31,34,42],merge_dist:30,mergegap:24,mergegapsbydist:30,mergemhandl:30,mess:[5,12],messi:12,met:44,methionin:[30,44],method:[0,1,9,16,20,21,22,27,30,31,32,39,43],metric:34,metropoli:[26,29,39],mhandl:[24,25,26,30],middl:12,might:[20,21,27,39,42,43,46],min:[26,35],min_alpha:35,min_beta:35,min_candid:26,min_d:35,min_dist:34,min_gamma:35,min_loops_requir:30,min_scor:26,mincadist:17,mind:[1,5],minim:[3,14,17,20,21,26,27,30,33,34,35,39,40],minimizemodelenergi:30,minimum:[17,23,37],minor:[3,20],minu:39,mirror:32,miser:10,mismatch:[16,34],miss:[0,7,9,20,30],mix:[0,4],mkdir:[2,5],mm_sy:[20,27],mm_sys_output:20,mm_system_cr:27,mmcif:7,mmsystemcr:[20,27],mod:5,mode:[1,35,45],modellinghandl:[24,26,30],modeltermini:30,modif:30,modifi:[5,12,17,26,30,35],modified_crambin:26,modul:[],module_data:4,mol:[],molecular:[14,21,27,30],moli:[],molprob:[],molprobity_bin:28,molprobity_execut:28,moment:5,monitor:1,monolith:5,mont:[3,23,26,29,30,39],mood:5,more:[1,2,4,5,9,10,12,23,30,37,39,42],most:[0,4,5,17,20,22,23,26,27,30,33,35,41],mostli:[4,12,42],motion:17,movabl:20,move:[2,3,5,12,20,26,27,29,30,32],movement:23,mpscore:28,msg:7,msgerrorandexit:7,msm:21,msse4:2,much:[5,21,30,35,39],multi:14,multipl:[0,2,3,4,5,9,10,14,20,23,26,30,31,33,35],multipli:[29,39],multitempl:9,must:[],mutlipl:9,my_db:21,myclass:32,myclassptr:32,mytrg:0,n_coord:6,n_num:24,n_po:[6,17,35,43],n_stem:[6,18,21,24,26,27,29],n_stem_idx:[],n_stem_phi:29,n_ter:[27,43],naiv:[],name:[0,1,4,5,7,9,10,16,20,21,22,24,26,28,30,37,41,42,44,45],name_pymod:4,namespac:[9,32],nan:45,nat:27,nativ:32,necessari:[5,17,21,29,34],necessarili:46,need:[1,2,3,4,5,7,9,11,12,17,20,21,22,23,26,27,30,31,32,33,34,35,40],need_config_head:4,neg:[1,20,27,34,39],neglect:[23,27,38,42],neglect_size_on:26,neighbor:[5,16,30],neighbour:[30,45],network:[17,37],never:[9,12,26,31,32,33,35],nevertheless:[5,42],new_default:20,new_env_po:16,new_po:16,new_res_nam:42,new_siz:17,newli:[16,29],next:[1,5,12,17,22,23,24,32],next_aa:29,nice:5,nitrogen:[6,17,27,42,43],nobodi:1,node:39,node_idx:39,non:[],nonbonded_cutoff:[20,27],none:[9,23,28,30,31],nonredund:21,nonrotamer:41,nonzero:[39,45],norm:35,normal:[33,35],normalis:34,notabl:21,note:[0,2,5,9,10,16,17,20,21,23,26,27,29,30,31,32,33,34,35,36,39,40,43,44],noth:[4,5,10,29,42],notic:[1,4,12],novel:21,now:[5,10,12,14,17,21],nparticl:42,nterminalclos:29,null_model:26,num:[18,23,26,27,31,36],num_frag:[21,30],num_gap_extens:24,num_loop:26,num_residu:[16,20,31,33,34],num_residues_list:31,num_trajectori:23,number:[0,1,5,6,9,10,14,16,17,19,20,21,22,23,24,26,27,29,30,31,32,33,34,35,37,38,39,42,45],numer:30,numpi:[22,29],o_po:[17,43],object:[],observ:[21,27,39,46],obtain:[14,18,30],obviou:12,occupi:[38,43],occur:[16,23,34,35],ocparticl:42,odd:21,off:[1,5,10,30],offend:28,offer:[19,25,42],offset:[0,3,9,21,26,30],ofstream:32,often:[5,7,9,27],olc:17,old:[28,30],oligom:25,oligomer:3,olson:21,omega:[16,17],onc:[1,5,12,20,23,26,27,39,45,46],one_letter_cod:[16,18,21,26,27,29,31,36],onli:[0,1,2,4,5,7,9,10,11,12,16,17,20,21,23,24,26,28,29,30,31,32,33,35,37,39,40,41,43],onto:[1,17,21,23],oparticl:42,open:[9,20,21,22,32,33,35,45],openmm:[2,14,20],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],oper:[3,12,14,16,21,39],opt:[7,9,12],optim:[],optimis:5,optimize_subrotam:[31,37],optimum:[],option:[0,2,9,27,30,45],order:[0,9,16,20,21,24,26,30,32,34,35],org:5,organ:[5,21,45],orient:[6,27,35],orig_indic:[26,28],origin:[6,9,12,17,26,29,30,35,39,46],ost:[],ost_double_precis:2,ost_ent:28,ost_librari:4,ost_root:[2,5],other:[0,1,2,4,5,10,12,16,17,26,30,31,33,35,39,42,45,46],other_db:21,other_index:17,other_res_index:16,otherwis:[1,4,5,10,12,16,17,20,21,23,24,26,27,29,33,34,35,39,42],our:[4,5,12,21,26],out:[1,2,4,5,10,12,16,20,21,22,23,24,26,40,45],out_path:4,out_po:20,out_stream:32,out_stream_:32,outer:10,outlier:28,output:[],output_dir:4,outsid:[5,34],over:[2,4,9,12,21,27,30,35,42],overal:[29,34,39],overhead:20,overlap:[20,29,30,31,35],overli:12,overload:32,overrid:[2,20],overridden:4,overview:[5,12],overwrit:26,overwritten:20,own:[],oxt:[6,16,20],oxygen:[17,30,42,43],pack:16,packag:[4,5,12],pad:[17,32],page:[2,5,15],pai:1,pair:[6,20,21,22,23,27,29,31,32,33,34,35,37,42,45],pairwis:[],pairwise_energi:39,pairwiseenergi:42,pairwisefunct:[34,35],pairwisefunctiontyp:34,pairwisescor:[],paper:[37,40,42],paragraph:[1,5],parallel:21,paramet:[1,4,5,6,7,9,10,11,16,17,19,20,21,22,23,24,26,27,28,29,30,31,33,34,35,37,38,39,41,42,43,44,45,46],parameter_index:21,parametr:[27,30,31,35,43],parent:[30,35],pars:[],parser:[],part:[1,5,12,14,16,29,30,34,35,37,39,40,42],partial:24,particip:[31,37],particl:[],particular:[5,21,26,27,29,39,42,45],partner:[33,34,35,42],pass:[9,12,16,20,21,23,24,27,29,38,42,43],past:[5,12,17,24],path:[1,2,4,5,7,12,14,20,21,22,28,33,35,45],path_to_chemlib:11,pattern:21,paus:10,pdb:[0,5,7,9,14,16,17,18,19,20,21,25,26,27,28,29,30,31,36,40],pdb_id:21,penal:[24,30],penalti:[24,30],penultim:[31,41],penultimatelib:32,peopl:12,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],peptid:[16,18,20,21,30,31,40],per:[4,5,8,12,16,21,22,26,29,30,33,34,35,37,39],percentag:28,perfect:5,perfectli:5,perform:[0,12,14,20,23,26,27,28,29,30,32,33,37,39],period:20,periodic_dihedr:20,periodic_improp:20,permiss:5,permut:39,phase:20,phe:[44,45],phenix:28,phenylalanin:44,phi:[16,17,21,22,27,29,35,40,43,45],phi_bin:[35,45],phi_handl:40,phipsisampl:29,phosphoserin:30,phrase:5,pick:[26,29],pictur:5,piec:[5,23],pipelin:[],pivot:[26,27,29],pivot_on:[26,27],pivot_thre:[26,27],pivot_two:[26,27],place:[1,2,4,5,7,9,12,35],plain:[0,9],plan:12,plane:28,platform:[14,20],pleas:[2,5,12,21,23,26,27,30],plot:22,plt:22,plu:[5,9,11,37,42],pm3_csc:12,pm3_openmm_cpu_thread:[14,20,30],pm3_runtime_profiling_level:10,pm3argpars:[],pm3argumentpars:[0,7,9],pm_action:[1,4,5],pm_action_init:5,pm_bin:1,png:22,point:[2,5,9,11,16,21,23,29,30,34,45],pointer:[2,5,32],polar:[42,43],polar_direct:42,polici:5,pop:12,popul:[2,12],port_str_db:21,portabl:[],portable_binary_seri:32,portable_fil:4,portablebinarydatasink:32,portablebinarydatasourc:32,pos_end:23,pos_on:23,pos_start:23,pos_two:23,posit:[],possibl:[0,3,5,9,12,17,20,21,22,24,26,27,29,30,31,32,33,34,35,37,39,42,44],post:9,postprocess:31,pot:20,pot_:27,potenti:[18,19,20,21,26,27,30,31,32,35,39],pqhpg:0,practic:[4,5,20,21],pre:[5,12],pre_commit:[5,12],preceed:31,precis:[2,26,30],precomput:[],pred:34,predefin:[4,14,20,30,33,35],predict:[21,23,30,34,35,37,40],prefactor:42,prefer:[2,4,45,46],prefilt:30,prefix:[1,4,5,7],prepar:[5,30],present:[17,27,31,42,43,45],prev_aa:29,prevent:[1,5],previous:[20,21,26,31,34],primary_rot_angl:17,principl:[29,34],print:[1,2,17,18,20,21,26,27,28,30,36],printstatist:21,printsummari:10,prior:30,privat:[1,32],pro:[16,22,44,45],probabilist:[21,43],probability_cutoff:43,probabl:[4,5,12,21,22,23,26,27,29,39,41,42,43,45],problem:[9,12,21,26,27,29,30,37,39,41,46],problemat:23,procedur:[23,31],process:[1,9,12,16,20,23,27,29,30,32,34,38,45],produc:[0,1,2,4,5,21,23,24,28,30,39,41,43],product:[1,3,12],prof:[21,26],prof_dir:21,prof_path:21,profil:[],profiledb:21,profilehandl:[21,23,26,30],profilehandlelist:[],prog:9,program:[4,5,8],project:[4,5,12],prolin:[17,28,43,44],promin:0,promod3_mod:4,promod3_nam:4,promod3_name_head:4,promod3_path:5,promod3_root:5,promod3_shared_data_path:[5,32],promod3_unittest:[1,4,5],promot:5,propag:[5,17],proper:[12,43],properli:[1,30,33,35,39,43],properti:[16,17,21,30,45],propos:[24,26,27,29,37],proposed_posit:29,proposestep:29,prot:[5,18,21,27,29,31,40],prot_rec:5,protein:[],proton:[16,20,44,45],provid:[0,1,2,4,5,9,12,16,17,18,20,21,23,24,26,27,28,29,30,31,32,34,41,42,43,45],prune:[39,46],pseudo:[29,30,33,35],psi:[16,17,21,22,27,29,35,40,43,45],psi_bin:[35,45],psi_handl:40,psipr:[21,23,34,35],psipred_confid:35,psipred_pr:23,psipred_predict:[21,23,30],psipred_st:35,psipredpredict:[],psipredpredictionlist:[],pull:[5,12],punch:[],pure:0,purpos:[5,30,45],push:12,pushverbositylevel:9,put:[1,4,5,7,9,30],py_run:[1,4,5],pyc:1,pylint:12,pylintrc:12,pymod:[4,5,12],pyplot:22,pytest:5,python2:5,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],python_root:2,pythonpath:5,qmean:2,qmeandisco:34,qualiti:30,queri:[21,45],querylib:45,question:22,quickli:[5,27],quit:[5,9],rachovski:19,rackovski:19,radian:[6,17,20,22],radii:28,radiu:[5,28,33,35],raihvhqfgdlsqgcestgphynplavph:0,rais:[0,6,9,16,17,20,21,22,23,24,26,27,28,29,30,31,33,34,35,37,38,42,43,45],rama_iffi:28,ramachandran:28,random:[17,19,22,26,27,29,39],random_se:26,randomized_frag:17,randomli:[22,29],rang:[5,6,16,17,18,20,21,22,23,24,27,29,30,33,34,35,45],rank:26,rapid:37,rare:5,rather:[5,7,12,45],raw:[],rawmodel:5,reach:[0,24,27],read:[0,5,7,9,12,20,21,22,24,31,32,33,35,41,45],readabl:[0,5,9,45],readdunbrackfil:41,reader:[12,14],readi:[2,45],readm:2,real:[5,9,32,43],realli:[1,2,5,7,12],reappear:12,reason:[5,12,21,27,29,33,46],rebas:12,rebuild:[2,5],recalcul:22,recent:12,recoginz:44,recogn:[0,9],recognis:[1,5,12],recognit:21,recommend:[2,5,20,30,35],reconstruct:[],reconstructcbetaposit:17,reconstructcstemoxygen:17,reconstructor:[27,30,31],reconstructoxygenposit:17,reconstructsidechain:[5,30,31],reconstructtest:5,record:[1,30],recreat:12,reduc:[3,20,21,23,30,35],reduced_scor:32,reducedscor:[],redund:19,ref_backbon:[18,21],ref_fil:5,refactor:3,refer:[1,4,5,14,16,17,18,20],referenc:5,refresh:26,regard:[27,37],region:[20,23,24,27,29,30,38,43],regist:[4,5],regress:41,reinterpret_cast:32,reject:[26,27,29],rel:[4,6,23,27,35,39],relat:[4,5,9,21,32,39,42],relax:[],relev:[2,3,4,20,31],remain:[25,29,30],rememb:[1,5,29],remodel:[26,31],remodel_cutoff:31,remov:[2,3,17,20,24,26,28,30,31,39,40],removeterminalgap:30,renumb:30,reorder:30,reordergap:30,replac:[16,17,29,30],replacefrag:17,report:[1,5,30],reportmolprobityscor:28,repositori:[1,4,5,12],repres:[],represent:[17,18,20,21,22,32,33,35,42,45],reproduc:30,requeset:35,request:[23,41,45],requir:[0,2,5,9,12,16,17,21,22,23,26,27,30,31,32,33,35,42,43,44,45],reread:21,res_idx:42,res_index:16,res_indic:[16,20,31],res_list:[16,20,27,31],res_num:16,resembl:12,reserv:7,reset:[16,20,27,29,34,39,42],residu:[],residue_depth:21,residue_index:[38,42,43],residuehandl:[6,16,17,21,24,26,27,28,29,42,43,45],residuehandlelist:16,resiz:[17,32],resnum:[16,17,24,26,30,31,33,34],resnum_on:34,resnum_rang:30,resnum_two:34,resolut:[17,27,34,35],resolv:[12,16,27,34],resolvecystein:37,resort:30,respect:[6,20,30],respons:[5,12],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],restor:17,restraint:27,restrict:[5,12,24],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],result:[0,2,5,20,22,23,26,27,28,29,30,31,37,39,41,45],resum:10,reus:[30,31],review:12,reviv:12,rewrit:1,richardson:41,ridig:31,right:[1,2,5,9],rigid_frame_cutoff:31,rigidblock:23,ring:[],ring_punch_detect:30,rmsd:[17,18,21,23,26,27],rmsd_cutoff:[21,26,27],rmsd_thresh:[21,23],rmsd_threshold:21,rnum:36,robot:27,role:9,root:[2,4,5,12],rosetta:35,rot:31,rot_constructor:40,rot_group:[40,43],rot_lib:43,rot_lib_entri:43,rota_out:28,rotam:[],rotamer_group:[37,39,40],rotamer_id:40,rotamer_librari:31,rotamer_model:31,rotamer_on:37,rotamer_res_indic:31,rotamer_two:37,rotamergraph:[31,39,40,42,46],rotamergroup:[39,42],rotamerid:[],rotamerlib:[31,32,41,43,45],rotamerlibentri:[43,45],rotat:[6,17],rotatearoundomegators:17,rotatearoundphipsitors:17,rotatearoundphitors:17,rotatearoundpsitors:17,rotationaroundlin:6,roughli:19,round:45,routin:[1,14,26],rrm:31,rrmrotam:[37,42],rrmrotamergroup:[37,39,42,43],rst1:4,rst2:4,rst:[4,5,12],rsync:5,rule:[5,6,12],run:[],runact:1,runexitstatustest:1,runmolprob:28,runmolprobityent:28,runnabl:5,runner:1,runtest:[1,5],runtim:[],runtimeerror:[6,16,17,20,21,22,24,26,27,29,30,31,33,34,35,37,38,41,42,43,45],runtimeexcept:22,safe:2,said:4,same:[0,1,2,4,5,9,10,16,20,21,23,26,27,29,30,31,32,33,34,35,38,39,42,43,45],samiti:30,sampl:[],sampled_frag:29,samplemontecarlo:29,sampler:[],sampling_start_index:29,sander:21,saniti:2,sanity_check:2,sanner1996:21,sanner:21,satisfi:44,save:[5,12,17,20,21,22,23,26,29,32,33,35,45],savebb:21,savecach:23,savefig:22,savepdb:[14,16,17,20,21,25,26,27,29,30,31,40],saveport:[20,21,22,32,33,35,45],sc_data:27,sc_rec:[27,31],sc_rec_test:31,sc_result:27,scale:17,scatter:22,scheme:[1,5,9,16,24,29],sci:[27,37],scondari:30,scope:10,score:[],score_contain:26,score_env:[26,29,36],score_threshold:37,score_vari:30,scorecontain:26,scoring_weight:23,scoringgapextend:[24,30],scoringweight:[23,26],scratch:21,scriptnam:7,scriptpath:5,scwrl4:[37,40,42,43],scwrlrotamerconstructor:[40,42,43],seamlessli:12,search:[2,5,15,16,21,23,26,28,30,31,35,37,42,43],searchdb:[18,21],second:[5,17,20,23,26,27,30,33,34,35,37,39],secondari:[21,23,35],secondli:5,section:[1,4,13,47],see:[0,1,5,6,7,9,12,14,16,19,20,21,22,24,26,28,29,30,32,33,35,39,45],seed:[19,22,26,27,29,39],seem:12,segment:17,select:[3,21,23,29,30,31,36,39,40],selenium:30,self:[1,5,37,39,42],self_energi:42,send:7,sens:[34,35],sensibl:30,separ:[1,5,20,22,30,33,35,37,39],seq:[9,16,18,21,23,24,26,30,34,36],seq_idx_on:23,seq_idx_two:23,seq_one_idx:23,seq_sep:[33,35],seq_tpl:[26,30],seq_trg:[26,30],seq_two_idx:23,seqid:21,seqr:[0,16,18,21,23,24,26,29,30,31,33,34,35],seqres_str:[16,27,31],seqsim:21,sequenc:[],sequencefromchain:36,sequencehandl:[16,23,24,30,34],sequencelist:[16,30,34],sequenceprofil:21,sequenti:[17,30],ser:44,serial:[21,32],serializ:32,serin:44,serv:[1,9,21,23,26,29],servic:12,set:[1,2,4,5,7,9,11,12,14,16,17,20,21,23,26,27,28,29,30,31,32,33,34,35,37,39,40,42,43,45,46],setaa:17,setactivesubrotam:42,setallatomscoringkei:26,setaroundomegators:17,setaroundphipsitors:17,setaroundphitors:17,setaroundpsitors:17,setbackbonescoringkei:26,setbackrub:17,setc:17,setca:17,setcb:17,setcharg:20,setcpuplatformsupport:20,setdefault:20,setdisulfidconnect:20,setenergi:[33,35],setenviron:[16,27,31,34],setepsilon:20,setframeenergi:[40,42],setfudgelj:20,setfudgeqq:20,setinitialenviron:[16,26,27,29,31,34,36],setinternalconnect:20,setinternalenergi:42,setinternalenergyprefactor:42,setinterpol:45,setmap:[34,35],setmass:20,setn:17,setnonbondedcutoff:27,seto:17,setolc:17,setpeptideboundconnect:20,setphitors:17,setpo:16,setpolardirect:42,setprob:42,setpsipredpredict:[30,34,35],setpsitors:17,setresidu:16,setscor:35,setsequ:17,setsequenceoffset:30,setsequenceprofil:30,setsequenceprofilescoreskei:26,setsigma:20,setstemrmsdskei:26,setstructureprofil:21,setstructureprofilescoreskei:26,settemperatur:42,setup:[],setupdefaultallatomscor:[26,30],setupdefaultbackbonescor:[26,30],setupsystem:20,setweight:26,sever:[2,3,5,9,19,21,22,23,26,27,31,37,42,45,46],sg_pos_on:37,sg_pos_two:37,shake:29,shanno:30,shapovalov2011:41,shapovalov:[40,41],shared_ptr:32,shebang:5,sheet:[30,41],shelenkov:37,shell:[1,2,5,7],shift:[17,24],shiftctermin:24,shiftextens:24,shorten:30,shorter:30,shortest:26,shortli:5,should:[1,2,4,5,7,9,12,14,17,18,21,22,23,26,27,29,30,31,32,34,38,39,40,42],show:[1,5,9,10,26,29,40],showcas:[1,16,20,22],shown:[5,10,30],shrink:17,side:[5,30,37,40],sidechain:[],sidechain_pymod:5,sidechain_reconstructor:30,sidechain_rst:5,sidechain_test_data:5,sidechain_test_orig:31,sidechain_test_rec:31,sidechain_unit_test:5,sidechainparticl:[42,43],sidechainreconstructiondata:[],sidechainreconstructor:[],sidenot:31,sig1:45,sig2:45,sig3:45,sig4:45,sigma:20,silent:1,sim:20,similar:[1,2,12,18,21,23,34,35,45],similardihedr:45,similarli:[2,20,30],simpl:[0,6,17,21,29,33,34,35,37,45],simpler:[20,30],simplest:[5,25],simpli:[16,17,26,27,29,30,43,44,45],simplic:18,simplif:9,simplifi:[3,17,20,21],simul:[20,26,27,29,39],sinc:[1,2,4,5,7,12,14,17,20,21,22,23,39,41,44],singl:[2,4,5,16,17,20,21,23,26,27,29,30,31,34,35,38,39,41,42,43,46],single_chain_structur:21,singleton:20,singular:23,sink:32,sit:5,site:5,size:[5,16,17,21,22,27,29,32,33,34,35],sizeof:32,skip:[0,1,5,12,21,30,43],slide:23,slight:30,slightli:[30,39],slow:32,slower:[14,20,21,22,30,33,35,45],small:[5,21,27,30,31],smaller:[17,21,23,27,35],smallest:[],smallish:[2,5],smart:12,smng:3,smooth:41,smtl:30,soding2005:21,softsampl:29,softwar:5,sol:40,sole:[1,12],soli:19,solut:[5,23,26,27,29,30,31,39,40],solv:[12,39,46],solvent:21,solvent_access:21,solvent_accessibility_str:21,solver:3,some:[1,2,4,5,9,12,16,18,21,25,28,29,30,31,32,34,36,40,43,45],somedata:32,someth:[1,5,7,12,21],sometim:12,somewher:[4,21],soon:[27,35,39,40,45],sort:[1,4,10,26,39,45],sound:12,sourc:[1,2,4,5,7,9,11,12,21,23,26,27,28,30,31,32,45],source1:[4,12],source2:[4,12],source3:4,source4:4,source_chain_idx:30,source_mhandl:30,span:30,sparticl:42,spatial:5,spawn:[1,5],spdbv:30,spdbv_style:30,special:[1,2,4,5,20,43,44,45],specif:[1,5,20,21,22,23,26,29,34,35,36,41,43,45],specifi:[2,4,6,17,21,22,27,30,31,34,35,39,42,45],specimen:7,speed:[3,20,30],spehner:21,spend:5,spent:[10,14],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],spit:24,split:36,sport:5,squar:21,src:[5,12],src_db:21,ss_agreement:[30,35],ss_agreement_scor:32,ssagre:21,ssagreementscor:[],sse:2,sstream:32,stabil:21,stabl:12,stack:12,stage:[],stai:[1,5,12,39],standard:[2,5,8,9,12,16,22,32,35,41,45],start:[],start_idx:26,start_resnum:[16,17,26,29,30,31,33,34,35],start_resnum_list:31,start_temperatur:[29,39],starter:1,startscop:10,stash:12,state:[1,2,5,16,21,35,37,44,45],staticruntimeprofil:10,statist:[10,19,21],statu:[1,5],std:32,stderr:1,stdout:1,steadili:[29,39],steepest:[27,30],stem:[6,17,20,21,24,26,27,29,30,31],stemcoord:6,stempairorient:6,step:[],stereochem:30,steric:45,still:[5,10,20,30,32],stop:[1,5,10,24,27],stop_criterion:27,storabl:21,storag:[5,16,20,33,35],store:[0,1,5,6,12,14,16,17,20,21,22,23,24,26,27,29,30,31,32],stori:5,str:[1,7,9,10,11,16,17,20,21,22,23,24,26,27,28,29,30,31,32,33,34,35,42,44,45],str_len:32,straight:12,strategi:45,stream:32,stretch:[16,21,30,34],strict:12,string:[0,7,9,21,22,24,32],stringstream:32,strip:30,struct:32,struct_db:18,structral:[16,34],structur:[],structural_db:26,structuralgap:[24,28],structuralgaplist:[24,30],structure_db:[21,23,26,30,32],structure_dir:21,structure_path:21,structure_sourc:9,structuredb:[19,21,23,26,30,32],structureprofil:21,stuff:21,style:[30,35],sub:[5,21,27],sub_frag:17,sub_res_list:21,subdir:5,subfold:5,subject:5,submodul:5,submodule1:12,subpart:23,subproblem:[],subrotam:[],subrotameroptim:[31,46],subsequ:[17,30,39],subset:[20,23,26,27,31],subst:21,subst_matrix:21,substitut:21,substweightmatrix:21,subtre:[4,5],succeed:24,success:[7,29,39],suffix:7,suggest:5,suit:[1,5,21],sulfur:[37,42,43],sum:[10,23,24,30,31,35,37],summari:10,superpos:[17,21,23,26,27,29],superpose_stem:17,superposed_rmsd:[17,26],superposeonto:17,superposit:[3,23,26,29],superpost:23,supervis:1,supos:21,support:[1,5,7,9,14,20,27,30],suppos:12,sure:[2,5,9,12,21],surf:21,surfac:21,surfacehandl:21,surotam:42,surround:[20,21,27,31,33,35],symmetr:[21,34,45],sync:5,system:[],t_sampler:22,tackl:[],tail:17,tailor:[16,30],take:[5,16,21,22,23,26,27,29,30,32,35,37,39,43,46],taken:[0,16,20,27,30,43],talk:1,target:[0,1,2,4,5,9,14,21,23,25,26,27,29,30,34],target_chain_idx:30,target_mhandl:30,target_pdb:28,target_sequ:21,task:[5,12,27,30,32],technic:21,tell:[1,5,7,9,12,21],temperatur:[26,29,39,42],templat:[0,1,9,14,25,30,32,34],temporari:[21,30],temporarili:12,term:[5,21,42,44,45,46],termin:[1,6,7,14,16,17,20,24,26,27,29,30,31],terminal_len:29,terminal_seqr:29,termini:[24,29,30],terminu:[21,29,30,43],test_:5,test_action_:1,test_action_do_awesom:1,test_action_help:1,test_awesome_featur:5,test_check_io:32,test_cod:5,test_doctest:5,test_foo:4,test_portable_binari:32,test_reconstruct_sidechain:5,test_sidechain_reconstruct:5,test_submodule1:12,test_suite_:4,test_suite_your_module_run:5,test_your_modul:12,testcas:[1,5],testcasenam:5,testexit0:1,testpmexist:1,testreconstruct:5,testutil:[1,5],text:[1,9],than:[4,5,9,10,12,16,17,21,23,26,27,28,30,31,35,37,39],thei:[2,5,12,16,17,20,21,22,26,27,28,29,30,37,39,42,43,44,45],them:[4,5,12,17,20,21,22,23,24,26,30,31,34,38],themselv:20,theoret:29,theori:37,therefor:[5,17,19,21,23,27,29,30,45],thereof:20,thi:[0,1,2,4,5,7,8,9,10,11,12,13,14,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,42,43,44,45,46,47],thing:[1,2,5,12,21,23,30,45],think:5,thoroughli:12,those:[0,1,2,4,5,9,12,20,26,30,31,32,33,35,39,40],though:[20,30,32],thr:44,thread:[14,19,20,30],three:[1,4,12,16,17,22,26,28,29,35,44],threonin:44,thresh:[17,23,42,45],threshold:[21,23,27,30,31,34,39,45],through:[1,5,6,17,21,24,30,33,35],throughout:[9,12,19,20],thu:7,tidi:12,tightli:12,time:[1,5,9,10,12,14,23,30,34],timer:10,tini:[12,30],titl:22,tlc:[16,44],tlc_an:16,tlctorotid:[40,44],tmp_buf:32,todens:17,toentiti:[14,16,17,20,21,27,29,31],toframeresidu:42,togeth:[5,12,21,37],toggl:35,too:[9,12,21,26,27,30,32,42],tool:[4,18,21,32,36,40],toolbox:12,top:[2,5,10,11,12],topic:[1,5,12],topolog:[20,27],torrmrotam:42,torsion:[],torsion_angl:40,torsion_bin:35,torsion_plot:22,torsion_sampl:[17,21,26,27,29,30,32],torsion_sampler_coil:[23,32],torsion_sampler_extend:[23,32],torsion_sampler_hel:32,torsion_sampler_helix:23,torsion_sampler_list:21,torsion_scor:32,torsionprob:21,torsionsampl:[17,19,21,22,23,26,27,29,30,32,35],torsionscor:[],total:[10,21,23,35,39],touch:[1,5,20],toward:[5,24,27,30,42,43,46],tpl:[0,25,26,30],tpr:[44,45],trace:30,track:[],tradition:7,trail:0,train:19,trajectori:[23,29],tran:[17,44,45],transform:[6,17,23,30,45],translat:[4,5,35,44,45],transomegators:17,treat:[5,20,30,31,32,45],treatment:43,tree:[1,4,5,12,39,40],treesolv:[31,39,40],trg:[0,9,26,30],tri:[23,24,30,37,39,45],trick:[1,12],trigger:[1,4,5,41],tripeptid:22,tripl:7,triplet:[],trp:44,trustworthi:12,tryptophan:44,ttccpsivarsnfnvcrlpgtpea:[26,30],ttccpsivarsnfnvcrlpgtpeaicatgytciiipgatcpgdyan:30,ttccpsivarsnfnvcrlpgtpeaicatytgciiipgatcpgdyan:[26,30],tupl:[6,7,17,20,21,23,24,28,30,31,37,39],turn:[0,1,7,10,12,30],tutori:5,tweak:30,twice:[10,34],two:[1,5,12,16,17,20,21,23,24,26,27,30,31,32,33,34,35,37,40,42,44,45],txt:[1,2,4,5,12],type:[],typedef:32,typenam:32,typic:[17,23,29,40,43],tyr:[44,45],tyrosin:44,uint32_t:32,uint:32,ultra:21,uncertain:5,uncharg:43,undefin:20,under:[4,5],undergo:[23,27,29,31],underli:[24,26],underscor:1,understand:12,undo:39,unexpect:2,unfavor:[17,27],unfavour:[27,29,37],unfortun:12,unhandl:[0,9],uniform:27,uniqu:[23,26,29,45],unittest:[1,5,12],unix:12,unknown:20,unless:[9,16,17,20,26,33,35],unlik:40,unrecognis:7,unset:[16,20,31],unsupport:[9,32],until:[5,27,30,34,39,43],untouch:17,untrack:1,unus:12,updat:[3,5,12,16,20,24,26,27,30,31,34],updatedistribut:22,updateposit:[20,27],upon:[27,29],upper:[],urei:20,urey_bradley_angl:20,usabl:12,usag:[0,9,19,21,26,27,31,39],use_amber_ff:30,use_bbdep_lib:31,use_frm:31,use_full_extend:30,use_scoring_extend:30,useclassicmod:35,useincludeenvmod:35,user:[],userlevel:1,usr:[2,5],usual:[1,2,4,5,9,10,12,17,26,30,33],utilis:[5,12],v_size:32,val:[22,44],valid:[0,12,17,24,29,30,31,39,41],valin:44,valu:[2,7,9,16,17,20,23,26,29,30,32,33,34,35,37,39,40,41,42,44,45,46],valueerror:[23,30],vanish:34,varadarajan:21,vari:[4,32],variabl:[1,2,5,10,14,20,28,30,32],variant:[20,26],variou:[1,2,4,12,25],vec3:[6,16,17,27,28,37,42,43],vec3list:23,vector:[20,22,26,32],verbos:1,veri:[1,5,7,12,20,23,30,32],verif:9,verifi:[1,7,12],version:[2,5,12,21,30,32,35,41,44],vertex:21,via:[1,5,9,11,20],view:[9,12,22,30,34],virtual:5,visibl:31,visual:14,wai:[1,2,4,5,12,17,18,20,21,26,35,40,41,44],wait:5,walk:[1,5],want:[1,2,5,11,12,17,21,23,26,27,30,34,35,42,43,45,46],warn:[5,12,30],watch:5,web:[2,5],weight:[3,21,23,26,29,33,35],weird:[23,27,40],well:[0,2,4,12,16,21,22,23,24,26,30,32,35,40,45],went:[0,5],were:[12,21,26,30,35],wether:39,what:[1,5,7,9,12,18,34,35],when:[1,4,5,9,10,16,17,20,21,22,23,24,26,29,30,31,32,34,35,37,39,41,42,43,45],whenev:[5,16,26,34],where:[0,1,4,5,7,9,10,12,16,17,20,21,22,26,30,32,33,34,35,39,41,42,43,45],wherea:21,whether:[5,7,17,20,21,26,27,29,31,34,39,42,43,45],which:[0,1,4,5,6,7,8,9,12,14,16,17,20,21,22,23,24,26,27,28,29,30,31,32,33,34,35,36,39,42,43,45],whistl:5,whitespac:0,who:[39,40],whole:[1,2,5,12,17,21,30,42],why:[1,12,43],width:[32,39,40],wild:4,window:23,window_length:23,wise:4,wish:[2,13,22,30],with_aa:26,with_db:26,within:[2,4,5,10,12,16,20,23,24,28,30,31,33,35,45],without:[1,4,5,7,9,20,21,24,27,30,34,41],won:[30,31,41,43],word:[4,41],work:[1,2,4,5,10,12,14,20,24,30,32,41],worst:12,would:[1,2,5,7,17,22,35,37,42],wrap:21,wrapper:[1,4,5,11,30],write:[],writebasetyp:32,writemagicnumb:32,writetypes:32,writeversionnumb:32,written:[5,32],wrong:[2,9],xlabel:22,xlim:22,xml:5,xxx:[17,44],xxx_num_atom:16,xxx_num_hydrogen:16,year:1,yet:[21,26],ylabel:22,ylim:22,you:[0,1,2,4,5,7,9,10,11,12,14,16,17,18,20,21,22,23,25,26,27,29,30,31,32,33,34,35,39,40,41,42,43,45,46],your:[],your_modul:[5,12],yourself:[2,5,12,30,39,43],zero:[0,21,30,45],zhou2005:21,zhou:21,zip:40},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","Contributing","Geometry functions","<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","Welcome To ProMod3&#8217;s Documentation!","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","All Atom Scorers","Backbone Score Environment","Backbone Scorers","<code class=\"docutils literal\"><span class=\"pre\">scoring</span></code> - Loop Scoring","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":[16,17,21,22,24,26,31,33,34,35],"default":30,"function":[4,6,7,8,24,31,34],acid:[16,20,22],action:[0,1,4,5],actiontestcas:1,algorithm:23,all:[16,27,33],allatomclashscor:33,allatomenv:16,allatomenvposit:16,allatominteractionscor:33,allatomoverallscor:33,allatompackingscor:33,allatomposit:16,allatomscor:33,amino:[16,20,22],angl:22,api:1,argument:9,atom:[16,27,33],backbon:[27,34,35,45],backbonelist:17,backboneoverallscor:35,backbonescor:35,backbonescoreenv:34,base:[21,33,35],binari:32,block:[23,42],bond:37,branch:12,build:[0,2,30,42],can:44,candid:26,cbetascor:35,cbpackingscor:35,ccd:27,chain:21,changelog:3,check:28,clashscor:35,closer:29,cmake:[1,2,4,12],code:32,command:9,construct:[34,43],constructor:43,contribut:5,conveni:34,cooler:29,core:8,creat:[1,20],data:[21,32],databas:21,defin:[21,22],definit:4,densityscor:35,depend:[2,45],detect:28,develop:13,dihedr:22,directori:12,distinguish:16,disulfid:37,document:[4,5,13,15,47],entri:45,enumerador:[],environ:34,evalu:37,everyth:7,exampl:[26,32],execut:1,exisit:32,extend:24,featur:[5,21],file:[7,32],find:21,fit:27,forcefield:20,fragment:21,frame:[38,43],gap:[24,27],gener:[20,29],geometr:21,geometri:6,get:[14,44],git:12,graph:39,group:42,handl:[16,18,24,26,30],have:1,hbondscor:35,header:32,helper:7,hook:12,how:[5,44],indic:15,instal:2,integr:1,introduct:[4,7,9],issu:5,keep:26,kic:27,librari:[41,45],licens:5,line:9,load:[19,41],lookup:20,loop:[17,18,20,26,27,29,36],loopcandid:26,mainten:4,make:[1,2],messag:7,model:[0,14,23,25,26,28,30,40],modul:[4,5],mol:20,molprob:28,must:1,non:45,novo:[23,29],object:[19,29,38],optim:46,ost:20,output:1,own:5,pairwis:34,pairwisescor:35,pars:9,parser:9,parti:5,particl:42,pipelin:[14,30],pm3argpars:9,portabl:32,posit:16,precomput:19,profil:10,promod3:[0,2,4,5,8,12,14,15,32],protein:25,psipredpredict:21,punch:28,quick:5,raw:30,reconstruct:31,reducedscor:35,relax:27,releas:3,repres:17,residu:43,rigid:23,ring:28,rotam:[39,41,42,43,45],rotamerid:44,run:[1,2,14],runtim:10,sampl:22,sampler:[22,29],score:[26,34,36],scorer:[5,29,33,35],script:1,sequenc:21,setcompoundschemlib:11,setup:12,share:[4,7],sidechain:[31,40],sidechainreconstructiondata:31,sidechainreconstructor:31,smallest:42,ssagreementscor:35,stage:12,start:[5,14],step:30,structur:[12,21],subclass:1,subrotam:46,system:20,tabl:15,test:[1,4,5,7],test_act:1,third:5,torsion:22,torsionscor:35,track:26,triplet:22,type:45,unit:[1,4,5],user:47,welcom:15,write:5,your:5}})
\ No newline at end of file
+Search.setIndex({envversion:47,filenames:["actions/index","actions/index_dev","buildsystem","changelog","cmake/index","contributing","core/geometry","core/graph_minimizer","core/helper","core/index","core/pm3argparse","core/runtime_profiling","core/setcompoundschemlib","dev_setup","developers","gettingstarted","index","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","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:{"":{"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:[6,1,1,""],ConstructCBetaPos:[6,1,1,""],ConstructCTerminalOxygens:[6,1,1,""],EvaluateGromacsPosRule:[6,1,1,""],GraphMinimizer:[7,3,1,""],RotationAroundLine:[6,1,1,""],StaticRuntimeProfiler:[11,3,1,""],StemCoords:[6,3,1,""],StemPairOrientation:[6,3,1,""],helper:[8,2,0,"-"],pm3argparse:[10,2,0,"-"]},"promod3.core.GraphMinimizer":{AStarSolve:[7,4,1,""],AddEdge:[7,4,1,""],AddNode:[7,4,1,""],ApplyDEE:[7,4,1,""],ApplyEdgeDecomposition:[7,4,1,""],MCSolve:[7,4,1,""],NaiveSolve:[7,4,1,""],Prune:[7,4,1,""],Reset:[7,4,1,""],TreeSolve:[7,4,1,""]},"promod3.core.StaticRuntimeProfiler":{Clear:[11,5,1,""],IsEnabled:[11,5,1,""],PrintSummary:[11,5,1,""],Start:[11,5,1,""],StartScoped:[11,5,1,""],Stop:[11,5,1,""]},"promod3.core.StemCoords":{c_coord:[6,6,1,""],ca_coord:[6,6,1,""],n_coord:[6,6,1,""]},"promod3.core.StemPairOrientation":{angle_four:[6,6,1,""],angle_one:[6,6,1,""],angle_three:[6,6,1,""],angle_two:[6,6,1,""],distance:[6,6,1,""]},"promod3.core.helper":{FileExists:[8,1,1,""],FileExtension:[8,1,1,""],FileGzip:[8,1,1,""],MsgErrorAndExit:[8,1,1,""]},"promod3.core.pm3argparse":{PM3ArgumentParser:[10,3,1,""]},"promod3.core.pm3argparse.PM3ArgumentParser":{"__init__":[10,4,1,""],AddAlignment:[10,4,1,""],AddStructure:[10,4,1,""],AssembleParser:[10,4,1,""],Parse:[10,4,1,""],action:[10,6,1,""]},"promod3.loop":{AllAtomEnv:[17,3,1,""],AllAtomEnvPositions:[17,3,1,""],AllAtomPositions:[17,3,1,""],AminoAcidAtom:[17,3,1,""],AminoAcidHydrogen:[17,3,1,""],AminoAcidLookup:[17,3,1,""],BackboneList:[18,3,1,""],CoordInfo:[22,3,1,""],ForcefieldAminoAcid:[21,3,1,""],ForcefieldBondInfo:[21,3,1,""],ForcefieldConnectivity:[21,3,1,""],ForcefieldHarmonicAngleInfo:[21,3,1,""],ForcefieldHarmonicImproperInfo:[21,3,1,""],ForcefieldLJPairInfo:[21,3,1,""],ForcefieldLookup:[21,3,1,""],ForcefieldPeriodicDihedralInfo:[21,3,1,""],ForcefieldUreyBradleyAngleInfo:[21,3,1,""],FragDB:[22,3,1,""],Fragger:[22,3,1,""],FraggerMap:[22,3,1,""],FragmentInfo:[22,3,1,""],LoadFragDB:[20,4,1,""],LoadStructureDB:[20,4,1,""],LoadTorsionSampler:[20,4,1,""],LoadTorsionSamplerCoil:[20,4,1,""],LoadTorsionSamplerExtended:[20,4,1,""],LoadTorsionSamplerHelical:[20,4,1,""],MmSystemCreator:[21,3,1,""],PsipredPrediction:[22,3,1,""],StructureDB:[22,3,1,""],StructureDBDataType:[22,3,1,""],TorsionSampler:[23,3,1,""]},"promod3.loop.AllAtomEnv":{ClearEnvironment:[17,4,1,""],GetAllAtomPositions:[17,4,1,""],GetEnvironment:[17,4,1,""],GetSeqres:[17,4,1,""],SetEnvironment:[17,4,1,""],SetInitialEnvironment:[17,4,1,""]},"promod3.loop.AllAtomEnvPositions":{all_pos:[17,6,1,""],res_indices:[17,6,1,""]},"promod3.loop.AllAtomPositions":{AllAtomPositions:[17,4,1,""],ClearPos:[17,4,1,""],ClearResidue:[17,4,1,""],Copy:[17,4,1,""],Extract:[17,4,1,""],ExtractBackbone:[17,4,1,""],GetAA:[17,4,1,""],GetFirstIndex:[17,4,1,""],GetIndex:[17,4,1,""],GetLastIndex:[17,4,1,""],GetNumAtoms:[17,4,1,""],GetNumResidues:[17,4,1,""],GetOmegaTorsion:[17,4,1,""],GetPhiTorsion:[17,4,1,""],GetPos:[17,4,1,""],GetPsiTorsion:[17,4,1,""],GetSequence:[17,4,1,""],InsertInto:[17,4,1,""],IsAllSet:[17,4,1,""],IsAnySet:[17,4,1,""],IsSet:[17,4,1,""],SetPos:[17,4,1,""],SetResidue:[17,4,1,""],ToEntity:[17,4,1,""]},"promod3.loop.AminoAcidLookup":{GetAA:[17,5,1,""],GetAAA:[17,5,1,""],GetAAH:[17,5,1,""],GetAnchorAtomIndex:[17,5,1,""],GetAtomName:[17,5,1,""],GetAtomNameAmber:[17,5,1,""],GetAtomNameCharmm:[17,5,1,""],GetElement:[17,5,1,""],GetH1Index:[17,5,1,""],GetH2Index:[17,5,1,""],GetH3Index:[17,5,1,""],GetHNIndex:[17,5,1,""],GetHydrogenIndex:[17,5,1,""],GetIndex:[17,5,1,""],GetMaxNumAtoms:[17,5,1,""],GetMaxNumHydrogens:[17,5,1,""],GetNumAtoms:[17,5,1,""],GetNumHydrogens:[17,5,1,""],GetOLC:[17,5,1,""]},"promod3.loop.BackboneList":{"__len__":[18,4,1,""],ApplyTransform:[18,4,1,""],BackboneList:[18,4,1,""],CARMSD:[18,4,1,""],Copy:[18,4,1,""],Extract:[18,4,1,""],GetAA:[18,4,1,""],GetBounds:[18,4,1,""],GetC:[18,4,1,""],GetCA:[18,4,1,""],GetCB:[18,4,1,""],GetN:[18,4,1,""],GetO:[18,4,1,""],GetOLC:[18,4,1,""],GetOmegaTorsion:[18,4,1,""],GetPhiTorsion:[18,4,1,""],GetPsiTorsion:[18,4,1,""],GetSequence:[18,4,1,""],GetTransform:[18,4,1,""],InsertInto:[18,4,1,""],MinCADistance:[18,4,1,""],RMSD:[18,4,1,""],ReconstructCBetaPositions:[18,4,1,""],ReconstructCStemOxygen:[18,4,1,""],ReconstructOxygenPositions:[18,4,1,""],ReplaceFragment:[18,4,1,""],RotateAroundOmegaTorsion:[18,4,1,""],RotateAroundPhiPsiTorsion:[18,4,1,""],RotateAroundPhiTorsion:[18,4,1,""],RotateAroundPsiTorsion:[18,4,1,""],Set:[18,4,1,""],SetAA:[18,4,1,""],SetAroundOmegaTorsion:[18,4,1,""],SetAroundPhiPsiTorsion:[18,4,1,""],SetAroundPhiTorsion:[18,4,1,""],SetAroundPsiTorsion:[18,4,1,""],SetBackrub:[18,4,1,""],SetC:[18,4,1,""],SetCA:[18,4,1,""],SetCB:[18,4,1,""],SetN:[18,4,1,""],SetO:[18,4,1,""],SetOLC:[18,4,1,""],SetSequence:[18,4,1,""],SuperposeOnto:[18,4,1,""],ToDensity:[18,4,1,""],ToEntity:[18,4,1,""],TransOmegaTorsions:[18,4,1,""],append:[18,4,1,""],clear:[18,4,1,""],empty:[18,4,1,""],resize:[18,4,1,""]},"promod3.loop.CoordInfo":{chain_name:[22,6,1,""],id:[22,6,1,""],offset:[22,6,1,""],shift:[22,6,1,""],size:[22,6,1,""],start_resnum:[22,6,1,""]},"promod3.loop.ForcefieldBondInfo":{bond_length:[21,6,1,""],force_constant:[21,6,1,""],index_one:[21,6,1,""],index_two:[21,6,1,""]},"promod3.loop.ForcefieldConnectivity":{harmonic_angles:[21,6,1,""],harmonic_bonds:[21,6,1,""],harmonic_impropers:[21,6,1,""],lj_pairs:[21,6,1,""],periodic_dihedrals:[21,6,1,""],periodic_impropers:[21,6,1,""],urey_bradley_angles:[21,6,1,""]},"promod3.loop.ForcefieldHarmonicAngleInfo":{angle:[21,6,1,""],force_constant:[21,6,1,""],index_one:[21,6,1,""],index_three:[21,6,1,""],index_two:[21,6,1,""]},"promod3.loop.ForcefieldHarmonicImproperInfo":{angle:[21,6,1,""],force_constant:[21,6,1,""],index_four:[21,6,1,""],index_one:[21,6,1,""],index_three:[21,6,1,""],index_two:[21,6,1,""]},"promod3.loop.ForcefieldLJPairInfo":{epsilon:[21,6,1,""],index_one:[21,6,1,""],index_two:[21,6,1,""],sigma:[21,6,1,""]},"promod3.loop.ForcefieldLookup":{GetAA:[21,4,1,""],GetCharges:[21,4,1,""],GetDefault:[21,5,1,""],GetDisulfidConnectivity:[21,4,1,""],GetEpsilons:[21,4,1,""],GetFudgeLJ:[21,4,1,""],GetFudgeQQ:[21,4,1,""],GetHeavyIndex:[21,4,1,""],GetHydrogenIndex:[21,4,1,""],GetInternalConnectivity:[21,4,1,""],GetMasses:[21,4,1,""],GetNumAtoms:[21,4,1,""],GetOXTIndex:[21,4,1,""],GetPeptideBoundConnectivity:[21,4,1,""],GetSigmas:[21,4,1,""],Load:[21,5,1,""],LoadCHARMM:[21,5,1,""],LoadPortable:[21,5,1,""],Save:[21,4,1,""],SavePortable:[21,4,1,""],SetCharges:[21,4,1,""],SetDefault:[21,5,1,""],SetDisulfidConnectivity:[21,4,1,""],SetEpsilons:[21,4,1,""],SetFudgeLJ:[21,4,1,""],SetFudgeQQ:[21,4,1,""],SetInternalConnectivity:[21,4,1,""],SetMasses:[21,4,1,""],SetPeptideBoundConnectivity:[21,4,1,""],SetSigmas:[21,4,1,""]},"promod3.loop.ForcefieldPeriodicDihedralInfo":{force_constant:[21,6,1,""],index_four:[21,6,1,""],index_one:[21,6,1,""],index_three:[21,6,1,""],index_two:[21,6,1,""],multiplicity:[21,6,1,""],phase:[21,6,1,""]},"promod3.loop.ForcefieldUreyBradleyAngleInfo":{angle:[21,6,1,""],angle_force_constant:[21,6,1,""],bond_force_constant:[21,6,1,""],bond_length:[21,6,1,""],index_one:[21,6,1,""],index_three:[21,6,1,""],index_two:[21,6,1,""]},"promod3.loop.FragDB":{AddFragments:[22,4,1,""],GetAngularBinSize:[22,4,1,""],GetDistBinSize:[22,4,1,""],GetNumFragments:[22,4,1,""],GetNumStemPairs:[22,4,1,""],HasFragLength:[22,4,1,""],Load:[22,5,1,""],LoadPortable:[22,5,1,""],MaxFragLength:[22,4,1,""],PrintStatistics:[22,4,1,""],Save:[22,4,1,""],SavePortable:[22,4,1,""],SearchDB:[22,4,1,""]},"promod3.loop.Fragger":{"__getitem__":[22,4,1,""],"__len__":[22,4,1,""],AddSSAgreeParameters:[22,4,1,""],AddSeqIDParameters:[22,4,1,""],AddSeqSimParameters:[22,4,1,""],AddSequenceProfileParameters:[22,4,1,""],AddStructureProfileParameters:[22,4,1,""],AddTorsionProbabilityParameters:[22,4,1,""],Fill:[22,4,1,""],GetFragmentInfo:[22,4,1,""],GetScore:[22,4,1,""]},"promod3.loop.FraggerMap":{"__getitem__":[22,4,1,""],"__setitem__":[22,4,1,""],Contains:[22,4,1,""],Load:[22,4,1,""],LoadBB:[22,4,1,""],Save:[22,4,1,""],SaveBB:[22,4,1,""]},"promod3.loop.FragmentInfo":{chain_index:[22,6,1,""],length:[22,6,1,""],offset:[22,6,1,""]},"promod3.loop.MmSystemCreator":{ExtractLoopPositions:[21,4,1,""],GetCpuPlatformSupport:[21,4,1,""],GetDisulfidBridges:[21,4,1,""],GetForcefieldAminoAcids:[21,4,1,""],GetIndexing:[21,4,1,""],GetLoopLengths:[21,4,1,""],GetLoopStartIndices:[21,4,1,""],GetNumLoopResidues:[21,4,1,""],GetNumResidues:[21,4,1,""],GetSimulation:[21,4,1,""],SetCpuPlatformSupport:[21,4,1,""],SetupSystem:[21,4,1,""],UpdatePositions:[21,4,1,""]},"promod3.loop.PsipredPrediction":{"__len__":[22,4,1,""],Add:[22,4,1,""],Extract:[22,4,1,""],FromHHM:[22,4,1,""],FromHoriz:[22,4,1,""],GetConfidence:[22,4,1,""],GetConfidences:[22,4,1,""],GetPrediction:[22,4,1,""],GetPredictions:[22,4,1,""],PsipredPrediction:[22,4,1,""]},"promod3.loop.StructureDB":{AddCoordinates:[22,4,1,""],GenerateStructureProfile:[22,4,1,""],GetBackboneList:[22,4,1,""],GetCoordIdx:[22,4,1,""],GetCoordInfo:[22,4,1,""],GetDSSPStates:[22,4,1,""],GetDihedralAngles:[22,4,1,""],GetNumCoords:[22,4,1,""],GetResidueDepths:[22,4,1,""],GetSequence:[22,4,1,""],GetSequenceProfile:[22,4,1,""],GetSolventAccessibilitites:[22,4,1,""],GetStructureProfile:[22,4,1,""],GetSubDB:[22,4,1,""],HasData:[22,4,1,""],Load:[22,5,1,""],LoadPortable:[22,5,1,""],PrintStatistics:[22,4,1,""],RemoveCoordinates:[22,4,1,""],Save:[22,4,1,""],SavePortable:[22,4,1,""],SetStructureProfile:[22,4,1,""]},"promod3.loop.TorsionSampler":{Draw:[23,4,1,""],DrawPhiGivenPsi:[23,4,1,""],DrawPsiGivenPhi:[23,4,1,""],ExtractStatistics:[23,4,1,""],GetBinSize:[23,4,1,""],GetBinsPerDimension:[23,4,1,""],GetHistogramIndex:[23,4,1,""],GetHistogramIndices:[23,4,1,""],GetPhiProbabilityGivenPsi:[23,4,1,""],GetProbability:[23,4,1,""],GetPsiProbabilityGivenPhi:[23,4,1,""],Load:[23,5,1,""],LoadPortable:[23,5,1,""],Save:[23,4,1,""],SavePortable:[23,4,1,""],UpdateDistributions:[23,4,1,""]},"promod3.modelling":{AllAtomRelaxer:[28,3,1,""],BackboneRelaxer:[28,3,1,""],BuildFromRawModel:[31,1,1,""],BuildRawModel:[31,1,1,""],BuildSidechains:[31,1,1,""],CCD:[28,3,1,""],CCDCloser:[30,3,1,""],CTerminalCloser:[30,3,1,""],CheckFinalModel:[31,1,1,""],ClearGaps:[25,1,1,""],CloseGaps:[31,1,1,""],CloseLargeDeletions:[31,1,1,""],CloseSmallDeletions:[31,1,1,""],CountEnclosedGaps:[25,1,1,""],CountEnclosedInsertions:[25,1,1,""],DirtyCCDCloser:[30,3,1,""],ExponentialCooler:[30,3,1,""],FillLoopsByDatabase:[31,1,1,""],FillLoopsByMonteCarlo:[31,1,1,""],FilterCandidates:[29,1,1,""],FilterCandidatesWithSC:[29,1,1,""],FraggerHandle:[24,3,1,""],FragmentSampler:[30,3,1,""],FullGapExtender:[25,3,1,""],GapExtender:[25,3,1,""],GenerateDeNovoTrajectories:[24,1,1,""],GetRingPunches:[29,1,1,""],GetRings:[29,1,1,""],GetScore:[30,4,1,""],HasRingPunches:[29,1,1,""],InsertLoop:[31,1,1,""],InsertLoopClearGaps:[25,1,1,""],IsAllAtomScoringSetUp:[31,1,1,""],IsBackboneScoringSetUp:[31,1,1,""],KIC:[28,3,1,""],KICCloser:[30,3,1,""],LoopCandidates:[27,3,1,""],MergeGaps:[25,1,1,""],MergeGapsByDistance:[31,1,1,""],MergeMHandle:[31,1,1,""],MinimizeModelEnergy:[31,1,1,""],ModelTermini:[31,1,1,""],ModellingHandle:[31,3,1,""],NTerminalCloser:[30,3,1,""],PhiPsiSampler:[30,3,1,""],ReconstructSidechains:[32,1,1,""],RemoveTerminalGaps:[31,1,1,""],ReorderGaps:[31,1,1,""],ReportMolProbityScores:[29,1,1,""],RigidBlocks:[24,4,1,""],RunMolProbity:[29,1,1,""],RunMolProbityEntity:[29,1,1,""],SampleMonteCarlo:[30,4,1,""],ScoreContainer:[27,3,1,""],ScoringGapExtender:[25,3,1,""],ScoringWeights:[27,3,1,""],SetPsipredPredictions:[31,1,1,""],SetSequenceProfiles:[31,1,1,""],SetupDefaultAllAtomScoring:[31,1,1,""],SetupDefaultBackboneScoring:[31,1,1,""],ShiftExtension:[25,3,1,""],SidechainReconstructionData:[32,3,1,""],SidechainReconstructor:[32,3,1,""],SoftSampler:[30,3,1,""],StructuralGap:[25,3,1,""],StructuralGapList:[25,3,1,""]},"promod3.modelling.AllAtomRelaxer":{GetSystemCreator:[28,4,1,""],Run:[28,4,1,""],UpdatePositions:[28,4,1,""]},"promod3.modelling.BackboneRelaxer":{AddCARestraint:[28,4,1,""],AddCBRestraint:[28,4,1,""],AddCRestraint:[28,4,1,""],AddNRestraint:[28,4,1,""],AddORestraint:[28,4,1,""],GetNonBondedCutoff:[28,4,1,""],Run:[28,4,1,""],SetNonBondedCutoff:[28,4,1,""]},"promod3.modelling.CCD":{CCD:[28,4,1,""],Close:[28,4,1,""]},"promod3.modelling.CCDCloser":{Close:[30,4,1,""]},"promod3.modelling.DirtyCCDCloser":{Close:[30,4,1,""]},"promod3.modelling.ExponentialCooler":{GetTemperature:[30,4,1,""],Reset:[30,4,1,""]},"promod3.modelling.FraggerHandle":{Get:[24,4,1,""],GetList:[24,4,1,""],LoadCached:[24,4,1,""],SaveCached:[24,4,1,""]},"promod3.modelling.FragmentSampler":{Initialize:[30,4,1,""],ProposeStep:[30,4,1,""]},"promod3.modelling.FullGapExtender":{Extend:[25,4,1,""]},"promod3.modelling.GapExtender":{Extend:[25,4,1,""]},"promod3.modelling.KIC":{Close:[28,4,1,""],KIC:[28,4,1,""]},"promod3.modelling.KICCloser":{Close:[30,4,1,""]},"promod3.modelling.LoopCandidates":{Add:[27,4,1,""],AddFragmentInfo:[27,4,1,""],ApplyCCD:[27,4,1,""],ApplyKIC:[27,4,1,""],CalculateAllAtomScores:[27,4,1,""],CalculateBackboneScores:[27,4,1,""],CalculateSequenceProfileScores:[27,4,1,""],CalculateStemRMSDs:[27,4,1,""],CalculateStructureProfileScores:[27,4,1,""],Extract:[27,4,1,""],FillFromDatabase:[27,5,1,""],FillFromMonteCarloSampler:[27,5,1,""],GetClusteredCandidates:[27,4,1,""],GetClusters:[27,4,1,""],GetFragmentInfo:[27,4,1,""],GetLargestCluster:[27,4,1,""],GetSequence:[27,4,1,""],HasFragmentInfos:[27,4,1,""],Remove:[27,4,1,""]},"promod3.modelling.ModellingHandle":{Copy:[31,4,1,""],all_atom_scorer:[31,6,1,""],all_atom_scorer_env:[31,6,1,""],all_atom_sidechain_env:[31,6,1,""],backbone_scorer:[31,6,1,""],backbone_scorer_env:[31,6,1,""],gaps:[31,6,1,""],model:[31,6,1,""],profiles:[31,6,1,""],psipred_predictions:[31,6,1,""],seqres:[31,6,1,""],sidechain_reconstructor:[31,6,1,""]},"promod3.modelling.PhiPsiSampler":{Initialize:[30,4,1,""],ProposeStep:[30,4,1,""]},"promod3.modelling.ScoreContainer":{Contains:[27,4,1,""],Copy:[27,4,1,""],Extend:[27,4,1,""],Extract:[27,4,1,""],Get:[27,4,1,""],GetNumCandidates:[27,4,1,""],IsEmpty:[27,4,1,""],LinearCombine:[27,4,1,""],Set:[27,4,1,""]},"promod3.modelling.ScoringGapExtender":{Extend:[25,4,1,""]},"promod3.modelling.ScoringWeights":{GetAllAtomScoringKeys:[27,5,1,""],GetAllAtomWeights:[27,5,1,""],GetBackboneScoringKeys:[27,5,1,""],GetBackboneWeights:[27,5,1,""],GetSequenceProfileScoresKey:[27,5,1,""],GetStemRMSDsKey:[27,5,1,""],GetStructureProfileScoresKey:[27,5,1,""],GetWeights:[27,5,1,""],SetAllAtomScoringKeys:[27,5,1,""],SetBackboneScoringKeys:[27,5,1,""],SetSequenceProfileScoresKey:[27,5,1,""],SetStemRMSDsKey:[27,5,1,""],SetStructureProfileScoresKey:[27,5,1,""],SetWeights:[27,5,1,""]},"promod3.modelling.ShiftExtension":{Extend:[25,4,1,""]},"promod3.modelling.SidechainReconstructionData":{disulfid_bridges:[32,6,1,""],env_pos:[32,6,1,""],is_c_ter:[32,6,1,""],is_n_ter:[32,6,1,""],loop_lengths:[32,6,1,""],loop_start_indices:[32,6,1,""],rotamer_res_indices:[32,6,1,""]},"promod3.modelling.SidechainReconstructor":{AttachEnvironment:[32,4,1,""],Reconstruct:[32,4,1,""]},"promod3.modelling.SoftSampler":{Initialize:[30,4,1,""],ProposeStep:[30,4,1,""]},"promod3.modelling.StructuralGap":{Copy:[25,4,1,""],ExtendAtCTerm:[25,4,1,""],ExtendAtNTerm:[25,4,1,""],GetChain:[25,4,1,""],GetChainIndex:[25,4,1,""],GetChainName:[25,4,1,""],GetLength:[25,4,1,""],IsCTerminal:[25,4,1,""],IsNTerminal:[25,4,1,""],IsTerminal:[25,4,1,""],ShiftCTerminal:[25,4,1,""],after:[25,6,1,""],before:[25,6,1,""],full_seq:[25,6,1,""],length:[25,6,1,""],seq:[25,6,1,""]},"promod3.scoring":{AllAtomClashScorer:[34,3,1,""],AllAtomInteractionScorer:[34,3,1,""],AllAtomOverallScorer:[34,3,1,""],AllAtomPackingScorer:[34,3,1,""],AllAtomScorer:[34,3,1,""],BackboneOverallScorer:[36,3,1,""],BackboneScoreEnv:[35,3,1,""],BackboneScorer:[36,3,1,""],CBPackingScorer:[36,3,1,""],CBetaScorer:[36,3,1,""],ClashScorer:[36,3,1,""],ConstraintFunction:[35,3,1,""],ContactFunction:[35,3,1,""],DiscoContainer:[35,3,1,""],HBondScorer:[36,3,1,""],LoadAllAtomInteractionScorer:[34,1,1,""],LoadAllAtomPackingScorer:[34,1,1,""],LoadCBPackingScorer:[36,1,1,""],LoadCBetaScorer:[36,1,1,""],LoadDefaultAllAtomOverallScorer:[34,1,1,""],LoadDefaultBackboneOverallScorer:[36,1,1,""],LoadHBondScorer:[36,1,1,""],LoadReducedScorer:[36,1,1,""],LoadSSAgreementScorer:[36,1,1,""],LoadTorsionScorer:[36,1,1,""],PairwiseFunction:[35,3,1,""],PairwiseFunctionType:[35,3,1,""],PairwiseScorer:[36,3,1,""],ReducedScorer:[36,3,1,""],SCWRL3DisulfidScore:[38,4,1,""],SCWRL3PairwiseScore:[38,4,1,""],SSAgreementScorer:[36,3,1,""],TorsionScorer:[36,3,1,""]},"promod3.scoring.AllAtomClashScorer":{DoExternalScores:[34,4,1,""],DoInternalScores:[34,4,1,""],DoNormalize:[34,4,1,""]},"promod3.scoring.AllAtomInteractionScorer":{DoExternalScores:[34,4,1,""],DoInternalScores:[34,4,1,""],DoNormalize:[34,4,1,""],Load:[34,5,1,""],LoadPortable:[34,5,1,""],Save:[34,4,1,""],SavePortable:[34,4,1,""],SetEnergy:[34,4,1,""]},"promod3.scoring.AllAtomOverallScorer":{"__getitem__":[34,4,1,""],"__setitem__":[34,4,1,""],AttachEnvironment:[34,4,1,""],CalculateLinearCombination:[34,4,1,""],Contains:[34,4,1,""],Get:[34,4,1,""]},"promod3.scoring.AllAtomPackingScorer":{DoNormalize:[34,4,1,""],Load:[34,5,1,""],LoadPortable:[34,5,1,""],Save:[34,4,1,""],SavePortable:[34,4,1,""],SetEnergy:[34,4,1,""]},"promod3.scoring.AllAtomScorer":{AttachEnvironment:[34,4,1,""],CalculateScore:[34,4,1,""],CalculateScoreProfile:[34,4,1,""]},"promod3.scoring.BackboneOverallScorer":{"__getitem__":[36,4,1,""],"__setitem__":[36,4,1,""],AttachEnvironment:[36,4,1,""],Calculate:[36,4,1,""],CalculateLinearCombination:[36,4,1,""],Contains:[36,4,1,""],Get:[36,4,1,""]},"promod3.scoring.BackboneScoreEnv":{AddPairwiseFunction:[35,4,1,""],ApplyPairwiseFunction:[35,4,1,""],ClearEnvironment:[35,4,1,""],Copy:[35,4,1,""],GetSeqres:[35,4,1,""],Pop:[35,4,1,""],SetEnvironment:[35,4,1,""],SetInitialEnvironment:[35,4,1,""],SetPsipredPrediction:[35,4,1,""],Stash:[35,4,1,""]},"promod3.scoring.BackboneScorer":{AttachEnvironment:[36,4,1,""],CalculateScore:[36,4,1,""],CalculateScoreProfile:[36,4,1,""]},"promod3.scoring.CBPackingScorer":{DoNormalize:[36,4,1,""],Load:[36,5,1,""],LoadPortable:[36,5,1,""],Save:[36,4,1,""],SavePortable:[36,4,1,""],SetEnergy:[36,4,1,""]},"promod3.scoring.CBetaScorer":{DoExternalScores:[36,4,1,""],DoInternalScores:[36,4,1,""],DoNormalize:[36,4,1,""],Load:[36,5,1,""],LoadPortable:[36,5,1,""],Save:[36,4,1,""],SavePortable:[36,4,1,""],SetEnergy:[36,4,1,""]},"promod3.scoring.ClashScorer":{DoExternalScores:[36,4,1,""],DoInternalScores:[36,4,1,""],DoNormalize:[36,4,1,""]},"promod3.scoring.DiscoContainer":{AddStructuralInfo:[35,1,1,""],AttachConstraints:[35,1,1,""]},"promod3.scoring.HBondScorer":{DoExternalScores:[36,4,1,""],DoInternalScores:[36,4,1,""],DoNormalize:[36,4,1,""],Load:[36,5,1,""],LoadPortable:[36,5,1,""],Save:[36,4,1,""],SavePortable:[36,4,1,""],SetEnergy:[36,4,1,""]},"promod3.scoring.PairwiseFunction":{Score:[35,4,1,""]},"promod3.scoring.PairwiseScorer":{DoExternalScores:[36,4,1,""],DoInternalScores:[36,4,1,""],DoNormalize:[36,4,1,""]},"promod3.scoring.ReducedScorer":{DoExternalScores:[36,4,1,""],DoInternalScores:[36,4,1,""],DoNormalize:[36,4,1,""],Load:[36,5,1,""],LoadPortable:[36,5,1,""],Save:[36,4,1,""],SavePortable:[36,4,1,""],SetEnergy:[36,4,1,""]},"promod3.scoring.SSAgreementScorer":{DoNormalize:[36,4,1,""],Load:[36,5,1,""],LoadPortable:[36,5,1,""],Save:[36,4,1,""],SavePortable:[36,4,1,""],SetScore:[36,4,1,""]},"promod3.scoring.TorsionScorer":{DoNormalize:[36,4,1,""],Load:[36,5,1,""],LoadPortable:[36,5,1,""],Save:[36,4,1,""],SavePortable:[36,4,1,""],SetEnergy:[36,4,1,""]},"promod3.sidechain":{AAToRotID:[46,4,1,""],BBDepRotamerLib:[47,3,1,""],DisulfidScore:[39,4,1,""],FRMRotamer:[44,3,1,""],FRMRotamerGroup:[44,3,1,""],Frame:[40,3,1,""],FrameResidue:[40,3,1,""],LoadDunbrackLib:[43,4,1,""],LoadPenultimateLib:[43,4,1,""],Particle:[44,3,1,""],RRMRotamer:[44,3,1,""],RRMRotamerGroup:[44,3,1,""],ReadDunbrackFile:[43,4,1,""],ResolveCysteins:[39,4,1,""],RotamerGraph:[41,3,1,""],RotamerID:[46,3,1,""],RotamerLib:[47,3,1,""],RotamerLibEntry:[47,3,1,""],SCWRLRotamerConstructor:[45,3,1,""],SidechainParticle:[44,3,1,""],SubrotamerOptimizer:[48,4,1,""],TLCToRotID:[46,4,1,""]},"promod3.sidechain.BBDepRotamerLib":{AddRotamer:[47,4,1,""],Load:[47,5,1,""],LoadPortable:[47,5,1,""],MakeStatic:[47,4,1,""],QueryLib:[47,4,1,""],Save:[47,4,1,""],SavePortable:[47,4,1,""],SetInterpolate:[47,4,1,""]},"promod3.sidechain.FRMRotamer":{"__getitem__":[44,4,1,""],"__len__":[44,4,1,""],AddFrameEnergy:[44,4,1,""],AddSubrotamerDefinition:[44,4,1,""],ApplyOnResidue:[44,4,1,""],GetActiveSubrotamer:[44,4,1,""],GetFrameEnergy:[44,4,1,""],GetInternalEnergy:[44,4,1,""],GetInternalEnergyPrefactor:[44,4,1,""],GetNumSubrotamers:[44,4,1,""],GetProbability:[44,4,1,""],GetSelfEnergy:[44,4,1,""],GetSubrotamerDefinition:[44,4,1,""],GetTemperature:[44,4,1,""],SetActiveSubrotamer:[44,4,1,""],SetFrameEnergy:[44,4,1,""],SetInternalEnergy:[44,4,1,""],SetInternalEnergyPrefactor:[44,4,1,""],SetProbability:[44,4,1,""],SetTemperature:[44,4,1,""],ToFrameResidue:[44,4,1,""],ToRRMRotamer:[44,4,1,""]},"promod3.sidechain.FRMRotamerGroup":{"__getitem__":[44,4,1,""],"__len__":[44,4,1,""],AddFrameEnergy:[44,4,1,""],ApplyOnResidue:[44,4,1,""],ApplySelfEnergyThresh:[44,4,1,""],Merge:[44,4,1,""],SetFrameEnergy:[44,4,1,""]},"promod3.sidechain.FrameResidue":{"__getitem__":[40,4,1,""],"__len__":[40,4,1,""]},"promod3.sidechain.Particle":{AddLonePair:[44,4,1,""],GetCharge:[44,4,1,""],GetName:[44,4,1,""],GetParticleType:[44,4,1,""],GetPos:[44,4,1,""],IsHBondAcceptor:[44,4,1,""],IsHBondDonor:[44,4,1,""],PairwiseEnergy:[44,4,1,""],SetPolarDirection:[44,4,1,""]},"promod3.sidechain.RRMRotamer":{"__getitem__":[44,4,1,""],"__len__":[44,4,1,""],AddFrameEnergy:[44,4,1,""],ApplyOnResidue:[44,4,1,""],GetFrameEnergy:[44,4,1,""],GetInternalEnergy:[44,4,1,""],GetInternalEnergyPrefactor:[44,4,1,""],GetProbability:[44,4,1,""],GetSelfEnergy:[44,4,1,""],SetFrameEnergy:[44,4,1,""],SetInternalEnergy:[44,4,1,""],SetInternalEnergyPrefactor:[44,4,1,""],SetProbability:[44,4,1,""],ToFrameResidue:[44,4,1,""]},"promod3.sidechain.RRMRotamerGroup":{"__getitem__":[44,4,1,""],"__len__":[44,4,1,""],AddFrameEnergy:[44,4,1,""],ApplyOnResidue:[44,4,1,""],ApplySelfEnergyThresh:[44,4,1,""],Merge:[44,4,1,""],SetFrameEnergy:[44,4,1,""]},"promod3.sidechain.RotamerGraph":{CreateFromFRMList:[41,5,1,""],CreateFromRRMList:[41,5,1,""]},"promod3.sidechain.RotamerLib":{AddRotamer:[47,4,1,""],Load:[47,5,1,""],LoadPortable:[47,5,1,""],MakeStatic:[47,4,1,""],QueryLib:[47,4,1,""],Save:[47,4,1,""],SavePortable:[47,4,1,""]},"promod3.sidechain.RotamerLibEntry":{FromResidue:[47,5,1,""],IsSimilar:[47,4,1,""],SimilarDihedral:[47,4,1,""],chi1:[47,6,1,""],chi2:[47,6,1,""],chi3:[47,6,1,""],chi4:[47,6,1,""],probability:[47,6,1,""],sig1:[47,6,1,""],sig2:[47,6,1,""],sig3:[47,6,1,""],sig4:[47,6,1,""]},"promod3.sidechain.SCWRLRotamerConstructor":{AssignInternalEnergies:[45,4,1,""],ConstructBackboneFrameResidue:[45,4,1,""],ConstructFrameResidue:[45,4,1,""],ConstructFrameResidueHeuristic:[45,4,1,""],ConstructRRMRotamerGroup:[45,4,1,""],ConstructSidechainFrameResidue:[45,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:[12,1,1,""],core:[9,2,0,"-"],loop:[19,2,0,"-"],modelling:[26,2,0,"-"],scoring:[37,2,0,"-"],sidechain:[42,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"]},objtypes:{"0":"cmake:command","1":"py:function","2":"py:module","3":"py:class","4":"py:method","5":"py:staticmethod","6":"py:attribute"},terms:{"10a":32,"1aki":22,"1akia":[],"1crn":[17,19,21,22,26,27,28,30,31,32,37,42],"1crn_cut":[26,27,31],"1crna":[22,27],"1ey":5,"1eye_rec":5,"2010dunbracklib":33,"20a":32,"2b1":2,"2jlp":0,"30a":32,"3x3":6,"655a":22,"__doc__":[8,10],"__getitem__":[22,34,36,40,44],"__init__":[1,5,10,13],"__len__":[18,22,40,44],"__main__":[1,5],"__name__":[1,5],"__setitem__":[22,34,36],"_data":33,"_name":4,"_run":[1,4],"_xml":4,"boolean":8,"break":[4,5,13],"byte":[7,33],"case":[0,1,5,13,18,22,23,25,28,30,31,32,33,36,39,42,44,45,47],"catch":22,"char":[18,33],"class":[],"const":33,"default":[],"enum":[22,46],"export":[5,17],"final":[5,15,22,24,26,27,31,35,37,39,41,42,44],"float":[6,7,17,18,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,38,39,44,45,47,48],"function":[],"import":[0,1,5,8,10,13,15,17,18,19,21,22,23,26,27,28,30,31,32,37,42,44,45],"int":[1,6,7,8,11,17,18,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,40,44,45,47,48],"long":31,"new":[1,3,5,10,13,14,17,18,21,22,25,27,28,30,31,32,33,42,44],"null":22,"public":[5,33,43],"return":[1,5,6,7,8,10,11,12,17,18,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,38,39,40,43,44,45,46,47],"s\u00f6ding":22,"short":[5,13,33],"static":[5,11,17,21,22,23,27,32,33,34,36,41,43,47],"super":42,"switch":[5,13,35],"throw":[1,33,42,43],"true":[1,8,10,11,17,18,19,20,21,22,25,27,28,29,30,31,32,33,34,36,39,42,45],"try":[1,5,15,25,31,33,47],"void":33,"while":[1,4,5,11,17,21,31,33],aa1:36,aa2:36,aa_aft:22,aa_befor:22,aa_clash:[31,34],aa_interact:[31,34],aa_pack:[31,34],aa_packing_scor:33,aa_relax_test:28,aa_res_idx:45,aa_scor:33,aa_with_rotam:42,aaa1:34,aaa2:34,aaa:[17,34],aaaaaaaa:18,aaaaggggggggggggggggggggaaaaaa:31,aafrequ:22,aafrequenciesstruct:22,aah:17,aatorotid:46,abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz:31,abil:13,abl:[2,5],abort:[5,7,28,31],about:[1,4,5,7,22,31],abov:[0,1,5,10,13,18,25,27,31,33,46,47],absolut:4,academ:5,accept:[7,10,27,28,30,31,32,33],acceptor:[36,45],access:[4,5,17,18,22,23,27,31,34,35,36,44,46],accessibili:[],accessibl:[],accessor:22,accord:[7,13,17,18,21,22,23,24,25,27,30,31,32,34,39,42,44,45,47],accordingli:[22,35],accur:24,accuraci:[24,28],achiev:[7,13],acknowledg:5,across:[1,47],act:28,action_nam:13,action_unit_test:1,actiontest:1,activ:[10,11,13,39,44,48],active_internal_energi:48,actual:[3,5,10,13,18,22,30,31,32,35,36,44,45,47],actual_posit:30,actual_step:30,adapt:[5,21,22,28,30,31,43],add:[1,2,4,5,7,10,15,17,22,23,27,28,31,32,34,35,36,39,42,44,45],add_argu:8,add_custom_target:5,add_doc_depend:4,add_doc_sourc:[4,5],add_subdirectori:5,addalign:10,addcarestraint:28,addcbrestraint:28,addcoordin:22,addcrestraint:28,addedg:7,addfrag:22,addfragmentinfo:27,addframeenergi:44,addharmonicangl:21,addharmonicbond:21,addharmonicimprop:21,addit:[4,8,10,11,13,18,19,21,22,29,31,33,45],addition:[1,4,13,17,21,22,45],addljpair:21,addlonepair:44,addnod:7,addnrestraint:28,addorestraint:28,addpairwisefunct:35,addperiodicdihedr:21,addperiodicimprop:21,address:33,addrotam:47,addseqidparamet:22,addseqsimparamet:[19,22],addsequenceprofileparamet:22,addssagreeparamet:22,addstructur:10,addstructuralinfo:35,addstructureprofileparamet:22,addsubrotamerdefinit:44,addtorsionprobabilityparamet:22,addureybradleyangl:21,admir:5,advanc:24,advantag:21,advic:[5,13],advis:[],affect:[5,18,45,46],after:[1,2,4,5,7,10,13,17,18,21,22,23,25,27,28,30,31,33,35,43,47],after_c_stem:18,afterward:[5,22,31],again:[2,3,5,22,24],against:34,agg:23,agglom:27,ago:1,agreement:[22,24,36],agress:[2,7],ala:[18,23,28,42,45,46],ala_cb:17,ala_h1:17,ala_h:17,alanin:[3,46],alg:[19,22,31],algorithm:[],alia:25,align:[0,10,15,22,24,26,31,35],alignedcuboid:18,alignmenthandl:[24,31,35],alignmentlist:[0,10,31],all:[],all_atom:[17,18,21,44,45],all_atom_env:17,all_atom_po:[17,45],all_atom_scor:31,all_atom_scorer_env:31,all_atom_sidechain_env:31,all_po:[17,21,28],all_scor:27,allatom:[28,31,32],allatomclashscor:[],allatominteractionscor:[],allatomoverallscor:[],allatompackingscor:[],allatomrelax:[21,28],alloc:22,allow:[0,2,3,5,8,13,18,22,23,24,27,30,31,33,34,36,41],allow_multitempl:10,allow_prepro_ci:18,almost:[4,28],aln:[0,24,26,27,31,35],aln_sourc:10,alon:8,along:[1,5],alot:5,alpha:[6,18,36,42],alpha_bin:36,alreadi:[1,4,5,7,13,18,21,22,24,27,31,32,34,35,36,44,45,47,48],also:[1,2,4,5,8,13,22,23,24,27,28,29,30,31,32,39,40,41,43,45,47],alter:[27,30],altern:[4,5,27,30,31,43,45],alwai:[0,1,5,13,25,30,31,33],amber:[17,31],ambig:47,ambigu:47,aminoacid:[17,18,21,23,36,46,47],aminoacidatom:[17,34],aminoacidhydrogen:17,aminoacidlookup:[17,21],among:27,amount:[15,24,47],analysi:[22,28,29],analyt:[27,47],anchor:[6,17],ancient:12,ang:35,angl:[],angle_bin:36,angle_bin_s:22,angle_force_const:21,angle_four:6,angle_on:6,angle_thre:6,angle_two:6,angstrom:[22,28],ani:[0,1,4,5,7,10,11,12,15,17,18,21,22,23,25,27,29,30,31,32,33,34,35,36,40,42,44,45],anneal:[7,27,30],announc:[1,5],anoth:[4,11,18,25,28,31,32,39],anymor:[3,7],anyon:[5,13],anyth:[0,2,5,10,11,12,27,28,32,34,36],anywai:5,anywher:13,apart:[1,27,31,32,34,36],append:[0,10,18,22,23,31,42],appli:[7,8,12,13,18,22,25,27,28,30,31,32,35,39,42,44],applic:[1,28,45],applyccd:27,applyde:7,applyedgedecomposit:7,applyk:27,applyonresidu:[42,44],applypairwisefunct:[35,36],applysd:21,applyselfenergythresh:[42,44],applytransform:18,approach:[2,7,22,24,31,33,39,42,45],appropri:[7,23,31,33,45],approx:31,approxim:[21,44],arbitrari:[3,17,22,39],arbitrarili:30,arg:[1,4,10,46],arg_ca:17,arg_hd3:17,arg_sorted_scor:27,arginin:46,argpars:10,argument:[],argumentpars:10,argv:10,around:[1,4,5,6,13,18,27,28,31,34,35,36],arrai:[0,5,33],artifici:22,ascend:25,ask:5,asn:46,asn_c:17,asn_hb2:17,asp:[17,44,46,47],asp_ha:17,asp_o:17,asparagin:46,aspart:[46,47],ass:30,assembl:10,assemblepars:10,assertequ:5,assess:[34,35],assign:[3,7,18,22,27,30,34,36,43,45,48],assigndssp:[],assigninternalenergi:45,assignsecstruct:31,associ:[22,25,40],assum:[1,4,5,21,22,28,31,33,35,36,39],assur:39,astar:3,astarsolv:7,atom:[],atom_idx:[17,21],atom_nam:[17,21],atomhandl:44,atomseq:[],attach:[0,4,5,10,17,21,24,25,27,31,32,34,35,36,37],attach_view:10,attachconstraint:35,attachenviron:[27,28,30,32,34,36,37],attachview:[26,27,31],attent:[1,13],attribut:[5,10,22,31,32,47],autom:[2,4],automat:[1,5,7,8,11,13,22,26,27,33,47],automatis:5,avaibl:45,avail:[1,2,3,5,12,13,15,21,22,27,30,35,42],availabl:5,averag:[27,35,39],avg:22,avg_sampling_per_posit:24,avoid:[3,8,12,22,28,30],awai:[13,32,44],awar:[5,45],awesom:[1,5],axi:[6,18],back:[1,13,21,30],backbon:[],backbone_scor:31,backbone_scorer_env:31,backbonelist:[],backboneoverallscor:[],backbonerelax:[28,31],backbonescor:[],backbonescoreenv:[],backbonescoreenvlisten:5,background:[2,32],backrub:18,backward:33,bad:21,base:[],base_target:4,bashrc:5,basi:[4,5,13,28,30,44],basic:[1,2,5,8,13,23,30,31,42,44,47],bb_list:[15,17,18,19,22,25,27,28,30,31,35],bb_list_on:24,bb_list_two:24,bb_score:27,bbdeprotamerlib:[32,33,43,45,47],becaus:[5,13,17,31,35],becom:[7,47],been:[2,3,7,13,20,22,27,28,31,34,36,39,43,47],befor:[1,4,5,10,13,18,21,22,23,25,27,28,30,31,32,33],begin:[1,5,17,18,30,35],behav:1,behaviour:[10,34,35,47],behind:5,bell:5,belong:[3,4,13,17,18,22,25,27,30,31,32,34,35,36,40,44,45],belov:22,below:[0,5,17,21,22,24,27,28,32,33,34,36,39],below_thre:22,besid:[2,4,7,10,22],best:[4,27,31,39],best_candid:27,beta:[6,18,29,36],beta_bin:36,better:[21,27,30,31,34,36],between:[1,3,7,10,18,21,22,24,25,27,28,30,31,32,33,34,35,36,37,38,39,40,44,45,47],beyond:10,big:[21,33],bilinearli:47,bin:[1,5,13,15,22,23,34,36,47],bin_siz:47,binari:[],bind:[],bins_per_dimens:23,bioinformat:22,biol:22,biophi:7,biopolym:22,bit:[1,2,5,13,27,31],bitwis:22,blank:5,block:[],blosum62:[19,22,24,35],bond:[],bond_force_const:21,bond_length:[6,21],bool:[1,5,7,8,10,11,17,18,20,21,22,25,27,28,29,30,31,32,33,34,36,39,44,45,47],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],boost_librari:4,boost_root:2,both:[17,22,25,31,39,42,47],bound:[17,21,24,27,44],bradlei:21,branch:[],branchnam:13,brew:4,bridg:[20,21,28,31,32],briefli:13,bring:5,broken:1,broyden:31,bug:[3,5,13],build_disulfid:32,builder:2,buildfromrawmodel:[26,31],buildrawmodel:[0,26,27,31],buildsidechain:31,buildup:[42,44],built:[4,21,22,35,40,45],bunch:[1,10,13],bytecod:1,c_coord:6,c_num:25,c_po:[6,18,36],c_stem:[6,19,22,25,27,28,30],c_stem_psi:30,c_str:33,c_ter:[28,45],ca_coord:6,ca_pairwise_funct:35,ca_po:[6,18],ca_pos_on:[38,39],ca_pos_two:[38,39],ca_posit:39,ca_rmsd:[19,22],cach:[2,22,24],calcul:[5,18,22,23,24,27,28,30,34,35,36,37,39,40,41,44,45],calculateallatomscor:27,calculatebackbonescor:27,calculatelinearcombin:[27,30,34,36],calculatescor:[34,36,37],calculatescoreprofil:[34,36],calculatesequenceprofilescor:27,calculatestemrmsd:27,calculatestructureprofilescor:27,calculatesurfac:[],call:[1,2,4,5,8,10,11,12,13,17,21,22,23,25,27,30,31,32,33,34,35,36,44,45,47],callabl:[10,13],calpha:31,calul:23,came:5,can:[],cand:31,candid:[],cannot:[0,5,10,21,22,23,25,31,33,34,36,43,46,47],canutescu2003:28,canutescu2003b:[34,36,38,39],canutescu:[28,38],cap:7,capabl:[20,26,30],captur:1,carbon:[6,18,38,44,45],carbonyl:[44,45],care:[0,5,7,27,28,31,33,36],carlo:[3,7,24,27,30,31,41],carmsd:[18,19,22],carri:[5,8],cast:33,categori:4,caus:[13,29],caution:17,caviti:22,cb_in_sidechain:45,cb_pack:[24,31,36],cb_packing_scor:33,cb_pairwise_funct:35,cb_po:18,cb_pos_on:[38,39],cb_pos_two:[38,39],cb_posit:39,cbeta:[24,27,30,31,36,37],cbeta_scor:[33,37],cbetaenvlisten:5,cbetascor:[],cbpackingscor:[],ccd:[],ccdcloser:30,center:29,central:[18,23,36],centroid:27,certain:[1,2,4,5,7,13,22,23,24,25,31,33,34,35,36],certainli:1,ch1particl:44,ch2particl:44,ch3particl:44,ch_name:22,chain:[],chain_id:[],chain_idx:[5,17,27,30,31,32,34,35,36],chain_idx_list:32,chain_idx_on:35,chain_idx_two:35,chain_index:[22,30,34],chain_indic:35,chain_nam:[22,31],chainhandl:[17,18,25],chainid:0,chainview:[],chakravarti:22,chakravarty1999:22,chanact:31,chanc:[5,7,31],chang:[1,3,4,5,7,13,17,23,24,25,28,30,31,32,34],change_frequ:[7,30],chapter:[25,29],charact:10,charg:[5,17,21,28,44,45],charmm:[17,21,31],check:[],check_io:33,check_xml:5,checkbasetyp:33,checkfinalmodel:31,checkmagicnumb:33,checkout:[5,13],checktypes:33,chemic:[12,17,34],chi1:47,chi2:47,chi3:47,chi4:47,chi:47,child:10,childclass:1,chmod:5,choos:[27,30],chosen:[0,10,30,31],cif:[0,10],ciiipgatcpgdyan:31,circumv:45,citat:28,clash:[3,24,27,28,30,31,34,36,37,39,42],clash_scor:37,clash_thresh:31,clashscor:[],classic:43,clean:[2,5,13],cleanli:33,clear:[11,17,18,27,31,35],clearenviron:[17,35],cleargap:25,clearpo:17,clearresidu:17,clip:10,clone:5,close:[13,15,18,22,27,28,30,31,32,39],closed_posit:30,closegap:31,closelargedelet:31,closer:[],closesmalldelet:[28,31],closest:[],closur:[28,31],clustal:[0,10],cluster:[3,27,33,35],cluster_thresh:[24,35],clutter:[1,5,22],cmake:[],cmake_support:[4,5,13],cmakecach:2,cmakelist:[1,2,4,5,13],cname:[],coars:5,code:[],codetest:[4,5],coil:[20,24],collect:[8,11,17,24,35],column:[22,24],combin:[21,22,23,24,27,30,31,34,36,39,47],come:[1,4,5,8,10,31,32,37,41],command:[],commandlin:10,comment:13,commerci:5,commit:[5,13],common:[5,10,24],commonli:[5,15,26,27,36],comp_lib:45,compar:[3,5,18,19,22,27,28,47],comparison:[22,31,47],compat:[13,21,33],compensatori:18,compil:[1,2,4,5,11,13,15,33,49],complain:1,complaint:13,complement:[],complet:[11,13,18,21,28,30,31,32,47],complex:[5,13,32,39,44,48],compon:[7,12,22,29,36],compound:[12,45],compoundlib:45,compress:[8,22],comput:[3,5,27,29,34,36],concaten:17,concept:5,concern:5,condit:[5,23],conf:[2,5],confid:[22,36],config:[4,5],config_head:4,configur:[2,5,7,13,27,47],conflict:13,conform:[7,22,28,30,41,42,47],connect:[4,7,13,17,21,22,27],conop:[17,18,21,23,36,45,46],conquer:5,consecut:[22,23,36],conserv:[15,25],consid:[4,5,7,11,13,17,18,22,23,24,27,28,30,31,32,34,35,36,39,43,45,47],consider_all_nod:7,consider_hydrogen:44,consider_ligand:32,consist:[3,5,17,21,24,25,27,28,30,31,32,33,35,39,44,47],constant:[3,21,28,34,36,48],constraint:[10,22,28,35],constraintfunct:35,construct:[],constructatompo:6,constructbackboneframeresidu:[42,45],constructcbetapo:6,constructcterminaloxygen:6,constructetd:7,constructframeresidu:45,constructframeresidueheurist:45,constructfrmrotamergroup:[42,45],constructor:[],constructrrmrotamergroup:45,constructsidechainframeresidu:45,contact:35,contactfunct:35,contain:[0,1,2,4,5,6,8,10,13,17,18,20,21,22,23,24,27,30,31,32,34,35,36,37,39,40,42,43,44,45,47],content:[5,9,14,16,19,22,37,42,49],contigu:[21,32,33],continu:[1,17,25,28,42],contrast:40,contribut:[],control:[0,3,5,7,27,30,32,35,44,45,47,48],conveni:[],convent:[1,46],converg:[24,27,28,30],convers:33,convert:[4,18,21,22,23,31,33,34,36,47,48],convert_module_data:4,convertbasetyp:33,cooler:[],cooling_factor:[7,30],coord:[22,27],coord_idx:22,coord_info:22,coordin:[3,6,22,27,28,31,34,42],coordinfo:22,cope:13,copi:[2,3,4,5,13,15,17,18,25,27,31,35],core:[],correct:21,correctli:31,correspond:[7,13,17,18,21,22,23,27,33,47],corrupt:[17,35],cotain:22,could:[1,4,5,10,13,21,22,31],count:[11,25,30,31,34,36],countenclosedgap:25,countenclosedinsert:25,counterpart:[27,36,45],coupl:[1,5,13,31],cours:5,coutsia:28,cover:[1,5,9,11,17,21,22,24,26,30],coverag:31,cparticl:44,cpp:4,cpr:[46,47],cpu:[15,21,31],cpu_platform_support:21,crambin:[22,27,30],crash:42,createalign:[27,31],createentityfromview:[32,42],createfromfrmlist:[41,42],createfromrrmlist:41,createfullview:[26,27,31],createsequ:[22,27,31],creation:[21,28],creator:[21,28],criteria:32,criterion:[7,30],criterium:27,croak:13,crucial:5,cterminalclos:30,cumul:45,current:[2,4,5,7,11,13,17,18,21,22,27,30,31,33,35,36,44,45,48],custom:[5,22,30,31,32,33,46],cutoff:[20,21,27,28,32,34,36],cycl:25,cyclic:[27,28],cyd:[46,47],cyh:[46,47],cys_hb3:17,cys_sg:17,cystein:[21,32,39,42,46],d_bin:36,dai:8,dampen:21,dare:4,dat:[22,33],data1:4,data2:4,data:[],data_:33,data_gener:33,data_to_stor:22,data_typ:22,databas:[],databs:22,datatyp:22,date:13,dbg:5,dcmake_install_prefix:2,deactiv:7,dead:7,deal:[31,32],debug:[5,7,17],decent:12,decid:[3,5,28],decis:23,declar:[4,5,13],decod:10,decompos:[3,7],decomposit:[7,24,41],decreas:30,dedic:[4,5,13],dee:7,deep:[18,31],def:[1,5,17,31],def_angl:17,defin:[],definem:5,degre:[18,22,23,43],delet:[0,2,5,18,31,44],deliv:[1,22,30,31],delta_scor:30,demand:31,demonstr:22,densiti:[18,28,43],dep1:4,dep2:4,dep:4,dependency1:4,dependency2:4,depends_on:4,depth:22,deriv:[1,22,38,39,43],descend:31,descent:[27,28],describ:[4,7,8,14,17,18,22,25,26,28,29,33,34,36,39,42,44,47,49],descript:[0,10,13,30,47],descriptor:22,descsrib:7,design:[1,3,43],desir:[6,15,21,27,28,30,31,34,35,36],detail:[0,6,10,13,21,22,23,27,29,30,31,34,36,47],detect:[],determin:[5,8,21,22,27,30,35,36],determinist:24,deuterium:31,develop:[],deviat:[18,29,30,43,47],devot:9,dict:[4,24,27,29,30,34,36],dictionari:[4,10,12,22,29],did:[5,22,27,31],differ:[1,2,4,5,7,12,13,17,22,24,25,27,31,34,36,42,46,47],dihedr:[],dihedral_angl:18,dihedral_bin:36,dihedral_idx:47,dihedral_pair:23,dimens:23,dir:[4,5],direct:[5,18,20,22,36,44,45],directli:[5,7,22,27,31,32,35,39,43,44,46,47],directori:[],dirti:1,dirtyccdclos:30,disabl:[1,13],disable_doctest:2,disable_document:2,disable_linkcheck:2,discard:22,discocontain:35,disconnect:3,discret:[34,36],discuss:22,disk:[5,21,24,34,36,47],displai:[8,10,11],dissimilar:24,dist:36,dist_bin:36,dist_bin_s:22,distanc:[6,18,22,24,27,31,32,34,35,36,38],distance_thresh:24,distant:35,distinct:[17,32],distribut:[1,5,21,22,23,30,33,34,36,43,47],disulfid:[],disulfid_bridg:[21,32],disulfid_score_thresh:32,disulfidscor:[32,39],dive:[13,31],diverg:5,divers:[22,24],dng:15,do_it:[34,36],doc:[2,4,5,13],docstr:10,doctest:[2,5,13],document:[],doe:[1,3,4,5,6,7,8,10,12,13,18,22,26,27,31,33,35,43],doesn:[5,13,25,28,30,47],doexternalscor:[34,36],dointernalscor:[34,36],domain:24,domin:7,don:[2,7,27,31,45],done:[1,5,8,10,13,19,21,23,27,30,31,33],donor:36,donorm:[34,36],dont_write_bytecod:1,dost_root:2,doubt:10,down:[10,18,22,30],dpm3_runtime_profiling_level:11,draw:[18,23,30],drawback:5,drawn:[23,30],drawphigivenpsi:23,drawpsigivenphi:23,drop:5,dssp:[3,22,36],dssp_state:36,due:[22,27,28,31,39,43],dump:47,dunbrack:[28,32,38,42,43],dure:[1,17,28,31,33,40,47],dynam:47,dynamicspatialorgan:3,e_cut:7,e_thresh:[7,31],e_tresh:7,each:[0,5,7,10,11,17,18,21,22,23,24,25,27,28,29,30,31,32,33,34,36],earli:3,earlier:2,easi:5,easier:[1,5],easili:[4,13,31],echo:5,edg:7,edge_idx:7,editor:1,educ:5,effect:[4,5,7,21,32,39],effici:[7,17,24,30],egg:22,eigen3_include_dir:2,eigen:[2,3],either:[0,5,10,13,17,18,23,25,27,28,30,31,32,33,34,35,36,40,44,46,47],elabor:5,electrostat:[21,28],element:[1,7,17,18,22,24,27,29,33,35,39],elimin:7,els:[5,13,32,33],emerg:1,empir:[38,39],emploi:13,empti:[5,8,10,18,22,24,27,31,44],enabl:[1,2,8,10,12,21,22],enable_mm:2,enable_ss:2,enclos:[25,31],encod:0,encount:[25,30],end:[0,1,2,4,5,7,8,10,13,17,18,22,24,25,27,31],end_resnum:31,end_transl:4,endian:33,energi:[3,5,7,15,21,28,30,31,34,36,39,40,41,44,45,48],enforc:[17,27,30,31,32,34,35,36],enough:[5,13,21,22,31,33],ensur:[2,5,15,27,31,33],ent:[0,10,17,21,22,29,32,37],ent_seq:37,enter:40,entiti:[5,10,11,17,18,22,29,31,37,42],entityhandl:[10,17,18,29,31,32,35],entityview:[22,23,24,29,31],entri:[],enumer:[5,7,17,21,22,27,35,42,44,45,46],env:[5,15,17,21,24,28,29,31,32,34,35,36,37],env_po:[28,32],env_structur:[17,35],environ:[],epsilon:[7,21,32,48],equal:[30,34,36,39,45],equidist:47,equival:[31,34,36],error:[0,8,10,11,22,28,31,33],especi:24,estim:[7,29,30,36,39,43],etc:[1,3,5,13,18,22,27,35],evalu:[],evaluategromacsposrul:6,even:[2,5,7,18,21,25,31],event:24,eventu:10,ever:[13,30],everi:[0,1,5,7,17,18,22,23,24,27,28,30,31,32,34,35,36,39,41,44,45,47,48],everyth:[],evolut:22,evolv:37,exact:[7,33],exactli:[2,7,22,24,27,31,35,39,45,46],exampl:[],example_reconstruct:42,exce:[34,36],exceed:[22,25],except:[0,3,10,22,25,31,45],exclud:[5,22],exclus:[1,5,21],execut:[],exisit:[],exist:[1,2,4,5,7,8,10,11,13,17,18,22,27,28,29,30,31,33,34,35,36,43,44,46,47],exit:[0,1,8,10],exit_cod:1,exit_statu:8,exot:5,exp:30,expect:[1,17,21,22,31,32,35,39,48],expens:22,experiment:31,explain:[1,5],explan:5,explicit:2,explr:7,exponenti:30,exponentialcool:30,expos:22,express:39,ext:8,extend:[],extendatcterm:25,extendatnterm:25,extended_search:[27,31],extens:[0,3,8,10,25,31],extension_penalti:25,extent:22,extern:[3,4,5],extra:[2,5,13,18,33],extra_bin:22,extra_force_field:31,extract:[5,6,17,18,19,21,22,23,24,26,27,28,30,31,32,34,35,36,39,43,45],extract_burial_statu:[],extractbackbon:17,extractloopposit:21,extractstatist:23,extrem:18,f_i:22,f_idx:35,facilit:24,factor:[7,21,30,43,44],fail:[0,1,5,8,11,18,27,28,31],failur:[0,5,8,10,47],fall:28,fallback:47,fals:[1,5,7,8,10,18,21,22,25,27,30,31,32,39,42,44,45],far:[27,31],fast:[6,15,17,21,22,23,33,34,35,36,47],fasta:[0,10,26,31],faster:[7,21,22,28,29,35],fastest:[28,31],favor:29,favourit:1,fed:[4,13],fedora:5,feed:[4,17,27],feel:[5,13],fellow:5,fetch:13,few:[2,5,13,21,33,37],ff_aa:21,ff_aa_on:21,ff_aa_two:21,ff_ala:21,ff_arg:21,ff_asn:21,ff_asp:21,ff_cy:21,ff_cys2:21,ff_gln:21,ff_glu:21,ff_gly:21,ff_hisd:21,ff_hise:21,ff_ile:21,ff_leu:21,ff_lookup:[21,28,31],ff_lookup_charmm:33,ff_ly:21,ff_met:21,ff_phe:21,ff_pro:21,ff_ser:21,ff_thr:21,ff_trp:21,ff_tyr:21,ff_val:21,ff_xxx:21,field:[31,33,47],figur:13,file:[],filecheck:13,fileexist:8,fileextens:8,filegzip:8,filenam:[0,5,8,10,21,22,23,24,33,34,36,43,47],filenotfound:29,fill:[4,5,10,13,19,22,25,26,27,29,31],fillfromdatabas:[27,31],fillfrommontecarlosampl:[27,31],fillloopsbydatabas:31,fillloopsbymontecarlo:31,filo:35,filtercandid:29,filtercandidateswithsc:29,final_model:[26,31],find:[],findchain:37,findwithin:5,fine:5,finish:48,fire:1,first:[0,1,5,7,10,13,15,17,18,21,22,23,24,25,27,28,30,31,32,34,35,36,38,39,42,44,47],fit:[],fix:[3,5,8,13,21,28,32,33,34,36],fix_cterm:28,fix_nterm:28,fix_surrounding_hydrogen:21,flag1:4,flag2:4,flag:[0,2,4,5,7,8,18,22,31,32,44,45],flanking_rot_angle_on:18,flanking_rot_angle_two:18,fletch:[22,42],fletcher:31,flexibl:[32,39,42,43,44,45,48],flip:47,flood:22,flush:[1,13],fold:22,folder:[2,4,5,13,15,33],follow:[0,1,2,4,5,7,8,13,15,18,19,21,22,24,25,26,27,31,32,33,34,36,42,44,45,46,47],fontsiz:23,forbidden:5,forc:[21,28,31],force_const:[21,28],forcefield:[],forcefieldaminoacid:21,forcefieldbondinfo:21,forcefieldconnect:21,forcefieldharmonicangleinfo:21,forcefieldharmonicimproperinfo:21,forcefieldljpairinfo:21,forcefieldlookup:[21,28,31,33],forcefieldperiodicdihedralinfo:21,forcefieldureybradleyangleinfo:21,forg:13,forget:[1,5],form:[11,20,21,22,26,31,35,47],formal:[27,28,44,47],format:[0,5,10,22,43],formatt:5,formula:29,forward:13,found:[1,4,5,8,10,13,17,19,22,24,27,28,29,30,31,32,39,41,47],foundat:1,four:[6,30],fraction:[22,24,28,30],frag_db:[19,22,27,33],frag_info:22,frag_length:[19,22,24],frag_map:22,frag_po:[19,22,24],frag_residu:[19,22],frag_seq:[19,22],frag_siz:22,fragdb:[19,20,22,27,31,33],fragger:[19,22,24,30,31],fragger_handl:31,fragger_map:22,fraggerhandl:[22,24,31],fraggermap:[22,24],fragment:[],fragment_db:31,fragment_handl:24,fragment_info:22,fragment_length:[22,24],fragmentinfo:[22,27],fragments_per_posit:24,fragmentsampl:30,frame:[],frame_energi:44,frame_residu:[40,42],frameresidu:[40,44,45],framework:5,free:[5,46,47],frequenc:[22,30],frm:32,frmrotam:[39,44,48],frmrotamergroup:[39,41,44,45],from:[],fromhhm:22,fromhoriz:22,fromresidu:47,front:[1,8,13],fstream:33,fudg:21,fulfil:[22,47],full:[0,1,5,7,17,20,21,22,25,26,27,30,32,42,44],full_seq:[25,27],fullgapextend:[25,31],fulli:[5,13,17,18,22,25,26,32],function_typ:35,functions_specific_to_your_act:5,fundament:33,funni:[2,5],further:[7,24,25,31,32,33],furthermor:33,futur:[21,22],gamma:[35,36,39],gamma_bin:36,gap:[],gapextend:[25,31],gapfre:22,gather:[4,9,13,22,24,42,44,47],gciiipgatcpgdyan:[27,31],gener:[],generatedenovotrajectori:24,generatestructureprofil:22,geom:[17,18,21,24,28,31,39,44],geometr:[],geoom:38,get:[],getaa:[17,18,21],getaaa:17,getaah:17,getactivesubrotam:44,getallatomposit:[17,28,32],getallatomscoringkei:27,getallatomweight:27,getanchoratomindex:17,getangl:42,getangularbins:22,getatomcount:5,getatomnam:17,getatomnameamb:17,getatomnamecharmm:17,getaveragescor:27,getbackbonelist:[19,22],getbackbonescoringkei:27,getbackboneweight:27,getbins:23,getbinsperdimens:23,getbound:18,getc:18,getca:18,getcb:18,getchain:25,getchainindex:25,getchainnam:25,getchains:5,getcharg:[21,44],getclust:27,getclusteredcandid:27,getconfid:22,getcoordidx:22,getcoordindex:[],getcoordinfo:22,getcpuplatformsupport:21,getdefault:[21,28,31],getdihedralangl:22,getdistbins:22,getdisulfidbridg:21,getdisulfidconnect:21,getdsspstat:22,getel:17,getenviron:17,getenvsetdata:5,getepsilon:21,getfirstindex:17,getforcefieldaminoacid:21,getfragmentinfo:[22,27],getframeenergi:44,getfudgelj:21,getfudgeqq:21,geth1index:17,geth2index:17,geth3index:17,getheavyindex:21,gethistogramindex:[18,23],gethistogramindic:23,gethnindex:17,gethydrogenindex:[17,21],getindex:[17,21],getinternalconnect:21,getinternalenergi:44,getinternalenergyprefactor:44,getlargestclust:27,getlastindex:17,getlength:25,getlist:24,getlooplength:21,getloopstartindic:21,getmass:21,getmaxnumatom:17,getmaxnumhydrogen:17,getn:18,getnam:[42,44],getnonbondedcutoff:28,getnum:27,getnumatom:[17,21],getnumb:27,getnumcandid:27,getnumchain:5,getnumcoord:22,getnumfrag:22,getnumhydrogen:17,getnumloopresidu:21,getnumresidu:[5,17,21],getnumstempair:22,getnumsubrotam:44,geto:18,getolc:[17,18],getomegators:[17,18],getoxtindex:21,getparticletyp:44,getpeptideboundconnect:21,getphiprobabilitygivenpsi:23,getphitors:[17,18,42],getpo:[17,44],getpotentialenergi:21,getpredict:22,getprob:[23,44],getpsiprobabilitygivenphi:23,getpsitors:[17,18,42],getr:29,getresiduedepth:22,getringpunch:29,getscor:[22,30],getselfenergi:44,getseqr:[17,35],getsequ:[17,18,22,27],getsequenceprofil:22,getsequenceprofilescoreskei:27,getsigma:21,getsimul:21,getsolventaccessibilitit:22,getstemrmsdskei:27,getstructureprofil:22,getstructureprofilescoreskei:27,getsubdb:22,getsubrotamerdefinit:44,getsystemcr:28,gettemperatur:[30,44],gettransform:18,getversionnumb:33,getweight:[24,27],ggg:31,gggaggg:31,gggggggggggggggggggg:31,git:[],gitignor:5,give:[4,5,13,19,27,30,31,44],given:[0,1,3,4,5,6,7,8,10,11,17,18,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,39,42,44,45,47],glass:7,gln:46,gln_ne2:17,global:[12,22,27,33],glu:[17,44,46,47],glu_oe1:17,glutam:46,glutamin:46,gly:[31,32,42,45,46],gly_n:17,glycin:[3,18,22,28,32,46],goal:[1,7,26],goe:[2,5,11,13,31,47],goldfarb:31,goldstein1994:7,goldstein:7,good:[4,5,15,21,22,31],got:2,grain:5,graph:[],graph_initial_epsilon:32,graph_intial_epsilon:32,graph_max_complex:32,graphminim:[7,41],grep:2,grid:22,gromac:6,group:[],group_definit:[23,36],group_idx:36,guarante:[22,24,27,32,33],gui:[5,23],guid:28,guidelin:[5,33],gzip:[0,8,10],hand:[2,4,10,44],handl:[],handler:24,happen:[1,5,21,22,24,25,30,31,44],hard:38,hardwar:15,harmon:[21,28],harmonic_angl:21,harmonic_bond:21,harmonic_improp:21,hasdata:22,hasfraglength:22,hasfragmentinfo:27,hash:22,hasringpunch:29,have:[],hbond:[24,31,36,44,45,46],hbond_scor:33,hbondscor:[],headach:5,header1:4,header2:4,header3:4,header4:4,header:[],header_output_dir:4,headlin:5,heavi:[17,21,32,34,45],heavili:[22,42],helic:[18,20,21,24,31,36,43],helix:[15,18,30,42],hello:33,hello_world:5,hellyeah:15,help:[0,1,2,4,5,10,13,15,21,36],helpactiontest:1,helper:[],hen:22,henc:[5,11,17,22,33],here:[0,1,2,4,5,8,10,11,13,15,17,18,21,22,23,24,26,27,28,30,31,33,34,36,39,47],het:31,heurist:[31,45],heuristicprocessor:17,hgfhvhefgdntngcmssgphfnpygkehgapvdenrhlg:0,hhm:[22,27],hhsearch:22,hhsuit:[],hidden:44,hide:[5,13],hierarch:[27,35],hierarchi:12,high:[3,5,13,26,31],high_resolut:18,higher:[2,27,35,36],highest:12,highli:[2,5],hint:10,histidin:[21,46],histogram:[23,30],histori:13,hit:[1,7,13,23,28],hmm:22,home:4,homolog:[0,9,15,22,31],homologu:22,honor:31,honour:31,hook:[],horiz:22,host:[4,13],hotfix:13,how:[],howev:22,hparticl:44,hpp:33,hsd:[46,47],hse:[46,47],html:[2,5,13],http:5,hydrogen:[3,17,18,21,22,31,36,44,45],hyphen:1,i_loop:[21,32],id_:33,idea:[1,5,17,19,21,22,31,35,44,48],ideal:[18,28,48],idenfifi:45,ident:[3,22,23,36,47],identifi:[0,10,11,22,27,31,32,34,36,45,47],idx:[7,17,18,21,22,24,28,35,44],idx_ca_res_37:17,idxhandl:5,iff:[22,25,29],ifstream:33,ignor:[0,21,28,31],illustr:22,imagehandl:18,imagin:5,imaginari:1,img:18,immedi:[1,5,12,13],impact:[21,22],implement:[3,13,22,24,25,28,31,33,38,39,41,42,46],implicit:2,improp:21,improv:[3,20,21,31,39,42],in_dir:4,in_fil:5,in_path:4,in_stream:33,in_stream_:33,inaccur:21,inaccurate_pot_energi:21,inact:48,inactive_internal_energi:48,incl:[21,22,31],includ:[2,5,8,13,15,17,20,21,22,25,27,29,31,33,34,36,42],include_ligand:31,inclus:31,incompat:[27,28],incomplet:[31,43],inconsist:[7,10,17,18,21,22,25,27,28,32,35],inconveni:13,increas:[7,24,27,28,31,45],independ:[21,32,43],index:[5,7,16,17,18,21,22,23,24,25,27,28,29,30,31,34,35,36,40,44,45,47],index_four:21,index_on:21,index_thre:21,index_two:21,indic:[],individu:[34,36],inf:[7,28],infin:28,infinit:28,influenc:[10,24,35],info:[22,27,31,35],inform:[5,10,13,18,19,20,22,24,25,27,31,35,36,37],inherit:[1,34,35,36,41],init:13,init_bb_list:30,init_frag:30,initi:[3,7,17,18,22,24,27,28,30,31,32,34,35,36,41,44,47],initial_bb:27,initial_epsilon:[7,48],initialis:1,inlin:[5,33],inner:11,input:[0,1,3,10,13,15,21,22,23,24,28,30,31,32,34,35,36,39,43,45,48],insert:[17,18,25,27,30,31,48],insertinto:[17,18,27],insertloop:[25,31],insertloopcleargap:[25,27,31],insid:[1,4],insight:13,inspir:28,instanc:[3,5,10,20,21,33],instead:[1,2,3,4,5,8,22,24,25,27,30,31,45],instruct:2,int16_t:33,int32_t:33,int_32_t:33,integ:[5,10,17,35],intend:[1,5,30],intent:22,interact:[3,5,21,28,34,35,36,38,39,40,44],intercept:[34,36],interest:[1,7,21,22,30,33,44,47],interfac:[0,4,5],intermedi:5,intern:[0,1,3,4,5,13,17,20,21,22,23,24,27,28,30,31,32,33,34,35,36,41,44,45,48],internal_e_prefac:45,internal_e_prefactor:44,internal_energi:44,internet:5,interpol:[35,47],interpret:[5,8],intervent:5,intrins:2,introduc:[1,4,5,13,28,31],invalid:[5,17,21,22,25,28,31,32,34,35,36,40,44,46,47],invok:[2,4,5,12,13],involv:[13,26,39],iostream:33,is_c_ter:[21,32],is_cter:21,is_n_ter:[21,32],is_nter:21,isallatomscoringsetup:[27,31],isallset:17,isanyset:17,isbackbonescoringsetup:31,isctermin:25,isempti:27,isen:11,ishbondacceptor:44,ishbonddonor:44,isntermin:25,isoleucin:46,isset:17,issimilar:47,issourc:33,istermin:25,isvalid:42,item:[1,5,13,17,18,21,22,31,35],iter:[7,22,23,24,27,28,30,31,44],itself:[3,4,5,13,22,30,32,33,34,36,44],job:[5,22,31],join:[5,17,19,22,27,28,30,32],jone:[22,44],jones1999:22,json:[0,10],just:[1,2,5,10,12,13,19,21,22,25,27,31,45],kabsch1983:22,kabsch:22,keep:[],keep_non_converg:27,keep_sidechain:[5,32],kei:[0,10,22,24,27,30,31,34,35,36],kept:[5,13,21,27,28,32,40],kernel:43,keyword:23,kic:[],kicclos:30,kick:10,kill_electrostat:21,kind:[1,5],kinemat:28,know:[2,47],known:[4,8,17,35,45],kortemm:28,krivov2009:[7,42,43],krivov:42,kwarg:1,l_e:44,lab:43,label:[13,21],lack:31,languag:4,larg:[23,28,31],larger:[7,11,18,22,31,45],largest:[24,27,39],last:[1,4,17,18,21,25,27,28,30,31,35,36,43],last_psi:18,later:[1,5,7,17],latest:[2,5],latter:[0,13,31],launcher:[4,5],layer:39,layout:[22,33],lazi:44,lbfg:31,leach1998:7,leach:7,lead:[0,5,6,8,18,21,27,28,32,34,36,43],least:[0,2,4,5,7,13,18,21,22,31,34,36,39],leav:1,left:[8,28],legal:5,lemon:7,len:[18,19,21,22,24,27,31,32,36,42],length:[6,7,17,20,21,22,23,24,25,27,28,31,32,33,34,35,39],length_dep_weight:31,length_depend:27,lennard:44,less:[0,7,13,18,21,22,23,27,31,34,36,47],let:[1,5,18,22,27,42],letter:[3,17,18,22,23,30,46],leu:46,leu_h:17,leucin:46,level:[2,3,5,11,12,13,26,31,44],lexicograph:31,lib64:5,libari:43,libexec:[4,5],libpromod3_nam:4,librari:[],library1:4,library2:4,licenc:43,life:13,ligand:[3,31,32,45],like:[1,4,5,13,31,33,43,44],limit:[3,22,28,31],line:[],linear:[22,24,27,30,34,36],linear_weight:[27,30,34,36],linearcombin:27,linearscor:30,liner:35,link:[2,4,5,13,17,21,22,24,30,32,34,35,36,37],link_cmd:4,linkcheck:[2,5,13],linker:[4,31],linker_length:31,list:[0,1,2,3,4,5,6,7,8,10,17,18,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,39,40,41,42,44,45,47,48],listen:5,literalinclud:5,littl:[4,5,13,33],live:[4,5],lj_pair:21,load:[],load_frequ:20,loadalign:[26,31],loadallatominteractionscor:34,loadallatompackingscor:34,loadamberforcefield:31,loadbb:22,loadcach:24,loadcbetascor:[27,30,36,37],loadcbpackingscor:36,loadcharmm:21,loadcharmmforcefield:31,loaddefaultallatomoverallscor:34,loaddefaultbackboneoverallscor:36,loaddunbracklib:[42,43],loadent:[0,10],loadfragdb:[19,20,27,31],loadhbondscor:36,loadpdb:[5,17,19,21,22,26,27,28,30,31,32,37,42],loadpenultimatelib:43,loadport:[21,22,23,33,34,36,47],loadreducedscor:36,loadsequenceprofil:[22,27],loadssagreementscor:36,loadstructuredb:[19,20,22,27,31],loadtorsionsampl:[18,20,23,30],loadtorsionsamplercoil:[20,27,31],loadtorsionsamplerextend:20,loadtorsionsamplerhel:20,loadtorsionscor:36,local:[2,21,22,23,34,36,47],locat:[2,3,4,7,18,22,25,33,34,36,44],log:[8,13,29,44,45],logic:0,loginfo:29,lone:44,lone_pair:44,longest:22,look:[5,8,13,18,22,32,35],lookup:[],looooooong:7,loop:[],loop_candid:27,loop_length:[21,22,27,32],loop_main:5,loop_po:21,loop_seq:27,loop_start_indic:[21,32],loopcandid:[],loss:13,lossi:22,lost:[1,13],lot:[1,5,10,13],lovel:43,lovell2000:43,low:[1,5,7,45],lower:[27,30,31,34,36],lowest:[27,30,44],lowest_energy_conform:30,lysin:46,machin:[21,22,23,33,34,36,47],macro:[4,5],made:[4,47],magic:[5,33],mai:[0,1,2,4,5,8,10,13,17,21,25,28,31],main:[31,33,47],mainli:[17,30,43,44],maintain:[5,13],major:13,makefil:[2,5],makestat:47,malici:13,man:[2,5],manag:[4,5],mandel:28,mandell2009:28,mani:[8,10,22,28,29,31,45],manipul:18,manner:[5,7,30],manual:[1,2,5,6,13,22,27,30,31,33,44],map:[17,18,22,24,29,32],mar:20,mark:[4,45],markup:5,mass:21,massiv:24,master:[5,13],mat3:6,mat4:[6,18,24,31],match:[0,4,21,22,23,27,28,30,31,35,36],materi:[1,5],math:29,mathemat:[27,28],matplotlib:23,matric:22,matrix:[6,22],matter:4,max:[6,7,17,25,29,31,32,36,47,48],max_alpha:36,max_beta:36,max_complex:[7,48],max_count:[34,36],max_d:36,max_dev:30,max_dist:[27,35],max_extens:31,max_gamma:36,max_iter:[24,27,31],max_iter_lbfg:31,max_iter_sd:31,max_length:25,max_loops_to_search:31,max_n:7,max_num_all_atom:31,max_p:45,max_prob:44,max_res_extens:31,max_step:28,max_to_show:11,max_visited_nod:7,maxfraglength:22,maxim:[7,20,22,24,27,28,30,31,35,36],maximum:[7,22,27,28,30,44,45],mc_closer:30,mc_cooler:30,mc_num_loop:31,mc_sampler:30,mc_scorer:30,mc_step:[7,31],mcsolv:7,mean:[4,5,10,13,17,21,28,31,32],meaning:[22,27,43],meant:[15,17,22,29,31,45],measur:24,mechan:[15,27,28,30,31,35],meddl:31,member:[5,10,27,31],memori:[7,22,31,33],mention:[1,2],merg:[13,21,24,25,27,31,32,35,44],merge_dist:31,mergegap:25,mergegapsbydist:31,mergemhandl:31,mess:[5,13,35],messi:13,met:46,methionin:[31,46],method:[0,1,7,10,17,21,22,23,28,31,32,33,45],metric:35,metropoli:[7,27,30],mhandl:[25,26,27,31],middl:13,might:[7,21,22,27,28,30,35,44,45,48],min:[27,36],min_alpha:36,min_beta:36,min_candid:27,min_d:36,min_dist:35,min_gamma:36,min_loops_requir:31,min_scor:27,mincadist:18,mind:[1,5],minim:[],minimizemodelenergi:31,minimum:[18,22,24,39],minor:[3,21],mirror:33,miser:11,mismatch:[17,35],miss:[0,8,10,21,31],mix:[0,4],mkdir:[2,5],mm_sy:[21,28],mm_sys_output:21,mm_system_cr:28,mmcif:8,mmsystemcr:[21,28],mod:5,mode:[1,47],modellinghandl:[25,27,31],modeltermini:31,modif:31,modifi:[5,13,18,27,31],modified_crambin:27,modul:[],module_data:4,mol:[],molecular:[15,28,31],molprob:[],molprobity_bin:29,molprobity_execut:29,moment:5,monitor:1,monolith:5,mont:[3,7,24,27,30,31,41],montecarlo:3,mood:5,more:[1,2,4,5,7,10,11,13,24,31,39,44],most:[0,3,4,5,18,21,22,23,24,27,28,31,34,36,43,45],mostli:[4,13,44],motion:18,movabl:21,move:[2,3,5,13,21,27,28,30,31,33],movement:24,mpscore:29,msg:8,msgerrorandexit:8,msm:3,msse4:2,much:[5,7,22,31],multi:15,multipl:[0,2,3,4,5,10,11,15,21,24,27,31,32,34,36],multipli:[7,30],multitempl:10,must:[],mutlipl:10,my_db:[],my_db_on:22,my_db_two:22,myclass:33,myclassptr:33,mytrg:0,n_coord:6,n_num:25,n_po:[6,18,36],n_stem:[6,19,22,25,27,28,30],n_stem_phi:30,n_ter:[28,45],naivesolv:7,name:[0,1,3,4,5,8,10,11,17,21,22,23,25,27,29,31,39,43,44,46,47],name_pymod:4,namespac:[10,33],nan:[28,47],nat:28,nativ:33,necessari:[5,18,30,35],necessarili:48,need:[1,2,3,4,5,8,10,12,13,18,21,22,23,24,27,28,31,32,33,34,35,36,42],need_config_head:4,neg:[1,7,21,28,35],neglect:[24,28,40,44],neglect_size_on:27,neighbor:[5,17,31],neighbour:[31,47],network:[18,39],never:[10,13,22,27,32,33,34,36],nevertheless:[5,44],new_default:21,new_env_po:17,new_po:17,new_res_nam:44,new_siz:18,newli:[17,30],next:[1,5,13,18,23,24,25,33],next_aa:30,nice:5,nitrogen:[6,18,28,38,44,45],nobodi:1,node:7,node_idx:7,node_idx_on:7,node_idx_two:7,non:[],nonbonded_cutoff:[21,28],none:[10,22,24,29,31,32],nonredund:22,nonrotamer:43,nonzero:47,norm:36,normal:[34,36],normalis:35,notabl:22,note:[0,2,5,10,11,17,18,21,22,24,27,28,30,31,32,33,34,35,36,42,45,46],noth:[4,5,11,30,44],notic:[1,4,13],novel:22,novo:[],now:[3,5,11,13,15,18,22],nparticl:44,nterminalclos:30,null_model:27,num:[19,24,27,28,32],num_frag:[22,31],num_gap_extens:25,num_loop:27,num_residu:[17,21,30,32,34,35,36],num_residues_list:32,num_trajectori:24,number:[0,1,5,6,7,10,11,15,17,18,20,21,22,23,24,25,27,28,30,31,32,33,34,35,36,37,39,40,44,47],numer:31,numpi:[23,30],o_po:18,object:[],observ:[7,22,28,48],obtain:[7,15,19,31],obviou:13,occupi:[40,45],occur:[17,24,35,36],ocparticl:44,odd:22,off:[1,5,11,31],offend:29,offer:[20,26,44],offset:[0,3,10,22,27,31],ofstream:33,often:[5,8,10,28],olc:18,old:[29,31],oligom:26,oligomer:3,olson:[],omega:[17,18],onc:[1,3,5,13,21,24,27,28,30,41,47,48],one_letter_cod:[17,19,22,27,28,30,32],onli:[0,1,2,4,5,7,8,10,11,12,13,17,18,21,22,24,25,27,29,30,31,32,33,34,36,39,42,43,45],only_longest_stretch:22,onto:[1,18,22,24],oparticl:44,open:[10,21,22,23,33,34,36,47],openmm:[2,15,21,28],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],oper:[3,7,13,15,17,22,35],opt:[8,10,13],optim:[],optimis:5,optimize_subrotam:[32,39],option:[0,2,3,10,22,27,28,31,47],order:[0,10,17,21,22,25,27,31,33,35],org:5,organ:[5,22,47],orient:[6,28,36],orig_indic:[27,29],origin:[6,10,13,18,22,27,30,31,35,48],ost:[],ost_double_precis:2,ost_ent:29,ost_librari:4,ost_root:[2,5],other:[],other_db:[],other_index:18,other_res_index:17,otherwis:[1,4,5,7,11,13,17,18,21,22,24,25,27,28,30,34,35,36,44],our:[4,5,13,22,27],out:[1,2,4,5,11,13,17,21,22,23,24,25,27,42,47],out_path:4,out_po:21,out_stream:33,out_stream_:33,outer:[11,22],outlier:29,output:[],output_dir:4,outsid:[5,35],over:[2,4,10,13,22,28,31,44],overal:[7,30,35,41],overhead:21,overlap:[21,30,31,32],overli:13,overload:33,overrid:[2,21],overridden:4,overview:[5,13],overwrit:27,overwritten:21,own:[],oxt:[6,17,21],oxygen:[18,31,38,44,45],pack:17,packag:[4,5,13],pad:[18,33],page:[2,5,16],pai:1,pair:[6,21,22,23,24,28,30,32,33,34,35,36,39,44,47],pairwis:[],pairwise_energi:7,pairwiseenergi:44,pairwisefunct:[35,36],pairwisefunctiontyp:35,pairwisescor:[],paper:[38,39,42,44],paragraph:[1,5],parallel:22,paramet:[1,4,5,6,7,8,10,11,12,17,18,20,21,22,23,24,25,27,28,29,30,31,32,34,35,36,38,39,40,41,43,44,45,46,47,48],parameter_index:22,parametr:[28,31,32,45],parent:31,pars:[],parser:[],part:[1,5,13,15,17,22,30,31,35,39,41,42,44],partial:25,particip:[32,39],particl:[],particular:[5,7,22,27,28,30,44,47],partner:[34,35,36,44],pass:[10,13,17,21,22,24,25,28,30,39,40,44,45],past:[5,13,18,25],path:[1,2,4,5,8,13,15,21,22,23,29,34,36,47],path_to_chemlib:12,pattern:22,paus:11,pdb:[0,5,8,10,15,17,18,19,20,21,22,26,27,28,29,30,31,32,37,42],pdb_id:[],penal:[25,31],penalti:[25,31],penultim:[32,43],penultimatelib:33,peopl:13,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],peptid:[17,19,21,22,31,32,42],per:[4,5,7,9,13,17,23,27,30,31,34,35,36,39],percentag:29,perfect:5,perfectli:5,perform:[0,7,13,15,21,24,27,28,29,30,31,33,35,39],period:21,periodic_dihedr:21,periodic_improp:21,permiss:5,permut:7,phase:21,phe:[46,47],phenix:29,phenylalanin:46,phi:[17,18,22,23,28,30,36,42,45,47],phi_bin:[36,47],phi_handl:42,phipsisampl:30,phosphoserin:31,phrase:5,pick:[27,30],pictur:5,piec:[5,24],pipelin:[],pivot:[27,28,30],pivot_on:[27,28],pivot_thre:[27,28],pivot_two:[27,28],place:[1,2,4,5,8,10,13,22],plain:[0,10],plan:13,plane:29,platform:[15,21],pleas:[2,5,13,22,24,27,28,31],plot:23,plt:23,plu:[5,10,12,22,39,44],pm3_csc:13,pm3_openmm_cpu_thread:[15,21,31],pm3_runtime_profiling_level:11,pm3argpars:[],pm3argumentpars:[0,8,10],pm_action:[1,4,5],pm_action_init:5,pm_bin:1,png:23,point:[2,5,10,12,17,22,24,30,31,35,47],pointer:[2,5,33],polar:[44,45],polar_direct:44,polici:5,pop:[13,27,30,35],popul:[2,13],port_str_db:22,portabl:[],portable_binary_seri:33,portable_fil:4,portablebinarydatasink:33,portablebinarydatasourc:33,pos_end:24,pos_on:24,pos_start:24,pos_two:24,posit:[],possibl:[0,3,5,7,10,13,18,21,22,23,25,27,28,30,31,32,33,34,35,36,39,41,44,46],post:10,postprocess:32,pot:21,pot_:28,potenti:[7,19,20,21,22,27,28,31,32,33,36],pqhpg:0,practic:[4,5,21,22],pre:[5,13],pre_commit:[5,13],preceed:32,precis:[2,27,31],precomput:[],pred:35,predefin:[4,15,21,31,34,36],predict:[22,24,31,35,36,38,42],prefactor:44,prefer:[2,4,22,47,48],prefilt:31,prefix:[1,4,5,8],prepar:[5,31],present:[18,24,28,32,44,45,47],prev_aa:30,prevent:[1,5],previous:[21,22,27,32,35],primary_rot_angl:18,principl:[30,35],print:[1,2,18,19,21,22,27,28,29,31,37],printstatist:22,printsummari:11,prior:31,privat:[1,33],pro:[17,23,46,47],probabilist:[22,45],probability_cutoff:45,probabl:[4,5,7,13,22,23,24,27,28,30,43,44,45,47],problem:[3,7,10,13,22,27,28,30,31,35,39,41,43,48],problemat:24,proce:37,procedur:[7,24,32],process:[1,10,13,17,21,24,28,30,31,33,35,40,44,47],produc:[0,1,2,4,5,7,22,25,29,31,43,45],product:[1,3,13],prof:[22,27],prof_dir:22,prof_path:22,profil:[],profiledb:22,profilehandl:[22,24,27,31],prog:10,program:[4,5,9],project:[4,5,13],prolin:[18,29,45,46],promin:0,promod3_mod:4,promod3_nam:4,promod3_name_head:4,promod3_path:5,promod3_root:5,promod3_shared_data_path:[5,33],promod3_unittest:[1,4,5],promot:5,prootein:7,propag:[5,18],proper:[13,22,45],properli:[1,31,34,36,45],properti:[17,18,31,47],propos:[25,27,28,30,39],proposed_posit:30,proposestep:30,prot:[5,19,22,28,30,32,42],prot_rec:5,protein:[],proton:[17,21,46,47],provid:[0,1,2,3,4,5,10,13,17,18,19,21,22,24,25,27,28,29,30,31,32,33,35,43,44,45,47],prune:[7,48],pseudo:[30,31,34,36],psi:[17,18,22,23,28,30,36,42,45,47],psi_bin:[36,47],psi_handl:42,psipr:[22,24,35,36],psipred_confid:36,psipred_pr:24,psipred_predict:[22,24,31],psipred_st:36,psipredpredict:[],pull:[5,13],punch:[],pure:0,purpos:[5,7,31,47],push:13,pushverbositylevel:10,put:[1,4,5,8,10,31],py_run:[1,4,5],pyc:1,pylint:13,pylintrc:13,pymod:[4,5,13],pyplot:23,pytest:5,python2:5,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],python_root:2,pythonpath:5,qmean:2,qmeandisco:35,qualiti:31,queri:[22,47],querylib:47,question:[3,23],quickli:[5,28],quit:[5,10],rachovski:20,rackovski:20,radian:[6,18,21,23],radii:[29,38],radiu:[5,29,34,36],raihvhqfgdlsqgcestgphynplavph:0,rais:[0,6,7,10,17,18,21,22,23,24,25,27,28,29,30,31,32,34,35,36,39,40,44,45,47],rama_iffi:29,ramachandran:29,random:[7,18,20,23,27,28,30],random_se:27,randomized_frag:18,randomli:[23,30],rang:[5,6,17,18,19,21,22,23,24,25,28,30,31,34,35,36,47],rank:27,rapid:38,rare:5,rather:[5,8,13,47],raw:[],rawmodel:5,reach:[0,25,28],read:[0,5,8,10,13,21,22,23,25,32,33,34,36,43,47],readabl:[0,5,10,47],readdunbrackfil:43,reader:[13,15],readi:[2,47],readm:2,real:[5,10,33,45],realli:[1,2,5,8,13],reappear:13,reason:[5,13,28,30,48],rebas:13,rebuild:[2,5],recalcul:23,recent:13,recoginz:46,recogn:[0,10],recognis:[1,5,13],recognit:22,recommend:[2,5,21,31],reconstruct:[],reconstructcbetaposit:18,reconstructcstemoxygen:18,reconstructor:[28,31,32],reconstructoxygenposit:18,reconstructsidechain:[5,31,32],reconstructtest:5,record:[1,31],recreat:13,reduc:[3,21,24,31,36],reduced_scor:33,reducedscor:[],redund:[20,27],ref_backbon:[19,22],ref_fil:5,refactor:3,refer:[1,4,5,15,17,18,19,21,22],referenc:5,refresh:27,regard:[28,39],region:[21,24,25,28,30,31,40,45],regist:[4,5],regress:43,reinterpret_cast:33,reject:[27,28,30],rel:[4,6,7,22,24,28,36],relat:[4,5,7,10,22,24,33,44],relax:[],relev:[2,3,4,21,32],remain:[26,30,31],rememb:[1,5,30],remodel:[27,32],remodel_cutoff:32,remov:[2,3,7,18,21,22,25,27,29,31,32,35,42,44],removecoordin:22,removeterminalgap:31,renumb:[22,31],reorder:31,reordergap:31,replac:[17,18,30,31],replacefrag:18,report:[1,5,31],reportmolprobityscor:29,repositori:[1,4,5,13],repres:[],represent:[18,19,21,22,23,33,34,36,44,47],reproduc:31,request:[22,24,43,47],requir:[0,2,3,5,10,13,17,18,22,23,24,27,28,31,32,33,37,44,45,46,47],reread:22,res_depth:22,res_idx:44,res_index:17,res_indic:[17,21,32],res_list:[17,21,28,32],res_num:17,resembl:13,reserv:8,reset:[7,17,21,28,30,35,44],residu:[],residue_depth:22,residue_index:[40,44,45],residuedepth:22,residuehandl:[6,17,18,22,25,27,28,29,30,44,45,47],residuehandlelist:17,resiz:[18,33],resnum:[17,18,25,27,31,32,35],resnum_on:35,resnum_rang:31,resnum_two:35,resolut:[18,28],resolv:[13,17,28],resolvecystein:39,resort:31,respect:[6,21,31],respons:[5,13],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],restor:[18,27,30,35],restraint:[22,28],restrict:[5,13,25],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],result:[0,2,5,7,21,23,24,27,28,29,30,31,32,39,43,47],resum:11,reus:[31,32],review:13,reviv:13,rewrit:1,richardson:43,ridig:32,right:[1,2,5,10],rigid:[],rigid_frame_cutoff:32,rigidblock:24,rij:38,ring:[],ring_punch_detect:31,rmsd:[18,19,22,24,27,28],rmsd_cutoff:[22,27,28],rmsd_thresh:[22,24],rmsd_threshold:22,rnum:35,robot:28,role:10,root:[2,4,5,13],rosetta:36,rot:32,rot_constructor:42,rot_group:[42,45],rot_lib:45,rot_lib_entri:45,rota_out:29,rotam:[],rotamer_group:[39,41,42],rotamer_id:42,rotamer_librari:32,rotamer_model:32,rotamer_on:39,rotamer_res_indic:32,rotamer_two:39,rotamergraph:[32,41,42,44,48],rotamergroup:44,rotamerid:[],rotamerlib:[32,33,43,45,47],rotamerlibentri:[45,47],rotat:[6,18],rotatearoundomegators:18,rotatearoundphipsitors:18,rotatearoundphitors:18,rotatearoundpsitors:18,rotationaroundlin:6,roughli:20,round:47,routin:[1,15,27],rrm:32,rrmrotam:[39,44],rrmrotamergroup:[39,41,44,45],rst1:4,rst2:4,rst:[4,5,13],rsync:5,rule:[5,6,13],run:[],runact:1,runexitstatustest:1,runmolprob:29,runmolprobityent:29,runnabl:5,runner:1,runtest:[1,5],runtim:[],runtimeerror:[6,7,17,18,21,22,23,25,27,28,30,31,32,34,35,36,39,40,43,44,45,47],runtimeexcept:23,s_id:22,safe:2,said:4,same:[0,1,2,4,5,7,10,11,17,21,22,24,27,28,30,31,32,33,34,35,36,40,44,45,47],samiti:31,sampl:[],sampled_frag:30,samplemontecarlo:30,sampler:[],sampling_start_index:30,sander:22,saniti:2,sanity_check:2,sanner1996:[],sanner:[],satisfi:46,save:[5,13,18,21,22,23,24,27,30,33,34,35,36,47],savebb:22,savecach:24,savefig:23,savepdb:[15,17,18,21,22,26,27,28,30,31,32,42],saveport:[21,22,23,33,34,36,47],sc_data:28,sc_rec:[28,32],sc_rec_test:32,sc_result:28,scale:18,scatter:23,scheme:[1,5,10,17,22,25,30],sci:[28,38],scondari:31,scope:11,score:[],score_contain:27,score_env:[27,30,37],score_threshold:39,score_vari:31,scorecontain:27,scorer:[],scorer_env:[24,27,30],scoring_weight:24,scoringgapextend:[25,31],scoringweight:[24,27,31],scratch:22,scriptnam:8,scriptpath:5,scwrl3:[],scwrl3disulfidscor:[38,39],scwrl3pairwisescor:38,scwrl4:[39,42,44,45],scwrlrotamerconstructor:[42,44,45],seamlessli:13,search:[2,3,5,16,17,22,24,27,29,31,32,36,39,44,45],searchdb:[19,22],second:[5,7,18,21,22,24,27,28,31,34,35,36,38,39],secondari:[3,22,24,36],secondli:5,section:[1,4,14,49],see:[0,1,5,6,7,8,10,13,15,17,20,21,22,23,25,27,29,30,31,33,34,35,36,47],seed:[7,20,23,27,28,30],seem:13,segment:18,select:[3,7,22,24,30,31,32,42],selenium:31,self:[1,5,7,39,44],self_energi:[7,44],send:8,sensibl:31,separ:[1,3,5,7,21,23,31,34,36,39],seq:[10,17,19,22,24,25,27,31,35,37],seq_idx_on:24,seq_idx_two:24,seq_one_idx:24,seq_sep:[34,36],seq_tpl:[27,31],seq_trg:[27,31],seq_two_idx:24,seqid:22,seqr:[0,17,19,22,24,25,27,30,31,32,34,35,36],seqres_str:[17,28,32],seqsim:22,sequenc:[],sequencefromchain:37,sequencehandl:[17,22,24,25,31,35],sequencelist:[17,31,35],sequenceprofil:22,sequenti:[18,31],ser:46,serial:[22,33],serializ:33,serin:46,serv:[1,10,22,24,27,30],servic:13,set:[1,2,4,5,7,8,10,12,13,15,17,18,21,22,24,27,28,29,30,31,32,33,34,35,36,39,42,44,45,47,48],setaa:18,setactivesubrotam:44,setallatomscoringkei:27,setaroundomegators:18,setaroundphipsitors:18,setaroundphitors:18,setaroundpsitors:18,setbackbonescoringkei:27,setbackrub:18,setc:18,setca:18,setcb:18,setcharg:21,setcpuplatformsupport:21,setdefault:21,setdisulfidconnect:21,setenergi:[34,36],setenviron:[17,28,32,35],setepsilon:21,setframeenergi:[42,44],setfudgelj:21,setfudgeqq:21,setinitialenviron:[17,27,28,30,32,35,37],setinternalconnect:21,setinternalenergi:44,setinternalenergyprefactor:44,setinterpol:47,setmass:21,setn:18,setnonbondedcutoff:28,seto:18,setolc:18,setpeptideboundconnect:21,setphitors:18,setpo:17,setpolardirect:44,setprob:44,setpsipredpredict:[31,35,36],setpsitors:18,setresidu:17,setscor:36,setsequ:18,setsequenceoffset:31,setsequenceprofil:31,setsequenceprofilescoreskei:27,setsigma:21,setstemrmsdskei:27,setstructureprofil:22,setstructureprofilescoreskei:27,settemperatur:44,setup:[],setupdefaultallatomscor:[27,31],setupdefaultbackbonescor:[27,31],setupsystem:21,setweight:27,sever:[2,3,5,7,10,20,22,23,24,27,28,32,35,36,39,44,47,48],sg_pos_on:38,sg_pos_two:38,shake:30,shanno:31,shapovalov2011:43,shapovalov:[42,43],shared_ptr:33,shebang:5,sheet:[31,43],shelenkov:38,shell:[1,2,5,8],shift:[18,22,25],shiftctermin:25,shiftextens:25,shorten:31,shorter:31,shortest:27,shortli:5,should:[1,2,4,5,7,8,10,13,15,18,19,22,23,24,27,28,30,31,32,33,35,40,42,44],show:[1,5,10,11,27,30,42,45],showcas:[1,17,21,23],shown:[5,11,31],shrink:18,side:[5,7,31,38,42],sidechain:[],sidechain_pymod:5,sidechain_reconstructor:31,sidechain_rst:5,sidechain_test_data:5,sidechain_test_orig:32,sidechain_test_rec:32,sidechain_unit_test:5,sidechainparticl:[44,45],sidechainreconstructiondata:[],sidechainreconstructor:[],sidenot:[22,32],sig1:47,sig2:47,sig3:47,sig4:47,sigma:21,silent:1,sim:21,similar:[1,2,13,19,22,24,35,36,47],similardihedr:47,similarli:[2,21,31],simpl:[0,6,18,22,30,34,35,36,47],simpler:[21,31],simplest:[5,26],simpli:[17,18,27,28,30,31,45,46,47],simplic:[19,22],simplif:10,simplifi:[3,18,21,22],simul:[7,21,27,28,30],sinc:[1,2,4,5,7,8,13,15,18,21,22,23,24,43,46],singl:[2,4,5,7,17,18,21,22,24,27,28,30,31,32,35,36,40,43,44,45,48],single_chain_structur:[],singleton:21,singular:24,sink:33,sit:5,site:5,size:[5,17,18,22,23,28,30,33,34,35,36],sizeof:33,skip:[0,1,5,13,22,31,45],slide:24,slight:31,slightli:31,slow:33,slower:[15,21,22,23,31,34,36,47],small:[5,22,28,31,32],smaller:[18,22,24,28,36],smallest:[],smallish:[2,5],smart:13,smng:3,smooth:43,smtl:31,soding2005:22,softsampl:30,softwar:5,sol:42,sole:[1,13],soli:20,solut:[5,7,24,27,28,30,31,32,41,42],solv:[7,13,48],solvent:22,solvent_access:[],solvent_accessibility_str:[],solventaccess:22,solver:3,some:[1,2,4,5,10,13,17,19,22,26,29,30,31,32,33,35,37,42,45,47],somedata:33,someth:[1,5,8,13,22],sometim:13,somewher:4,soon:[7,28,36,42,47],sort:[1,4,7,11,27,47],sound:13,sourc:[1,2,4,5,8,10,12,13,22,24,27,28,29,31,32,33,47],source1:[4,13],source2:[4,13],source3:4,source4:4,source_chain_idx:31,source_mhandl:31,space:7,span:31,sparticl:44,spatial:5,spawn:[1,5],spdbv:31,spdbv_style:31,special:[1,2,4,5,21,45,46,47],specif:[1,5,21,22,23,24,27,30,35,37,43,45,47],specifi:[2,4,6,7,18,22,23,27,28,31,32,35,44,47],specimen:8,speed:[3,21,31],spehner:[],spend:5,spent:[11,15],sphere:38,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],spin:7,spit:25,split:37,sport:5,squar:22,src:[5,13],src_db:[],ss_agreement:36,ss_agreement_scor:33,ssagre:22,ssagreementscor:[],sse:2,sstream:33,stabil:22,stabl:[5,13],stack:13,stage:[],stai:[1,5,7,13],standard:[2,5,9,10,13,17,23,33,36,43,47],start:[],start_idx:27,start_resnum:[17,18,22,27,30,31,32,34,35,36],start_resnum_list:32,start_rnum:35,start_temperatur:[7,30],starter:1,startscop:11,stash:[13,27,30,35],state:[1,2,5,17,22,27,30,35,36,39,46,47],staticruntimeprofil:11,statist:[11,20,22],statu:[1,5],std:33,stderr:1,stdout:1,steadili:[7,30],steepest:[28,31],stem:[6,18,21,22,25,27,28,30,31,32],stemcoord:6,stempairorient:6,step:[],stereochem:31,steric:47,still:[5,11,21,22,31,33],stop:[1,5,11,25,28],stop_criterion:28,storabl:22,storag:[5,17,21,34,36],store:[0,1,3,5,6,13,15,17,18,21,22,23,24,25,27,28,30,31,32,33],stori:5,str:[1,8,10,11,12,17,18,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,44,46,47],str_len:33,straight:13,strategi:47,stream:33,stretch:[17,22,27,31,35,36],strict:13,strictli:3,string:[0,3,8,10,22,23,25,33],stringstream:33,strip:31,struct:[22,33],struct_db:19,structral:[17,35],structur:[],structural_db:27,structuralgap:[25,29],structuralgaplist:[25,31],structure_db:[22,24,27,31,33],structure_db_on:22,structure_db_two:22,structure_dir:22,structure_id:22,structure_path:22,structure_sourc:10,structuredb:[3,20,22,24,27,31,33],structuredbdatatyp:22,structureprofil:22,stuff:[22,34],style:[31,35,36],sub:[5,22,28],sub_frag:18,sub_res_list:22,subdir:5,subfold:5,subject:5,submodul:5,submodule1:13,subpart:24,subrotam:[],subrotameroptim:[32,48],subsequ:[7,18,31],subset:[21,22,24,27,28,31,32],subst:22,subst_matrix:22,substitut:22,substweightmatrix:22,subtre:[4,5],succeed:25,success:[7,8,30],suffici:22,suffix:8,suggest:[5,38],suit:[1,5,22],sulfur:[38,39,44,45],sum:[11,25,31,32,38,39],summari:11,superpos:[18,22,24,27,28,30],superpose_stem:18,superposed_rmsd:[18,27],superposeonto:18,superposit:[3,24,27,30],superpost:24,supervis:1,supos:[],support:[1,5,8,10,15,21,28,31],suppos:13,sure:[2,5,10,13,22],surf:[],surfac:22,surfacehandl:[],surotam:44,surround:[21,22,28,32,34,36],symmetr:[22,35,47],symmetri:[34,36],sync:5,system:[],t_sampler:23,tail:18,tailor:[17,31],take:[5,7,17,22,23,24,27,28,30,31,33,36,39,45,48],taken:[0,17,21,28,31,45],talk:1,target:[0,1,2,4,5,10,15,22,24,26,27,28,30,31,35],target_chain_idx:31,target_mhandl:31,target_pdb:29,target_sequ:22,task:[5,13,28,31,33,35],technic:[],techniqu:7,tell:[1,5,8,10,13,22],temperatur:[7,27,30,44],templat:[0,1,10,15,26,31,33,35],temporari:[22,31],temporarili:13,term:[5,22,44,46,47,48],termin:[1,6,8,15,17,18,21,25,27,28,30,31,32],terminal_len:30,terminal_seqr:30,termini:[25,30,31],terminu:[22,30,31,45],test_:5,test_action_:1,test_action_do_awesom:1,test_action_help:1,test_awesome_featur:5,test_check_io:33,test_cod:5,test_doctest:5,test_foo:4,test_portable_binari:33,test_reconstruct_sidechain:5,test_sidechain_reconstruct:5,test_submodule1:13,test_suite_:4,test_suite_your_module_run:5,test_your_modul:13,testcas:[1,5],testcasenam:5,testexit0:1,testpmexist:1,testreconstruct:5,testutil:[1,5],text:[1,10],than:[4,5,10,11,13,17,18,22,24,27,28,29,31,32,36,39],thei:[2,5,13,17,18,21,22,23,27,28,29,30,31,39,44,45,46,47],them:[4,5,13,18,21,22,23,24,25,27,31,32,35,40],themselv:21,theoret:30,theori:38,therefor:[5,18,20,22,24,28,30,31,47],thereof:21,thi:[0,1,2,3,4,5,7,8,9,10,11,12,13,14,15,17,18,19,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,39,42,44,45,46,47,48,49],thing:[1,2,5,13,22,24,31,47],think:[5,7],thoroughli:13,those:[0,1,2,4,5,7,10,13,21,27,31,32,33,34,36,42],though:[21,31,33],thr:46,thread:[15,20,21,31],three:[1,4,13,17,18,23,27,29,30,36,46],threonin:46,thresh:[18,44,47],threshold:[7,22,24,28,31,32,35,47],through:[1,5,6,18,22,25,31,34,36],throughout:[10,13,20,21],thrown:22,thu:8,tidi:13,tightli:13,time:[1,5,10,11,13,15,24,31],timer:11,tini:[13,31],titl:23,tlc:[17,46],tlc_an:17,tlctorotid:[42,46],tmp_buf:33,todens:18,toentiti:[15,17,18,21,22,28,30,32],toframeresidu:44,togeth:[5,13,22,39],too:[10,13,27,28,31,33,44],tool:[3,4,19,33,37,42],toolbox:13,top:[2,5,11,12,13,28],topic:[1,5,13],topolog:[21,28],torrmrotam:44,torsion:[],torsion_angl:42,torsion_bin:36,torsion_plot:23,torsion_sampl:[18,22,27,28,30,31,33],torsion_sampler_coil:[24,33],torsion_sampler_extend:[24,33],torsion_sampler_hel:33,torsion_sampler_helix:24,torsion_sampler_list:22,torsion_scor:33,torsionprob:22,torsionsampl:[18,20,22,23,24,27,28,30,31,33,36],torsionscor:[],total:[7,11,22,24],touch:[1,5,21,28],toward:[3,5,22,25,28,31,34,36,44,45,48],tpl:[0,26,27,31],tpr:[46,47],trace:31,track:[],tradition:8,trail:0,train:[20,27,31],trajectori:[24,30],tran:[18,46,47],transform:[6,18,24,31,47],translat:[4,5,22,46,47],transomegators:18,treat:[5,21,31,32,33,47],treatment:45,tree:[1,4,5,7,13,41,42],treepack:3,treesolv:[7,32,42],trg:[0,10,27,31],tri:[7,24,25,31,39,47],trick:[1,13],trigger:[1,4,5,43],tripeptid:23,tripl:8,triplet:[],trp:46,trustworthi:13,tryptophan:46,ttccpsivarsnfnvcrlpgtpea:[27,31],ttccpsivarsnfnvcrlpgtpeaicatgytciiipgatcpgdyan:31,ttccpsivarsnfnvcrlpgtpeaicatytgciiipgatcpgdyan:[27,31],tupl:[6,7,8,18,21,22,24,25,29,31,32,39],turn:[0,1,8,11,13,31],tutori:5,tweak:31,twice:[11,35],two:[1,5,7,13,17,18,21,22,24,25,27,28,31,32,33,34,35,36,38,39,42,44,46,47],txt:[1,2,4,5,13],type:[],typedef:33,typenam:33,typic:[18,24,30,42],tyr:[46,47],tyrosin:46,uint32_t:33,uint:33,ultra:22,uncertain:5,uncharg:45,undefin:21,under:[4,5],undergo:[24,28,30,32],underli:[25,27],underscor:1,understand:13,undo:7,unexpect:2,unfavor:[18,28],unfavour:[28,30,39],unfortun:13,unhandl:[0,10],uniform:28,uniqu:[24,27,30,47],unittest:[1,5,13],unix:13,unknown:21,unless:[10,17,18,21,27,34,36],unlik:42,unrecognis:8,unset:[17,21,32],unsupport:[10,33],until:[5,7,28,31,35,45],untouch:18,untrack:1,unus:13,updat:[3,5,13,17,21,25,27,28,31,32,35],updatedistribut:23,updateposit:[21,28],upon:[28,30],urei:21,urey_bradley_angl:21,usabl:13,usag:[0,3,7,10,20,22,27,28,32],use_amber_ff:31,use_bbdep_lib:32,use_frm:32,use_full_extend:31,use_scoring_extend:31,user:[],userlevel:1,usr:[2,5],usual:[1,2,4,5,10,11,13,18,27,31,34],utilis:[5,13],v_size:33,val:[23,46],valid:[0,7,13,18,22,25,30,31,32,43],valin:46,valu:[2,7,8,10,17,18,21,22,24,27,30,31,33,34,35,36,39,42,43,44,46,47,48],valueerror:[24,31],vanish:35,varadarajan:22,vari:[4,33],variabl:[1,2,5,11,15,21,29,31,33],variant:[21,27],variou:[1,2,4,13,26],vec3:[6,17,18,28,29,38,39,44],vec3list:24,vector:[21,23,27,33],verbos:1,veri:[1,5,8,13,21,24,31,33],verif:10,verifi:[1,8,13],version:[2,5,13,22,31,33,43,46],vertex:[],via:[1,5,10,12,21],view:[10,13,23,31,35],virtual:5,visibl:32,visual:15,wai:[1,2,4,5,13,18,19,21,27,36,42,43,46],wait:5,walk:[1,5],want:[1,2,3,5,12,13,18,22,24,27,28,31,35,44,45,47,48],warn:[5,13,31],watch:5,web:[2,5],weight:[3,22,24,27,30,31,34,36],weird:[24,28,42],well:[0,2,4,13,17,23,24,25,27,31,33,36,42,47],went:[0,5],were:[13,22,27,31],wether:7,what:[1,5,8,10,13,19,22,35],when:[1,4,5,7,10,11,17,18,21,22,23,24,25,27,30,31,32,33,35,36,39,43,44,45,47],whenev:[5,17,27,35],where:[0,1,3,4,5,7,8,10,11,13,17,18,21,22,23,27,31,33,34,35,36,43,44,45,47],wherea:22,whether:[3,5,7,8,18,21,22,27,28,30,32,34,35,36,44,45,47],which:[0,1,4,5,6,8,9,10,13,15,17,18,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,37,44,45,47],whistl:5,whitespac:0,who:[7,42],whole:[1,2,5,13,18,22,31,44],why:[1,13,45],width:[7,33,42],wild:4,window:24,window_length:24,wise:4,wish:[2,14,23,31],with_aa:27,with_db:27,within:[2,3,4,5,11,13,17,21,24,25,29,31,32,34,36,47],without:[1,4,5,8,10,21,25,28,31,35,43],won:[31,32,43,45],word:[4,43],work:[1,2,4,5,11,13,15,21,25,31,33,43],worst:13,would:[1,2,5,8,18,22,23,39,44],wrap:22,wrapper:[1,4,5,12,31],write:[],writebasetyp:33,writemagicnumb:33,writetypes:33,writeversionnumb:33,written:[5,33],wrong:[2,10],xlabel:23,xlim:23,xml:5,xxx:[18,46],xxx_num_atom:17,xxx_num_hydrogen:17,year:1,yet:[22,27],ylabel:23,ylim:23,you:[0,1,2,3,4,5,7,8,10,11,12,13,15,17,18,19,21,22,23,24,26,27,28,30,31,32,33,34,35,36,42,43,44,45,47,48],your:[],your_modul:[5,13],yourself:[2,5,7,13,31,45],zero:[0,22,31,47],zhou2005:22,zhou:22,zip:[22,42]},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","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","Welcome To ProMod3&#8217;s Documentation!","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","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":[17,18,22,23,25,27,32,34,35,36],"default":31,"function":[4,6,8,9,25,32,35,38],acid:[17,21,23],action:[0,1,4,5],actiontestcas:1,algorithm:24,all:[17,28,34],allatomclashscor:34,allatomenv:17,allatomenvposit:17,allatominteractionscor:34,allatomoverallscor:34,allatompackingscor:34,allatomposit:17,allatomscor:34,amino:[17,21,23],angl:23,api:1,argument:10,atom:[17,28,34],backbon:[28,35,36,47],backbonelist:18,backboneoverallscor:36,backbonescor:36,backbonescoreenv:35,base:[22,34,36],binari:33,block:[24,44],bond:39,branch:13,build:[0,2,31,44],can:46,candid:27,cbetascor:36,cbpackingscor:36,ccd:28,chain:22,changelog:3,check:29,clashscor:36,closer:30,cmake:[1,2,4,13],code:33,command:10,construct:[35,45],constructor:45,contribut:5,conveni:35,cooler:30,core:9,creat:[1,21],data:[22,33],databas:22,defin:[22,23],definit:4,depend:[2,47],detect:29,develop:14,dihedr:23,directori:13,distinguish:17,disulfid:39,document:[4,5,14,16,49],entri:47,environ:35,evalu:39,everyth:8,exampl:[27,33],execut:1,exisit:33,extend:25,featur:[5,22],file:[8,33],find:22,fit:28,forcefield:21,fragment:22,frame:[40,45],from:38,gap:[25,28],gener:[21,30],geometr:22,geometri:6,get:[15,46],git:13,graph:[7,41],group:44,handl:[17,19,25,27,31],have:1,hbondscor:36,header:33,helper:8,hook:13,how:[5,46],indic:16,instal:2,integr:1,introduct:[4,8,10],issu:5,keep:27,kic:28,librari:[43,47],licens:5,line:10,load:[20,43],lookup:21,loop:[18,19,21,27,28,30,37],loopcandid:27,mainten:4,make:[1,2],messag:8,minim:7,model:[0,15,24,26,27,29,31,42],modul:[4,5],mol:21,molprob:29,must:1,non:47,novo:[24,30],object:[20,30,40],optim:48,ost:21,other:38,output:1,own:5,pairwis:35,pairwisescor:36,pars:10,parser:10,parti:5,particl:44,pipelin:[15,31],pm3argpars:10,portabl:33,posit:17,precomput:20,profil:11,promod3:[0,2,4,5,9,13,15,16,33],protein:26,psipredpredict:22,punch:29,quick:5,raw:31,reconstruct:32,reducedscor:36,relax:28,releas:3,repres:18,residu:45,rigid:24,ring:29,rotam:[41,43,44,45,47],rotamerid:46,run:[1,2,15],runtim:11,sampl:23,sampler:[23,30],score:[27,35,37,38],scorer:[5,30,34,36],script:1,scwrl3:38,sequenc:22,setcompoundschemlib:12,setup:13,share:[4,8],sidechain:[32,42],sidechainreconstructiondata:32,sidechainreconstructor:32,smallest:44,ssagreementscor:36,stage:13,start:[5,15],step:31,structur:[13,22],subclass:1,subrotam:48,system:21,tabl:16,test:[1,4,5,8],test_act:1,third:5,torsion:23,torsionscor:36,track:27,triplet:23,type:47,unit:[1,4,5],user:49,welcom:16,write:5,your:5}})
\ No newline at end of file
diff --git a/doc/html/sidechain/disulfid.html b/doc/html/sidechain/disulfid.html
index 2c3f97b64a970412ba1934625659447d32ef65d5..469a163301748cad3bbe130c499a398f3b5816e9 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.1.0 documentation</title>
+    <title>Disulfid Bond Evaluation &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -45,48 +47,26 @@
 a disulfid bond, one would get an unfavourable energy due to &#8220;clashes&#8221; between
 the sulfur atoms. It is possible to improve performance in sidechain
 reconstruction regarding cysteins when finding and separately handle
-disulfid bonds. PROMOD3 implements a simple geometrical description
-<a class="reference internal" href="#canutescu2003b" id="id1">[canutescu2003b]</a> . The paper proposes two rotamers to be in a disulfid
+disulfid bonds. The scoring module implements an empirically derived disulfid
+score (<a class="reference internal" href="../scoring/other_scoring_functions.html#promod3.scoring.SCWRL3DisulfidScore" title="promod3.scoring.SCWRL3DisulfidScore"><code class="xref py py-func docutils literal"><span class="pre">promod3.scoring.SCWRL3DisulfidScore()</span></code></a>) as defined in
+<a class="reference internal" href="../scoring/other_scoring_functions.html#canutescu2003b" id="id1">[canutescu2003b]</a>. The paper proposes two rotamers to be in a disulfid
 bonded state, if the resulting disulfid score plus the self energies of the
 involved rotamers is below 45. If there are several cysteines close together,
 this problem gets another layer of complexity. One has to assure, that
 every cysteine only participates in one disulfid bond but the network
 of disulfid bonds is geometrically optimal. SCWRL4 proposes an approach,
 that has also been implemented here.</p>
-<dl class="method">
-<dt id="promod3.sidechain.DisulfidRawScore">
-<code class="descclassname">promod3.sidechain.</code><code class="descname">DisulfidRawScore</code><span class="sig-paren">(</span><em>ca_pos_one</em>, <em>cb_pos_one</em>, <em>sg_pos_one</em>, <em>ca_pos_two</em>, <em>cb_pos_two</em>, <em>sg_pos_two</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.DisulfidRawScore" title="Permalink to this definition">¶</a></dt>
-<dd><p>Evaluates the geometric expression based on the input positions</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>ca_pos_one</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; The CA position of first rotamer</li>
-<li><strong>cb_pos_one</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; The CB position of first rotamer</li>
-<li><strong>sg_pos_one</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; The gamma sulfur position of first rotamer</li>
-<li><strong>ca_pos_two</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; The CA position of second rotamer</li>
-<li><strong>cb_pos_two</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; The CB position of second rotamer</li>
-<li><strong>sg_pos_two</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; The gamma sulfur position of second rotamer</li>
-</ul>
-</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">The result of the raw score</p>
-</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
 <dl class="method">
 <dt id="promod3.sidechain.DisulfidScore">
 <code class="descclassname">promod3.sidechain.</code><code class="descname">DisulfidScore</code><span class="sig-paren">(</span><em>rotamer_one</em>, <em>rotamer_two</em>, <em>ca_pos_one</em>, <em>cb_pos_one</em>, <em>ca_pos_two</em>, <em>cb_pos_two</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.DisulfidScore" title="Permalink to this definition">¶</a></dt>
 <dd><p>Directly extracts the positions of the gamma sulfurs from the rotamers by
-searching for particles with the name &#8220;SG&#8221;. In case of <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>
-It expects exactly one gamma sulfur per rotamer. In case of
-<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> there can be an arbitrary number of gamma sulfurs per
-rotamer (at least one), it then evaluates the score for all possible
-combinations of gamma sulfurs and takes the minimum score.
+searching for particles with the name &#8220;SG&#8221;.
+The found positions are then passed to
+<a class="reference internal" href="../scoring/other_scoring_functions.html#promod3.scoring.SCWRL3DisulfidScore" title="promod3.scoring.SCWRL3DisulfidScore"><code class="xref py py-func docutils literal"><span class="pre">promod3.scoring.SCWRL3DisulfidScore()</span></code></a>.
+In case of <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> it expects exactly one gamma sulfur per
+rotamer. In case of <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> there can be an arbitrary number
+of gamma sulfurs per rotamer (at least one), it then evaluates the score
+for all possible combinations of gamma sulfurs and takes the minimum score.
 To get a final DisulfidScore, it finally adds the self energies of the
 rotamers to the result of the geometric expression.</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -96,10 +76,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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.7.1)"><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.7.1)"><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.7.1)"><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>
@@ -132,8 +112,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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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.7.1)"><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
@@ -157,12 +137,6 @@ describe the optimal rotamers in the according rotamer groups.</p>
 </table>
 </dd></dl>
 
-<table class="docutils citation" frame="void" id="canutescu2003b" rules="none">
-<colgroup><col class="label" /><col /></colgroup>
-<tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id1">[canutescu2003b]</a></td><td>Canutescu AA, Shelenkov AA, Dunbrack RL Jr. (2003). A graph-theory algorithm for rapid protein side-chain prediction. Protein Sci (2003).</td></tr>
-</tbody>
-</table>
 </div>
 
 
@@ -198,9 +172,6 @@ describe the optimal rotamers in the according rotamer groups.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -211,8 +182,8 @@ describe the optimal rotamers in the according rotamer groups.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/sidechain/disulfid.txt"
diff --git a/doc/html/sidechain/frame.html b/doc/html/sidechain/frame.html
index 776c8e4fb4945ec18bc53f5325542164e279f4ef..f85ddf0c413ad66d1625bf68b5ec5a1b3bfa35e0 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.1.0 documentation</title>
+    <title>Frame &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -159,9 +161,6 @@ can be passed to rotamer groups for calculating frame energies.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -172,8 +171,8 @@ can be passed to rotamer groups for calculating frame energies.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/sidechain/frame.txt"
diff --git a/doc/html/sidechain/graph.html b/doc/html/sidechain/graph.html
index 2a2e6c16b802c1cfb21a264e3725e8d1d46514ee..c63fdc0470c979dc081e3d318cd6ef3876e33df7 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.1.0 documentation</title>
+    <title>Rotamer Graph &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -44,15 +46,15 @@
 <p>Once having a frame representing the rigid parts, the internal energies in
 rotamer groups can be calculated. To come to a final solution of the sidechain
 modelling problem, the pairwise energies also have to be evaluated and an
-overall solution has to be found. PROMOD3 implements an interaction graph that
-takes a list of rotamer groups, calculates the pairwise energies, does edge
-decomposition and dead end elimination. Solutions can finally be found
-using Tree decomposition, AStar or Monte Carlo approaches.</p>
+overall solution has to be found. PROMOD3 implements a
+<a class="reference internal" href="../core/graph_minimizer.html#promod3.core.GraphMinimizer" title="promod3.core.GraphMinimizer"><code class="xref py py-class docutils literal"><span class="pre">promod3.core.GraphMinimizer</span></code></a> that allows to find solutions using
+tree decomposition, A* and Monte Carlo algorithms.</p>
 <dl class="class">
 <dt id="promod3.sidechain.RotamerGraph">
 <em class="property">class </em><code class="descclassname">promod3.sidechain.</code><code class="descname">RotamerGraph</code><a class="headerlink" href="#promod3.sidechain.RotamerGraph" title="Permalink to this definition">¶</a></dt>
-<dd><p>The Graph object has no constructor exported to python. It is meant to be
-constructed using the static create functions.</p>
+<dd><p>The <a class="reference internal" href="#promod3.sidechain.RotamerGraph" title="promod3.sidechain.RotamerGraph"><code class="xref py py-class docutils literal"><span class="pre">RotamerGraph</span></code></a> objects inherits from
+<a class="reference internal" href="../core/graph_minimizer.html#promod3.core.GraphMinimizer" title="promod3.core.GraphMinimizer"><code class="xref py py-class docutils literal"><span class="pre">promod3.core.GraphMinimizer</span></code></a> and extends the minimizer by static
+initialization functions.</p>
 <dl class="staticmethod">
 <dt id="promod3.sidechain.RotamerGraph.CreateFromRRMList">
 <em class="property">static </em><code class="descname">CreateFromRRMList</code><span class="sig-paren">(</span><em>rotamer_groups</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.CreateFromRRMList" title="Permalink to this definition">¶</a></dt>
@@ -73,389 +75,6 @@ conformations for every amino acid position.</td>
 </table>
 </dd></dl>
 
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.Prune">
-<code class="descname">Prune</code><span class="sig-paren">(</span><em>epsilon</em><span class="optional">[</span>, <em>e_cut=0.0</em>, <em>consider_all_nodes=False</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.Prune" title="Permalink to this definition">¶</a></dt>
-<dd><p>Performs edge decomposition followed by dead end elimination in an
-iterative manner until no changes can be observed anymore given
-<strong>epsilon</strong>.</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>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; The energy threshold to perform edge decomposition.</li>
-<li><strong>e_cut</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; Parameter to control dead end elimination. If set to
-0.0, the default goldstein criterion is applied =&gt;
-the rotamer gets removed if it&#8217;s dominated by all other
-rotamers in the same node. If you increase this value,
-a rotamer must be dominated by at least this <strong>e_cut</strong>.</li>
-<li><strong>consider_all_nodes</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, wether the dead end elimination should be
-applied to all nodes, or only those who are
-connected with an edge removed by edge
-decomposition. This is useful if already a Prune
-operation has been performed =&gt; only those nodes
-connected to a removed edge have the chance for
-successful dead end elimination.</li>
-</ul>
-</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.ApplyDEE">
-<code class="descname">ApplyDEE</code><span class="sig-paren">(</span><em>node_idx</em><span class="optional">[</span>, <em>e_cut=0.0</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.ApplyDEE" title="Permalink to this definition">¶</a></dt>
-<dd><p>Applies dead end elimination on one particular node and potentially
-deactivates certain rotamers.</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>node_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; Node to apply dead end elimination</li>
-<li><strong>e_cut</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; If set to
-0.0, the default goldstein criterion is applied =&gt;
-the rotamer gets removed if it&#8217;s dominated by all other
-rotamers in the same node. If you increase this value,
-a rotamer must be dominated by at least this <strong>e_cut</strong>.</li>
-</ul>
-</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last"><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> whether any rotamer has been deactivated.</p>
-</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.ApplyEdgeDecomposition">
-<code class="descname">ApplyEdgeDecomposition</code><span class="sig-paren">(</span><em>edge_idx</em>, <em>epsilon</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.ApplyEdgeDecomposition" title="Permalink to this definition">¶</a></dt>
-<dd><p>Applies edge decomposition on one particular edge and potentially
-deactivates it.</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>edge_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; Edge to decompose.
-the idx relates to the list you get back
-when calling the <a class="reference internal" href="#promod3.sidechain.RotamerGraph.GetEdges" title="promod3.sidechain.RotamerGraph.GetEdges"><code class="xref py py-meth docutils literal"><span class="pre">GetEdges()</span></code></a> function.</li>
-<li><strong>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; The energy threshold to perform edge decomposition.</li>
-</ul>
-</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last"><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> whether the edge has been decomposed and
-deactivated</p>
-</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.Reset">
-<code class="descname">Reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.Reset" title="Permalink to this definition">¶</a></dt>
-<dd><p>Resets the graph by undoing any pruning operation (DEE and edge decomposition)</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.TreeSolve">
-<code class="descname">TreeSolve</code><span class="sig-paren">(</span><span class="optional">[</span><em>max_complexity=inf</em>, <em>initial_epsilon=0.02</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.TreeSolve" title="Permalink to this definition">¶</a></dt>
-<dd><p>The method solves a rotamer graph using a minimal width tree decomposition
-approach in an iterative manner. In every iteration, the algorithm performs
-a pruning step (DEE / Edge Decomposition) and subsequently tries to solve
-each connected component in the graph separately.
-If the number of possible enumerations in the tree constructetd from a
-particular connected component is is larger <strong>max_complexity</strong>,
-this component is solved in a later iteration. The algorithm iterates until
-all connected components are solved and steadily increases the epsilon value
-resulting in a more and more agressive edge decomposition. This function
-assumes all self energies of the rotamers to be calculated and properly set!</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>max_complexity</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 possible permutations, that have to
-be enumerated in the resulting tree after tree
-decomposition.</li>
-<li><strong>initial_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; The initial energy threshold to perform edge
-decomposition.</li>
-</ul>
-</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">A tuple with the first element being a list of indices
-representing the single rotamers minimizing
-the overall energy functions from every rotamer group.
-The second element is the according energy value.</p>
-</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.AStarSolve">
-<code class="descname">AStarSolve</code><span class="sig-paren">(</span><em>e_thresh</em><span class="optional">[</span>, <em>max_n=100</em>, <em>max_visited_nodes=100000000</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.AStarSolve" title="Permalink to this definition">¶</a></dt>
-<dd><p>The method solves a rotamer graph using the A* algorithm. Besides creating
-minimal energy solution, the function produces a maximum of <strong>max_n</strong>
-solutions sorted by energy. It aborts as soon as it sees the first solution
-with an energy difference of <strong>e_thresh</strong> to the optimal solution or hits
-<strong>max_n</strong>. If you&#8217;re only interested in the optimal solution you should use
-the TreeSolve function since it&#8217;s much faster and uses less memory.
-There is no automatic pruning of the graph using DEE or edge decomposition,
-so you have to do it by yourself, otherwise you&#8217;ll have a looooooong
-runtime or even hit the <strong>max_visited_nodes</strong> parameter that caps the memory
-usage.
-To have a valid solution you have to take care that you set the <strong>e_cut</strong>
-parameter in the pruning function to <strong>e_tresh</strong>.
-This function assumes all self energies of the rotamers to be calculated
-and properly set!</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>e_thresh</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; Maximal energy difference of a solution to the
-optimal solution to be considered.</li>
-<li><strong>max_n</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 maximum number of solutions that will be generated.</li>
-<li><strong>max_visited_nodes</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; Caps the memory usage of the algorithm. Besides
-The memory used for pairwise energies and self
-energies, the algorithm uses about
-<strong>max_visited_nodes</strong> * 20 bytes.</li>
-</ul>
-</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">A tuple with the first element being a list of
-solutions with indices representing the single rotamers
-selected for that solution. The second element is a list
-of energies for the according solutions.</p>
-</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.MCSolve">
-<code class="descname">MCSolve</code><span class="sig-paren">(</span><span class="optional">[</span><em>n=100</em>, <em>mc_steps=100000</em>, <em>start_temperature=1000.0</em>, <em>change_frequency=1000</em>, <em>cooling_factor=0.9</em>, <em>seed=0</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.MCSolve" title="Permalink to this definition">¶</a></dt>
-<dd><p>Does a total of <strong>n</strong> Monte Carlo runs to find low energy solutions
-of the RotamerGraph. Each run starts with a random rotamer
-configuration. At each of the <strong>mc_steps</strong> steps, a random location and
-a random rotamer at that location is selected and an energy difference
-of that random selection relative to the current configuration is
-estimated. If the difference in energy is negative, the step is
-accepted. If not, the step is accepted with a probability given by
-the temperature dependent Metropolis criterion (exp(-ediff/T)).
-The temperature for every run starts with <strong>start_temperature</strong>
-and is multiplied every <strong>change_frequency</strong> steps with <strong>cooling_factor</strong>
-to achieve a simulated annealing effect.
-There is no automatic pruning of the graph using DEE or edge decomposition,
-you have to do that by yourself.
-This function assumes all self energies of the rotamers to be calculated
-and properly set!</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>n</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 Monte Carlo runs</li>
-<li><strong>mc_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; Number of Monte Carlo steps per run</li>
-<li><strong>start_temperature</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; Start temperature for the temperature dependent
-Metropolis criterion</li>
-<li><strong>change_frequency</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 steps the temperature stays the same</li>
-<li><strong>cooling_factor</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; Factor to multiply temperature each
-<strong>change_frequency</strong> steps</li>
-<li><strong>seed</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; Seed for random number generator</li>
-</ul>
-</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">A tuple with the first element being a list of
-solutions with indices representing the single rotamers
-selected for that solution. The second element is a list
-of energies for the according solutions.</p>
-</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.GetNumNodes">
-<code class="descname">GetNumNodes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.GetNumNodes" 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 number of nodes in the graph
-=&gt; every RotamerGroup is a node</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.GetNumEdges">
-<code class="descname">GetNumEdges</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.GetNumEdges" 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 number of edges in the graph, representing
-connections between nodes with at least one
-nonzero interaction</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.GetNumActiveNodes">
-<code class="descname">GetNumActiveNodes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.GetNumActiveNodes" 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 number of nodes having more than one active rotamer,
-even after performing pruning operations</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.GetNumActiveEdges">
-<code class="descname">GetNumActiveEdges</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.GetNumActiveEdges" 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 number of edges representing nonzero interactions,
-even after performing pruning operations</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.GetNumRotamers">
-<code class="descname">GetNumRotamers</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.GetNumRotamers" 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 total number of rotamers in the graph</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.GetNumActiveRotamers">
-<code class="descname">GetNumActiveRotamers</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.GetNumActiveRotamers" 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 total number of active rotamers (Total number of
-rotamers minus those that have been deactivated by DEE)</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.GetEdges">
-<code class="descname">GetEdges</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.GetEdges" 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">A list of tuples describing the edges
-connecting nodes with nonzero pairwise interactions</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.GetActiveEdges">
-<code class="descname">GetActiveEdges</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.GetActiveEdges" 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">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">tuples</span></code> describing the edges
-connecting nodes with nonzero pairwise interactions
-(All edges minus those that have been deactived by edge
-decomposition)</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.GetActiveRotamers">
-<code class="descname">GetActiveRotamers</code><span class="sig-paren">(</span><em>node_idx</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.GetActiveRotamers" 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"><strong>node_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; Specifies node from which the active rotamers should be
-extracted</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">list of the rotamers that are active
-in specified node (all rotamers minus those that have
-been deactivated using DEE)</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.GetSelfEnergies">
-<code class="descname">GetSelfEnergies</code><span class="sig-paren">(</span><em>node_idx</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.GetSelfEnergies" 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"><strong>node_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; Specifies node from which the self energies should be
-extracted</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">list of self energies for all rotamers in
-specified node as they are fed into the solving
-algorithms. Note, that they might slightly differ
-from the original self energies in the input rotamers
-because of approximations introduced in edge
-decomposition.</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="promod3.sidechain.RotamerGraph.GetPairwiseEnergies">
-<code class="descname">GetPairwiseEnergies</code><span class="sig-paren">(</span><em>edge_idx</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerGraph.GetPairwiseEnergies" 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"><strong>edge_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; Specifies edge from which the pairwise energies should
-be extracted, the idx relates to the list you get back
-when calling the <a class="reference internal" href="#promod3.sidechain.RotamerGraph.GetEdges" title="promod3.sidechain.RotamerGraph.GetEdges"><code class="xref py py-meth docutils literal"><span class="pre">GetEdges()</span></code></a> function.</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">list of list where you can extract
-the energy of rotamer i in the first node in the
-edge with rotamer j in the second node in the edge
-with: e = pairwise_energies[i][j]</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
 </dd></dl>
 
 </div>
@@ -493,9 +112,6 @@ with: e = pairwise_energies[i][j]</td>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -506,8 +122,8 @@ with: e = pairwise_energies[i][j]</td>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/sidechain/graph.txt"
diff --git a/doc/html/sidechain/index.html b/doc/html/sidechain/index.html
index 496c0b28c9766230aee6cad7725ffa469530248b..3a2889f66d394f26caec4b4ff25908186dc0a558 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.1.0 documentation</title>
+    <title>sidechain - Sidechain Modelling &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -51,21 +53,21 @@ algorithm using the functionality in the module. Note, that this code will crash
 as soon as you have structures containing all the weirdness the PDB throws at
 us. In this case, you should use the full fletched sidechain reconstruction
 pipelines available in the modelling module.</p>
-<div class="highlight-python"><div class="highlight"><pre><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">mol</span>
-<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">sidechain</span>
+<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="p">,</span><span class="n">mol</span>
+<span class="kn">from</span> <span class="nn">promod3</span> <span class="k">import</span> <span class="n">sidechain</span>
 
-<span class="c"># load a protein</span>
-<span class="n">prot</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="s">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
-<span class="c"># load rotamer library</span>
+<span class="c1"># load a protein</span>
+<span class="n">prot</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="s1">&#39;data/1CRN.pdb&#39;</span><span class="p">)</span>
+<span class="c1"># load rotamer library</span>
 <span class="n">library</span> <span class="o">=</span> <span class="n">sidechain</span><span class="o">.</span><span class="n">LoadDunbrackLib</span><span class="p">()</span>
-<span class="c"># we need a rotamer constructor to create any rotamers or </span>
-<span class="c"># 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="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="c"># 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="s">&quot;peptide=true&quot;</span><span class="p">),</span> <span class="bp">True</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>
 
-<span class="c"># gather some data, the rotamer ids and backbone torsion angles</span>
+<span class="c1"># gather some data, the rotamer ids and backbone torsion angles</span>
 <span class="n">torsion_angles</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
 <span class="n">rotamer_ids</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
 
@@ -74,7 +76,7 @@ pipelines available in the modelling module.</p>
     <span class="n">phi_handle</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="n">psi_handle</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="c"># set typical default values for an alpha helix...</span>
+    <span class="c1"># set typical default values for an alpha helix...</span>
     <span class="n">phi</span> <span class="o">=</span> <span class="o">-</span><span class="mf">1.0472</span> 
     <span class="n">psi</span> <span class="o">=</span> <span class="o">-</span><span class="mf">0.7854</span>
     <span class="k">if</span> <span class="n">phi_handle</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
@@ -84,8 +86,8 @@ pipelines available in the modelling module.</p>
 
     <span class="n">torsion_angles</span><span class="o">.</span><span class="n">append</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="c"># first build a frame representing the rigid parts including</span>
-<span class="c"># cystein sidechains</span>
+<span class="c1"># first build a frame representing the rigid parts including</span>
+<span class="c1"># cystein sidechains</span>
 <span class="n">frame_residues</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">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>
@@ -97,12 +99,12 @@ pipelines available in the modelling module.</p>
 <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="c"># let&#39;s build up rotamer groups</span>
+<span class="c1"># let&#39;s build up rotamer groups</span>
 <span class="n">rotamer_groups</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
 <span class="n">aa_with_rotamers</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">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="k">if</span> <span class="n">r</span><span class="o">.</span><span class="n">GetName</span><span class="p">()</span> <span class="o">==</span> <span class="s">&quot;ALA&quot;</span> <span class="ow">or</span> <span class="n">r</span><span class="o">.</span><span class="n">GetName</span><span class="p">()</span> <span class="o">==</span> <span class="s">&quot;GLY&quot;</span><span class="p">:</span>
+    <span class="k">if</span> <span class="n">r</span><span class="o">.</span><span class="n">GetName</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;ALA&quot;</span> <span class="ow">or</span> <span class="n">r</span><span class="o">.</span><span class="n">GetName</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;GLY&quot;</span><span class="p">:</span>
       <span class="k">continue</span>
 
     <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>
@@ -110,27 +112,27 @@ pipelines available in the modelling module.</p>
                     <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">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="c"># remove super unlikely rotamer in rotamer group </span>
-    <span class="c"># e.g. those who clash with the frame</span>
+    <span class="c1"># remove super unlikely rotamer in rotamer group </span>
+    <span class="c1"># e.g. those who clash with the frame</span>
     <span class="n">rot_group</span><span class="o">.</span><span class="n">ApplySelfEnergyThresh</span><span class="p">()</span>
-    <span class="c"># finally add it and keep track of the indices</span>
+    <span class="c1"># finally add it and keep track of the indices</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">aa_with_rotamers</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="c"># buildup a graph given the rotamer groups</span>
+<span class="c1"># buildup a graph given the rotamer groups</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="c"># and get a solution out of it using a minimal width tree approach</span>
+<span class="c1"># and get a solution out of it using a minimal width tree approach</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="mi">0</span><span class="p">]</span>
 
-<span class="c"># let&#39;s finally apply the solution to the residues</span>
+<span class="c1"># let&#39;s finally apply the solution to the residues</span>
 <span class="k">for</span> <span class="p">(</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="p">)</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">aa_with_rotamers</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">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">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="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">prot</span><span class="p">,</span> <span class="s">&quot;example_reconstruction.pdb&quot;</span><span class="p">)</span>
+<span class="n">io</span><span class="o">.</span><span class="n">SavePDB</span><span class="p">(</span><span class="n">prot</span><span class="p">,</span> <span class="s2">&quot;example_reconstruction.pdb&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
 <p>Contents:</p>
@@ -206,9 +208,6 @@ pipelines available in the modelling module.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -219,8 +218,8 @@ pipelines available in the modelling module.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/sidechain/index.txt"
diff --git a/doc/html/sidechain/loading.html b/doc/html/sidechain/loading.html
index 449c456a2d3cd28a1f5db305a69782fb3ea119e6..dd25176529c68c770963af35f1f57f0acfd8aa91 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.1.0 documentation</title>
+    <title>Loading Rotamer Libraries &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -158,9 +160,6 @@ incomplete if the last problem gets triggered.</td>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -171,8 +170,8 @@ incomplete if the last problem gets triggered.</td>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/sidechain/loading.txt"
diff --git a/doc/html/sidechain/rotamer.html b/doc/html/sidechain/rotamer.html
index 1ae73b516dbffd03010d02c937fdc44924db455f..10e77511067295f7769a33448b3228e3cd1307c4 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.1.0 documentation</title>
+    <title>Rotamers &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -84,11 +86,11 @@ has to be defined at initialization.</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>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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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>pos</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.AtomHandle" title="(in OpenStructure v1.6.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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a></li>
+<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.AtomHandle" title="(in OpenStructure v1.7.1)"><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.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a></li>
 </ul>
 </td>
 </tr>
@@ -196,7 +198,7 @@ to a <a class="reference external" href="http://www.openstructure.org/docs/dev/m
 <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="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Lone pair direction</td>
+<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.7.1)"><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>
@@ -211,7 +213,7 @@ hydrogen, this would be the direction of backbone-N to backbone-H.</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>polar_direction</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.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"><strong>polar_direction</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.7.1)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; Polar direction of particle</td>
 </tr>
 </tbody>
 </table>
@@ -281,13 +283,14 @@ particular <a class="reference internal" href="#promod3.sidechain.RRMRotamerGrou
 <code class="descname">ApplyOnResidue</code><span class="sig-paren">(</span><em>res</em>, <em>consider_hydrogens=False</em>, <em>new_res_name=&quot;&quot;</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RRMRotamer.ApplyOnResidue" title="Permalink to this definition">¶</a></dt>
 <dd><p>Iterates over every particle and searches for the according atom in
 <strong>res</strong>. If it&#8217;s present, the position gets reset to the particle position.
-If not, a new atom gets added to <strong>res</strong>.</p>
+If not, a new atom gets added to <strong>res</strong>. No atoms are removed from <strong>res</strong>
+in this process.</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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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
@@ -556,13 +559,14 @@ particular <a class="reference internal" href="#promod3.sidechain.FRMRotamerGrou
 <code class="descname">ApplyOnResidue</code><span class="sig-paren">(</span><em>res</em>, <em>consider_hydrogens=False</em>, <em>new_res_name=&quot;&quot;</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.FRMRotamer.ApplyOnResidue" title="Permalink to this definition">¶</a></dt>
 <dd><p>Iterates over every particle of the active subrotamer and searches for the
 according atom in <strong>res</strong>. If it&#8217;s present, the position gets reset to the
-particle position. If not, a new atom gets added to <strong>res</strong>.</p>
+particle position. If not, a new atom gets added to <strong>res</strong>.
+No atoms are removed from <strong>res</strong> in this process.</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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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
@@ -962,7 +966,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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
@@ -1096,7 +1100,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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
@@ -1213,9 +1217,6 @@ rotamers with <em>self_energy</em> &gt; <em>l_e</em> + <em>thresh</em></p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -1226,8 +1227,8 @@ rotamers with <em>self_energy</em> &gt; <em>l_e</em> + <em>thresh</em></p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/sidechain/rotamer.txt"
diff --git a/doc/html/sidechain/rotamer_constructor.html b/doc/html/sidechain/rotamer_constructor.html
index f277f8341490d2efbf65997eec857ada4429787c..244c467a784fbeb3845f920f119477db722b6bc3 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.1.0 documentation</title>
+    <title>Rotamer Constructor &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -47,12 +49,29 @@ functionality provided by PROMOD3</p>
 <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><a class="headerlink" href="#promod3.sidechain.SCWRLRotamerConstructor" title="Permalink to this definition">¶</a></dt>
+<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. The rotamers start after the CB atom (typically CG).
+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>
 <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>
@@ -63,11 +82,6 @@ constructor distinguishes between backbone and sidechain frame residues.</p>
 <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>
 <dd></dd></dl>
 
-<dl class="method">
-<dt>
-<code class="descname">ConstructRRMRotamerGroup</code><span class="sig-paren">(</span><em>n_pos</em>, <em>ca_pos</em>, <em>cb_pos</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>
-<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>
@@ -78,11 +92,6 @@ constructor distinguishes between backbone and sidechain frame residues.</p>
 <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>n_pos</em>, <em>ca_pos</em>, <em>cb_pos</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>
@@ -91,11 +100,6 @@ constructor distinguishes between backbone and sidechain frame residues.</p>
 <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>
-<dd></dd></dl>
-
-<dl class="method">
-<dt>
-<code class="descname">ConstructRRMRotamerGroup</code><span class="sig-paren">(</span><em>n_pos</em>, <em>ca_pos</em>, <em>cb_pos</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><p>All functions are also avaible for their flexible rotamer model counterpart.
 =&gt;ConstructFRMRotamerGroup(...) with exactly the same parameters.</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -103,13 +107,10 @@ constructor distinguishes between backbone and sidechain frame residues.</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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>) &#8211; To extract the N, CA, CB backbone anchor</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 N, CA, CB backbone anchor</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.7.1)"><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 backbone anchor</li>
-<li><strong>n_pos</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; To directly feed in the backbone anchor positions</li>
-<li><strong>ca_pos</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; To directly feed in the backbone anchor positions</li>
-<li><strong>cb_pos</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; To directly feed in the backbone anchor positions</li>
+extract the required backbone atoms</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; 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
@@ -139,9 +140,8 @@ probabilities extracted from the rotamer library.</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> when not all required backbone
-atoms are present in <strong>residue</strong>, not all required atom
-positions are set in <strong>all_atom_pos</strong> or when the rotamer library
-does not contain any entries for <strong>id</strong></p>
+atoms are present in <strong>residue</strong> or not all required atom
+positions are set in <strong>all_atom_pos</strong></p>
 </td>
 </tr>
 </tbody>
@@ -156,14 +156,8 @@ does not contain any entries for <strong>id</strong></p>
 <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></dd></dl>
-
-<dl class="method">
-<dt>
-<code class="descname">ConstructBackboneFrameResidue</code><span class="sig-paren">(</span><em>n_pos</em>, <em>ca_pos</em>, <em>c_pos</em>, <em>o_pos</em>, <em>cb_pos</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. It extracts
-the n, ca, c, o and cb positions and constructs a frame residue based on
-the parametrizations of SCWRL4. In case of <strong>n_ter</strong>, there are additional
+<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
@@ -173,15 +167,10 @@ why the phi angle of the residue is required as an input.</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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
-<li><strong>n_pos</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; To directly feed in the backbone positions</li>
-<li><strong>ca_pos</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; To directly feed in the backbone positions</li>
-<li><strong>c_pos</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; To directly feed in the backbone positions</li>
-<li><strong>o_pos</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; To directly feed in the backbone positions</li>
-<li><strong>cb_pos</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/geom/vec/#ost.geom.Vec3" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.geom.Vec3</span></code></a>) &#8211; To directly feed in 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; 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
@@ -200,7 +189,7 @@ represent a proper c-terminus</li>
 </td>
 </tr>
 <tr class="field-odd 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> when not all required backbone
-atoms are present in <strong>residue</strong>, not all required atom
+atoms are present in <strong>residue</strong> or not all required atom
 positions are set in <strong>all_atom_pos</strong>.</p>
 </td>
 </tr>
@@ -224,7 +213,7 @@ particles for all polar hydrogens.</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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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>res</strong> (<a class="reference external" href="https://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>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>
@@ -248,7 +237,7 @@ atom positions are set in <strong>all_atom_pos</strong>.</p>
 <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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a>.
+<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.7.1)"><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>
@@ -257,7 +246,7 @@ of the residue will be represented as carbons and hydrogens are skipped.</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>residue</strong> (<a class="reference external" href="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -273,7 +262,7 @@ construct a <a class="reference internal" href="frame.html#promod3.sidechain.Fra
 <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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.0)"><code class="xref py py-class docutils literal"><span class="pre">ost.mol.ResidueHandle</span></code></a> using
+<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.7.1)"><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>,
 which will be called by this function if the residue is not known by the given
@@ -291,10 +280,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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="http://www.openstructure.org/docs/dev/conop/compoundlib/#ost.conop.CompoundLib" title="(in OpenStructure v1.6.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/dev/conop/compoundlib/#ost.conop.CompoundLib" title="(in OpenStructure v1.7.1)"><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>
@@ -372,9 +361,6 @@ to be assigned</td>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -385,8 +371,8 @@ to be assigned</td>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/sidechain/rotamer_constructor.txt"
diff --git a/doc/html/sidechain/rotamer_id.html b/doc/html/sidechain/rotamer_id.html
index bda098709cdddf59bd795f334d6559be95a71453..a18495fc3e4761aac88e326a45d72a090d01d990 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.1.0 documentation</title>
+    <title>RotamerID &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -91,7 +93,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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">
@@ -116,12 +118,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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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="http://www.openstructure.org/docs/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.6.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/dev/conop/aminoacid/#ost.conop.AminoAcid" title="(in OpenStructure v1.7.1)"><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>
@@ -174,9 +176,6 @@ defined in <a class="reference external" href="http://www.openstructure.org/docs
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -187,8 +186,8 @@ defined in <a class="reference external" href="http://www.openstructure.org/docs
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/sidechain/rotamer_id.txt"
diff --git a/doc/html/sidechain/rotamer_lib.html b/doc/html/sidechain/rotamer_lib.html
index 84f762d5194755fcd32bd35b6e184ba4309fe834..02882552ff6d50713c982de11e59d8e76fd30c4a 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.1.0 documentation</title>
+    <title>Rotamer Library &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -80,7 +82,7 @@ less machine-dependent).</p>
 <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#promod3.sidechain.RotamerLib" title="promod3.sidechain.RotamerLib"><code class="xref py py-class docutils literal"><span class="pre">RotamerLib</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 file cannot be opened or if
-file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a> for details).</td>
+file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a> for details).</td>
 </tr>
 </tbody>
 </table>
@@ -92,7 +94,7 @@ file cannot be parsed (see <a class="reference internal" href="../portableIO.htm
 <dt id="promod3.sidechain.RotamerLib.SavePortable">
 <code class="descname">SavePortable</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.RotamerLib.SavePortable" title="Permalink to this definition">¶</a></dt>
 <dd><p>Saves a raw / portable binary representation. Use portable files for
-distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a>
+distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a>
 for details.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -200,7 +202,7 @@ less machine-dependent).</p>
 <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#promod3.sidechain.BBDepRotamerLib" title="promod3.sidechain.BBDepRotamerLib"><code class="xref py py-class docutils literal"><span class="pre">BBDepRotamerLib</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 file cannot be opened or if
-file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a> for details).</td>
+file cannot be parsed (see <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a> for details).</td>
 </tr>
 </tbody>
 </table>
@@ -212,7 +214,7 @@ file cannot be parsed (see <a class="reference internal" href="../portableIO.htm
 <dt id="promod3.sidechain.BBDepRotamerLib.SavePortable">
 <code class="descname">SavePortable</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#promod3.sidechain.BBDepRotamerLib.SavePortable" title="Permalink to this definition">¶</a></dt>
 <dd><p>Saves a raw / portable binary representation. Use portable files for
-distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span>here</span></a>
+distribution and convert locally to raw files. See <a class="reference internal" href="../portableIO.html#portableio"><span class="std std-ref">here</span></a>
 for details.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -438,7 +440,7 @@ standard deviations are 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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -462,7 +464,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="http://www.openstructure.org/docs/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.6.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/dev/mol/base/entity/#ost.mol.ResidueHandle" title="(in OpenStructure v1.7.1)"><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>
@@ -640,9 +642,6 @@ considered similar</li>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -653,8 +652,8 @@ considered similar</li>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/sidechain/rotamer_lib.txt"
diff --git a/doc/html/sidechain/subrotamer_optimizer.html b/doc/html/sidechain/subrotamer_optimizer.html
index 115320995a81dc0ba9270cb4f10ab83b5c8e2759..31b532f3701cba8eadaaffd6b204d6dccb7639c0 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.1.0 documentation</title>
+    <title>Subrotamer Optimization &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,16 +23,18 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="../index.html" />
+    <link rel="top" title="ProMod3 1.2.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" />
    
+  <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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -116,9 +118,6 @@ internal <a class="reference internal" href="graph.html#promod3.sidechain.Rotame
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -129,8 +128,8 @@ internal <a class="reference internal" href="graph.html#promod3.sidechain.Rotame
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/sidechain/subrotamer_optimizer.txt"
diff --git a/doc/html/users.html b/doc/html/users.html
index 2a206b56c716fc91b19016a617ef5596bbb76efc..3b92dda7ae7fbb46698712696d0e147a3de8a08c 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.1.0 documentation</title>
+    <title>Documentation For Users &mdash; ProMod3 1.2.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.1.0',
+        VERSION:     '1.2.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -23,15 +23,17 @@
     <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>
-    <link rel="top" title="ProMod3 1.1.0 documentation" href="index.html" />
+    <link rel="top" title="ProMod3 1.2.0 documentation" href="index.html" />
     <link rel="next" title="Getting Started" href="gettingstarted.html" />
     <link rel="prev" title="Welcome To ProMod3’s 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">
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
 
   </head>
-  <body role="document">  
+  <body role="document">
+  
 
     <div class="document">
       <div class="documentwrapper">
@@ -88,6 +90,7 @@ scripts using the functionality of this library.</p>
 <li class="toctree-l2"><a class="reference internal" href="scoring/backbone_score_env.html">Backbone Score Environment</a></li>
 <li class="toctree-l2"><a class="reference internal" href="scoring/backbone_scorers.html">Backbone Scorers</a></li>
 <li class="toctree-l2"><a class="reference internal" href="scoring/all_atom_scorers.html">All Atom Scorers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="scoring/other_scoring_functions.html">Other Scoring Functions</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="loop/index.html"><code class="docutils literal"><span class="pre">loop</span></code> - Loop Handling</a><ul>
@@ -104,6 +107,7 @@ scripts using the functionality of this library.</p>
 <li class="toctree-l2"><a class="reference internal" href="core/helper.html"><code class="docutils literal"><span class="pre">helper</span></code> - Shared Functionality For the Everything</a></li>
 <li class="toctree-l2"><a class="reference internal" href="core/geometry.html">Geometry functions</a></li>
 <li class="toctree-l2"><a class="reference internal" href="core/runtime_profiling.html">Runtime profiling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="core/graph_minimizer.html">Graph Minimizer</a></li>
 </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>
@@ -140,9 +144,6 @@ scripts using the functionality of this library.</p>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
@@ -153,8 +154,8 @@ scripts using the functionality of this library.</p>
       &copy;2017, ProMod3 authors.
       
       |
-      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
-      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      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/users.txt"