<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Introduction on mbf-fastq-processor documentation</title><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/</link><description>Recent content in Introduction on mbf-fastq-processor documentation</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://tyberiusprime.github.io/fastqrab/v0.8.1/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/cli/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/cli/</guid><description>&lt;h1 id="command-line-interface">
 Command line interface
 &lt;a class="anchor" href="#command-line-interface">#&lt;/a>
&lt;/h1>
&lt;p>mbf-fastq-processor is configured exclusively through a TOML document. The CLI is therefore intentionally minimal and focuses on selecting the configuration and the working directory.&lt;/p>
&lt;h2 id="usage">
 Usage
 &lt;a class="anchor" href="#usage">#&lt;/a>
&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>mbf-fastq-processor process [config.toml] [--allow-overwrite]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mbf-fastq-processor template
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mbf-fastq-processor interactive [config.toml]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="process">
 Process
 &lt;a class="anchor" href="#process">#&lt;/a>
&lt;/h3>
&lt;p>Process FASTQ as described in &amp;lt;config.toml&amp;gt;.(see the &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/toml/">TOML format reference&lt;/a>).
Relative paths are resolved against the current shell directory.&lt;/p>
&lt;p>The config.toml argument can be left off iff there&amp;rsquo;s one .toml in the current directory, and it contains an [input] and an [output] section&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/input-section/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/input-section/</guid><description>&lt;h1 id="input-section">
 Input section
 &lt;a class="anchor" href="#input-section">#&lt;/a>
&lt;/h1>
&lt;p>The &lt;code>[input]&lt;/code> table enumerates all read sources that make up a fragment.
At least one segment must be declared.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6e22e">input&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">read1&lt;/span> = [&lt;span style="color:#e6db74">&amp;#39;fileA_1.fastq&amp;#39;&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;fileB_1.fastq.gz&amp;#39;&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;fileC_1.fastq.zst&amp;#39;&lt;/span>] &lt;span style="color:#75715e"># required: one or more paths&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">read2&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;fileA_2.fastq.gz&amp;#34;&lt;/span> &lt;span style="color:#75715e"># optional&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">index1&lt;/span> = [&lt;span style="color:#e6db74">&amp;#39;index1_A.fastq.gz&amp;#39;&lt;/span>] &lt;span style="color:#75715e"># optional&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># interleaved = [...] # optional, see below&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Key&lt;/th>
 &lt;th>Required&lt;/th>
 &lt;th>Value type&lt;/th>
 &lt;th>Notes&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>segment name (e.g. &lt;code>read1&lt;/code>)&lt;/td>
 &lt;td>Yes (at least one)&lt;/td>
 &lt;td>string or array of strings&lt;/td>
 &lt;td>Each unique key defines a segment; arrays concatenate multiple files in order.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>interleaved&lt;/code>&lt;/td>
 &lt;td>No&lt;/td>
 &lt;td>array of strings&lt;/td>
 &lt;td>Enables interleaved reading; must list segment names in their in-file order.&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>Additional points:&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/output-section/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/output-section/</guid><description>&lt;h1 id="output-section">
 Output section
 &lt;a class="anchor" href="#output-section">#&lt;/a>
&lt;/h1>
&lt;p>The &lt;code>[output]&lt;/code> table controls how transformed reads and reporting artefacts are written.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6e22e">output&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">prefix&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;output&amp;#34;&lt;/span> &lt;span style="color:#75715e"># required.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">format&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Fastq&amp;#34;&lt;/span>, &lt;span style="color:#75715e"># (optional) output format, defaults to &amp;#39;Fastq&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>					 &lt;span style="color:#75715e"># Valid values are: Fastq, Fasta, BAM and None (for no sequence output)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">compression&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Gzip&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Raw | Uncompressed | Gzip | Zstd | None (default: Raw)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">suffix&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;.fq.gz&amp;#34;&lt;/span> &lt;span style="color:#75715e"># optional override; inferred from format when omitted&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">compression_level&lt;/span> = &lt;span style="color:#ae81ff">6&lt;/span> &lt;span style="color:#75715e"># gzip: 0-9, zstd: 1-22, bam: 0-9 (BGZF); defaults are gzip=6, zstd=5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">ix_separator&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;_&amp;#34;&lt;/span> &lt;span style="color:#75715e"># optional separator between prefix, infixes, and segments. Defaults to &amp;#39;_&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">report_json&lt;/span> = &lt;span style="color:#66d9ef">false&lt;/span> &lt;span style="color:#75715e"># write prefix.json&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">report_html&lt;/span> = &lt;span style="color:#66d9ef">true&lt;/span> &lt;span style="color:#75715e"># write prefix.html&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">output&lt;/span> = [&lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;read2&amp;#34;&lt;/span>] &lt;span style="color:#75715e"># limit which segments become FASTQ files&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">interleave&lt;/span> = &lt;span style="color:#66d9ef">false&lt;/span> &lt;span style="color:#75715e"># emit a single interleaved FASTQ&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">stdout&lt;/span> = &lt;span style="color:#66d9ef">false&lt;/span> &lt;span style="color:#75715e"># stream to stdout instead of files&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">chunk_size&lt;/span> = &lt;span style="color:#ae81ff">100000&lt;/span> &lt;span style="color:#75715e"># Write multiple, numbered output files, each a maximum of chunk_size reads/molecules.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">output_hash_uncompressed&lt;/span> = &lt;span style="color:#66d9ef">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">output_hash_compressed&lt;/span> = &lt;span style="color:#66d9ef">false&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Key&lt;/th>
 &lt;th>Default&lt;/th>
 &lt;th>Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>prefix&lt;/code>&lt;/td>
 &lt;td>&lt;code>&amp;quot;output&amp;quot;&lt;/code>&lt;/td>
 &lt;td>Base name for all files produced by the run.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>format&lt;/code>&lt;/td>
 &lt;td>&lt;code>&amp;quot;Fastq&amp;quot;&lt;/code>&lt;/td>
 &lt;td>Output format. Valid values are: &lt;code>Fastq&lt;/code>, &lt;code>Fasta&lt;/code>, &lt;code>Bam&lt;/code>, and &lt;code>None&lt;/code> (for no sequence output).&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>compression&lt;/code>&lt;/td>
 &lt;td>&lt;code>&amp;quot;Uncompressed&amp;quot;&lt;/code>&lt;/td>
 &lt;td>Compression format for read outputs. Valid values are: &lt;code>Gzip&lt;/code>, &lt;code>Zstd&lt;/code>, &lt;code>Uncompressed&lt;/code> (alias: &lt;code>&amp;quot;Raw&amp;quot;&lt;/code>). Must not be set for BAM&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>suffix&lt;/code>&lt;/td>
 &lt;td>derived from format&lt;/td>
 &lt;td>Override file extension when interop with other tooling demands a specific suffix.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>compression_level&lt;/code>&lt;/td>
 &lt;td>gzip: 6, zstd: 5&lt;/td>
 &lt;td>Fine-tune compression effort. Ignored for &lt;code>Raw&lt;/code>/&lt;code>None&lt;/code>. &lt;code>Bam&lt;/code> maps directly to the BGZF level (0–9).&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>report_json&lt;/code> / &lt;code>report_html&lt;/code>&lt;/td>
 &lt;td>&lt;code>false&lt;/code>&lt;/td>
 &lt;td>Toggle structured or interactive reports.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>output&lt;/code>&lt;/td>
 &lt;td>all input segments&lt;/td>
 &lt;td>Restrict the subset of segments written to disk. Use an empty list to suppress FASTQs while still running steps that depend on fragment data.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>interleave&lt;/code>&lt;/td>
 &lt;td>&lt;code>false&lt;/code>&lt;/td>
 &lt;td>Generate a single interleaved FASTQ (&lt;code>{prefix}_interleaved.fq*&lt;/code>).&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>stdout&lt;/code>&lt;/td>
 &lt;td>&lt;code>false&lt;/code>&lt;/td>
 &lt;td>Write to stdout. Forces &lt;code>format = &amp;quot;Raw&amp;quot;&lt;/code>. &lt;code>Sets interleave=true&lt;/code> if more than one fragment is listed in &lt;code>output&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>output_hash_uncompressed&lt;/code> / &lt;code>output_hash_compressed&lt;/code>&lt;/td>
 &lt;td>&lt;code>false&lt;/code>&lt;/td>
 &lt;td>Emit SHA-256 checksums.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>ix_separator&lt;/code>&lt;/td>
 &lt;td>&lt;code>&amp;quot;_&amp;quot;&lt;/code>&lt;/td>
 &lt;td>Separator inserted between &lt;code>prefix&lt;/code>, any infix (demultiplex labels, inspect names, etc.), and segment names.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>chunk_size&lt;/code>&lt;/td>
 &lt;td>(unlimited)&lt;/td>
 &lt;td>Split outputs into multiple files, each containing at most &lt;code>chunk_size&lt;/code> reads/molecules. For non-interleaved output files, it&amp;rsquo;s &lt;code>chunk_size&lt;/code> reads, for interleaved files it&amp;rsquo;s molecules. This means when mixing interleaved and non-interleaved output, you get the same number of files. Files are numbered sequentially, e.g. &lt;code>output_read1_0.fq.gz&lt;/code>, &amp;hellip;, Numbers start at 0 and use the minimum number of (base 10) digits necessary for alphabetical sorting (by renaming already produced files whenever an extension is needed).&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>Generated filenames join these components with &lt;code>ix_separator&lt;/code> (default &lt;code>_&lt;/code>), e.g. &lt;code>{prefix}_{segment}{suffix}&lt;/code>. Interleaving replaces &lt;code>segment&lt;/code> with &lt;code>interleaved&lt;/code>; demultiplexing adds per-barcode infixes before the segment. Checksums use &lt;code>.uncompressed.sha256&lt;/code> or &lt;code>.compressed.sha256&lt;/code> suffixes.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/filter-steps/filterbytag/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/filter-steps/filterbytag/</guid><description>&lt;h1 id="filterbytag">
 FilterByTag
 &lt;a class="anchor" href="#filterbytag">#&lt;/a>
&lt;/h1>
&lt;p>This transformation filters molecules based on the presence or absence of a specified tag.&lt;/p>
&lt;p>Use &amp;ldquo;Keep&amp;rdquo; to retain molecules that have the tag, or &amp;ldquo;Remove&amp;rdquo; to discard reads that have the tag.&lt;/p>
&lt;p>If used on a boolean tag, the boolean value of the tag is used to determine whether to keep or remove the read.&lt;/p>
&lt;p>For numeric tags, use &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/filter-steps/filterbynumerictag/">FilterByNumericTag&lt;/a>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;FilterByTag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">keep_or_remove&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Keep&amp;#34;&lt;/span> &lt;span style="color:#75715e"># or &amp;#34;Remove&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/report-steps/report/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/report-steps/report/</guid><description>&lt;h1 id="report">
 Report
 &lt;a class="anchor" href="#report">#&lt;/a>
&lt;/h1>
&lt;p>Capture data for the final report (see &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/output-section/">the output section&lt;/a>).&lt;/p>
&lt;p>You can add multiple reports, at any stage of your transformation chain
to get e.g. before/after filtering reports.&lt;/p>
&lt;p>&lt;a href="../../../../html/example_report.html">Example report&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;Report&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;report&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Key that the report will be listed under. Must be distinct&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">count&lt;/span> = &lt;span style="color:#66d9ef">true&lt;/span> &lt;span style="color:#75715e"># count reads at this position&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">base_statistics&lt;/span> = &lt;span style="color:#66d9ef">false&lt;/span> &lt;span style="color:#75715e"># include base distribution at each read position, q20, q30, total, gc bases&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">length_distribution&lt;/span> = &lt;span style="color:#66d9ef">false&lt;/span> &lt;span style="color:#75715e"># capture read length distribution&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">duplicate_count_per_read&lt;/span> = &lt;span style="color:#66d9ef">false&lt;/span> &lt;span style="color:#75715e"># count duplicates using Cukoo filter on each read1/read2/index1/index2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">duplicate_count_per_fragment&lt;/span> = &lt;span style="color:#66d9ef">false&lt;/span> &lt;span style="color:#75715e"># count duplicates using Cukoo filter, on concatenated read1/read2/index1/index2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">count_oligos&lt;/span> = [] &lt;span style="color:#75715e"># if set, count these oligos in the segment. Full match only, no iupac&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">count_oligos_segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;all&amp;#34;&lt;/span> &lt;span style="color:#75715e"># segment to count oligos in, can be &amp;#39;all&amp;#39;, &amp;#39;read1&amp;#39;, ...&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Statistics available (for each &amp;lsquo;segment&amp;rsquo;. If demultiplexd, per barcode combination):&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/demultiplex/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/demultiplex/</guid><description>&lt;h2 id="demultiplexed-output">
 Demultiplexed output
 &lt;a class="anchor" href="#demultiplexed-output">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/demultiplex/">Demultiplex&lt;/a> is a magic transformation that forks the output.&lt;/p>
&lt;p>You receive one set of output files per barcode (combination) defined.&lt;/p>
&lt;p>Transformations downstream are (virtually) duplicated,
so you can for example filter to the head reads in each barcode,
and get reports for both: all reads and each separate barcode.&lt;/p>
&lt;p>Demultiplexing can be done on barcodes, or on boolean tags.&lt;/p>
&lt;h3 id="based-on-barcodes">
 Based on barcodes
 &lt;a class="anchor" href="#based-on-barcodes">#&lt;/a>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Demultiplex&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">barcodes&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mybarcodes&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">output_unmatched&lt;/span> = &lt;span style="color:#66d9ef">true&lt;/span> &lt;span style="color:#75715e"># if set, write reads not matching any barcode&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># to a file like ouput_prefix_no-barcode_1.fq&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6e22e">barcodes&lt;/span>.&lt;span style="color:#a6e22e">mybarcodes&lt;/span>] &lt;span style="color:#75715e"># can be before and after.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># separate multiple regions with a _&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># a Mapping of barcode -&amp;gt; output name.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">AAAAAA_CCCCCC&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;sample-1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># output files are named prefix{ix_separator}barcode_prefix{ix_separator}segment.suffix&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># with the separator defaulting to &amp;#39;_&amp;#39;, e.g. output_sample-1_1.fq.gz&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># or output_sample-1_report.fq.gz&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="based-on-boolean-tags">
 Based on boolean tags
 &lt;a class="anchor" href="#based-on-boolean-tags">#&lt;/a>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;TagOtherFileByName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;a_bool_tag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">filename&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;path/to/boolean_tags.tsv&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">false_positive_rate&lt;/span> = &lt;span style="color:#ae81ff">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Demultiplex&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;a_bool_tag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Note that this does not
extract the barcodes from the read
(use an extract step, such as &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractregion/">ExtractRegion&lt;/a>).&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/filter-steps/filterbynumerictag/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/filter-steps/filterbynumerictag/</guid><description>&lt;h1 id="filterbynumerictag">
 FilterByNumericTag
 &lt;a class="anchor" href="#filterbynumerictag">#&lt;/a>
&lt;/h1>
&lt;p>Remove molecules by thresholding on numeric tag.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;CalcLength&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;FilterByNumericTag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">keep_or_remove&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Keep&amp;#34;&lt;/span> &lt;span style="color:#75715e"># or &amp;#34;Remove&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">min_value&lt;/span> = &lt;span style="color:#ae81ff">5&lt;/span> &lt;span style="color:#75715e"># &amp;gt;= this, optional&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">max_value&lt;/span> = &lt;span style="color:#ae81ff">21&lt;/span> &lt;span style="color:#75715e"># &amp;lt; this, optional&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The example only keeps reads that are between 5 and 20 bases long.&lt;/p>
&lt;p>Consider using an &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/tag-steps/convert/evalexpression/">EvalExpression&lt;/a> for more complicated decisions.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/filter-steps/filterempty/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/filter-steps/filterempty/</guid><description>&lt;h2 id="filterempty">
 FilterEmpty
 &lt;a class="anchor" href="#filterempty">#&lt;/a>
&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;FilterEmpty&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments, or &amp;#39;All&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Drop the molecule if the read has length 0.
(Use after other processing.)&lt;/p>
&lt;p>This get&amp;rsquo;s expanded to an internal tag and a FilteryByNumeric.&lt;/p>
&lt;p>This is necessary if your modification can produce &amp;rsquo;empty'
reads - downstream aligners like STAR tend to dislike these in their input.&lt;/p>
&lt;p>On segment=&amp;lsquo;All&amp;rsquo;, only filters reads that are empty in all parts.
Use multiple &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/filter-steps/filterempty/">FilterEmpty&lt;/a> steps to filter if any part is empty.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/postfix/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/postfix/</guid><description>&lt;h1 id="postfix">
 Postfix
 &lt;a class="anchor" href="#postfix">#&lt;/a>
&lt;/h1>
&lt;p>Add DNA to the end of read sequences.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Postfix&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">seq&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;agtc&amp;#34;&lt;/span> &lt;span style="color:#75715e"># DNA sequence to add at end of reads. Checked to be agtcn&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">qual&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;IIII&amp;#34;&lt;/span> &lt;span style="color:#75715e"># same length as seq. Your responsibility to have valid phred values&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation adds a specified sequence and corresponding quality scores to the end of reads.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/prefix/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/prefix/</guid><description>&lt;h1 id="prefix">
 Prefix
 &lt;a class="anchor" href="#prefix">#&lt;/a>
&lt;/h1>
&lt;p>Add text to the beginning of read sequences.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Prefix&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">seq&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;agtTCAa&amp;#34;&lt;/span> &lt;span style="color:#75715e"># DNA sequence to add at beginning of reads. Checked to be agtcn&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">qual&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;IIIBIII&amp;#34;&lt;/span> &lt;span style="color:#75715e"># same length as seq. Your responsibility to have valid phred values&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation adds a specified sequence and corresponding quality scores to the beginning of reads.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/replacetagwithletter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/replacetagwithletter/</guid><description>&lt;h1 id="replacetagwithletter">
 ReplaceTagWithLetter
 &lt;a class="anchor" href="#replacetagwithletter">#&lt;/a>
&lt;/h1>
&lt;p>Replace sequence bases in tagged regions with a specified letter.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ReplaceTagWithLetter&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Tag containing regions to replace&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">letter&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;N&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Replacement character (defaults to &amp;#39;N&amp;#39;)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation replaces all sequence bases within the regions defined by a tag with a specified replacement character. Quality scores are preserved unchanged. This is commonly used to mask low-quality regions as &amp;lsquo;N&amp;rsquo; characters.&lt;/p>
&lt;h2 id="parameters">
 Parameters
 &lt;a class="anchor" href="#parameters">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;code>in_label&lt;/code>: Name of the tag containing regions to be replaced&lt;/li>
&lt;li>&lt;code>letter&lt;/code>: Single character to replace bases with (defaults to &amp;lsquo;N&amp;rsquo; if not specified)&lt;/li>
&lt;/ul>
&lt;h2 id="example-use-cases">
 Example Use Cases
 &lt;a class="anchor" href="#example-use-cases">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>Mask low-quality bases identified by &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractregionsoflowquality/">ExtractRegionsOfLowQuality&lt;/a>&lt;/li>
&lt;li>Replace specific sequence motifs identified by other extraction steps&lt;/li>
&lt;li>Convert tagged regions to ambiguous bases for downstream analysis&lt;/li>
&lt;/ul>
&lt;p>The tag must have been created by a previous extraction step and must contain location information.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/trimattag/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/trimattag/</guid><description>&lt;h1 id="trimattag">
 TrimAtTag
 &lt;a class="anchor" href="#trimattag">#&lt;/a>
&lt;/h1>
&lt;p>Trim the read at the position of a tag.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;TrimAtTag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">direction&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Start&amp;#34;&lt;/span> &lt;span style="color:#75715e"># or &amp;#34;End&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">keep_tag&lt;/span> = &lt;span style="color:#66d9ef">false&lt;/span> &lt;span style="color:#75715e"># if true, the tag sequence is kept in the read&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation trims the read at the position where a tag was found.&lt;/p>
&lt;p>The &lt;code>direction&lt;/code> parameter determines whether to trim from the start or end of the tag,
and &lt;code>keep_tag&lt;/code> determines whether the tag sequence itself is retained.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/report-steps/quantifytag/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/report-steps/quantifytag/</guid><description>&lt;h1 id="quantifytag">
 QuantifyTag
 &lt;a class="anchor" href="#quantifytag">#&lt;/a>
&lt;/h1>
&lt;p>Count the occurrences of each tag-sequence.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;QuantifyTag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">infix&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;tagcount&amp;#34;&lt;/span> &lt;span style="color:#75715e"># output file is output{ix_separator}tagcount.qr.json (default &amp;#39;_&amp;#39; → output_tagcount.qr.json)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation counts how many times each unique tag value appears and outputs the results to a JSON file.&lt;/p>
&lt;h3 id="demultiplex-interaction">
 Demultiplex interaction
 &lt;a class="anchor" href="#demultiplex-interaction">#&lt;/a>
&lt;/h3>
&lt;p>Barcodes are counted per demultiplexed stream.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calclength/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calclength/</guid><description>&lt;h1 id="calclength">
 CalcLength
 &lt;a class="anchor" href="#calclength">#&lt;/a>
&lt;/h1>
&lt;p>Extract the length of a read as a tag.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;CalcLength&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments, or &amp;#39;All&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation creates a tag containing the length of the specified read.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractanchor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractanchor/</guid><description>&lt;h1 id="extractanchor">
 ExtractAnchor
 &lt;a class="anchor" href="#extractanchor">#&lt;/a>
&lt;/h1>
&lt;p>Extract regions relative to a previously tagged anchor position.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># First create an anchor tag. Iupac, regex, ExtractRegion, your choice.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ExtractIUPAC&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">search&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;CAYA&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;anchor_tag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">anchor&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Anywhere&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">max_mismatches&lt;/span> = &lt;span style="color:#ae81ff">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Then extract relative to that anchor&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ExtractAnchor&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;anchor_tag&amp;#34;&lt;/span> &lt;span style="color:#75715e"># tag that provides the anchor position&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">regions&lt;/span> = [[&lt;span style="color:#ae81ff">-2&lt;/span>, &lt;span style="color:#ae81ff">4&lt;/span>], [&lt;span style="color:#ae81ff">4&lt;/span>, &lt;span style="color:#ae81ff">1&lt;/span>]] &lt;span style="color:#75715e"># [start, length] pairs relative to anchor&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">region_separator&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;_&amp;#34;&lt;/span> &lt;span style="color:#75715e"># (optional) separator between regions&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation uses the leftmost position of a previously established tag as the anchor point and extracts specified regions relative to that position.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractregex/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractregex/</guid><description>&lt;h1 id="extractregex">
 ExtractRegex
 &lt;a class="anchor" href="#extractregex">#&lt;/a>
&lt;/h1>
&lt;p>Extract a regexp result. Stores an empty string if not found.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ExtractRegex&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">search&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;^CT(..)CT&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">replacement&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;$1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># standard regex replacement syntax&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">source&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># An input segment (to read from sequence), or name:&amp;lt;segment&amp;gt; to read from a tag&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation searches for a regular expression pattern in the specified read and extracts the matching portion as a tag.&lt;/p>
&lt;p>The value actually &amp;rsquo;extracted&amp;rsquo; is after replacement has been performed.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractregion/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractregion/</guid><description>&lt;h1 id="extractregion">
 ExtractRegion
 &lt;a class="anchor" href="#extractregion">#&lt;/a>
&lt;/h1>
&lt;p>Extract a fixed position region.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ExtractRegion&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">start&lt;/span> = &lt;span style="color:#ae81ff">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">length&lt;/span> = &lt;span style="color:#ae81ff">8&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;umi&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation extracts a fixed-length region from the specified read at a given position and stores it as a tag.&lt;/p>
&lt;p>Use &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractregions/">ExtractRegions&lt;/a> if your region is actually multiple regions (possibly from different segments).&lt;/p>
&lt;p>If the read is shorter than requested, the region will be shorter (and might be of varying length).&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractregions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractregions/</guid><description>&lt;h1 id="extractregions">
 ExtractRegions
 &lt;a class="anchor" href="#extractregions">#&lt;/a>
&lt;/h1>
&lt;p>Extract from multiple fixed position regions.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ExtractRegions&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">regions&lt;/span> = [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {&lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span>, &lt;span style="color:#a6e22e">start&lt;/span> = &lt;span style="color:#ae81ff">0&lt;/span>, &lt;span style="color:#a6e22e">length&lt;/span> = &lt;span style="color:#ae81ff">8&lt;/span>},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {&lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span>, &lt;span style="color:#a6e22e">start&lt;/span> = &lt;span style="color:#ae81ff">12&lt;/span>, &lt;span style="color:#a6e22e">length&lt;/span> = &lt;span style="color:#ae81ff">4&lt;/span>},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;barcode&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation extracts multiple fixed-length regions from reads and concatenates them into a single tag.&lt;/p>
&lt;p>ExtractRegions with only one region are exactly equivalent to &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractregion/">ExtractRegion&lt;/a>.&lt;/p>
&lt;p>If the read is shorter than requested, the region will be shorter (and might be of varying length).&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractregionsoflowquality/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractregionsoflowquality/</guid><description>&lt;h1 id="extractregionsoflowquality">
 ExtractRegionsOfLowQuality
 &lt;a class="anchor" href="#extractregionsoflowquality">#&lt;/a>
&lt;/h1>
&lt;p>Extract regions (min size 1 bp) where bases have quality scores below threshold.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ExtractRegionsOfLowQuality&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">min_quality&lt;/span> = &lt;span style="color:#ae81ff">60&lt;/span> &lt;span style="color:#75715e"># Quality threshold (Phred+33)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;low_quality_regions&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation scans through quality scores of the specified segment and identifies contiguous regions where quality scores are below the specified threshold. Each low-quality region becomes a tagged region with location information (start position and length).&lt;/p>
&lt;h2 id="parameters">
 Parameters
 &lt;a class="anchor" href="#parameters">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;code>segment&lt;/code>: Which read to analyze for low-quality regions&lt;/li>
&lt;li>&lt;code>min_quality&lt;/code>: Quality score threshold using Phred+33 encoding. See &lt;a href="https://en.wikipedia.org/wiki/Phred_quality_score#Symbols">Phred quality score&lt;/a> for ASCII character mapping&lt;/li>
&lt;li>&lt;code>out_label&lt;/code>: Tag name to store the extracted regions&lt;/li>
&lt;/ul>
&lt;h2 id="example">
 Example
 &lt;a class="anchor" href="#example">#&lt;/a>
&lt;/h2>
&lt;p>With &lt;code>min_quality = 60&lt;/code> (ASCII &amp;lsquo;&amp;lt;&amp;rsquo;), any bases with quality scores below &amp;lsquo;&amp;lt;&amp;rsquo; will be identified as low-quality regions. This is useful for masking or filtering poor-quality sequences.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/tag/tagotherfilebyname/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/tag/tagotherfilebyname/</guid><description>&lt;h1 id="tagotherfilebyname">
 TagOtherFileByName
 &lt;a class="anchor" href="#tagotherfilebyname">#&lt;/a>
&lt;/h1>
&lt;p>Mark reads based on wether names are present in another file.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;TagOtherFileByName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># which segment&amp;#39;s name are we using&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;present_in_other&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">filename&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;names.fastq&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Can read fastq (also compressed), or SAM/BAM, or fasta files&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">false_positive_rate&lt;/span> = &lt;span style="color:#ae81ff">0.01&lt;/span> &lt;span style="color:#75715e"># false positive rate (0..1)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">seed&lt;/span> = &lt;span style="color:#ae81ff">42&lt;/span> &lt;span style="color:#75715e"># seed for randomness&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">ignore_unaligned&lt;/span> = &lt;span style="color:#66d9ef">false&lt;/span> &lt;span style="color:#75715e"># in case of BAM/SAM, whether to ignore unaligned reads. Mapped reads are always considered&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">fastq_readname_end_char&lt;/span> = &lt;span style="color:#e6db74">&amp;#34; &amp;#34;&lt;/span> &lt;span style="color:#75715e"># (optional) char (byte value) at which to cut input fastq read names before comparing. If not set, no cutting is done.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">reference_readname_end_char&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;/&amp;#34;&lt;/span> &lt;span style="color:#75715e"># (optional) char (byte value) at which to cut reference read names before storing them.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This step marks reads by comparing their names against names from another file.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/tag/tagotherfilebysequence/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/tag/tagotherfilebysequence/</guid><description>&lt;h1 id="tagotherfilebysequence">
 TagOtherFileBySequence
 &lt;a class="anchor" href="#tagotherfilebysequence">#&lt;/a>
&lt;/h1>
&lt;p>Marks reads based on wether sequences are present in another file.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;TagOtherFileBySequence&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;present_in_other_file&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">filename&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;names.fastq&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Can read fastq (also compressed), or SAM/BAM, or fasta files&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">false_positive_rate&lt;/span> = &lt;span style="color:#ae81ff">0.01&lt;/span> &lt;span style="color:#75715e"># false positive rate (0..1)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">seed&lt;/span> = &lt;span style="color:#ae81ff">42&lt;/span> &lt;span style="color:#75715e"># seed for randomness&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">ignore_unaligned&lt;/span> = &lt;span style="color:#66d9ef">false&lt;/span> &lt;span style="color:#75715e"># in case of BAM/SAM, whether to ignore unaligned reads. Mapped reads are always considered&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This step annotates reads by comparing their sequences against sequences from another file.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/forgetalltags/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/forgetalltags/</guid><description>&lt;h1 id="forgetalltags">
 ForgetAllTags
 &lt;a class="anchor" href="#forgetalltags">#&lt;/a>
&lt;/h1>
&lt;p>Remove every tag currently stored for the read batch.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ForgetAllTags&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Use this when you want to clear all tag labels before continuing.
It is handy after persisting tags to an external table, or before running
steps that must not see previously extracted metadata.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/forgettag/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/forgettag/</guid><description>&lt;h1 id="forgettag">
 ForgetTag
 &lt;a class="anchor" href="#forgettag">#&lt;/a>
&lt;/h1>
&lt;p>Forget about a tag. Useful if you want to store tags in a table, but not this one.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ForgetTag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation removes a specified tag from the molecule&amp;rsquo;s tag collection.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/storetagincomment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/storetagincomment/</guid><description>&lt;h1 id="storetagincomment">
 StoreTagInComment
 &lt;a class="anchor" href="#storetagincomment">#&lt;/a>
&lt;/h1>
&lt;p>Store currently present tags as comments on read names.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;StoreTagInComment&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span> &lt;span style="color:#75715e"># if set, only store this tag&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments, or &amp;#39;All&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">comment_insert_char&lt;/span> = &lt;span style="color:#e6db74">&amp;#34; &amp;#34;&lt;/span> &lt;span style="color:#75715e"># (optional) char at which to insert comments&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">comment_separator&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;|&amp;#34;&lt;/span> &lt;span style="color:#75715e"># (optional) char to separate comments&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">region_separator&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;_&amp;#34;&lt;/span> &lt;span style="color:#75715e"># (optional) char to separate regions in a tag, if it has multiple&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Comments are key=value pairs, separated by &lt;code>comment_separator&lt;/code> which defaults to &amp;lsquo;|&amp;rsquo;.
They get inserted before the first &lt;code>comment_insert_char&lt;/code>, which defaults to space.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/storetaginsequence/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/storetaginsequence/</guid><description>&lt;h1 id="storetaginsequence">
 StoreTagInSequence
 &lt;a class="anchor" href="#storetaginsequence">#&lt;/a>
&lt;/h1>
&lt;p>Store the tag&amp;rsquo;s replacement in the sequence, replacing the original sequence at that location.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;StoreTagInSequence&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">ignore_missing&lt;/span> = &lt;span style="color:#66d9ef">true&lt;/span> &lt;span style="color:#75715e"># if false, an error is raised if the tag is missing&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation stores the tag&amp;rsquo;s value back into the sequence, replacing the original sequence at that location.&lt;/p>
&lt;p>Note that if this changes the length of the sequence, existing location tags will loose their location data (retaining their sequence though).&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/storetaglocationincomment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/storetaglocationincomment/</guid><description>&lt;h1 id="storetaglocationincomment">
 StoreTagLocationInComment
 &lt;a class="anchor" href="#storetaglocationincomment">#&lt;/a>
&lt;/h1>
&lt;p>Store the coordinates of a tag in the comment (start-end, 0-based, half-open).&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;StoreTagLocationInComment&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments, or &amp;#39;All&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">comment_insert_char&lt;/span> = &lt;span style="color:#e6db74">&amp;#34; &amp;#34;&lt;/span> &lt;span style="color:#75715e"># (optional) char at which to insert comments&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">comment_separator&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;|&amp;#34;&lt;/span> &lt;span style="color:#75715e"># (optional) char to separate comments&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation stores the location coordinates of a tag as a comment in the read name, useful for tracking where tags were extracted from.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/storetagsintable/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/storetagsintable/</guid><description>&lt;h1 id="storetagsintable">
 StoreTagsInTable
 &lt;a class="anchor" href="#storetagsintable">#&lt;/a>
&lt;/h1>
&lt;p>Store the tags in a TSV table.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;StoreTagsInTable&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">infix&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;tags&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">compression&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Raw&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Raw, Gzip, Zstd&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">region_separator&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;_&amp;#34;&lt;/span> &lt;span style="color:#75715e"># (optional) char to separate regions in a tag, if it has multiple&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation writes all current tags to a tab-separated values (TSV) table file for further analysis.&lt;/p>
&lt;p>The output filename is constructed as &lt;code>{prefix}_{infix}.tsv&lt;/code> (or with custom separator if configured).&lt;/p>
&lt;h3 id="interaction-with-demultiplexing">
 Interaction with demultiplexing
 &lt;a class="anchor" href="#interaction-with-demultiplexing">#&lt;/a>
&lt;/h3>
&lt;p>When demultiplexing is used, separate TSV files are created for each barcode: &lt;code>{prefix}_{infix}_{barcode}.tsv&lt;/code>.&lt;/p></description></item><item><title>Extract IUPAC</title><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractiupac/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractiupac/</guid><description>&lt;h1 id="extractiupac">
 ExtractIUPAC
 &lt;a class="anchor" href="#extractiupac">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ExtractIUPAC&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">anchor&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;Left&amp;#39;&lt;/span> &lt;span style="color:#75715e"># Left | Right | Anywhere&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">search&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;CTN&amp;#34;&lt;/span> &lt;span style="color:#75715e"># what we are searching&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;read1&amp;#39;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Search and extract a sequence from the read, defined by a &lt;a href="https://doi.org/10.1093%2Fnar%2F13.9.3021">IUPAC string&lt;/a>.&lt;/p>
&lt;p>If anchor = &amp;lsquo;Anywhere&amp;rsquo;, ExtractIUPAC will find the left most occurance.&lt;/p></description></item><item><title>Extract IUPAC suffix</title><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractiupacsuffix/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractiupacsuffix/</guid><description>&lt;h1 id="extractiupacsuffix">
 ExtractIUPACSuffix
 &lt;a class="anchor" href="#extractiupacsuffix">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ExtractIUPACSuffix&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">query&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;AGTCA&amp;#34;&lt;/span> &lt;span style="color:#75715e"># the adapter to trim. Straigth bases only, no IUPAC.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments (default: read1)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">min_length&lt;/span> = &lt;span style="color:#ae81ff">3&lt;/span> &lt;span style="color:#75715e"># uint, the minimum length of match between the end of the read and&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># the start of the adapter&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">max_mismatches&lt;/span> = &lt;span style="color:#ae81ff">1&lt;/span> &lt;span style="color:#75715e"># How many mismatches to accept&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Find a potentially truncated &lt;a href="https://doi.org/10.1093%2Fnar%2F13.9.3021">IUPAC string&lt;/a> sequence at the end of a read.&lt;/p>
&lt;p>Simple comparison with a max mismatch hamming distance, requiring only the first min length
bases of the query to match at the end of the read.&lt;/p></description></item><item><title>Extract IUPAC with Indels</title><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractiupacwithindel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractiupacwithindel/</guid><description>&lt;h1 id="extractiupacwithindel">
 ExtractIUPACWithIndel
 &lt;a class="anchor" href="#extractiupacwithindel">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ExtractIUPACWithIndel&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;adapter&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">search&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;AGTC&amp;#34;&lt;/span> &lt;span style="color:#75715e"># IUPAC pattern to align against&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">max_mismatches&lt;/span> = &lt;span style="color:#ae81ff">1&lt;/span> &lt;span style="color:#75715e"># allowed substitutions (IUPAC-aware)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">max_indel_bases&lt;/span> = &lt;span style="color:#ae81ff">1&lt;/span> &lt;span style="color:#75715e"># total insertions + deletions allowed&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">max_total_edits&lt;/span> = &lt;span style="color:#ae81ff">2&lt;/span> &lt;span style="color:#75715e"># optional overall edit ceiling&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">anchor&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;Anywhere&amp;#39;&lt;/span> &lt;span style="color:#75715e"># Left | Right | Anywhere&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;read1&amp;#39;&lt;/span> &lt;span style="color:#75715e"># defaults to read1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Locate an &lt;a href="https://doi.org/10.1093%2Fnar%2F13.9.3021">IUPAC&lt;/a> pattern even when the read contains small insertions or deletions relative to the pattern. The extractor performs a semiglobal alignment (pattern vs. read segment) using IUPAC-aware scoring and returns the aligned span as a location tag.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/storetaginfastq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/storetaginfastq/</guid><description>&lt;h1 id="storetaginfastq">
 StoreTagInFastQ
 &lt;a class="anchor" href="#storetaginfastq">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Store the content of a tag in a fastq file.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Needs a &amp;#39;location &amp;#39;tag&amp;#39;.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Can store other tags in the read name.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># quality scores are set to &amp;#39;~&amp;#39;.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># With demultiplexing: creates separate files per barcode&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;StoreTagInFastQ&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span> &lt;span style="color:#75715e"># tag to store. If no infix is set, infix = tag={in_label}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">format&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Fastq&amp;#34;&lt;/span> &lt;span style="color:#75715e"># FASTQ / FASTA / BAm&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">compression&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;gz&amp;#34;&lt;/span> &lt;span style="color:#75715e"># or &amp;#34;zstd&amp;#34; | &amp;#34;none&amp;#34; # (optional) compression format, not if format == BAM&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">compression_level&lt;/span> = &lt;span style="color:#ae81ff">6&lt;/span> &lt;span style="color:#75715e"># (optional) compression level for gzip (0-9) or zstd (1-22)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 					 &lt;span style="color:#75715e"># defaults: gzip=6, zstd=5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">comment_tags&lt;/span> = []&lt;span style="color:#75715e"># e.g. [&amp;#34;other_tag&amp;#34;] # see StoreTagInComment&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">comment_location_tags&lt;/span> = [&lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>] &lt;span style="color:#75715e"># (optional) tags to add location info for, defaults to [in_label]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># set to [] to disable location tracking&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">comment_insert_char&lt;/span> = &lt;span style="color:#e6db74">&amp;#39; &amp;#39;&lt;/span> &lt;span style="color:#75715e"># (optional) char at which to insert comments&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">comment_separator&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;|&amp;#39;&lt;/span> &lt;span style="color:#75715e"># (optional) char to separate comments&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">region_separator&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;_&amp;#34;&lt;/span> &lt;span style="color:#75715e"># (optional) char to separate regions in a tag, if it has multiple&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Store the sequence of a tag in a fastq file,
with other tags optionally stored in the read name as comments.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calcexpectederror/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calcexpectederror/</guid><description>&lt;h1 id="calcexpectederror">
 CalcExpectedError
 &lt;a class="anchor" href="#calcexpectederror">#&lt;/a>
&lt;/h1>
&lt;p>Compute aggregated per-base error probabilities (expected errors) for each read assuming PHRED+33 qualities.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;CalcExpectedError&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;expected_error&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">aggregate&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;sum&amp;#34;&lt;/span> &lt;span style="color:#75715e"># or &amp;#34;max&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments, or &amp;#39;All&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If your data is not encoded as Phred+33, convert it first (for example, with &lt;code>ConvertQuality&lt;/code>) before running this step. Values outside of the Phred+33 range will lead to an stop with an error.&lt;/p>
&lt;p>Set &lt;code>aggregate = &amp;quot;sum&amp;quot;&lt;/code> to calculate the sum of per-base error probabilities.
Use &lt;code>aggregate = &amp;quot;max&amp;quot;&lt;/code> to store only the worst base&amp;rsquo;s error probability for each read or read pair.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/convert/convertregionstolength/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/convert/convertregionstolength/</guid><description>&lt;h1 id="convertregionstolength">
 ConvertRegionsToLength
 &lt;a class="anchor" href="#convertregionstolength">#&lt;/a>
&lt;/h1>
&lt;p>Turn region tags (such as those produced by &lt;code>ExtractRegion&lt;/code>/&lt;code>ExtractRegions&lt;/code>) into numeric length tags.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ExtractRegion&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;adapter&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">start&lt;/span> = &lt;span style="color:#ae81ff">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">len&lt;/span> = &lt;span style="color:#ae81ff">12&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ConvertRegionsToLength&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;adapter_len&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;adapter&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>The new tag stores the total span (in bases) covered by all regions on each read.&lt;/li>
&lt;li>Reads without the source tag receive a length of &lt;code>0&lt;/code>.&lt;/li>
&lt;li>&lt;code>label&lt;/code> must be different from &lt;code>region_label&lt;/code>; the step keeps the original region tag.&lt;/li>
&lt;/ul></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/convert/evalexpression/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/convert/evalexpression/</guid><description>&lt;h1 id="evalexpression">
 EvalExpression
 &lt;a class="anchor" href="#evalexpression">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;EvalExpression&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;outtag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">expression&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;log(2, mytag + 1)&amp;#34;&lt;/span> &lt;span style="color:#75715e"># log to base 2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">result_type&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;numeric&amp;#34;&lt;/span> &lt;span style="color:#75715e"># or bool.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Calculate a &lt;a href="https://docs.rs/fasteval/latest/fasteval/">fasteval&lt;/a> expression on your tags,
which you can then pass to .&lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/filter-steps/filterbytag/">FilterByTag&lt;/a>.&lt;/p>
&lt;p>You can use any tags previously defined on the molecule as variables in the expression.&lt;/p>
&lt;p>Additional, there&amp;rsquo;s a series of virtual tags available:&lt;/p>
&lt;ul>
&lt;li>&lt;code>len_&amp;lt;segment-name&amp;gt;&lt;/code> - the length of the specified segment (e.g. &lt;code>len_read1&lt;/code>).&lt;/li>
&lt;li>&lt;code>len_&amp;lt;tag-label&amp;gt;&lt;/code> - the length of the specified tag (e.g. &lt;code>len_mytag&lt;/code>). For location tags,
this is the length of the underlying matched regions (which may change / be lost when reads are truncated - eval before truncation if necessary). For string tags (= &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractregex/">ExtractRegex&lt;/a> with &lt;code>source=name:...&lt;/code>) this is the length of the &lt;em>replaced&lt;/em> string.&lt;/li>
&lt;/ul></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/options/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/options/</guid><description>&lt;h1 id="options">
 Options
 &lt;a class="anchor" href="#options">#&lt;/a>
&lt;/h1>
&lt;p>There is a small set of runtime knobs exposed under &lt;code>[options]&lt;/code>. Most workflows can rely on the defaults.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6e22e">options&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">thread_count&lt;/span> = &lt;span style="color:#ae81ff">-1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">block_size&lt;/span> = &lt;span style="color:#ae81ff">10000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">buffer_size&lt;/span> = &lt;span style="color:#ae81ff">102400&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">accept_duplicate_files&lt;/span> = &lt;span style="color:#66d9ef">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">spot_check_read_pairing&lt;/span> = &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Key&lt;/th>
 &lt;th>Default&lt;/th>
 &lt;th>Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>thread_count&lt;/code>&lt;/td>
 &lt;td>&lt;code>-1&lt;/code>&lt;/td>
 &lt;td>Worker threads for transformations. &lt;code>-1&lt;/code> autotunes per CPU; most runtime is still dominated by decompression threads, so gains are modest.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>block_size&lt;/code>&lt;/td>
 &lt;td>&lt;code>10000&lt;/code>&lt;/td>
 &lt;td>Number of fragments pulled per batch. Increase for very large runs when IO is abundant; decrease to reduce peak memory use.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>buffer_size&lt;/code>&lt;/td>
 &lt;td>&lt;code>102400&lt;/code>&lt;/td>
 &lt;td>Initial bytes reserved per block. The allocator grows buffers on demand, so tuning is rarely necessary.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>accept_duplicate_files&lt;/code>&lt;/td>
 &lt;td>&lt;code>false&lt;/code>&lt;/td>
 &lt;td>Permit the same path to appear multiple times across segments. Useful for fixtures or synthetic tests; keep disabled to catch accidental copy/paste errors.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>spot_check_read_pairing&lt;/code>&lt;/td>
 &lt;td>&lt;code>true&lt;/code>&lt;/td>
 &lt;td>Sample every 1000th fragment to ensure paired reads still share a name prefix; disable when names are intentionally divergent or rely on &lt;code>ValidateName&lt;/code> to customise the separator.&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>Changing these knobs can affect memory pressure and concurrency behaviour. Measure before and after if you deviate from defaults.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calckmers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calckmers/</guid><description>&lt;h1 id="calckmers">
 CalcKmers
 &lt;a class="anchor" href="#calckmers">#&lt;/a>
&lt;/h1>
&lt;p>Count the number of kmers from a read that match those in a database built from reference sequences.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;CalcKmers&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments, or &amp;#39;All&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">files&lt;/span> = [&lt;span style="color:#e6db74">&amp;#39;reference.fa&amp;#39;&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;database.fq&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">count_reverse_complement&lt;/span> = &lt;span style="color:#66d9ef">true&lt;/span> &lt;span style="color:#75715e"># whether to also include each revcomp of a kmer in the database&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">k&lt;/span> = &lt;span style="color:#ae81ff">21&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">min_count&lt;/span> = &lt;span style="color:#ae81ff">2&lt;/span> &lt;span style="color:#75715e"># optional, defaults to 1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This transformation:&lt;/p>
&lt;ol>
&lt;li>Builds a kmer database from the specified sequence files (all &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/input-section/">input formatws&lt;/a>)&lt;/li>
&lt;li>Extracts all kmers of length &lt;code>k&lt;/code> from the reference sequences&lt;/li>
&lt;li>Filters kmers by &lt;code>min_count&lt;/code> (minimum occurrences in the reference to be included)&lt;/li>
&lt;li>For each read, counts how many of its kmers appear in the database&lt;/li>
&lt;li>Creates a numeric tag with the kmer match count&lt;/li>
&lt;/ol>
&lt;h2 id="parameters">
 Parameters
 &lt;a class="anchor" href="#parameters">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>out_label&lt;/strong>: Tag name to store the kmer count&lt;/li>
&lt;li>&lt;strong>segment&lt;/strong>: Which segment to quantify (read1, read2, index1, index2, or &amp;lsquo;All&amp;rsquo;)&lt;/li>
&lt;li>&lt;strong>files&lt;/strong>: List of sequence files to build the kmer database from&lt;/li>
&lt;li>&lt;strong>count_reverse_complement&lt;/strong>: (alias: &amp;ldquo;canonical&amp;rdquo;) Whether to include reverse complements of kmers in the database (&amp;lsquo;canonical kmers&amp;rsquo;)&lt;/li>
&lt;li>&lt;strong>k&lt;/strong>: Kmer length&lt;/li>
&lt;li>&lt;strong>min_count&lt;/strong>: Minimum number of times a kmer must appear in the reference files to be included in the database (default: 1). Sum of forward and reverse complement counts if &lt;code>count_reverse_complement&lt;/code> is true.&lt;/li>
&lt;/ul>
&lt;h2 id="use-cases">
 Use Cases
 &lt;a class="anchor" href="#use-cases">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Contamination detection&lt;/strong>: Quantify or filter reads matching known contaminant sequences&lt;/li>
&lt;li>&lt;strong>Quality control&lt;/strong>: Count kmers from adapter or primer sequences&lt;/li>
&lt;li>&lt;strong>Species identification&lt;/strong>: Measure presence of species-specific kmers&lt;/li>
&lt;/ul>
&lt;h2 id="notes">
 Notes
 &lt;a class="anchor" href="#notes">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>Only kmers with only valid DNA bases (A, C, G, T) are counted; kmers containing N or other ambiguous bases are skipped&lt;/li>
&lt;li>Kmer matching is case-insensitive&lt;/li>
&lt;/ul></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/lowercasetag/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/lowercasetag/</guid><description>&lt;h1 id="lowercasetag">
 LowercaseTag
 &lt;a class="anchor" href="#lowercasetag">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;LowercaseTag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Replace the sequence of the tag with it&amp;rsquo;s lowercase version.&lt;/p>
&lt;p>Follow with &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/tag-steps/using/storetaginsequence/">StoreTagInSequence&lt;/a> to apply the lowercase tag back onto the read.&lt;/p>
&lt;p>See &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/tag-steps/">the tag section&lt;/a> for tag generation.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/lowercasesequence/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/lowercasesequence/</guid><description>&lt;h1 id="lowercasesequence">
 LowercaseSequence
 &lt;a class="anchor" href="#lowercasesequence">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;LowercaseSequence&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments, or &amp;#39;All&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Convert the complete sequence to lowercase.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/uppercasesequence/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/uppercasesequence/</guid><description>&lt;h1 id="uppercasesequence">
 UppercaseSequence
 &lt;a class="anchor" href="#uppercasesequence">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;UppercaseSequence&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments, or &amp;#39;All&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Convert the complete sequence to uppercase.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/uppercasetag/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/uppercasetag/</guid><description>&lt;h1 id="uppercasetag">
 UppercaseTag
 &lt;a class="anchor" href="#uppercasetag">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;UppercaseTag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Replace the sequence of the tag with its uppercase version.&lt;/p>
&lt;p>Follow with &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/tag-steps/using/storetaginsequence/">StoreTagInSequence&lt;/a> to apply the uppercase tag back onto the read.&lt;/p>
&lt;p>See &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/tag-steps/">the tag section&lt;/a> for tag generation.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/concepts/segments/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/concepts/segments/</guid><description>&lt;h1 id="segments">
 Segments
 &lt;a class="anchor" href="#segments">#&lt;/a>
&lt;/h1>
&lt;p>Modern sequencers, particularity Illumina sequencers can read multiple times
from one (amplified) DNA molecule, producing multiple &amp;lsquo;segments&amp;rsquo; that together form a &amp;lsquo;molecule&amp;rsquo;.&lt;/p>
&lt;p>The user&amp;rsquo;s define the available segments in the &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/input-section/">input-section&lt;/a>,
common names are &amp;lsquo;read1&amp;rsquo;, &amp;lsquo;read2&amp;rsquo; (for paired-end reads) and &amp;lsquo;index1&amp;rsquo;, &amp;lsquo;index2&amp;rsquo; (for dual-indexed libraries).&lt;/p>
&lt;p>These are then commonly available to steps taking a &lt;code>segment&lt;/code> or a &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/concepts/source/">&lt;code>source&lt;/code>&lt;/a> option. Often there is the option to work on all all defined segments at once by using the &amp;lsquo;All&amp;rsquo; &amp;lsquo;segment/source&amp;rsquo;.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/concepts/source/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/concepts/source/</guid><description>&lt;h1 id="source">
 Source
 &lt;a class="anchor" href="#source">#&lt;/a>
&lt;/h1>
&lt;p>When a step refers to a &amp;lsquo;source&amp;rsquo; (instead of a &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/concepts/segments/">&lt;code>segment&lt;/code>&lt;/a>),
it means that it can read from segment, a segment&amp;rsquo;s name (e.g. &amp;ldquo;name:read1&amp;rdquo;) or a (location/string) tag value
(e.g. &amp;ldquo;tag:mytag&amp;rdquo;)&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/concepts/step/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/concepts/step/</guid><description>&lt;h1 id="step">
 Step
 &lt;a class="anchor" href="#step">#&lt;/a>
&lt;/h1>
&lt;p>A step is one coherent manipulation of the FASTQ stream and it&amp;rsquo;s associated data.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/concepts/tag/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/concepts/tag/</guid><description>&lt;h1 id="tag--label">
 Tag / Label
 &lt;a class="anchor" href="#tag--label">#&lt;/a>
&lt;/h1>
&lt;p>A tag is a piece of molecule derived data that one step in the pipeline produces,
and others may use (or output).&lt;/p>
&lt;p>Tags have types:
- Location+Sequence (which may loose their location data)
- Sequence-only
- numeric
- boolean&lt;/p>
&lt;p>For example &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractiupac/">ExtractIUPAC&lt;/a>
produces a &amp;rsquo;location&amp;rsquo; tag.&lt;/p>
&lt;p>That location tag then allows filtering for it&amp;rsquo;s presence using
&lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/filter-steps/filterbytag/">FilterByTag&lt;/a>,
cutting the segment at it&amp;rsquo;s location using &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/modification-steps/trimattag/">TrimAtTag&lt;/a> or replacing it&amp;rsquo;s sequence with &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/modification-steps/lowercasetag/">LowercaseTag&lt;/a>.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/how-to/cookbooks/01-basic-quality-report/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/how-to/cookbooks/01-basic-quality-report/</guid><description>&lt;h1 id="cookbook-01-basic-quality-report">
 Cookbook 01: Basic Quality Report
 &lt;a class="anchor" href="#cookbook-01-basic-quality-report">#&lt;/a>
&lt;/h1>
&lt;h2 id="use-case">
 Use Case
 &lt;a class="anchor" href="#use-case">#&lt;/a>
&lt;/h2>
&lt;p>You have FastQ files from a sequencing run and want to generate comprehensive quality reports to assess:&lt;/p>
&lt;ul>
&lt;li>Read quality scores&lt;/li>
&lt;li>Base composition&lt;/li>
&lt;li>Read length distribution&lt;/li>
&lt;li>Duplicate read counts&lt;/li>
&lt;/ul>
&lt;p>This is typically the first step in any sequencing data analysis to understand data quality before downstream processing.&lt;/p>
&lt;h2 id="what-this-pipeline-does">
 What This Pipeline Does
 &lt;a class="anchor" href="#what-this-pipeline-does">#&lt;/a>
&lt;/h2>
&lt;ol>
&lt;li>Reads input FastQ file(s)&lt;/li>
&lt;li>Generates a comprehensive quality report including:
&lt;ul>
&lt;li>Base quality statistics&lt;/li>
&lt;li>Base distribution across positions&lt;/li>
&lt;li>Read length distribution&lt;/li>
&lt;li>Duplicate read counting&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Outputs reports in both HTML (human-readable) and JSON (machine-readable) formats&lt;/li>
&lt;li>Passes through all reads unchanged (no filtering)&lt;/li>
&lt;/ol>
&lt;h2 id="input-files">
 Input Files
 &lt;a class="anchor" href="#input-files">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;code>input/sample_R1.fq&lt;/code> - Forward reads (Read 1) from paired-end sequencing&lt;/li>
&lt;/ul>
&lt;h2 id="output-files">
 Output Files
 &lt;a class="anchor" href="#output-files">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;code>output_R1.fq&lt;/code> - Passed-through reads (identical to input)&lt;/li>
&lt;li>&lt;code>output.report_initial.html&lt;/code> - HTML quality report&lt;/li>
&lt;li>&lt;code>output.report_initial.json&lt;/code> - JSON quality report with detailed statistics&lt;/li>
&lt;/ul>
&lt;h2 id="when-to-use-this">
 When to Use This
 &lt;a class="anchor" href="#when-to-use-this">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>First analysis of new sequencing data&lt;/li>
&lt;li>Quality control before committing to expensive downstream analysis&lt;/li>
&lt;li>Comparing data quality across different sequencing runs&lt;/li>
&lt;li>Identifying potential issues (adapter contamination, quality drop-off, etc.)&lt;/li>
&lt;/ul>
&lt;h2 id="download">
 Download
 &lt;a class="anchor" href="#download">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="../../../../cookbooks/01-basic-quality-report.tar.gz">Download 01-basic-quality-report.tar.gz&lt;/a> for a complete, runnable example including expected output files.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/how-to/cookbooks/02-umi-extraction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/how-to/cookbooks/02-umi-extraction/</guid><description>&lt;h1 id="cookbook-02-umi-extraction">
 Cookbook 02: UMI Extraction
 &lt;a class="anchor" href="#cookbook-02-umi-extraction">#&lt;/a>
&lt;/h1>
&lt;h2 id="use-case">
 Use Case
 &lt;a class="anchor" href="#use-case">#&lt;/a>
&lt;/h2>
&lt;p>You have sequencing data with Unique Molecular Identifiers (UMIs) embedded in the reads. UMIs are short random barcodes added during library preparation that allow you to:&lt;/p>
&lt;ul>
&lt;li>Identify and remove PCR duplicates&lt;/li>
&lt;li>Distinguish true biological duplicates from amplification artifacts&lt;/li>
&lt;li>Improve accuracy in quantitative analyses (RNA-seq, ATAC-seq, etc.)&lt;/li>
&lt;/ul>
&lt;h2 id="what-this-pipeline-does">
 What This Pipeline Does
 &lt;a class="anchor" href="#what-this-pipeline-does">#&lt;/a>
&lt;/h2>
&lt;ol>
&lt;li>Reads input FastQ file with UMIs at the start of read1&lt;/li>
&lt;li>Extracts the UMI sequence (first 8 bases) and creates a tag&lt;/li>
&lt;li>Stores the UMI in the read comment (FASTQ header)&lt;/li>
&lt;li>Removes the UMI bases from the read sequence (so they don&amp;rsquo;t interfere with alignment)&lt;/li>
&lt;li>Outputs modified reads with UMI preserved in the header&lt;/li>
&lt;/ol>
&lt;h2 id="input-files">
 Input Files
 &lt;a class="anchor" href="#input-files">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;code>input/sample_R1.fq&lt;/code> - Reads with 8bp UMI at the start&lt;/li>
&lt;/ul>
&lt;h2 id="output-files">
 Output Files
 &lt;a class="anchor" href="#output-files">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;code>output_R1.fq&lt;/code> - Reads with UMI in comment, UMI bases removed from sequence&lt;/li>
&lt;/ul>
&lt;h2 id="configuration-highlights">
 Configuration Highlights
 &lt;a class="anchor" href="#configuration-highlights">#&lt;/a>
&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Extract UMI from positions 0-7 (8 bases)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;ExtractRegions&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">label&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;umi&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">regions&lt;/span> = [{&lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;read1&amp;#39;&lt;/span>, &lt;span style="color:#a6e22e">start&lt;/span> = &lt;span style="color:#ae81ff">0&lt;/span>, &lt;span style="color:#a6e22e">length&lt;/span> = &lt;span style="color:#ae81ff">8&lt;/span>}]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Store UMI in the FASTQ comment&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;StoreTagInComment&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">label&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;umi&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Remove the UMI bases from the read&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;CutStart&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">target&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;Read1&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">n&lt;/span> = &lt;span style="color:#ae81ff">8&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="workflow-details">
 Workflow Details
 &lt;a class="anchor" href="#workflow-details">#&lt;/a>
&lt;/h2>
&lt;p>&lt;strong>Before processing:&lt;/strong>&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/how-to/cookbooks/03-lexogen-quantseq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/how-to/cookbooks/03-lexogen-quantseq/</guid><description>&lt;h1 id="cookbook-03-lexogen-quantseq-processing">
 Cookbook 03: Lexogen QuantSeq Processing
 &lt;a class="anchor" href="#cookbook-03-lexogen-quantseq-processing">#&lt;/a>
&lt;/h1>
&lt;h2 id="use-case">
 Use Case
 &lt;a class="anchor" href="#use-case">#&lt;/a>
&lt;/h2>
&lt;p>Lexogen QuantSeq is a popular 3&amp;rsquo; mRNA sequencing protocol optimized for gene expression profiling. The library structure includes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>First 8 bases&lt;/strong>: UMI (Unique Molecular Identifier) for deduplication&lt;/li>
&lt;li>&lt;strong>Next 6 bases&lt;/strong>: Random hexamer primer sequence (needs removal)&lt;/li>
&lt;li>&lt;strong>Remaining sequence&lt;/strong>: Actual cDNA from the 3&amp;rsquo; end of transcripts&lt;/li>
&lt;/ul>
&lt;p>This cookbook demonstrates the standard preprocessing for QuantSeq data before alignment.&lt;/p>
&lt;h2 id="what-this-pipeline-does">
 What This Pipeline Does
 &lt;a class="anchor" href="#what-this-pipeline-does">#&lt;/a>
&lt;/h2>
&lt;ol>
&lt;li>Extracts the 8bp UMI from the start of reads&lt;/li>
&lt;li>Stores the UMI in the read comment (FASTQ header)&lt;/li>
&lt;li>Removes the first 14 bases total (8bp UMI + 6bp random hexamer)&lt;/li>
&lt;li>Outputs processed reads ready for alignment&lt;/li>
&lt;/ol>
&lt;h2 id="input-files">
 Input Files
 &lt;a class="anchor" href="#input-files">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;code>input/quantseq_sample.fq&lt;/code> - Raw QuantSeq reads with UMI and random hexamer&lt;/li>
&lt;/ul>
&lt;h2 id="output-files">
 Output Files
 &lt;a class="anchor" href="#output-files">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;code>output_read1.fq&lt;/code> - Processed reads with:
&lt;ul>
&lt;li>UMI stored in comment&lt;/li>
&lt;li>First 14bp removed&lt;/li>
&lt;li>Ready for alignment to reference genome&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="workflow-details">
 Workflow Details
 &lt;a class="anchor" href="#workflow-details">#&lt;/a>
&lt;/h2>
&lt;p>&lt;strong>Raw read structure:&lt;/strong>&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/how-to/cookbooks/04-phix-removal/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/how-to/cookbooks/04-phix-removal/</guid><description>&lt;h1 id="cookbook-04-phix-removal">
 Cookbook 04: PhiX Removal
 &lt;a class="anchor" href="#cookbook-04-phix-removal">#&lt;/a>
&lt;/h1>
&lt;h2 id="use-case">
 Use Case
 &lt;a class="anchor" href="#use-case">#&lt;/a>
&lt;/h2>
&lt;p>You have Illumina PhiX spike-in sequences in your dataset and want to remove those contaminating reads before downstream analysis. PhiX is commonly added as a control to increase base diversity during sequencing runs.&lt;/p>
&lt;h2 id="what-this-pipeline-does">
 What This Pipeline Does
 &lt;a class="anchor" href="#what-this-pipeline-does">#&lt;/a>
&lt;/h2>
&lt;p>This cookbook demonstrates how to identify and remove PhiX contamination using k-mer counting:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Count k-mers&lt;/strong>: Uses &lt;code>CalcKmers&lt;/code> to count how many 30-mers from each read match the PhiX genome&lt;/li>
&lt;li>&lt;strong>Export data&lt;/strong>: Saves k-mer counts to a TSV table for analysis&lt;/li>
&lt;li>&lt;strong>Filter reads&lt;/strong>: Removes reads with high PhiX k-mer counts (≥25 matching k-mers)&lt;/li>
&lt;/ol>
&lt;h2 id="understanding-the-approach">
 Understanding the Approach
 &lt;a class="anchor" href="#understanding-the-approach">#&lt;/a>
&lt;/h2>
&lt;h3 id="k-mer-counting">
 K-mer Counting
 &lt;a class="anchor" href="#k-mer-counting">#&lt;/a>
&lt;/h3>
&lt;p>The &lt;code>CalcKmers&lt;/code> step counts how many k-mers (short subsequences of length k) from each read are present in the PhiX reference genome:&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/filter-steps/filterreservoirsample/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/filter-steps/filterreservoirsample/</guid><description>&lt;h1 id="filterreservoirsample">
 FilterReservoirSample
 &lt;a class="anchor" href="#filterreservoirsample">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;FilterReservoirSample&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">n&lt;/span> = &lt;span style="color:#ae81ff">10_000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">seed&lt;/span> = &lt;span style="color:#ae81ff">59014&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Filter for a fixed number of reads based on &lt;a href="https://en.wikipedia.org/wiki/Reservoir_sampling">reservoir sampling&lt;/a>, that is all input reads have an equal probability of being selected.&lt;/p>
&lt;p>This means we need to keep n reads in memory, and they get processed as one
large block at the end by all downstream steps.&lt;/p>
&lt;p>That means it&amp;rsquo;s not the right tool if you want to sample to millions of reads,
but it is the right tool if you want to have lowish fixed number of reads.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/filter-steps/filtersample/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/filter-steps/filtersample/</guid><description>&lt;h1 id="filtersample">
 FilterSample
 &lt;a class="anchor" href="#filtersample">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;FilterSample&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">p&lt;/span> = &lt;span style="color:#ae81ff">0.5&lt;/span> &lt;span style="color:#75715e"># float, the chance for any given read to be kept&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 0..1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">seed&lt;/span> = &lt;span style="color:#ae81ff">42&lt;/span> &lt;span style="color:#75715e"># (optional) random seed for reproducibility&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Randomly sample a percentage of reads.
Requires a random seed to ensure reproducibility.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/convertquality/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/convertquality/</guid><description>&lt;h1 id="convertquality">
 ConvertQuality
 &lt;a class="anchor" href="#convertquality">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ConvertQuality&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">from&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Illumina1.8&amp;#34;&lt;/span>&lt;span style="color:#75715e"># Illumin1.8|Illumina1.3|Sanger|Solexa&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">to&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Solexa&amp;#34;&lt;/span> &lt;span style="color:#75715e"># same range as from. Illumina1.8 is an alias for Sanger&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Convert quality scores between various encodings / meanings.&lt;/p>
&lt;p>See &lt;a href="https://en.wikipedia.org/wiki/Phred_quality_score">https://en.wikipedia.org/wiki/Phred_quality_score&lt;/a>&lt;/p>
&lt;p>Will error if from == to.&lt;/p>
&lt;p>This step introduces a &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/validation-steps/validatequality/">ValidateQuality&lt;/a> step automatically before it.&lt;/p>
&lt;h2 id="corresponding-options-in-other-software">
 Corresponding options in other software
 &lt;a class="anchor" href="#corresponding-options-in-other-software">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>trimmomatic TOPHRED33&lt;/li>
&lt;/ul></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/cutend/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/cutend/</guid><description>&lt;h1 id="cutend">
 CutEnd
 &lt;a class="anchor" href="#cutend">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;CutEnd&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">n&lt;/span> = &lt;span style="color:#ae81ff">5&lt;/span> &lt;span style="color:#75715e"># positive integer, cut n nucleotides from the end of the read&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments (default: read1)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Cut nucleotides from the end of the read.&lt;/p>
&lt;p>May produce empty reads; filter those with &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/filter-steps/filterempty/">FilterEmpty&lt;/a>.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/cutstart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/cutstart/</guid><description>&lt;h3 id="cutstart">
 CutStart
 &lt;a class="anchor" href="#cutstart">#&lt;/a>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;CutStart&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">n&lt;/span> = &lt;span style="color:#ae81ff">5&lt;/span> &lt;span style="color:#75715e"># positive integer, cut n nucleotides from the start of the read&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Cut nucleotides from the start of the read.&lt;/p>
&lt;p>May produce empty reads; filter those with &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/filter-steps/filterempty/">FilterEmpty&lt;/a>.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/extracttoname/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/extracttoname/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ExtractRegions&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">regions&lt;/span> = [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {&lt;span style="color:#a6e22e">segment&lt;/span>= &lt;span style="color:#e6db74">&amp;#34;Read1&amp;#34;&lt;/span>, &lt;span style="color:#a6e22e">start&lt;/span> = &lt;span style="color:#ae81ff">0&lt;/span>, &lt;span style="color:#a6e22e">length&lt;/span> = &lt;span style="color:#ae81ff">8&lt;/span>},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {&lt;span style="color:#a6e22e">segment&lt;/span>= &lt;span style="color:#e6db74">&amp;#34;Read1&amp;#34;&lt;/span>, &lt;span style="color:#a6e22e">start&lt;/span> = &lt;span style="color:#ae81ff">12&lt;/span>, &lt;span style="color:#a6e22e">length&lt;/span> = &lt;span style="color:#ae81ff">4&lt;/span>},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;umi&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">region_separator&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;_&amp;#34;&lt;/span> &lt;span style="color:#75715e"># (optional) str, what to put between the regions, defaults to &amp;#39;_&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;StoreTagInComment&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;umi&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Extract a sequence from the read and place it in the read name&amp;rsquo;s comment section,
so a (space separated) &amp;lsquo;key=value&amp;rsquo; pair is added to the read name.&lt;/p>
&lt;p>Supports multiple region-extraction.&lt;/p>
&lt;p>See &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/tag-steps/">the tag section&lt;/a> for more tag generation options.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/head/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/head/</guid><description>&lt;h1 id="head">
 Head
 &lt;a class="anchor" href="#head">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Head&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">n&lt;/span> = &lt;span style="color:#ae81ff">1000&lt;/span> &lt;span style="color:#75715e"># positive integer, number of reads to keep&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Output just the first n molecules.&lt;/p>
&lt;h3 id="demultiplex-interaction">
 Demultiplex interaction
 &lt;a class="anchor" href="#demultiplex-interaction">#&lt;/a>
&lt;/h3>
&lt;p>If present after a demultiplex step, includes n molecules in each stream.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/mergereads/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/mergereads/</guid><description>&lt;h1 id="mergereads">
 MergeReads
 &lt;a class="anchor" href="#mergereads">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;MergeReads&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment1&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># First segment&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment2&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read2&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Second segment&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">reverse_complement_segment2&lt;/span> = &lt;span style="color:#66d9ef">true&lt;/span> &lt;span style="color:#75715e"># Whether to reverse complement segment2 (suggested: true)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">algorithm&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;FastpSeemsWeird&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Algorithm: &amp;#34;fastp_seems_weird&amp;#34;. Further algorithms are in planning&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">min_overlap&lt;/span> = &lt;span style="color:#ae81ff">30&lt;/span> &lt;span style="color:#75715e"># Minimum overlap length required&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">max_mismatch_rate&lt;/span> = &lt;span style="color:#ae81ff">0.2&lt;/span> &lt;span style="color:#75715e"># Maximum allowed mismatch rate (0.0-1.0) (suggested: 0.2)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">max_mismatch_count&lt;/span> = &lt;span style="color:#ae81ff">5&lt;/span> &lt;span style="color:#75715e"># Maximum allowed absolute mismatches (suggested: 5)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">no_overlap_strategy&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;as_is&amp;#34;&lt;/span> &lt;span style="color:#75715e"># What to do when no overlap found: &amp;#34;as_is&amp;#34; or &amp;#34;concatenate&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">concatenate_spacer&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;NNNN&amp;#34;&lt;/span> &lt;span style="color:#75715e"># (optional) Required if no_overlap_strategy = &amp;#34;concatenate&amp;#34;. Spacer sequence to insert between reads&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">spacer_quality_char&lt;/span> = &lt;span style="color:#ae81ff">33&lt;/span> &lt;span style="color:#75715e"># (optional) Quality score for spacer bases (suggested: 33 = Phred quality 0)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># out_label = &amp;#34;merged&amp;#34; # (optional) output Tag label for boolean merge status&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Merges paired-end reads from two segments by detecting their overlap and resolving mismatches.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/rename/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/rename/</guid><description>&lt;h3 id="rename">
 Rename
 &lt;a class="anchor" href="#rename">#&lt;/a>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Rename&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">search&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;(.)/([1/2])$&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">replacement&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;$1 $2&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Apply a regular expression based renaming to the reads.&lt;/p>
&lt;p>It is always applied to all available segments (read1, read2, index1, index2).&lt;/p>
&lt;p>The example above fixes old school MGI reads for downstream processing, like
fastp&amp;rsquo;s &amp;lsquo;&amp;ndash;fix_mgi&amp;rsquo; option&lt;/p>
&lt;p>You can use the full power of the &lt;a href="https://docs.rs/regex/latest/regex/">rust regex crate&lt;/a> here.&lt;/p>
&lt;h4 id="read-index-placeholder">
 Read index placeholder
 &lt;a class="anchor" href="#read-index-placeholder">#&lt;/a>
&lt;/h4>
&lt;p>After the regex replacement runs, the special literal &lt;code>{{READ_INDEX}}&lt;/code> is expanded to
the running 1-based index of each logical read. When multiple segments are present
(for example &lt;code>read1&lt;/code>/&lt;code>read2&lt;/code> pairs), every segment for the same read receives the
same index so pairs stay aligned. This makes it easy to re-sequence identifiers:&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/reversecomplement/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/reversecomplement/</guid><description>&lt;h1 id="reversecomplement">
 ReverseComplement
 &lt;a class="anchor" href="#reversecomplement">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ReverseComplement&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments (default: read1)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Reverse-complements the read sequence (and reverses the quality).&lt;/p>
&lt;p>This supports IUPAC codes (U is complemented to A, so it&amp;rsquo;s not strictly
reversible). Unknown letters are output verbatim.&lt;/p>
&lt;p>Useful to combine with &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/modification-steps/swapconditional/">SwapConditional&lt;/a>.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/reversecomplementconditional/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/reversecomplementconditional/</guid><description>&lt;h1 id="reversecomplementconditional">
 ReverseComplementConditional
 &lt;a class="anchor" href="#reversecomplementconditional">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ReverseComplementConditional&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Boolean tag that determines whether to reverse complement&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments (default: read1)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Conditionally reverse-complements the read sequence (and reverses the quality) based on a boolean tag value.&lt;/p>
&lt;p>For each read, if the boolean tag is &lt;code>true&lt;/code>, the read is reverse-complemented.
If the tag is &lt;code>false&lt;/code>, the read is left unchanged.&lt;/p>
&lt;p>This is useful for conditionally orienting reads based on strand information,
adapter detection, or other criteria determined by prior steps.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/skip/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/skip/</guid><description>&lt;h1 id="skip">
 Skip
 &lt;a class="anchor" href="#skip">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Skip&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">n&lt;/span> = &lt;span style="color:#ae81ff">1000&lt;/span> &lt;span style="color:#75715e"># positive integer, number of reads to skip&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Skips the first n molecules.&lt;/p>
&lt;h3 id="demultiplex-interaction">
 Demultiplex interaction
 &lt;a class="anchor" href="#demultiplex-interaction">#&lt;/a>
&lt;/h3>
&lt;p>If present after a demultiplex step, skips the first n molecules in that stream.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/swap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/swap/</guid><description>&lt;h1 id="swap">
 Swap
 &lt;a class="anchor" href="#swap">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Swap&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment_a&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment_b&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read2&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Swaps exactly two segments.&lt;/p>
&lt;p>Arguments &lt;code>segment_a&lt;/code>/&lt;code>segment_b&lt;/code> are only necessary if there are more than two segments defined in the input.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/swapconditional/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/swapconditional/</guid><description>&lt;h1 id="swapconditional">
 SwapConditional
 &lt;a class="anchor" href="#swapconditional">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;SwapConditional&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Boolean tag that determines whether to swap&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment_a&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Optional&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment_b&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read2&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Optional&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Conditionally swaps exactly two segments based on a boolean tag value.&lt;/p>
&lt;p>For each read, if the boolean tag is &lt;code>true&lt;/code>, the segments are swapped for that specific read.
If the tag is &lt;code>false&lt;/code>, the read is left unchanged.&lt;/p>
&lt;p>This is useful for conditionally reorganizing paired-end data based on read properties,
such as swapping reads based on length, quality, or other criteria determined by prior steps.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/truncate/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/modification-steps/truncate/</guid><description>&lt;h1 id="maxlen">
 MaxLen
 &lt;a class="anchor" href="#maxlen">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Truncate&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">n&lt;/span> = &lt;span style="color:#ae81ff">100&lt;/span> &lt;span style="color:#75715e"># the maximum length of the read. Cut at end if longer&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments (default: read1)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Cut the read down to `n&amp;rsquo; bases.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/out_of_scope/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/out_of_scope/</guid><description>&lt;h1 id="out-of-scope">
 Out of scope
 &lt;a class="anchor" href="#out-of-scope">#&lt;/a>
&lt;/h1>
&lt;p>Things mbf-fastq-processor will explicitly not do and that won&amp;rsquo;t be implemented.&lt;/p>
&lt;h2 id="anything-based-on-averaging-phred-scores">
 Anything based on averaging phred scores
 &lt;a class="anchor" href="#anything-based-on-averaging-phred-scores">#&lt;/a>
&lt;/h2>
&lt;p>Based on the average quality in a sliding window.
Arithmetic averaging of phred scores is wrong.&lt;/p>
&lt;p>see &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calcmeanquality/">ExtractMeanQuality&lt;/a>&lt;/p>
&lt;h3 id="corresponding-options-in-other-software">
 Corresponding options in other software
 &lt;a class="anchor" href="#corresponding-options-in-other-software">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Trimmomatic SLIDINGWINDOW&lt;/li>
&lt;li>fastp &amp;ndash;cut_front&lt;/li>
&lt;li>fastp &amp;ndash;cut_tail&lt;/li>
&lt;li>fastp &amp;ndash;cut_right&lt;/li>
&lt;/ul>
&lt;h2 id="fast5">
 Fast5
 &lt;a class="anchor" href="#fast5">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="https://medium.com/@shiansu/a-look-at-the-nanopore-fast5-format-f711999e2ff6">https://medium.com/@shiansu/a-look-at-the-nanopore-fast5-format-f711999e2ff6&lt;/a>
Oxford Nanopore squiggle data.
Apparently no formal spec.&lt;/p>
&lt;h2 id="kallisto-bus-format">
 kallisto BUS format
 &lt;a class="anchor" href="#kallisto-bus-format">#&lt;/a>
&lt;/h2>
&lt;pre>&lt;code>- a brief barcode/umi format for single cell RNA-seq
- needs an 'equivalance class' - i.e. at least pseudo alignment
- weird length restrictions on barcodes and umis (1(!)-32), 
 but stores the length in an uint32...
&lt;/code>&lt;/pre></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/report-steps/inspect/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/report-steps/inspect/</guid><description>&lt;h1 id="inspect">
 Inspect
 &lt;a class="anchor" href="#inspect">#&lt;/a>
&lt;/h1>
&lt;p>Dump a few reads to a FASTQ file for inspection at this point in the graph.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Inspect&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">n&lt;/span> = &lt;span style="color:#ae81ff">1000&lt;/span> &lt;span style="color:#75715e"># how many molecules &lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">infix&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;inspect_at_point&amp;#34;&lt;/span> &lt;span style="color:#75715e"># output filename infix&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments (use &amp;#34;all&amp;#34; for interleaved output)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">format&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;FASTQ&amp;#34;&lt;/span> &lt;span style="color:#75715e"># output format: FASTQ, FASTA or BAM&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">suffix&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;compressed&amp;#34;&lt;/span> &lt;span style="color:#75715e"># (optional) custom suffix for filename&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">compression&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;gzip&amp;#34;&lt;/span> &lt;span style="color:#75715e"># (optional) compression format: raw, gzip, zstd. Defaults to uncompressed&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">compression_level&lt;/span> = &lt;span style="color:#ae81ff">1&lt;/span> &lt;span style="color:#75715e"># (optional) compression level for gzip/zstd/bam (gzip, zstd: 1-22)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># defaults: gzip=6, zstd=5&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Output filename pattern:&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/report-steps/progress/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/report-steps/progress/</guid><description>&lt;h1 id="progress">
 Progress
 &lt;a class="anchor" href="#progress">#&lt;/a>
&lt;/h1>
&lt;p>Emit progress to stdout (default) or a .progress log file,
if output_infix is set. (filename is {output_prefix}{ix_separator}{infix}.progress, default separator &lt;code>_&lt;/code>).&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Progress&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">n&lt;/span> = &lt;span style="color:#ae81ff">100_000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">output_infix&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;progress&amp;#34;&lt;/span> &lt;span style="color:#75715e"># optional&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Every &lt;code>n&lt;/code> reads, report on total progress, total reads per second.
At the end, report final runtime and reads/second.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calccomplexity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calccomplexity/</guid><description>&lt;h1 id="calccomplexity">
 CalcComplexity
 &lt;a class="anchor" href="#calccomplexity">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;CalcComplexity&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;complexity&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments, or &amp;#39;All&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Calculate read complexity, based on the percentage of bases that are changed from their predecessor.&lt;/p>
&lt;p>A good filter value might be 0.30, which means 30% complexity is required. See
&lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/filter-steps/filterbynumerictag/">FilterByNumericTag&lt;/a>.&lt;/p>
&lt;h2 id="corresponding-options-in-other-software">
 Corresponding options in other software
 &lt;a class="anchor" href="#corresponding-options-in-other-software">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>fastp: -low_complexity_filter&lt;/li>
&lt;/ul></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calcmeanquality/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calcmeanquality/</guid><description>&lt;h3 id="calcmeanquality">
 CalcMeanQuality
 &lt;a class="anchor" href="#calcmeanquality">#&lt;/a>
&lt;/h3>
&lt;p>We don&amp;rsquo;t support calculating the &amp;lsquo;average quality&amp;rsquo;.&lt;/p>
&lt;p>This is typically a bad idea, see &lt;a href="https://www.drive5.com/usearch/manual/avgq.html">https://www.drive5.com/usearch/manual/avgq.html&lt;/a> for a discussion of the issues.&lt;/p>
&lt;p>To illustrate, 140 x Q35 + 10 x Q2 reads have an &amp;lsquo;average&amp;rsquo; phred of 33, but 6.4 expected wrong bases.
A read with 150 x Q25 has a much worse &amp;lsquo;average&amp;rsquo; phred of 25, but a much lower expected number of errors at 0.5.&lt;/p>
&lt;h2 id="corresponding-options-in-other-software">
 Corresponding options in other software
 &lt;a class="anchor" href="#corresponding-options-in-other-software">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>Trimmomatic: AVGQUAL:&lt;/li>
&lt;li>fastp: &amp;ndash;average_qual&lt;/li>
&lt;/ul></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calcqualifiedbases/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calcqualifiedbases/</guid><description>&lt;p>#CalcQualifiedBases&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;CalcQualifiedBases&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">threshold&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;C&amp;#39;&lt;/span> &lt;span style="color:#75715e"># the quality value &amp;gt;= which a base is qualified &lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># In your phred encoding. Typically 33..75&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># a byte or a number 0...255&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">op&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;worse&amp;#39;&lt;/span> &lt;span style="color:#75715e"># see below.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments, or &amp;#39;All&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;tag_name&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Calculate the number of bases that are &amp;lsquo;qualified&amp;rsquo;, that is
abov/below a user defined threshold.&lt;/p>
&lt;p>Note that smaller Phred values are &lt;strong>better&lt;/strong>.&lt;/p>
&lt;p>To remove confusion, &lt;code>op&lt;/code> may be &amp;lsquo;Better&amp;rsquo;/&amp;lsquo;Worse&amp;rsquo; instead of &amp;lsquo;Below&amp;rsquo;/&amp;lsquo;Above&amp;rsquo;.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractlongestpolyx/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractlongestpolyx/</guid><description>&lt;h1 id="extractlongestpolyx">
 ExtractLongestPolyX
 &lt;a class="anchor" href="#extractlongestpolyx">#&lt;/a>
&lt;/h1>
&lt;p>Find the longest homopolymer stretch anywhere in the read (unlike &lt;code>ExtractPolyTail&lt;/code>, which only considers suffixes).&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ExtractLongestPolyX&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;my_tag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">min_length&lt;/span> = &lt;span style="color:#ae81ff">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">base&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;.&amp;#39;&lt;/span> &lt;span style="color:#75715e"># search for any homopolymer (A/C/G/T/N)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">max_mismatch_rate&lt;/span> = &lt;span style="color:#ae81ff">0.15&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">max_consecutive_mismatches&lt;/span> = &lt;span style="color:#ae81ff">2&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>&lt;code>base&lt;/code> accepts a concrete nucleotide (&lt;code>A&lt;/code>, &lt;code>C&lt;/code>, &lt;code>G&lt;/code>, &lt;code>T&lt;/code>, &lt;code>N&lt;/code>) or &lt;code>.&lt;/code> to search all of &lt;code>ACGT&lt;/code> and report the longest hit.&lt;/li>
&lt;li>&lt;code>max_mismatch_rate&lt;/code> and &lt;code>max_consecutive_mismatches&lt;/code> mirror &lt;code>ExtractPolyTail&lt;/code>; they control how permissive the run detection is.&lt;/li>
&lt;li>When no run satisfies &lt;code>min_length&lt;/code>, the tag is reported as missing.&lt;/li>
&lt;li>only one run is reported, even if multiple runs of the same length exist; in this case, the first run found is reported.&lt;/li>
&lt;/ul></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractlowqualityend/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractlowqualityend/</guid><description>&lt;h1 id="trimqualityend">
 TrimQualityEnd
 &lt;a class="anchor" href="#trimqualityend">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ExtractLowQualityEnd&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;low_quality_ends&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">min_qual&lt;/span> = &lt;span style="color:#ae81ff">20&lt;/span> &lt;span style="color:#75715e"># u8, minimum quality to keep (in whatever your score is encoded in)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># either a char like &amp;#39;A&amp;#39; or a number 0..128 (typical phred score is 33..75)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Define a region of low quality bases at the end of reads.&lt;/p>
&lt;h2 id="corresponding-options-in-other-software">
 Corresponding options in other software
 &lt;a class="anchor" href="#corresponding-options-in-other-software">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>Trimmomatic: TRAILING (if paired with &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/modification-steps/trimattag/">TrimAtTag&lt;/a>)&lt;/li>
&lt;/ul></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractlowqualitystart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractlowqualitystart/</guid><description>&lt;h1 id="trimqualitystart">
 TrimQualityStart
 &lt;a class="anchor" href="#trimqualitystart">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ExtractLowQualityStart&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">min_qual&lt;/span> = &lt;span style="color:#ae81ff">20&lt;/span> &lt;span style="color:#75715e"># u8, minimum quality to keep (in whatever your score is encoded in)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># either a char like &amp;#39;A&amp;#39; or a number 0..128 (typical phred score is 33..75)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;bad_starts&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Define a region with low quality bases (below threshold) at steart of read.&lt;/p>
&lt;h2 id="corresponding-options-in-other-software">
 Corresponding options in other software
 &lt;a class="anchor" href="#corresponding-options-in-other-software">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>Trimmomatic: LEADING (if combined with &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/modification-steps/trimattag/">TrimAtTag&lt;/a>)&lt;/li>
&lt;/ul></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractpolytail/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/extract/extractpolytail/</guid><description>&lt;h1 id="extractpolytail">
 ExtractPolyTail
 &lt;a class="anchor" href="#extractpolytail">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ExtractPolyTail&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;tag_label&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments (default: read1)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">min_length&lt;/span> = &lt;span style="color:#ae81ff">5&lt;/span> &lt;span style="color:#75715e"># positive integer, the minimum number of repeats of the base&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">base&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;A&amp;#34;&lt;/span> &lt;span style="color:#75715e"># one of AGTCN., the &amp;#39;base&amp;#39; to trim (or . for any repeated base)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">max_mismatch_rate&lt;/span> = &lt;span style="color:#ae81ff">0.1&lt;/span> &lt;span style="color:#75715e"># float 0.0..=1.0, how many mismatches are allowed in the repeat&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">max_consecutive_mismatches&lt;/span> = &lt;span style="color:#ae81ff">3&lt;/span> &lt;span style="color:#75715e"># how many consecutive mismatches are allowed&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Identify either a specific letter (AGTC or N) repetition,
or any base repetition (base = &amp;lsquo;.&amp;rsquo;) at the end of the read.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/tag/tagduplicates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/tag/tagduplicates/</guid><description>&lt;h3 id="filterduplicates">
 FilterDuplicates
 &lt;a class="anchor" href="#filterduplicates">#&lt;/a>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;TagDuplicates&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">false_positive_rate&lt;/span> = &lt;span style="color:#ae81ff">0.00001&lt;/span> &lt;span style="color:#75715e">#&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># the false positive rate of the filter.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 0..1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">seed&lt;/span> = &lt;span style="color:#ae81ff">59&lt;/span> &lt;span style="color:#75715e"># required!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">source&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;All&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any input segment, &amp;#39;All&amp;#39;, &amp;#39;tag:&amp;lt;tag-name&amp;gt;&amp;#39; or &amp;#39;name:&amp;lt;segment&amp;gt;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># split_character = &amp;#34;/&amp;#34; # required (and accepted only iff using name:&amp;lt;segment&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;dups&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;FilterByTag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;dups&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">keep_or_remove&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Remove&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Keep|Remove&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Tag duplicates (2nd onwards) from the stream using a &lt;a href="https://en.wikipedia.org/wiki/Cuckoo_filter">Cuckoo filter&lt;/a>.&lt;/p>
&lt;p>That&amp;rsquo;s a probabilistic data structure, accordingly there&amp;rsquo;s a false positive rate,
and a tunable memory requirement.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/hammingcorrect/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/using/hammingcorrect/</guid><description>&lt;h1 id="hammingcorrect">
 HammingCorrect
 &lt;a class="anchor" href="#hammingcorrect">#&lt;/a>
&lt;/h1>
&lt;p>Correct a tag to one of a predefined set of &amp;lsquo;barcodes&amp;rsquo; using closest hamming distance.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;HammingCorrect&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">in_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mytag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;my_corrected_tag&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">barcodes&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mybarcodelist&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">max_hamming_distance&lt;/span> = &lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">on_no_match&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;remove&amp;#39;&lt;/span> &lt;span style="color:#75715e"># &amp;#39;remove&amp;#39;, &amp;#39;empty&amp;#39;, &amp;#39;keep&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6e22e">barcodes&lt;/span>.&lt;span style="color:#a6e22e">mybarcodelist&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;AAAA&amp;#34;&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ignored&amp;#34;&lt;/span> &lt;span style="color:#75715e"># only read when demultiplexing &lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>on_no_match controls what happens if the tag cannot be corrected within the max_hamming_distance:&lt;/p>
&lt;ul>
&lt;li>remove: Remove the hit (location and sequence), useful for &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/filter-steps/filterbytag/">FilterByTag&lt;/a> later.&lt;/li>
&lt;li>keep: Keep the original tag (and location)&lt;/li>
&lt;li>empty: Keep the original location, but set the tag to empty.&lt;/li>
&lt;/ul></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/validation-steps/spotcheckreadpairing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/validation-steps/spotcheckreadpairing/</guid><description>&lt;h1 id="spotcheckreadpairing">
 SpotCheckReadPairing
 &lt;a class="anchor" href="#spotcheckreadpairing">#&lt;/a>
&lt;/h1>
&lt;p>Confirms for every &lt;code>sample_stride&lt;/code>th read &amp;lsquo;pair&amp;rsquo; that the names share the same prefix
(part before &amp;lsquo;readname_end_char&amp;rsquo;).&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;SpotCheckReadPairing&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">sample_stride&lt;/span> = &lt;span style="color:#ae81ff">1000&lt;/span> &lt;span style="color:#75715e"># Every nth fragment, default 1000. Must be &amp;gt; 0. &lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">readname_end_char&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;/&amp;#39;&lt;/span> &lt;span style="color:#75715e"># u8/byte-char, Defaults to no character, meaning the entire name is compared.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>When no separator character is provided the entire name must match exactly across all segments.&lt;/p>
&lt;p>Otherwise the read names are truncated after the first readname_end_char, and the prefixes must match exactly. For example, use readname_end_char = &amp;ldquo;_&amp;rdquo; for typical Illumina _1/_2 suffixes.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/validation-steps/validateallreadssamelength/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/validation-steps/validateallreadssamelength/</guid><description>&lt;h1 id="validateallreadssamelength">
 ValidateAllReadsSameLength
 &lt;a class="anchor" href="#validateallreadssamelength">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ValidateAllReadsSameLength&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">source&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any segment, All, tag:&amp;lt;name&amp;gt; or &amp;#39;name:segment&amp;gt;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Validates that all reads have the same sequence/tag/read length.&lt;/p>
&lt;p>Useful when you want to verify read length consistency in your pipeline.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/validation-steps/validatename/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/validation-steps/validatename/</guid><description>&lt;h1 id="validatename">
 ValidateName
 &lt;a class="anchor" href="#validatename">#&lt;/a>
&lt;/h1>
&lt;p>Verify that all segments have the same read name (or a shared prefix).&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ValidateName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Optional separator character; the comparison stops at the first match&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">readname_end_char&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;_&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Optional. Do not set for exact matching. Otherwise, a byte character&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>When no separator character is provided the
entire name must match exactly across all segments.&lt;/p>
&lt;p>Otherwise the read names are truncated after the first readname_end_char,
and the prefixes must match exactly. For example, use &lt;code>readname_end_char = &amp;quot;_&amp;quot;&lt;/code> for typical
Illumina _1/_2 suffixes.&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/validation-steps/validatequality/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/validation-steps/validatequality/</guid><description>&lt;h1 id="validatequality">
 ValidateQuality
 &lt;a class="anchor" href="#validatequality">#&lt;/a>
&lt;/h1>
&lt;p>Validate that all scores are between 33..=41&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ValidateQuality&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments, or &amp;#39;All&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">encoding&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;Illumina1.8&amp;#39;&lt;/span> &lt;span style="color:#75715e"># &amp;#39;Illumina1.8|Illumina1.3|Sanger|Solexa&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Illumina1.8 is an alias for Sanger.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The encoding defines the accepted range of values.&lt;/p>
&lt;p>If you want to convert quality codes, use &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/modification-steps/convertquality/">ConvertQuality&lt;/a>.&lt;/p>
&lt;p>See &lt;a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC2847217/">https://pmc.ncbi.nlm.nih.gov/articles/PMC2847217/&lt;/a> , table 1&lt;/p></description></item><item><title/><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/validation-steps/validateseq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/validation-steps/validateseq/</guid><description>&lt;h1 id="validateseq">
 ValidateSeq
 &lt;a class="anchor" href="#validateseq">#&lt;/a>
&lt;/h1>
&lt;p>Validate that only allowed characters are in the sequence.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;ValidateSeq&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">allowed&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;AGTC&amp;#34;&lt;/span> &lt;span style="color:#75715e"># String. Example &amp;#39;ACGTN&amp;#39;, the allowed characters&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments, or &amp;#39;All&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>(Older) Documentation Versions</title><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/older_versions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/older_versions/</guid><description>&lt;p>Available builds:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://tyberiusprime.github.io/fastqrab/main/">main&lt;/a>&lt;/li>
&lt;li>&lt;strong>v0.8.1&lt;/strong> (this build)&lt;/li>
&lt;li>&lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.0-test/">v0.8.0-test&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.0/">v0.8.0&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Calc Base Content</title><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calcbasecontent/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calcbasecontent/</guid><description>&lt;h1 id="calcbasecontent">
 CalcBaseContent
 &lt;a class="anchor" href="#calcbasecontent">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;CalcBaseContent&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments, or &amp;#39;All&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;at_content&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">bases_to_count&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;AT&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">bases_to_ignore&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;N&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">relative&lt;/span> = &lt;span style="color:#66d9ef">true&lt;/span> &lt;span style="color:#75715e"># default&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Counts the percentage of bases that match &lt;code>bases_to_count&lt;/code>, while removing any bases listed in &lt;code>bases_to_ignore&lt;/code> from the denominator (if relative = True).&lt;/p>
&lt;p>Both lists are case-insensitive, and accept only ascii letters. When no bases remain after filtering, the step returns &lt;code>0&lt;/code>.&lt;/p>
&lt;p>Set &lt;code>relative = false&lt;/code> to emit absolute base counts instead of percentages. Absolute mode requires &lt;code>bases_to_ignore&lt;/code> to remain unset, otherwise the configuration check fails.&lt;/p></description></item><item><title>Calc GC Content</title><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calcgccontent/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calcgccontent/</guid><description>&lt;h1 id="calcgccontent">
 CalcGCContent
 &lt;a class="anchor" href="#calcgccontent">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;CalcGCContent&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments, or &amp;#39;All&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;gc&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Count what percentage of bases are GC (as opposed to AT).
Non-AGTC bases (e.g. N) are ignored.&lt;/p>
&lt;p>Output is 0..100.&lt;/p>
&lt;p>Wrapper around &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calcbasecontent/">CalcBaseContent&lt;/a> with &lt;code>bases = &amp;quot;GC&amp;quot;, ignore=&amp;quot;N&amp;quot;, relative=true&lt;/code>).&lt;/p></description></item><item><title>Calc N Count</title><link>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calcncount/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyberiusprime.github.io/fastqrab/v0.8.1/docs/reference/tag-steps/calc/calcncount/</guid><description>&lt;h1 id="calcncount">
 CalcNCount
 &lt;a class="anchor" href="#calcncount">#&lt;/a>
&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6e22e">step&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">action&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;CalcNCount&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">segment&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;read1&amp;#34;&lt;/span> &lt;span style="color:#75715e"># Any of your input segments, or &amp;#39;All&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">out_label&lt;/span>=&lt;span style="color:#e6db74">&amp;#34;ncount&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Count how many N are present in the read.&lt;/p>
&lt;p>This step is a convenient wrapper for
&lt;a href="./CalcBaseContent.md">&lt;code>CalcBaseContent&lt;/code>&lt;/a> with &lt;code>bases_to_count = &amp;quot;N&amp;quot;&lt;/code> and
&lt;code>relative = false&lt;/code>.&lt;/p>
&lt;h2 id="corresponding-options-in-other-software">
 Corresponding options in other software
 &lt;a class="anchor" href="#corresponding-options-in-other-software">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>fastp: &amp;ndash;n_base_limit (if combined with &lt;a href="https://tyberiusprime.github.io/fastqrab/v0.8.1/fastqrab/v0.8.1/docs/reference/filter-steps/filterbynumerictag/">FilterByNumericTag&lt;/a>)&lt;/li>
&lt;/ul></description></item></channel></rss>