Skip to content

Commit

Permalink
upgrade plugin, spark-tests, kryo reg
Browse files Browse the repository at this point in the history
  • Loading branch information
ryan-williams committed Dec 10, 2017
1 parent 4c7564e commit f8c0328
Show file tree
Hide file tree
Showing 15 changed files with 62 additions and 65 deletions.
15 changes: 7 additions & 8 deletions build.sbt
@@ -1,22 +1,21 @@

organization := "org.hammerlab.genomics"
name := "loci"
version := "2.0.1"
r"2.0.1"

addSparkDeps

deps ++= Seq(
dep(
args4j,
args4s % "1.3.0",
args4s % "1.3.0",
htsjdk,
iterators % "1.3.0",
paths % "1.2.0",
iterators % "1.3.0",
paths % "1.2.0",
reference % "1.4.0" + testtest,
scalautils,
spark_util % "2.0.1",
string_utils % "1.2.0"
)

compileAndTestDeps += reference % "1.4.0"

// Shade Guava due to use of RangeSet classes from 16.0.1 that don't exist in Spark/Hadoop's Guava 11.0.2.
shadedDeps += guava

Expand Down
2 changes: 1 addition & 1 deletion project/build.properties
@@ -1 +1 @@
sbt.version=0.13.13
sbt.version=1.0.4
2 changes: 1 addition & 1 deletion project/plugins.sbt
@@ -1 +1 @@
addSbtPlugin("org.hammerlab" % "sbt-parent" % "3.1.0")
addSbtPlugin("org.hammerlab" % "sbt-parent" % "4.0.0-SNAPSHOT")
4 changes: 4 additions & 0 deletions src/main/scala/org/hammerlab/genomics/loci/map/Contig.scala
Expand Up @@ -121,4 +121,8 @@ object Contig {
}

def lociRange(start: Locus, end: Locus): JRange[Locus] = JRange.closedOpen[Locus](start, end)

import org.hammerlab.kryo._
implicit val serializer = new ContigSerializer[Nothing]
implicit val alsoRegister = AlsoRegister[Contig[Nothing]](cls[ContigName])
}
5 changes: 5 additions & 0 deletions src/main/scala/org/hammerlab/genomics/loci/map/LociMap.scala
Expand Up @@ -94,4 +94,9 @@ object LociMap {
contigs.map(contig => contig.name -> contig).toSeq: _*
)
)

import com.esotericsoftware.kryo
import org.hammerlab.kryo._
implicit val serializer: kryo.Serializer[LociMap[Nothing]] = new Serializer[Nothing]
implicit val alsoRegister = AlsoRegister[LociMap[Nothing]](arr[Contig[Nothing]])
}
16 changes: 0 additions & 16 deletions src/main/scala/org/hammerlab/genomics/loci/map/Registrar.scala

This file was deleted.

@@ -1,22 +1,23 @@
package org.hammerlab.genomics.loci.map

import com.esotericsoftware.kryo
import com.esotericsoftware.kryo.Kryo
import com.esotericsoftware.kryo.io.{ Input, Output }
import com.esotericsoftware.kryo.{ Kryo, Serializer KryoSerializer }

/**
* We serialize a LociMap simply by writing out all of its Contigs.
*/
class Serializer[T] extends KryoSerializer[LociMap[T]] {
class Serializer[T] extends kryo.Serializer[LociMap[T]] {
def write(kryo: Kryo, output: Output, obj: LociMap[T]) = {
output.writeLong(obj.contigs.size)
obj.contigs.foreach(contig =>
obj.contigs.foreach(contig
kryo.writeObject(output, contig)
)
}

def read(kryo: Kryo, input: Input, klass: Class[LociMap[T]]): LociMap[T] = {
val count: Long = input.readLong()
val contigs = (0L until count).map(i =>
val contigs = (0L until count).map(i
kryo.readObject(input, classOf[Contig[T]])
)
LociMap.fromContigs(contigs)
Expand Down
4 changes: 4 additions & 0 deletions src/main/scala/org/hammerlab/genomics/loci/set/Contig.scala
Expand Up @@ -113,4 +113,8 @@ object Contig {
)

def lociRange(start: Locus, end: Locus): JRange[Locus] = closedOpen[Locus](start, end)

import org.hammerlab.kryo._
implicit val serializer = new ContigSerializer
implicit val alsoRegister = AlsoRegister[Contig](cls[ContigName])
}
Expand Up @@ -6,7 +6,7 @@ import com.google.common.collect.{ TreeRangeSet, Range ⇒ JRange }
import JRange.closedOpen
import org.hammerlab.genomics.reference.{ ContigName, Interval, Locus }

// We serialize a LociSet simply by writing out its constituent Contigs.
/** Serialize a [[LociSet]] simply by writing out its [[Contig]]s. */
class ContigSerializer extends KryoSerializer[Contig] {

def write(kryo: Kryo, output: Output, obj: Contig) = {
Expand Down
18 changes: 18 additions & 0 deletions src/main/scala/org/hammerlab/genomics/loci/set/LociSet.scala
@@ -1,5 +1,7 @@
package org.hammerlab.genomics.loci.set

import com.esotericsoftware.kryo.io.{ Input, Output }
import com.esotericsoftware.kryo.{ Kryo, Serializer }
import htsjdk.samtools.util.{ Interval HTSJDKInterval }
import org.hammerlab.genomics.loci.parsing.{ All, LociRange, LociRanges, ParsedLoci }
import org.hammerlab.genomics.reference.ContigName.Factory
Expand Down Expand Up @@ -175,4 +177,20 @@ object LociSet {
}
}
)

// We just serialize the underlying contigs, which contain their names which are the string keys of LociSet.map.
implicit val serializer =
new Serializer[LociSet] {
def write(kryo: Kryo, output: Output, obj: LociSet) = {
kryo.writeObject(output, obj.contigs)
}

def read(kryo: Kryo, input: Input, klass: Class[LociSet]): LociSet = {
val contigs = kryo.readObject(input, classOf[Array[Contig]])
LociSet.fromContigs(contigs)
}
}

import org.hammerlab.kryo._
implicit val alsoRegister = AlsoRegister[LociSet](arr[Contig])
}
16 changes: 0 additions & 16 deletions src/main/scala/org/hammerlab/genomics/loci/set/Registrar.scala

This file was deleted.

11 changes: 0 additions & 11 deletions src/main/scala/org/hammerlab/genomics/loci/set/Serializer.scala
Expand Up @@ -3,14 +3,3 @@ package org.hammerlab.genomics.loci.set
import com.esotericsoftware.kryo.io.{ Input, Output }
import com.esotericsoftware.kryo.{ Kryo, Serializer KryoSerializer }

// We just serialize the underlying contigs, which contain their names which are the string keys of LociSet.map.
class Serializer extends KryoSerializer[LociSet] {
def write(kryo: Kryo, output: Output, obj: LociSet) = {
kryo.writeObject(output, obj.contigs)
}

def read(kryo: Kryo, input: Input, klass: Class[LociSet]): LociSet = {
val contigs = kryo.readObject(input, classOf[Array[Contig]])
LociSet.fromContigs(contigs)
}
}
Expand Up @@ -6,10 +6,14 @@ import org.hammerlab.genomics.reference.{ ContigName, Locus }
import org.hammerlab.spark.test.suite.{ KryoSparkSuite, SparkSerialization }

class SerializerSuite
extends KryoSparkSuite(classOf[Registrar])
extends KryoSparkSuite
with SparkSerialization
with ClearContigNames {

register(
classOf[LociMap[Nothing]]
)

def check(
ranges: (ContigName, Locus, Locus, String)*
)(
Expand Down
Expand Up @@ -6,18 +6,20 @@ import org.hammerlab.genomics.reference.test.LociConversions._
import org.hammerlab.genomics.reference.test.{ ClearContigNames, ContigLengthsUtil, ContigNameConversions }
import org.hammerlab.genomics.reference.{ ContigLengths, ContigName, Locus, NumLoci }
import org.hammerlab.spark.test.suite.KryoSparkSuite
import org.hammerlab.kryo._

import scala.collection.mutable

class LociSetSuite
extends KryoSparkSuite(classOf[Registrar])
extends KryoSparkSuite
with LociSetUtil
with ContigNameConversions
with ClearContigNames
with ContigLengthsUtil {

// "loci set invariants" collects some LociSets
register(
arr[LociSet],
classOf[mutable.WrappedArray.ofRef[_]]
)

Expand Down
Expand Up @@ -8,12 +8,13 @@ import org.hammerlab.genomics.reference.ContigName.Factory
import org.hammerlab.genomics.reference.test.LociConversions._
import org.hammerlab.genomics.reference.test.{ ClearContigNames, LenientContigNameConversions }
import org.hammerlab.genomics.reference.{ Locus, PermissiveRegistrar }
import org.hammerlab.kryo._
import org.hammerlab.spark.test.suite.{ KryoSparkSuite, SparkSerialization }

import scala.collection.mutable

class SerializerSuite
extends KryoSparkSuite(classOf[Registrar], referenceTracking = true)
extends KryoSparkSuite(referenceTracking = true)
with SparkSerialization
with LenientContigNameConversions
with ClearContigNames
Expand All @@ -23,14 +24,16 @@ class SerializerSuite
import Helpers._

register(
arr[LociSet],

// "a closure that includes a LociSet" parallelizes some Range[Long]s.
classOf[Range],
classOf[Array[Locus]],
cls[Range],
cls[Array[Locus]],

// "make an RDD[LociSet] and an RDD[Contig]" collects some Strings.
classOf[Array[String]],
cls[Array[String]],

classOf[mutable.WrappedArray.ofRef[_]],
cls[mutable.WrappedArray.ofRef[_]],

PermissiveRegistrar
)
Expand Down

0 comments on commit f8c0328

Please sign in to comment.