Doing de novo transcriptome reconstruction? isONclust, isONcorrect and isONform are one workflow — isONpipe installs all three and runs them with one command.
It needs a Rust toolchain (rustup.rs), cmake and libclang.
git clone https://github.com/aljpetri/isONform.git
cd isONform/rust
cargo build --release
That produces target/release/isONform_parallel and target/release/main. Put
them on your PATH and run them as shown under
Running isONform. Without cmake or libclang, add
--no-default-features: same output, slower.
The original python implementation is still available and is the reference this port is checked against; see INSTALL-python.md.
By default the Rust port is 5–11× faster than the python implementation on ONT data and ~50× on PacBio HiFi, at comparable accuracy, though it does not produce identical output.
--faithful reproduces the python implementation byte for byte, at about
2–3× its speed. We recommend the default (no --faithful flag).
Full comparison --- accuracy, redundancy, runtime and peak memory on seven corpora from 10 000 to 1 000 000 reads, and the aligner the two modes use --- is in Port-benchmark.md.
test_data/sirv_sim is a small dataset for checking an installation: two
clusters of 51 corrected simulated SIRV reads each.
isONform_parallel --fastq_folder test_data/sirv_sim --outfolder /tmp/isonform_test \
--t 4 --split_wrt_batches --iso_abundance 3
This should finish in seconds and write 7 isoforms to
/tmp/isonform_test/transcriptome.fasta. See
test_data/README.md if you want details on the test data.
The isONpipeline takes .fastq files generated with long-read sequencing techniques (ONT or Pacbio) as an input that additionally have been cleaned of barcodes. Please make sure that you run the isONpipeline on data that have been processed with LIMA (Pacbio data) or Pychopper (ONT data) so that all the barcodes are removed from the reads
To only run the isONform algorithm:
isONform_parallel --fastq_folder path/to/input/files --t <nr_cores> --outfolder /path/to/outfolder --split_wrt_batches
Argument names, defaults, validation messages and exit codes match the python
implementation, so any existing command or script works unchanged. Add
--faithful to reproduce the python output byte for byte.
isONpipe installs isONclust, isONcorrect and isONform and runs all three:
isONpipe install
isONpipe run --reads reads.fq --outfolder out --t 16
IsONform outputs three main files: transcriptome.fasta, mapping.txt, and support.txt. For each isoform that isONform reconstructs the id has the following form: x_y_z.
'x' denotes the isONclust cluster that the isoform stems from. As we cluster reads as in isONcorrect in batches of 1000 reads the 'y' denotes from which batch the isoform was reconstructed. The 'z' denotes a unique identifier which enables us to have unique ids for each isoform that we reconstructed. In mapping.txt it is indicated from which original reads an isoform has been reconstructed. support_txt gives the support (i.e. how many original reads make up the isoform).
If you encounter any problems, please raise an issue on the issues page.
Please cite [1] when using isONform.
- Petri, A. J., & Sahlin, K. (2023). isONform: reference-free transcriptome reconstruction from Oxford Nanopore data. Bioinformatics, 39(Supplement_1), i222-i231. https://academic.oup.com/bioinformatics/article/39/Supplement_1/i222/7210488 .
Please additionally cite [2] and [3] when running the full pipeline.
- Kristoffer Sahlin, Paul Medvedev. De Novo Clustering of Long-Read Transcriptome Data Using a Greedy, Quality-Value Based Algorithm, Journal of Computational Biology 2020, 27:4, 472-484. Link.
- Sahlin, K., Medvedev, P. Error correction enables use of Oxford Nanopore technology for reference-free transcriptome analysis. Nat Commun 12, 2 (2021). https://doi.org/10.1038/s41467-020-20340-8 Link.