Fix scalatest configuration and fix unit tests
Merge pull request #1 from bigdatagenomics/matt-fixtests

Fix scalatest configuration and fix unit tests
Fix the Jenkins test script
Update from Spark 0.7.3 to 0.8.0-incubating
Initial implementation of Base Quality Score Recalibration (BQSR)

This code was written and contributed by Chris Hartl as a
visiting researcher in the UC, Berkeley AMPLab while still an
employee at The Broad Institute. As such, this code contribution
is copyright The Broad Institute and licensed to the ADAM project
under the Apache 2.0 license.

The current version of GATK BQSR code is licensed to both the Broad and to
Appistry and cannot be included in ADAM; however, the original version of
BQSR, which only provides base qualities (BQSRv2 provides qualities
for cigar elements as well), was released open-source. This version
of BQSR is based on the unencumbered version of BQSR with the full
awareness and blessing of The Broad Institute.

This code should be considered an alpha release as it contains some
implementation bugs that need to be worked out (e.g. occasionally a
single node will be swamped with work and crash).
New SparkFunSuite test support class, logging util and new BQSR test.
Merge pull request #4 from bigdatagenomics/matt-tests

New SparkFunSuite test support class, logging util and new BQSR test.
Cleaning up gitignore: adding wildcards for emacs temp files, and adding wildcards to catch BAM/ADAM/VCF files.
Fixes to sorting in ReferencePosition
Merge pull request #8 from genomebridge/fixOptionSorting

Fixes to sorting in ReferencePosition
Modified reads2ref code to fix performance issue. Also, broke code up to add reads2pileups function.
Add vcf2adam command. Add ADAMVariant to schema.
Adding in implicit conversion functions for going between Java and Scala types. Makes pushing data between Scala/Java/Avro a bit cleaner.
Moved record field name enum over to the projections package.
Merge pull request #10 from bigdatagenomics/moving-record-enum

Moved record field name enum over to the projections package.
Missing brackets in VcfConverter.getType

There were missing brackets, I believe, in the method getType in the class VcfConverter,
which caused the VariantType.SV never to be returned correctly.

I've added a test to make sure that all the types are accessible to the getType method, and
I've moved the method itself to an object (since it depends on none of the fields of the
VcfConverter class itself).
Merge pull request #11 from genomebridge/vcfconverter-typo

Missing brackets in VcfConverter.getType
Fixed a bug in AdamContext.adamLoad

See the comment there -- basically, we weren't testing for a subclass
relationship between the type parameter T and ADAMRecord in the right way,
I think?

Added a test to make sure that we can load SAM files correctly.
Merge pull request #12 from genomebridge/subclass-error

Subclass testing bug in AdamContext.adamLoad
Adding support for sequence dictionary extraction and handling.

(1) Adding referenceLength and referenceUrl to the ADAMRecord schema.

ADAMRecord now contains a (flattened) version of the sequence dictionary element
corresponding to each read.

An entire sequence dictionary will be able to be read out of the records associated
with a single BAM or SAM file.

(2) Added SequenceDictionary class

Aggregates a consistent set of SequenceRecord objects into a single dictionary.

SequenceRecords are derived from the reference{Id, Name, Length, Url} fields of the
ADAMRecord.

Most of the work here goes in to providing methods for combining and mapping between
sequence dictionaries, which will be used for cross-BAM or cross-ADAM comparisons.

(3) Extended Bam2Adam to create a SequenceDictionary .dict parquet file

When bam2adam is run on a BAM, we extract the sequence dictionary from the BAM's header
and insert its values into each ADAMRecord.

Also updated the adamBamLoad method in ADAMContext to do something similar, even without
the explicit parquet file.

(4) Adding the ListDict command.

ListDict reads a SequenceDictionary out of a set of ADAMRecords and prints out all the
component SequenceRecord objects contained in it.

(5) Adding the CompareAdam command

CompareAdam is a command that takes two ADAM files as arguments.

It assumes that the same read names are present in *both* input ADAM files --
for example, if the two files were produced by different alignment tools run
on the same set of reads.

It calculates the number of reads that are unique to each ADAM file, as well as
the number of shared reads which have the same alignment position across the two
BAMS.

This position is computed irrespective of the ordering of the Sequences in the
sequence dictionaries of the two ADAM files, and therefore is a useful end-to-end
test of the SequenceDictionary code, as well as being the basis for more useful
pairwise comparisons of ADAM files in the future.

(6) Extending AdamContext with methods to automate the loading of SequenceDictionary
objects out of any conformant Avro schema.