PageRenderTime 66ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/BioLiteManual/_modules/biolite/wrappers.html

https://bitbucket.org/aguang/biolite
HTML | 441 lines | 373 code | 68 blank | 0 comment | 0 complexity | 896a0fe0b02bd06436657e6e6c4349f4 MD5 | raw file
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>biolite.wrappers &mdash; BioLite 0.3.3 documentation</title>
  7. <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
  8. <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
  9. <script type="text/javascript">
  10. var DOCUMENTATION_OPTIONS = {
  11. URL_ROOT: '../../',
  12. VERSION: '0.3.3',
  13. COLLAPSE_INDEX: false,
  14. FILE_SUFFIX: '.html',
  15. HAS_SOURCE: true
  16. };
  17. </script>
  18. <script type="text/javascript" src="../../_static/jquery.js"></script>
  19. <script type="text/javascript" src="../../_static/underscore.js"></script>
  20. <script type="text/javascript" src="../../_static/doctools.js"></script>
  21. <link rel="top" title="BioLite 0.3.3 documentation" href="../../index.html" />
  22. <link rel="up" title="Module code" href="../index.html" />
  23. </head>
  24. <body>
  25. <div class="related">
  26. <h3>Navigation</h3>
  27. <ul>
  28. <li class="right" style="margin-right: 10px">
  29. <a href="../../genindex.html" title="General Index"
  30. accesskey="I">index</a></li>
  31. <li class="right" >
  32. <a href="../../py-modindex.html" title="Python Module Index"
  33. >modules</a> |</li>
  34. <li><a href="../../index.html">BioLite 0.3.3 documentation</a> &raquo;</li>
  35. <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
  36. </ul>
  37. </div>
  38. <div class="document">
  39. <div class="documentwrapper">
  40. <div class="bodywrapper">
  41. <div class="body">
  42. <h1>Source code for biolite.wrappers</h1><div class="highlight"><pre>
  43. <span class="c"># BioLite - Tools for processing gene sequence data and automating workflows</span>
  44. <span class="c"># Copyright (c) 2012-2013 Brown University. All rights reserved.</span>
  45. <span class="c"># </span>
  46. <span class="c"># This file is part of BioLite.</span>
  47. <span class="c"># </span>
  48. <span class="c"># BioLite is free software: you can redistribute it and/or modify</span>
  49. <span class="c"># it under the terms of the GNU General Public License as published by</span>
  50. <span class="c"># the Free Software Foundation, either version 3 of the License, or</span>
  51. <span class="c"># (at your option) any later version.</span>
  52. <span class="c"># </span>
  53. <span class="c"># BioLite is distributed in the hope that it will be useful,</span>
  54. <span class="c"># but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
  55. <span class="c"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
  56. <span class="c"># GNU General Public License for more details.</span>
  57. <span class="c"># </span>
  58. <span class="c"># You should have received a copy of the GNU General Public License</span>
  59. <span class="c"># along with BioLite. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span>
  60. <span class="sd">&quot;&quot;&quot;</span>
  61. <span class="sd">A series of wrappers for external calls to various bioinformatics tools.</span>
  62. <span class="sd">&quot;&quot;&quot;</span>
  63. <span class="kn">import</span> <span class="nn">glob</span>
  64. <span class="kn">import</span> <span class="nn">os</span>
  65. <span class="kn">import</span> <span class="nn">random</span>
  66. <span class="kn">import</span> <span class="nn">shlex</span>
  67. <span class="kn">import</span> <span class="nn">subprocess</span>
  68. <span class="kn">import</span> <span class="nn">sys</span>
  69. <span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">namedtuple</span>
  70. <span class="kn">import</span> <span class="nn">config</span>
  71. <span class="kn">import</span> <span class="nn">diagnostics</span>
  72. <span class="kn">import</span> <span class="nn">utils</span>
  73. <div class="viewcode-block" id="BaseWrapper"><a class="viewcode-back" href="../../wrappers.html#biolite.wrappers.BaseWrapper">[docs]</a><span class="k">class</span> <span class="nc">BaseWrapper</span><span class="p">:</span>
  74. <span class="sd">&quot;&quot;&quot;</span>
  75. <span class="sd"> A base class that handles generic wrapper functionality.</span>
  76. <span class="sd"> </span>
  77. <span class="sd"> Wrappers for specific programs should inherit this class, call `self.init`</span>
  78. <span class="sd"> to specify their `name` (which is a key into the executable entries in the</span>
  79. <span class="sd"> BioLite configuration file), and append their arguments to the `self.args`</span>
  80. <span class="sd"> list.</span>
  81. <span class="sd"> By convention, a wrapper should call `self.run()` as the final line in its</span>
  82. <span class="sd"> `__init__` function. This allows for clean syntax and use of the wrapper</span>
  83. <span class="sd"> directly, without assigning it to a variable name, e.g.</span>
  84. <span class="sd"> wrappers.MyWrapper(arg1, arg2, ...)</span>
  85. <span class="sd"> When your wrapper runs, BaseWrapper will do the following:</span>
  86. <span class="sd"> * log the complete command line to diagnostics;</span>
  87. <span class="sd"> * optionally call the program with a version flag (invoked with `version`)</span>
  88. <span class="sd"> to obtain a version string, then log this to the :ref:`programs-table`</span>
  89. <span class="sd"> along with a hash of the binary executable file;</span>
  90. <span class="sd"> * append the command&#39;s stderr to a file called `name`.log in the CWD;</span>
  91. <span class="sd"> * also append the command&#39;s stdout to the same log file, unless you set</span>
  92. <span class="sd"> `self.stdout`, in which case stdout is redirected to a file of that name;</span>
  93. <span class="sd"> * on Linux, add a memory profiling library to the LD_PRELOAD environment</span>
  94. <span class="sd"> variable;</span>
  95. <span class="sd"> * call the command and check its return code (which should be 0 on success,</span>
  96. <span class="sd"> unless you specify a different code with `self.return_ok`), optionally</span>
  97. <span class="sd"> using the CWD specified in `self.cwd` or the environment specified in</span>
  98. <span class="sd"> `self.env`.</span>
  99. <span class="sd"> * parse the stderr of the command to find [biolite.profile] markers and</span>
  100. <span class="sd"> use the rusage values from `utils.safe_call` to populate a profile</span>
  101. <span class="sd"> entity in the diagnostics with walltime, usertime, systime, mem, and</span>
  102. <span class="sd"> vmem attributes.</span>
  103. <span class="sd"> &quot;&quot;&quot;</span>
  104. <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
  105. <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
  106. <span class="bp">self</span><span class="o">.</span><span class="n">cmd</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">get_command</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
  107. <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="o">=</span> <span class="p">[]</span>
  108. <span class="bp">self</span><span class="o">.</span><span class="n">return_ok</span> <span class="o">=</span> <span class="mi">0</span>
  109. <span class="bp">self</span><span class="o">.</span><span class="n">cwd</span> <span class="o">=</span> <span class="bp">None</span>
  110. <span class="bp">self</span><span class="o">.</span><span class="n">stdout</span> <span class="o">=</span> <span class="bp">None</span>
  111. <span class="bp">self</span><span class="o">.</span><span class="n">env</span> <span class="o">=</span> <span class="bp">None</span>
  112. <span class="bp">self</span><span class="o">.</span><span class="n">max_concurrency</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">maxint</span>
  113. <span class="bp">self</span><span class="o">.</span><span class="n">output_patterns</span> <span class="o">=</span> <span class="bp">None</span>
  114. <span class="n">init</span> <span class="o">=</span> <span class="n">__init__</span>
  115. <span class="sd">&quot;&quot;&quot;A shortcut for calling the BaseWrapper __init__ from a subclass.&quot;&quot;&quot;</span>
  116. <div class="viewcode-block" id="BaseWrapper.check_arg"><a class="viewcode-back" href="../../wrappers.html#biolite.wrappers.BaseWrapper.check_arg">[docs]</a> <span class="k">def</span> <span class="nf">check_arg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">flag</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
  117. <span class="sd">&quot;&quot;&quot;</span>
  118. <span class="sd"> If `value` evaluates to True, append `flag` and `value` to the argument</span>
  119. <span class="sd"> list.</span>
  120. <span class="sd"> &quot;&quot;&quot;</span>
  121. <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
  122. <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">flag</span><span class="p">)</span>
  123. <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
  124. </div>
  125. <div class="viewcode-block" id="BaseWrapper.add_threading"><a class="viewcode-back" href="../../wrappers.html#biolite.wrappers.BaseWrapper.add_threading">[docs]</a> <span class="k">def</span> <span class="nf">add_threading</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">flag</span><span class="p">):</span>
  126. <span class="sd">&quot;&quot;&quot;</span>
  127. <span class="sd"> Indicates that this wrapper should use threading by appending an</span>
  128. <span class="sd"> argument with the specified `flag` followed by the number of threads</span>
  129. <span class="sd"> specified in the BioLite configuration file.</span>
  130. <span class="sd"> &quot;&quot;&quot;</span>
  131. <span class="n">threads</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">get_resource</span><span class="p">(</span><span class="s">&#39;threads&#39;</span><span class="p">)),</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_concurrency</span><span class="p">)</span>
  132. <span class="k">if</span> <span class="n">threads</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
  133. <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">flag</span><span class="p">)</span>
  134. <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">threads</span><span class="p">)</span>
  135. </div>
  136. <div class="viewcode-block" id="BaseWrapper.add_openmp"><a class="viewcode-back" href="../../wrappers.html#biolite.wrappers.BaseWrapper.add_openmp">[docs]</a> <span class="k">def</span> <span class="nf">add_openmp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  137. <span class="sd">&quot;&quot;&quot;</span>
  138. <span class="sd"> Indicates that this wrapper should use OpenMP by setting the</span>
  139. <span class="sd"> $OMP_NUM_THREADS environment variable equal to the number of threads</span>
  140. <span class="sd"> specified in the BioLite configuration file.</span>
  141. <span class="sd"> &quot;&quot;&quot;</span>
  142. <span class="n">threads</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">get_resource</span><span class="p">(</span><span class="s">&#39;threads&#39;</span><span class="p">)),</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_concurrency</span><span class="p">)</span>
  143. <span class="bp">self</span><span class="o">.</span><span class="n">env</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
  144. <span class="bp">self</span><span class="o">.</span><span class="n">env</span><span class="p">[</span><span class="s">&#39;OMP_NUM_THREADS&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">threads</span><span class="p">)</span>
  145. </div>
  146. <div class="viewcode-block" id="BaseWrapper.version"><a class="viewcode-back" href="../../wrappers.html#biolite.wrappers.BaseWrapper.version">[docs]</a> <span class="k">def</span> <span class="nf">version</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">flag</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">cmd</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
  147. <span class="sd">&quot;&quot;&quot;</span>
  148. <span class="sd"> Generates and logs a hash to distinguish this particular installation</span>
  149. <span class="sd"> of the program (on a certain host, with a certain compiler, program</span>
  150. <span class="sd"> version, etc.)</span>
  151. <span class="sd"> Specify the optional &#39;binary&#39; argument if the wrapper name is not</span>
  152. <span class="sd"> actually the program, e.g. if your program has a Perl wrapper script.</span>
  153. <span class="sd"> Set &#39;binary&#39; to the binary program that is likely to change between</span>
  154. <span class="sd"> versions.</span>
  155. <span class="sd"> Specify the optional &#39;cmd&#39; argument if the command to run for version</span>
  156. <span class="sd"> information is different than what will be invoked by `run` (e.g.</span>
  157. <span class="sd"> if the program has a perl wrapper script, but you want to version an</span>
  158. <span class="sd"> underlying binary executable).</span>
  159. <span class="sd"> &quot;&quot;&quot;</span>
  160. <span class="c"># Setup the command to run.</span>
  161. <span class="k">if</span> <span class="ow">not</span> <span class="n">cmd</span><span class="p">:</span>
  162. <span class="n">cmd</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">cmd</span><span class="p">)</span>
  163. <span class="k">if</span> <span class="n">flag</span><span class="p">:</span>
  164. <span class="n">cmd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">flag</span><span class="p">)</span>
  165. <span class="c"># Run the command.</span>
  166. <span class="k">try</span><span class="p">:</span>
  167. <span class="n">vstring</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">check_output</span><span class="p">(</span><span class="n">cmd</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">STDOUT</span><span class="p">)</span>
  168. <span class="k">except</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">CalledProcessError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
  169. <span class="n">vstring</span> <span class="o">=</span> <span class="n">e</span><span class="o">.</span><span class="n">output</span>
  170. <span class="k">except</span> <span class="ne">OSError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
  171. <span class="n">utils</span><span class="o">.</span><span class="n">failed_executable</span><span class="p">(</span><span class="n">cmd</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">e</span><span class="p">)</span>
  172. <span class="k">if</span> <span class="ow">not</span> <span class="n">path</span><span class="p">:</span>
  173. <span class="n">path</span> <span class="o">=</span> <span class="n">cmd</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
  174. <span class="c"># Generate a hash.</span>
  175. <span class="n">vhash</span> <span class="o">=</span> <span class="n">diagnostics</span><span class="o">.</span><span class="n">log_program_version</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">vstring</span><span class="p">,</span> <span class="n">path</span><span class="p">)</span>
  176. <span class="k">if</span> <span class="n">vhash</span><span class="p">:</span>
  177. <span class="n">diagnostics</span><span class="o">.</span><span class="n">prefix</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">name</span><span class="p">)</span>
  178. <span class="n">diagnostics</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&#39;version&#39;</span><span class="p">,</span> <span class="n">vhash</span><span class="p">)</span>
  179. <span class="n">diagnostics</span><span class="o">.</span><span class="n">prefix</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
  180. </div>
  181. <div class="viewcode-block" id="BaseWrapper.version_jar"><a class="viewcode-back" href="../../wrappers.html#biolite.wrappers.BaseWrapper.version_jar">[docs]</a> <span class="k">def</span> <span class="nf">version_jar</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  182. <span class="sd">&quot;&quot;&quot;</span>
  183. <span class="sd"> Special case of version() when the executable is a JAR file.</span>
  184. <span class="sd"> &quot;&quot;&quot;</span>
  185. <span class="n">cmd</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">get_command</span><span class="p">(</span><span class="s">&#39;java&#39;</span><span class="p">)</span>
  186. <span class="n">cmd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;-jar&#39;</span><span class="p">)</span>
  187. <span class="n">cmd</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmd</span>
  188. <span class="bp">self</span><span class="o">.</span><span class="n">version</span><span class="p">(</span><span class="n">cmd</span><span class="o">=</span><span class="n">cmd</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">cmd</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
  189. </div>
  190. <div class="viewcode-block" id="BaseWrapper.run"><a class="viewcode-back" href="../../wrappers.html#biolite.wrappers.BaseWrapper.run">[docs]</a> <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
  191. <span class="sd">&quot;&quot;&quot;</span>
  192. <span class="sd"> Call this function at the end of your class&#39;s `__init__` function.</span>
  193. <span class="sd"> &quot;&quot;&quot;</span>
  194. <span class="k">if</span> <span class="ow">not</span> <span class="n">cmd</span><span class="p">:</span>
  195. <span class="n">cmd</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmd</span>
  196. <span class="n">diagnostics</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&#39;command_executable&#39;</span><span class="p">,</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>
  197. <span class="n">cmd</span> <span class="o">+=</span> <span class="nb">map</span><span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span>
  198. <span class="n">diagnostics</span><span class="o">.</span><span class="n">prefix</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">name</span><span class="p">)</span>
  199. <span class="n">diagnostics</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&#39;command&#39;</span><span class="p">,</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>
  200. <span class="n">diagnostics</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&#39;command_list&#39;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">cmd</span><span class="p">))</span>
  201. <span class="n">stderr_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="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s">&#39;.log&#39;</span><span class="p">)</span>
  202. <span class="n">stderr_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">stderr_path</span><span class="p">,</span> <span class="s">&#39;a&#39;</span><span class="p">)</span>
  203. <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">stderr_file</span><span class="p">,</span> <span class="s">&quot;[biolite] timestamp=</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">utils</span><span class="o">.</span><span class="n">timestamp</span><span class="p">()</span>
  204. <span class="n">stderr_file</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
  205. <span class="n">diagnostics</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&#39;log&#39;</span><span class="p">,</span> <span class="n">stderr_path</span><span class="p">)</span>
  206. <span class="c"># Write to a stdout file if it was set by the derived class.</span>
  207. <span class="c"># Otherwise, stdout and stderr will be combined into the log file.</span>
  208. <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">stdout</span><span class="p">:</span>
  209. <span class="n">stdout_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stdout</span><span class="p">,</span> <span class="s">&#39;w&#39;</span><span class="p">)</span>
  210. <span class="n">diagnostics</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&#39;stdout&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">stdout</span><span class="p">)</span>
  211. <span class="k">else</span><span class="p">:</span>
  212. <span class="n">stdout_file</span> <span class="o">=</span> <span class="n">stderr_file</span>
  213. <span class="c"># Setup memory profiling on Linux.</span>
  214. <span class="k">if</span> <span class="n">config</span><span class="o">.</span><span class="n">kernel</span> <span class="o">==</span> <span class="s">&#39;Linux&#39;</span><span class="p">:</span>
  215. <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">env</span><span class="p">:</span>
  216. <span class="bp">self</span><span class="o">.</span><span class="n">env</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
  217. <span class="n">old_preload</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">env</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;LD_PRELOAD&#39;</span><span class="p">)</span>
  218. <span class="bp">self</span><span class="o">.</span><span class="n">env</span><span class="p">[</span><span class="s">&#39;LD_PRELOAD&#39;</span><span class="p">]</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">config</span><span class="o">.</span><span class="n">libdir</span><span class="p">,</span> <span class="s">&#39;libmemusage.so&#39;</span><span class="p">)</span>
  219. <span class="k">if</span> <span class="n">old_preload</span><span class="p">:</span>
  220. <span class="bp">self</span><span class="o">.</span><span class="n">env</span><span class="p">[</span><span class="s">&#39;LD_PRELOAD&#39;</span><span class="p">]</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="n">old_preload</span>
  221. <span class="n">diagnostics</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&quot;LD_PRELOAD&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">env</span><span class="p">[</span><span class="s">&#39;LD_PRELOAD&#39;</span><span class="p">])</span>
  222. <span class="n">retcode</span><span class="p">,</span> <span class="n">walltime</span><span class="p">,</span> <span class="n">rusage</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">safe_call</span><span class="p">(</span>
  223. <span class="n">cmd</span><span class="p">,</span>
  224. <span class="n">stdout</span><span class="o">=</span><span class="n">stdout_file</span><span class="p">,</span>
  225. <span class="n">stderr</span><span class="o">=</span><span class="n">stderr_file</span><span class="p">,</span>
  226. <span class="n">cwd</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">cwd</span><span class="p">,</span>
  227. <span class="n">return_ok</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">return_ok</span><span class="p">,</span>
  228. <span class="n">env</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">env</span><span class="p">)</span>
  229. <span class="c"># Log profile.</span>
  230. <span class="n">diagnostics</span><span class="o">.</span><span class="n">prefix</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;profile&#39;</span><span class="p">)</span>
  231. <span class="n">diagnostics</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&#39;name&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
  232. <span class="n">diagnostics</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&#39;return&#39;</span><span class="p">,</span> <span class="n">retcode</span><span class="p">)</span>
  233. <span class="n">diagnostics</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&#39;walltime&#39;</span><span class="p">,</span> <span class="n">walltime</span><span class="p">)</span>
  234. <span class="n">diagnostics</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&#39;usertime&#39;</span><span class="p">,</span> <span class="n">rusage</span><span class="o">.</span><span class="n">ru_utime</span><span class="p">)</span>
  235. <span class="n">diagnostics</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&#39;systime&#39;</span><span class="p">,</span> <span class="n">rusage</span><span class="o">.</span><span class="n">ru_stime</span><span class="p">)</span>
  236. <span class="k">if</span> <span class="n">config</span><span class="o">.</span><span class="n">kernel</span> <span class="o">==</span> <span class="s">&#39;Darwin&#39;</span><span class="p">:</span>
  237. <span class="n">diagnostics</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&#39;mem&#39;</span><span class="p">,</span> <span class="n">rusage</span><span class="o">.</span><span class="n">ru_maxrss</span> <span class="o">/</span> <span class="mi">1024</span><span class="p">)</span>
  238. <span class="n">diagnostics</span><span class="o">.</span><span class="n">prefix</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
  239. <span class="n">stderr_file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
  240. <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">stdout</span><span class="p">:</span>
  241. <span class="n">stdout_file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
  242. <span class="c"># Reverse any output patterns, since they will be matched against</span>
  243. <span class="c"># program output from the last line backward.</span>
  244. <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">output_patterns</span><span class="p">:</span>
  245. <span class="bp">self</span><span class="o">.</span><span class="n">output_patterns</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span>
  246. <span class="n">diagnostics</span><span class="o">.</span><span class="n">log_program_output</span><span class="p">(</span><span class="n">stderr_path</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">output_patterns</span><span class="p">)</span>
  247. <span class="n">diagnostics</span><span class="o">.</span><span class="n">prefix</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
  248. </div>
  249. <div class="viewcode-block" id="BaseWrapper.run_jar"><a class="viewcode-back" href="../../wrappers.html#biolite.wrappers.BaseWrapper.run_jar">[docs]</a> <span class="k">def</span> <span class="nf">run_jar</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mem</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
  250. <span class="sd">&quot;&quot;&quot;</span>
  251. <span class="sd"> Special case of run() when the executable is a JAR file.</span>
  252. <span class="sd"> &quot;&quot;&quot;</span>
  253. <span class="n">cmd</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">get_command</span><span class="p">(</span><span class="s">&#39;java&#39;</span><span class="p">)</span>
  254. <span class="k">if</span> <span class="n">mem</span><span class="p">:</span>
  255. <span class="n">cmd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;-Xmx</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">mem</span><span class="p">)</span>
  256. <span class="n">cmd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;-jar&#39;</span><span class="p">)</span>
  257. <span class="n">cmd</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmd</span>
  258. <span class="bp">self</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">cmd</span><span class="p">)</span>
  259. </div></div>
  260. <div class="viewcode-block" id="estimate_insert_size"><a class="viewcode-back" href="../../wrappers.html#biolite.wrappers.estimate_insert_size">[docs]</a><span class="k">def</span> <span class="nf">estimate_insert_size</span><span class="p">():</span>
  261. <span class="sd">&quot;&quot;&quot;</span>
  262. <span class="sd"> For tools that need insert sizes, use available estimates from the</span>
  263. <span class="sd"> diagnostics database, or resort to the default values in the BioLite</span>
  264. <span class="sd"> configuration file.</span>
  265. <span class="sd"> Returns an AttributeDict with the fields `mean`, `stddev` and `max`.</span>
  266. <span class="sd"> &quot;&quot;&quot;</span>
  267. <span class="n">entity</span> <span class="o">=</span> <span class="n">diagnostics</span><span class="o">.</span><span class="n">INSERT_SIZE</span>
  268. <span class="n">size</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">AttributeDict</span><span class="p">()</span>
  269. <span class="c"># Try the diagnostics cache, if the estimate is from an earlier stage</span>
  270. <span class="c"># of the current pipeline.</span>
  271. <span class="n">size</span><span class="o">.</span><span class="n">mean</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">diagnostics</span><span class="o">.</span><span class="n">local_lookup</span><span class="p">(</span><span class="n">entity</span><span class="p">)</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;mean&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
  272. <span class="n">size</span><span class="o">.</span><span class="n">stddev</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">diagnostics</span><span class="o">.</span><span class="n">local_lookup</span><span class="p">(</span><span class="n">entity</span><span class="p">)</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;stddev&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
  273. <span class="n">size</span><span class="o">.</span><span class="n">max</span> <span class="o">=</span> <span class="mi">0</span>
  274. <span class="k">if</span> <span class="ow">not</span> <span class="n">size</span><span class="o">.</span><span class="n">mean</span><span class="p">:</span>
  275. <span class="c"># Search the global diagnostics database (passing None to lookup_by_id</span>
  276. <span class="c"># will use the currently initialized id in diagnostics.</span>
  277. <span class="n">values</span> <span class="o">=</span> <span class="n">diagnostics</span><span class="o">.</span><span class="n">lookup_by_id</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="n">entity</span><span class="p">)</span>
  278. <span class="n">size</span><span class="o">.</span><span class="n">mean</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">values</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;mean&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
  279. <span class="n">size</span><span class="o">.</span><span class="n">stddev</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">values</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;stddev&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
  280. <span class="k">if</span> <span class="ow">not</span> <span class="n">size</span><span class="o">.</span><span class="n">mean</span><span class="p">:</span>
  281. <span class="n">size</span><span class="o">.</span><span class="n">mean</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">get_resource</span><span class="p">(</span><span class="s">&#39;max_insert_size&#39;</span><span class="p">))</span>
  282. <span class="n">size</span><span class="o">.</span><span class="n">stddev</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">get_resource</span><span class="p">(</span><span class="s">&#39;mean_insert_size&#39;</span><span class="p">))</span>
  283. <span class="k">if</span> <span class="ow">not</span> <span class="n">size</span><span class="o">.</span><span class="n">max</span><span class="p">:</span>
  284. <span class="n">size</span><span class="o">.</span><span class="n">max</span> <span class="o">=</span> <span class="n">size</span><span class="o">.</span><span class="n">mean</span> <span class="o">+</span> \
  285. <span class="n">size</span><span class="o">.</span><span class="n">stddev</span> <span class="o">*</span> <span class="nb">int</span><span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">get_resource</span><span class="p">(</span><span class="s">&#39;max_insert_stddev&#39;</span><span class="p">))</span>
  286. <span class="k">return</span> <span class="n">size</span>
  287. <span class="c">### BioLite command line tools ###</span>
  288. </div>
  289. <div class="viewcode-block" id="CountLines"><a class="viewcode-back" href="../../wrappers.html#biolite.wrappers.CountLines">[docs]</a><span class="k">class</span> <span class="nc">CountLines</span> <span class="p">(</span><span class="n">BaseWrapper</span><span class="p">):</span>
  290. <span class="sd">&quot;&quot;&quot;</span>
  291. <span class="sd"> usage: count_lines [-t THREADS] [INPUT ...]</span>
  292. <span class="sd"> Count the number of lines in the INPUT files using multiple threads to</span>
  293. <span class="sd"> increase throughput.</span>
  294. <span class="sd"> &quot;&quot;&quot;</span>
  295. <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">inputs</span><span class="p">):</span>
  296. <span class="bp">self</span><span class="o">.</span><span class="n">init</span><span class="p">(</span><span class="s">&#39;count_lines&#39;</span><span class="p">)</span>
  297. <span class="bp">self</span><span class="o">.</span><span class="n">version</span><span class="p">(</span><span class="s">&#39;-v&#39;</span><span class="p">)</span>
  298. <span class="bp">self</span><span class="o">.</span><span class="n">add_threading</span><span class="p">(</span><span class="s">&#39;-t&#39;</span><span class="p">)</span>
  299. <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="o">+=</span> <span class="n">inputs</span>
  300. <span class="bp">self</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
  301. </div>
  302. <div class="viewcode-block" id="Coverage"><a class="viewcode-back" href="../../wrappers.html#biolite.wrappers.Coverage">[docs]</a><span class="k">class</span> <span class="nc">Coverage</span> <span class="p">(</span><span class="n">BaseWrapper</span><span class="p">):</span>
  303. <span class="sd">&quot;&quot;&quot;</span>
  304. <span class="sd"> usage: coverage [-i SAM] [-o STATS]</span>
  305. <span class="sd"> Parses a SAM alignment file and writes a coverage table to STATS with</span>
  306. <span class="sd"> columns for the reference name, the length of the referene, and the number</span>
  307. <span class="sd"> of reads covering it in the alignment.</span>
  308. <span class="sd"> &quot;&quot;&quot;</span>
  309. <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sam</span><span class="p">,</span> <span class="n">stats</span><span class="p">):</span>
  310. <span class="bp">self</span><span class="o">.</span><span class="n">init</span><span class="p">(</span><span class="s">&#39;coverage&#39;</span><span class="p">)</span>
  311. <span class="bp">self</span><span class="o">.</span><span class="n">version</span><span class="p">(</span><span class="s">&#39;-v&#39;</span><span class="p">)</span>
  312. <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="o">+=</span> <span class="p">(</span><span class="s">&#39;-i&#39;</span><span class="p">,</span> <span class="n">sam</span><span class="p">)</span>
  313. <span class="bp">self</span><span class="o">.</span><span class="n">stdout</span> <span class="o">=</span> <span class="n">stats</span>
  314. <span class="bp">self</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
  315. </div>
  316. <div class="viewcode-block" id="Exclude"><a class="viewcode-back" href="../../wrappers.html#biolite.wrappers.Exclude">[docs]</a><span class="k">class</span> <span class="nc">Exclude</span> <span class="p">(</span><span class="n">BaseWrapper</span><span class="p">):</span>
  317. <span class="sd">&quot;&quot;&quot;</span>
  318. <span class="sd"> usage: exclude -x EXCLUDE_FILE [-k] [...] [-i INPUT ...] [-o OUTPUT ...]</span>
  319. <span class="sd"> Filters all the reads in the input files (FASTA or FASTQ is automatically</span>
  320. <span class="sd"> detected) and excludes those with ids found in any of the EXCLUDE_FILEs.</span>
  321. <span class="sd"> If multiple input files are specified, these are treated as paired files.</span>
  322. <span class="sd"> So if a sequence in one input is excluded, its pair is also excluded from</span>
  323. <span class="sd"> the same position in all other input files.</span>
  324. <span class="sd"> If the -k flag is specified, invert the selection to keep instead of exclude.</span>
  325. <span class="sd"> &quot;&quot;&quot;</span>
  326. <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exclude_files</span><span class="p">,</span> <span class="n">input_files</span><span class="p">,</span> <span class="n">output_files</span><span class="p">,</span> <span class="n">keep</span> <span class="o">=</span> <span class="bp">False</span><span class="p">):</span>
  327. <span class="bp">self</span><span class="o">.</span><span class="n">init</span><span class="p">(</span><span class="s">&#39;exclude&#39;</span><span class="p">)</span>
  328. <span class="bp">self</span><span class="o">.</span><span class="n">version</span><span class="p">(</span><span class="s">&#39;-v&#39;</span><span class="p">)</span>
  329. <span class="k">if</span> <span class="n">keep</span><span class="p">:</span>
  330. <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="o">+=</span> <span class="p">(</span><span class="s">&#39;-k&#39;</span><span class="p">,)</span>
  331. <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">exclude_files</span><span class="p">:</span>
  332. <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="o">+=</span> <span class="p">(</span><span class="s">&#39;-x&#39;</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
  333. <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">input_files</span><span class="p">[:</span><span class="mi">2</span><span class="p">]:</span>
  334. <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="o">+=</span> <span class="p">(</span><span class="s">&#39;-i&#39;</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
  335. <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">output_files</span><span class="p">[:</span><span class="mi">2</span><span class="p">]:</span>
  336. <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="o">+=</span> <span class="p">(</span><span class="s">&#39;-o&#39;</span><span class="p">,</span> <span class="n">o</span><span class="p">)</span>
  337. <span class="bp">self</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
  338. </div>
  339. <div class="viewcode-block" id="Fastq2Fasta"><a class="viewcode-back" href="../../wrappers.html#biolite.wrappers.Fastq2Fasta">[docs]</a><span class="k">class</span> <span class="nc">Fastq2Fasta</span> <span class="p">(</span><span class="n">BaseWrapper</span><span class="p">):</span>
  340. <span class="sd">&quot;&quot;&quot;</span>
  341. <span class="sd"> usage: fastq2fasta -i FASTQ [...] [-o FASTA ...] [-q QUAL ...] [-a]</span>
  342. <span class="sd"> [-t OFFSET] [-s SUFFIX]</span>
  343. <span class="sd"> Converts each FASTQ input file to a FASTA file and quality score file</span>
  344. <span class="sd"> with the names &lt;basename&gt;.fasta and &lt;basename&gt;.fasta.qual, where &lt;basename&gt;</span>
  345. <span class="sd"> is the name of INPUT up to the last period (or with the names FASTA and QUAL</span>
  346. <span class="sd"> if specified).</span>
  347. <span class="sd"> FASTA and QUAL are *appended* to (not truncated).</span>
  348. <span class="sd"> &quot;&quot;&quot;</span>
  349. <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fastq_path</span><span class="p">,</span> <span class="n">fasta_path</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">qual_path</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">suffix</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
  350. <span class="bp">self</span><span class="o">.</span><span class="n">init</span><span class="p">(</span><span class="s">&#39;fastq2fasta&#39;</span><span class="p">)</span>
  351. <span class="bp">self</span><span class="o">.</span><span class="n">version</span><span class="p">(</span><span class="s">&#39;-v&#39;</span><span class="p">)</span>
  352. <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="o">+=</span> <span class="p">(</span><span class="s">&#39;-i&#39;</span><span class="p">,</span> <span class="n">fastq_path</span><span class="p">)</span>
  353. <span class="bp">self</span><span class="o">.</span><span class="n">check_arg</span><span class="p">(</span><span class="s">&#39;-o&#39;</span><span class="p">,</span> <span class="n">fasta_path</span><span class="p">)</span>
  354. <span class="bp">self</span><span class="o">.</span><span class="n">check_arg</span><span class="p">(</span><span class="s">&#39;-q&#39;</span><span class="p">,</span> <span class="n">qual_path</span><span class="p">)</span>
  355. <span class="bp">self</span><span class="o">.</span><span class="n">check_arg</span><span class="p">(</span><span class="s">&#39;-s&#39;</span><span class="p">,</span> <span class="n">suffix</span><span class="p">)</span>
  356. <span class="bp">self</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
  357. </div>
  358. <div class="viewcode-block" id="Fasta2Fastq"><a class="viewcode-back" href="../../wrappers.html#biolite.wrappers.Fasta2Fastq">[docs]</a><span class="k">class</span> <span class="nc">Fasta2Fastq</span> <span class="p">(</span><span class="n">BaseWrapper</span><span class="p">):</span>
  359. <span class="sd">&quot;&quot;&quot;</span>
  360. <span class="sd"> usage: fasta2fastq -i FASTA [...] -q QUAL [...] [-o FASTQ] [-a] [-t OFFSET]</span>
  361. <span class="sd"> Merges each FASTA file and its corresponding QUAL file into a FASTQ file</span>
  362. <span class="sd"> with the name &lt;basename&gt;.fastq, where &lt;basename&gt; in the FASTA name up to the</span>
  363. <span class="sd"> last period (or with name FASTQ if specified).</span>
  364. <span class="sd"> FASTQ is *appended* to (not truncated).</span>
  365. <span class="sd"> &quot;&quot;&quot;</span>
  366. <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fasta_path</span><span class="p">,</span> <span class="n">qual_path</span><span class="p">,</span> <span class="n">fastq_path</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
  367. <span class="bp">self</span><span class="o">.</span><span class="n">init</span><span class="p">(</span><span class="s">&#39;fasta2fastq&#39;</span><span class="p">)</span>
  368. <span class="bp">self</span><span class="o">.</span><span class="n">version</span><span class="p">(</span><span class="s">&#39;-v&#39;</span><span class="p">)</span>
  369. <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="o">+=</span> <span class="p">(</span><span class="s">&#39;-i&#39;</span><span class="p">,</span> <span class="n">fasta_path</span><span class="p">,</span> <span class="s">&#39;-q&#39;</span><span class="p">,</span> <span class="n">qual_path</span><span class="p">)</span>
  370. <span class="bp">self</span><span class="o">.</span><span class="n">check_arg</span><span class="p">(</span><span class="s">&#39;-o&#39;</span><span class="p">,</span> <span class="n">fastq_path</span><span class="p">)</span>
  371. <span class="bp">self</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
  372. </div>
  373. <div class="viewcode-block" id="FilterIllumina"><a class="viewcode-back" href="../../wrappers.html#biolite.wrappers.FilterIllumina">[docs]</a><span class="k">class</span> <span class="nc">FilterIllum