I started a port of the Picard Genomics library of the Broad Institute (Harvard/MIT) to Scala.
Keats is a Scala port of the Picard library of the Broad Institute of Harvard and MIT. Picard is one of the most advanced and widely used libraries for representation and processing of Genomic data from BAM, VCF and BCF files. http://picard.sourceforge.net/
The goal of the port is to use the advanced language features of Scala to make the library easier to understand / use and more scalabe for use in Genomics research. A personal side goal is to increase my knowledge of Scala and advanced data structure representation of Genomic variation.
See Coursera Functional Programming Principles in Scala for the advanced Scala features. https://www.coursera.org/course/progfun
And of course Akka http://akka.io/
I already ported the core genomic data representation classes : VariantContext, Allele(Context) and Genotype(Context). Porting can be done class by class and existing unit tests are reused. This is possible because Java and Scala are compatible. I am now working on making the vcf/bcf codec, reader and writer threadsafe.
Keats is a work in progress and not yet ready for use.
The code is MIT license.
Feel free to fork (parts of) the project or help with porting the code to Scala.
Github project: https://github.com/WimS83/Keats/blob/master/README.md
At this moment the project is kind of a research project aimed at people who are also interested in Scala development and the functionality of Picard. For this target group it is easiest to clone the github project (https://github.com/WimS83/Keats.git) into their IDE. I highly recommend IntelliJ as the IDE, but Netbeans also works.
You also need to install the Scala binaries ( http://www.scala-lang.org/download/ ) and install the Scala plugin in your IDE of choice.
All the Unit test and testdata of Picard are included in the github project. From inside the IDE you can run the Unit test, and based on the examples of the functionality in the Unit test, you can create your own small programs inside the IDE.
As the project matures a bit more I will look at packaging and distribution of the compiled binary version of the software.
At that time the software can hopefully be used as a drop in replacement for a (subset) of the functionality of Picard.
To sum the last few points, Keats is not yet end user ready software, but aimed at developers interested in Scala and the functionality of Picard.