/** Creates a {@link SamInputResource} from a string specifying *either* a url or a file path */ public static SamInputResource of(final String string) { try { URL url = new URL(string); // this will throw if its not a url return of(url); } catch (MalformedURLException e) { // ignore } return of(new File(string)); }
/** Creates a {@link SamInputResource} from a string specifying *either* a url or a file path */ public static SamInputResource of(final String string) { try { URL url = new URL(string); // this will throw if its not a url return of(url); } catch (MalformedURLException e) { // ignore } return of(new File(string)); }
/** * Construct an artificial SAM file reader. * * @param sequenceDictionary sequence dictionary used to initialize our GenomeLocParser * @param reads Reads to use as backing data source. */ public ArtificialSAMFileReader(SAMSequenceDictionary sequenceDictionary,SAMRecord... reads) { final SamInputResource samInputResource = SamInputResource.of(createEmptyInputStream()); reader = SamReaderFactory.makeDefault().open(samInputResource); this.genomeLocParser = new GenomeLocParser(sequenceDictionary); this.reads = Arrays.asList(reads); }
@Override public SamReader open(final File file) { final SamInputResource r = SamInputResource.of(file); final File indexMaybe = SamFiles.findIndex(file); if (indexMaybe != null) r.index(indexMaybe); return open(r); }
@Override public SamReader open(final File file) { final SamInputResource r = SamInputResource.of(file); final File indexMaybe = SamFiles.findIndex(file); if (indexMaybe != null) r.index(indexMaybe); return open(r); }
@Override public SamReader open(final File file) { final SamInputResource r = SamInputResource.of(file); final File indexMaybe = SamFiles.findIndex(file); if (indexMaybe != null) r.index(indexMaybe); return open(r); }
@Test public void testCRAMReaderFromURLNoIndexFile() throws IOException { // get just a CRAM reader (no index) from an URL-backed resource getCRAMReaderFromInputResource( (cramURL, indexURL) -> { return SamInputResource.of(cramURL); }, false, 11); }
@Test(expectedExceptions = RuntimeIOException.class) public void testCRAMReaderFromURLBadIndexFile() throws IOException { // deliberately specify a bad index file to ensure we get an IOException getCRAMReaderFromInputResource( (cramURL, indexURL) -> { return SamInputResource.of(cramURL).index(new File("nonexistent.bai")); }, true, 3); }
@Test public void testCRAMReaderFromURL() throws IOException { // get a CRAM reader with an index from a URL-backed resource getCRAMReaderFromInputResource( (cramURL, indexURL) -> { return SamInputResource.of(cramURL).index(indexURL); }, true, 3); }
@Test(expectedExceptions = SAMFormatException.class) public void testConflictingTags() throws Exception { final String header = "@HD VN:1.0 SO:queryname SO:coordinate"; final InputStream strm = new ByteArrayInputStream(StringUtil.stringToBytes(header)); final SamReader reader = SamReaderFactory.makeDefault().open(SamInputResource.of(strm)); Assert.fail("Exception should have been thrown."); }
private SamReader createSamReader(InputStream in, ValidationStringency stringency) { SamReaderFactory readerFactory = SamReaderFactory.makeDefault() .setOption(SamReaderFactory.Option.EAGERLY_DECODE, false) .setUseAsyncIo(false); if (stringency != null) { readerFactory.validationStringency(stringency); } return readerFactory.open(SamInputResource.of(in)); }
private SamReader createSamReader(InputStream in, ValidationStringency stringency) { SamReaderFactory readerFactory = SamReaderFactory.makeDefault() .setOption(SamReaderFactory.Option.EAGERLY_DECODE, false) .setUseAsyncIo(false); if (stringency != null) { readerFactory.validationStringency(stringency); } return readerFactory.open(SamInputResource.of(in)); }
private int getBAMRecordCount(final File bamFile) throws IOException { final SamReader bamReader = SamReaderFactory.makeDefault() .open(SamInputResource.of(bamFile)); final Iterator<SAMRecord> it = bamReader.iterator(); int recCount = 0; while (it.hasNext()) { it.next(); recCount++; } bamReader.close(); return recCount; }
@Test public void testRedundantTags() throws Exception { final String header = "@HD VN:1.0 SO:coordinate SO:coordinate"; final InputStream strm = new ByteArrayInputStream(StringUtil.stringToBytes(header)); final SamReader samReader = SamReaderFactory.makeDefault().open(SamInputResource.of(strm)); Assert.assertEquals(SAMFileHeader.SortOrder.coordinate, samReader.getFileHeader().getSortOrder()); CloserUtil.close(samReader); }
@Test(expectedExceptions = {SAMException.class}) public void testUnmergeableSequenceDictionary() { final String sd1 = sq1 + sq2 + sq5; final String sd2 = sq2 + sq3 + sq4 + sq1; final SamReader reader1 = SamReaderFactory.makeDefault().open(SamInputResource.of(new ByteArrayInputStream(StringUtil.stringToBytes(sd1)))); final SamReader reader2 = SamReaderFactory.makeDefault().open(SamInputResource.of(new ByteArrayInputStream(StringUtil.stringToBytes(sd2)))); final List<SAMFileHeader> inputHeaders = Arrays.asList(reader1.getFileHeader(), reader2.getFileHeader()); new SamFileHeaderMerger(SAMFileHeader.SortOrder.coordinate, inputHeaders, true); CloserUtil.close(reader1); CloserUtil.close(reader2); }
@Test public void testBAMHeaderReaderNoReference() throws Exception { final Configuration conf = new Configuration(); InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream("test.bam"); final SamReader samReader = SamReaderFactory.makeDefault().open(SamInputResource.of(inputStream)); int sequenceCount = samReader.getFileHeader().getSequenceDictionary().size(); samReader.close(); inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream("test.bam"); SAMFileHeader samHeader = SAMHeaderReader.readSAMHeaderFrom(inputStream, conf); inputStream.close(); assertEquals(samHeader.getSequenceDictionary().size(), sequenceCount); }
@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); }