Repository navigation
Explanation
This release of SQANTI3 adds support for experiments with several samples and experimental groups, changes how transcripts with very long introns are aligned, and makes rescue requantify the transcriptome by default. It also brings a reworked SQANTI-reads report, a much lower memory use when computing the TSS ratio from short reads, and several fixes in the ML filter. Two of these changes can affect existing analyses, so please read the warnings below. All the changes are described in the version history.
SQANTI3 QC module
minimap2 now allows introns of up to 2 Mb, the same limit as GMAP. Before, transcripts with introns longer than 200 kb were split into several alignments. Only the primary alignment of each isoform is classified: isoforms with supplementary or secondary alignments, for example chimeric or split sequences, are listed in the new _supplementary_alignments.txt file, and isoforms that could not be aligned at all in _unmapped.txt.
With a multi-sample --fl_count file, the new prevalence column counts the samples in which each transcript is expressed. The new --counts_design option assigns the samples to experimental groups and adds one prevalence_<group> column per group, and --min_expression sets the minimum count for a transcript to be considered expressed in a sample. By default any count above 0 counts, so fractional counts from quantifiers such as bambu are kept. A new min_intron_length column reports the shortest intron of each transcript.
The TSS ratio with short reads is now computed by counting reads with pysam through the BAM index instead of bedtools coverage. The results are the same, and the memory use drops from more than 200 GB to about 1 GB on a 72 GB BAM file.
Gzipped FASTA/FASTQ files are accepted as --isoforms. With FASTA/FASTQ input and several chunks (-n > 1), FASTQ files are split correctly, and the sequences are aligned once with all the CPUs given with -t, instead of running one aligner per chunk, each with its own copy of the genome index. QC also checks the counts design against the count file before any alignment runs, and stops with an error when two isoform IDs become identical after renaming.
SQANTI3 Filter module
The rules filter can use prevalence, prevalence_<group> and min_intron_length like any other column. For example, a rule can keep the transcripts detected in two samples of any group, or in two samples of every group.
In the ML filter, numeric columns are no longer turned into text after NA replacement, and ratio_exp is no longer truncated to an integer. The ML filter also reuses an existing _randomforest.RData model instead of retraining it on every run, as the documentation describes.
SQANTI3 Rescue module
Requantification now runs by default, and it needs the --counts file; use --skip_requant to rescue without it. After requantification, prevalence and prevalence_<group> are recomputed in the rescued classification.
Reference transcripts have no long-read counts of their own, so the requisites on FL, prevalence and prevalence_<group> are no longer applied when filtering the reference transcriptome. Instead, rescue computes the counts each reference transcript would receive from its artifacts and applies those requisites before reintroducing it (evidence check). Reference transcripts that fail are not reintroduced, and the counts of their artifacts go to a long read-defined isoform or to the gene residual. --skip_evidence_check keeps the behaviour of previous versions.
Rescue now stops at the start, before any mapping, when --counts is missing or when the rules need a --counts_design file that was not given. Rescue-by-mapping no longer produces duplicated transcripts, the mapping hits of an earlier run in the same output folder are no longer reused, and ML rescue with a classifier trained on multi-sample counts stops with a clear message instead of crashing.
-q/--requant option was removed, since requantification is now the default. Scripts and wrapper configuration files that use -q, --requant or requant: true must be updated.
SQANTI reads
The report has been reworked: there is now an interactive HTML report that matches the PDF, new UJC-level, junction, ISM and RTS metrics, UpSet and saturation plots, and a qc_summary.json file with the run parameters and the per-sample QC flags. SQANTI-reads also runs faster.
What's Changed
- Sqanti reads plots by @carolinamonzo in #619
- Sqanti reads speed by @carolinamonzo in #621
- Fix transcript ID parsing in TD2 ORF headers by @wmsci in #626
- Preserve fractional counts through parsing and rescue redistribution by @DonGazpachoWR in #625
- Added prevalence column to SQANTI by @DonGazpachoWR in #627
- Bugfix/216 supplementary alignments by @pabloati in #637
- Keep numeric columns numeric after NA replacement in the ML filter and rescue by @wmsci in #633
- TSS memory optimization by @pabloati in #638
- Fix GFF/GFF3 reference annotation always rejected by valid_gtf by @SiYangming in #635
- Bugfix/6.1 issues by @pabloati in #639
- 6.1: requant by default, min_intron_length, prevalence in filter and rescue by @DonGazpachoWR in #636
- Sequence inputs with --chunks: split FASTQ correctly and align once by @DonGazpachoWR in #643
- Releases/v6.1 by @pabloati in #644
New Contributors
- @wmsci made their first contribution in #626
- @DonGazpachoWR made their first contribution in #625
- @SiYangming made their first contribution in #635
Full Changelog: v6.0.2...v6.1