align_trim
Stand alone version of ARTIC's fieldbioinformatics align_trim.py
Installation
From conda
conda install bioconda::align_trim
from pypi
pip install align_trim
from source
git clone https://github.com/artic-network/align_trim.git
cd align_trim
uv sync
uv run align_trim --help
Command Line Interface
Basic Usage
align_trim [OPTIONS] BEDFILE
The tool reads alignment data from either a SAM/BAM file or stdin and outputs trimmed alignments to stdout in SAM format by default.
Required Arguments
BEDFILE: BED file containing the amplicon primer scheme in v3 format.
Optional Arguments
Input/Output Options
--samfile,-s: Sorted SAM/BAM file containing the aligned reads, if this is not provided (or '-') then 'align_trim' will read from stdin.--output,-o: Output file path. Format determined by extension (.sam/.bam). If not provided or '-', writes SAM to stdout
Processing Options
--normalise,-n: Normalise to target depth N per amplicon using a greedy per-read algorithm. Each read is kept only if it brings the amplicon depth closer to the target. Use 0 for no normalisation (default: 0)--min-mapq,-m: Minimum mapping quality to keep an aligned read (default: 20)--primer-match-threshold,-p: Add this many bases of padding to the 5' end of primer coordinates to allow fuzzy matching for reads with barcodes/adapters (default: 35)
Primer and Read Handling
--no-trim-primers: Do not trim primers from reads (by default, primers are trimmed)--allow-incorrect-pairs: Allow reads to be assigned to amplicons even if primers are not correctly paired--require-full-length: Require all reads to start and stop in primer sites (do not use with rapid barcoding)
Output and Reporting
--report,-r: Output detailed report TSV to specified filepath--amp-depth-report,-a: Output mean depth for each amplicon as TSV to specified filepath--genome-coverage-report,-g: Output per-position genome coverage TSV(s) using the given prefix. Summary statistics (% genome covered at >=1x, >=10x, >=20x, >=100x) are printed to stderr. See Genome Coverage Report for details--no-read-groups: Do not divide reads into pool-based read groups in SAM/BAM output
General Options
--verbose,-v: Enable debug mode with detailed logging to stderr--version: Show version information--help: Show help message
Examples
Basic trimming with primer removal
align_trim primers.bed --samfile input.bam --output trimmed.bam
Normalize coverage and generate reports
align_trim primers.bed --samfile input.bam --normalise 100 \
--report alignment_report.tsv --amp-depth-report depth_report.tsv \
--genome-coverage-report sample1 \
--output normalized.bam
Process from stdin with verbose output
samtools view -h input.bam | align_trim primers.bed --verbose > trimmed.sam 2> verbose.out.txt
Strict full-length read filtering
align_trim primers.bed --samfile input.bam --require-full-length \
--min-mapq 30 --output filtered.bam
Allow mismatched primer pairs with custom threshold
align_trim primers.bed --samfile input.bam --allow-incorrect-pairs \
--primer-match-threshold 50 --output relaxed.bam
Output Formats
The tool supports multiple output formats based on file extension:
.sam- SAM format (text).bam- BAM format (binary, compressed)- No extension or
-- SAM format to stdout
Report Files
When using --report, a tab-separated file is generated with the following columns:
chrom: Reference chromosome/contigQueryName: Read nameReferenceStart/ReferenceEnd: Alignment coordinatesPrimerPair: Primer pair assignmentPrimer1/Primer2: Individual primer informationCorrectlyPaired: Boolean indicating proper primer pairing- Additional alignment metrics
The --amp-depth-report generates a summary of coverage depth per amplicon.
Genome Coverage Report
When using --genome-coverage-report PREFIX, per-position genome coverage is written as tab-separated files with columns chrom, pos (1-based), and depth.
Without --normalise, a single file is produced:
PREFIX.pre-normalisation.coverage.tsv— coverage of all reads passing filtering and trimming
With --normalise, two files are produced:
PREFIX.pre-normalisation.coverage.tsv— coverage of all reads passing filtering and trimming (before normalisation subsampling)PREFIX.post-normalisation.coverage.tsv— coverage of reads retained after normalisation
In both cases, a coverage summary is printed to stderr showing the percentage of genome positions covered at >=1x, >=10x, >=20x, >=100x, and >=1000x.
Release files for align-trim 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| align_trim-1.2.0.tar.gz | 6.7 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| align_trim-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.7 MB
Release files / align_trim-1.2.0.tar.gz
| Download URL | align_trim-1.2.0.tar.gz |
|---|---|
| Size | 6.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
18501e94027dfb6f99a7c6b2bb285c92bef36aa6e65ecd1e2201e7dd6994dd0f
|
|
BLAKE2b-256 checksum How to use checksums |
05d60dbe2e085faca8b06089c505c1ee83a412c9d6e956bbcdc28b0388b63498
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency logRelease files / align_trim-1.2.0-py3-none-any.whl
| Download URL | align_trim-1.2.0-py3-none-any.whl |
|---|---|
| Size | 13.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
02343d9819d90b517c3d0895af5ce1013b4a4872d023662bf00556d4a78bba54
|
|
BLAKE2b-256 checksum How to use checksums |
8fecbec644a8a8a308eb7e279b2560bb731c1491fcf2e6b84655db21975c7a49
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency log