Mummerplot is a excellent program and it has been a long time since last version 3.23
Here are some trouble-shooting:
- For large reference genome (>536,870,908 bp)
Error: mummer: suffix tree construction failed: textlen=ddddddd larger than maximal textlen=536870908
1.1 compile
Explanation: default compiled x86 version only support small genome (less than 536,870,908bp). If you have a larger one, you need to enable x64 version. So compile mummerplot again using
$ make CPPFLAGS=” -O3 -DSIXTYFOURBITS”
1.2 modify nucmer
And if you still get that error, you need to modify nucmer program, here is how-to
1. open ‘nucmer’ file using text editor like ‘gedit’
2. jump to line 336-343
open(ALGO_PIPE, “$algo_path $algo $mdir -l $size -n $pfx.ntref $qry_file |”)
or $tigr->bail (“ERROR: could not open $algo_path output pipe $!”);
open(CLUS_PIPE, “| $mgaps_path -l $clus -s $gap -d $ddiff -f $dfrac > $pfx.mgaps”)
or $tigr->bail (“ERROR: could not open $mgaps_path input pipe $!”);
while ( <ALGO_PIPE> ) {
print CLUS_PIPE
or $tigr->bail (“ERROR: could not write to $mgaps_path pipe $!”);
}
$err[0] = close(ALGO_FILE);
$err[1] = close(CLUS_PIPE);
3. replace them with
$err[0] = $tigr->runCommand (“$algo_path $algo $mdir -l $size -n $pfx.ntref $qry_file > $pfx.mummmer”);
if ( $err[0] != 0 ) {
$tigr->bail(“ERROR: Error: mummer output error\n”);
}
unless (-s “$pfx.mummmer”) {
die “Error: mummer output error\n”;
}
open(ALGO_FILE, “< $pfx.mummmer”)
or $tigr->bail (“ERROR: could not open $algo_path output file: $pfx.mummmer”);
open(CLUS_PIPE, “| $mgaps_path -l $clus -s $gap -d $ddiff -f $dfrac > $pfx.mgaps”)
or $tigr->bail (“ERROR: could not open $mgaps_path input pipe $!”);
while ( <ALGO_FILE> ) {
print CLUS_PIPE
or $tigr->bail (“ERROR: could not write to $mgaps_path pipe $!”);
}
$err[0] = close(ALGO_FILE);
$err[1] = close(CLUS_PIPE);
4.So use nucmer2 instead of nucmer
Explanation: nucmer use pipe to tranfer mummer output to feed mgaps as input. some times that is problematic. better to separate them. In this case there will be another output file: $prefix.mummer
1.3 replace mummer with e-mem [[[ OPTIONAL with care ]]]
IF IF IF IF you still have some problem, trying to use multi-thread version of mummer: E-MEM. But do it carefully.
5. install e-mem, E-mem was reported to use multithreads and run in low memory requirements
6. create a file ’emem’ in the same path as nucmer2/nucmer/mummerplot, and this is the content
#!/bin/bash
numthreads=1
### edit this number to use multithreads
/path/to/e-mem -t $numthreads “$@”
### edit /path/to/e-mem to where to find e-mem program
if [ $? -ne 0 ]; then
echo “Error: E-mem running failed” >&2
exit 100
else
echo “E-mem running succeeded”
exit 0
fi
7. make ’emem’ to be an excutable
$ chmod +x /path/to/emem
8. text editor open ‘nucmer2‘ and save as ‘nucmer_emem‘
Go to line 99, and 247, find ‘$BIN_DIR/mummer‘ and replace them with ‘$BIN_DIR/emem‘
9.So use nucmer_emem instead of nucmer
2. modify mummerplot
1. text editor open ‘mummerplot’
2. go to line 565 and 575, change first + to *
replace :
if ( /^\s+(\d+)\s+(\d+)\s+(\d+)$/ ) {
by :
if ( /^\s*(\d+)\s+(\d+)\s+(\d+)$/ ) {
Quick explanation : it search for a line that begin with one or more space, but when you have a start superior to 9999999, this space do not exist anymore.
So if you change ‘+’ by ‘*’ it search for 0 or more spaces.
3. Go line: line 884, 894, 981, 991, 1034, 1044, remove ‘defined’ and the corresponding bracket pairs'()’
replace if (defined(%hash)) { … }
by if (%hash) { … }
Quick explanation : OLD perl grammar may report error in latest perl
3. TO BE CONTUED
Leave some comments please if you think it’s useful for you. ^_^
近期评论