mahulchak / quickmerge

A simple and fast metassembler and assembly gap filler designed for long molecule based assemblies.
GNU General Public License v3.0
198 stars 31 forks source link

Please help. No output, no error, exit 0 #23

Closed bredeson closed 6 years ago

bredeson commented 7 years ago

Hi Mahul,

I saw your talk at the PacBio UGM at Standford, read your paper, and wanted to give quickmerge a try. However, I cannot seem to get the program to work and I was hoping you could help me. Probably unrelated: when I compiled quickmerge I get the following warnings:

$ make
g++ -O3 -Wall -o quickmerge quickmerge.cpp qmergelib.cpp -I.
qmergelib.cpp: In function 'void nOvlStoreCalculator(asmMerge&)':
qmergelib.cpp:367:44: warning: 'noRovl' may be used uninitialized in this function [-Wuninitialized]
qmergelib.cpp:367:44: warning: 'noLovl' may be used uninitialized in this function [-Wuninitialized]
qmergelib.cpp: In function 'void discAnchor(std::string&, asmMerge&, std::string&, double)':
qmergelib.cpp:1761:3: warning: 'cutoff' may be used uninitialized in this function [-Wuninitialized]

Being as these are not critical errors, I tried to run quickmerge anyway on a pre-generated nucmer delta file and it's associated fasta files. quickmerge creates the expected output files with only headers, emits no error messages, and exits with code 0. My command-line was:

$ ~/tools/bin/quickmerge/quickmerge -l 1200000 -hco 5 -c 1.5 -ml 50 -d in.delta -r r.fasta -q q.fasta

My de novo contigs were generated by Canu and my hybrid assembly by DBG2OLC (with some custom contig breaking along the way). I made sure to remove any whitespace in the fasta headers and reformat the fasta sequences to occupy a single line (no line wrapping). Running merge_wrapper.py --clean_only creates no ouput (the code block following the conditional statement on line 112 is not evaluated).

A snippet of my delta file:

$ grep -A 1 '^>' in.delta | head 
>tig00002811 Backbone_1000_1_621250 588440 621250
271694 369472 10 97855 296 296 0
--
>tig00007630 Backbone_1000_1_621250 278801 621250
1 20162 316551 336715 80 80 0
--
>tig00008053 Backbone_1000_1_621250 240074 621250
6546 7428 609882 610823 126 126 0
--
>tig00001422 Backbone_1000_1344501_3092750 1131566 1748250

A snippet of my query file:

$ head -2 q.fasta | cut -c1-30
>Backbone_1_1_343250
TCTTTTAAACAAAGTGGAGAACAAAAACTA...

A snippet of my ref file:

$ head -2 r.fasta | cut -c1-30
>tig00000005
ATCATCATGGAAGTTCAGCTAGAGGAGTTA...
mahulchak commented 7 years ago

Hi Jessen,

The order of the command line options is the culprit. For quickmerge, the order of command line options matters (should be easy to fix but I never got to fix it). So if you try the order mentioned in the GitHub example, it should work. Let me know if it still does not. Mahul

From: Jessen Bredeson Sent: Wednesday, October 4, 2017 8:53 PM To: mahulchak/quickmerge Cc: Subscribed Subject: [mahulchak/quickmerge] Please help. No output, no error, exit 0 (#23)

Hi Mahul, I saw your talk at the PacBio UGM at Standford, read your paper, and wanted to give quickmerge a try. However, I cannot seem to get the program to work and I was hoping you could help me. Probably unrelated: when I compiled quickmerge I get the following warnings: $ make g++ -O3 -Wall -o quickmerge quickmerge.cpp qmergelib.cpp -I. qmergelib.cpp: In function 'void nOvlStoreCalculator(asmMerge&)': qmergelib.cpp:367:44: warning: 'noRovl' may be used uninitialized in this function [-Wuninitialized] qmergelib.cpp:367:44: warning: 'noLovl' may be used uninitialized in this function [-Wuninitialized] qmergelib.cpp: In function 'void discAnchor(std::string&, asmMerge&, std::string&, double)': qmergelib.cpp:1761:3: warning: 'cutoff' may be used uninitialized in this function [-Wuninitialized] Being as these are not critical errors, I tried to run quickmerge anyway on a pre-generated nucmer delta file and it's associated fasta files. quickmerge creates the expected output files with only headers, emits no error messages, and exits with code 0. My command-line was: $ ~/tools/bin/quickmerge/quickmerge -l 1200000 -hco 5 -c 1.5 -ml 50 -d in.delta -r r.fasta -q q.fasta My de novo contigs were generated by Canu and my hybrid assembly by DBG2OLC (with some custom contig breaking along the way). I made sure to remove any whitespace in the fasta headers and reformat the fasta sequences to occupy a single line (no line wrapping). Running merge_wrapper.py --clean_only creates no ouput (the code block following the conditional statement on line 112 is not evaluated). A snippet of my delta file: $ grep -A 1 '^>' in.delta | head

tig00002811 Backbone_1000_1_621250 588440 621250 271694 369472 10 97855 296 296 0

tig00007630 Backbone_1000_1_621250 278801 621250 1 20162 316551 336715 80 80 0

tig00008053 Backbone_1000_1_621250 240074 621250 6546 7428 609882 610823 126 126 0

tig00001422 Backbone_1000_1344501_3092750 1131566 1748250 A snippet of my query file: $ head -2 q.fasta | cut -c1-30 Backbone_1_1_343250 TCTTTTAAACAAAGTGGAGAACAAAAACTA... A snippet of my ref file: $ head -2 r.fasta | cut -c1-30 tig00000005 ATCATCATGGAAGTTCAGCTAGAGGAGTTA... — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

bredeson commented 7 years ago

That was, indeed, the issue. Thank you so much for your quick reply and keen recommendation! I'll leave the issue open in case you want to fix the option parsing issue.

mahulchak commented 6 years ago

@bredeson command line argument order no longer matters in quickmerge. Thanks for your suggestion :)