Skip to content

Commit

Permalink
merge in upstream
Browse files Browse the repository at this point in the history
  • Loading branch information
ryan-williams committed Apr 6, 2017
2 parents 473b3d0 + 9505d47 commit bba1a63
Show file tree
Hide file tree
Showing 3 changed files with 123 additions and 3 deletions.
5 changes: 2 additions & 3 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ enableScalariform

hadoopVersion := "2.7.3"

testDeps += "org.mockito" % "mockito-core" % "1.10.19"
testDeps += "org.mockito" % "mockito-core" % "2.6.4"

testJarTestDeps += (libs.value('bdg_utils_misc) exclude("org.apache.spark", "*"))

Expand All @@ -29,9 +29,8 @@ deps ++= Seq(
libs.value('parquet_avro),
libs.value('paths),
libs.value('spark_util),
"com.netflix.servo" % "servo-core" % "0.10.0",
"it.unimi.dsi" % "fastutil" % "6.6.5",
"org.apache.avro" % "avro" % "1.8.0",
"org.apache.avro" % "avro" % "1.8.1",
"org.apache.httpcomponents" % "httpclient" % "4.5.2",
"org.apache.parquet" % "parquet-scala_2.10" % "1.8.1" exclude("org.scala-lang", "scala-library")
)
Expand Down
7 changes: 7 additions & 0 deletions src/main/scala/org/bdgenomics/adam/models/Coverage.scala
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ private[adam] object Coverage {
* @return Coverage spanning the specified feature
*/
def apply(feature: Feature): Coverage = {
require(feature.getContigName != null && feature.getContigName.length > 0,
"Features must have Contig name to convert to Coverage")
require(feature.getStart != null && feature.getEnd != null,
"Features must have valid position data to convert to Coverage")
require(feature.getScore != null,
"Features must have valid score to convert to Coverage")

Coverage(feature.getContigName,
feature.getStart,
feature.getEnd,
Expand Down
114 changes: 114 additions & 0 deletions src/test/scala/org/bdgenomics/adam/models/CoverageSuite.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
/**
* Licensed to Big Data Genomics (BDG) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The BDG licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.bdgenomics.adam.models

import org.bdgenomics.adam.util.ADAMFunSuite
import org.bdgenomics.formats.avro.Feature

class CoverageSuite
extends ADAMFunSuite {

test("Convert to coverage from valid Feature") {
// create a valid feature
val featureToConvert =
Feature.newBuilder()
.setContigName("chr1")
.setStart(1)
.setEnd(2)
.setScore(100)
.build()

val coverageAfterConversion = Coverage(featureToConvert)

// all fields should match between the two
assert(coverageAfterConversion.start == featureToConvert.start)
assert(coverageAfterConversion.end == featureToConvert.end)
assert(coverageAfterConversion.contigName === featureToConvert.getContigName)
assert(coverageAfterConversion.count == featureToConvert.score)
}

test("Convert to coverage from Feature with null/empty contigName fails with correct error") {
// feature with empty contigname is not valid when converting to Coverage
val featureWithEmptyContigName =
Feature.newBuilder()
.setContigName("")
.setStart(1)
.setEnd(2)
.setScore(100)
.build()

val caughtWithEmptyContigName =
intercept[IllegalArgumentException](Coverage(featureWithEmptyContigName))

assert(caughtWithEmptyContigName.getMessage == "requirement failed: Features must have Contig name to convert to Coverage")
// feature without contigname is not valid when converting to Coverage
val featureWithNullContigName =
Feature.newBuilder()
.setStart(1)
.setEnd(2)
.setScore(100)
.build()

val caughtWithNullContigName =
intercept[IllegalArgumentException](Coverage(featureWithNullContigName))

assert(caughtWithNullContigName.getMessage == "requirement failed: Features must have Contig name to convert to Coverage")
}

test("Convert to coverage from Feature with no start/end position fails with correct error") {
// feature without start position is invalid when converting to Coverage
val featureWithoutStartPosition =
Feature.newBuilder()
.setContigName("chr1")
.setEnd(2)
.setScore(100)
.build()

val caughtWithoutStartPosition =
intercept[IllegalArgumentException](Coverage(featureWithoutStartPosition))

assert(caughtWithoutStartPosition.getMessage == "requirement failed: Features must have valid position data to convert to Coverage")
// feature without end position is invalid when converting to Coverage
val featureWithoutEndPosition =
Feature.newBuilder()
.setContigName("chr1")
.setStart(1)
.setScore(100)
.build()

val caughtWithoutEndPosition =
intercept[IllegalArgumentException](Coverage(featureWithoutEndPosition))

assert(caughtWithoutEndPosition.getMessage == "requirement failed: Features must have valid position data to convert to Coverage")
}

test("Convert to coverage from Feature with no score fails with correct error") {
// feature without score is invalid when converting to Coverage
val featureWithoutScore =
Feature.newBuilder()
.setContigName("chr1")
.setStart(1)
.setEnd(2)
.build()

val caughtWithoutScore =
intercept[IllegalArgumentException](Coverage(featureWithoutScore))

assert(caughtWithoutScore.getMessage == "requirement failed: Features must have valid score to convert to Coverage")
}
}

0 comments on commit bba1a63

Please sign in to comment.