diff --git a/README.md b/README.md index 01d2a109..6d878496 100644 --- a/README.md +++ b/README.md @@ -85,11 +85,11 @@ IsoQuant further performs annotated gene, isoform, exon and intron quantificatio If reads are grouped (e.g. according to cell type), counts are reported according to the provided grouping. IsoQuant consists of two stages, which generate its own output: -1. Reference-based analysis. Runs only if reference annotation is provided. Performs read-to-isofrom assignment, +1. Reference-based analysis. Runs only if reference annotation is provided. Performs read-to-isoform assignment, splice site correction and abundance quantification for reference genes/transcripts. 2. Transcript discovery. Reconstructs transcript models and performs abundance quantification for discovered isoforms. -IsoQuant version 3.4 was released under GPLv2 on May 9th, 2024 and can be downloaded from [https://github.com/ablab/IsoQuant](https://github.com/ablab/IsoQuant). +Latest IsoQuant version can be downloaded from [https://github.com/ablab/IsoQuant/releases/latest](https://github.com/ablab/IsoQuant/releases/latest). #### IsoQuant pipeline ![Pipeline](figs/isoquant_pipeline.png) diff --git a/VERSION b/VERSION index 47b322c9..4d9d11cf 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.4.1 +3.4.2 diff --git a/changelog.md b/changelog.md index 66f66471..e176278c 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,29 @@ # IsoQuant changelog +## IsoQuant 3.4.2, 13 July 2024 + +- Dramatically reduce RAM consumption. +Should fix [#209](https://github.com/ablab/IsoQuant/issues/209). + +IsoQuant 3.4.2 was tested on a simulated ONT dataset with 30M reads using 12 threads. +In the default mode RAM consumption decreased from 280GB to 12GB when using +the reference annotation and from 230GB down to 6GB in the reference-free mode. +Running time in the default mode increased by approximately 20-25%. +When using `--high_memory` option, running time remains the same as in 3.4.1, +RAM consumption in the reference-based mode is 46GB, and 36GB in the reference-free mode. +Note, that in general RAM consumption depends on the particular data being used and the number of threads. + +In brief, in 3.4.0 and 3.4.1 inadequate RAM consumption was caused by +[this commit](https://github.com/ablab/IsoQuant/commit/557e5834d0503587b918a0eedf3ff5cee3253141). +Apparently, adding a couple of `int` fields to the `BasicReadAssignment` class made the default pickle serialization +not to clean used memory (possibly, a leak). Since some large lists of `BasicReadAssignment` were sent between +processes, this caused the main process to consume unnecessary RAM. When later new processes were created +for GTF construction, total RAM consumption exploded thanks to the way Python multiprocessing works. +This release implements two ways fixing the issue: sending objects via disk (default) and +using custom pickle serialization (when `--high_memory` is used). + +- Transcript and exon ids are now identical between runs, including ones with different number of threads. + ## IsoQuant 3.4.1, 9 May 2024 - Fixes `IndexError: list index out of range` when `--sqanti_output` is set ([#186](https://github.com/ablab/IsoQuant/issues/186)).