private static File writeMetrics(final MetricsFile<MetricBase, Comparable<?>> metricsFile, final File outputDirectory, final String outputPrefix, final String outputExtension) { final File outputFile = new File(outputDirectory, String.format("%s.%s", outputPrefix, outputExtension)); LOG.info(String.format("Writing %s lane metrics to %s ...", metricsFile.getMetrics().size(), outputFile)); metricsFile.write(outputFile); return outputFile; }
private static File writeMetrics(final MetricsFile<MetricBase, Comparable<?>> metricsFile, final File outputDirectory, final String outputPrefix, final String outputExtension) { final File outputFile = new File(outputDirectory, String.format("%s.%s", outputPrefix, outputExtension)); LOG.info(String.format("Writing %s lane metrics to %s ...", metricsFile.getMetrics().size(), outputFile)); metricsFile.write(outputFile); return outputFile; }
/** * Convenience method to read all the Metric beans from a metrics file. * @param file to be read. * @return list of beans from the file. */ public static List<? extends MetricBase> readBeans(final File file) { try { final MetricsFile<MetricBase, Comparable<?>> metricsFile = new MetricsFile<MetricBase, Comparable<?>>(); metricsFile.read(new FileReader(file)); return metricsFile.getMetrics(); } catch (FileNotFoundException e) { throw new SAMException(e.getMessage(), e); } } }
@Test public void testSingleEndWithBarcodeAtStartAndMolecularIndicies() throws Exception { final MetricsFile<ExtractIlluminaBarcodes.BarcodeMetric, Integer> metricsFile = runIt(1, "8B4M21T"); Assert.assertEquals(metricsFile.getMetrics().get(11).PERFECT_MATCHES, 1); }
@Test public void testSingleEndWithBarcodeAtEndAndMolecularIndicies() throws Exception { final MetricsFile<ExtractIlluminaBarcodes.BarcodeMetric, Integer> metricsFile = runIt(1, "4M21T8B"); Assert.assertEquals(metricsFile.getMetrics().get(0).PERFECT_MATCHES, 5); }
@Test public void testPairedEndWithBarcodeOnSecondEnd() throws Exception { final MetricsFile<ExtractIlluminaBarcodes.BarcodeMetric, Integer> metricsFile = runIt(1, "25T25T8B"); Assert.assertEquals(metricsFile.getMetrics().get(12).PERFECT_MATCHES, 1); }
@Test public void testPairedEndWithBarcodeOnFirstEnd() throws Exception { final MetricsFile<ExtractIlluminaBarcodes.BarcodeMetric, Integer> metricsFile = runIt(1, "25T8B25T"); Assert.assertEquals(metricsFile.getMetrics().get(0).PERFECT_MATCHES, 5); }
@Test public void testSingleEndWithBarcodeAtStart() throws Exception { final MetricsFile<ExtractIlluminaBarcodes.BarcodeMetric, Integer> metricsFile = runIt(1, "8B25T"); Assert.assertEquals(metricsFile.getMetrics().get(11).PERFECT_MATCHES, 1); }
@Test public void testSingleEndWithBarcodeAtEnd() throws Exception { final MetricsFile<ExtractIlluminaBarcodes.BarcodeMetric, Integer> metricsFile = runIt(1, "25T8B"); Assert.assertEquals(metricsFile.getMetrics().get(0).PERFECT_MATCHES, 5); }
@Test public void testPairedEndWithBarcodeAndMolecularIndicies() throws Exception { final MetricsFile<ExtractIlluminaBarcodes.BarcodeMetric, Integer> metricsFile = runIt(1, "4M21T8B21T4M"); Assert.assertEquals(metricsFile.getMetrics().get(0).PERFECT_MATCHES, 5); }
@Test public void chrMReads() throws Exception { final MetricsFile<RrbsSummaryMetrics, ?> metricsFile = getSummaryFile(CHR_M_SAM, CHR_M_REFERENCE, rootTestDir + "/READ_TEST", new ArrayList<String>()); final RrbsSummaryMetrics metrics = metricsFile.getMetrics().get(0); Assert.assertEquals(metrics.READS_ALIGNED.intValue(), 5); Assert.assertEquals(metrics.NON_CPG_BASES.intValue(), 15); Assert.assertEquals(metrics.NON_CPG_CONVERTED_BASES.intValue(), 11); Assert.assertEquals(metrics.PCT_NON_CPG_BASES_CONVERTED, 0.733333); Assert.assertEquals(metrics.CPG_BASES_SEEN.intValue(), 5); Assert.assertEquals(metrics.CPG_BASES_CONVERTED.intValue(), 1); Assert.assertEquals(metrics.PCT_CPG_BASES_CONVERTED, 0.2); Assert.assertEquals(metrics.MEAN_CPG_COVERAGE, 1.666667); Assert.assertEquals(metrics.MEDIAN_CPG_COVERAGE.intValue(), 2); Assert.assertEquals(metrics.READS_WITH_NO_CPG.intValue(), 1); Assert.assertEquals(metrics.READS_IGNORED_SHORT.intValue(), 1); Assert.assertEquals(metrics.READS_IGNORED_MISMATCHES.intValue(), 1); }
@Override protected int doWork() { IOUtil.assertFileIsReadable(INPUT); if(OUTPUT != null) IOUtil.assertFileIsWritable(OUTPUT); final MetricsFile<CrosscheckMetric, ?> metricsFile = getMetricsFile(); try { metricsFile.read(new FileReader(INPUT)); } catch (FileNotFoundException e) { e.printStackTrace(); return 1; } clusterMetrics(metricsFile.getMetrics()).write(OUTPUT); return 0; }
@Test public void testDualBarcodes() throws Exception { final File metricsFile = File.createTempFile("dual.", ".metrics"); metricsFile.deleteOnExit(); final String[] args = new String[]{ "BASECALLS_DIR=" + dual.getAbsolutePath(), "LANE=" + 1, "METRICS_FILE=" + metricsFile.getPath(), "READ_STRUCTURE=" + "25T8B8B25T", "BARCODE=" + "CAATAGTCCGACTCTC" }; Assert.assertEquals(runPicardCommandLine(args), 0); final MetricsFile<ExtractIlluminaBarcodes.BarcodeMetric, Integer> result = new MetricsFile<>(); result.read(new FileReader(metricsFile)); Assert.assertEquals(result.getMetrics().get(0).PERFECT_MATCHES, 1, "Got wrong number of perfect matches"); Assert.assertEquals(result.getMetrics().get(0).ONE_MISMATCH_MATCHES, 0, "Got wrong number of one-mismatch matches"); }
@Override protected int doWork() { IOUtil.assertFileIsReadable(INPUT); if(OUTPUT != null) IOUtil.assertFileIsWritable(OUTPUT); final MetricsFile<CrosscheckMetric, ?> metricsFile = getMetricsFile(); try { metricsFile.read(new FileReader(INPUT)); } catch (FileNotFoundException e) { e.printStackTrace(); return 1; } clusterMetrics(metricsFile.getMetrics()).write(OUTPUT); return 0; }
@Test public void testCbclDualBarcodes() throws Exception { final File metricsFile = File.createTempFile("cbcl.", ".metrics"); metricsFile.deleteOnExit(); final String[] args = new String[]{ "BASECALLS_DIR=" + cbcl.getAbsolutePath() + "/BaseCalls", "LANE=" + 1, "METRICS_FILE=" + metricsFile.getPath(), "READ_STRUCTURE=" + "151T8B8B151T", "BARCODE=" + "CACCTAGTACTCGAGT" }; Assert.assertEquals(runPicardCommandLine(args), 0); final MetricsFile<ExtractIlluminaBarcodes.BarcodeMetric, Integer> result = new MetricsFile<>(); result.read(new FileReader(metricsFile)); Assert.assertEquals(result.getMetrics().get(0).PERFECT_MATCHES, 1, "Got wrong number of perfect matches"); Assert.assertEquals(result.getMetrics().get(0).ONE_MISMATCH_MATCHES, 0, "Got wrong number of one-mismatch matches"); }
@Test public void testNoLocsSymlink() throws Exception { final File metricsFile = File.createTempFile("dual.", ".metrics"); metricsFile.deleteOnExit(); final String[] args = new String[]{ "BASECALLS_DIR=" + noSymlink.getAbsolutePath(), "LANE=" + 1, "METRICS_FILE=" + metricsFile, "READ_STRUCTURE=" + "25T8B8B25T", "BARCODE=" + "CAATAGTCCGACTCTC" }; Assert.assertEquals(runPicardCommandLine(args), 0); final MetricsFile<ExtractIlluminaBarcodes.BarcodeMetric, Integer> result = new MetricsFile<>(); result.read(new FileReader(metricsFile)); Assert.assertEquals(result.getMetrics().get(0).PERFECT_MATCHES, 2, "Got wrong number of perfect matches"); Assert.assertEquals(result.getMetrics().get(0).ONE_MISMATCH_MATCHES, 0, "Got wrong number of one-mismatch matches"); }
/** * Convenience method to read all the Metric beans from a metrics file. * @param file to be read. * @return list of beans from the file. */ public static <T extends MetricBase> List<T> readBeans(final File file) { final MetricsFile<T, ?> metricsFile = new MetricsFile<>(); final Reader in = IOUtil.openFileForBufferedReading(file); metricsFile.read(in); CloserUtil.close(in); return metricsFile.getMetrics(); }
/** * Convenience method to read all the Metric beans from a metrics file. * @param file to be read. * @return list of beans from the file. */ public static <T extends MetricBase> List<T> readBeans(final File file) { final MetricsFile<T, ?> metricsFile = new MetricsFile<>(); final Reader in = IOUtil.openFileForBufferedReading(file); metricsFile.read(in); CloserUtil.close(in); return metricsFile.getMetrics(); }
@Test public void testZeroLengthReads() throws IOException { final File input = new File(TEST_DATA_DIR, "summary_alignment_stats_test2.sam"); final File outfile = File.createTempFile("alignmentMetrics", ".txt"); outfile.deleteOnExit(); final String[] args = new String[] { "INPUT=" + input.getAbsolutePath(), "OUTPUT=" + outfile.getAbsolutePath(), }; Assert.assertEquals(runPicardCommandLine(args), 0); final MetricsFile<AlignmentSummaryMetrics, Comparable<?>> output = new MetricsFile<>(); output.read(new FileReader(outfile)); for (final AlignmentSummaryMetrics metrics : output.getMetrics()) { // test that it doesn't blow up } }
@Test(dataProvider = "simpleTests") public void simpleTest(final String vcf, final String bam, final Map<String, Object> fieldValueMap) throws IOException, NoSuchFieldException, IllegalAccessException { final CollectIndependentReplicateMetrics est = new CollectIndependentReplicateMetrics(); est.INPUT = bams.get(bam); est.VCF = new File(testdir, vcf); est.OUTPUT = IOUtil.newTempFile("singleHet", ".duplication_metric", new File[]{bamOutDir}); est.MATRIX_OUTPUT = IOUtil.newTempFile("singleHet", ".duplication_matrix", new File[]{bamOutDir}); est.SAMPLE = "SAMPLE1"; est.OUTPUT.deleteOnExit(); est.MATRIX_OUTPUT.deleteOnExit(); est.doWork(); final MetricsFile<IndependentReplicateMetric, Integer> retval = new MetricsFile<>(); retval.read(new FileReader(est.OUTPUT)); for (final Map.Entry<String, Object> fieldValue : fieldValueMap.entrySet()) { final String field = fieldValue.getKey(); final Object expectedValue = fieldValue.getValue(); final Field o = IndependentReplicateMetric.class.getField(field); assertEquals(o.get(retval.getMetrics().get(0)), expectedValue, field); } }