Java Code Examples for htsjdk.samtools.SAMFileHeader.SortOrder#coordinate()
The following examples show how to use
htsjdk.samtools.SAMFileHeader.SortOrder#coordinate() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: AnalyzeSaturationMutagenesis.java From gatk with BSD 3-Clause "New" or "Revised" License | 6 votes |
@Override public void onTraversalStart() { super.onTraversalStart(); staticLogger = logger; final SAMFileHeader header = getHeaderForReads(); if ( pairedMode && header != null && header.getSortOrder() == SortOrder.coordinate ) { throw new UserException("In paired mode the BAM cannot be coordinate sorted. Mates must be adjacent."); } if ( codonTranslation.length() != CodonTracker.N_REGULAR_CODONS ) { throw new UserException("codon-translation string must contain exactly 64 characters"); } reference = new Reference(ReferenceDataSource.of(referenceArguments.getReferencePath())); codonTracker = new CodonTracker(orfCoords, reference.getRefSeq(), logger); if ( writeRejectedReads ) { rejectedReadsBAMWriter = createSAMWriter(new GATKPath(outputFilePrefix + ".rejected.bam"), false); } }
Example 2
Source File: AbstractAlignmentMerger.java From picard with MIT License | 4 votes |
/** * Constructor * * @param unmappedBamFile The BAM file that was used as the input to the aligner, which will * include info on all the reads that did not map. Required. * @param targetBamFile The file to which to write the merged SAM records. Required. * @param referenceFasta The reference sequence for the map files. Required. * @param clipAdapters Whether adapters marked in unmapped BAM file should be marked as * soft clipped in the merged bam. Required. * @param bisulfiteSequence Whether the reads are bisulfite sequence (used when calculating the * NM and UQ tags). Required. * @param alignedReadsOnly Whether to output only those reads that have alignment data * @param programRecord Program record for target file SAMRecords created. * @param attributesToRetain private attributes from the alignment record that should be * included when merging. This overrides the exclusion of * attributes whose tags start with the reserved characters * of X, Y, and Z * @param attributesToRemove attributes from the alignment record that should be * removed when merging. This overrides attributesToRetain if they share * common tags. * @param read1BasesTrimmed The number of bases trimmed from start of read 1 prior to alignment. Optional. * @param read2BasesTrimmed The number of bases trimmed from start of read 2 prior to alignment. Optional. * @param expectedOrientations A List of SamPairUtil.PairOrientations that are expected for * aligned pairs. Used to determine the properPair flag. * @param sortOrder The order in which the merged records should be output. If null, * output will be coordinate-sorted * @param primaryAlignmentSelectionStrategy What to do when there are multiple primary alignments, or multiple * alignments but none primary, for a read or read pair. * @param addMateCigar True if we are to add or maintain the mate CIGAR (MC) tag, false if we are to remove or not include. * @param unmapContaminantReads If true, identify reads having the signature of cross-species contamination (i.e. mostly clipped bases), * and mark them as unmapped. * @param unmappingReadsStrategy An enum describing how to deal with reads whose mapping information are being removed (currently this happens due to cross-species * contamination). Ignored unless unmapContaminantReads is true. */ public AbstractAlignmentMerger(final File unmappedBamFile, final File targetBamFile, final File referenceFasta, final boolean clipAdapters, final boolean bisulfiteSequence, final boolean alignedReadsOnly, final SAMProgramRecord programRecord, final List<String> attributesToRetain, final List<String> attributesToRemove, final Integer read1BasesTrimmed, final Integer read2BasesTrimmed, final List<SamPairUtil.PairOrientation> expectedOrientations, final SortOrder sortOrder, final PrimaryAlignmentSelectionStrategy primaryAlignmentSelectionStrategy, final boolean addMateCigar, final boolean unmapContaminantReads, final UnmappingReadStrategy unmappingReadsStrategy) { IOUtil.assertFileIsReadable(unmappedBamFile); IOUtil.assertFileIsWritable(targetBamFile); IOUtil.assertFileIsReadable(referenceFasta); this.unmappedBamFile = unmappedBamFile; this.targetBamFile = targetBamFile; this.referenceFasta = referenceFasta; this.refSeq = new ReferenceSequenceFileWalker(referenceFasta); this.clipAdapters = clipAdapters; this.bisulfiteSequence = bisulfiteSequence; this.alignedReadsOnly = alignedReadsOnly; this.header = new SAMFileHeader(); this.sortOrder = sortOrder != null ? sortOrder : SortOrder.coordinate; header.setSortOrder(SortOrder.coordinate); if (programRecord != null) { setProgramRecord(programRecord); } if (attributesToRetain != null) { this.attributesToRetain.addAll(attributesToRetain); } if (attributesToRemove != null) { this.attributesToRemove.addAll(attributesToRemove); // attributesToRemove overrides attributesToRetain if (!this.attributesToRetain.isEmpty()) { this.attributesToRemove.stream() .filter(this.attributesToRetain::contains) .peek(a->log.info("Overriding retaining the " + a + " tag since 'remove' overrides 'retain'.")) .forEach(this.attributesToRetain::remove); } } this.read1BasesTrimmed = read1BasesTrimmed; this.read2BasesTrimmed = read2BasesTrimmed; this.expectedOrientations = expectedOrientations; this.primaryAlignmentSelectionStrategy = primaryAlignmentSelectionStrategy; this.addMateCigar = addMateCigar; this.unmapContaminantReads = unmapContaminantReads; this.unmappingReadsStrategy = unmappingReadsStrategy; }
Example 3
Source File: CollectHsMetricsTest.java From picard with MIT License | 4 votes |
@Test public void testHsMetricsHandlesIndelsAppropriately() throws IOException { final SAMRecordSetBuilder withDeletions = new SAMRecordSetBuilder(true, SortOrder.coordinate); final SAMRecordSetBuilder withInsertions = new SAMRecordSetBuilder(true, SortOrder.coordinate); final IntervalList targets = new IntervalList(withDeletions.getHeader()); final IntervalList baits = new IntervalList(withDeletions.getHeader()); targets.add(new Interval("chr1", 1000, 1199, false, "t1")); baits.add(new Interval("chr1", 950, 1049, false, "b1")); baits.add(new Interval("chr1", 1050, 1149, false, "b2")); baits.add(new Interval("chr1", 1150, 1249, false, "b3")); // Generate 100 reads that fully cover the the target in each BAM for (int i=0; i<100; ++i) { withDeletions.addFrag( "d" + i, 0, 1000, false, false, "100M20D80M", null, 30); withInsertions.addFrag("i" + i, 0, 1000, false, false, "100M50I100M", null, 30); } // Write things out to file final File dir = IOUtil.createTempDir("hsmetrics.", ".test"); final File bs = new File(dir, "baits.interval_list").getAbsoluteFile(); final File ts = new File(dir, "targets.interval_list").getAbsoluteFile(); baits.write(bs); targets.write(ts); final File withDelBam = writeBam(withDeletions, new File(dir, "with_del.bam")); final File withInsBam = writeBam(withInsertions, new File(dir, "with_ins.bam")); // Now run CollectHsMetrics four times final File out = Files.createTempFile("hsmetrics.", ".txt").toFile(); runPicardCommandLine(Arrays.asList("INCLUDE_INDELS=false", "SAMPLE_SIZE=0", "TI="+ts.getPath(), "BI="+bs.getPath(), "O="+out.getPath(), "I="+withDelBam.getAbsolutePath())); final HsMetrics delsWithoutIndelHandling = readMetrics(out); runPicardCommandLine(Arrays.asList("INCLUDE_INDELS=true", "SAMPLE_SIZE=0", "TI="+ts.getPath(), "BI="+bs.getPath(), "O="+out.getPath(), "I="+withDelBam.getAbsolutePath())); final HsMetrics delsWithIndelHandling = readMetrics(out); runPicardCommandLine(Arrays.asList("INCLUDE_INDELS=false", "SAMPLE_SIZE=0", "TI="+ts.getPath(), "BI="+bs.getPath(), "O="+out.getPath(), "I="+withInsBam.getAbsolutePath())); final HsMetrics insWithoutIndelHandling = readMetrics(out); runPicardCommandLine(Arrays.asList("INCLUDE_INDELS=true", "SAMPLE_SIZE=0", "TI="+ts.getPath(), "BI="+bs.getPath(), "O="+out.getPath(), "I="+withInsBam.getAbsolutePath())); final HsMetrics insWithIndelHandling = readMetrics(out); IOUtil.deleteDirectoryTree(dir); Assert.assertEquals(delsWithoutIndelHandling.MEAN_TARGET_COVERAGE, 90.0); // 100X over 180/200 bases due to deletion Assert.assertEquals(delsWithIndelHandling.MEAN_TARGET_COVERAGE, 100.0); // 100X with counting the deletion Assert.assertEquals(insWithoutIndelHandling.PCT_USABLE_BASES_ON_TARGET, 200/250d); // 50/250 inserted bases are not counted as on target Assert.assertEquals(insWithIndelHandling.PCT_USABLE_BASES_ON_TARGET, 1.0d); // inserted bases are counted as on target }
Example 4
Source File: MetricsCollectorSpark.java From gatk with BSD 3-Clause "New" or "Revised" License | 2 votes |
/** * Return the sort order this collect requires. Collector consumers will validate * the expected sort order. If no specific sort order is required, return * <code>SortOrder.unsorted</code>. Default implementation returns * <code>SortOrder.coordinate</code> * @return SortOrder required for this collector or <code>SortOrder.unsorted</code> * to indicate any sort order is acceptable. */ default SortOrder getExpectedSortOrder() { return SortOrder.coordinate; }