All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.broadinstitute.hellbender.tools.spark.pipelines.CountBasesSpark Maven / Gradle / Ivy

The newest version!
package org.broadinstitute.hellbender.tools.spark.pipelines;

import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.broadinstitute.barclay.argparser.Argument;
import org.broadinstitute.barclay.argparser.CommandLineProgramProperties;
import org.broadinstitute.barclay.help.DocumentedFeature;
import org.broadinstitute.hellbender.cmdline.StandardArgumentDefinitions;
import org.broadinstitute.hellbender.cmdline.programgroups.CoverageAnalysisProgramGroup;
import org.broadinstitute.hellbender.engine.spark.GATKSparkTool;
import org.broadinstitute.hellbender.utils.gcs.BucketUtils;
import org.broadinstitute.hellbender.utils.read.GATKRead;

import java.io.PrintStream;

/**
 * Calculate the overall number of bases SAM/BAM/CRAM file
 *
 * 

Input

*
    *
  • A single BAM file
  • *
* *

Output

*
    *
  • A text file containing number of bases
  • *
* *

Example

* *

Output base count to file

*
 *   gatk CountBasesSpark \
 *     -I input_reads.bam \
 *     -O base_count.txt
 * 
* *

Print base count

*
 *     gatk CountBasesSpark \
 *       -I input_reads.bam
 * 
*/ @CommandLineProgramProperties( summary = "Counts bases in the input SAM/BAM", oneLineSummary = "Counts bases in the input SAM/BAM", programGroup = CoverageAnalysisProgramGroup.class ) @DocumentedFeature public final class CountBasesSpark extends GATKSparkTool { private static final long serialVersionUID = 1L; @Override public boolean requiresReads() { return true; } @Argument( doc = "uri for the output file: a local file path", shortName = StandardArgumentDefinitions.OUTPUT_SHORT_NAME, fullName = StandardArgumentDefinitions.OUTPUT_LONG_NAME, optional = true ) public String out; @Override protected void runTool(final JavaSparkContext ctx) { final JavaRDD reads = getReads(); final long count = reads.map(r -> (long)r.getLength()).fold(0L, Long::sum); System.out.println(count); if( out != null) { try ( final PrintStream ps = new PrintStream(BucketUtils.createFile(out)) ) { ps.print(count); } } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy