package picard.analysis.directed; import htsjdk.samtools.SAMReadGroupRecord; import htsjdk.samtools.reference.ReferenceSequenceFile; import htsjdk.samtools.util.IntervalList; import picard.analysis.MetricAccumulationLevel; import picard.cmdline.CommandLineProgramProperties; import picard.cmdline.Option; import picard.cmdline.programgroups.Metrics; import java.io.File; import java.util.List; import java.util.Set; /** * Collect metric information for target pcr metrics runs. See CollectTargetedMetrics and TargetPcrMetricsCollector for * more information */ @CommandLineProgramProperties( usage = "Calculates a set of metrics to Illumina Truseq Custom Amplicon sequencing from an aligned SAM" + "or BAM file. If a reference sequence is provided, AT/GC dropout metrics will " + "be calculated, and the PER_TARGET_COVERAGE option can be used to output GC and " + "mean coverage information for every target.", usageShort = "Produces Targeted PCR-related metrics given the provided SAM/BAM", programGroup = Metrics.class ) public class CollectTargetedPcrMetrics extends CollectTargetedMetrics<TargetedPcrMetrics, TargetedPcrMetricsCollector> { @Option(shortName = "AI", doc = "An interval list file that contains the locations of the baits used.") public File AMPLICON_INTERVALS; @Option(shortName = "N", doc = "Custom amplicon set name. If not provided it is inferred from the filename of the AMPLICON_INTERVALS intervals.", optional = true) public String CUSTOM_AMPLICON_SET_NAME; /** * @return AMPLICON_INTERVALS */ @Override protected IntervalList getProbeIntervals() { return IntervalList.fromFile(AMPLICON_INTERVALS); } /** * @return CUSTOM_AMPLICON_SET_NAME */ @Override protected String getProbeSetName() { return CUSTOM_AMPLICON_SET_NAME != null ? CUSTOM_AMPLICON_SET_NAME : CollectTargetedMetrics.renderProbeNameFromFile(AMPLICON_INTERVALS); } /** Stock main method. */ public static void main(final String[] argv) { System.exit(new CollectTargetedPcrMetrics().instanceMain(argv)); } @Override protected TargetedPcrMetricsCollector makeCollector(final Set<MetricAccumulationLevel> accumulationLevels, final List<SAMReadGroupRecord> samRgRecords, final ReferenceSequenceFile refFile, final File perTargetCoverage, final IntervalList targetIntervals, final IntervalList probeIntervals, final String probeSetName) { return new TargetedPcrMetricsCollector(accumulationLevels, samRgRecords, refFile, perTargetCoverage, targetIntervals, probeIntervals, probeSetName); } }