Skip to content
Snippets Groups Projects
Commit 95bc6f86 authored by Bienchen's avatar Bienchen
Browse files

Updated Documentation

parent 0e5ab846
No related branches found
No related tags found
No related merge requests found
...@@ -83,6 +83,7 @@ ...@@ -83,6 +83,7 @@
<ul><li><a href="promod3/loop/_loop.html">promod3.loop._loop</a></li> <ul><li><a href="promod3/loop/_loop.html">promod3.loop._loop</a></li>
</ul><li><a href="promod3/pipeline/run_engine.html">promod3.pipeline.run_engine</a></li> </ul><li><a href="promod3/pipeline/run_engine.html">promod3.pipeline.run_engine</a></li>
<li><a href="promod3/rawmodel/_closedels.html">promod3.rawmodel._closedels</a></li> <li><a href="promod3/rawmodel/_closedels.html">promod3.rawmodel._closedels</a></li>
<li><a href="promod3/rawmodel/_closegaps.html">promod3.rawmodel._closegaps</a></li>
<li><a href="promod3/rawmodel/_rawmodel.html">promod3.rawmodel._rawmodel</a></li> <li><a href="promod3/rawmodel/_rawmodel.html">promod3.rawmodel._rawmodel</a></li>
<li><a href="promod3/sidechain/_sidechain.html">promod3.sidechain._sidechain</a></li> <li><a href="promod3/sidechain/_sidechain.html">promod3.sidechain._sidechain</a></li>
<li><a href="promod3/sidechain/reconstruct_sidechains.html">promod3.sidechain.reconstruct_sidechains</a></li> <li><a href="promod3/sidechain/reconstruct_sidechains.html">promod3.sidechain.reconstruct_sidechains</a></li>
......
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>promod3.rawmodel._closegaps &mdash; ProMod3 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: '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 0 documentation" href="../../../index.html" />
<link rel="up" title="promod3" href="../../promod3.html" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9">
</head>
<body role="document">
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">ProMod3 0 documentation</a> &raquo;</li>
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> &raquo;</li>
<li class="nav-item nav-item-2"><a href="../../promod3.html" accesskey="U">promod3</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for promod3.rawmodel._closegaps</h1><div class="highlight"><pre>
<span class="sd">&#39;&#39;&#39;Single function to be &#39;injected&#39; into the RawModellingResult class in the</span>
<span class="sd">__init__.py file.</span>
<span class="sd">&#39;&#39;&#39;</span>
<span class="kn">import</span> <span class="nn">ost</span>
<span class="c">#pylint: disable=no-name-in-module</span>
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">_rawmodel</span> <span class="k">as</span> <span class="n">rawmodel</span>
<span class="kn">from</span> <span class="nn">promod3</span> <span class="kn">import</span> <span class="n">loop</span>
<span class="k">def</span> <span class="nf">_CloseSmallDeletions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">scorer</span><span class="p">,</span> <span class="n">extension_steps</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="sd">&#39;&#39;&#39;Close small deletions by relaxing neighbouring residues.</span>
<span class="sd"> Small deletions in the template from the target-template alignment have a</span>
<span class="sd"> good chance to be bridged just by relaxing neighbours around a tiny gap.</span>
<span class="sd"> Before diving into the more demanding tasks in modeling, those may be closed</span>
<span class="sd"> already in the raw-model. After closure some checks are done to see if the</span>
<span class="sd"> solution is stereochemically sensible.</span>
<span class="sd"> Closed gaps are removed from :attr:`self.gaps`.</span>
<span class="sd"> .. testcode:: closesmalldel</span>
<span class="sd"> :hide:</span>
<span class="sd"> from promod3 import rawmodel</span>
<span class="sd"> from promod3 import loop</span>
<span class="sd"> tpl = ost.io.LoadPDB(&#39;../tests/rawmodel/data/raw-modeling/gly.pdb&#39;)</span>
<span class="sd"> aln = ost.seq.CreateAlignment(ost.seq.CreateSequence(&#39;trg&#39;, &#39;GGG-GGG&#39;),</span>
<span class="sd"> ost.seq.CreateSequence(&#39;tpl&#39;, &#39;GGGAGGG&#39;))</span>
<span class="sd"> aln.AttachView(1, tpl.CreateFullView())</span>
<span class="sd"> rmodel = rawmodel.BuildRawModel(aln)</span>
<span class="sd"> assert len(rmodel.gaps) == 1</span>
<span class="sd"> scorer = loop.SetupBackboneScorer(rmodel)</span>
<span class="sd"> rmodel.CloseSmallDeletions(scorer)</span>
<span class="sd"> assert len(rmodel.gaps) == 0</span>
<span class="sd"> .. doctest:: closesmalldel</span>
<span class="sd"> import ost</span>
<span class="sd"> from promod3 import rawmodel</span>
<span class="sd"> from promod3 import loop</span>
<span class="sd"> tpl = ost.io.LoadPDB(&#39;gly.pdb&#39;)</span>
<span class="sd"> aln = ost.io.LoadAlignment(&#39;seq.fasta&#39;)</span>
<span class="sd"> aln.AttachView(1, tpl.CreateFullView())</span>
<span class="sd"> rmodel = rawmodel.BuildRawModel(aln)</span>
<span class="sd"> scorer = loop.SetupBackboneScorer(rmodel)</span>
<span class="sd"> rmodel.CloseSmallDeletions(scorer)</span>
<span class="sd"> :param scorer: A scorer dedicated to this raw model.</span>
<span class="sd"> :type scorer: :class:`~promod3.loop.BackboneLoopScorer`</span>
<span class="sd"> :param extension_steps: Iterations allowed for gap extension. This does not</span>
<span class="sd"> directly mean &#39;extended size of gap&#39; but no. of</span>
<span class="sd"> attempts to extend. Extension works like trying to</span>
<span class="sd"> increase left, then right, then try more on the</span>
<span class="sd"> left side again...</span>
<span class="sd"> :type extension_steps: :class:`int`</span>
<span class="sd"> :param clash_thresh: Threshold for the clash score, acceptance means being</span>
<span class="sd"> lower than this.</span>
<span class="sd"> :type clash_thresh: :class:`float`</span>
<span class="sd"> :param e_thresh: Potential energy should be lower than this.</span>
<span class="sd"> :type e_thresh: :class:`float`</span>
<span class="sd"> :return: If gaps are deleted, the scorer needs to be updated and is</span>
<span class="sd"> returned.</span>
<span class="sd"> :rtype: :class:`~promod3.loop.BackboneLoopScorer`</span>
<span class="sd"> &#39;&#39;&#39;</span>
<span class="n">current_gap_index</span> <span class="o">=</span> <span class="mi">0</span>
<span class="c"># iterating self.gaps. The number of gaps may change during the process,</span>
<span class="c"># hence we run by &#39;while&#39;, breaking out once we&#39;ve seen all gaps. If a gap</span>
<span class="c"># gets closed, it is deleted from self.gaps, otherwise, current_gap_index</span>
<span class="c"># as a counter is increased.</span>
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
<span class="c"># check if all gaps were visited</span>
<span class="k">if</span> <span class="n">current_gap_index</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">gaps</span><span class="p">):</span>
<span class="k">break</span>
<span class="c"># 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"># 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 caracters, the template not.</span>
<span class="c"># 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="bp">self</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">seq</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="c"># 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="bp">self</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="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="n">extender</span> <span class="o">=</span> <span class="n">rawmodel</span><span class="o">.</span><span class="n">GapExtender</span><span class="p">(</span><span class="n">current_gap</span><span class="p">)</span>
<span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">extension_steps</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="n">res_list</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
<span class="n">current_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">after_resnum</span> <span class="o">=</span> <span class="n">current_gap</span><span class="o">.</span><span class="n">after</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">()</span>
<span class="n">found_residues</span> <span class="o">=</span> <span class="bp">True</span>
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
<span class="k">if</span> <span class="n">current_resnum</span> <span class="o">&gt;</span> <span class="n">after_resnum</span><span class="p">:</span>
<span class="k">break</span>
<span class="n">res</span> <span class="o">=</span> <span class="n">current_chain</span><span class="o">.</span><span class="n">FindResidue</span><span class="p">(</span><span class="n">current_resnum</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">res</span><span class="o">.</span><span class="n">IsValid</span><span class="p">():</span>
<span class="n">found_residues</span> <span class="o">=</span> <span class="bp">False</span>
<span class="k">break</span>
<span class="n">res_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
<span class="n">current_resnum</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="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">loop</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">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">scorer</span><span class="o">.</span><span class="n">CalculateClashScore</span><span class="p">(</span>\
<span class="n">bb_list</span><span class="p">,</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="o">.</span><span class="n">GetNum</span><span class="p">(),</span>
<span class="n">current_chain_index</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="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">scorer</span><span class="o">.</span><span class="n">TransOmegaTorsions</span><span class="p">(</span><span class="n">bb_list</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;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="p">(</span><span class="bp">self</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">chain</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">GetChain</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">chain</span><span class="p">,</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">current_gap</span><span class="o">.</span><span class="n">after</span><span class="o">.</span><span class="n">GetNumber</span><span class="p">())</span>
<span class="n">scorer</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">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="o">.</span><span class="n">GetNum</span><span class="p">())</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ClearGaps</span><span class="p">(</span><span class="n">current_gap</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="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>
<span class="k">return</span> <span class="n">scorer</span>
<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="c"># LocalWords: modeling stereochemically param</span>
</pre></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<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>
<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>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2015, Bienchen.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.3</a>
</div>
</body>
</html>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment