Skip to content

easy-search splits perfect full-length nucleotide alignments into two contiguous HSPs unlike BLASTN #1116

Description

@mlarjim

Hi,

I’m observing a difference between BLASTN and MMseqs2 (easy-search, version 18.8cc5c) when aligning full-length nucleotide alleles against a bacterial genome.
In multiple cases, BLASTN produces a single perfect alignment (100% identity, 100% coverage), while MMseqs2 splits the same alignment into two perfectly contiguous HSPs with 100% identity.

This happens even when both fragments together exactly reconstruct the full-length BLAST alignment.

Example 1
Blastn result

qaccver saccver pident length qcovhsp mismatch gapopen qlen qstart qend sstart send evalue bitscore
lmo0027_10 NODE_4_length_460766_cov_107.215521 100 1905 100 0 0 1905 1 1905 151470 149566 0 3518

MMseqs2 result

qaccver saccver pident length qcovhsp mismatch gapopen qlen qstart qend sstart send evalue bitscore
lmo0027_10 NODE_4_length_460766_cov_107.215521 100 1470 77.2 0 0 1905 1470 1 150001 151470 0 2635
lmo0027_10 NODE_4_length_460766_cov_107.215521 100 435 22.8 0 0 1905 1905 1471 149566 150000 3.28E-226 781

Example 2
Blastn result

qaccver saccver pident length qcovhsp mismatch gapopen qlen qstart qend sstart send evalue bitscore
lmo0052_8 NODE_4_length_460766_cov_107.215521 100 1974 100 0 0 1974 1 1974 121630 119657 0 3646

MMseqs2 result

qaccver saccver pident length qcovhsp mismatch gapopen qlen qstart qend sstart send evalue bitscore
lmo0052_8 NODE_4_length_460766_cov_107.215521 100 1630 82.6 0 0 1974 1630 1 120001 121630 0 2922
lmo0052_8 NODE_4_length_460766_cov_107.215521 100 344 17.4 0 0 1974 1974 1631 119657 120000 4.57E-177 618

In both cases, MMseqs2 splits the alignment exactly at:

  • 150000/150001
  • 120000/120001

The two fragments are:

  • perfectly contiguous in query and target
  • 100% identical
  • sum exactly equals the BLASTN alignment length

No sequence discontinuity (no Ns, no gaps, no rearrangements)

Command used:

mmseqs easy-search --search-type 3 --cov-mode 2 -c 0.1 --mask 0 --format-mode 0 -s 7 --split-memory-limit 32G --min-seq-id 0.9 -k 13 --spaced-kmer-mode 0 --max-accept 20 --threads 52 --remove-tmp-files --strand 2 --format-output query,target,pident,alnlen,qcov,mismatch,gapopen,qlen,qstart,qend,tstart,tend,evalue,bits,taln

Also tested with --threads 1, --split-mode 1 and --merge-query 1, and without --split-memory-limit, same behavior

Is this expected behavior of MMseqs2 nucleotide chaining/alignment (i.e. lack of HSP merging across adjacent chains), or is there a parameter that controls merging of adjacent alignments into a single HSP similar to BLASTN?

Thank you in advance

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions