| Crates.io | iirs |
| lib.rs | iirs |
| version | 1.0.2 |
| created_at | 2024-05-05 22:03:57.161342+00 |
| updated_at | 2025-11-27 21:11:07.486673+00 |
| description | Inverted repeats finder |
| homepage | |
| repository | https://github.com/daxida/iirs |
| max_upload_size | |
| id | 1230579 |
| size | 6,035,404 |
IIRS is an Iupac Inverted RepeatS finder, ported to rust from IUPACpal, result of this paper.
That is, an exact tool for efficient identification of Inverted Repeats (IRs) in IUPAC-encoded DNA sequences, allowing also for potential mismatches and gaps.
Compared to the original, this version is faster, platform-independent and modular, facilitating the creation of customized format outputs.
The command line shares much of the functionality of the original IUPACpal. The notable differences are:
ALL_SEQUENCES argument for processing all the sequences in the input file.iirs -f input.fasta -s 't1 t2' -g 5 -F csv
iirs -f input.fasta --seq-names t1 --max-gap 5 --output-format csv
iirs -f input.fasta -s ALL_SEQUENCES -g 5 -m 3 -F csv
Many more practical examples can be found in the justfile. You can also run iirs --help for a full description.
You can either build from source:
$ cargo install iirs
Or download the latest binary from releases and extract it somewhere on your $PATH.
The default uses a Sparse Table implementation for the range minimum query, and it is sequential over IR centers. To change this behaviour you can use the features tabulation, parallel or a combination of both. This may result in a significant speed increase:
cargo install iirs --features "parallel tabulation"
It can also be used as a library both in rust and python.
cargo add iirs [--features X]
Or to python, after cloning the repo, via (no wheels yet):
pip install py-iirs/
Both libraries are minimal and only contain a struct / class SearchParams that does some bound checking, and a find_irs function.
cargo test for unit tests.bench.rs benches against a single file. To use together with just bench after modifying the parameters in bench.rs. To test against different features you can add them as arguments: just bench parallel or just bench parallel tabulation.logs.rs benches against the cpp binary. You will need a IUPACpal binary (and they only support Linux). The binary is expected to be in the bench folder, but that can be changed in logs.rs and validate.py.just heatmap requires the python libraries listed in bench/requirements.txt.