public SAMFileHeader getSAMFileHeader() { return cramHeader.getSamFileHeader(); }
public SAMFileHeader getSAMFileHeader() { return cramHeader.getSamFileHeader(); }
CramToBam_OBA_Function(CramHeader header, ReferenceSource referenceSource) { this.header = header; parser = new ContainerParser(header.getSamFileHeader()); f = new Cram2SamRecordFactory(header.getSamFileHeader()); codec = new BAMRecordCodec(header.getSamFileHeader()); n = new CramNormalizer(header.getSamFileHeader(), referenceSource); log.info("converter created"); }
/** * Copy the CRAM header into a new {@link CramHeader} object. * @return a complete copy of the header */ @SuppressWarnings("CloneDoesntCallSuperClone") @Override public CramHeader clone() { final CramHeader clone = new CramHeader(); clone.version = version; System.arraycopy(id, 0, clone.id, 0, id.length); clone.samFileHeader = getSamFileHeader().clone(); return clone; }
/** * Copy the CRAM header into a new {@link CramHeader} object. * @return a complete copy of the header */ @SuppressWarnings("CloneDoesntCallSuperClone") @Override public CramHeader clone() { final CramHeader clone = new CramHeader(); clone.version = version; System.arraycopy(id, 0, clone.id, 0, id.length); clone.samFileHeader = getSamFileHeader().clone(); return clone; }
public boolean fixHeaderInFile(File cramFile) throws IOException, MD5MismatchError { FileInputStream fis = new FileInputStream(cramFile); CramHeader cramHeader = CramIO.readCramHeader(fis); fixSequences(cramHeader.getSamFileHeader().getSequenceDictionary().getSequences()); String cmd = "fixheader"; String version = getClass().getPackage().getImplementationVersion(); addPG(cramHeader.getSamFileHeader(), "cramtools", cmd, version); CramHeader newHeader = cramHeader.clone(); return CramIO.replaceCramHeader(cramFile, newHeader); }
@Override protected AbstractFastqReader newReader() { if (multiFastqOutputter != null) { counter = multiFastqOutputter.getCounter(); } multiFastqOutputter = new MultiFastqOutputter(outputs, fo, referenceSource, cramHeader.getSamFileHeader(), counter); if (prefix != null) { multiFastqOutputter.setPrefix(prefix.getBytes()); // multiFastqOutputter.setCounter(counter); } multiFastqOutputter.defaultQS = this.defaultQS; return multiFastqOutputter; }
/** * Writes CRAM header into the specified {@link OutputStream}. * * @param cramHeader the {@link CramHeader} object to write * @param outputStream the output stream to write to * @return the number of bytes written out * @throws IOException as per java IO contract */ public static long writeCramHeader(final CramHeader cramHeader, final OutputStream outputStream) throws IOException { // if (cramHeader.getVersion().major < 3) throw new RuntimeException("Deprecated CRAM version: " + cramHeader.getVersion().major); outputStream.write("CRAM".getBytes("US-ASCII")); outputStream.write(cramHeader.getVersion().major); outputStream.write(cramHeader.getVersion().minor); outputStream.write(cramHeader.getId()); for (int i = cramHeader.getId().length; i < 20; i++) outputStream.write(0); final long length = CramIO.writeContainerForSamFileHeader(cramHeader.getVersion().major, cramHeader.getSamFileHeader(), outputStream); return CramIO.DEFINITION_LENGTH + length; }
public BaiIndexer(InputStream is, OutputStream output) throws IOException { this.is = new CountingInputStream(is); cramHeader = CramIO.readCramHeader(this.is); samFileHeader = cramHeader.getSamFileHeader(); indexer = new CRAMBAIIndexer(output, samFileHeader); }
/** * Writes CRAM header into the specified {@link OutputStream}. * * @param cramHeader the {@link CramHeader} object to write * @param outputStream the output stream to write to * @return the number of bytes written out */ public static long writeCramHeader(final CramHeader cramHeader, final OutputStream outputStream) { // if (cramHeader.getVersion().major < 3) throw new RuntimeException("Deprecated CRAM version: " + cramHeader.getVersion().major); try { outputStream.write("CRAM".getBytes("US-ASCII")); outputStream.write(cramHeader.getVersion().major); outputStream.write(cramHeader.getVersion().minor); outputStream.write(cramHeader.getId()); for (int i = cramHeader.getId().length; i < 20; i++) outputStream.write(0); final long length = CramIO.writeContainerForSamFileHeader(cramHeader.getVersion().major, cramHeader.getSamFileHeader(), outputStream); return CramIO.DEFINITION_LENGTH + length; } catch (final IOException e) { throw new RuntimeIOException(e); } }
public CRAMIterator(final InputStream inputStream, final CRAMReferenceSource referenceSource, final ValidationStringency validationStringency) throws IOException { if (null == referenceSource) { throw new CRAMException("A reference source is required for CRAM files"); } this.countingInputStream = new CountingInputStream(inputStream); this.referenceSource = referenceSource; this.validationStringency = validationStringency; final CramContainerIterator containerIterator = new CramContainerIterator(this.countingInputStream); cramHeader = containerIterator.getCramHeader(); this.containerIterator = containerIterator; firstContainerOffset = this.countingInputStream.getCount(); records = new ArrayList<SAMRecord>(CRAMContainerStreamWriter.DEFAULT_RECORDS_PER_SLICE); normalizer = new CramNormalizer(cramHeader.getSamFileHeader(), referenceSource); parser = new ContainerParser(cramHeader.getSamFileHeader()); }
public CRAMIterator(final InputStream inputStream, final CRAMReferenceSource referenceSource, final ValidationStringency validationStringency) { if (null == referenceSource) { throw new CRAMException("A reference source is required for CRAM files"); } this.countingInputStream = new CountingInputStream(inputStream); this.referenceSource = referenceSource; this.validationStringency = validationStringency; final CramContainerIterator containerIterator = new CramContainerIterator(this.countingInputStream); cramHeader = containerIterator.getCramHeader(); this.containerIterator = containerIterator; firstContainerOffset = this.countingInputStream.getCount(); records = new ArrayList<>(CRAMContainerStreamWriter.DEFAULT_RECORDS_PER_SLICE); normalizer = new CramNormalizer(cramHeader.getSamFileHeader(), referenceSource); parser = new ContainerParser(cramHeader.getSamFileHeader()); }
public CRAMIterator(final SeekableStream seekableStream, final CRAMReferenceSource referenceSource, final long[] coordinates, final ValidationStringency validationStringency) throws IOException { if (null == referenceSource) { throw new CRAMException("A reference source is required for CRAM files"); } this.countingInputStream = new CountingInputStream(seekableStream); this.referenceSource = referenceSource; this.validationStringency = validationStringency; final CramSpanContainerIterator containerIterator = CramSpanContainerIterator.fromFileSpan(seekableStream, coordinates); cramHeader = containerIterator.getCramHeader(); this.containerIterator = containerIterator; firstContainerOffset = containerIterator.getFirstContainerOffset(); records = new ArrayList<SAMRecord>(CRAMContainerStreamWriter.DEFAULT_RECORDS_PER_SLICE); normalizer = new CramNormalizer(cramHeader.getSamFileHeader(), referenceSource); parser = new ContainerParser(cramHeader.getSamFileHeader()); }
public CRAMIterator(final SeekableStream seekableStream, final CRAMReferenceSource referenceSource, final long[] coordinates, final ValidationStringency validationStringency) { if (null == referenceSource) { throw new CRAMException("A reference source is required for CRAM files"); } this.countingInputStream = new CountingInputStream(seekableStream); this.referenceSource = referenceSource; this.validationStringency = validationStringency; final CramSpanContainerIterator containerIterator = CramSpanContainerIterator.fromFileSpan(seekableStream, coordinates); cramHeader = containerIterator.getCramHeader(); this.containerIterator = containerIterator; firstContainerOffset = containerIterator.getFirstContainerOffset(); records = new ArrayList<>(CRAMContainerStreamWriter.DEFAULT_RECORDS_PER_SLICE); normalizer = new CramNormalizer(cramHeader.getSamFileHeader(), referenceSource); parser = new ContainerParser(cramHeader.getSamFileHeader()); }
private static void dist(File file, byte defaultQualityScore) throws IllegalArgumentException, IOException, IllegalAccessException { InputStream is = new FileInputStream(file); CramHeader header = CramIO.readCramHeader(is); Container c = null; ContainerParser parser = new ContainerParser(header.getSamFileHeader()); ArrayList<CramCompressionRecord> records = new ArrayList<CramCompressionRecord>(10000); long[] freq = new long[255]; while ((c = ContainerIO.readContainer(header.getVersion(), is)) != null && !c.isEOF()) { parser.getRecords(c, records, ValidationStringency.SILENT); CramNormalizer.restoreQualityScores(defaultQualityScore, records); for (CramCompressionRecord record : records) { for (byte b : record.qualityScores) freq[b & 0xFF]++; } records.clear(); } print(freq, defaultQualityScore, System.out); }
countingInputStream.close(); final Block block = Block.createRawFileHeaderBlock(toByteArray(newHeader.getSamFileHeader())); final ExposedByteArrayOutputStream byteArrayOutputStream = new ExposedByteArrayOutputStream(); block.write(newHeader.getVersion().major, byteArrayOutputStream);
Assert.assertTrue(cramHeader.getSamFileHeader().getSequenceDictionary().isEmpty()); final File file = File.createTempFile("test", ".cram"); file.deleteOnExit(); Assert.assertFalse(cramHeader3.getSamFileHeader().getSequenceDictionary().isEmpty()); Assert.assertNotNull(cramHeader3.getSamFileHeader().getSequenceDictionary().getSequence(0)); Assert.assertEquals(cramHeader3.getSamFileHeader().getSequence(sequenceRecord.getSequenceName()).getSequenceLength(), sequenceRecord.getSequenceLength()); file.delete();
Container secondContainer = it.next(); Assert.assertNotNull(secondContainer); final Map<Integer, AlignmentSpan> references = new ContainerParser(it.getCramHeader().getSamFileHeader()).getReferences(secondContainer, ValidationStringency.STRICT); it.close(); int refId = new TreeSet<Integer>(references.keySet()).iterator().next();
/** * Generate and write a CRAI index to an output stream from a CRAM input stream * * @param cramStream CRAM stream to index; must be coordinate sorted * @param craiStream stream for output index */ public static void writeIndex(final SeekableStream cramStream, OutputStream craiStream) { try { final CramHeader cramHeader = CramIO.readCramHeader(cramStream); final CRAMCRAIIndexer indexer = new CRAMCRAIIndexer(craiStream, cramHeader.getSamFileHeader()); final Version cramVersion = cramHeader.getVersion(); // get the first container and it's offset long offset = cramStream.position(); Container container = ContainerIO.readContainer(cramVersion, cramStream); while (container != null && !container.isEOF()) { container.offset = offset; indexer.processContainer(container); offset = cramStream.position(); container = ContainerIO.readContainer(cramVersion, cramStream); } indexer.finish(); } catch (IOException e) { throw new RuntimeIOException("Error writing CRAI index to output stream"); } }
/** * Generate and write a CRAI index to an output stream from a CRAM input stream * * @param cramStream CRAM stream to index; must be coordinate sorted * @param craiStream stream for output index */ public static void writeIndex(final SeekableStream cramStream, OutputStream craiStream) { try { final CramHeader cramHeader = CramIO.readCramHeader(cramStream); final CRAMCRAIIndexer indexer = new CRAMCRAIIndexer(craiStream, cramHeader.getSamFileHeader()); final Version cramVersion = cramHeader.getVersion(); // get the first container and it's offset long offset = cramStream.position(); Container container = ContainerIO.readContainer(cramVersion, cramStream); while (container != null && !container.isEOF()) { container.offset = offset; indexer.processContainer(container); offset = cramStream.position(); container = ContainerIO.readContainer(cramVersion, cramStream); } indexer.finish(); } catch (IOException e) { throw new RuntimeIOException("Error writing CRAI index to output stream"); } }