Closed lfaller closed 6 years ago
Use asm5
for assemblies from the same species. Use asm10
if they are slightly different. Use -a
if the sequence divergence is high.
Variant calling is a bit complicated. You need to:
git clone https://github.com/lh3/minimap2 # you need the latest version; not from conda
cd minimap2 && make
curl -L https://github.com/attractivechaos/k8/releases/download/v0.2.4/k8-0.2.4.tar.bz2 | tar -jxf -
cp k8-0.2.4/k8-`uname -s` k8 # or copy it to a directory on you $PATH
./minimap2 -cx asm5 --cs ref.fa query.fa | sort -k6,6 -k8,8n | ./k8 misc/paftools.js call - var.txt
You can find a brief explanation of the output here. The documentation there will be changed in the near future.
This is great, thanks for the example code!
When I ran this on my data, I actually got no SNPs/indels reported:
[M::mm_idx_gen::0.376*0.99] collected minimizers
[M::mm_idx_gen::0.442*1.28] sorted minimizers
[M::main::0.442*1.28] loaded/built the index for 6 target sequence(s)
[M::mm_mapopt_update::0.477*1.27] mid_occ = 7
[M::mm_idx_stat] kmer size: 19; skip: 19; is_hpc: 0; #seq: 6
[M::mm_idx_stat::0.502*1.25] distinct minimizers: 899995 (98.78% are singletons); average occurrences: 1.017; average spacing: 10.002
[M::worker_pipeline::2.792*1.37] mapped 4 sequences
[M::main] Version: 2.8-r672
[M::main] CMD: minimap2 -ax asm5 --cs wt_minion.fasta wt_pacbio.fasta
[M::main] Real time: 2.857 sec; CPU: 3.892 sec
0 reference bases covered by exactly one contig
0 substitutions; ts/tv = NaN
0 1bp deletions
0 1bp insertions
0 2bp deletions
0 2bp insertions
0 [3,50) deletions
0 [3,50) insertions
0 >=50 deletions
0 >=50 insertions
I used the asm5
option because the data I have is from two microbial strains of the same species.
Do you think my strains are too similar? Is there a way to tune the algorithm further?
Thanks for any insight! ~Lina
It is more likely that the two strains are too divergent. You may first try:
./minimap2 -c --cs ref.fa query.fa | sort -k6,6 -k8,8n | ./k8 misc/paftools.js call -L20000 - > var.txt
and see what is happening.
Sorry, a typo. You should use miniamp2 -c
, not minimap2 -a
. My mistake.
This did the trick:
[M::mm_idx_gen::0.424*1.00] collected minimizers
[M::mm_idx_gen::0.559*1.47] sorted minimizers
[M::main::0.559*1.47] loaded/built the index for 6 target sequence(s)
[M::mm_mapopt_update::0.608*1.43] mid_occ = 14
[M::mm_idx_stat] kmer size: 15; skip: 10; is_hpc: 0; #seq: 6
[M::mm_idx_stat::0.636*1.41] distinct minimizers: 1443966 (88.05% are singletons); average occurrences: 1.182; average spacing: 5.364
[M::worker_pipeline::4.004*1.38] mapped 4 sequences
[M::main] Version: 2.8-r672
[M::main] CMD: minimap2 -c --cs wt_minion.fasta wt_pacbio.fasta
[M::main] Real time: 4.069 sec; CPU: 5.572 sec
9131478 reference bases covered by exactly one contig
16087 substitutions; ts/tv = 0.910
19791 1bp deletions
25024 1bp insertions
8819 2bp deletions
3097 2bp insertions
4964 [3,50) deletions
481 [3,50) insertions
2 >=50 deletions
0 >=50 insertions
I noticed the output format is not VCF. Do you know of a tool that converts this to VCF? I would like to overlay this in Geneious to visualize the mutation landscape.
Thanks!
Unfortunately, it will take some non-trivial effort to implement VCF in paftools.js. I will consider that, but probably not soon.
By the way, I suspect that most substitutions and gaps are consensus errors, not true variants. For this dataset, you can consider to add -xasm5
or -xasm10
to the command line, though the end results will probably similar anyway.
It changed the output a little bit:
[M::mm_idx_gen::0.385*1.00] collected minimizers
[M::mm_idx_gen::0.447*1.25] sorted minimizers
[M::main::0.447*1.25] loaded/built the index for 6 target sequence(s)
[M::mm_mapopt_update::0.477*1.23] mid_occ = 7
[M::mm_idx_stat] kmer size: 19; skip: 19; is_hpc: 0; #seq: 6
[M::mm_idx_stat::0.499*1.23] distinct minimizers: 899995 (98.78% are singletons); average occurrences: 1.017; average spacing: 10.002
[M::worker_pipeline::2.735*1.40] mapped 4 sequences
[M::main] Version: 2.8-r672
[M::main] CMD: minimap2 -xasm5 -c --cs wt_minion.fasta wt_pacbio.fasta
[M::main] Real time: 2.765 sec; CPU: 3.864 sec
8877059 reference bases covered by exactly one contig
18700 substitutions; ts/tv = 0.783
17573 1bp deletions
22209 1bp insertions
8037 2bp deletions
3006 2bp insertions
4913 [3,50) deletions
603 [3,50) insertions
1 >=50 deletions
0 >=50 insertions
By the way, I am looking at a minion and a pacbio assembly of the same strain. The minion assembly was error-corrected with illumina but I believe the Pacbio wasn't. I will try error correcting the pacbio data to see if some of these SNPs disappear.
If you do end up implementing VCF, that would be great!
You can generate VCF with:
git clone https://github.com/lh3/htsbox
(cd htsbox && make)
minimap2 -axasm5 wt_minion.fasta wt_pacbio.fasta | samtool sort - > sorted.bam
htsbox/htsbox pileup -q5 -S10000 -vcf wt_minion.fasta sorted.bam > diff.vcf
I error-corrected the pacbio data but it didn't seem to affect the SNP calls too much.
In your own work, how do you "consume" the data that minimap2 produces? Is there another visualization method you can recommend? How do you cross-reference SNP calls with annotation?
Thanks for any insight you might have!
Dear Lh3,
I want to reduce a diploid assembling to haploid assembly (from canu) using minimap2. My species seems to have 90% of repeated regions, 7% of heterozygotie and probably a lot of SV (but diffuclt to infer without a good assembly). This species will be a good candidat for assemblathon !
I will copy the canu_assembly.fa to read canu_read.fa
./minimap2 -cx asm10 ./XX/canu_assembly.fa ./XX/canu_read.fa > aln.paf
I also plan to modify the alignment option (-k19 -w19 -A1 -B9 -O16,41 -E2,1 -s200 -z200) to stick to the biological features of our species.
./minimap2 -d ./XX/canu_assembly.mmi ./XX/canu_assembly.fa ./minimap2 -a ./XX/canu_assembly.mmi ./XX/canu_read.fa > ./XX/test.sam
What option seems to you the smartest ? Or a new one ? Cheers,
JB
@lfaller probably it is too late, but just let you know that paftools.js call
now supports VCF output. To use it, add -f ref.fa
to the command line I showed above:
./minimap2 -c --cs ref.fa query.fa \
| sort -k6,6 -k8,8n \
| ./k8 misc/paftools.js call -f ref.fa -L20000 - > var.vcf
@jblamyatifremer the latest github master has a new asm20
preset. It is probably better to use that:
./minimap2 -cx asm20 ./XX/canu_assembly.fa ./XX/canu_read.fa > aln.paf
I tried your preset "asm20", it appears that minimap2 (version 2.9) does not have the preset "asm20".
Before closing this post, Could you provide the full combination of value for alignment parameters (the preset). You could close this thread... at least from my point of view. JB
@jblamyatifremer you need to use the github master branch.
Closing...
Use
asm5
for assemblies from the same species. Useasm10
if they are slightly different. Use-a
if the sequence divergence is high.Variant calling is a bit complicated. You need to:
git clone https://github.com/lh3/minimap2 # you need the latest version; not from conda cd minimap2 && make curl -L https://github.com/attractivechaos/k8/releases/download/v0.2.4/k8-0.2.4.tar.bz2 | tar -jxf - cp k8-0.2.4/k8-`uname -s` k8 # or copy it to a directory on you $PATH ./minimap2 -cx asm5 --cs ref.fa query.fa | sort -k6,6 -k8,8n | ./k8 misc/paftools.js call - var.txt
You can find a brief explanation of the output here. The documentation there will be changed in the near future.
Hello, I was able to install k8 but I don't know where to find the paftools.js file: can you point me to it? Thanks
"misc/paftools.js" also in binary release.
I downloaded the paftool.js from here, then when I run it I get (k8 is in the path, both are in the same folder):
k8 paftools.js
paftools.js:7: SyntaxError: Unexpected token <
<!DOCTYPE html>
^
SyntaxError: Unexpected token <
I see now: I downloaded k8 in a different folder than minimap2 (downloaded with Bioconda), and I don't have the misc/fodler there. This is how my folder (added to the the path) looks now:
$ tree .
.
├── k8
├── k8.cc
├── k8-Darwin
├── k8.js
├── k8-Linux
├── khash.h
├── paftools.js
└── README.md
It is minimap2 release:
Your downloaded paftools.js as HTML. You need to download "raw" or clone it.
OK, it works now, I installed minimap and k8 outisde of conda. Thanks!
It is more likely that the two strains are too divergent. You may first try:
./minimap2 -c --cs ref.fa query.fa | sort -k6,6 -k8,8n | ./k8 misc/paftools.js call -L20000 - > var.txt
and see what is happening.
is this an alternate for the asm
paramters? I tried using asm20
with -cx
, --cs
which produced an empty variant call.
--cs=long
I am looking for a tool to do assembly to assembly mapping for bacteria and I am very excited to have found minimap2!
Do you have a best practices document for this use case?
Or is
minimap2 -ax asm5 ref.fasta query.fasta > alignment.sam
the way to go?Edited to add that I am specifically curious about how to annotate differences between the two assemblies (i.e. SNPs, indels, etc).
Thanks! ~Lina