gatk-3.8/java/lib/edu/mit/broad/picard/directed/CalculateHsMetrics.java

52 lines
1.7 KiB
Java

package edu.mit.broad.picard.directed;
import edu.mit.broad.picard.cmdline.CommandLineProgram;
import edu.mit.broad.picard.cmdline.Option;
import edu.mit.broad.picard.cmdline.Usage;
import edu.mit.broad.picard.io.IoUtil;
import edu.mit.broad.picard.metrics.MetricsFile;
import edu.mit.broad.sam.SAMFileReader;
import java.io.File;
/**
* Calculates a set of HS metrics from a sam or bam file.
*
* @author Tim Fennell
*/
public class CalculateHsMetrics extends CommandLineProgram {
@Usage public final String USAGE =
"Calculates a set of Hybrid Selection specific metrics from an aligned SAM" +
"or BAM file.";
@Option(shortName="BI") public File BAIT_INTERVALS;
@Option(shortName="TI") public File TARGET_INTERVALS;
@Option(shortName="I") public File INPUT;
@Option(shortName="M") public File METRICS_FILE;
/** Stock main method. */
public static void main(String[] argv) {
System.exit(new CalculateHsMetrics().instanceMain(argv));
}
/**
* Asserts that files are readable and writable and then fires off an
* HsMetricsCalculator instance to do the real work.
*/
protected int doWork() {
IoUtil.assertFileIsReadable(BAIT_INTERVALS);
IoUtil.assertFileIsReadable(TARGET_INTERVALS);
IoUtil.assertFileIsReadable(INPUT);
IoUtil.assertFileIsWritable(METRICS_FILE);
HsMetricsCalculator calculator = new HsMetricsCalculator(BAIT_INTERVALS, TARGET_INTERVALS);
SAMFileReader sam = new SAMFileReader(INPUT);
calculator.analyze(sam.iterator());
MetricsFile<HsMetrics, Integer> metrics = getMetricsFile();
metrics.addMetric(calculator.getMetrics());
metrics.write(METRICS_FILE);
return 0;
}
}