/** * Write a CRAM File header and a SAM Header to an output stream. * * @param cramVersion * @param outStream * @param samFileHeader * @param cramID * @return the offset in the stream after writing the headers */ public static long writeHeader(final Version cramVersion, final OutputStream outStream, final SAMFileHeader samFileHeader, String cramID) { final CramHeader cramHeader = new CramHeader(cramVersion, cramID, samFileHeader); return CramIO.writeCramHeader(cramHeader, outStream); }
private static CramHeader readFormatDefinition(final InputStream inputStream) throws IOException { for (final byte magicByte : CramHeader.MAGIC) { if (magicByte != inputStream.read()) throw new RuntimeException("Unknown file format."); } final Version version = new Version(inputStream.read(), inputStream.read(), 0); final CramHeader header = new CramHeader(version, null, null); final DataInputStream dataInputStream = new DataInputStream(inputStream); dataInputStream.readFully(header.getId()); return header; }
private static CramHeader readFormatDefinition(final InputStream inputStream) throws IOException { for (final byte magicByte : CramHeader.MAGIC) { if (magicByte != inputStream.read()) throw new RuntimeException("Unknown file format."); } final Version version = new Version(inputStream.read(), inputStream.read(), 0); final CramHeader header = new CramHeader(version, null, null); final DataInputStream dataInputStream = new DataInputStream(inputStream); dataInputStream.readFully(header.getId()); return header; }
/** * 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; }
/** * Write a CRAM File header and a SAM Header to an output stream. * * @param cramVersion * @param outStream * @param samFileHeader * @param cramID * @return the offset in the stream after writing the headers */ public static long writeHeader(final Version cramVersion, final OutputStream outStream, final SAMFileHeader samFileHeader, String cramID) { final CramHeader cramHeader = new CramHeader(cramVersion, cramID, samFileHeader); try { return CramIO.writeCramHeader(cramHeader, outStream); } catch (final IOException e) { throw new RuntimeIOException(e); } }
/** * Read CRAM header from the given {@link InputStream}. * * @param inputStream input stream to read from * @return complete {@link CramHeader} object * @throws IOException as per java IO contract */ public static CramHeader readCramHeader(final InputStream inputStream) throws IOException { final CramHeader header = readFormatDefinition(inputStream); final SAMFileHeader samFileHeader = readSAMFileHeader(header.getVersion(), inputStream, new String(header.getId())); return new CramHeader(header.getVersion(), new String(header.getId()), samFileHeader); }
/** * Read CRAM header from the given {@link InputStream}. * * @param inputStream input stream to read from * @return complete {@link CramHeader} object */ public static CramHeader readCramHeader(final InputStream inputStream) { try { final CramHeader header = readFormatDefinition(inputStream); final SAMFileHeader samFileHeader = readSAMFileHeader(header.getVersion(), inputStream, new String(header.getId())); return new CramHeader(header.getVersion(), new String(header.getId()), samFileHeader); } catch (final IOException e) { throw new RuntimeIOException(e); } }
@Test public void testCheckHeaderAndEOF_v3() throws IOException { final String id = "testid"; final CramHeader cramHeader = new CramHeader(CramVersions.CRAM_v3, id, new SAMFileHeader()); final File file = File.createTempFile("test", ".cram"); file.deleteOnExit(); final FileOutputStream fos = new FileOutputStream(file); CramIO.writeCramHeader(cramHeader, fos); CramIO.issueEOF(cramHeader.getVersion(), fos); fos.close(); Assert.assertTrue(CramIO.checkHeaderAndEOF(file)); file.delete(); }
@Test public void testCheckHeaderAndEOF_v2() throws IOException { final String id = "testid"; final CramHeader cramHeader = new CramHeader(CramVersions.CRAM_v2_1, id, new SAMFileHeader()); final File file = File.createTempFile("test", ".cram"); file.deleteOnExit(); final FileOutputStream fos = new FileOutputStream(file); CramIO.writeCramHeader(cramHeader, fos); CramIO.issueEOF(cramHeader.getVersion(), fos); fos.close(); Assert.assertTrue(CramIO.checkHeaderAndEOF(file)); file.delete(); }
CramHeader cramHeader = new CramHeader(CramVersions.CRAM_v3, new File(args[0]).getName(), samFileHeader); CramIO.writeCramHeader(cramHeader, cramOutputStream);
final String id = "testid"; final CramHeader cramHeader = new CramHeader(CramVersions.CRAM_v3, id, new SAMFileHeader()); Assert.assertTrue(cramHeader.getSamFileHeader().getSequenceDictionary().isEmpty()); final File file = File.createTempFile("test", ".cram"); samFileHeader.addSequence(sequenceRecord); final String id2 = "testid2"; final CramHeader cramHeader2 = new CramHeader(CramVersions.CRAM_v3, id2, samFileHeader); final boolean replaced = CramIO.replaceCramHeader(file, cramHeader2); Assert.assertTrue(replaced);