Skip to content

Commit

Permalink
[ADAM-1227] Fix NPE when computing coverage on RDDs with unmapped reads.
Browse files Browse the repository at this point in the history
Resolves #1227. Filters out unmapped reads before counting coverage.
  • Loading branch information
fnothaft authored and heuermh committed Nov 2, 2016
1 parent 4ccd492 commit 4d2191e
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 2 deletions.
Expand Up @@ -64,7 +64,7 @@ class Reads2Coverage(protected val args: Reads2CoverageArgs) extends BDGSparkCom

def run(sc: SparkContext): Unit = {

val proj = Projection(contigName, start, end, cigar)
val proj = Projection(readMapped, contigName, start, end, cigar)

// If saving strand specific coverage, require that only one direction is specified
require(!(args.onlyNegativeStrands && args.onlyPositiveStrands),
Expand Down
Expand Up @@ -98,7 +98,17 @@ sealed trait AlignmentRecordRDD extends AvroReadGroupGenomicRDD[AlignmentRecord,
def toCoverage(collapse: Boolean = true): CoverageRDD = {
val covCounts =
rdd.rdd
.flatMap(r => {
.filter(r => {
val readMapped = r.getReadMapped

// validate alignment fields
if (readMapped) {
require(r.getStart != null && r.getEnd != null && r.getContigName != null,
"Read was mapped but was missing alignment start/end/contig (%s).".format(r))
}

readMapped
}).flatMap(r => {
val t: List[Long] = List.range(r.getStart, r.getEnd)
t.map(n => (ReferenceRegion(r.getContigName, n, n + 1), 1))
}).reduceByKey(_ + _)
Expand Down
Expand Up @@ -85,6 +85,17 @@ class AlignmentRecordRDDSuite extends ADAMFunSuite {
assert(expectedSortedReads === mapped)
}

sparkTest("coverage does not fail on unmapped reads") {
val inputPath = testFile("unmapped.sam")
val reads: AlignmentRecordRDD = sc.loadAlignments(inputPath)
.transform(rdd => {
rdd.filter(!_.getReadMapped)
})

val coverage = reads.toCoverage()
assert(coverage.rdd.count === 0)
}

sparkTest("computes coverage") {
val inputPath = testFile("artificial.sam")
val reads: AlignmentRecordRDD = sc.loadAlignments(inputPath)
Expand Down

0 comments on commit 4d2191e

Please sign in to comment.