private ReferenceSource createReferenceSource() { final byte[] refBases = new byte[1024 * 1024]; Arrays.fill(refBases, (byte) 'A'); InMemoryReferenceSequenceFile rsf = new InMemoryReferenceSequenceFile(); rsf.add("chr1", refBases); rsf.add("chr2", refBases); return new ReferenceSource(rsf); }
@Test public void testReferenceSourceUpperCasesBases() { final String sequenceName = "1"; final String nonIupacCharacters = "1=eE"; final byte[] originalRefBases = (nonIupacCharacters + SequenceUtil.getIUPACCodesString()).getBytes(); SAMSequenceRecord sequenceRecord = new SAMSequenceRecord(sequenceName, originalRefBases.length); InMemoryReferenceSequenceFile memoryReferenceSequenceFile = new InMemoryReferenceSequenceFile(); memoryReferenceSequenceFile.add(sequenceName, Arrays.copyOf(originalRefBases, originalRefBases.length)); Assert.assertEquals(memoryReferenceSequenceFile.getSequence(sequenceName).getBases(), originalRefBases); ReferenceSource referenceSource = new ReferenceSource(memoryReferenceSequenceFile); byte[] refBasesFromSource = referenceSource.getReferenceBases(sequenceRecord, false); Assert.assertNotEquals(refBasesFromSource, originalRefBases); Assert.assertEquals(refBasesFromSource, SequenceUtil.upperCase(originalRefBases)); } }
private static void addRandomSequence(SAMFileHeader header, int length, InMemoryReferenceSequenceFile rsf) { String name = String.valueOf(header.getSequenceDictionary().size() + 1); header.addSequence(new SAMSequenceRecord(name, length)); byte[] refBases = new byte[length]; byte[] alphabet = "ACGTN".getBytes(); for (int i = 0; i < refBases.length; i++) refBases[i] = alphabet[random.nextInt(alphabet.length)]; rsf.add(name, refBases); } }
@Override public ReferenceSequence getSubsequenceAt(final String contig, final long start, final long stop) { final ReferenceSequence sequence = getSequence(contig); if (sequence == null) return null; final byte[] bases = new byte[(int) (stop - start) + 1]; System.arraycopy(sequence.getBases(), (int) start - 1, bases, 0, bases.length); return new ReferenceSequence(contig, sequence.getContigIndex(), bases); }
SAMReadGroupRecord readGroupRecord = new SAMReadGroupRecord("1"); rsf = new InMemoryReferenceSequenceFile(); int nofSequencesInDictionary = 3; int sequenceLength = 1024 * 1024;
private static ReferenceSource createReferenceSource() { byte[] refBases = new byte[10 * 10]; Arrays.fill(refBases, (byte) 'A'); InMemoryReferenceSequenceFile rsf = new InMemoryReferenceSequenceFile(); rsf.add("chr1", refBases); return new ReferenceSource(rsf); }
private ReferenceSource createReferenceSource() { byte[] refBases = new byte[1024 * 1024]; Arrays.fill(refBases, (byte) 'A'); InMemoryReferenceSequenceFile rsf = new InMemoryReferenceSequenceFile(); rsf.add("chr1", refBases); return new ReferenceSource(rsf); }
/** * Write a collection of SAMRecords into an in memory Cram file and then open a reader over it * @param records a Collection of SAMRecords * @param ref a set of bases to use as the single reference contig named "chr1" * @return a CRAMFileReader reading from an in memory buffer that has had the records written into it */ public static CRAMFileReader writeAndReadFromInMemoryCram(Collection<SAMRecord> records, byte[] ref) throws IOException { InMemoryReferenceSequenceFile refFile = new InMemoryReferenceSequenceFile(); refFile.add("chr1", ref); ReferenceSource source = new ReferenceSource(refFile); final SAMFileHeader header = records.iterator().next().getHeader(); return writeAndReadFromInMemoryCram(records, source, header); }
memoryReferenceSequenceFile = new InMemoryReferenceSequenceFile(); memoryReferenceSequenceFile.add("1", Arrays.copyOf(referenceBases, referenceBases.length));
@Test public void test_MD_NM() throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); InMemoryReferenceSequenceFile rsf = new InMemoryReferenceSequenceFile(); rsf.add("1", "AAA".getBytes()); ReferenceSource source = new ReferenceSource(rsf);