It makes sense since the command worked flawlessly on another machine... Thanks
I tried to deduplicate some fastq files using BBmap's clumpify.sh, but I got the error:
$ clumpify.sh in=Trimmed/V25_1_Trm.fq.gz in2=Trimmed/V25_2_Trm.fq.gz out=Trimmed/V25_1_TrmDed.fq.gz out2=Trimmed/V25_2_TrmDed.fq.gz passes=6 dedupe
java -ea -Xmx23265m -Xms23265m -cp /home/gigiux/src/BBmap/current/ clump.Clumpify in=Trimmed/V25_1_Trm.fq.gz in2=Trimmed/V25_2_Trm.fq.gz out=Trimmed/V25_1_TrmDed.fq.gz out2=Trimmed/V25_2_TrmDed.fq.gz passes=6 dedupe
Executing clump.Clumpify [in=Trimmed/V25_1_Trm.fq.gz, in2=Trimmed/V25_2_Trm.fq.gz, out=Trimmed/V25_1_TrmDed.fq.gz, out2=Trimmed/V25_2_TrmDed.fq.gz, passes=6, dedupe]
Version 39.05
Read Estimate: 26932149
Memory Estimate: 20547 MB
Memory Available: 19050 MB
Set groups to 13
Executing clump.KmerSplit [in1=Trimmed/V25_1_Trm.fq.gz, in2=Trimmed/V25_2_Trm.fq.gz, out=Trimmed/V25_1_TrmDed_clumpify_p1_temp%_28deca9aa1a82dc1.fq.gz, out2=, groups=13, ecco=false, addname=f, shortname=f, unpair=false, repair=f, namesort=f, ow=true, passes=6, dedupe]
Reset INTERLEAVED to false because paired input files were specified.
Set INTERLEAVED to false
Input is being processed as paired
Writing interleaved.
Exception in thread "main" java.lang.NoClassDefFoundError: sketch/SketchTool
at clump.KmerComparator.<init>(KmerComparator.java:36)
at clump.KmerComparator.<init>(KmerComparator.java:23)
at clump.KmerSplit.processInner(KmerSplit.java:331)
at clump.KmerSplit.process(KmerSplit.java:314)
at clump.KmerSplit.main(KmerSplit.java:52)
at clump.Clumpify.runOnePass_v2(Clumpify.java:403)
at clump.Clumpify.process(Clumpify.java:277)
at clump.Clumpify.main(Clumpify.java:47)
Caused by: java.lang.ClassNotFoundException: sketch.SketchTool
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
... 8 more
The trimmed files were generated with bbduk.sh:
bbduk.sh in=Raw/V25_1.fq.gz in2=Raw/V25_2.fq.gz out=Trimmed/V25_1_Trm.fq.gz out2=Trimmed/V25_2_Trm.fq.gz ktrim=r k=23 mink=11 hdist=1 tbo tpe minlen=70 ref=adapters ftm=5 -Xmx200m
But I got no error there... What might be the cause and how can I fix it?
Thank you
1 answer
It is trying to access the BBTools sketch tool that is a dependency and doesn't find it.
I have almost no experience with Java, but my guess would be that there is an issue with the tool missing in the classpath -cp /home/gigiux/src/BBmap/current/ or being otherwise corrupted. Maybe you also have a conflicting environment variable like $CLASSPATH configured that points to another directory.
worked flawlessly on another machine
If you rearranged/moved the contents of BBMap software bundle from default, it can lead to the "class" errors.
I prefer being explicit with input/output directives with BBMap e.g. in1=, out1=, out2=.
In your log output above you have:
Input is being processed as paired
Writing interleaved.
This may be referring to intermediate output inside bbmap but see if changing to explicit out's as above make this go away. out= with two inputs will lead to interleaved output.
Current release of BBMap is v.39.34. You appear to be using an older release.
Thank you. I am now using the latest version of BBmap and it works. There must have been a file corruption somewhere.
Log in to answer this question.