public SAMFileHeader getFileHeader() { if (header == null) { header = reader.getFileHeader(); } return header; }
private static List<SAMFileHeader> getHeadersFromReaders(final Collection<SamReader> readers) { final List<SAMFileHeader> headers = new ArrayList<SAMFileHeader>(readers.size()); for (final SamReader reader : readers) { headers.add(reader.getFileHeader()); } return headers; }
private static List<SAMFileHeader> getHeadersFromReaders(final Collection<SamReader> readers) { final List<SAMFileHeader> headers = new ArrayList<SAMFileHeader>(readers.size()); for (final SamReader reader : readers) { headers.add(reader.getFileHeader()); } return headers; }
/** * Returns the read group id that should be used for the input read and RG id. * * @deprecated replaced by {@link #getReadGroupId(SAMFileHeader, String)} */ @Deprecated public String getReadGroupId(final SamReader reader, final String originalReadGroupId) { return getReadGroupId(reader.getFileHeader(), originalReadGroupId); }
/** * returns the new mapping for a specified reader, given it's old sequence index * * @param reader the reader * @param oldReferenceSequenceIndex the old sequence (also called reference) index * @return the new index value * @deprecated replaced by {@link #getMergedSequenceIndex(SAMFileHeader, Integer)} */ @Deprecated public Integer getMergedSequenceIndex(final SamReader reader, final Integer oldReferenceSequenceIndex) { return this.getMergedSequenceIndex(reader.getFileHeader(), oldReferenceSequenceIndex); }
/** * Get the newly mapped read group ID for the given read group. * @param readerID Reader for which to discern the transformed ID. * @param originalReadGroupID Original read group. * @return Remapped read group. */ public String getReadGroupId(final SAMReaderID readerID, final String originalReadGroupID) { SAMFileHeader header = readers.get(readerID).getFileHeader(); return headerMerger.getReadGroupId(header,originalReadGroupID); }
/** * @param reader one of the input files * @param originalProgramGroupId a program group ID from the above input file * @return new ID from the merged list of program groups in the output file * @deprecated replaced by {@link #getProgramGroupId(SAMFileHeader, String)} */ @Deprecated public String getProgramGroupId(final SamReader reader, final String originalProgramGroupId) { return getProgramGroupId(reader.getFileHeader(), originalProgramGroupId); }
/** * Returns the read group id that should be used for the input read and RG id. * * @deprecated replaced by {@link #getReadGroupId(SAMFileHeader, String)} */ @Deprecated public String getReadGroupId(final SamReader reader, final String originalReadGroupId) { return getReadGroupId(reader.getFileHeader(), originalReadGroupId); }
/** * returns the new mapping for a specified reader, given it's old sequence index * * @param reader the reader * @param oldReferenceSequenceIndex the old sequence (also called reference) index * @return the new index value * @deprecated replaced by {@link #getMergedSequenceIndex(SAMFileHeader, Integer)} */ @Deprecated public Integer getMergedSequenceIndex(final SamReader reader, final Integer oldReferenceSequenceIndex) { return this.getMergedSequenceIndex(reader.getFileHeader(), oldReferenceSequenceIndex); }
public BAMReader(ResourceLocator locator, boolean requireIndex) throws IOException { this.locator = locator; reader = getSamReader(locator, requireIndex); header = reader.getFileHeader(); validateSequenceLengths(header); }
@Override public SAMFileHeader getFileHeader(final File samFile) { final SamReader reader = open(samFile); final SAMFileHeader header = reader.getFileHeader(); CloserUtil.close(reader); return header; }
/** Gets the SamReader from which records will be examined. This will also set the header so that it is available in * */ protected SamReader getSamReader() { final SamReader in = SamReaderFactory.makeDefault().referenceSequence(REFERENCE_SEQUENCE).open(INPUT); this.header = in.getFileHeader(); return in; }
private static void assertSortOrdersAreEqual(final SAMFileHeader newHeader, final File inputFile) throws IOException { final SamReader reader = SamReaderFactory.makeDefault().open(inputFile); final SAMFileHeader origHeader = reader.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()); } reader.close(); } }
@Test public void testRedundantTags() throws Exception { final String header = "@HD VN:1.0 SO:coordinate SO:coordinate"; final InputStream strm = new ByteArrayInputStream(StringUtil.stringToBytes(header)); final SamReader samReader = SamReaderFactory.makeDefault().open(SamInputResource.of(strm)); Assert.assertEquals(SAMFileHeader.SortOrder.coordinate, samReader.getFileHeader().getSortOrder()); CloserUtil.close(samReader); }
@Test(dataProvider = "queryIntervalIssue76TestCases") public void queryIntervalIssue76(final String sequenceName, final int start, final int end, final int expectedCount) throws IOException { final File input = new File(TEST_DATA_DIR, "issue76.bam"); final SamReader reader = SamReaderFactory.makeDefault().open(input); final QueryInterval interval = new QueryInterval(reader.getFileHeader().getSequence(sequenceName).getSequenceIndex(), start, end); Assert.assertEquals(countRecordsInQueryInterval(reader, interval), expectedCount); reader.close(); }
@BeforeClass public void init() throws IOException { final SamReader reader = SamReaderFactory.makeDefault().enable(SamReaderFactory.Option.CACHE_FILE_BASED_INDEXES).open(bamFile); sequenceDictionary = reader.getFileHeader().getSequenceDictionary(); reader.close(); bamIndex = new GATKBAMIndexFromFile(bamIndexFile, sequenceDictionary); }
@Test(dataProvider = "testSameUnclipped5PrimeOppositeStrandData") public void testSameUnclipped5PrimeOppositeStrand(final File input) throws IOException { final AbstractMarkDuplicatesCommandLineProgramTester tester = new BySumOfBaseQAndInOriginalOrderMDTester(); try (final SamReader reader = SamReaderFactory.makeDefault().open(input)) { tester.setHeader(reader.getFileHeader()); reader.iterator().stream().forEach(tester::addRecord); } tester.setExpectedOpticalDuplicate(0); tester.runTest(); }
@BeforeClass public void init() throws IOException { final SamReader reader = SamReaderFactory.makeDefault().enable(SamReaderFactory.Option.CACHE_FILE_BASED_INDEXES).open(bamFile); Assert.assertTrue(reader.hasIndex()); Assert.assertTrue(reader.indexing().hasBrowseableIndex()); bamIndex = new GATKBAMIndexFromDataSource(bamFile, reader.getFileHeader(), reader.indexing().getBrowseableIndex()); reader.close(); }
@Test(dataProvider = "queryGroupedInput") public void testQueryGroupedInput(final File input) throws IOException { final AbstractMarkDuplicatesCommandLineProgramTester tester = new BySumOfBaseQAndInOriginalOrderMDTester(); try(final SamReader reader = SamReaderFactory.makeDefault().open(input)) { tester.setHeader(reader.getFileHeader()); reader.iterator().stream().forEach(tester::addRecord); } tester.setExpectedOpticalDuplicate(0); tester.addArg("ASSUME_SORT_ORDER=queryname"); tester.runTest(); } }
public static long countSamTotalRecord(final File samFile) { final SamReader reader = SamReaderFactory.make().open(samFile); assert reader.hasIndex(); long total = 0; for (int i = 0; i < reader.getFileHeader().getSequenceDictionary().size(); i++) { total += reader.indexing().getIndex().getMetaData(i).getAlignedRecordCount(); total += reader.indexing().getIndex().getMetaData(i).getUnalignedRecordCount(); } return total; } }