@Override public boolean open() { if(!Files.exists(input)) return false; reader = SamReaderFactory.make().validationStringency(ValidationStringency.LENIENT).open(input.toFile()); // if(enableFileSource){ // reader.enableFileSource(true); // } // reader.setValidationStringency(SAMFileReader.getDefaultValidationStringency().LENIENT); iterator = reader.iterator(); return true; }
public static boolean bamHasIndex(String bam) throws IOException{ /* ------------------------------------------------------ */ /* This chunk prepares SamReader from local bam or URL bam */ UrlValidator urlValidator = new UrlValidator(); SamReaderFactory srf=SamReaderFactory.make(); srf.validationStringency(ValidationStringency.SILENT); SamReader samReader; if(urlValidator.isValid(bam)){ samReader = SamReaderFactory.makeDefault().open( SamInputResource.of(new URL(bam)).index(new URL(bam + ".bai")) ); } else { samReader= srf.open(new File(bam)); } /* ------------------------------------------------------ */ // SamReaderFactory srf=SamReaderFactory.make(); // srf.validationStringency(ValidationStringency.SILENT); // SamReader samReader = srf.open(new File(bam)); boolean hasIndex= samReader.hasIndex(); samReader.close(); return hasIndex; }
private void init() throws IOException { FileUtils.checkFile(bamFile); if (this.samReader == null) { SamReaderFactory srf = SamReaderFactory.make(); srf.validationStringency(ValidationStringency.LENIENT); this.samReader = srf.open(SamInputResource.of(bamFile.toFile())); } }
public static SamReader getSamReader(String filename) { return SamReaderFactory.make() .validationStringency(ValidationStringency.SILENT) .samRecordFactory(DefaultSAMRecordFactory.getInstance()) .open(new File(filename)); }
/** Prepare SamReader from local bam or URL bam */ public static SamReader getSamReader(String workFilename) throws MalformedURLException { UrlValidator urlValidator = new UrlValidator(); SamReaderFactory srf=SamReaderFactory.make(); srf.validationStringency(ValidationStringency.SILENT); SamReader samReader; if(urlValidator.isValid(workFilename)){ samReader = srf.open(SamInputResource.of(new URL(workFilename)).index(new URL(workFilename + ".bai"))); } else { samReader= srf.open(new File(workFilename)); } return samReader; }
private boolean setSamSeqDictFromBam(String bamfile) { /* ------------------------------------------------------ */ /* This chunk prepares SamReader from local bam */ SamReaderFactory srf=SamReaderFactory.make(); srf.validationStringency(ValidationStringency.SILENT); SamReader samReader; samReader= srf.open(new File(bamfile)); /* ------------------------------------------------------ */ SAMSequenceDictionary seqDict = samReader.getFileHeader().getSequenceDictionary(); if(seqDict != null && !seqDict.isEmpty()){ this.setSamSeqDictSource(new File(bamfile).getAbsolutePath()); this.setSamSeqDict(seqDict); return true; } return false; }
public static SAMFileHeader getFileHeader(Path input) throws IOException { FileUtils.checkFile(input); SamReaderFactory srf = SamReaderFactory.make(); srf.validationStringency(ValidationStringency.LENIENT); SamReader reader = srf.open(SamInputResource.of(input.toFile())); SAMFileHeader fileHeader = reader.getFileHeader(); reader.close(); return fileHeader; }
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 public void testRealDataLongCigar() throws Exception { final File samFile = new File("src/test/resources/htsjdk/samtools/BAMCigarOverflowTest/cigar-64k.sam.gz"); final File bamFile = File.createTempFile("test.", BamFileIoUtils.BAM_FILE_EXTENSION); bamFile.deleteOnExit(); try (final SamReader samReader = SamReaderFactory.make().open(samFile); final SAMFileWriter bamWriter = new SAMFileWriterFactory().makeSAMOrBAMWriter(samReader.getFileHeader(), true, bamFile); final CloseableIterator<SAMRecord> it = samReader.iterator()) { while (it.hasNext()) { bamWriter.addAlignment(it.next()); } } try (final SamReader samReader = SamReaderFactory.make().open(samFile); final SamReader bamReader = SamReaderFactory.make().open(bamFile)) { verifySamReadersEqual(samReader, bamReader); } }
@Test(dataProvider = "testOverlappingErrorCalculatorWithManyReadsData", timeOut = 5000) public void testOverlappingErrorCalculatorWithManyReads(final File temp) throws IOException { try (final ReferenceSequenceFileWalker referenceSequenceFileWalker = new ReferenceSequenceFileWalker(new File("testdata/picard/sam/BamErrorMetrics/chrM.reference.fasta")); final SamLocusIterator samLocusIterator = new SamLocusIterator(SamReaderFactory.make().open(temp)); final SamLocusAndReferenceIterator samLocusAndReferences = new SamLocusAndReferenceIterator( referenceSequenceFileWalker, samLocusIterator)) { BaseErrorAggregation<OverlappingReadsErrorCalculator> aggregation = new BaseErrorAggregation<>(OverlappingReadsErrorCalculator::new, ReadBaseStratification.baseCycleStratifier); for (final SamLocusAndReferenceIterator.SAMLocusAndReference locusAndReference : samLocusAndReferences) { for (SamLocusIterator.RecordAndOffset recordAndOffset : locusAndReference.getRecordAndOffsets()) aggregation.addBase(recordAndOffset, locusAndReference); } } } }
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(); } }
@Test public void test_roundtrip_tlen_preserved() throws IOException { SamReader reader = SamReaderFactory.make().open(new File("src/test/resources/htsjdk/samtools/cram_tlen_reads.sorted.sam")); ByteArrayOutputStream baos = new ByteArrayOutputStream(); final ReferenceSource source = new ReferenceSource(new File("src/test/resources/htsjdk/samtools/cram_tlen.fasta")); CRAMFileWriter writer = new CRAMFileWriter(baos, source, reader.getFileHeader(), "test.cram"); SAMRecordIterator iterator = reader.iterator(); List<SAMRecord> records = new ArrayList<SAMRecord>(); while (iterator.hasNext()) { final SAMRecord record = iterator.next(); writer.addAlignment(record); records.add(record); } writer.close(); CRAMFileReader cramReader = new CRAMFileReader(new ByteArrayInputStream(baos.toByteArray()), (File) null, source, ValidationStringency.STRICT); iterator = cramReader.getIterator(); int i = 0; while (iterator.hasNext()) { SAMRecord record1 = iterator.next(); SAMRecord record2 = records.get(i++); Assert.assertEquals(record1.getInferredInsertSize(), record2.getInferredInsertSize(), record1.getReadName()); Assert.assertEquals(record1, record2, record1.getReadName()); } Assert.assertEquals(records.size(), i); }
@Test(dataProvider = "testUnmappedCounts") public void testUnmappedCounts(String acc, int expectedNumUnmapped) { SamReader reader = SamReaderFactory.make().validationStringency(ValidationStringency.SILENT).open( SamInputResource.of(new SRAAccession(acc)) ); final SAMRecordIterator samRecordIterator = reader.queryUnmapped(); assertCorrectCountsOfMappedAndUnmappedRecords(samRecordIterator, 0, expectedNumUnmapped); }
@Test(dataProvider = "testReferenceAlignedCounts") public void testReferenceAlignedCounts(String acc, String reference, int referenceStart, int expectedNumMapped) { SamReader reader = SamReaderFactory.make().validationStringency(ValidationStringency.SILENT).open( SamInputResource.of(new SRAAccession(acc)) ); final SAMRecordIterator samRecordIterator = reader.queryAlignmentStart(reference, referenceStart); assertCorrectCountsOfMappedAndUnmappedRecords(samRecordIterator, expectedNumMapped, 0); }
@Test(dataProvider = "testCounts") public void testCounts(String acc, int expectedNumMapped, int expectedNumUnmapped) { SamReader reader = SamReaderFactory.make().validationStringency(ValidationStringency.SILENT).open( SamInputResource.of(new SRAAccession(acc)) ); final SAMRecordIterator samRecordIterator = reader.iterator(); assertCorrectCountsOfMappedAndUnmappedRecords(samRecordIterator, expectedNumMapped, expectedNumUnmapped); }
@Test(dataProvider = "testQueryCounts") public void testQueryCounts(String acc, String reference, int referenceStart, int referenceEnd, boolean contained, int expectedNumMapped, int expectedNumUnmapped) { SamReader reader = SamReaderFactory.make().validationStringency(ValidationStringency.SILENT).open( SamInputResource.of(new SRAAccession(acc)) ); final SAMRecordIterator samRecordIterator = reader.query(reference, referenceStart, referenceEnd, contained); assertCorrectCountsOfMappedAndUnmappedRecords(samRecordIterator, expectedNumMapped, expectedNumUnmapped); }
@Test(dataProvider = "testCountsBySpan") public void testCountsBySpan(String acc, List<Chunk> chunks, int expectedNumMapped, int expectedNumUnmapped) { SamReader reader = SamReaderFactory.make().validationStringency(ValidationStringency.SILENT).open( SamInputResource.of(new SRAAccession(acc)) ); final SAMRecordIterator samRecordIterator = ((SamReader.Indexing) reader).iterator(new BAMFileSpan(chunks)); assertCorrectCountsOfMappedAndUnmappedRecords(samRecordIterator, expectedNumMapped, expectedNumUnmapped); }
private SAMRecord getRecordByIndex(String acc, int recordIndex, boolean detach) { SamReader reader = SamReaderFactory.make().validationStringency(ValidationStringency.SILENT).open( SamInputResource.of(new SRAAccession(acc)) ); final SAMRecordIterator samRecordIterator = reader.iterator(); while (recordIndex != 0) { Assert.assertTrue(samRecordIterator.hasNext(), "Record set is too small"); samRecordIterator.next(); recordIndex--; } Assert.assertTrue(samRecordIterator.hasNext(), "Record set is too small"); SAMRecord record = samRecordIterator.next(); if (detach) { samRecordIterator.next(); } return record; }
public void canFilterFromIntFlag(){ int f_incl= 131; int F_excl= 72; String chrom= "chrY"; int from= 1; int to= 100; SamReaderFactory srf=SamReaderFactory.make(); SamReader samReader= srf.open(new File("test_data/mjb050_oxBS.bam")); SAMFileHeader fh= samReader.getFileHeader(); IntervalList il= new IntervalList(fh); Interval interval= new Interval(chrom, from, to); il.add(interval); List<SamRecordFilter> filters= FlagToFilter.flagToFilterList(f_incl, F_excl); SamLocusIterator samLocIter= new SamLocusIterator(samReader, il, true); samLocIter.setSamFilters(filters); while(samLocIter.hasNext()){ LocusInfo locus= samLocIter.next(); if(locus.getRecordAndPositions().size() > 0){ //System.out.println(locus.getPosition() + " " + locus.getRecordAndPositions().size() + " " + // locus.getRecordAndPositions().get(0).getRecord().getFlags()); } } }
public static long countSamTotalRecord(final File samFile) { final SamReader reader = SamReaderFactory.make().open(samFile); assert reader.hasIndex(); long total = 0; for (int i = 0; i < reader.getFileHeader().getSequenceDictionary().size(); i++) { total += reader.indexing().getIndex().getMetaData(i).getAlignedRecordCount(); total += reader.indexing().getIndex().getMetaData(i).getUnalignedRecordCount(); } return total; } }