@Test public void testAddCommentsToBam() throws Exception { final File outputFile = File.createTempFile("addCommentsToBamTest.", BamFileIoUtils.BAM_FILE_EXTENSION); outputFile.deleteOnExit(); runIt(INPUT_FILE, outputFile, commentList); final SAMFileHeader newHeader = SamReaderFactory.makeDefault().getFileHeader(outputFile); // The original comments are massaged when they're added to the header. Perform the same massaging here, // and then compare the lists final List<String> massagedComments = new LinkedList<String>(); for (final String comment : commentList) { massagedComments.add(SAMTextHeaderCodec.COMMENT_PREFIX + comment); } Assert.assertEquals(newHeader.getComments(), massagedComments); outputFile.delete(); }
alignmentHeader.getComments().addAll(samHeader.getComments());
/** * Convert SAMFileHeader from in-memory representation to text representation. * @param writer where to write the header text. * @param header object to be converted to text. * @param keepExistingVersionNumber If true, writes whatever version # was in the header. If false, writes * SAMFileHeader.CURRENT_VERSION. */ public void encode(final Writer writer, final SAMFileHeader header, final boolean keepExistingVersionNumber) { mFileHeader = header; this.writer = new BufferedWriter(writer); writeHDLine(keepExistingVersionNumber); for (final SAMSequenceRecord sequenceRecord: header.getSequenceDictionary().getSequences()) { writeSQLine(sequenceRecord); } for (final SAMReadGroupRecord readGroup : header.getReadGroups()) { writeRGLine(readGroup); } for (final SAMProgramRecord programRecord : header.getProgramRecords()) { writePGLine(programRecord); } for (final String comment : header.getComments()) { println(comment); } try { this.writer.flush(); } catch (IOException e) { throw new RuntimeIOException(e); } }
/** * Convert SAMFileHeader from in-memory representation to text representation. * @param writer where to write the header text. * @param header object to be converted to text. * @param keepExistingVersionNumber If true, writes whatever version # was in the header. If false, writes * SAMFileHeader.CURRENT_VERSION. */ public void encode(final Writer writer, final SAMFileHeader header, final boolean keepExistingVersionNumber) { mFileHeader = header; this.writer = new BufferedWriter(writer); writeHDLine(keepExistingVersionNumber); for (final SAMSequenceRecord sequenceRecord: header.getSequenceDictionary().getSequences()) { writeSQLine(sequenceRecord); } for (final SAMReadGroupRecord readGroup : header.getReadGroups()) { writeRGLine(readGroup); } for (final SAMProgramRecord programRecord : header.getProgramRecords()) { writePGLine(programRecord); } for (final String comment : header.getComments()) { println(comment); } try { this.writer.flush(); } catch (IOException e) { throw new RuntimeIOException(e); } }
/** * Convert SAMFileHeader from in-memory representation to text representation. * @param writer where to write the header text. * @param header object to be converted to text. * @param keepExistingVersionNumber If true, writes whatever version # was in the header. If false, writes * SAMFileHeader.CURRENT_VERSION. */ public void encode(final Writer writer, final SAMFileHeader header, final boolean keepExistingVersionNumber) { mFileHeader = header; this.writer = new BufferedWriter(writer); writeHDLine(keepExistingVersionNumber); for (final SAMSequenceRecord sequenceRecord: header.getSequenceDictionary().getSequences()) { writeSQLine(sequenceRecord); } for (final SAMReadGroupRecord readGroup : header.getReadGroups()) { writeRGLine(readGroup); } for (final SAMProgramRecord programRecord : header.getProgramRecords()) { writePGLine(programRecord); } for (final String comment : header.getComments()) { println(comment); } try { this.writer.flush(); } catch (IOException e) { throw new RuntimeIOException(e); } }
@Test public void testHeaderCommentMerge() throws Exception { final String[] comments1 = {"@CO\tHi, Mom!", "@CO\tHi, Dad!"}; final String[] comments2 = {"@CO\tHello, World!", "@CO\tGoodbye, Cruel World!"}; final Set<String> bothComments = new HashSet<String>(); bothComments.addAll(Arrays.asList(comments1)); bothComments.addAll(Arrays.asList(comments2)); final SAMRecordSetBuilder builder1 = new SAMRecordSetBuilder(false, SAMFileHeader.SortOrder.coordinate); SAMFileHeader header = builder1.getHeader(); for (final String comment : comments1) { header.addComment(comment); } final SAMRecordSetBuilder builder2 = new SAMRecordSetBuilder(false, SAMFileHeader.SortOrder.coordinate); header = builder2.getHeader(); for (final String comment : comments2) { header.addComment(comment); } final SamFileHeaderMerger merger = new SamFileHeaderMerger(SAMFileHeader.SortOrder.coordinate, Arrays.asList(builder1.getSamReader().getFileHeader(), builder2.getSamReader().getFileHeader()), false); final List<String> mergedComments = merger.getMergedHeader().getComments(); Assert.assertEquals(mergedComments.size(), bothComments.size()); for (final String comment : mergedComments) { Assert.assertTrue(bothComments.contains(comment)); } builder1.getSamReader().close(); builder2.getSamReader().close(); }
for (final String comment : header.getComments()) { this.mergedHeader.addComment(comment);
for (final String comment : header.getComments()) { this.mergedHeader.addComment(comment);
for (final String comment : header.getComments()) { this.mergedHeader.addComment(comment);
private static SAMFileHeader mergeHeaders(List<RecordSource> sources) { SAMFileHeader header = new SAMFileHeader(); for (RecordSource source : sources) { SAMFileHeader h = source.reader.getFileHeader(); for (SAMSequenceRecord seq : h.getSequenceDictionary().getSequences()) { if (header.getSequenceDictionary().getSequence(seq.getSequenceName()) == null) header.addSequence(seq); } for (SAMProgramRecord pro : h.getProgramRecords()) { if (header.getProgramRecord(pro.getProgramGroupId()) == null) header.addProgramRecord(pro); } for (String comment : h.getComments()) header.addComment(comment); for (SAMReadGroupRecord rg : h.getReadGroups()) { if (header.getReadGroup(rg.getReadGroupId()) == null) header.addReadGroup(rg); } } return header; }