/** * 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(); }
/** * Compare the metrics and histograms in two files, ignoring headers. */ public static boolean areMetricsAndHistogramsEqual(final File file1, final File file2) { try { final MetricsFile<MetricBase, ?> mf1 = new MetricsFile<>(); final MetricsFile<MetricBase, ?> mf2 = new MetricsFile<>(); mf1.read(new FileReader(file1)); mf2.read(new FileReader(file2)); return mf1.areMetricsEqual(mf2) && mf1.areHistogramsEqual(mf2); } catch (FileNotFoundException e) { throw new SAMException(e.getMessage(), e); } } }
/** Gets a MetricsFile with default headers already written into it. */ protected <A extends MetricBase,B extends Comparable<?>> MetricsFile<A,B> getMetricsFile() { final MetricsFile<A,B> file = new MetricsFile<>(); for (final Header h : this.defaultHeaders) { file.addHeader(h); } return file; }
/** * Compare the metrics in two files, ignoring headers and histograms. */ public static boolean areMetricsEqual(final File file1, final File file2) { try { final MetricsFile<MetricBase, ?> mf1 = new MetricsFile<>(); final MetricsFile<MetricBase, ?> mf2 = new MetricsFile<>(); mf1.read(new FileReader(file1)); mf2.read(new FileReader(file2)); return mf1.areMetricsEqual(mf2); } catch (FileNotFoundException e) { throw new SAMException(e.getMessage(), e); } }
@Override public void addMetricsToFile(final MetricsFile<RnaSeqMetrics, Integer> file) { // Compute metrics based on coverage of top 1000 genes final Histogram<Integer> normalizedCovByPos = computeCoverageMetrics(); file.addMetric(metrics); file.addHistogram(normalizedCovByPos); }
/** * Outputs validation summary report to out. * * @param samReader records to validate * @param reference if null, NM tag validation is skipped * @return boolean true if there are no validation errors, otherwise false */ public boolean validateSamFileSummary(final SamReader samReader, final ReferenceSequenceFile reference) { init(reference, samReader.getFileHeader()); validateSamFile(samReader, out); boolean result = errorsByType.isEmpty(); if (errorsByType.getCount() > 0) { // Convert to a histogram with String IDs so that WARNING: or ERROR: can be prepended to the error type. final Histogram<String> errorsAndWarningsByType = new Histogram<>("Error Type", "Count"); for (final Histogram.Bin<Type> bin : errorsByType.values()) { errorsAndWarningsByType.increment(bin.getId().getHistogramString(), bin.getValue()); } final MetricsFile<ValidationMetrics, String> metricsFile = new MetricsFile<>(); errorsByType.setBinLabel("Error Type"); errorsByType.setValueLabel("Count"); metricsFile.setHistogram(errorsAndWarningsByType); metricsFile.write(out); } cleanup(); return result; }
file.addMetric(metrics); file.setHistogram(metricsByLibrary.values().iterator().next().calculateRoiHistogram()); file.addHistogram(libraryIdGenerator.getDuplicateCountHist()); file.addHistogram(libraryIdGenerator.getOpticalDuplicateCountHist()); file.addHistogram(libraryIdGenerator.getNonOpticalDuplicateCountHist()); file.write(METRICS_FILE);
/** Helper method to persist metrics to file and read them back again. */ private <METRIC extends MetricBase> MetricsFile<METRIC, Integer> writeThenReadBack(MetricsFile<METRIC,Integer> in) throws IOException { File f = File.createTempFile("test", ".metrics"); f.deleteOnExit(); FileWriter out = new FileWriter(f); in.write(out); MetricsFile<METRIC,Integer> retval = new MetricsFile<METRIC,Integer>(); retval.read(new FileReader(f)); return retval; }
private MetricsFile<ExtractIlluminaBarcodes.BarcodeMetric, Integer> runIt(final List<String> args, final File metricsFile) throws Exception { // Generate _barcode.txt files and metrics file. Assert.assertEquals(runPicardCommandLine(args), 0); final MetricsFile<ExtractIlluminaBarcodes.BarcodeMetric, Integer> retval = new MetricsFile<>(); retval.read(new FileReader(metricsFile)); return retval; } }
@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; }
/** Checks that the headers, metrics and histogram are all equal. */ @Override public boolean equals(final Object o) { if (o == null) { return false; } if (getClass() != o.getClass()) { return false; } final MetricsFile that = (MetricsFile) o; if (!areHeadersEqual(that)) { return false; } if (!areMetricsEqual(that)) { return false; } if (!areHistogramsEqual(that)) { return false; } return true; }
@Test public void testWriteMetricsFile() throws IOException, ClassNotFoundException { MetricsFile<TestMetric,Integer> file = new MetricsFile<TestMetric,Integer>(); TestMetric metric = new TestMetric(); metric.STRING_PROP = "Hello World"; metric.BOOLEAN_PRIMITIVE = true; metric.CHAR_PRIMITIVE = 'B'; file.addMetric(metric); file.addHeader(stringHeader); file.addHeader(version); file.addHeader(version); histo.increment(5, 123981); histo.increment(1000, 10981982); file.setHistogram(histo); metric2.FLOAT_PROP = 0.998f; metric2.STRING_PROP = "Wheeeee!"; file.addMetric(metric2); file.addMetric(metric2);
/** * Method to read the header from a metrics file. */ public static List<Header> readHeaders(final File file) { try { final MetricsFile<MetricBase, ?> metricsFile = new MetricsFile<>(); metricsFile.read(new FileReader(file)); return metricsFile.getHeaders(); } catch (FileNotFoundException e) { throw new SAMException(e.getMessage(), e); } }
IOUtil.assertFileIsWritable(OXOG_OUT); final List<PreAdapterDetailMetrics> preAdapterDetailMetricsList = MetricsFile.readBeans(PRE_ADAPTER_IN); final List<BaitBiasDetailMetrics> baitBiasDetailMetricsList = MetricsFile.readBeans(BAIT_BIAS_IN); outputFile.addMetric(m); outputFile.write(OXOG_OUT); return 0;
@Test(dataProvider = "TheoreticalSensitivityConstantDepthDataProvider") public void testSensitivityAtConstantDepth(final double expected, final File metricsFile, final double alleleFraction, final int depth, final int sampleSize, final double tolerance) throws Exception { // This tests Theoretical Sensitivity assuming a uniform depth with a distribution of base quality scores. // Because this only tests sensitivity at a constant depth, we use this for testing the code at high depths. final MetricsFile<?, Integer> metrics = new MetricsFile<>(); try (final FileReader metricsFileReader = new FileReader(metricsFile)) { metrics.read(metricsFileReader); } final List<Histogram<Integer>> histograms = metrics.getAllHistograms(); final Histogram<Integer> qualityHistogram = histograms.get(1); // We ensure that even using different random seeds we converge to roughly the same value. for (int i = 0; i < 3; i++) { double result = TheoreticalSensitivity.sensitivityAtConstantDepth(depth, qualityHistogram, 3, sampleSize, alleleFraction, i); Assert.assertEquals(result, expected, tolerance); } }
public void addMetricsToFile(final MetricsFile<QualityYieldMetrics, Integer> metricsFile) { metricsFile.addMetric(metrics); } }
@Override protected void finish() { collector.finish(); final MetricsFile<AlignmentSummaryMetrics, Comparable<?>> file = getMetricsFile(); collector.addAllLevelsToFile(file); file.write(OUTPUT); }
@Test public void testFloatingPointEquality() throws IOException { MetricsFile<FloatingPointMetric,Integer> file = new MetricsFile<FloatingPointMetric,Integer>(); FloatingPointMetric metric = new FloatingPointMetric(); metric.DOUBLE_PRIMITIVE = .0000000000000000001d; metric.DOUBLE_PROP = .0000000000000000001d; metric.FLOAT_PRIMITIVE = .0000000000000000001f; metric.FLOAT_PROP = .0000000000000000001f; file.addMetric(metric); MetricsFile<FloatingPointMetric,Integer> file2 = writeThenReadBack(file); Assert.assertEquals(file, file2); }
@Test public void testSingleEndWithBarcodeAtEndAndMolecularIndicies() throws Exception { final MetricsFile<ExtractIlluminaBarcodes.BarcodeMetric, Integer> metricsFile = runIt(1, "4M21T8B"); Assert.assertEquals(metricsFile.getMetrics().get(0).PERFECT_MATCHES, 5); }