[med-svn] [Git][med-team/trimmomatic][upstream] New upstream version 0.38+dfsg
Andreas Tille
gitlab at salsa.debian.org
Tue May 22 16:35:29 BST 2018
Andreas Tille pushed to branch upstream at Debian Med / trimmomatic
Commits:
d2edfdea by Andreas Tille at 2018-05-22T17:28:35+02:00
New upstream version 0.38+dfsg
- - - - -
8 changed files:
- build.xml
- src/org/usadellab/trimmomatic/TrimStats.java
- src/org/usadellab/trimmomatic/Trimmomatic.java
- src/org/usadellab/trimmomatic/TrimmomaticPE.java
- src/org/usadellab/trimmomatic/TrimmomaticSE.java
- + src/org/usadellab/trimmomatic/trim/BaseCountTrimmer.java
- src/org/usadellab/trimmomatic/trim/TailCropTrimmer.java
- src/org/usadellab/trimmomatic/trim/TrimmerFactory.java
Changes:
=====================================
build.xml
=====================================
--- a/build.xml
+++ b/build.xml
@@ -1,5 +1,5 @@
<project name="Trimmomatic" default="dist" basedir=".">
- <property name="version" value="0.36"/>
+ <property name="version" value="0.38"/>
<property name="src" location="src" />
<property name="lib" location="lib" />
=====================================
src/org/usadellab/trimmomatic/TrimStats.java
=====================================
--- a/src/org/usadellab/trimmomatic/TrimStats.java
+++ b/src/org/usadellab/trimmomatic/TrimStats.java
@@ -1,5 +1,8 @@
package org.usadellab.trimmomatic;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintStream;
import java.text.DecimalFormat;
import org.usadellab.trimmomatic.fastq.FastqRecord;
@@ -8,25 +11,25 @@ public class TrimStats
{
private static DecimalFormat formatter=new DecimalFormat("0.00");
- private int input;
- private int survivingBoth;
- private int survivingForward;
- private int survivingReverse;
+ private long readsInput;
+ private long readsSurvivingBoth;
+ private long readsSurvivingForward;
+ private long readsSurvivingReverse;
public TrimStats()
{
- input=0;
- survivingBoth=0;
- survivingForward=0;
- survivingReverse=0;
+ readsInput=0;
+ readsSurvivingBoth=0;
+ readsSurvivingForward=0;
+ readsSurvivingReverse=0;
}
public void merge(TrimStats other)
{
- input+=other.input;
- survivingBoth+=other.survivingBoth;
- survivingForward+=other.survivingForward;
- survivingReverse+=other.survivingReverse;
+ readsInput+=other.readsInput;
+ readsSurvivingBoth+=other.readsSurvivingBoth;
+ readsSurvivingForward+=other.readsSurvivingForward;
+ readsSurvivingReverse+=other.readsSurvivingReverse;
}
@@ -36,57 +39,79 @@ public class TrimStats
{
if(originalRecs[0]!=null)
{
- input++;
+ readsInput++;
if(recs[0]!=null)
- survivingForward++;
+ readsSurvivingForward++;
}
}
else
{
if(originalRecs[0]!=null && originalRecs[1]!=null)
{
- input++;
+ readsInput++;
if(recs[0]!=null)
{
if(recs[1]!=null)
- survivingBoth++;
+ readsSurvivingBoth++;
else
- survivingForward++;
+ readsSurvivingForward++;
}
else if(recs[1]!=null)
- survivingReverse++;
+ readsSurvivingReverse++;
}
}
}
- public String getStatsSE()
+ public String processStatsSE(PrintStream statsSummaryStream)
{
- int dropped=input-survivingForward;
+ long dropped=readsInput-readsSurvivingForward;
- double survivingForwardPercent=(100.0*survivingForward)/input;
- double droppedPercent=(100.0*dropped)/input;
+ double survivingForwardPercent=(100.0*readsSurvivingForward)/readsInput;
+ double droppedPercent=(100.0*dropped)/readsInput;
- return "Input Reads: "+input+
- " Surviving: "+survivingForward+" ("+formatter.format(survivingForwardPercent)+
+ if(statsSummaryStream!=null)
+ {
+ statsSummaryStream.println("Input Reads: "+readsInput);
+ statsSummaryStream.println("Surviving Reads: "+readsSurvivingForward);
+ statsSummaryStream.println("Surviving Read Percent: "+formatter.format(survivingForwardPercent));
+ statsSummaryStream.println("Dropped Reads: "+dropped);
+ statsSummaryStream.println("Dropped Read Percent: "+formatter.format(droppedPercent));
+ }
+
+ return "Input Reads: "+readsInput+
+ " Surviving: "+readsSurvivingForward+" ("+formatter.format(survivingForwardPercent)+
"%) Dropped: "+dropped+" ("+formatter.format(droppedPercent)+"%)";
}
- public String getStatsPE()
+ public String processStatsPE(PrintStream statsSummaryStream)
{
- int dropped=input-survivingBoth-survivingForward-survivingReverse;
+ long dropped=readsInput-readsSurvivingBoth-readsSurvivingForward-readsSurvivingReverse;
- double survivingBothPercent=(100.0*survivingBoth)/input;
- double survivingForwardPercent=(100.0*survivingForward)/input;
- double survivingReversePercent=(100.0*survivingReverse)/input;
- double droppedPercent=(100.0*dropped)/input;
+ double survivingBothPercent=(100.0*readsSurvivingBoth)/readsInput;
+ double survivingForwardPercent=(100.0*readsSurvivingForward)/readsInput;
+ double survivingReversePercent=(100.0*readsSurvivingReverse)/readsInput;
+ double droppedPercent=(100.0*dropped)/readsInput;
- return "Input Read Pairs: "+input+
- " Both Surviving: "+survivingBoth+" ("+formatter.format(survivingBothPercent)+
- "%) Forward Only Surviving: "+survivingForward+" ("+formatter.format(survivingForwardPercent)+
- "%) Reverse Only Surviving: "+survivingReverse+" ("+formatter.format(survivingReversePercent)+
+ if(statsSummaryStream!=null)
+ {
+ statsSummaryStream.println("Input Read Pairs: "+readsInput);
+ statsSummaryStream.println("Both Surviving Reads: "+readsSurvivingBoth);
+ statsSummaryStream.println("Both Surviving Read Percent: "+formatter.format(survivingBothPercent));
+ statsSummaryStream.println("Forward Only Surviving Reads: "+readsSurvivingForward);
+ statsSummaryStream.println("Forward Only Surviving Read Percent: "+formatter.format(survivingForwardPercent));
+ statsSummaryStream.println("Reverse Only Surviving Reads: "+readsSurvivingReverse);
+ statsSummaryStream.println("Reverse Only Surviving Read Percent: "+formatter.format(survivingReversePercent));
+ statsSummaryStream.println("Dropped Reads: "+dropped);
+ statsSummaryStream.println("Dropped Read Percent: "+formatter.format(droppedPercent));
+ }
+
+ return "Input Read Pairs: "+readsInput+
+ " Both Surviving: "+readsSurvivingBoth+" ("+formatter.format(survivingBothPercent)+
+ "%) Forward Only Surviving: "+readsSurvivingForward+" ("+formatter.format(survivingForwardPercent)+
+ "%) Reverse Only Surviving: "+readsSurvivingReverse+" ("+formatter.format(survivingReversePercent)+
"%) Dropped: "+dropped+" ("+formatter.format(droppedPercent)+"%)";
}
=====================================
src/org/usadellab/trimmomatic/Trimmomatic.java
=====================================
--- a/src/org/usadellab/trimmomatic/Trimmomatic.java
+++ b/src/org/usadellab/trimmomatic/Trimmomatic.java
@@ -95,9 +95,9 @@ public class Trimmomatic
if(showUsage)
{
System.err.println("Usage: ");
- System.err.println(" PE [-version] [-threads <threads>] [-phred33|-phred64] [-trimlog <trimLogFile>] [-quiet] [-validatePairs] [-basein <inputBase> | <inputFile1> <inputFile2>] [-baseout <outputBase> | <outputFile1P> <outputFile1U> <outputFile2P> <outputFile2U>] <trimmer1>...");
+ System.err.println(" PE [-version] [-threads <threads>] [-phred33|-phred64] [-trimlog <trimLogFile>] [-summary <statsSummaryFile>] [-quiet] [-validatePairs] [-basein <inputBase> | <inputFile1> <inputFile2>] [-baseout <outputBase> | <outputFile1P> <outputFile1U> <outputFile2P> <outputFile2U>] <trimmer1>...");
System.err.println(" or: ");
- System.err.println(" SE [-version] [-threads <threads>] [-phred33|-phred64] [-trimlog <trimLogFile>] [-quiet] <inputFile> <outputFile> <trimmer1>...");
+ System.err.println(" SE [-version] [-threads <threads>] [-phred33|-phred64] [-trimlog <trimLogFile>] [-summary <statsSummaryFile>] [-quiet] <inputFile> <outputFile> <trimmer1>...");
System.err.println(" or: ");
System.err.println(" -version");
System.exit(1);
=====================================
src/org/usadellab/trimmomatic/TrimmomaticPE.java
=====================================
--- a/src/org/usadellab/trimmomatic/TrimmomaticPE.java
+++ b/src/org/usadellab/trimmomatic/TrimmomaticPE.java
@@ -50,7 +50,7 @@ public class TrimmomaticPE extends Trimmomatic
public void processSingleThreaded(FastqParser parser1, FastqParser parser2, FastqSerializer serializer1P,
FastqSerializer serializer1U, FastqSerializer serializer2P, FastqSerializer serializer2U,
- Trimmer trimmers[], PrintStream trimLogStream, PairingValidator pairingValidator) throws IOException
+ Trimmer trimmers[], PrintStream trimLogStream, PrintStream statsSummaryStream, PairingValidator pairingValidator) throws IOException
{
TrimStats stats = new TrimStats();
@@ -115,12 +115,13 @@ public class TrimmomaticPE extends Trimmomatic
}
}
- logger.infoln(stats.getStatsPE());
+ logger.infoln(stats.processStatsPE(statsSummaryStream));
}
public void processMultiThreaded(FastqParser parser1, FastqParser parser2, FastqSerializer serializer1P,
FastqSerializer serializer1U, FastqSerializer serializer2P, FastqSerializer serializer2U,
- Trimmer trimmers[], PrintStream trimLogStream, PairingValidator pairingValidator, int threads) throws IOException
+ Trimmer trimmers[], PrintStream trimLogStream, PrintStream statsSummaryStream,
+ PairingValidator pairingValidator, int threads) throws IOException
{
ArrayBlockingQueue<List<FastqRecord>> parser1Queue = new ArrayBlockingQueue<List<FastqRecord>>(threads);
ArrayBlockingQueue<List<FastqRecord>> parser2Queue = new ArrayBlockingQueue<List<FastqRecord>>(threads);
@@ -249,7 +250,7 @@ public class TrimmomaticPE extends Trimmomatic
trimLogThread.join();
statsThread.join();
- logger.infoln(statsWorker.getStats().getStatsPE());
+ logger.infoln(statsWorker.getStats().processStatsPE(statsSummaryStream));
}
catch (InterruptedException e)
{
@@ -258,7 +259,7 @@ public class TrimmomaticPE extends Trimmomatic
}
public void process(File input1, File input2, File output1P, File output1U, File output2P, File output2U,
- Trimmer trimmers[], int phredOffset, File trimLog, boolean validatePairing, int threads) throws IOException
+ Trimmer trimmers[], int phredOffset, File trimLog, File statsSummaryFile, boolean validatePairing, int threads) throws IOException
{
FastqParser parser1 = new FastqParser(phredOffset);
parser1.parse(input1);
@@ -302,6 +303,10 @@ public class TrimmomaticPE extends Trimmomatic
// FileOutputStream(trimLog),1000000),false);
trimLogStream = new PrintStream(trimLog);
+ PrintStream statsSummaryStream = null;
+ if(statsSummaryFile!=null)
+ statsSummaryStream = new PrintStream(statsSummaryFile);
+
PairingValidator pairingValidator=null;
if(validatePairing)
@@ -309,10 +314,10 @@ public class TrimmomaticPE extends Trimmomatic
if (threads == 1)
processSingleThreaded(parser1, parser2, serializer1P, serializer1U, serializer2P, serializer2U, trimmers,
- trimLogStream, pairingValidator);
+ trimLogStream, statsSummaryStream, pairingValidator);
else
processMultiThreaded(parser1, parser2, serializer1P, serializer1U, serializer2P, serializer2U, trimmers,
- trimLogStream, pairingValidator, threads);
+ trimLogStream, statsSummaryStream, pairingValidator, threads);
serializer1P.close();
serializer1U.close();
@@ -321,6 +326,9 @@ public class TrimmomaticPE extends Trimmomatic
if (trimLogStream != null)
trimLogStream.close();
+
+ if(statsSummaryStream != null)
+ statsSummaryStream.close();
}
private static int getFileExtensionIndex(String str)
@@ -414,6 +422,7 @@ public class TrimmomaticPE extends Trimmomatic
boolean showVersion=false;
File trimLog = null;
+ File statsSummary = null;
List<String> nonOptionArgs=new ArrayList<String>();
@@ -436,6 +445,13 @@ public class TrimmomaticPE extends Trimmomatic
else
badOption = true;
}
+ else if (arg.equals("-summary"))
+ {
+ if (argIndex < args.length)
+ statsSummary = new File(args[argIndex++]);
+ else
+ badOption = true;
+ }
else if (arg.equals("-basein"))
{
if (argIndex < args.length)
@@ -536,7 +552,8 @@ public class TrimmomaticPE extends Trimmomatic
Trimmer trimmers[]=createTrimmers(logger, nonOptionArgsIter);
TrimmomaticPE tm = new TrimmomaticPE(logger);
- tm.process(inputs[0], inputs[1], outputs[0], outputs[1], outputs[2], outputs[3], trimmers, phredOffset, trimLog, validatePairs, threads);
+ tm.process(inputs[0], inputs[1], outputs[0], outputs[1], outputs[2], outputs[3],
+ trimmers, phredOffset, trimLog, statsSummary, validatePairs, threads);
logger.infoln("TrimmomaticPE: Completed successfully");
return true;
@@ -546,8 +563,7 @@ public class TrimmomaticPE extends Trimmomatic
{
if (!run(args))
{
- System.err
- .println("Usage: TrimmomaticPE [-threads <threads>] [-phred33|-phred64] [-trimlog <trimLogFile>] [-quiet] [-validatePairs] [-basein <inputBase> | <inputFile1> <inputFile2>] [-baseout <outputBase> | <outputFile1P> <outputFile1U> <outputFile2P> <outputFile2U>] <trimmer1>...");
+ System.err.println("Usage: [-version] [-threads <threads>] [-phred33|-phred64] [-trimlog <trimLogFile>] [-summary <statsSummaryFile>] [-quiet] [-validatePairs] [-basein <inputBase> | <inputFile1> <inputFile2>] [-baseout <outputBase> | <outputFile1P> <outputFile1U> <outputFile2P> <outputFile2U>] <trimmer1>...");
System.exit(1);
}
}
=====================================
src/org/usadellab/trimmomatic/TrimmomaticSE.java
=====================================
--- a/src/org/usadellab/trimmomatic/TrimmomaticSE.java
+++ b/src/org/usadellab/trimmomatic/TrimmomaticSE.java
@@ -48,7 +48,7 @@ public class TrimmomaticSE extends Trimmomatic
}
public void processSingleThreaded(FastqParser parser, FastqSerializer serializer, Trimmer trimmers[],
- PrintStream trimLogStream) throws IOException
+ PrintStream trimLogStream, PrintStream statsSummaryStream) throws IOException
{
TrimStats stats = new TrimStats();
@@ -102,11 +102,11 @@ public class TrimmomaticSE extends Trimmomatic
}
}
- logger.infoln(stats.getStatsSE());
+ logger.infoln(stats.processStatsSE(statsSummaryStream));
}
public void processMultiThreaded(FastqParser parser, FastqSerializer serializer, Trimmer trimmers[],
- PrintStream trimLogStream, int threads) throws IOException
+ PrintStream trimLogStream, PrintStream statsSummaryStream, int threads) throws IOException
{
ArrayBlockingQueue<List<FastqRecord>> parserQueue = new ArrayBlockingQueue<List<FastqRecord>>(threads);
ArrayBlockingQueue<Runnable> taskQueue = new ArrayBlockingQueue<Runnable>(threads * 2);
@@ -181,7 +181,7 @@ public class TrimmomaticSE extends Trimmomatic
trimLogThread.join();
statsThread.join();
- logger.infoln(statsWorker.getStats().getStatsSE());
+ logger.infoln(statsWorker.getStats().processStatsSE(statsSummaryStream));
}
catch (InterruptedException e)
{
@@ -190,7 +190,7 @@ public class TrimmomaticSE extends Trimmomatic
}
- public void process(File input, File output, Trimmer trimmers[], int phredOffset, File trimLog, int threads)
+ public void process(File input, File output, Trimmer trimmers[], int phredOffset, File trimLog, File statsSummaryFile, int threads)
throws IOException
{
FastqParser parser = new FastqParser(phredOffset);
@@ -218,15 +218,22 @@ public class TrimmomaticSE extends Trimmomatic
if (trimLog != null)
trimLogStream = new PrintStream(trimLog);
+ PrintStream statsSummaryStream = null;
+ if(statsSummaryFile!=null)
+ statsSummaryStream = new PrintStream(statsSummaryFile);
+
if (threads == 1)
- processSingleThreaded(parser, serializer, trimmers, trimLogStream);
+ processSingleThreaded(parser, serializer, trimmers, trimLogStream, statsSummaryStream);
else
- processMultiThreaded(parser, serializer, trimmers, trimLogStream, threads);
+ processMultiThreaded(parser, serializer, trimmers, trimLogStream, statsSummaryStream, threads);
serializer.close();
if (trimLogStream != null)
trimLogStream.close();
+
+ if(statsSummaryStream != null)
+ statsSummaryStream.close();
}
public static boolean run(String[] args) throws IOException
@@ -238,6 +245,7 @@ public class TrimmomaticSE extends Trimmomatic
boolean badOption = false;
File trimLog = null;
+ File statsSummary = null;
boolean quiet=false;
boolean showVersion=false;
@@ -262,6 +270,13 @@ public class TrimmomaticSE extends Trimmomatic
else
badOption = true;
}
+ else if (arg.equals("-summary"))
+ {
+ if (argIndex < args.length)
+ statsSummary = new File(args[argIndex++]);
+ else
+ badOption = true;
+ }
else if (arg.equals("-quiet"))
quiet=true;
else if (arg.equals("-version"))
@@ -303,7 +318,7 @@ public class TrimmomaticSE extends Trimmomatic
Trimmer trimmers[]=createTrimmers(logger, nonOptionArgsIter);
TrimmomaticSE tm = new TrimmomaticSE(logger);
- tm.process(input, output, trimmers, phredOffset, trimLog, threads);
+ tm.process(input, output, trimmers, phredOffset, trimLog, statsSummary, threads);
logger.infoln("TrimmomaticSE: Completed successfully");
return true;
@@ -314,7 +329,7 @@ public class TrimmomaticSE extends Trimmomatic
if(!run(args))
{
System.err
- .println("Usage: TrimmomaticSE [-threads <threads>] [-phred33|-phred64] [-trimlog <trimLogFile>] [-quiet] <inputFile> <outputFile> <trimmer1>...");
+ .println("Usage: TrimmomaticSE [-version] [-threads <threads>] [-phred33|-phred64] [-trimlog <trimLogFile>] [-summary <statsSummaryFile>] [-quiet] <inputFile> <outputFile> <trimmer1>...");
System.exit(1);
}
}
=====================================
src/org/usadellab/trimmomatic/trim/BaseCountTrimmer.java
=====================================
--- /dev/null
+++ b/src/org/usadellab/trimmomatic/trim/BaseCountTrimmer.java
@@ -0,0 +1,58 @@
+package org.usadellab.trimmomatic.trim;
+
+import java.util.BitSet;
+import org.usadellab.trimmomatic.fastq.FastqRecord;
+
+public class BaseCountTrimmer extends AbstractSingleRecordTrimmer
+{
+ private int minCount=0;
+ private Integer maxCount=null;
+ private BitSet baseSet;
+
+ public BaseCountTrimmer(String args)
+ {
+ String split[]=args.split(":");
+ baseSet=new BitSet();
+
+ String bases=split[0];
+
+ for(int i=0;i<bases.length();i++)
+ {
+ char c=bases.charAt(i);
+ baseSet.set(c);
+ }
+
+ if(split.length>1)
+ {
+ minCount=Integer.parseInt(split[1]);
+
+ if(split.length>2)
+ maxCount=new Integer(split[2]);
+ }
+ }
+
+
+ @Override
+ public FastqRecord processRecord(FastqRecord in)
+ {
+ int count=0;
+
+ String seq=in.getSequence();
+
+ for(int i=0;i<seq.length();i++)
+ {
+ char c=seq.charAt(i);
+ if(baseSet.get(c))
+ count++;
+ }
+
+ if(count<minCount)
+ return null;
+
+ if(maxCount!=null && count>maxCount)
+ return null;
+
+ return in;
+ }
+
+}
=====================================
src/org/usadellab/trimmomatic/trim/TailCropTrimmer.java
=====================================
--- a/src/org/usadellab/trimmomatic/trim/TailCropTrimmer.java
+++ b/src/org/usadellab/trimmomatic/trim/TailCropTrimmer.java
@@ -12,7 +12,7 @@ public class TailCropTrimmer extends AbstractSingleRecordTrimmer
String arg[]=args.split(":");
bases=Integer.parseInt(arg[0]);
-
+
if(arg.length>1)
maxLength=Integer.parseInt(arg[1]);
}
=====================================
src/org/usadellab/trimmomatic/trim/TrimmerFactory.java
=====================================
--- a/src/org/usadellab/trimmomatic/trim/TrimmerFactory.java
+++ b/src/org/usadellab/trimmomatic/trim/TrimmerFactory.java
@@ -60,6 +60,9 @@ public class TrimmerFactory
if(trimmerName.equals("AVGQUAL"))
return new AvgQualTrimmer(args);
+
+ if(trimmerName.equals("BASECOUNT"))
+ return new BaseCountTrimmer(args);
if(trimmerName.equals("TOPHRED33"))
return new ToPhred33Trimmer(args);
View it on GitLab: https://salsa.debian.org/med-team/trimmomatic/commit/d2edfdeaf8ed8883aebb02a251b04521b5a70c00
---
View it on GitLab: https://salsa.debian.org/med-team/trimmomatic/commit/d2edfdeaf8ed8883aebb02a251b04521b5a70c00
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20180522/33496e1f/attachment-0001.html>
More information about the debian-med-commit
mailing list