From c0eb3930538946ba76a152b8e8243fdb39fb11d1 Mon Sep 17 00:00:00 2001 From: Yossi Farjoun Date: Sun, 26 Mar 2017 10:33:51 -0400 Subject: [PATCH 1/3] aesthetic changes --- .../picard/analysis/AlignmentSummaryMetrics.java | 10 +-- .../analysis/AlignmentSummaryMetricsCollector.java | 34 ++++----- .../CollectAlignmentSummaryMetricsTest.java | 84 +++++++++++----------- 3 files changed, 62 insertions(+), 66 deletions(-) diff --git a/src/main/java/picard/analysis/AlignmentSummaryMetrics.java b/src/main/java/picard/analysis/AlignmentSummaryMetrics.java index 4a7db22f5..9403c5232 100644 --- a/src/main/java/picard/analysis/AlignmentSummaryMetrics.java +++ b/src/main/java/picard/analysis/AlignmentSummaryMetrics.java @@ -51,7 +51,7 @@ /** The number of PF reads where PF is defined as passing Illumina's filter. */ public long PF_READS; - /** The percentage of reads that are PF (PF_READS / TOTAL_READS) */ + /** The fraction of reads that are PF (PF_READS / TOTAL_READS) */ public double PCT_PF_READS; /** @@ -108,7 +108,7 @@ public double PF_MISMATCH_RATE; /** - * The percentage of bases that mismatch the reference in PF HQ aligned reads. + * The fraction of bases that mismatch the reference in PF HQ aligned reads. */ public double PF_HQ_ERROR_RATE; @@ -131,7 +131,7 @@ public long READS_ALIGNED_IN_PAIRS; /** - * The percentage of reads whose mate pair was also aligned to the reference. + * The fraction of reads whose mate pair was also aligned to the reference. * READS_ALIGNED_IN_PAIRS / PF_READS_ALIGNED */ public double PCT_READS_ALIGNED_IN_PAIRS; @@ -148,13 +148,13 @@ public double STRAND_BALANCE; /** - * The percentage of reads that map outside of a maximum insert size (usually 100kb) or that have + * The fraction of reads that map outside of a maximum insert size (usually 100kb) or that have * the two ends mapping to different chromosomes. */ public double PCT_CHIMERAS; /** - * The percentage of PF reads that are unaligned and match to a known adapter sequence right from the + * The fraction of PF reads that are unaligned and match to a known adapter sequence right from the * start of the read. */ public double PCT_ADAPTER; diff --git a/src/main/java/picard/analysis/AlignmentSummaryMetricsCollector.java b/src/main/java/picard/analysis/AlignmentSummaryMetricsCollector.java index 1dba3fe39..6646f6cb7 100644 --- a/src/main/java/picard/analysis/AlignmentSummaryMetricsCollector.java +++ b/src/main/java/picard/analysis/AlignmentSummaryMetricsCollector.java @@ -53,7 +53,7 @@ private final boolean isBisulfiteSequenced; //The minimum mapping quality a base has to meet in order to be considered high quality - private final int MAPPING_QUALITY_THRESOLD = 20; + private final int MAPPING_QUALITY_THRESHOLD = 20; //The minimum quality a base has to meet in order to be consider hq_20 private final static int BASE_QUALITY_THRESHOLD = 20; @@ -67,7 +67,7 @@ public AlignmentSummaryMetricsCollector(final Set accum this.doRefMetrics = doRefMetrics; this.adapterUtility = new AdapterUtility(adapterSequence); this.maxInsertSize = maxInsertSize; - this.expectedOrientations = expectedOrientations; + this.expectedOrientations = expectedOrientations; this.isBisulfiteSequenced = isBisulfiteSequenced; setup(accumulationLevels, samRgRecords); } @@ -110,14 +110,12 @@ public void acceptRecord(final SAMRecordAndReference args) { if (rec.getReadPairedFlag()) { if (rec.getFirstOfPairFlag()) { firstOfPairCollector.addRecord(rec, ref); - } - else { + } else { secondOfPairCollector.addRecord(rec, ref); } pairCollector.addRecord(rec, ref); - } - else { + } else { unpairedCollector.addRecord(rec, ref); } } @@ -155,7 +153,7 @@ public void addMetricsToFile(final MetricsFile readLengthHistogram = new Histogram(); + private final Histogram readLengthHistogram = new Histogram<>(); private AlignmentSummaryMetrics metrics; private long chimeras; private long chimerasDenominator; @@ -164,9 +162,9 @@ public void addMetricsToFile(final MetricsFile mismatchHistogram = new Histogram(); - private final Histogram hqMismatchHistogram = new Histogram(); - private final Histogram badCycleHistogram = new Histogram(); + private final Histogram mismatchHistogram = new Histogram<>(); + private final Histogram hqMismatchHistogram = new Histogram<>(); + private final Histogram badCycleHistogram = new Histogram<>(); public IndividualAlignmentSummaryMetricsCollector(final AlignmentSummaryMetrics.Category pairingCategory, final String sample, @@ -201,14 +199,14 @@ public void onComplete() { metrics.BAD_CYCLES = 0; for (final Histogram.Bin cycleBin : badCycleHistogram.values()) { final double badCyclePercentage = cycleBin.getValue() / metrics.TOTAL_READS; - if (badCyclePercentage >= .8) { + if (badCyclePercentage >= 0.8) { metrics.BAD_CYCLES++; } } if(doRefMetrics) { if (metrics.PF_READS > 0) metrics.PCT_PF_READS_ALIGNED = (double) metrics.PF_READS_ALIGNED / (double) metrics.PF_READS; - if (metrics.PF_READS_ALIGNED > 0) metrics.PCT_READS_ALIGNED_IN_PAIRS = (double) metrics.READS_ALIGNED_IN_PAIRS/ (double) metrics.PF_READS_ALIGNED; + if (metrics.PF_READS_ALIGNED > 0) metrics.PCT_READS_ALIGNED_IN_PAIRS = (double) metrics.READS_ALIGNED_IN_PAIRS / (double) metrics.PF_READS_ALIGNED; if (metrics.PF_READS_ALIGNED > 0) metrics.STRAND_BALANCE = numPositiveStrand / (double) metrics.PF_READS_ALIGNED; if (this.chimerasDenominator > 0) metrics.PCT_CHIMERAS = this.chimeras / (double) this.chimerasDenominator; @@ -239,8 +237,7 @@ private void collectReadData(final SAMRecord record) { if (adapterUtility.isAdapterSequence(readBases)) { this.adapterReads++; } - } - else if(doRefMetrics) { + } else if(doRefMetrics) { metrics.PF_READS_ALIGNED++; if (!record.getReadNegativeStrandFlag()) numPositiveStrand++; if (record.getReadPairedFlag() && !record.getMateUnmappedFlag()) { @@ -248,7 +245,7 @@ else if(doRefMetrics) { // Check that both ends have mapq > minimum final Integer mateMq = record.getIntegerAttribute(SAMTag.MQ.toString()); - if (mateMq == null || mateMq >= MAPPING_QUALITY_THRESOLD && record.getMappingQuality() >= MAPPING_QUALITY_THRESOLD) { + if (mateMq == null || mateMq >= MAPPING_QUALITY_THRESHOLD && record.getMappingQuality() >= MAPPING_QUALITY_THRESHOLD) { ++this.chimerasDenominator; // With both reads mapped we can see if this pair is chimeric @@ -256,10 +253,9 @@ else if(doRefMetrics) { ++this.chimeras; } } - } - else { // fragment reads or read pairs with one end that maps + } else { // fragment reads or read pairs with one end that maps // Consider chimeras that occur *within* the read using the SA tag - if (record.getMappingQuality() >= MAPPING_QUALITY_THRESOLD) { + if (record.getMappingQuality() >= MAPPING_QUALITY_THRESHOLD) { ++this.chimerasDenominator; if (record.getAttribute(SAMTag.SA.toString()) != null) ++this.chimeras; } @@ -348,7 +344,7 @@ private boolean isNoiseRead(final SAMRecord record) { private boolean isHighQualityMapping(final SAMRecord record) { return !record.getReadFailsVendorQualityCheckFlag() && - record.getMappingQuality() >= MAPPING_QUALITY_THRESOLD; + record.getMappingQuality() >= MAPPING_QUALITY_THRESHOLD; } public AlignmentSummaryMetrics getMetrics() { diff --git a/src/test/java/picard/analysis/CollectAlignmentSummaryMetricsTest.java b/src/test/java/picard/analysis/CollectAlignmentSummaryMetricsTest.java index 58e2da9c4..d0f3178ce 100644 --- a/src/test/java/picard/analysis/CollectAlignmentSummaryMetricsTest.java +++ b/src/test/java/picard/analysis/CollectAlignmentSummaryMetricsTest.java @@ -60,48 +60,48 @@ public void test() throws IOException { }; Assert.assertEquals(runPicardCommandLine(args), 0); - final MetricsFile> output = new MetricsFile>(); + final MetricsFile> output = new MetricsFile<>(); output.read(new FileReader(outfile)); for (final AlignmentSummaryMetrics metrics : output.getMetrics()) { Assert.assertEquals(metrics.MEAN_READ_LENGTH, 101.0); switch (metrics.CATEGORY) { - case FIRST_OF_PAIR: - Assert.assertEquals(metrics.TOTAL_READS, 9); - Assert.assertEquals(metrics.PF_READS, 7); - Assert.assertEquals(metrics.PF_NOISE_READS, 1); - Assert.assertEquals(metrics.PF_HQ_ALIGNED_READS, 3); - Assert.assertEquals(metrics.PF_HQ_ALIGNED_Q20_BASES, 59); - Assert.assertEquals(metrics.PF_HQ_MEDIAN_MISMATCHES, 19.0); - Assert.assertEquals(metrics.PF_ALIGNED_BASES, 303); - Assert.assertEquals(metrics.PF_MISMATCH_RATE, /*58D/303D*/0.191419); - Assert.assertEquals(metrics.BAD_CYCLES, 19); - break; - case SECOND_OF_PAIR: - Assert.assertEquals(metrics.TOTAL_READS, 9); - Assert.assertEquals(metrics.PF_READS, 9); - Assert.assertEquals(metrics.PF_NOISE_READS, 1); - Assert.assertEquals(metrics.PF_HQ_ALIGNED_READS, 7); - Assert.assertEquals(metrics.PF_HQ_ALIGNED_Q20_BASES, 239); - Assert.assertEquals(metrics.PF_HQ_MEDIAN_MISMATCHES, 3.0); - Assert.assertEquals(metrics.PF_ALIGNED_BASES, 707); - Assert.assertEquals(metrics.PF_MISMATCH_RATE, /*19D/707D*/0.026874); - Assert.assertEquals(metrics.BAD_CYCLES, 3); - break; - case PAIR: - Assert.assertEquals(metrics.TOTAL_READS, 18); - Assert.assertEquals(metrics.PF_READS, 16); - Assert.assertEquals(metrics.PF_NOISE_READS, 2); - Assert.assertEquals(metrics.PF_HQ_ALIGNED_READS, 10); - Assert.assertEquals(metrics.PF_HQ_ALIGNED_Q20_BASES, 298); - Assert.assertEquals(metrics.PF_HQ_MEDIAN_MISMATCHES, 3.0); - Assert.assertEquals(metrics.PF_ALIGNED_BASES, 1010); - Assert.assertEquals(metrics.PF_MISMATCH_RATE, /*77D/1010D*/0.076238); - Assert.assertEquals(metrics.BAD_CYCLES, 22); - break; - case UNPAIRED: - default: - Assert.fail("Data does not contain this category: " + metrics.CATEGORY); + case FIRST_OF_PAIR: + Assert.assertEquals(metrics.TOTAL_READS, 9); + Assert.assertEquals(metrics.PF_READS, 7); + Assert.assertEquals(metrics.PF_NOISE_READS, 1); + Assert.assertEquals(metrics.PF_HQ_ALIGNED_READS, 3); + Assert.assertEquals(metrics.PF_HQ_ALIGNED_Q20_BASES, 59); + Assert.assertEquals(metrics.PF_HQ_MEDIAN_MISMATCHES, 19.0); + Assert.assertEquals(metrics.PF_ALIGNED_BASES, 303); + Assert.assertEquals(metrics.PF_MISMATCH_RATE, /*58D/303D*/0.191419); + Assert.assertEquals(metrics.BAD_CYCLES, 19); + break; + case SECOND_OF_PAIR: + Assert.assertEquals(metrics.TOTAL_READS, 9); + Assert.assertEquals(metrics.PF_READS, 9); + Assert.assertEquals(metrics.PF_NOISE_READS, 1); + Assert.assertEquals(metrics.PF_HQ_ALIGNED_READS, 7); + Assert.assertEquals(metrics.PF_HQ_ALIGNED_Q20_BASES, 239); + Assert.assertEquals(metrics.PF_HQ_MEDIAN_MISMATCHES, 3.0); + Assert.assertEquals(metrics.PF_ALIGNED_BASES, 707); + Assert.assertEquals(metrics.PF_MISMATCH_RATE, /*19D/707D*/0.026874); + Assert.assertEquals(metrics.BAD_CYCLES, 3); + break; + case PAIR: + Assert.assertEquals(metrics.TOTAL_READS, 18); + Assert.assertEquals(metrics.PF_READS, 16); + Assert.assertEquals(metrics.PF_NOISE_READS, 2); + Assert.assertEquals(metrics.PF_HQ_ALIGNED_READS, 10); + Assert.assertEquals(metrics.PF_HQ_ALIGNED_Q20_BASES, 298); + Assert.assertEquals(metrics.PF_HQ_MEDIAN_MISMATCHES, 3.0); + Assert.assertEquals(metrics.PF_ALIGNED_BASES, 1010); + Assert.assertEquals(metrics.PF_MISMATCH_RATE, /*77D/1010D*/0.076238); + Assert.assertEquals(metrics.BAD_CYCLES, 22); + break; + case UNPAIRED: + default: + Assert.fail("Data does not contain this category: " + metrics.CATEGORY); } } } @@ -123,7 +123,7 @@ public void testBisulfite() throws IOException { final NumberFormat format = NumberFormat.getInstance(); format.setMaximumFractionDigits(4); - final MetricsFile> output = new MetricsFile>(); + final MetricsFile> output = new MetricsFile<>(); output.read(new FileReader(outfile)); for (final AlignmentSummaryMetrics metrics : output.getMetrics()) { @@ -180,7 +180,7 @@ public void testNoReference() throws IOException { }; Assert.assertEquals(runPicardCommandLine(args), 0); - final MetricsFile> output = new MetricsFile>(); + final MetricsFile> output = new MetricsFile<>(); output.read(new FileReader(outfile)); for (final AlignmentSummaryMetrics metrics : output.getMetrics()) { @@ -237,7 +237,7 @@ public void testZeroLengthReads() throws IOException { }; Assert.assertEquals(runPicardCommandLine(args), 0); - final MetricsFile> output = new MetricsFile>(); + final MetricsFile> output = new MetricsFile<>(); output.read(new FileReader(outfile)); for (final AlignmentSummaryMetrics metrics : output.getMetrics()) { // test that it doesn't blow up @@ -259,7 +259,7 @@ public void testMultipleLevelsOfMetrics() throws IOException { }; Assert.assertEquals(runPicardCommandLine(args), 0); - final MetricsFile> output = new MetricsFile>(); + final MetricsFile> output = new MetricsFile<>(); output.read(new FileReader(outfile)); for (final AlignmentSummaryMetrics metrics : output.getMetrics()) { @@ -520,7 +520,7 @@ public void testChimeras() throws IOException { }; Assert.assertEquals(runPicardCommandLine(args), 0); - final MetricsFile> output = new MetricsFile>(); + final MetricsFile> output = new MetricsFile<>(); output.read(new FileReader(outfile)); for (final AlignmentSummaryMetrics metrics : output.getMetrics()) { From 3a414d8bf9227942a435ffc350c594cf671c8668 Mon Sep 17 00:00:00 2001 From: Yossi Farjoun Date: Sun, 26 Mar 2017 10:33:03 -0400 Subject: [PATCH 2/3] adding proper-pairs metrics and test --- src/main/java/picard/analysis/AlignmentSummaryMetrics.java | 11 +++++++++++ .../picard/analysis/AlignmentSummaryMetricsCollector.java | 2 ++ .../picard/analysis/CollectAlignmentSummaryMetricsTest.java | 13 ++++++++++++- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/java/picard/analysis/AlignmentSummaryMetrics.java b/src/main/java/picard/analysis/AlignmentSummaryMetrics.java index 9403c5232..51b5058ac 100644 --- a/src/main/java/picard/analysis/AlignmentSummaryMetrics.java +++ b/src/main/java/picard/analysis/AlignmentSummaryMetrics.java @@ -137,6 +137,17 @@ public double PCT_READS_ALIGNED_IN_PAIRS; /** + * The number of (primary) aligned reads that are **not** "properly" aligned in pairs (as per SAM flag 0x2). + */ + public long PF_READS_IMPROPER_PAIRS; + + /** + * The fraction of (primary) reads that are *not* "properly" aligned in pairs (as per SAM flag 0x2). + * PF_READS_IMPROPER_PAIRS / PF_READS_ALIGNED + */ + public double PCT_READS_IMPROPER_PAIRS; + + /** * The number of instrument cycles in which 80% or more of base calls were no-calls. */ public long BAD_CYCLES; diff --git a/src/main/java/picard/analysis/AlignmentSummaryMetricsCollector.java b/src/main/java/picard/analysis/AlignmentSummaryMetricsCollector.java index 6646f6cb7..72fdb62b9 100644 --- a/src/main/java/picard/analysis/AlignmentSummaryMetricsCollector.java +++ b/src/main/java/picard/analysis/AlignmentSummaryMetricsCollector.java @@ -207,6 +207,7 @@ public void onComplete() { if(doRefMetrics) { if (metrics.PF_READS > 0) metrics.PCT_PF_READS_ALIGNED = (double) metrics.PF_READS_ALIGNED / (double) metrics.PF_READS; if (metrics.PF_READS_ALIGNED > 0) metrics.PCT_READS_ALIGNED_IN_PAIRS = (double) metrics.READS_ALIGNED_IN_PAIRS / (double) metrics.PF_READS_ALIGNED; + if (metrics.PF_READS_ALIGNED > 0) metrics.PCT_READS_IMPROPER_PAIRS = (double) metrics.PF_READS_IMPROPER_PAIRS / (double) metrics.PF_READS_ALIGNED; if (metrics.PF_READS_ALIGNED > 0) metrics.STRAND_BALANCE = numPositiveStrand / (double) metrics.PF_READS_ALIGNED; if (this.chimerasDenominator > 0) metrics.PCT_CHIMERAS = this.chimeras / (double) this.chimerasDenominator; @@ -239,6 +240,7 @@ private void collectReadData(final SAMRecord record) { } } else if(doRefMetrics) { metrics.PF_READS_ALIGNED++; + if (!record.getProperPairFlag()) metrics.PF_READS_IMPROPER_PAIRS++; if (!record.getReadNegativeStrandFlag()) numPositiveStrand++; if (record.getReadPairedFlag() && !record.getMateUnmappedFlag()) { metrics.READS_ALIGNED_IN_PAIRS++; diff --git a/src/test/java/picard/analysis/CollectAlignmentSummaryMetricsTest.java b/src/test/java/picard/analysis/CollectAlignmentSummaryMetricsTest.java index d0f3178ce..c80681062 100644 --- a/src/test/java/picard/analysis/CollectAlignmentSummaryMetricsTest.java +++ b/src/test/java/picard/analysis/CollectAlignmentSummaryMetricsTest.java @@ -62,7 +62,8 @@ public void test() throws IOException { final MetricsFile> output = new MetricsFile<>(); output.read(new FileReader(outfile)); - + + Assert.assertEquals(output.getMetrics().size(), 3); for (final AlignmentSummaryMetrics metrics : output.getMetrics()) { Assert.assertEquals(metrics.MEAN_READ_LENGTH, 101.0); switch (metrics.CATEGORY) { @@ -73,6 +74,9 @@ public void test() throws IOException { Assert.assertEquals(metrics.PF_HQ_ALIGNED_READS, 3); Assert.assertEquals(metrics.PF_HQ_ALIGNED_Q20_BASES, 59); Assert.assertEquals(metrics.PF_HQ_MEDIAN_MISMATCHES, 19.0); + Assert.assertEquals(metrics.PF_READS_ALIGNED, 3); + Assert.assertEquals(metrics.PF_READS_IMPROPER_PAIRS, 1); + Assert.assertEquals(metrics.PCT_READS_IMPROPER_PAIRS, 0.333333 /* 1/3 */); Assert.assertEquals(metrics.PF_ALIGNED_BASES, 303); Assert.assertEquals(metrics.PF_MISMATCH_RATE, /*58D/303D*/0.191419); Assert.assertEquals(metrics.BAD_CYCLES, 19); @@ -84,7 +88,11 @@ public void test() throws IOException { Assert.assertEquals(metrics.PF_HQ_ALIGNED_READS, 7); Assert.assertEquals(metrics.PF_HQ_ALIGNED_Q20_BASES, 239); Assert.assertEquals(metrics.PF_HQ_MEDIAN_MISMATCHES, 3.0); + Assert.assertEquals(metrics.PF_READS_ALIGNED, 7); + Assert.assertEquals(metrics.PF_READS_IMPROPER_PAIRS, 5); + Assert.assertEquals(metrics.PCT_READS_IMPROPER_PAIRS, 0.714286 /* 5/7 */); Assert.assertEquals(metrics.PF_ALIGNED_BASES, 707); + Assert.assertEquals(metrics.PCT_READS_ALIGNED_IN_PAIRS, 0.285714 /* 2D/7 */); Assert.assertEquals(metrics.PF_MISMATCH_RATE, /*19D/707D*/0.026874); Assert.assertEquals(metrics.BAD_CYCLES, 3); break; @@ -95,6 +103,9 @@ public void test() throws IOException { Assert.assertEquals(metrics.PF_HQ_ALIGNED_READS, 10); Assert.assertEquals(metrics.PF_HQ_ALIGNED_Q20_BASES, 298); Assert.assertEquals(metrics.PF_HQ_MEDIAN_MISMATCHES, 3.0); + Assert.assertEquals(metrics.PF_READS_ALIGNED, 10); + Assert.assertEquals(metrics.PF_READS_IMPROPER_PAIRS, 6); + Assert.assertEquals(metrics.PCT_READS_IMPROPER_PAIRS, 0.6 /* 6/10 */); Assert.assertEquals(metrics.PF_ALIGNED_BASES, 1010); Assert.assertEquals(metrics.PF_MISMATCH_RATE, /*77D/1010D*/0.076238); Assert.assertEquals(metrics.BAD_CYCLES, 22); From 79faa4e8fb1329a1bd4a205317dfd46448531b2a Mon Sep 17 00:00:00 2001 From: Yossi Farjoun Date: Mon, 24 Apr 2017 12:49:52 -0400 Subject: [PATCH 3/3] - changed name to include "PF" --- src/main/java/picard/analysis/AlignmentSummaryMetrics.java | 2 +- src/main/java/picard/analysis/AlignmentSummaryMetricsCollector.java | 2 +- .../java/picard/analysis/CollectAlignmentSummaryMetricsTest.java | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/picard/analysis/AlignmentSummaryMetrics.java b/src/main/java/picard/analysis/AlignmentSummaryMetrics.java index 51b5058ac..8422a83b8 100644 --- a/src/main/java/picard/analysis/AlignmentSummaryMetrics.java +++ b/src/main/java/picard/analysis/AlignmentSummaryMetrics.java @@ -145,7 +145,7 @@ * The fraction of (primary) reads that are *not* "properly" aligned in pairs (as per SAM flag 0x2). * PF_READS_IMPROPER_PAIRS / PF_READS_ALIGNED */ - public double PCT_READS_IMPROPER_PAIRS; + public double PCT_PF_READS_IMPROPER_PAIRS; /** * The number of instrument cycles in which 80% or more of base calls were no-calls. diff --git a/src/main/java/picard/analysis/AlignmentSummaryMetricsCollector.java b/src/main/java/picard/analysis/AlignmentSummaryMetricsCollector.java index 72fdb62b9..405f63487 100644 --- a/src/main/java/picard/analysis/AlignmentSummaryMetricsCollector.java +++ b/src/main/java/picard/analysis/AlignmentSummaryMetricsCollector.java @@ -207,7 +207,7 @@ public void onComplete() { if(doRefMetrics) { if (metrics.PF_READS > 0) metrics.PCT_PF_READS_ALIGNED = (double) metrics.PF_READS_ALIGNED / (double) metrics.PF_READS; if (metrics.PF_READS_ALIGNED > 0) metrics.PCT_READS_ALIGNED_IN_PAIRS = (double) metrics.READS_ALIGNED_IN_PAIRS / (double) metrics.PF_READS_ALIGNED; - if (metrics.PF_READS_ALIGNED > 0) metrics.PCT_READS_IMPROPER_PAIRS = (double) metrics.PF_READS_IMPROPER_PAIRS / (double) metrics.PF_READS_ALIGNED; + if (metrics.PF_READS_ALIGNED > 0) metrics.PCT_PF_READS_IMPROPER_PAIRS = (double) metrics.PF_READS_IMPROPER_PAIRS / (double) metrics.PF_READS_ALIGNED; if (metrics.PF_READS_ALIGNED > 0) metrics.STRAND_BALANCE = numPositiveStrand / (double) metrics.PF_READS_ALIGNED; if (this.chimerasDenominator > 0) metrics.PCT_CHIMERAS = this.chimeras / (double) this.chimerasDenominator; diff --git a/src/test/java/picard/analysis/CollectAlignmentSummaryMetricsTest.java b/src/test/java/picard/analysis/CollectAlignmentSummaryMetricsTest.java index c80681062..d9b0e3020 100644 --- a/src/test/java/picard/analysis/CollectAlignmentSummaryMetricsTest.java +++ b/src/test/java/picard/analysis/CollectAlignmentSummaryMetricsTest.java @@ -76,7 +76,7 @@ public void test() throws IOException { Assert.assertEquals(metrics.PF_HQ_MEDIAN_MISMATCHES, 19.0); Assert.assertEquals(metrics.PF_READS_ALIGNED, 3); Assert.assertEquals(metrics.PF_READS_IMPROPER_PAIRS, 1); - Assert.assertEquals(metrics.PCT_READS_IMPROPER_PAIRS, 0.333333 /* 1/3 */); + Assert.assertEquals(metrics.PCT_PF_READS_IMPROPER_PAIRS, 0.333333 /* 1/3 */); Assert.assertEquals(metrics.PF_ALIGNED_BASES, 303); Assert.assertEquals(metrics.PF_MISMATCH_RATE, /*58D/303D*/0.191419); Assert.assertEquals(metrics.BAD_CYCLES, 19); @@ -90,7 +90,7 @@ public void test() throws IOException { Assert.assertEquals(metrics.PF_HQ_MEDIAN_MISMATCHES, 3.0); Assert.assertEquals(metrics.PF_READS_ALIGNED, 7); Assert.assertEquals(metrics.PF_READS_IMPROPER_PAIRS, 5); - Assert.assertEquals(metrics.PCT_READS_IMPROPER_PAIRS, 0.714286 /* 5/7 */); + Assert.assertEquals(metrics.PCT_PF_READS_IMPROPER_PAIRS, 0.714286 /* 5/7 */); Assert.assertEquals(metrics.PF_ALIGNED_BASES, 707); Assert.assertEquals(metrics.PCT_READS_ALIGNED_IN_PAIRS, 0.285714 /* 2D/7 */); Assert.assertEquals(metrics.PF_MISMATCH_RATE, /*19D/707D*/0.026874); @@ -105,7 +105,7 @@ public void test() throws IOException { Assert.assertEquals(metrics.PF_HQ_MEDIAN_MISMATCHES, 3.0); Assert.assertEquals(metrics.PF_READS_ALIGNED, 10); Assert.assertEquals(metrics.PF_READS_IMPROPER_PAIRS, 6); - Assert.assertEquals(metrics.PCT_READS_IMPROPER_PAIRS, 0.6 /* 6/10 */); + Assert.assertEquals(metrics.PCT_PF_READS_IMPROPER_PAIRS, 0.6 /* 6/10 */); Assert.assertEquals(metrics.PF_ALIGNED_BASES, 1010); Assert.assertEquals(metrics.PF_MISMATCH_RATE, /*77D/1010D*/0.076238); Assert.assertEquals(metrics.BAD_CYCLES, 22);