/** * Constructor that takes a {@link ReferenceSequenceFile} and a {@link SamLocusIterator}. * The inputs must have equal {@link htsjdk.samtools.SAMSequenceDictionary SAMSequenceDictionary}s and an {@link IllegalArgumentException} * will be thrown otherwise. * * @param referenceFile * @param locusIterator * * @throws IllegalArgumentException if arguments have non-equal {@link htsjdk.samtools.SAMSequenceDictionary SAMSequenceDictionary}s */ public SamLocusAndReferenceIterator(final ReferenceSequenceFileWalker referenceFile, final SamLocusIterator locusIterator) throws IllegalArgumentException { if(!SequenceUtil.areSequenceDictionariesEqual( locusIterator.getHeader().getSequenceDictionary(), referenceFile.getSequenceDictionary())) { throw new IllegalArgumentException("reference and locus iterator have difference dictionaries." + locusIterator.getHeader().getSequenceDictionary().toString() + referenceFile.getSequenceDictionary().toString()); } this.referenceSequenceFileWalker = referenceFile; this.locusIterator = locusIterator; }
/** * Constructor that takes a {@link ReferenceSequenceFile} and a {@link SamLocusIterator}. * The inputs must have equal {@link htsjdk.samtools.SAMSequenceDictionary SAMSequenceDictionary}s and an {@link IllegalArgumentException} * will be thrown otherwise. * * @param referenceFile * @param locusIterator * * @throws IllegalArgumentException if arguments have non-equal {@link htsjdk.samtools.SAMSequenceDictionary SAMSequenceDictionary}s */ public SamLocusAndReferenceIterator(final ReferenceSequenceFileWalker referenceFile, final SamLocusIterator locusIterator) throws IllegalArgumentException { if(!SequenceUtil.areSequenceDictionariesEqual( locusIterator.getHeader().getSequenceDictionary(), referenceFile.getSequenceDictionary())) { throw new IllegalArgumentException("reference and locus iterator have difference dictionaries." + locusIterator.getHeader().getSequenceDictionary().toString() + referenceFile.getSequenceDictionary().toString()); } this.referenceSequenceFileWalker = referenceFile; this.locusIterator = locusIterator; }
@DataProvider public Object[][] testOverlappingErrorCalculatorWithManyReadsData() throws IOException { final File temp = File.createTempFile("Overlapping", ".bam"); temp.deleteOnExit(); try ( final ReferenceSequenceFileWalker referenceSequenceFileWalker = new ReferenceSequenceFileWalker(new File("testdata/picard/sam/BamErrorMetrics/chrM.reference.fasta"))) { final SAMRecordSetBuilder builder = new SAMRecordSetBuilder(); builder.getHeader().setSequenceDictionary(referenceSequenceFileWalker.getSequenceDictionary()); for (int i = 0; i < 4000; i++) { builder.addPair("Read" + i, 0, 1, 1, false, false, "36M", "36M", true, false, 20); } try (final SAMFileWriter writer = new SAMFileWriterFactory() .setCompressionLevel(2) .makeBAMWriter(builder.getHeader(), false, temp)) { builder.forEach(writer::addAlignment); } } return new Object[][]{{temp}}; }
refWalker.getSequenceDictionary());
) { final SAMSequenceDictionary sequenceDictionary = referenceSequenceFileWalker.getSequenceDictionary(); if (sam.getFileHeader().getSortOrder() != SAMFileHeader.SortOrder.coordinate) { throw new PicardException("Input BAM must be sorted by coordinate");
) { final SAMSequenceDictionary sequenceDictionary = referenceSequenceFileWalker.getSequenceDictionary(); if (sam.getFileHeader().getSortOrder() != SAMFileHeader.SortOrder.coordinate) { throw new PicardException("Input BAM must be sorted by coordinate");
final Map<String, ReferenceSequence> refSeqs = new HashMap<>(); if (walker.getSequenceDictionary() == null) { log.error("Reference " + REFERENCE_SEQUENCE.getAbsolutePath() + " must have an associated Dictionary .dict file in the same directory."); return 1; for (final SAMSequenceRecord rec : walker.getSequenceDictionary().getSequences()) { refSeqs.put(rec.getSequenceName(), walker.get(rec.getSequenceIndex())); outHeader.setSequenceDictionary(walker.getSequenceDictionary()); if (WRITE_ORIGINAL_POSITION) { for (final VCFInfoHeaderLine line : ATTRS) outHeader.addMetaDataLine(line); .setOption(Options.INDEX_ON_THE_FLY) .modifyOption(Options.ALLOW_MISSING_FIELDS_IN_HEADER, ALLOW_MISSING_FIELDS_IN_HEADER) .setOutputFile(OUTPUT).setReferenceDictionary(walker.getSequenceDictionary()).build(); out.writeHeader(outHeader);
final Map<String, ReferenceSequence> refSeqs = new HashMap<>(); if (walker.getSequenceDictionary() == null) { log.error("Reference " + REFERENCE_SEQUENCE.getAbsolutePath() + " must have an associated Dictionary .dict file in the same directory."); return 1; for (final SAMSequenceRecord rec : walker.getSequenceDictionary().getSequences()) { refSeqs.put(rec.getSequenceName(), walker.get(rec.getSequenceIndex())); outHeader.setSequenceDictionary(walker.getSequenceDictionary()); if (WRITE_ORIGINAL_POSITION) { for (final VCFInfoHeaderLine line : ATTRS) outHeader.addMetaDataLine(line); .setOption(Options.INDEX_ON_THE_FLY) .modifyOption(Options.ALLOW_MISSING_FIELDS_IN_HEADER, ALLOW_MISSING_FIELDS_IN_HEADER) .setOutputFile(OUTPUT).setReferenceDictionary(walker.getSequenceDictionary()).build(); out.writeHeader(outHeader);
SequenceUtil.assertSequenceDictionariesEqual(referenceWalker.getSequenceDictionary(), targets.getHeader().getSequenceDictionary());
SequenceUtil.assertSequenceDictionariesEqual(referenceWalker.getSequenceDictionary(), targets.getHeader().getSequenceDictionary());