public SamView(String file, String samfilter, Region region, ValidationStringency stringency) { iterator = fetchReader(file, stringency) .queryOverlapping(region.chr, region.start, region.end); if (!"".equals(samfilter)) { filter = Integer.decode(samfilter); } }
/** * Attempts to open a new iterator. * * As htsjdk performing memory mapping internally, many open/close cycles can results in an exhaustion * of file handles. * * @param reader * @param interval * @return */ private SAMRecordIterator tryOpenReader(SamReader reader, QueryInterval[] intervals) { SAMRecordIterator it = null; try { it = reader.queryOverlapping(intervals); } catch (Exception e) { log.debug("Attempting to recover from query failure: ", e); System.gc(); System.runFinalization(); System.gc(); it = reader.queryOverlapping(intervals); log.debug("Recovery successful"); } return it; } public CloseableIterator<DirectedEvidence> iterator() {
@Test(dataProvider="singleIntervalOverlapping") public void testQueryOverlappingSingleInterval( final File cramFileName, final File referenceFileName, final QueryInterval interval, final String[] expectedNames) throws IOException { doQueryTest( reader -> reader.queryOverlapping(new QueryInterval[]{interval}), cramFileName, referenceFileName, expectedNames ); }
int refCount = 0; CloseableIterator<SAMRecord> iter = reader.queryOverlapping(locus.chromosome, locus.posStart, locus.posStop); while (iter.hasNext()) { SAMRecord read = iter.next();
@Test(dataProvider="multipleIntervalOverlapping") public void testQueryOverlappingMultipleIntervals( final File cramFileName, final File referenceFileName, final QueryInterval[] intervals, final String[] expectedNames) throws IOException { QueryInterval[] optimizedIntervals = QueryInterval.optimizeIntervals(intervals); Assert.assertTrue(optimizedIntervals.length > 1); doQueryTest( reader -> reader.queryOverlapping(optimizedIntervals), cramFileName, referenceFileName, expectedNames ); }
LOG.info("Checking contig " + contig.toString()); processedContigs++; it1 = reader1.queryOverlapping(contig.referenceName, (int)contig.start, (int)contig.end); it2 = reader2.queryOverlapping(contig.referenceName, (int)contig.start, (int)contig.end);
LOG.info("Checking contig " + contig.toString()); processedContigs++; it1 = reader1.queryOverlapping(contig.referenceName, (int)contig.start, (int)contig.end); it2 = reader2.queryOverlapping(contig.referenceName, (int)contig.start, (int)contig.end);
Stopwatch timer = Stopwatch.createStarted(); SamReader samReader = BAMIO.openBAM(storageClient, storagePath, options.getStringency()); SAMRecordIterator iterator = samReader.queryOverlapping(contig.referenceName, (int) contig.start + 1, (int) contig.end);
Stopwatch timer = Stopwatch.createStarted(); SamReader samReader = BAMIO.openBAM(storageClient, storagePath, options.getStringency()); SAMRecordIterator iterator = samReader.queryOverlapping(contig.referenceName, (int) contig.start + 1, (int) contig.end);
public ReadLocusIterator(SamReader samReader, Feature region, int maxDepth) { this.maxDepth = maxDepth; if (region != null) { samIter = new ForwardShiftInsertIterator(samReader.queryOverlapping(region.getSeqname(), (int) region.getStart(), (int) region.getEnd())); } else { samIter = new ForwardShiftInsertIterator(samReader.iterator()); } }
private int countRecordsInQueryInterval(final SamReader reader, final QueryInterval query) { final SAMRecordIterator iter = reader.queryOverlapping(new QueryInterval[]{query}); int count = 0; while (iter.hasNext()) { iter.next(); count++; } iter.close(); return count; }
iter = writtenReader.queryOverlapping(sequence, start + 1, end); } else { iter = writtenReader.iterator();
public MultiSamReader(String[] inputBams, int minMapqForAssembly, boolean isPairedEnd, Feature region) { //TODO: Assert all SAM Headers have same sequence dict readers = new SamReader[inputBams.length]; nextRecord = new SAMRecordWrapper[inputBams.length]; iterators = new Iterator[inputBams.length]; this.minMapqForAssembly = minMapqForAssembly; this.isPairedEnd = isPairedEnd; int idx = 0; for (String bamFileName : inputBams) { SamReader reader = SAMRecordUtils.getSamReader(bamFileName); readers[idx] = reader; // TODO: Pad by region size? iterators[idx] = readers[idx].queryOverlapping(region.getSeqname(), (int) region.getStart(), (int) region.getEnd()); // cache next record cacheNextRecord(idx); idx += 1; } clientIterator = new MultiSamReaderIterator(this); }
inputInterval.getStart(), inputInterval.getEnd()); return samReader.queryOverlapping(queryIntervals);
inputInterval.getStart(), inputInterval.getEnd()); return samReader.queryOverlapping(queryIntervals);
@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); } }
@Test(dataProvider="singleIntervalOverlapping") public void testQueryOverlappingSequence( final File cramFileName, final File referenceFileName, final QueryInterval interval, final String[] expectedNames) throws IOException { doQueryTest( reader -> reader.queryOverlapping( reader.getFileHeader().getSequence(interval.referenceIndex).getSequenceName(), interval.start, interval.end ), cramFileName, referenceFileName, expectedNames ); }
@Test(dataProvider="otherMultipleIntervals") public void testOtherMultipleIntervals( final File cramFileName, final File referenceFileName, final QueryInterval[] intervals, final String[] expectedNames) throws IOException { QueryInterval[] optimizedIntervals = QueryInterval.optimizeIntervals(intervals); doQueryTest( reader -> reader.queryContained(optimizedIntervals), cramFileName, referenceFileName, expectedNames ); doQueryTest( reader -> reader.queryOverlapping(optimizedIntervals), cramFileName, referenceFileName, expectedNames ); }
private int countAlignmentsInWindow(int reference, int window, SamReader reader, int expectedCount) { final int SIXTEEN_K = 1 << 14; // 1 << LinearIndex.BAM_LIDX_SHIFT final int start = window >> 14; // window * SIXTEEN_K; final int stop = ((window + 1) >> 14) - 1; // (window + 1 * SIXTEEN_K) - 1; final String chr = reader.getFileHeader().getSequence(reference).getSequenceName(); // get records for the entire linear index window SAMRecordIterator iter = reader.queryOverlapping(chr, start, stop); SAMRecord rec; int count = 0; while (iter.hasNext()) { rec = iter.next(); count++; if (expectedCount == -1) System.err.println(rec.getReadName()); } iter.close(); return count; }
SamFiles.findIndex(bamFile).deleteOnExit(); Assert.assertEquals(countElements(bamReader.queryContained("chr7", 100, 100)), 1); Assert.assertEquals(countElements(bamReader.queryOverlapping("chr7", 100, 100)), 2); bamReader.close(); textReader.close();