public void testWorks() throws Exception { try (TestDirectory dir = new TestDirectory("sdf2fasta")) { final File xd = new File(dir, "sdf"); final ArrayList<InputStream> al = new ArrayList<>(); al.add( new ByteArrayInputStream( ">test\nacgt\n>bob\ntagt\naccc\n>cat\ncat\n>dog\nccc".getBytes())); final FastaSequenceDataSource ds = new FastaSequenceDataSource(al, new DNAFastaSymbolTable()); final SequencesWriter sw = new SequencesWriter(ds, xd, 300000, PrereadType.UNKNOWN, false); sw.processSequences(); File x; SequencesReader sr = SequencesReaderFactory.createDefaultSequencesReader(xd); try { x = new File(dir, "junitmy.fasta"); checkMainInitOk("-i", xd.toString(), "-o", x.toString(), "-Z"); checkContent1(x); } finally { sr.close(); } sr = SequencesReaderFactory.createDefaultSequencesReader(xd); try { checkMainInitOk("-i", xd.toString(), "-o", x.toString(), "-l", "3", "-Z"); checkContent2(x); } finally { sr.close(); } } }
public void testRoll() throws Exception { final ArrayList<InputStream> al = new ArrayList<>(); al.add( createStream( ">123456789012345678901\nacgtgtgtgtcttagggctcactggtcatgca\n>bob the buuilder\ntagttcagcatcgatca\n>hobos r us\naccccaccccacaaacccaa")); final FastaSequenceDataSource ds = new FastaSequenceDataSource(al, new DNAFastaSymbolTable()); final SequencesWriter sw = new SequencesWriter(ds, mDir, 20, PrereadType.UNKNOWN, false); sw.processSequences(); try (SequencesReader dsr = SequencesReaderFactory.createMemorySequencesReader(mDir, true, LongRange.NONE)) { final SequencesIterator it = dsr.iterator(); assertTrue(((CompressedMemorySequencesReader) dsr).integrity()); assertEquals(mDir, dsr.path()); assertTrue(it.nextSequence()); assertEquals("1234567890123456789", it.currentName()); assertEquals(32, it.currentLength()); SequencesWriterTest.checkEquals( it, new byte[] { 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 2, 4, 4, 1, 3, 3, 3, 2, 4, 2, 1, 2, 4, 3, 3, 4, 2, 1, 4, 3, 2, 1 }); assertTrue(it.nextSequence()); assertEquals("bob", it.currentName()); assertEquals(17, it.currentLength()); SequencesWriterTest.checkEquals( it, new byte[] {4, 1, 3, 4, 4, 2, 1, 3, 2, 1, 4, 2, 3, 1, 4, 2, 1}); assertTrue(it.nextSequence()); assertEquals("hobos", it.currentName()); assertEquals(20, it.currentLength()); SequencesWriterTest.checkEquals( it, new byte[] {1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 2, 1, 1}); } }
public void testEmptyFasta() throws IOException { final SequencesReader reader = ReaderTestUtils.getReaderDNA("", mDir, new SdfId(0L)); reader.close(); final CompressedMemorySequencesReader cmsr = new CompressedMemorySequencesReader( mDir, new IndexFile(mDir), 5, true, false, new LongRange(0, 0)); assertEquals(0, cmsr.numberSequences()); }
public void testOverEndFastq() throws Exception { final SequencesReader reader = ReaderTestUtils.getReaderDNAFastq(POSITIONS_FASTQ, mDir, false); reader.close(); new CompressedMemorySequencesReader( mDir, new IndexFile(mDir), 5, true, false, new LongRange(3, 8)); // Now this is OK rather than Exception, since our std behaviour is to warn and clip end that // are too high back to the available num seqs }
public void testFastqEnd() throws Exception { final SequencesReader reader = ReaderTestUtils.getReaderDNAFastq(POSITIONS_FASTQ, mDir, 20, false); reader.close(); final SequencesIterator cmsr = new CompressedMemorySequencesReader( mDir, new IndexFile(mDir), 5, true, false, new LongRange(5, 6)) .iterator(); cmsr.nextSequence(); checkFastq(cmsr, "r5", "ACGTAC"); assertFalse(cmsr.nextSequence()); }
public void testRanges() throws Exception { final SequencesReader reader = ReaderTestUtils.getReaderDNAFastq(SMALL_FASTQ, mDir, 20, false); reader.close(); final CompressedMemorySequencesReader cmsr = new CompressedMemorySequencesReader( mDir, new IndexFile(mDir), 5, true, false, LongRange.NONE); final byte[] foo = new byte[6]; cmsr.readQuality(0, foo, 4, 6); final String qual = "EFGHIJ"; for (int i = 0; i < foo.length; i++) { assertEquals(qual.charAt(i) - '!', foo[i]); } }