SamFileValidator v = new SamFileValidator(new PrintWriter(System.out), 1); final SamReader reader = SamReaderFactory.make().referenceSequence(params.reference).open(params.cramFile); List<SAMValidationError.Type> errors = new ArrayList<SAMValidationError.Type>();
@Test(dataProvider = "validateBamFileTerminationData") public void validateBamFileTerminationTest(final File file, final SAMValidationError.Type errorType, final int numWarnings, final int numErrors) throws IOException { final SamFileValidator samFileValidator = new SamFileValidator(new PrintWriter(System.out), 8000); samFileValidator.validateBamFileTermination(file); Assert.assertEquals(samFileValidator.getErrorsByType().get(errorType).getValue(), 1.0); Assert.assertEquals(samFileValidator.getNumWarnings(), numWarnings); Assert.assertEquals(samFileValidator.getNumErrors(), numErrors); }
@Test public void testNonBarcodedWithCenter() throws Exception { final File outputBam = File.createTempFile("nonBarcodedDescriptionNonBI.", ".sam"); outputBam.deleteOnExit(); final int lane = 1; Assert.assertEquals(runPicardCommandLine(new String[]{ "BASECALLS_DIR=" + BASECALLS_DIR, "LANE=" + lane, "READ_STRUCTURE=25S8S25T", "OUTPUT=" + outputBam, "RUN_BARCODE=HiMom", "SAMPLE_ALIAS=HiDad", "SEQUENCING_CENTER=TEST_CENTER123", "LIBRARY_NAME=Hello, World" }), 0); final SamFileValidator validator = new SamFileValidator(new PrintWriter(System.out), 100); validator.validateSamFileSummary(SamReaderFactory.makeDefault().open(outputBam), null); IOUtil.assertFilesEqual(outputBam, new File(TEST_DATA_DIR, "nonBarcodedDescriptionNonBI.sam")); }
@Test(dataProvider = "molecularBarcodeData") public void testMolecularBarcodes(final String readStructure, final String[] umiTags, final String[] extraArgs, final String expectedSam, final int expectedReturn) throws Exception { final File outputBam = File.createTempFile("molecularBarcodeTest.", ".sam"); outputBam.deleteOnExit(); final int lane = 1; List<String> args = new ArrayList<>(CollectionUtil.makeList( "BASECALLS_DIR=" + BASECALLS_DIR, "LANE=" + lane, "READ_STRUCTURE=" + readStructure, "OUTPUT=" + outputBam, "RUN_BARCODE=HiMom", "SAMPLE_ALIAS=HiDad", "SEQUENCING_CENTER=BI", "LIBRARY_NAME=Hello, World")); if (umiTags != null) { for (final String umiTag : umiTags) { args.add("TAG_PER_MOLECULAR_INDEX=" + umiTag); } } if (extraArgs != null) { args.addAll(Arrays.asList(extraArgs)); } Assert.assertEquals(runPicardCommandLine(args), expectedReturn); if (expectedSam != null) { final SamFileValidator validator = new SamFileValidator(new PrintWriter(System.out), 100); validator.validateSamFileSummary(SamReaderFactory.makeDefault().open(outputBam), null); IOUtil.assertFilesEqual(outputBam, new File(TEST_DATA_DIR, expectedSam)); } }
@Test public void testVerbose() throws IOException { final SAMRecordSetBuilder samBuilder = new SAMRecordSetBuilder(); for (int i = 0; i < 20; i++) { samBuilder.addFrag(String.valueOf(i), 1, i, false); } for (final SAMRecord record : samBuilder) { record.setProperPairFlag(true); } final StringWriter results = new StringWriter(); final SamFileValidator validator = new SamFileValidator(new PrintWriter(results), 8000); validator.setVerbose(true, 10); validator.validateSamFileVerbose(samBuilder.getSamReader(), null); final int lineCount = results.toString().split("\n").length; Assert.assertEquals(lineCount, 11); // 1 extra message added to indicate maximum number of errors Assert.assertEquals(validator.getNumErrors(), 6); Assert.assertEquals(validator.getNumWarnings(), 4); }
private Histogram<String> executeValidationWithErrorIgnoring(final SamReader samReader, final ReferenceSequenceFile reference, final IndexValidationStringency stringency, final Collection<SAMValidationError.Type> ignoringError, final boolean skipMateValidation) throws IOException { final File outFile = File.createTempFile("validation", ".txt"); outFile.deleteOnExit(); final PrintWriter out = new PrintWriter(outFile); final SamFileValidator samFileValidator = new SamFileValidator(out, 8000); samFileValidator.setIndexValidationStringency(stringency).setErrorsToIgnore(ignoringError); samFileValidator.setSkipMateValidation(skipMateValidation); samFileValidator.validateSamFileSummary(samReader, reference); final LineNumberReader reader = new LineNumberReader(new FileReader(outFile)); if (reader.readLine().equals("No errors found")) { return new Histogram<>(); } final MetricsFile<MetricBase, String> outputFile = new MetricsFile<>(); outputFile.read(new FileReader(outFile)); Assert.assertNotNull(outputFile.getHistogram()); return outputFile.getHistogram(); }
@Test(dataProvider = "testCleanSamDataProvider") public void testCleanSam(final String samFile, final String expectedCigar) throws IOException { final File cleanedFile = File.createTempFile(samFile + ".", ".sam"); cleanedFile.deleteOnExit(); final String[] args = new String[]{ "INPUT=" + new File(TEST_DATA_DIR, samFile).getAbsolutePath(), "OUTPUT=" + cleanedFile.getAbsolutePath() }; Assert.assertEquals(runPicardCommandLine(args), 0); final SamFileValidator validator = new SamFileValidator(new PrintWriter(System.out), 8000); validator.setIgnoreWarnings(true); validator.setVerbose(true, 1000); validator.setErrorsToIgnore(Arrays.asList(SAMValidationError.Type.MISSING_READ_GROUP)); SamReader samReader = SamReaderFactory.makeDefault().validationStringency(ValidationStringency.LENIENT).open(cleanedFile); final SAMRecord rec = samReader.iterator().next(); samReader.close(); Assert.assertEquals(rec.getCigarString(), expectedCigar); samReader = SamReaderFactory.makeDefault().validationStringency(ValidationStringency.LENIENT).open(cleanedFile); final boolean validated = validator.validateSamFileVerbose(samReader, null); samReader.close(); Assert.assertTrue(validated, "ValidateSamFile failed"); }
final PrintWriter printWriter = new PrintWriter(outputStream)) { new SamFileValidator(printWriter, 100).validateSamFileSummary(samReader, null);
protected void test() { try { final SamFileValidator validator = new SamFileValidator(new PrintWriter(System.out), 8000);
factory.reapplyOptions(samReader); final SamFileValidator validator = new SamFileValidator(out, MAX_OPEN_TEMP_FILES); validator.setErrorsToIgnore(IGNORE); validator.setSkipMateValidation(SKIP_MATE_VALIDATION);
factory.reapplyOptions(samReader); final SamFileValidator validator = new SamFileValidator(out, MAX_OPEN_TEMP_FILES); validator.setErrorsToIgnore(IGNORE); validator.setSkipMateValidation(SKIP_MATE_VALIDATION);