public static SAMFileHeader duplicateSAMFileHeader(SAMFileHeader toCopy) { SAMFileHeader copy = new SAMFileHeader(); copy.setSortOrder(toCopy.getSortOrder()); copy.setGroupOrder(toCopy.getGroupOrder()); copy.setProgramRecords(toCopy.getProgramRecords()); copy.setReadGroups(toCopy.getReadGroups()); copy.setSequenceDictionary(toCopy.getSequenceDictionary()); for (Map.Entry<String, String> e : toCopy.getAttributes()) copy.setAttribute(e.getKey(), e.getValue()); return copy; }
@Test public void testGetSequenceIfSequenceDictionaryIsEmpty() { final SAMFileHeader header = new SAMFileHeader(); header.setSequenceDictionary(null); Assert.assertNull(header.getSequence("chr1")); }
public ArtificialBAMBuilder createAndSetHeader(final int nSamples) { createdReads = null; this.header = new SAMFileHeader(); header.setSortOrder(SAMFileHeader.SortOrder.coordinate); header.setSequenceDictionary(parser.getContigs()); samples.clear(); for ( int i = 0; i < nSamples; i++ ) { final GATKSAMReadGroupRecord rg = new GATKSAMReadGroupRecord("rg" + i); final String sample = "sample" + i; samples.add(sample); rg.setSample(sample); rg.setPlatform(NGSPlatform.ILLUMINA.getDefaultPlatform()); header.addReadGroup(rg); } return this; }
private SAMFileHeader createOutHeader( final SAMFileHeader inHeader, final SAMFileHeader.SortOrder sortOrder, final boolean removeAlignmentInformation) { final SAMFileHeader outHeader = new SAMFileHeader(); outHeader.setSortOrder(sortOrder); if (!removeAlignmentInformation) { outHeader.setSequenceDictionary(inHeader.getSequenceDictionary()); outHeader.setProgramRecords(inHeader.getProgramRecords()); } return outHeader; }
/** * Creates an artificial sam header based on the sequence dictionary dict * * @return a new sam header */ public static SAMFileHeader createArtificialSamHeader(final SAMSequenceDictionary dict) { SAMFileHeader header = new SAMFileHeader(); header.setSortOrder(htsjdk.samtools.SAMFileHeader.SortOrder.coordinate); header.setSequenceDictionary(dict); return header; }
protected ReadDestination(final SAMFileHeader header, final String readGroupID) { // prepare the bam header if ( header == null ) throw new IllegalArgumentException("header cannot be null"); bamHeader = new SAMFileHeader(); bamHeader.setSequenceDictionary(header.getSequenceDictionary()); bamHeader.setSortOrder(SAMFileHeader.SortOrder.coordinate); bamHeader.setProgramRecords(header.getProgramRecords()); // include the original read groups plus an artificial one for haplotypes final List<SAMReadGroupRecord> readGroups = new ArrayList<>(header.getReadGroups()); SAMReadGroupRecord rg = new SAMReadGroupRecord(readGroupID); rg.setSample("HC"); rg.setSequencingCenter("BI"); readGroups.add(rg); bamHeader.setReadGroups(readGroups); }
@Test public void testContigHasColon() { SAMFileHeader header = new SAMFileHeader(); header.setSortOrder(htsjdk.samtools.SAMFileHeader.SortOrder.coordinate); SAMSequenceDictionary dict = new SAMSequenceDictionary(); SAMSequenceRecord rec = new SAMSequenceRecord("c:h:r1", 10); rec.setSequenceLength(10); dict.addSequence(rec); header.setSequenceDictionary(dict); final GenomeLocParser myGenomeLocParser = new GenomeLocParser(header.getSequenceDictionary()); GenomeLoc loc = myGenomeLocParser.parseGenomeLoc("c:h:r1:4-5"); assertEquals(0, loc.getContigIndex()); assertEquals(loc.getStart(), 4); assertEquals(loc.getStop(), 5); }
/** * Prepare to filter out SAMRecords that do not overlap the given list of intervals * @param intervals -- must be locus-ordered & non-overlapping */ public IntervalFilter(final List<Interval> intervals, final SAMFileHeader samHeader) { this.samHeader = samHeader; IntervalUtil.assertOrderedNonOverlapping(intervals.iterator(), samHeader.getSequenceDictionary()); this.intervals = intervals.iterator(); advanceInterval(); }
private SAMFileHeader createSAMHeader(SAMFileHeader.SortOrder sortOrder) { final SAMFileHeader header = new SAMFileHeader(); header.setSortOrder(sortOrder); header.addSequence(new SAMSequenceRecord("chr1", 123)); SAMReadGroupRecord readGroupRecord = new SAMReadGroupRecord("1"); header.addReadGroup(readGroupRecord); return header; }
private void createSmallBam(final Path outputPath) { final SAMFileWriterFactory factory = new SAMFileWriterFactory(); factory.setCreateIndex(true); factory.setCreateMd5File(true); final SAMFileHeader header = new SAMFileHeader(); // index only created if coordinate sorted header.setSortOrder(SAMFileHeader.SortOrder.coordinate); header.addSequence(new SAMSequenceRecord("chr1", 123)); try (final SAMFileWriter writer = factory.makeBAMWriter(header, false, outputPath)) { fillSmallBam(writer); } }
private static void assertSortOrdersAreEqual(final SAMFileHeader newHeader, final File inputFile) throws IOException { final SAMFileHeader origHeader = new SAMFileReader(inputFile).getFileHeader(); final SAMFileHeader.SortOrder newSortOrder = newHeader.getSortOrder(); if (newSortOrder != SAMFileHeader.SortOrder.unsorted && newSortOrder != origHeader.getSortOrder()) { throw new SAMException("Sort order of new header does not match the original file, needs to be " + origHeader.getSortOrder()); } } }
public SAMRecordDuplicateComparator(final List<SAMFileHeader> headers) { // pre-populate the library names for (final SAMFileHeader header : headers) { for (final SAMReadGroupRecord readGroup : header.getReadGroups()) { final String libraryName = readGroup.getLibrary(); if (null != libraryName) { final short libraryId = this.nextLibraryId++; this.libraryIds.put(libraryName, libraryId); } } } }
@Override protected void setup(final SAMFileHeader header, final File samFile) { IOUtil.assertFileIsWritable(OUTPUT); if (header.getSequenceDictionary().isEmpty()) { log.warn(INPUT.getAbsoluteFile() + " has no sequence dictionary. If any reads " + "in the file are aligned, then alignment summary metrics collection will fail."); } final boolean doRefMetrics = REFERENCE_SEQUENCE != null; collector = new AlignmentSummaryMetricsCollector(METRIC_ACCUMULATION_LEVEL, header.getReadGroups(), doRefMetrics, ADAPTER_SEQUENCE, MAX_INSERT_SIZE, EXPECTED_PAIR_ORIENTATIONS, IS_BISULFITE_SEQUENCED); }
@Test(expectedExceptions = SAMException.class) public void testRequireCoordinateSortOrder() { SAMFileHeader header = new SAMFileHeader(); header.setSortOrder(SAMFileHeader.SortOrder.queryname); new BAMIndexer(new ByteArrayOutputStream(), header); }
@BeforeClass public void beforeClass() { header = ArtificialSAMUtils.createArtificialSamHeader((endingChr - startingChr) + 1, startingChr, readCount + DEFAULT_READ_LENGTH); contig = header.getSequence(0).getSequenceName(); genomeLocParser = new GenomeLocParser(header.getSequenceDictionary()); initializeTests(); }
private SAMFileHeader getSAMFileHeader() { final VCFFileReader reader = getReader(CEU_TRIOS_SNPS_VCF); final SAMSequenceDictionary dict = reader.getFileHeader().getSequenceDictionary(); reader.close(); final SAMFileHeader header = new SAMFileHeader(); header.setSequenceDictionary(dict); return header; }
public static HashSet<Integer> makeIgnoredSequenceIndicesSet(final SAMFileHeader header, final Set<String> ignoredSequence) { final HashSet<Integer> ignoredSequenceIndices = new HashSet<Integer>(); for (final String sequenceName: ignoredSequence) { final SAMSequenceRecord sequenceRecord = header.getSequence(sequenceName); if (sequenceRecord == null) { throw new PicardException("Unrecognized sequence " + sequenceName + " passed as argument to IGNORE_SEQUENCE"); } ignoredSequenceIndices.add(sequenceRecord.getSequenceIndex()); } return ignoredSequenceIndices; }
@BeforeClass public void setUp() throws Exception { header = ArtificialSAMUtils.createArtificialSamHeader(1, 1, 1000); rg = new GATKSAMReadGroupRecord(RGID); rg.setSample(sample); header.addReadGroup(rg); parser = new GenomeLocParser(header.getSequenceDictionary()); }
public PgIdGenerator(final SAMFileHeader header) { for (final SAMProgramRecord pgRecord : header.getProgramRecords()) { idsThatAreAlreadyTaken.add(pgRecord.getProgramGroupId()); } recordCounter = idsThatAreAlreadyTaken.size(); }
@Test public void testSetHeaderStrictValidNewHeader() { final SAMRecord sam = createTestRecordHelper(); final String origSequenceName = sam.getContig(); final SAMFileHeader origSamHeader = sam.getHeader(); final int origSequenceLength = origSamHeader.getSequence(origSequenceName).getSequenceLength(); final SAMFileHeader newHeader = new SAMFileHeader(); newHeader.addSequence(new SAMSequenceRecord(origSequenceName, origSequenceLength)); // force re-resolution of the reference name against the new header sam.setHeaderStrict(newHeader); Assert.assertEquals(sam.getReferenceIndex(), new Integer(0)); }