public SplitReadRealigner(GenomicProcessingContext pc) { this.pc = pc; this.readerFactory = SamReaderFactory.makeDefault().referenceSequence(pc.getReferenceFile()); } public int getMinSoftClipLength() {
/** Gets the SamReader from which records will be examined. This will also set the header so that it is available in * */ protected SamReader getSamReader() { final SamReader in = SamReaderFactory.makeDefault().referenceSequence(REFERENCE_SEQUENCE).open(INPUT); this.header = in.getFileHeader(); return in; }
public SamReaderFactory getSamReaderFactory() { SamReaderFactory factory = SamReaderFactory.makeDefault() .referenceSequence(getReferenceFile()) .validationStringency(ValidationStringency.LENIENT); //.enable(Option.INCLUDE_SOURCE_IN_RECORDS); // don't need as we're tracking ourselves using EvidenceSource return factory; }
/** Gets the SamReader from which records will be examined. This will also set the header so that it is available in * */ protected SamReader getSamReader() { final SamReader in = SamReaderFactory.makeDefault().referenceSequence(REFERENCE_SEQUENCE).open(INPUT); this.header = in.getFileHeader(); return in; }
@Test(dataProvider = "cramTestCases") public void testIterateCRAMWithIndex(final String inputFile, final String referenceFile) throws IOException { final File input = new File(TEST_DATA_DIR, inputFile); final File reference = new File(TEST_DATA_DIR, referenceFile); try(final SamReader reader = SamReaderFactory.makeDefault().referenceSequence(reference).open(input)) { for (final SAMRecord rec : reader) { } } }
@Test(dataProvider = "NoIndexCRAMTest") public void CRAMNoIndexTest(final String inputFile, final String referenceFile) throws IOException { final File input = new File(TEST_DATA_DIR, inputFile); final File reference = new File(TEST_DATA_DIR, referenceFile); try(final SamReader reader = SamReaderFactory.makeDefault().referenceSequence(reference).open(input)) { Assert.assertFalse(reader.hasIndex()); } }
protected int doWork() { IOUtil.assertFileIsReadable(INPUT); IOUtil.assertFileIsWritable(OUTPUT); if (INPUT.getAbsolutePath().endsWith(".sam")) { throw new PicardException("SAM files are not supported"); } final SAMFileHeader samFileHeader = SamReaderFactory.makeDefault().referenceSequence(REFERENCE_SEQUENCE).getFileHeader(INPUT); for (final String comment : COMMENT) { if (comment.contains("\n")) { throw new PicardException("Comments can not contain a new line"); } samFileHeader.addComment(comment); } BamFileIoUtils.reheaderBamFile(samFileHeader, INPUT, OUTPUT, CREATE_MD5_FILE, CREATE_INDEX); return 0; } }
protected int doWork() { IOUtil.assertFileIsReadable(INPUT); IOUtil.assertFileIsWritable(OUTPUT); if (INPUT.getAbsolutePath().endsWith(".sam")) { throw new PicardException("SAM files are not supported"); } final SAMFileHeader samFileHeader = SamReaderFactory.makeDefault().referenceSequence(REFERENCE_SEQUENCE).getFileHeader(INPUT); for (final String comment : COMMENT) { if (comment.contains("\n")) { throw new PicardException("Comments can not contain a new line"); } samFileHeader.addComment(comment); } BamFileIoUtils.reheaderBamFile(samFileHeader, INPUT, OUTPUT, CREATE_MD5_FILE, CREATE_INDEX); return 0; } }
private List<SAMRecord> getSAMRecordsFromPath(final Path sourcePath, final File referenceFile) throws IOException { List<SAMRecord> recs = new ArrayList<>(); try (SamReader reader = SamReaderFactory.make() .validationStringency(ValidationStringency.SILENT) .referenceSequence(referenceFile).open(sourcePath)) { for (SAMRecord rec : reader) { recs.add(rec); } } return recs; }
@Test(dataProvider = "SmallCRAMTest") public void CRAMIndexTest(final String inputFile, final String referenceFile, QueryInterval queryInterval, String expectedReadName) throws IOException { final File input = new File(TEST_DATA_DIR, inputFile); final File reference = new File(TEST_DATA_DIR, referenceFile); try(final SamReader reader = SamReaderFactory.makeDefault().referenceSequence(reference).open(input)) { Assert.assertTrue(reader.hasIndex()); final CloseableIterator<SAMRecord> iterator = reader.query(new QueryInterval[]{queryInterval}, false); Assert.assertTrue(iterator.hasNext()); SAMRecord r1 = iterator.next(); Assert.assertEquals(r1.getReadName(), expectedReadName); } }
@Test public void testValidCRAMFileWithoutSeqDict() throws Exception { final File reference = new File(TEST_DATA_DIR, "nm_tag_validation.fa"); final SamReader samReader = SamReaderFactory .makeDefault() .validationStringency(ValidationStringency.SILENT) .referenceSequence(reference) .open(new File(TEST_DATA_DIR, "nm_tag_validation.cram")); final Histogram<String> results = executeValidation(samReader, new FastaSequenceFile(reference, true), IndexValidationStringency.EXHAUSTIVE); Assert.assertTrue(!results.isEmpty()); }
/** * Create the SAM writer, given the constituent parts accrued. * @return Newly minted SAM file writer. */ public SamReader build() { if( samFile == null ) throw new ReviewedGATKException( "Filename for output sam file must be supplied."); if( validationStringency == null ) throw new ReviewedGATKException( "Header for output sam file must be supplied."); return SamReaderFactory .makeDefault() .referenceSequence(this.getReferenceFile()) .validationStringency(validationStringency) .open(samFile); } }
private void createLocalCRAMAndCRAI( final File inputCRAM, final File reference, final File outputCRAM, final File outputCRAI) throws IOException { Files.copy(inputCRAM.toPath(), outputCRAM.toPath(), StandardCopyOption.REPLACE_EXISTING); SAMFileHeader samHeader = null; try (SamReader reader = SamReaderFactory.makeDefault().referenceSequence(reference).open(inputCRAM)) { samHeader = reader.getFileHeader(); } try (FileOutputStream bos = new FileOutputStream(outputCRAI)) { CRAMCRAIIndexer craiIndexer = new CRAMCRAIIndexer(bos, samHeader); craiIndexer.writeIndex(new SeekableFileStream(outputCRAM), bos); } }
@Test(dataProvider="iteratorStateTests", expectedExceptions=SAMException.class, enabled=false) public void testIteratorState( final File cramFileName, final File referenceFileName, final int expectedCount) throws IOException { SamReaderFactory factory = SamReaderFactory.makeDefault(); if (referenceFileName != null) { factory = factory.referenceSequence(referenceFileName); } try (final SamReader reader = factory.open(cramFileName)) { final CloseableIterator<SAMRecord> origIt = reader.iterator(); // opening the second iterator should throw final CloseableIterator<SAMRecord> overlapIt = reader.queryOverlapping("20", 100013, 100070); } }
private SAMFileHeader getFileHeader(final File sourceFile, final File referenceFile) throws IOException { try (final SamReader reader = SamReaderFactory.make() .validationStringency(ValidationStringency.SILENT) .referenceSequence(referenceFile).open(sourceFile)) { return reader.getFileHeader(); } }
protected int doWork() { IOUtil.assertFileIsReadable(INPUT); IOUtil.assertFileIsWritable(OUTPUT); final SamReader reader = SamReaderFactory.makeDefault().referenceSequence(REFERENCE_SEQUENCE).open(INPUT); if (reader.getFileHeader().getSortOrder() != SAMFileHeader.SortOrder.coordinate) { throw new SAMException("Input must be coordinate-sorted for this program to run. Found: " + reader.getFileHeader().getSortOrder()); } final SAMFileWriter writer = new SAMFileWriterFactory().makeSAMOrBAMWriter(reader.getFileHeader(), true, OUTPUT); writer.setProgressLogger( new ProgressLogger(log, (int) 1e7, "Wrote", "records")); final ReferenceSequenceFileWalker refSeqWalker = new ReferenceSequenceFileWalker(REFERENCE_SEQUENCE); StreamSupport.stream(reader.spliterator(), false) .peek(rec -> fixRecord(rec, refSeqWalker)) .forEach(writer::addAlignment); CloserUtil.close(reader); writer.close(); return 0; }
private void validateUq(final File input, final File reference) { final SamReader reader = SamReaderFactory.makeDefault().referenceSequence(reference).open(input); final SAMRecordIterator iterator = reader.iterator(); while (iterator.hasNext()){ SAMRecord rec = iterator.next(); if (!rec.getReadUnmappedFlag()) Assert.assertNotNull(rec.getAttribute("UQ")); } }
protected int doWork() { IOUtil.assertFileIsReadable(INPUT); IOUtil.assertFileIsWritable(OUTPUT); final SamReader reader = SamReaderFactory.makeDefault().referenceSequence(REFERENCE_SEQUENCE).open(INPUT); final SAMFileWriter writer = new SAMFileWriterFactory().makeWriter(reader.getFileHeader(), true, OUTPUT, REFERENCE_SEQUENCE); if (CREATE_INDEX && writer.getFileHeader().getSortOrder() != SAMFileHeader.SortOrder.coordinate) { throw new PicardException("Can't CREATE_INDEX unless sort order is coordinate"); } final ProgressLogger progress = new ProgressLogger(Log.getInstance(SamFormatConverter.class)); for (final SAMRecord rec : reader) { writer.addAlignment(rec); progress.record(rec); } CloserUtil.close(reader); writer.close(); return 0; } }
private void standardReheader(final SAMFileHeader replacementHeader) { final SamReader recordReader = SamReaderFactory.makeDefault().referenceSequence(REFERENCE_SEQUENCE).validationStringency(ValidationStringency.SILENT).open(INPUT); if (replacementHeader.getSortOrder() != recordReader.getFileHeader().getSortOrder()) { throw new PicardException("Sort orders of INPUT (" + recordReader.getFileHeader().getSortOrder().name() + ") and HEADER (" + replacementHeader.getSortOrder().name() + ") do not agree."); } final SAMFileWriter writer = new SAMFileWriterFactory().makeSAMOrBAMWriter(replacementHeader, true, OUTPUT); final ProgressLogger progress = new ProgressLogger(Log.getInstance(ReplaceSamHeader.class)); for (final SAMRecord rec : recordReader) { rec.setHeader(replacementHeader); writer.addAlignment(rec); progress.record(rec); } writer.close(); CloserUtil.close(recordReader); }
private void standardReheader(final SAMFileHeader replacementHeader) { final SamReader recordReader = SamReaderFactory.makeDefault().referenceSequence(REFERENCE_SEQUENCE).validationStringency(ValidationStringency.SILENT).open(INPUT); if (replacementHeader.getSortOrder() != recordReader.getFileHeader().getSortOrder()) { throw new PicardException("Sort orders of INPUT (" + recordReader.getFileHeader().getSortOrder().name() + ") and HEADER (" + replacementHeader.getSortOrder().name() + ") do not agree."); } final SAMFileWriter writer = new SAMFileWriterFactory().makeSAMOrBAMWriter(replacementHeader, true, OUTPUT); final ProgressLogger progress = new ProgressLogger(Log.getInstance(ReplaceSamHeader.class)); for (final SAMRecord rec : recordReader) { rec.setHeader(replacementHeader); writer.addAlignment(rec); progress.record(rec); } writer.close(); CloserUtil.close(recordReader); }