linearPOA: A parallel, memory-efficient framework for Partial Order Alignment with linear space complexity
linearPOA is a library/program written in C++17 for applying Hirschberg algorithm to Partial Order Alignment (POA). It runs on Linux and Windows.
linearPOA is a standalone program. In order to test our methods, we need to compile the program first:
cd src
make -j16 DEBUG=0You will find linearPOA program in src folder.
Available options:
--in FILE sequence file name (Required)
--out FILE output file name (Required)
--threads N use N threads (N >= 1, default: 1)
--open O gap open penalty (default: 3)
--ext E gap extension penalty (default: 1)
--match M match score (default: 0)
--mismatch X mismatch score (default: 2)
--nolinear do not use linear method (default: disabled)
--genmode M generate mode, 1: generate MSA, 2: generate consensus, 3: generate MSA+consensus (default: 1)
--help print help message
--version show program version
Example:
./linearpoa --in seq.fasta --out seq_out.fastaThe test dataset and compiled program are stored at https://doi.org/10.5281/zenodo.15637837. You can use the data for testing the program.
We use the error_measure program provided by FORAlign to measure the similarity between generated sequence and reference sequence.
Additionally, we modified some programs for comparing our programs. These modifications are shown as follows:
We modified TSTA for better controlling output rules. This repositoty is stored here.
We modified PBSIM2 for generating simulated datasets, which only generate positive strand sequences. This repository is stored here.
We modified Racon for calling POA methods for genereating consensus sequence, with ignoring window information provided by Racon. This repository is stored here.
If you find any bug, welcome to contact us on the issues page or email us.
More tools and infomation can visit our github.