Loading build.xml +1 −1 Original line number Diff line number Diff line <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" /> Loading src/org/usadellab/trimmomatic/TrimStats.java +59 −34 Original line number Diff line number Diff line 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; Loading @@ -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; } Loading @@ -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; 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: "+input+ " Both Surviving: "+survivingBoth+" ("+formatter.format(survivingBothPercent)+ "%) Forward Only Surviving: "+survivingForward+" ("+formatter.format(survivingForwardPercent)+ "%) Reverse Only Surviving: "+survivingReverse+" ("+formatter.format(survivingReversePercent)+ 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)+"%)"; } Loading src/org/usadellab/trimmomatic/Trimmomatic.java +2 −2 Original line number Diff line number Diff line Loading @@ -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); Loading src/org/usadellab/trimmomatic/TrimmomaticPE.java +26 −10 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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); Loading Loading @@ -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) { Loading @@ -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); Loading Loading @@ -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) Loading @@ -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(); Loading @@ -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) Loading Loading @@ -414,6 +422,7 @@ public class TrimmomaticPE extends Trimmomatic boolean showVersion=false; File trimLog = null; File statsSummary = null; List<String> nonOptionArgs=new ArrayList<String>(); Loading @@ -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) Loading Loading @@ -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; Loading @@ -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); } } Loading src/org/usadellab/trimmomatic/TrimmomaticSE.java +24 −9 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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); Loading Loading @@ -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) { Loading @@ -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); Loading Loading @@ -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 Loading @@ -238,6 +245,7 @@ public class TrimmomaticSE extends Trimmomatic boolean badOption = false; File trimLog = null; File statsSummary = null; boolean quiet=false; boolean showVersion=false; Loading @@ -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")) Loading Loading @@ -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; Loading @@ -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); } } Loading Loading
build.xml +1 −1 Original line number Diff line number Diff line <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" /> Loading
src/org/usadellab/trimmomatic/TrimStats.java +59 −34 Original line number Diff line number Diff line 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; Loading @@ -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; } Loading @@ -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; 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: "+input+ " Both Surviving: "+survivingBoth+" ("+formatter.format(survivingBothPercent)+ "%) Forward Only Surviving: "+survivingForward+" ("+formatter.format(survivingForwardPercent)+ "%) Reverse Only Surviving: "+survivingReverse+" ("+formatter.format(survivingReversePercent)+ 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)+"%)"; } Loading
src/org/usadellab/trimmomatic/Trimmomatic.java +2 −2 Original line number Diff line number Diff line Loading @@ -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); Loading
src/org/usadellab/trimmomatic/TrimmomaticPE.java +26 −10 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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); Loading Loading @@ -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) { Loading @@ -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); Loading Loading @@ -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) Loading @@ -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(); Loading @@ -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) Loading Loading @@ -414,6 +422,7 @@ public class TrimmomaticPE extends Trimmomatic boolean showVersion=false; File trimLog = null; File statsSummary = null; List<String> nonOptionArgs=new ArrayList<String>(); Loading @@ -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) Loading Loading @@ -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; Loading @@ -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); } } Loading
src/org/usadellab/trimmomatic/TrimmomaticSE.java +24 −9 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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); Loading Loading @@ -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) { Loading @@ -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); Loading Loading @@ -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 Loading @@ -238,6 +245,7 @@ public class TrimmomaticSE extends Trimmomatic boolean badOption = false; File trimLog = null; File statsSummary = null; boolean quiet=false; boolean showVersion=false; Loading @@ -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")) Loading Loading @@ -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; Loading @@ -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); } } Loading