From 25a4c4d5dca160bf8f47cf6391788bfa198d584a Mon Sep 17 00:00:00 2001 From: pdimens Date: Fri, 8 Nov 2024 11:05:23 -0500 Subject: [PATCH] updates, rm req column in favor of badges --- Workflows/Align/bwa.md | 18 +-- Workflows/Align/ema.md | 24 ++-- Workflows/Align/strobe.md | 20 +-- Workflows/SV/leviathan.md | 20 +-- Workflows/SV/naibr.md | 24 ++-- Workflows/Simulate/simulate-linkedreads.md | 40 +++--- Workflows/Simulate/simulate-variants.md | 20 +-- Workflows/assembly.md | 36 +++--- Workflows/deconvolve.md | 14 +-- Workflows/demultiplex.md | 16 +-- Workflows/impute.md | 14 +-- Workflows/metassembly.md | 20 +-- Workflows/phase.md | 22 ++-- Workflows/preflight.md | 6 +- Workflows/qc.md | 20 +-- Workflows/snp.md | 16 +-- development.md | 1 + retype.yml | 4 +- snakemake.md | 4 +- static/lr_conversion.png | Bin 90452 -> 93185 bytes static/lr_conversion.svg | 16 +-- utilities.md | 140 +++++++++++++++++++++ 22 files changed, 319 insertions(+), 176 deletions(-) create mode 100644 utilities.md diff --git a/Workflows/Align/bwa.md b/Workflows/Align/bwa.md index 9a98de6d0..aa60e2783 100644 --- a/Workflows/Align/bwa.md +++ b/Workflows/Align/bwa.md @@ -32,15 +32,15 @@ harpy align bwa --genome genome.fasta Sequences/ In addition to the [!badge variant="info" corners="pill" text="common runtime options"](/commonoptions.md), the [!badge corners="pill" text="align bwa"] module is configured using these command-line arguments: {.compact} -| argument | short name | type | default | required | description | -|:-------------------|:----------:|:----------------------|:-------:|:--------:|:------------------------------------------------------| -| `INPUTS` | | file/directory paths | | ‼️ | Files or directories containing [input FASTQ files](/commonoptions.md#input-arguments) | -| `--contigs` | | file path or list | | | [Contigs to plot](/commonoptions.md#--contigs) in the report | -| `--extra-params` | `-x` | string | | | Additional EMA-align/BWA arguments, in quotes | -| `--genome` | `-g` | file path | | ‼️ | Genome assembly for read mapping | -| `--keep-unmapped` | `-u` | toggle | false | | Output unmapped sequences too | -| `--min-quality` | `-q` | integer (0-40) | 30 | | Minimum `MQ` (SAM mapping quality) to pass filtering | -| `--molecule-distance` | `-d` | integer | 100000 | | Base-pair distance threshold to separate molecules | +| argument | short name | type | default | description | +| :-------------------- | :--------: | :------------------- | :-----: | :----------------------------------------------------------------------------------------------------------------------------- | +| `INPUTS` | | file/directory paths | | [!badge variant="info" text="required"] Files or directories containing [input FASTQ files](/commonoptions.md#input-arguments) | +| `--contigs` | | file path or list | | [Contigs to plot](/commonoptions.md#--contigs) in the report | +| `--extra-params` | `-x` | string | | Additional EMA-align/BWA arguments, in quotes | +| `--genome` | `-g` | file path | | [!badge variant="info" text="required"] Genome assembly for read mapping | +| `--keep-unmapped` | `-u` | toggle | false | Output unmapped sequences too | +| `--min-quality` | `-q` | integer (0-40) | 30 | Minimum `MQ` (SAM mapping quality) to pass filtering | +| `--molecule-distance` | `-d` | integer | 100000 | Base-pair distance threshold to separate molecules | ### Molecule distance The `--molecule-distance` option is used during the BWA alignment workflow diff --git a/Workflows/Align/ema.md b/Workflows/Align/ema.md index 5d7086bcf..4bc46f942 100644 --- a/Workflows/Align/ema.md +++ b/Workflows/Align/ema.md @@ -41,18 +41,18 @@ harpy align ema --genome genome.fasta Sequences/ In addition to the [!badge variant="info" corners="pill" text="common runtime options"](/commonoptions.md), the [!badge corners="pill" text="align ema"] module is configured using these command-line arguments: {.compact} -| argument | short name | type | default | required | description | -|:-------------------|:----------:|:----------------------|:-------:|:--------:|:-------------------------------------------------------------------| -| `INPUTS` | | file/directory paths | | ‼️ | Files or directories containing [input FASTQ files](/commonoptions.md#input-arguments) | -| `--contigs` | | file path or list | | | [Contigs to plot](/commonoptions.md#--contigs) in the report | -| `--fragment-density` | `-d` | toggle | false | | Perform read fragment density optimization | -| `--ema-bins` | `-e` | integer (1-1000) | 500 | | Number of barcode bins for EMA | -| `--extra-params` | `-x` | string | | | Additional EMA-align arguments, in quotes | -| `--genome` | `-g` | file path | | ‼️ | Genome assembly for read mapping | -| `--keep-unmapped` | `-u` | toggle | false | | Output unmapped sequences too | -| `--min-quality` | `-q` | integer (0-40) | 30 | | Minimum `MQ` (SAM mapping quality) to pass filtering | -| `--platform` | `-p` | string | haplotag | ‼️ | Linked read technology: `haplotag` or `10x` | -| `--whitelist` | `-w` | file path | | | Path to barcode whitelist (`--platform 10x` only) | +| argument | short name | type | default | description | +| :------------------- | :--------: | :------------------- | :------: | :----------------------------------------------------------------------------------------------------------------------------- | +| `INPUTS` | | file/directory paths | | [!badge variant="info" text="required"] Files or directories containing [input FASTQ files](/commonoptions.md#input-arguments) | +| `--contigs` | | file path or list | | [Contigs to plot](/commonoptions.md#--contigs) in the report | +| `--fragment-density` | `-d` | toggle | false | Perform read fragment density optimization | +| `--ema-bins` | `-e` | integer (1-1000) | 500 | Number of barcode bins for EMA | +| `--extra-params` | `-x` | string | | Additional EMA-align arguments, in quotes | +| `--genome` | `-g` | file path | | [!badge variant="info" text="required"] Genome assembly for read mapping | +| `--keep-unmapped` | `-u` | toggle | false | Output unmapped sequences too | +| `--min-quality` | `-q` | integer (0-40) | 30 | Minimum `MQ` (SAM mapping quality) to pass filtering | +| `--platform` | `-p` | string | haplotag | [!badge variant="info" text="required"] Linked read technology: `haplotag` or `10x` | +| `--whitelist` | `-w` | file path | | Path to barcode whitelist (`--platform 10x` only) | ### Barcode whitelist Some linked-read methods (e.g. 10x, Tellseq) require the inclusion of a barcode "whitelist." This file is a diff --git a/Workflows/Align/strobe.md b/Workflows/Align/strobe.md index 0910c2a60..cfc62f2d1 100644 --- a/Workflows/Align/strobe.md +++ b/Workflows/Align/strobe.md @@ -32,16 +32,16 @@ harpy align strobe --genome genome.fasta Sequences/ In addition to the [!badge variant="info" corners="pill" text="common runtime options"](/commonoptions.md), the [!badge corners="pill" text="align strobe"] module is configured using these command-line arguments: {.compact} -| argument | short name | type | default | required | description | -|:-------------------|:----------:|:----------------------|:-------:|:--------:|:------------------------------------------------------| -| `INPUTS` | | file/directory paths | | ‼️ | Files or directories containing [input FASTQ files](/commonoptions.md#input-arguments) | -| `--contigs` | | file path or list | | | [Contigs to plot](/commonoptions.md#--contigs) in the report | -| `--extra-params` | `-x` | string | | | Additional EMA-align/BWA arguments, in quotes | -| `--genome` | `-g` | file path | | ‼️ | Genome assembly for read mapping | -| `--keep-unmapped` | `-u` | toggle | false | | Output unmapped sequences too | -| `--min-quality` | `-d` | integer (0-40) | 30 | | Minimum `MQ` (SAM mapping quality) to pass filtering | -| `--molecule-distance` | `-m` | integer | 100000 | | Base-pair distance threshold to separate molecules | -| `--read-length` | `-l` | choice | `auto` | | Average read length for creating index. Options: [auto, 50, 75, 100, 125, 150, 250, 400] | +| argument | short name | type | default | description | +| :-------------------- | :--------: | :------------------- | :-----: | :----------------------------------------------------------------------------------------------------------------------------- | +| `INPUTS` | | file/directory paths | | [!badge variant="info" text="required"] Files or directories containing [input FASTQ files](/commonoptions.md#input-arguments) | +| `--contigs` | | file path or list | | [Contigs to plot](/commonoptions.md#--contigs) in the report | +| `--extra-params` | `-x` | string | | Additional EMA-align/BWA arguments, in quotes | +| `--genome` | `-g` | file path | | [!badge variant="info" text="required"] Genome assembly for read mapping | +| `--keep-unmapped` | `-u` | toggle | false | Output unmapped sequences too | +| `--min-quality` | `-d` | integer (0-40) | 30 | Minimum `MQ` (SAM mapping quality) to pass filtering | +| `--molecule-distance` | `-m` | integer | 100000 | Base-pair distance threshold to separate molecules | +| `--read-length` | `-l` | choice | `auto` | Average read length for creating index. Options: [auto, 50, 75, 100, 125, 150, 250, 400] | ### Read Length The strobealign program uses a new _strobemer_ design for aligning and requires its own way of indexing the genome. diff --git a/Workflows/SV/leviathan.md b/Workflows/SV/leviathan.md index cf5f9921a..64e0c5239 100644 --- a/Workflows/SV/leviathan.md +++ b/Workflows/SV/leviathan.md @@ -63,16 +63,16 @@ harpy sv leviathan --threads 20 -g genome.fasta Align/bwa In addition to the [!badge variant="info" corners="pill" text="common runtime options"](/commonoptions.md), the [!badge corners="pill" text="sv leviathan"] module is configured using these command-line arguments: {.compact} -| argument | short name | default | required | description | -| :--------------- | :--------: | :-----: | :------: | :----------------------------------------------------------------------------------- | -| `INPUTS` | | | ‼️ | Files or directories containing [input BAM files](/commonoptions.md#input-arguments) | -| `--contigs` | | | | [Contigs to plot](/commonoptions.md#--contigs) in the report | -| `--extra-params` | `-x` | | | Additional naibr arguments, in quotes | -| `--genome` | `-g` | | ‼️ | Genome assembly that was used to create alignments | -| `--iterations` | `-i` | `50` | | Number of iterations to perform through index (reduces memory) | -| `--min-barcodes` | `-b` | `2` | | Minimum number of barcode overlaps supporting candidate SV | -| `--min-sv` | `-m` | `1000` | | Minimum size of SV to detect | -| `--populations` | `-p` | | | Tab-delimited file of sample\<*tab*\>group | +| argument | short name | default | description | +| :--------------- | :--------: | :-----: | :--------------------------------------------------------------------------------------------------------------------------- | +| `INPUTS` | | | [!badge variant="info" text="required"] Files or directories containing [input BAM files](/commonoptions.md#input-arguments) | +| `--contigs` | | | [Contigs to plot](/commonoptions.md#--contigs) in the report | +| `--extra-params` | `-x` | | Additional naibr arguments, in quotes | +| `--genome` | `-g` | | [!badge variant="info" text="required"] Genome assembly that was used to create alignments | +| `--iterations` | `-i` | `50` | Number of iterations to perform through index (reduces memory) | +| `--min-barcodes` | `-b` | `2` | Minimum number of barcode overlaps supporting candidate SV | +| `--min-sv` | `-m` | `1000` | Minimum size of SV to detect | +| `--populations` | `-p` | | Tab-delimited file of sample\<*tab*\>group | ### Single-sample variant calling When **not** using a population grouping file via `--populations`, variants will be called per-sample. diff --git a/Workflows/SV/naibr.md b/Workflows/SV/naibr.md index 9f5375fed..898e4d8cb 100644 --- a/Workflows/SV/naibr.md +++ b/Workflows/SV/naibr.md @@ -63,18 +63,18 @@ harpy sv naibr --threads 20 --genome genome.fasta --vcf Variants/data.vcf.gz Ali In addition to the [!badge variant="info" corners="pill" text="common runtime options"](/commonoptions.md), the [!badge corners="pill" text="sv naibr"] module is configured using these command-line arguments: {.compact} -| argument | short name | default | required | description | -| :-------------------- | :--------: | :------: | :------: | :----------------------------------------------------------------------------------- | -| `INPUTS` | | | ‼️ | Files or directories containing [input BAM files](/commonoptions.md#input-arguments) | -| `--contigs` | | | | [Contigs to plot](/commonoptions.md#--contigs) in the report | -| `--extra-params` | `-x` | | | Additional naibr arguments, in quotes | -| `--genome` | `-g` | | ‼️ | Genome assembly for phasing bam files | -| `--min-barcodes` | `-b` | `2` | | Minimum number of barcode overlaps supporting candidate SV | -| `--min-quality` | `-q` | `30` | | Minimum `MQ` (SAM mapping quality) to pass filtering | -| `--min-sv` | `-n` | `1000` | | Minimum size of SV to detect | -| `--molecule-distance` | `-m` | `100000` | | Base-pair distance threshold to separate molecules | -| `--populations` | `-p` | | | Tab-delimited file of sample\<*tab*\>group | -| `--vcf` | `-v` | | ❗ | Phased vcf file for phasing bam files ([see below](#optional-vcf-file)) | +| argument | short name | default | description | +| :-------------------- | :--------: | :------: | :---------------------------------------------------------------------------------------------------------------------------- | +| `INPUTS` | | | [!badge variant="info" text="required"] Files or directories containing [input BAM files](/commonoptions.md#input-arguments) | +| `--contigs` | | | [Contigs to plot](/commonoptions.md#--contigs) in the report | +| `--extra-params` | `-x` | | Additional naibr arguments, in quotes | +| `--genome` | `-g` | | [!badge variant="info" text="required"] Genome assembly for phasing bam files | +| `--min-barcodes` | `-b` | `2` | Minimum number of barcode overlaps supporting candidate SV | +| `--min-quality` | `-q` | `30` | Minimum `MQ` (SAM mapping quality) to pass filtering | +| `--min-sv` | `-n` | `1000` | Minimum size of SV to detect | +| `--molecule-distance` | `-m` | `100000` | Base-pair distance threshold to separate molecules | +| `--populations` | `-p` | | Tab-delimited file of sample\<*tab*\>group | +| `--vcf` | `-v` | | [!badge variant="info" text="conditionally required"] Phased vcf file for phasing bam files ([see below](#optional-vcf-file)) | ### Molecule distance The `--molecule-distance` option is used to let the program determine how far apart alignments on a contig with the same diff --git a/Workflows/Simulate/simulate-linkedreads.md b/Workflows/Simulate/simulate-linkedreads.md index 233f67918..8ec363191 100644 --- a/Workflows/Simulate/simulate-linkedreads.md +++ b/Workflows/Simulate/simulate-linkedreads.md @@ -16,16 +16,16 @@ Simulate linked reads from a genome - [!badge variant="ghost" text="optional"] a file of 16-basepair barcodes to tag linked reads with ==- :icon-question: LRSIM differences The original [LRSIM](https://github.com/aquaskyline/LRSIM) is a lengthy Perl script that, like Harpy, outsources -to various other programs (SURVIVOR, DWGSIM, samtools, msort) and acts as a workflow through these programs. The Harpy -version of LRSIM keeps only the novel LRSIM code that creates linked reads from reads simulated by DWGSIM. The -rest of LRSIM's components are reincorporated into the Snakemake workflow governing the [!badge corners="pill" text="simulate linkedreads"]module, while removing the SURVIVOR part since [!badge corners="pill" text="simulate {snpindel,...}"](simulate-variants.md) are used for that purpose. +to various other programs (`SURVIVOR`, `DWGSIM`, `samtools`, `msort`) and acts as a workflow through these programs. The Harpy +version of `LRSIM` keeps only the novel `LRSIM` code that creates linked reads from reads simulated by `DWGSIM`. The +rest of `LRSIM`'s components are reincorporated into the Snakemake workflow governing the [!badge corners="pill" text="simulate linkedreads"] module, while removing the `SURVIVOR` part since [!badge corners="pill" text="simulate {snpindel,...}"](simulate-variants.md) are used for that purpose. #### Notable differences -- dependencies are expected to be on the `PATH`, not hardcoded to the folder LRSIM is running from +- dependencies are expected to be on the `PATH`, not hardcoded to the folder `LRSIM` is running from - `-r` parameter changed to folder prefix since Harpy uses `-g` for the haplotypes - outputs are coded a little differently for flexibility (and use the `-r` parameter for some parts) -- SURVIVOR variant simulation functionality removed entirely -- DWGSIM, samtools, msort, and extractReads functionality moved into Harpy workflow -- uses newer version of DWGSIM +- `SURVIVOR` variant simulation functionality removed entirely +- `DWGSIM`, samtools, msort, and extractReads functionality moved into Harpy workflow +- uses newer version of `DWGSIM` === You may want to benchmark haplotag data on different kinds of genomic variants. To @@ -45,18 +45,18 @@ harpy simulate linkedreads -t 4 -n 2 -l 100 -p 50 data/genome.hap1.fasta data/ In addition to the [!badge variant="info" corners="pill" text="common runtime options"](/commonoptions.md), the [!badge corners="pill" text="simulate linkedreads"] module is configured using these command-line arguments: {.compact} -| argument | short name | default | required | description | -| :------------------ | :--------: | :---------------------------------------------------------------------------------------------: | :------: | :---------------------------------------------------- | -| `HAP1_GENOME` | | | ‼️ | Haplotype 1 of the diploid genome to simulate reads | -| `HAP2_GENOME` | | | ‼️ | Haplotype 1 of the diploid genome to simulate reads | -| `--barcodes` | `-b` | [10X barcodes](https://github.com/aquaskyline/LRSIM/blob/master/4M-with-alts-february-2016.txt) | | File of linked-read barcodes to add to reads | -| `--distance-sd` | `-s` | `15` | | Standard deviation of read-pair distance | -| `--molecule-length` | `-l` | `100` | | Mean molecule length (kbp) | -| `--molecules-per` | `-m` | `10` | | Average number of molecules per partition | -| `--mutation-rate` | `-r` | `0.001` | | Random mutation rate for simulating reads (0 - 1.0) | -| `--outer-distance` | `-d` | `350` | | Outer distance between paired-end reads (bp) | -| `--patitions` | `-p` | `1500` | | Number (in thousands) of partitions/beads to generate | -| `--read-pairs` | `-n` | `600` | | Number (in millions) of read pairs to simulate | +| argument | short name | default | description | +| :------------------ | :--------: | :---------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------ | +| `HAP1_GENOME` | | | [!badge variant="info" text="required"] Haplotype 1 of the diploid genome to simulate reads | +| `HAP2_GENOME` | | | [!badge variant="info" text="required"] Haplotype 2 of the diploid genome to simulate reads | +| `--barcodes` | `-b` | [10X barcodes](https://github.com/aquaskyline/LRSIM/blob/master/4M-with-alts-february-2016.txt) | File of linked-read barcodes to add to reads | +| `--distance-sd` | `-s` | `15` | Standard deviation of read-pair distance | +| `--molecule-length` | `-l` | `100` | Mean molecule length (kbp) | +| `--molecules-per` | `-m` | `10` | Average number of molecules per partition | +| `--mutation-rate` | `-r` | `0.001` | Random mutation rate for simulating reads (0 - 1.0) | +| `--outer-distance` | `-d` | `350` | Outer distance between paired-end reads (bp) | +| `--patitions` | `-p` | `1500` | Number (in thousands) of partitions/beads to generate | +| `--read-pairs` | `-n` | `600` | Number (in millions) of read pairs to simulate | ## Mutation Rate The read simulation is two-part: first `dwgsim` generates forward and reverse FASTQ files from the provided genome haplotypes @@ -102,7 +102,7 @@ to haplotag format, where the barcode is coded in the sequence header under the entire barcode due to a segment failing to be associated with a beadtag segment. In the simulated data, since 10X barcodes don't feature segments, failure to associate the first 16 bases of read 1 with barcodes provided to `--barcodes` will appear as `BX:Z:A00C00B00D00`. The original 10X barcode (or first 16 bases of read 1) -will be removed from the sequence and stored in the `TX:Z` sequence header tag, e.g. `TX:Z:ATATGTACTCATACCA`. +will be removed from the sequence and stored in the `OX:Z` sequence header tag, e.g. `OX:Z:ATATGTACTCATACCA`. The paired reverse read will also have these tags. The diagram below attempts to simplify this visually. ![10X linked read barcode conversion into AxxCxxBxxDxx haplotag barcode format](/static/lr_conversion.png) diff --git a/Workflows/Simulate/simulate-variants.md b/Workflows/Simulate/simulate-variants.md index c23e2943c..65a46dc74 100644 --- a/Workflows/Simulate/simulate-variants.md +++ b/Workflows/Simulate/simulate-variants.md @@ -46,16 +46,16 @@ Each requires and input genome at the end of the command line, and each requires to randomly simulate, or a `--vcf` of specific variants to simulate. There are also these unifying options among the different variant types: {.compact} -| argument | short name | required | description | -| :----------------- | :--------- | :------: | :----------------------------------------------------------------------------------------------------- | -| `INPUT_GENOME` | | ‼️ | The haploid genome to simulate variants onto | -| `--centromeres` | `-c` | | GFF3 file of centromeres to avoid | -| `--exclude-chr` | `-e` | | Text file of chromosomes to avoid, one per line | -| `--genes` | `-g` | | GFF3 file of genes to avoid simulating over (see `snpindel` for caveat) | -| `--heterozygosity` | `-z` | | [proportion of simulated variants to make heterozygous ](#heterozygosity) (default: `0`) | -| `--only-vcf` | | | When used with `--heterozygosity`, will create the diploid VCFs but will not simulate a diploid genome | -| `--prefix` | | | Naming prefix for output files (default: `sim.{module_name}`) | -| `--randomseed` | | | Random seed for simulation | +| argument | short name | description | +| :----------------- | :--------: | :----------------------------------------------------------------------------------------------------- | +| `INPUT_GENOME` | | [!badge variant="info" text="required"] The haploid genome to simulate variants onto | +| `--centromeres` | `-c` | GFF3 file of centromeres to avoid | +| `--exclude-chr` | `-e` | Text file of chromosomes to avoid, one per line | +| `--genes` | `-g` | GFF3 file of genes to avoid simulating over (see `snpindel` for caveat) | +| `--heterozygosity` | `-z` | [proportion of simulated variants to make heterozygous ](#heterozygosity) (default: `0`) | +| `--only-vcf` | | When used with `--heterozygosity`, will create the diploid VCFs but will not simulate a diploid genome | +| `--prefix` | | Naming prefix for output files (default: `sim.{module_name}`) | +| `--randomseed` | | Random seed for simulation | !!!warning simulations can be slow Given software limitations, simulating many variants **relative to the size of the input genome** will be noticeably slow. diff --git a/Workflows/assembly.md b/Workflows/assembly.md index 9efc9f4d0..2c8d1e39f 100644 --- a/Workflows/assembly.md +++ b/Workflows/assembly.md @@ -31,24 +31,24 @@ module is configured using the command-line arguments below. Since the assembly the descriptions are provided with an extra badge to reflect which part of the assembly process they correspond to. {.compact} -| argument | short name | default | required | description | -| :-------------------- | :--------: | :---------: | :------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `FASTQ_R1` | | | ‼️ | FASTQ file of forward reads | -| `FASTQ_R2` | | | ‼️ | FASTQ file of reverse reads | -| `--extra-params` | `-x` | | | [!badge variant="secondary" text="spades assembly"] Additional spades parameters, in quotes | -| `--kmer-length` | `-k` | `auto` | | [!badge variant="secondary" text="spades assembly"] Kmer lengths to use for initial spades assembly. They must be **odd** and **<128**, separated by commas, and without spaces. (e.g. `13,23,51`) | -| `--max-memory` | `-r` | `10000` | | [!badge variant="secondary" text="spades assembly"] Maximum memory for spades to use, given in megabytes | -| `--arcs-extra` | `-y` | | | [!badge variant="secondary" text="arcs scaffold"] Additional ARCS parameters, in quotes and `option=arg` format | -| `--contig-length` | `-c` | `500` | | [!badge variant="secondary" text="arcs scaffold"] Minimum contig length | -| `--links` | `-n` | `5` | | [!badge variant="secondary" text="arcs scaffold"] Minimum number of links to compute scaffold | -| `--min-aligned` | `-a` | `5` | | [!badge variant="secondary" text="arcs scaffold"] Minimum aligned read pairs per barcode | -| `--min-quality` | `-q` | `0` | | [!badge variant="secondary" text="arcs scaffold"] Minimum mapping quality | -| `--mismatch` | `-m` | `5` | | [!badge variant="secondary" text="arcs scaffold"] Maximum number of mismatches | -| `--molecule-distance` | `-d` | `50000` | | [!badge variant="secondary" text="arcs scaffold"] Distance cutoff to split molecules (bp) | -| `--molecule-length` | `-l` | `2000` | | [!badge variant="secondary" text="arcs scaffold"] Minimum molecule length (bp) | -| `--seq-identity` | `-i` | `98` | | [!badge variant="secondary" text="arcs scaffold"] Minimum sequence identity | -| `--span` | `-s` | `20` | | [!badge variant="secondary" text="arcs scaffold"] Minimum number of spanning molecules to be considered assembled | -| `--organism-type` | `-u` | `eukaryote` | | [!badge variant="secondary" text="report"] Organism type for assembly report: `eukaryote`,`prokaryote`, or `fungus` | +| argument | short name | default | description | +| :-------------------- | :--------: | :---------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `FASTQ_R1` | | | [!badge variant="info" text="required"] FASTQ file of forward reads | +| `FASTQ_R2` | | | [!badge variant="info" text="required"] FASTQ file of reverse reads | +| `--extra-params` | `-x` | | [!badge variant="secondary" text="spades assembly"] Additional spades parameters, in quotes | +| `--kmer-length` | `-k` | `auto` | [!badge variant="secondary" text="spades assembly"] Kmer lengths to use for initial spades assembly. They must be **odd** and **<128**, separated by commas, and without spaces. (e.g. `13,23,51`) | +| `--max-memory` | `-r` | `10000` | [!badge variant="secondary" text="spades assembly"] Maximum memory for spades to use, given in megabytes | +| `--arcs-extra` | `-y` | | [!badge variant="secondary" text="arcs scaffold"] Additional ARCS parameters, in quotes and `option=arg` format | +| `--contig-length` | `-c` | `500` | [!badge variant="secondary" text="arcs scaffold"] Minimum contig length | +| `--links` | `-n` | `5` | [!badge variant="secondary" text="arcs scaffold"] Minimum number of links to compute scaffold | +| `--min-aligned` | `-a` | `5` | [!badge variant="secondary" text="arcs scaffold"] Minimum aligned read pairs per barcode | +| `--min-quality` | `-q` | `0` | [!badge variant="secondary" text="arcs scaffold"] Minimum mapping quality | +| `--mismatch` | `-m` | `5` | [!badge variant="secondary" text="arcs scaffold"] Maximum number of mismatches | +| `--molecule-distance` | `-d` | `50000` | [!badge variant="secondary" text="arcs scaffold"] Distance cutoff to split molecules (bp) | +| `--molecule-length` | `-l` | `2000` | [!badge variant="secondary" text="arcs scaffold"] Minimum molecule length (bp) | +| `--seq-identity` | `-i` | `98` | [!badge variant="secondary" text="arcs scaffold"] Minimum sequence identity | +| `--span` | `-s` | `20` | [!badge variant="secondary" text="arcs scaffold"] Minimum number of spanning molecules to be considered assembled | +| `--organism-type` | `-u` | `eukaryote` | [!badge variant="secondary" text="report"] Organism type for assembly report: `eukaryote`,`prokaryote`, or `fungus` | ## :icon-tag: Deconvolved Inputs diff --git a/Workflows/deconvolve.md b/Workflows/deconvolve.md index eb950568e..8d9b91f08 100644 --- a/Workflows/deconvolve.md +++ b/Workflows/deconvolve.md @@ -45,13 +45,13 @@ harpy deconvolve OPTIONS... INPUTS... ## :icon-terminal: Running Options {.compact} -| argument | short name | default | required | description | -| :-------------- | :--------: | :-----: | :------: | :------------------------------------------------------------------------------------- | -| `INPUTS` | | | ‼️ | Files or directories containing [input FASTQ files](/commonoptions.md#input-arguments) | -| `--density` | `-d` | `3` | | On average, $\frac{1}{2^d}$ kmers are indexed | -| `--dropout` | `-a` | `0` | | Minimum cloud size to deconvolve | -| `--kmer-length` | `-k` | `21` | | Size of k-mers to search for similarities | -| `--window-size` | `-w` | `40` | | Size of window guaranteed to contain at least one kmer | +| argument | short name | default | description | +| :-------------- | :--------: | :-----: | :----------------------------------------------------------------------------------------------------------------------------- | +| `INPUTS` | | | [!badge variant="info" text="required"] Files or directories containing [input FASTQ files](/commonoptions.md#input-arguments) | +| `--density` | `-d` | `3` | On average, $\frac{1}{2^d}$ kmers are indexed | +| `--dropout` | `-a` | `0` | Minimum cloud size to deconvolve | +| `--kmer-length` | `-k` | `21` | Size of k-mers to search for similarities | +| `--window-size` | `-w` | `40` | Size of window guaranteed to contain at least one kmer | ## Resulting Barcodes After deconvolution, some barcodes may have a hyphenated suffix like `-1` or `-2` (e.g. `A01C33B41D93-1`). diff --git a/Workflows/demultiplex.md b/Workflows/demultiplex.md index 2961b7980..3efb9d9c2 100644 --- a/Workflows/demultiplex.md +++ b/Workflows/demultiplex.md @@ -28,14 +28,14 @@ harpy demultiplex gen1 --threads 20 --schema demux.schema Plate_1_S001_R*.fastq. In addition to the [!badge variant="info" corners="pill" text="common runtime options"](/commonoptions.md), the [!badge corners="pill" text="demultiplex"] module is configured using these command-line arguments: {.compact} -| argument | short name | required | description | -| :--------- | :--------: | :------: | :--------------------------------------------------------------- | -| `METHOD` | | ‼️ | Haplotag technology of the sequences [`gen1`] | -| `R1_FQ` | | ‼️ | The forward multiplexed FASTQ file | -| `R2_FQ` | | ‼️ | The reverse multiplexed FASTQ file | -| `I1_FQ` | | ‼️ | The forward FASTQ index file provided by the sequencing facility | -| `I2_FQ` | | ‼️ | The reverse FASTQ index file provided by the sequencing facility | -| `--schema` | `-s` | ‼️ | Tab-delimited file of sample\barcode | +| argument | short name | description | +| :--------- | :--------: | :--------------------------------------------------------------- | +| `METHOD` | | [!badge variant="info" text="required"] Haplotag technology of the sequences [`gen1`] | +| `R1_FQ` | | [!badge variant="info" text="required"] The forward multiplexed FASTQ file | +| `R2_FQ` | | [!badge variant="info" text="required"] The reverse multiplexed FASTQ file | +| `I1_FQ` | | [!badge variant="info" text="required"] The forward FASTQ index file provided by the sequencing facility | +| `I2_FQ` | | [!badge variant="info" text="required"] The reverse FASTQ index file provided by the sequencing facility | +| `--schema` | `-s` | [!badge variant="info" text="required"] Tab-delimited file of sample\barcode | ## Haplotag Types ==- Generation 1 - `gen1` diff --git a/Workflows/impute.md b/Workflows/impute.md index 048669ef9..e32ef1578 100644 --- a/Workflows/impute.md +++ b/Workflows/impute.md @@ -55,13 +55,13 @@ harpy impute --threads 20 --vcf Variants/mpileup/variants.raw.bcf --parameters s In addition to the [!badge variant="info" corners="pill" text="common runtime options"](/commonoptions.md), the [!badge corners="pill" text="impute"] module is configured using these command-line arguments: {.compact} -| argument | short name | default | required | description | -| :--------------- | :--------: | :-----: | :------: | :--------------------------------------------------------------------------------------------------------------- | -| `INPUTS` | | | ‼️ | Files or directories containing [input BAM files](/commonoptions.md) | -| `--extra-params` | `-x` | | | Extra arguments to add to the STITCH R function, provided in quotes and R syntax | -| `--parameters` | `-p` | | ‼️ | STITCH [parameter file](#parameter-file) (tab-delimited) | -| `--vcf` | `-v` | | ‼️ | Path to VCF/BCF file | -| `--vcf-samples` | | | | [Use samples present in vcf file](#prioritize-the-vcf-file) for imputation rather than those found the directory | +| argument | short name | default | description | +| :--------------- | :--------: | :-----: | :--------------------------------------------------------------------------------------------------------------------------- | +| `INPUTS` | | | [!badge variant="info" text="required"] Files or directories containing [input BAM files](/commonoptions.md) | +| `--extra-params` | `-x` | | Extra arguments to add to the STITCH R function, provided in quotes and R syntax | +| `--parameters` | `-p` | | [!badge variant="info" text="required"] STITCH [parameter file](#parameter-file) (tab-delimited) | +| `--vcf` | `-v` | | [!badge variant="info" text="required"] Path to VCF/BCF file | +| `--vcf-samples` | | | Use samples present in vcf file for imputation rather than those found the directory ([see below](#prioritize-the-vcf-file)) | ### Extra STITCH parameters You may add [additional parameters](https://github.com/rwdavies/STITCH/blob/master/Options.md) to STITCH by way of the diff --git a/Workflows/metassembly.md b/Workflows/metassembly.md index ff91b9f23..3c2c9a948 100644 --- a/Workflows/metassembly.md +++ b/Workflows/metassembly.md @@ -29,16 +29,16 @@ harpy metassembly --threads 20 -u prokaryote -k 13,51,75,83 FASTQ_R1 FASTQ_R2 In addition to the [!badge variant="info" corners="pill" text="common runtime options"](/commonoptions.md), the [!badge corners="pill" text="metassembly"] module is configured using these command-line arguments: {.compact} -| argument | short name | default | required | description | -| :---------------- | :--------: | :---------: | :------: | :--------------------------------------------------------------------------------------------------------------------------------------------- | -| `FASTQ_R1` | | | ‼️ | deconvolved FASTQ file of forward reads | -| `FASTQ_R2` | | | ‼️ | deconvolved FASTQ file of reverse reads | -| `--bx-tag` | `-b` | `BX` | ‼️ | Which sequence header tag encodes the linked-read barcode (`BX` for `BX:Z` or `BC` for `BC:Z`) | -| `--extra-params` | `-x` | | | Additional spades parameters, in quotes | -| `--ignore-bx` | | | | Ignore linked-read info for initial spades assembly | -| `--kmer-length` | `-k` | `auto` | | Kmer lengths to use for initial spades assembly. They must be **odd** and **<128**, separated by commas, and without spaces. (e.g. `13,23,51`) | -| `--max-memory` | `-r` | `10000` | | Maximum memory for spades to use, given in megabytes | -| `--organism-type` | `-u` | `eukaryote` | | Organism type for assembly report. Options: `eukaryote`,`prokaryote`,`fungus` | +| argument | short name | default | description | +| :---------------- | :--------: | :---------: | :--------------------------------------------------------------------------------------------------------------------------------------------- | +| `FASTQ_R1` | | | [!badge variant="info" text="required"] deconvolved FASTQ file of forward reads | +| `FASTQ_R2` | | | [!badge variant="info" text="required"] deconvolved FASTQ file of reverse reads | +| `--bx-tag` | `-b` | `BX` | [!badge variant="info" text="required"] Which sequence header tag encodes the linked-read barcode (`BX` for `BX:Z` or `BC` for `BC:Z`) | +| `--extra-params` | `-x` | | Additional spades parameters, in quotes | +| `--ignore-bx` | | | Ignore linked-read info for initial spades assembly | +| `--kmer-length` | `-k` | `auto` | Kmer lengths to use for initial spades assembly. They must be **odd** and **<128**, separated by commas, and without spaces. (e.g. `13,23,51`) | +| `--max-memory` | `-r` | `10000` | Maximum memory for spades to use, given in megabytes | +| `--organism-type` | `-u` | `eukaryote` | Organism type for assembly report. Options: `eukaryote`,`prokaryote`,`fungus` | ## :icon-tag: Deconvolved Inputs For linked-read assemblies, the barcodes need to be deconvolved in the sequence data, meaning that diff --git a/Workflows/phase.md b/Workflows/phase.md index e1b2acf76..f3e8be6b0 100644 --- a/Workflows/phase.md +++ b/Workflows/phase.md @@ -36,17 +36,17 @@ harpy phase --threads 20 --vcf Variants/variants.raw.bcf Align/ema In addition to the [!badge variant="info" corners="pill" text="common runtime options"](/commonoptions.md), the [!badge corners="pill" text="phase"] module is configured using these command-line arguments: {.compact} -| argument | short name | default | required | description | -| :-------------------- | :--------: | :------: | :------: | :--------------------------------------------------------------------------------------------------------------- | -| `INPUTS` | | | ‼️ | Files or directories containing [input BAM files](/commonoptions.md#input-arguments) | -| `--contigs` | | | | [Contigs to plot](/commonoptions.md#--contigs) in the report | -| `--extra-params` | `-x` | | | Additional Hapcut2 arguments, in quotes | -| `--genome ` | `-g` | | | Path to genome if wanting to also use reads spanning indels | -| `--ignore-bx` | `-b` | | | Ignore haplotag barcodes for phasing | -| `--molecule-distance` | `-d` | `100000` | | Base-pair distance threshold to separate molecules | -| `--prune-threshold` | `-p` | `7` | | PHRED-scale (%) threshold for pruning low-confidence SNPs | -| `--vcf` | `-v` | | ‼️ | Path to BCF/VCF file | -| `--vcf-samples` | | | | [Use samples present in vcf file](#prioritize-the-vcf-file) for imputation rather than those found the directory | +| argument | short name | default | description | +| :-------------------- | :--------: | :------: | :--------------------------------------------------------------------------------------------------------------------------- | +| `INPUTS` | | | [!badge variant="info" text="required"] Files or directories containing [input BAM files](/commonoptions.md#input-arguments) | +| `--contigs` | | | [Contigs to plot](/commonoptions.md#--contigs) in the report | +| `--extra-params` | `-x` | | Additional Hapcut2 arguments, in quotes | +| `--genome ` | `-g` | | Path to genome if wanting to also use reads spanning indels | +| `--ignore-bx` | `-b` | | Ignore haplotag barcodes for phasing | +| `--molecule-distance` | `-d` | `100000` | Base-pair distance threshold to separate molecules | +| `--prune-threshold` | `-p` | `7` | PHRED-scale (%) threshold for pruning low-confidence SNPs | +| `--vcf` | `-v` | | [!badge variant="info" text="required"] Path to BCF/VCF file | +| `--vcf-samples` | | | [Use samples present in vcf file](#prioritize-the-vcf-file) for imputation rather than those found the directory | ### Prioritize the vcf file Sometimes you want to run imputation on all the samples present in the `INPUTS`, but other times you may want diff --git a/Workflows/preflight.md b/Workflows/preflight.md index 2631517ab..a511c5672 100644 --- a/Workflows/preflight.md +++ b/Workflows/preflight.md @@ -47,9 +47,9 @@ harpy preflight bam --threads 20 Align/bwa In addition to the [!badge variant="info" corners="pill" text="common runtime options"](/commonoptions.md), the [!badge corners="pill" text="preflight fastq"] and [!badge corners="pill" text="preflight bam"] modules are configured using only command-line input arguments: {.compact} -| argument | short name | default | required | description | -| :------- | :--------: | :-----: | :------: | :-------------------------------------------------------------------------------------------- | -| `INPUTS` | | | ‼️ | Files or directories containing [input fastq or bam files](/commonoptions.md#input-arguments) | +| argument | short name | default | description | +| :------- | :--------: | :-----: | :------------------------------------------------------------------------------------------------------------------------------------ | +| `INPUTS` | | | [!badge variant="info" text="required"] Files or directories containing [input fastq or bam files](/commonoptions.md#input-arguments) | ## Workflow diff --git a/Workflows/qc.md b/Workflows/qc.md index 8748935df..ffb70d859 100644 --- a/Workflows/qc.md +++ b/Workflows/qc.md @@ -32,16 +32,16 @@ harpy qc --threads 20 Sequences_Raw/ In addition to the [!badge variant="info" corners="pill" text="common runtime options"](/commonoptions.md), the [!badge corners="pill" text="qc"] module is configured using these command-line arguments: {.compact} -| argument | short name | default | required | description | -| :-------------------- | :--------: | :---------: | :------: | :------------------------------------------------------------------------------------------------------------------------ | -| `INPUTS` | | | ‼️ | Files or directories containing [input FASTQ files](/commonoptions.md#input-arguments) | -| `--deconvolve` | `-c` | | | Resolve barcode clashes between reads from different molecules | -| `--deconvolve-params` | `-p` | `21,40,3,0` | | Accepts the [QuickDeconvolution parameters](/Workflows/deconvolve.md/#running-options) for `k`,`w`,`d`,`a`, in that order | -| `--deduplicate` | `-d` | | | Identify and remove PCR duplicates [!badge variant="secondary" text="recommended"] | -| `--extra-params` | `-x` | | | Additional fastp arguments, in quotes | -| `--min-length` | `-n` | `30` | | Discard reads shorter than this length | -| `--max-length` | `-m` | `150` | | Maximum length to trim sequences down to | -| `--trim-adapters` | `-a` | | | Detect and remove adapter sequences [!badge variant="secondary" text="recommended"] | +| argument | short name | default | description | +| :-------------------- | :--------: | :---------: | :----------------------------------------------------------------------------------------------------------------------------- | +| `INPUTS` | | | [!badge variant="info" text="required"] Files or directories containing [input FASTQ files](/commonoptions.md#input-arguments) | +| `--deconvolve` | `-c` | | Resolve barcode clashes between reads from different molecules | +| `--deconvolve-params` | `-p` | `21,40,3,0` | Accepts the [QuickDeconvolution parameters](/Workflows/deconvolve.md/#running-options) for `k`,`w`,`d`,`a`, in that order | +| `--deduplicate` | `-d` | | Identify and remove PCR duplicates [!badge variant="secondary" text="recommended"] | +| `--extra-params` | `-x` | | Additional fastp arguments, in quotes | +| `--min-length` | `-n` | `30` | Discard reads shorter than this length | +| `--max-length` | `-m` | `150` | Maximum length to trim sequences down to | +| `--trim-adapters` | `-a` | | Detect and remove adapter sequences [!badge variant="secondary" text="recommended"] | By default, this workflow will only quality-trim the sequences. You can also opt-in to: - [!badge variant="secondary" text="recommended"] find and remove sequencing adapters diff --git a/Workflows/snp.md b/Workflows/snp.md index c4a17606d..5c5dbf4a0 100644 --- a/Workflows/snp.md +++ b/Workflows/snp.md @@ -59,14 +59,14 @@ harpy snp freebayes --threads 20 --genome genome.fasta Align/bwa In addition to the [!badge variant="info" corners="pill" text="common runtime options"](../commonoptions.md), the [!badge corners="pill" text="snp"] module is configured using these command-line arguments: {.compact} -| argument | short name | default | required | description | -| :--------------- | :--------: | :-----: | :------: | :----------------------------------------------------------------------------------- | -| `INPUTS` | | | ‼️ | Files or directories containing [input BAM files](/commonoptions.md#input-arguments) | -| `--extra-params` | `-x` | | | Additional mpileup/freebayes arguments, in quotes | -| `--genome` | `-g` | | ‼️ | Genome assembly for variant calling | -| `--ploidy` | `-n` | `2` | | Ploidy of samples | -| `--populations` | `-p` | | | Tab-delimited file of sample\<*tab*\>group | -| `--regions` | `-r` | `50000` | | Regions to call variants on ([see below](#regions)) | +| argument | short name | default | description | +| :--------------- | :--------: | :-----: | :--------------------------------------------------------------------------------------------------------------------------- | +| `INPUTS` | | | [!badge variant="info" text="required"] Files or directories containing [input BAM files](/commonoptions.md#input-arguments) | +| `--extra-params` | `-x` | | Additional mpileup/freebayes arguments, in quotes | +| `--genome` | `-g` | | [!badge variant="info" text="required"] Genome assembly for variant calling | +| `--ploidy` | `-n` | `2` | Ploidy of samples | +| `--populations` | `-p` | | Tab-delimited file of sample\<*tab*\>group | +| `--regions` | `-r` | `50000` | Regions to call variants on ([see below](#regions)) | ### ploidy diff --git a/development.md b/development.md index 83d693af6..920f9aeb3 100644 --- a/development.md +++ b/development.md @@ -2,6 +2,7 @@ label: Development icon: tools order: 1 +hidden: true --- # :icon-tools: Developing Harpy diff --git a/retype.yml b/retype.yml index 714c54677..d836c5193 100644 --- a/retype.yml +++ b/retype.yml @@ -19,11 +19,13 @@ links: - text: Guides & Tutorials link: /blog icon: code-of-conduct - target: blank - text: Submit an Issue link: https://github.com/pdimens/harpy/issues/new/choose icon: bug target: blank +- text: Development + link: /development.md + icon: tools footer: copyright: "© Copyright {{ year }}. All rights reserved." branding: diff --git a/snakemake.md b/snakemake.md index ae571d9b4..3a712a47c 100644 --- a/snakemake.md +++ b/snakemake.md @@ -1,10 +1,10 @@ --- label: Snakemake Things -icon: terminal +icon: git-merge order: 2 --- -# :icon-terminal: Snakamake Things +# :icon-git-merge: Snakamake Things ## Workflow logs Barring a few exceptions, most of Harpy's options are Snakemake workflows. This means we are all at the mercy of how Snakemake operates, which includes diff --git a/static/lr_conversion.png b/static/lr_conversion.png index 009399333945b46f9dafedeffe01a4766b20dcd6..9ea067213d3edb5ffe06e5ad7fda3718a871a570 100644 GIT binary patch delta 56908 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 Ud>yyWXEFeRr>mdKI;Vst0IaY6KL7v# delta 54153 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 P2%(~=sZb_o9`b(xbXfBb diff --git a/static/lr_conversion.svg b/static/lr_conversion.svg index cb64466f0..1f247525e 100644 --- a/static/lr_conversion.svg +++ b/static/lr_conversion.svg @@ -26,11 +26,11 @@ inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" inkscape:document-units="mm" - inkscape:zoom="1.2094621" - inkscape:cx="422.50187" - inkscape:cy="212.49116" + inkscape:zoom="1.7104377" + inkscape:cx="258.41339" + inkscape:cy="171.88583" inkscape:window-width="1920" - inkscape:window-height="1052" + inkscape:window-height="1020" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" @@ -126,8 +126,8 @@ inkscape:groupmode="layer" id="layer1" transform="translate(-10.701555,-116.78158)">@seq_id/1 TX:Z: BX:Z:@seq_id/1 OX:Z: BX:Z:@seq_id/2 TX:Z: BX:Z:@seq_id/2 OX:Z: BX:Z: -r -b -p > barcodes.conversion.txt +``` +Converts 10x linked reads to haplotag linked reads with barcodes in `BX:Z` and `OX:Z` header tags. + +### assign_mi.py +```bash +assign_mi.py -c cutoff -o output.bam input.bam +``` +Assign an `MI:i` (Molecular Identifier) tag to each barcoded +record based on a molecular distance cutoff. Unmapped records +are discarded in the output. Records without a `BX:Z` tag or +with an invalid barcode (`00` as one of its segments) are presevered +but are not assigned an `MI:i` tag. Input file **must be coordinate sorted**. + +### bx_stats.py +```bash +bx_stats.py -o output.gz input.bam +``` +Calculates various linked-read molecule metrics from the (coordinate-sorted) input alignment file. +Metrics include (per molecule): +- number of reads +- position start +- position end +- length of molecule inferred from alignments +- total aligned basepairs +- total length of inferred inserts +- molecule coverage (%) based on aligned bases +- molecule coverage (%) based on total inferred insert length + +### check_bam.py +```bash +check_bam.py input.bam > output.txt +``` +Parses an aligment file to check: +- if the sample name matches the `RG` tag +- whether `BX:Z` is the last tag in the record +- the counts of: + - total alignments + - alignments with an `MI:i` tag + - alignments without `BX:Z` tag + - incorrect `BX:Z` tag + +### check_fastq.py +```bash +check_bam.py input.bam > output.txt +``` +Parses a FASTQ file to check if any sequences don't conform to the SAM spec, +whether BX:Z: is the last tag in the record, and the counts of: +- total reads +- reads without `BX:Z` tag +- reads with incorrect `BX:Z` tag + +### concatenate_bam.py +```bash +concatenate_bam.py -o output.bam file_1.bam file_2.bam...file_N.bam +# or # +concatenate_bam.py -o output.bam -b bam_files.txt +``` +Concatenate records from haplotagged SAM/BAM files while making sure `MI:i` tags remain unique for every sample. +This is a means of accomplishing the same as `samtools cat`, except all `MI` (Molecule Identifier) tags are updated +so individuals don't have overlapping `MI` tags (which would mess up all the linked-read data). You can either provide +all the files you want to concatenate, or a single file featuring filenames with the `-b` option. + +### count_bx.py +```bash +count_bx.py input.fastq > output.txt +``` +Parses a FASTQ file to count: total sequences, total number of `BX` tags, +number of valid haplotagging `BX` tags, number of invalid `BX` tags, number of +invalid `BX` tag segments (i.e. `A00`, `C00`, `B00`, `D00`). + +### depth_windows.py +```bash +samtools depth -a file.bam | depth_windows.py windowsize > output.txt +``` +Reads the output of `samtools depth -a` from stdin and calculates means within windows of a given `windowsize`. + +### haplotag_acbd.py +```bash +haplotag_acbd.py output_directory +``` +Generates the `BC_{ABCD}.txt` files necessary to demultiplex Gen I haplotag barcodes into the specified `output_directory`. + +### infer_sv.py +```bash +infer_sv.py file.bedpe [-f fail.bedpe] > outfile.bedpe +``` +Create column in NAIBR bedpe output inferring the SV type from the orientation. Removes variants with FAIL flags +and you can use the optional `-f` (`--fail`) argument to output FAIL variants to a separate file. + +### make_windows.py +```bash +make_windows.py -w -m <0,1> input.fasta[.fai] > output.bed +``` +Create a BED file of fixed intervals (`-w`, --`window`) from a FASTA or fai file (the kind generated with `samtools faidx`). +Nearly identical to `bedtools makewindows`, except the intervals are nonoverlapping. The `-m` (`--mode`) option specified +whether indexing starts at `0` or `1`. + +### molecule_coverage.py +```bash +molecule_coverage.py -f genome.fasta.fai statsfile > output.cov +``` +Using the statsfile generated by `bx_stats.py` from Harpy, will calculate "molecular coverage" across the genome. +Molecular coverage is the "effective" alignment coverage if you treat a molecule inferred from linked-read data as +one contiguous alignment, even though the reads that make up that molecule don't cover its entire length. Requires a +FASTA fai index (the kind created with `samtools faidx`) to know the actual sizes of the contigs. + +### parse_phaseblocks.py +```bash +parse_phaseblocks.py input > output.txt +``` +Parse a phase block file from HapCut2 to pull out summary information + +### rename_bam +```bash +rename_bam.py [-d] new_name input.bam +``` +Rename a sam/bam file and modify the `@RG` tag of the alignment file to reflect the change for both `ID` and `SM`. +This process creates a new file `new_name.bam` and you may use `-d` to delete the original file. Requires `samtools`. + +### separate_validbx +```bash +separate_validbx input.bam > valid.bam 2> invalid.bam +``` +Split a BAM file with `BX` tags into 2 files, one with valid ACBD barcodes (`stdout`), one with invalid ACBD barcodes (`stderr`). \ No newline at end of file