Minimap2: Ref sequence's name can not start by number.

Created on 1 Aug 2019  Â·  9Comments  Â·  Source: lh3/minimap2

Hello ,

I just noticed some wired thing :

If refrence sequence name started by number , the paf result will lost some alignments and after I add alphbet before number , those lost alignments will come back !

Here is a screenshot of diff results of above 2 kind of name :

image

I run this several times and it always act the same.

Best wishes.

question

All 9 comments

Do you have a small sample input?

GRCh37 often uses integer chromosome names. No one has reported a similar issue.

Hi ,

The version of minimap2 that I used is 2.17-r943-dirty and the lastest git commiting is 58c2251b18e70cdaa2e8e2088899001cfe7d69ae .
The command I used is

minimap2 -x ava-ont ref1.fasta query.fasta  >out1.paf 2>out1.log
minimap2 -x ava-ont ref2.fasta query.fasta  >out2.paf 2>out2.log

Here is the screenshot of my test :

image

The test datas are all in attachment.
test_minimap2.zip

Best wishes.

I can confirm that i get the same behaviour as @cchd0001 with minimap2 2.17-r941
When using sequence IDs 10 , 11 ... the PAF has 0 alignments.
When using IDs seq10, seq11 ... the PAF has 9 alignments.

I also tried changing the -x preset:

for N in map-pb map-ont ava-pb ava-ont asm5 asm10 asm20 splice sr; do 
  (echo -ne "$N\t" ; minimap2 -x $N ref1.fasta query.fasta 2> /dev/null| wc -l) ;
 done

# ref1
map-pb  3
map-ont 4
ava-pb  0
ava-ont 0
asm5    2
asm10   2
asm20   3
splice  5
sr      12

#ref2 
map-pb  3
map-ont 4
ava-pb  7
ava-ont 9
asm5    2
asm10   2
asm20   3
splice  5
sr      12

I think this is because the ava presets only align sequences that are lexicographical greater in order to avoid doing the same alignment twice when the ref and query are the same.

Specially ava sets -X which sets dual=no which skips these alignments. See this part of the man page:

--dual=yes\|no     | If no, skip query-target pairs wherein the query name is lexicographically greater than the target name [yes]
-X     | Equivalent to ’-DP --dual=no --no-long-join’. Primarily used for all-vs-all read overlapping.

@mvollger that's a good lead, but isn't "10" < "11" the same as "seq10" < "seq11" ?
(where < is a lexicographical string comparison operator)

As @mvollger said. Good catch.

@tseemann You need to compare the query name and the reference name. "2"<"seq1"

This still feels like a bug. But a documented one. Ideally would be in README.md under a Caveats/FAQ type section.

This is the expected behavior for a read overlapper. The question is asked only once, I think, so is not qualified for an FAQ.

Thanks a lot .

Was this page helpful?
0 / 5 - 0 ratings

Related issues

a-89 picture a-89  Â·  7Comments

fritzsedlazeck picture fritzsedlazeck  Â·  8Comments

H2CO3 picture H2CO3  Â·  5Comments

ms-gx picture ms-gx  Â·  5Comments

sjackman picture sjackman  Â·  3Comments