diff --git a/adam-cli/src/main/scala/org/bdgenomics/adam/cli/Transform.scala b/adam-cli/src/main/scala/org/bdgenomics/adam/cli/Transform.scala index d0a64d89ea..e403432f5a 100644 --- a/adam-cli/src/main/scala/org/bdgenomics/adam/cli/Transform.scala +++ b/adam-cli/src/main/scala/org/bdgenomics/adam/cli/Transform.scala @@ -77,6 +77,10 @@ class TransformArgs extends Args4jBase with ADAMSaveAnyArgs with ParquetArgs { var lodThreshold = 5.0 @Args4jOption(required = false, name = "-max_target_size", usage = "The maximum length of a target region to attempt realigning. Default length is 3000.") var maxTargetSize = 3000 + @Args4jOption(required = false, name = "-max_reads_per_target", usage = "The maximum number of reads attached to a target considered for realignment. Default is 20000.") + var maxReadsPerTarget = 20000 + @Args4jOption(required = false, name = "-reference", usage = "Path to a reference file to use for indel realignment.") + var reference: String = null @Args4jOption(required = false, name = "-repartition", usage = "Set the number of partitions to map data to") var repartition: Int = -1 @Args4jOption(required = false, name = "-coalesce", usage = "Set the number of partitions written to the ADAM output directory") @@ -161,7 +165,8 @@ class Transform(protected val args: TransformArgs) extends BDGSparkCommand[Trans * Else, we generate candidate INDELs from the reads and then realign. If * -realign_indels is not set, we return the input RDD. */ - private def maybeRealign(rdd: AlignmentRecordRDD, + private def maybeRealign(sc: SparkContext, + rdd: AlignmentRecordRDD, sl: StorageLevel): AlignmentRecordRDD = { if (args.locallyRealign) { @@ -178,6 +183,12 @@ class Transform(protected val args: TransformArgs) extends BDGSparkCommand[Trans ConsensusGenerator.fromKnownIndels(rdd.rdd.context.loadVariants(file)) }) + // optionally load a reference + val optReferenceFile = Option(args.reference).map(f => { + sc.loadReferenceFile(f, + fragmentLength = args.mdTagsFragmentSize) + }) + // run realignment val realignmentRdd = rdd.realignIndels( consensusGenerator, @@ -185,7 +196,9 @@ class Transform(protected val args: TransformArgs) extends BDGSparkCommand[Trans args.maxIndelSize, args.maxConsensusNumber, args.lodThreshold, - args.maxTargetSize + args.maxTargetSize, + args.maxReadsPerTarget, + optReferenceFile = optReferenceFile ) // unpersist our input, if persisting was requested @@ -340,7 +353,7 @@ class Transform(protected val args: TransformArgs) extends BDGSparkCommand[Trans val maybeDedupedRdd = maybeDedupe(initialRdd) // once we've deduped our reads, maybe realign them - val maybeRealignedRdd = maybeRealign(maybeDedupedRdd, sl) + val maybeRealignedRdd = maybeRealign(sc, maybeDedupedRdd, sl) // run BQSR val maybeRecalibratedRdd = maybeRecalibrate(maybeRealignedRdd, sl) diff --git a/adam-core/src/main/scala/org/bdgenomics/adam/algorithms/consensus/Consensus.scala b/adam-core/src/main/scala/org/bdgenomics/adam/algorithms/consensus/Consensus.scala index 7a40151f2f..132e7ec9ef 100644 --- a/adam-core/src/main/scala/org/bdgenomics/adam/algorithms/consensus/Consensus.scala +++ b/adam-core/src/main/scala/org/bdgenomics/adam/algorithms/consensus/Consensus.scala @@ -62,8 +62,8 @@ private[adam] object Consensus extends Serializable { case CigarOperator.I => Some(new Consensus(sequence.substring(readPos, readPos + cigarElement.getLength), ReferenceRegion(start.referenceName, - referencePos, - referencePos + 1))) + referencePos - 1, + referencePos))) case CigarOperator.D => Some(new Consensus("", ReferenceRegion(start.referenceName, referencePos, @@ -111,9 +111,14 @@ private[adam] case class Consensus(consensus: String, index: ReferenceRegion) { "Consensus not contained in reference region: %s vs. %s.".format( index, rr)) - "%s%s%s".format(reference.substring(0, (index.start - rr.start).toInt), - consensus, - reference.substring((index.end - 1 - rr.start).toInt)) + if (consensus.isEmpty) { + "%s%s".format(reference.substring(0, (index.start - rr.start).toInt), + reference.substring((index.end - rr.start - 1).toInt)) + } else { + "%s%s%s".format(reference.substring(0, (index.start - rr.start + 1).toInt), + consensus, + reference.substring((index.end - rr.start).toInt)) + } } override def toString: String = { diff --git a/adam-core/src/main/scala/org/bdgenomics/adam/instrumentation/Timers.scala b/adam-core/src/main/scala/org/bdgenomics/adam/instrumentation/Timers.scala index af20ed8836..2e79726d4a 100644 --- a/adam-core/src/main/scala/org/bdgenomics/adam/instrumentation/Timers.scala +++ b/adam-core/src/main/scala/org/bdgenomics/adam/instrumentation/Timers.scala @@ -66,7 +66,11 @@ object Timers extends Metrics { val MapTargets = timer("Map Targets") val RealignTargetGroup = timer("Realign Target Group") val GetReferenceFromReads = timer("Get Reference From Reads") + val GetReferenceFromFile = timer("Get Reference From File") + val ComputingOriginalScores = timer("Computing Original Mismatch Scores") + val SweepReadsOverConsensus = timer("Sweeping Reads Over A Single Consensus") val SweepReadOverReferenceForQuality = timer("Sweep Read Over Reference For Quality") + val FinalizingRealignments = timer("Finalizing Realignments") // Sort Reads val SortReads = timer("Sort Reads") diff --git a/adam-core/src/main/scala/org/bdgenomics/adam/models/MdTag.scala b/adam-core/src/main/scala/org/bdgenomics/adam/models/MdTag.scala index 043d849bcc..2c9c7c5f47 100644 --- a/adam-core/src/main/scala/org/bdgenomics/adam/models/MdTag.scala +++ b/adam-core/src/main/scala/org/bdgenomics/adam/models/MdTag.scala @@ -208,7 +208,8 @@ object MdTag { // dirty dancing to recalculate match sets for (i <- 0 until cigarElement.getLength) { - if (reference(referencePos) == sequence(readPos)) { + if (reference(referencePos) == + sequence(readPos)) { if (!inMatch) { rangeStart = referencePos.toLong inMatch = true @@ -439,10 +440,15 @@ case class MdTag( * Given a read, returns the reference. * * @param read A read for which one desires the reference sequence. + * @param withGaps If true, applies INDEL gaps to the reference. Else, returns + * the raw reference sequence. * @return A string corresponding to the reference overlapping this read. */ - def getReference(read: RichAlignmentRecord): String = { - getReference(read.getSequence, read.samtoolsCigar, read.getStart) + def getReference(read: RichAlignmentRecord, withGaps: Boolean = false): String = { + getReferenceSequence(read.getSequence, + read.samtoolsCigar, + read.getStart, + withGaps = withGaps) } /** @@ -451,9 +457,14 @@ case class MdTag( * @param readSequence The base sequence of the read. * @param cigar The cigar for the read. * @param referenceFrom The starting point of this read alignment vs. the reference. + * @param withGaps If true, applies INDEL gaps to the reference. Else, returns + * the raw reference sequence. * @return A string corresponding to the reference overlapping this read. */ - def getReference(readSequence: String, cigar: Cigar, referenceFrom: Long): String = { + private def getReferenceSequence(readSequence: String, + cigar: Cigar, + referenceFrom: Long, + withGaps: Boolean = false): String = { var referencePos = start var readPos = 0 @@ -476,22 +487,28 @@ case class MdTag( } } case CigarOperator.D => { - // if a delete, get from the delete pool - for (i <- 0 until cigarElement.getLength) { - reference += { - deletions.get(referencePos) match { - case Some(base) => base - case _ => throw new IllegalStateException("Could not find deleted base at cigar offset " + i) + if (!withGaps) { + // if a delete, get from the delete pool + for (i <- 0 until cigarElement.getLength) { + reference += { + deletions.get(referencePos) match { + case Some(base) => base + case _ => throw new IllegalStateException("Could not find deleted base at cigar offset " + i) + } } + referencePos += 1 } - - referencePos += 1 + } else { + referencePos += cigarElement.getLength } } case _ => { - // ignore inserts if (cigarElement.getOperator.consumesReadBases) { - readPos += cigarElement.getLength + val insLength = cigarElement.getLength + if (withGaps) { + reference += ("_" * insLength) + } + readPos += insLength } if (cigarElement.getOperator.consumesReferenceBases) { throw new IllegalArgumentException("Cannot handle operator: " + cigarElement.getOperator) diff --git a/adam-core/src/main/scala/org/bdgenomics/adam/rdd/read/AlignmentRecordRDD.scala b/adam-core/src/main/scala/org/bdgenomics/adam/rdd/read/AlignmentRecordRDD.scala index ae640b56ff..2ef4dccb37 100644 --- a/adam-core/src/main/scala/org/bdgenomics/adam/rdd/read/AlignmentRecordRDD.scala +++ b/adam-core/src/main/scala/org/bdgenomics/adam/rdd/read/AlignmentRecordRDD.scala @@ -654,6 +654,8 @@ case class AlignmentRecordRDD( * are only finalized if the log-odds threshold is exceeded. * @param maxTargetSize The maximum width of a single target region for * realignment. + * @param optReferenceFile An optional reference. If not provided, reference + * will be inferred from MD tags. * @return Returns an RDD of mapped reads which have been realigned. */ def realignIndels( @@ -662,8 +664,10 @@ case class AlignmentRecordRDD( maxIndelSize: Int = 500, maxConsensusNumber: Int = 30, lodThreshold: Double = 5.0, - maxTargetSize: Int = 3000): AlignmentRecordRDD = RealignIndelsInDriver.time { - replaceRdd(RealignIndels(rdd, consensusModel, isSorted, maxIndelSize, maxConsensusNumber, lodThreshold)) + maxTargetSize: Int = 3000, + maxReadsPerTarget: Int = 20000, + optReferenceFile: Option[ReferenceFile] = None): AlignmentRecordRDD = RealignIndelsInDriver.time { + replaceRdd(RealignIndels(rdd, consensusModel, isSorted, maxIndelSize, maxConsensusNumber, lodThreshold, maxTargetSize, maxReadsPerTarget)) } /** diff --git a/adam-core/src/main/scala/org/bdgenomics/adam/rdd/read/realignment/IndelRealignmentTarget.scala b/adam-core/src/main/scala/org/bdgenomics/adam/rdd/read/realignment/IndelRealignmentTarget.scala index 183c798f1e..ede5dbac96 100644 --- a/adam-core/src/main/scala/org/bdgenomics/adam/rdd/read/realignment/IndelRealignmentTarget.scala +++ b/adam-core/src/main/scala/org/bdgenomics/adam/rdd/read/realignment/IndelRealignmentTarget.scala @@ -28,20 +28,6 @@ import org.bdgenomics.adam.instrumentation.Timers._ import scala.collection.JavaConversions._ import scala.collection.immutable.TreeSet -private[realignment] object ZippedTargetOrdering extends Ordering[(IndelRealignmentTarget, Int)] { - - /** - * Order two indel realignment targets by earlier starting position. - * - * @param a Indel realignment target to compare. - * @param b Indel realignment target to compare. - * @return Comparison done by starting position. - */ - def compare(a: (IndelRealignmentTarget, Int), b: (IndelRealignmentTarget, Int)): Int = { - TargetOrdering.compare(a._1, b._1) - } -} - private[realignment] object TargetOrdering extends Ordering[IndelRealignmentTarget] { /** @@ -65,7 +51,7 @@ private[realignment] object TargetOrdering extends Ordering[IndelRealignmentTarg } /** - * Compares a read to an indel realignment target to see if it starts before the start of the indel realignment target. + * Compares a read to an indel realignment target to see if the target is before the read. * * @param target Realignment target to compare. * @param read Read to compare. @@ -217,27 +203,22 @@ private[adam] class TargetSetSerializer extends Serializer[TargetSet] { } } -private[adam] class ZippedTargetSetSerializer extends Serializer[ZippedTargetSet] { +private[adam] class IndelRealignmentTargetArraySerializer extends Serializer[Array[IndelRealignmentTarget]] { - val irts = new IndelRealignmentTargetSerializer() + private val irts = new IndelRealignmentTargetSerializer - def write(kryo: Kryo, output: Output, obj: ZippedTargetSet) = { - output.writeInt(obj.set.size) - obj.set.foreach(innerObj => { - irts.write(kryo, output, innerObj._1) - output.writeInt(innerObj._2) - }) + def write(kryo: Kryo, output: Output, obj: Array[IndelRealignmentTarget]) = { + output.writeInt(obj.length) + obj.foreach(irts.write(kryo, output, _)) } - def read(kryo: Kryo, input: Input, klazz: Class[ZippedTargetSet]): ZippedTargetSet = { - val size = input.readInt() - val array = new Array[(IndelRealignmentTarget, Int)](size) - (0 until size).foreach(i => { - val target = irts.read(kryo, input, classOf[IndelRealignmentTarget]) - val idx = input.readInt() - array(i) = (target, idx) + def read(kryo: Kryo, input: Input, klazz: Class[Array[IndelRealignmentTarget]]): Array[IndelRealignmentTarget] = { + val arrSize = input.readInt() + val arr = new Array[IndelRealignmentTarget](arrSize) + (0 until arrSize).foreach(idx => { + arr(idx) = irts.read(kryo, input, classOf[IndelRealignmentTarget]) }) - new ZippedTargetSet(TreeSet(array: _*)(ZippedTargetOrdering)) + arr } } @@ -247,9 +228,6 @@ private[realignment] object TargetSet { } } -// These two case classes are needed to get around some serialization issues +// this case class is needed to get around some serialization issues (type erasure) private[adam] case class TargetSet(set: TreeSet[IndelRealignmentTarget]) extends Serializable { } - -private[adam] case class ZippedTargetSet(set: TreeSet[(IndelRealignmentTarget, Int)]) extends Serializable { -} diff --git a/adam-core/src/main/scala/org/bdgenomics/adam/rdd/read/realignment/ModPartitioner.scala b/adam-core/src/main/scala/org/bdgenomics/adam/rdd/read/realignment/ModPartitioner.scala new file mode 100644 index 0000000000..612c9906a7 --- /dev/null +++ b/adam-core/src/main/scala/org/bdgenomics/adam/rdd/read/realignment/ModPartitioner.scala @@ -0,0 +1,32 @@ +/** + * 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.rdd.read.realignment + +import org.apache.spark.Partitioner + +private[realignment] case class ModPartitioner(numPartitions: Int) extends Partitioner { + + def getPartition(key: Any): Int = key match { + case i: Int => { + i.abs % numPartitions + } + case _ => { + throw new IllegalArgumentException("Key %s is not an Int.".format(key)) + } + } +} diff --git a/adam-core/src/main/scala/org/bdgenomics/adam/rdd/read/realignment/RealignIndels.scala b/adam-core/src/main/scala/org/bdgenomics/adam/rdd/read/realignment/RealignIndels.scala index 60c152157f..5b673db438 100644 --- a/adam-core/src/main/scala/org/bdgenomics/adam/rdd/read/realignment/RealignIndels.scala +++ b/adam-core/src/main/scala/org/bdgenomics/adam/rdd/read/realignment/RealignIndels.scala @@ -26,6 +26,7 @@ import org.bdgenomics.adam.models.{ MdTag, ReferencePosition, ReferenceRegion } import org.bdgenomics.adam.rich.RichAlignmentRecord import org.bdgenomics.adam.rich.RichAlignmentRecord._ import org.bdgenomics.adam.instrumentation.Timers._ +import org.bdgenomics.adam.util.ReferenceFile import org.bdgenomics.formats.avro.AlignmentRecord import scala.annotation.tailrec import scala.collection.JavaConversions._ @@ -48,14 +49,18 @@ private[read] object RealignIndels extends Serializable with Logging { maxIndelSize: Int = 500, maxConsensusNumber: Int = 30, lodThreshold: Double = 5.0, - maxTargetSize: Int = 3000): RDD[AlignmentRecord] = { + maxTargetSize: Int = 3000, + maxReadsPerTarget: Int = 20000, + optReferenceFile: Option[ReferenceFile] = None): RDD[AlignmentRecord] = { new RealignIndels( consensusModel, dataIsSorted, maxIndelSize, maxConsensusNumber, lodThreshold, - maxTargetSize + maxTargetSize, + maxReadsPerTarget, + optReferenceFile ).realignIndels(rdd) } @@ -65,89 +70,40 @@ private[read] object RealignIndels extends Serializable with Logging { * * @note Generally, this function shouldn't be called directly---for most cases, prefer mapTargets. * @param read Read to check. - * @param targets Sorted set of realignment targets. + * @param targets Sorted array of realignment targets. * @return If overlapping target is found, returns that target. Else, returns the "empty" target. * * @see mapTargets */ @tailrec final def mapToTarget( read: RichAlignmentRecord, - targets: TreeSet[(IndelRealignmentTarget, Int)]): Int = { + targets: Array[IndelRealignmentTarget], + headIdx: Int, + tailIdx: Int): Int = { // Perform tail call recursive binary search - if (targets.size == 1) { - if (TargetOrdering.contains(targets.head._1, read)) { - // if there is overlap, return the overlapping target - targets.head._2 - } else { - // else, return an empty target (negative index) - // to prevent key skew, split up by max indel alignment length - (-1 - (read.record.getStart / 3000L)).toInt - } + if (TargetOrdering.contains(targets(headIdx), read)) { + // if there is overlap, return the overlapping target + headIdx + } else if (tailIdx - headIdx <= 1) { + // else, return an empty target (negative index) + -read.record.hashCode.abs } else { // split the set and recurse - val (head, tail) = targets.splitAt(targets.size / 2) - val reducedSet = if (TargetOrdering.lt(tail.head._1, read)) { - head + val splitIdx = headIdx + ((tailIdx - headIdx) / 2) + + if (TargetOrdering.contains(targets(splitIdx), read)) { + splitIdx } else { - tail + val (newHeadIdx, newTailIdx) = if (TargetOrdering.lt(targets(splitIdx), read)) { + (splitIdx, tailIdx) + } else { + (headIdx, splitIdx) + } + mapToTarget(read, targets, newHeadIdx, newTailIdx) } - mapToTarget(read, reducedSet) - } - } - - /** - * This method wraps mapToTarget(RichADAMRecord, TreeSet[Tuple2[IndelRealignmentTarget, Int]]) for - * serialization purposes. - * - * @param read Read to check. - * @param targets Wrapped zipped indel realignment target. - * @return Target if an overlapping target is found, else the empty target. - * - * @see mapTargets - */ - def mapToTarget( - read: RichAlignmentRecord, - targets: ZippedTargetSet): Int = { - mapToTarget(read, targets.set) - } - - /** - * Method to map a target index to an indel realignment target. - * - * @note Generally, this function shouldn't be called directly---for most cases, prefer mapTargets. - * @note This function should not be called in a context where target set serialization is needed. - * Instead, call mapToTarget(Int, ZippedTargetSet), which wraps this function. - * - * @param targetIndex Index of target. - * @param targets Set of realignment targets. - * @return Indel realignment target. - * - * @see mapTargets - */ - def mapToTargetUnpacked( - targetIndex: Int, - targets: TreeSet[(IndelRealignmentTarget, Int)]): Option[IndelRealignmentTarget] = { - if (targetIndex < 0) { - None - } else { - Some(targets.filter(p => p._2 == targetIndex).head._1) } } - /** - * Wrapper for mapToTarget(Int, TreeSet[Tuple2[IndelRealignmentTarget, Int]]) for contexts where - * serialization is needed. - * - * @param targetIndex Index of target. - * @param targets Set of realignment targets. - * @return Indel realignment target. - * - * @see mapTargets - */ - def mapToTarget(targetIndex: Int, targets: ZippedTargetSet): Option[IndelRealignmentTarget] = { - mapToTargetUnpacked(targetIndex, targets.set) - } - /** * Maps reads to targets. Wraps both mapToTarget functions together and handles target index creation and broadcast. * @@ -162,22 +118,23 @@ private[read] object RealignIndels extends Serializable with Logging { * * @see mapToTarget */ - def mapTargets(rich_rdd: RDD[RichAlignmentRecord], targets: TreeSet[IndelRealignmentTarget]): RDD[(Option[IndelRealignmentTarget], Iterable[RichAlignmentRecord])] = MapTargets.time { - val tmpZippedTargets = targets.zip(0 until targets.count(t => true)) - var tmpZippedTargets2 = new TreeSet[(IndelRealignmentTarget, Int)]()(ZippedTargetOrdering) - tmpZippedTargets.foreach(t => tmpZippedTargets2 = tmpZippedTargets2 + t) - - val zippedTargets = new ZippedTargetSet(tmpZippedTargets2) + def mapTargets(rich_rdd: RDD[RichAlignmentRecord], targets: Array[IndelRealignmentTarget]): RDD[(Option[(Int, IndelRealignmentTarget)], Iterable[RichAlignmentRecord])] = MapTargets.time { // group reads by target - val broadcastTargets = rich_rdd.context.broadcast(zippedTargets) - val readsMappedToTarget = rich_rdd.groupBy(mapToTarget(_, broadcastTargets.value)) + val broadcastTargets = rich_rdd.context.broadcast(targets) + val targetSize = targets.length + log.info("Mapping reads to %d targets.".format(targetSize)) + val readsMappedToTarget = rich_rdd.groupBy((r: RichAlignmentRecord) => { + mapToTarget(r, broadcastTargets.value, 0, targetSize) + }, ModPartitioner(rich_rdd.partitions.length)) .map(kv => { val (k, v) = kv - val target = mapToTarget(k, broadcastTargets.value) - - (target, v) + if (k < 0) { + (None, v) + } else { + (Some((k, broadcastTargets.value(k))), v) + } }) readsMappedToTarget @@ -230,186 +187,254 @@ private[read] class RealignIndels( val maxIndelSize: Int = 500, val maxConsensusNumber: Int = 30, val lodThreshold: Double = 5.0, - val maxTargetSize: Int = 3000) extends Serializable with Logging { + val maxTargetSize: Int = 3000, + val maxReadsPerTarget: Int = 20000, + val optReferenceFile: Option[ReferenceFile] = None) extends Serializable with Logging { /** * Given a target group with an indel realignment target and a group of reads to realign, this method * generates read consensuses and realigns reads if a consensus leads to a sufficient improvement. * * @param targetGroup A tuple consisting of an indel realignment target and a seq of reads + * @param partitionIdx The ID of the partition this is on. Only used for logging. * @return A sequence of reads which have either been realigned if there is a sufficiently good alternative * consensus, or not realigned if there is not a sufficiently good consensus. */ - def realignTargetGroup(targetGroup: (Option[IndelRealignmentTarget], Iterable[RichAlignmentRecord])): Iterable[RichAlignmentRecord] = RealignTargetGroup.time { + def realignTargetGroup(targetGroup: (Option[(Int, IndelRealignmentTarget)], Iterable[RichAlignmentRecord]), + partitionIdx: Int = 0): Iterable[RichAlignmentRecord] = RealignTargetGroup.time { val (target, reads) = targetGroup if (target.isEmpty) { // if the indel realignment target is empty, do not realign reads + } else if (reads.size > maxReadsPerTarget) { + val (targetIdx, _) = target.get + log.info("Skipping target %d with %d reads (max: %d)...".format( + targetIdx, reads.size, maxReadsPerTarget)) + reads } else { - // bootstrap realigned read set with the reads that need to be realigned - var realignedReads = reads.filter(r => r.mdTag.exists(!_.hasMismatches)) - - // get reference from reads - val (reference, refStart, refEnd) = getReferenceFromReads(reads.map(r => new RichAlignmentRecord(r))) - val refRegion = ReferenceRegion(reads.head.record.getContigName, refStart, refEnd) - - // preprocess reads and get consensus - val readsToClean = consensusModel.preprocessReadsForRealignment( - reads.filter(r => r.mdTag.forall(_.hasMismatches)), - reference, - refRegion - ) - var consensus = consensusModel.findConsensus(readsToClean) - .toSeq - .distinct - - // reduce count of consensus sequences - if (consensus.size > maxConsensusNumber) { - val r = new Random() - consensus = r.shuffle(consensus).take(maxConsensusNumber) - } - - if (readsToClean.size > 0 && consensus.size > 0) { - - // do not check realigned reads - they must match - val totalMismatchSumPreCleaning = readsToClean.map(sumMismatchQuality(_)).sum - - /* list to log the outcome of all consensus trials. stores: - * - mismatch quality of reads against new consensus sequence - * - the consensus sequence itself - * - a map containing each realigned read and it's offset into the new sequence - */ - var consensusOutcomes = List[(Int, Consensus, mutable.Map[RichAlignmentRecord, Int])]() - - // loop over all consensuses and evaluate - consensus.foreach(c => { - - // generate a reference sequence from the consensus - val consensusSequence = c.insertIntoReference(reference, refRegion) - - // evaluate all reads against the new consensus - val sweptValues = readsToClean.map(r => { - val (qual, pos) = sweepReadOverReferenceForQuality(r.getSequence, consensusSequence, r.qualityScores) - val originalQual = sumMismatchQuality(r) - - // if the read's mismatch quality improves over the original alignment, save - // its alignment in the consensus sequence, else store -1 - if (qual <= originalQual) { - (r, (qual, pos)) - } else { - (r, (originalQual, -1)) - } - }) + try { + val (targetIdx, _) = target.get + val startTime = System.nanoTime() + // bootstrap realigned read set with the reads that need to be realigned + val (realignedReads, readsToRealign) = reads.partition(r => r.mdTag.exists(!_.hasMismatches)) + + // get reference from reads + val refStart = reads.map(_.getStart).min + val refEnd = reads.map(_.getEnd).max + val refRegion = ReferenceRegion(reads.head.record.getContigName, refStart, refEnd) + val reference = optReferenceFile.fold(getReferenceFromReads(reads.map(r => new RichAlignmentRecord(r)))._1)(rf => GetReferenceFromFile.time { rf.extract(refRegion) }) + + // preprocess reads and get consensus + val readsToClean = consensusModel.preprocessReadsForRealignment( + readsToRealign, + reference, + refRegion + ).zipWithIndex + val observedConsensus = consensusModel.findConsensus(reads) + .toSeq + .distinct + + // reduce count of consensus sequences + val consensus = if (observedConsensus.size > maxConsensusNumber) { + val r = new Random() + r.shuffle(observedConsensus).take(maxConsensusNumber) + } else { + observedConsensus + } - // sum all mismatch qualities to get the total mismatch quality for this alignment - val totalQuality = sweptValues.map(_._2._1).sum + val finalReads = if (readsToClean.size > 0 && consensus.size > 0) { - // package data - var readMappings = mutable.Map[RichAlignmentRecord, Int]() - sweptValues.map(kv => (kv._1, kv._2._2)).foreach(m => { - readMappings += (m._1 -> m._2) - }) - - // add to outcome list - consensusOutcomes = (totalQuality, c, readMappings) :: consensusOutcomes - }) - - // perform reduction to pick the consensus with the lowest aggregated mismatch score - val bestConsensusTuple = consensusOutcomes.minBy(_._1) + // do not check realigned reads - they must match + val mismatchQualities = ComputingOriginalScores.time { + readsToClean.map(r => sumMismatchQuality(r._1)).toArray + } + val totalMismatchSumPreCleaning = mismatchQualities.sum - val (bestConsensusMismatchSum, bestConsensus, bestMappings) = bestConsensusTuple + /* list to log the outcome of all consensus trials. stores: + * - mismatch quality of reads against new consensus sequence + * - the consensus sequence itself + * - a map containing each realigned read and it's offset into the new sequence + */ + val consensusOutcomes = new Array[(Int, Consensus, Map[RichAlignmentRecord, Int])](consensus.size) - // check for a sufficient improvement in mismatch quality versus threshold - log.info("On " + refRegion + ", before realignment, sum was " + totalMismatchSumPreCleaning + - ", best realignment has " + bestConsensusMismatchSum) - val lodImprovement = (totalMismatchSumPreCleaning - bestConsensusMismatchSum).toDouble / 10.0 - if (lodImprovement > lodThreshold) { - var realignedReadCount = 0 + // loop over all consensuses and evaluate + consensus.zipWithIndex.foreach(p => SweepReadsOverConsensus.time { + val (c, cIdx) = p - // if we see a sufficient improvement, realign the reads - val cleanedReads: Iterable[RichAlignmentRecord] = readsToClean.map(r => { + // generate a reference sequence from the consensus + val consensusSequence = c.insertIntoReference(reference, refRegion) - val builder: AlignmentRecord.Builder = AlignmentRecord.newBuilder(r) - val remapping = bestMappings(r) + // evaluate all reads against the new consensus + val sweptValues = readsToClean.map(p => { + val (r, rIdx) = p + val originalQual = mismatchQualities(rIdx) + val qualAndPos = sweepReadOverReferenceForQuality(r.getSequence, consensusSequence, r.qualityScores, originalQual) - // if read alignment is improved by aligning against new consensus, realign - if (remapping != -1) { + (r, qualAndPos) + }) - realignedReadCount += 1 + // sum all mismatch qualities to get the total mismatch quality for this alignment + val totalQuality = sweptValues.map(_._2._1).sum - // bump up mapping quality by 10 - builder.setMapq(r.getMapq + 10) + // package data + val readMappings = sweptValues.map(kv => (kv._1, kv._2._2)).toMap - // set new start to consider offset - builder.setStart(refStart + remapping) + // add to outcome list + consensusOutcomes(cIdx) = (totalQuality, c, readMappings) + }) - // recompute cigar - val newCigar: Cigar = { - // if element overlaps with consensus indel, modify cigar with indel - val (idElement, endLength, endPenalty) = if (bestConsensus.index.start == bestConsensus.index.end - 1) { - (new CigarElement(bestConsensus.consensus.length, CigarOperator.I), - r.getSequence.length - bestConsensus.consensus.length - (bestConsensus.index.start - (refStart + remapping)), - -bestConsensus.consensus.length) - } else { - (new CigarElement((bestConsensus.index.end - 1 - bestConsensus.index.start).toInt, CigarOperator.D), - r.getSequence.length - (bestConsensus.index.start - (refStart + remapping)), - bestConsensus.consensus.length) + // perform reduction to pick the consensus with the lowest aggregated mismatch score + val bestConsensusTuple = consensusOutcomes.minBy(_._1) + + val (bestConsensusMismatchSum, bestConsensus, bestMappings) = bestConsensusTuple + + // check for a sufficient improvement in mismatch quality versus threshold + log.info("On " + refRegion + ", before realignment, sum was " + totalMismatchSumPreCleaning + + ", best realignment has " + bestConsensusMismatchSum) + val lodImprovement = (totalMismatchSumPreCleaning - bestConsensusMismatchSum).toDouble / 10.0 + if (lodImprovement > lodThreshold) { + FinalizingRealignments.time { + var realignedReadCount = 0 + + // if we see a sufficient improvement, realign the reads + val cleanedReads: Iterable[RichAlignmentRecord] = readsToClean.map(p => { + val (r, _) = p + + try { + val remapping = bestMappings(r) + + // if read alignment is improved by aligning against new consensus, realign + if (remapping != -1) { + + // if element overlaps with consensus indel, modify cigar with indel + val (idElement, endLength, endPenalty) = if (bestConsensus.index.start == bestConsensus.index.end - 1) { + // number of bases after the end: + // sequenceLength - bases before consensus - consensus length + // L_s - (S_c - (S_r + remap) - L_c + // L_s = length of sequence + // S_c = start of consensus insertion + // S_r = start of reference interval + // remap = read remapping index + // L_c = length of the insertion + val endBases = r.getSequence.length - ((bestConsensus.index.start - (refStart + remapping) + 1) + bestConsensus.consensus.length) + + (new CigarElement(bestConsensus.consensus.length, CigarOperator.I), + endBases, + -bestConsensus.consensus.length) + } else { + (new CigarElement((bestConsensus.index.end - 1 - bestConsensus.index.start).toInt, CigarOperator.D), + r.getSequence.length - (bestConsensus.index.start - (refStart + remapping)), + bestConsensus.consensus.length) + } + assert(endLength > -bestConsensus.consensus.length, + "Read is remapped but does not overlap the consensus (el = %d).".format(endLength)) + val alignmentLength = r.getSequence.length + endPenalty + + if (alignmentLength <= 0) { + log.warn("Read %s was realigned with a negative/zero alignment length (%d at position %d) on target %s. Skipping...".format( + r, alignmentLength, remapping, target)) + r + } else { + realignedReadCount += 1 + val builder: AlignmentRecord.Builder = AlignmentRecord.newBuilder(r) + + // bump up mapping quality by 10 + builder.setMapq(r.getMapq + 10) + + // set new start to consider offset + val startLength = bestConsensus.index.start - (refStart + remapping) + val newStart = if (remapping <= (bestConsensus.index.start - refStart)) { + refStart + remapping + } else { + assert(startLength < 0) + // if read remaps into consensus variant, then it should be + // soft clipped, and should map after the variant + bestConsensus.index.end + } + builder.setStart(newStart) + if (endLength > 0) { + builder.setEnd(bestConsensus.index.end + endLength) + } else { + builder.setEnd(bestConsensus.index.start + 1) + } + + val adjustedIdElement = if (endLength < 0) { + new CigarElement(idElement.getLength + endLength.toInt, CigarOperator.S) + } else if (startLength < 0) { + new CigarElement(idElement.getLength + startLength.toInt + 1, CigarOperator.S) + } else { + idElement + } + val cigarElements = if (bestConsensus.consensus.length > 0) { + List[CigarElement]( + new CigarElement((bestConsensus.index.start - (refStart + remapping) + 1).toInt, CigarOperator.M), + adjustedIdElement, + new CigarElement(endLength.toInt, CigarOperator.M) + ).filter(_.getLength > 0) + } else { + List[CigarElement]( + new CigarElement((bestConsensus.index.start - (refStart + remapping)).toInt, CigarOperator.M), + adjustedIdElement, + new CigarElement(endLength.toInt, CigarOperator.M) + ).filter(_.getLength > 0) + } + + val newCigar = new Cigar(cigarElements) + + // update mdtag and cigar + builder.setMismatchingPositions(MdTag.moveAlignment(r, + newCigar, + reference.drop((newStart - refStart).toInt), + newStart).toString()) + builder.setOldPosition(r.getStart()) + builder.setOldCigar(r.getCigar()) + builder.setCigar(newCigar.toString) + val rec = builder.build() + new RichAlignmentRecord(rec) + } + } else { + r + } + } catch { + case t: Throwable => { + log.warn("Realigning read %s failed with %s:\n%s".format(r, t)) + r + } } + }) - // compensate the end - builder.setEnd(refStart + remapping + r.getSequence.length + endPenalty) - - val startLength = bestConsensus.index.start - (refStart + remapping) - val adjustedIdElement = if (endLength < 0) { - new CigarElement(idElement.getLength + endLength.toInt, idElement.getOperator) - } else if (startLength < 0) { - new CigarElement(idElement.getLength + startLength.toInt, idElement.getOperator) - } else { - idElement - } + log.info("On " + refRegion + ", realigned " + realignedReadCount + " reads to " + + bestConsensus + " due to LOD improvement of " + lodImprovement) - val cigarElements = List[CigarElement]( - new CigarElement(startLength.toInt, CigarOperator.M), - adjustedIdElement, - new CigarElement(endLength.toInt, CigarOperator.M) - ).filter(_.getLength > 0) - - new Cigar(cigarElements) - } - - // update mdtag and cigar - try { - builder.setMismatchingPositions(MdTag.moveAlignment(r, newCigar, reference.drop(remapping), refStart + remapping).toString()) - builder.setOldPosition(r.getStart()) - builder.setOldCigar(r.getCigar()) - builder.setCigar(newCigar.toString) - new RichAlignmentRecord(builder.build()) - } catch { - case t: Throwable => { - log.warn("Caught %s when trying to move alignment to %s for %s.".format( - t, newCigar, r)) - new RichAlignmentRecord(r) - } - } - } else { - new RichAlignmentRecord(builder.build()) + cleanedReads ++ realignedReads } - }) - - log.info("On " + refRegion + ", realigned " + realignedReadCount + " reads to " + - bestConsensus + " due to LOD improvement of " + lodImprovement) - - realignedReads = cleanedReads ++ realignedReads + } else { + log.info("On " + refRegion + ", skipping realignment due to insufficient LOD improvement (" + + lodImprovement + "for consensus " + bestConsensus) + reads + } } else { - log.info("On " + refRegion + ", skipping realignment due to insufficient LOD improvement (" + - lodImprovement + "for consensus " + bestConsensus) - realignedReads = readsToClean ++ realignedReads + reads + } + // return all reads that we cleaned and all reads that were initially realigned + val endTime = System.nanoTime() + log.info("TARGET|\t%d\t%d\t%d\t%s\t%d\t%d\t%d\t%d\t%d".format(partitionIdx, + targetIdx, + endTime - startTime, + refRegion.referenceName, + refRegion.start, + refRegion.end, + reads.size, + observedConsensus.size, + consensus.size)) + finalReads + } catch { + case t: Throwable => { + log.warn("Realigning target %s failed with %s.".format(target, t)) + reads } } - - // return all reads that we cleaned and all reads that were initially realigned - realignedReads } } @@ -421,20 +446,30 @@ private[read] class RealignIndels( * @param read Read to test. * @param reference Reference sequence to sweep across. * @param qualities Integer sequence of phred scaled base quality scores. + * @param originalQuality The original score of the read vs. the reference genome. * @return Tuple of (mismatch quality score, alignment offset). */ - def sweepReadOverReferenceForQuality(read: String, reference: String, qualities: Seq[Int]): (Int, Int) = SweepReadOverReferenceForQuality.time { - - var qualityScores = List[(Int, Int)]() - - // calculate mismatch quality score for all admissable alignment offsets - for (i <- 0 to (reference.length - read.length)) { - val qualityScore = sumMismatchQualityIgnoreCigar(read, reference.substring(i, i + read.length), qualities) - qualityScores = (qualityScore, i) :: qualityScores + def sweepReadOverReferenceForQuality(read: String, reference: String, qualities: Seq[Int], originalQuality: Int): (Int, Int) = SweepReadOverReferenceForQuality.time { + + @tailrec def sweep(i: Int, + upTo: Int, + minScore: Int, + minPos: Int): (Int, Int) = { + if (i >= upTo) { + (minScore, minPos) + } else { + val qualityScore = sumMismatchQualityIgnoreCigar(read, reference, qualities, minScore, i) + val (newMinScore, newMinPos) = if (qualityScore < minScore) { + (qualityScore, i) + } else { + (minScore, minPos) + } + sweep(i + 1, upTo, newMinScore, newMinPos) + } } - // perform reduction to get best quality offset - qualityScores.minBy(_._1) + // calculate mismatch quality score for all admissable alignment offsets + sweep(0, reference.length - read.length + 1, originalQuality, -1) } /** @@ -445,19 +480,34 @@ private[read] class RealignIndels( * @param read Read to evaluate. * @param reference Reference sequence to look for mismatches against. * @param qualities Sequence of base quality scores. + * @param scoreThreshold Stops summing if score is greater than this value. + * @param refOffset Offset into the reference sequence. * @return Mismatch quality sum. */ - def sumMismatchQualityIgnoreCigar(read: String, reference: String, qualities: Seq[Int]): Int = { - val mismatchQualities = read.zip(reference) - .zip(qualities) - .filter(r => r._1._1 != r._1._2) - .map(_._2) - - if (mismatchQualities.length > 0) { - mismatchQualities.sum - } else { - 0 + def sumMismatchQualityIgnoreCigar(read: String, + reference: String, + qualities: Seq[Int], + scoreThreshold: Int, + refOffset: Int): Int = { + + @tailrec def loopAndSum(idx: Int = 0, + runningSum: Int = 0): Int = { + if (idx >= read.length || (idx + refOffset) >= reference.length) { + runningSum + } else if (runningSum > scoreThreshold) { + Int.MaxValue + } else { + val newRunningSum = if (read(idx) == reference(idx + refOffset) || + reference(idx + refOffset) == '_') { + runningSum + } else { + runningSum + qualities(idx) + } + loopAndSum(idx + 1, newRunningSum) + } } + + loopAndSum() } /** @@ -470,8 +520,10 @@ private[read] class RealignIndels( def sumMismatchQuality(read: AlignmentRecord): Int = { sumMismatchQualityIgnoreCigar( read.getSequence, - read.mdTag.get.getReference(read), - read.qualityScores + read.mdTag.get.getReference(read, withGaps = true), + read.qualityScores, + Int.MaxValue, + 0 ) } @@ -498,11 +550,11 @@ private[read] class RealignIndels( // find realignment targets log.info("Generating realignment targets...") - val targets: TreeSet[IndelRealignmentTarget] = RealignmentTargetFinder( + val targets: Array[IndelRealignmentTarget] = RealignmentTargetFinder( richRdd, maxIndelSize, maxTargetSize - ) + ).toArray // we should only attempt realignment if the target set isn't empty if (targets.isEmpty) { @@ -517,7 +569,9 @@ private[read] class RealignIndels( // realign target groups log.info("Sorting reads by reference in ADAM RDD") - readsMappedToTarget.flatMap(realignTargetGroup).map(r => r.record) + readsMappedToTarget.mapPartitionsWithIndex((idx, iter) => { + iter.flatMap(realignTargetGroup(_, idx)) + }).map(r => r.record) } } } diff --git a/adam-core/src/main/scala/org/bdgenomics/adam/serialization/ADAMKryoRegistrator.scala b/adam-core/src/main/scala/org/bdgenomics/adam/serialization/ADAMKryoRegistrator.scala index 5d3efbdd54..666b5422e0 100644 --- a/adam-core/src/main/scala/org/bdgenomics/adam/serialization/ADAMKryoRegistrator.scala +++ b/adam-core/src/main/scala/org/bdgenomics/adam/serialization/ADAMKryoRegistrator.scala @@ -176,10 +176,10 @@ class ADAMKryoRegistrator extends KryoRegistrator { // org.bdgenomics.adam.rdd.read.realignment kryo.register(classOf[org.bdgenomics.adam.rdd.read.realignment.IndelRealignmentTarget], new org.bdgenomics.adam.rdd.read.realignment.IndelRealignmentTargetSerializer) + kryo.register(classOf[scala.Array[org.bdgenomics.adam.rdd.read.realignment.IndelRealignmentTarget]], + new org.bdgenomics.adam.rdd.read.realignment.IndelRealignmentTargetArraySerializer) kryo.register(classOf[org.bdgenomics.adam.rdd.read.realignment.TargetSet], new org.bdgenomics.adam.rdd.read.realignment.TargetSetSerializer) - kryo.register(classOf[org.bdgenomics.adam.rdd.read.realignment.ZippedTargetSet], - new org.bdgenomics.adam.rdd.read.realignment.ZippedTargetSetSerializer) // org.bdgenomics.adam.rdd.read.recalibration. kryo.register(classOf[org.bdgenomics.adam.rdd.read.recalibration.CovariateSpace]) diff --git a/adam-core/src/test/resources/NA12878.1_854950_855150.sam b/adam-core/src/test/resources/NA12878.1_854950_855150.sam new file mode 100644 index 0000000000..62690eefa2 --- /dev/null +++ b/adam-core/src/test/resources/NA12878.1_854950_855150.sam @@ -0,0 +1,184 @@ +@HD VN:1.5 SO:unsorted +@SQ SN:1 LN:249250621 +@SQ SN:2 LN:243199373 +@SQ SN:3 LN:198022430 +@SQ SN:4 LN:191154276 +@SQ SN:5 LN:180915260 +@SQ SN:6 LN:171115067 +@SQ SN:7 LN:159138663 +@SQ SN:8 LN:146364022 +@SQ SN:9 LN:141213431 +@SQ SN:10 LN:135534747 +@SQ SN:11 LN:135006516 +@SQ SN:12 LN:133851895 +@SQ SN:13 LN:115169878 +@SQ SN:14 LN:107349540 +@SQ SN:15 LN:102531392 +@SQ SN:16 LN:90354753 +@SQ SN:17 LN:81195210 +@SQ SN:18 LN:78077248 +@SQ SN:19 LN:59128983 +@SQ SN:20 LN:63025520 +@SQ SN:21 LN:48129895 +@SQ SN:22 LN:51304566 +@SQ SN:X LN:155270560 +@SQ SN:Y LN:59373566 +@SQ SN:MT LN:16569 +@SQ SN:GL000207.1 LN:4262 +@SQ SN:GL000226.1 LN:15008 +@SQ SN:GL000229.1 LN:19913 +@SQ SN:GL000231.1 LN:27386 +@SQ SN:GL000210.1 LN:27682 +@SQ SN:GL000239.1 LN:33824 +@SQ SN:GL000235.1 LN:34474 +@SQ SN:GL000201.1 LN:36148 +@SQ SN:GL000247.1 LN:36422 +@SQ SN:GL000245.1 LN:36651 +@SQ SN:GL000197.1 LN:37175 +@SQ SN:GL000203.1 LN:37498 +@SQ SN:GL000246.1 LN:38154 +@SQ SN:GL000249.1 LN:38502 +@SQ SN:GL000196.1 LN:38914 +@SQ SN:GL000248.1 LN:39786 +@SQ SN:GL000244.1 LN:39929 +@SQ SN:GL000238.1 LN:39939 +@SQ SN:GL000202.1 LN:40103 +@SQ SN:GL000234.1 LN:40531 +@SQ SN:GL000232.1 LN:40652 +@SQ SN:GL000206.1 LN:41001 +@SQ SN:GL000240.1 LN:41933 +@SQ SN:GL000236.1 LN:41934 +@SQ SN:GL000241.1 LN:42152 +@SQ SN:GL000243.1 LN:43341 +@SQ SN:GL000242.1 LN:43523 +@SQ SN:GL000230.1 LN:43691 +@SQ SN:GL000237.1 LN:45867 +@SQ SN:GL000233.1 LN:45941 +@SQ SN:GL000204.1 LN:81310 +@SQ SN:GL000198.1 LN:90085 +@SQ SN:GL000208.1 LN:92689 +@SQ SN:GL000191.1 LN:106433 +@SQ SN:GL000227.1 LN:128374 +@SQ SN:GL000228.1 LN:129120 +@SQ SN:GL000214.1 LN:137718 +@SQ SN:GL000221.1 LN:155397 +@SQ SN:GL000209.1 LN:159169 +@SQ SN:GL000218.1 LN:161147 +@SQ SN:GL000220.1 LN:161802 +@SQ SN:GL000213.1 LN:164239 +@SQ SN:GL000211.1 LN:166566 +@SQ SN:GL000199.1 LN:169874 +@SQ SN:GL000217.1 LN:172149 +@SQ SN:GL000216.1 LN:172294 +@SQ SN:GL000215.1 LN:172545 +@SQ SN:GL000205.1 LN:174588 +@SQ SN:GL000219.1 LN:179198 +@SQ SN:GL000224.1 LN:179693 +@SQ SN:GL000223.1 LN:180455 +@SQ SN:GL000195.1 LN:182896 +@SQ SN:GL000212.1 LN:186858 +@SQ SN:GL000222.1 LN:186861 +@SQ SN:GL000200.1 LN:187035 +@SQ SN:GL000193.1 LN:189789 +@SQ SN:GL000194.1 LN:191469 +@SQ SN:GL000225.1 LN:211173 +@SQ SN:GL000192.1 LN:547496 +@SQ SN:NC_007605 LN:171823 +@RG ID:H06HD.1 SM:NA12878 CN:BI LB:Solexa-135852 PL:illumina PU:H06HDADXX130110.1.ATCACGAT +@RG ID:H06HD.2 SM:NA12878 CN:BI LB:Solexa-135852 PL:illumina PU:H06HDADXX130110.2.ATCACGAT +@RG ID:H06JU.1 SM:NA12878 CN:BI LB:Solexa-135852 PL:illumina PU:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:1208:19235:87588 83 1 854876 60 250M = 854771 -355 CGACTTGCTAGGCGCCTGAGAACAAGCGGTGTGGCCAGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCCCTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGG ##################B?@>AA@B9A>?*->?89.@BA?53;?=;<5::<+5<9-=<=67A>:::?>:4:33;&8><7?>>>59>=;,(039&?57<.?@<==?<<54>@5?>88??@>=@AA@@A@??=?@>>?@8>><;6)9A?A<;=B?5.*<754A;:?;?<7.3A233<=>=/"35#:=9<;3;???9>9)*234=7197;;==?9?<=8?7>9; LB:Z:Solexa-135852 MD:Z:4C7G4C18C65A88A7C50 RG:Z:H06HD.2 NM:i:7 AS:i:215 XS:i:21 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:1205:17068:45700 83 1 854845 60 250M = 854783 -312 CTCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAAT 2::<<>B???A?>>@BAAB??A??@;AABAA8>9??>??@B>>=@86A?@?A?A?:B9@>A@A>A@@:?AABA9>A@@?@?A??@@@@>AA@A?A?A>A?AA@A?@9>A@?@9@A9@AA@@9>A@A@9>A@A@9?A@A@@@@@A@@AA=><@@?@??@A@@A>BAAA@AB?BAAABA?A?:@?@@A@?A@?>?A@>??>@?8=>??>==?>>?>=????>??>??7=??>?>>?=?=>?@???>?>>==> LB:Z:Solexa-135852 MD:Z:133A96C19 RG:Z:H06HD.2 NM:i:2 AS:i:240 XS:i:0 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:1107:18864:14593 163 1 855137 60 223M27S = 855366 479 TGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGGGGCAGCTGAATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGCTAAATTGGGTGAGCCCGCTCATTGGGTCCGACCCTCCCGCTCCTTGGGAGTGTAGAGTGCTCTAGTACTTCTCTTTGCTTAACCTCAAGNAGCTGGGGCATCAGCNNNCGNGCNGNNTNTNNAGNN ;:=>?>@@>>=4=<=?=>>?8;==>@=8<>>-?>>:??6??):;;-3@A<:';?/66<8<=??07;?@@:9&.7>=B?A?>?B#################################################################################################################################################################### LB:Z:Solexa-135852 MD:Z:41T8C72T0G7C7A0T0C7A1A19G0C1C1G3A0A5T1C22G0T8 RG:Z:H06HD.2 NM:i:20 AS:i:126 XS:i:21 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2201:14523:48682 83 1 854831 60 21S229M = 854664 -396 GGTTCTGCCCTCCCCGGCCCAACAGACCCGCCAAGCTCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTG ###################################?>?@@@AA?>A@?=@@@AA@@AA@@@AAB?@:?@A?AA@ABA=>A@@A?A?A@@AAB9@>A>AAA@A:?A@A@9>A@@@@@AA?@@@A>AA@A?A?A>A?A>@A?@9>A@?@:@A9@AA@@9>A@AA9?AABA:@BABAAAAABAA@A@>=@@@A@@?@?>>=??=>=>>=>==>?>>>>8==??>==??>>>>?>???>?7>?>>;>> LB:Z:Solexa-135852 MD:Z:147A81 RG:Z:H06HD.2 NM:i:1 AS:i:224 XS:i:19 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:2203:16779:69416 163 1 854909 60 105M145S = 855714 1046 GCCAGAGGCCGTGACACAGCACCTGGGCTGAGAGTGAGCTGACTTGGTCGGCGGCACCGTGGCCGTGGCTGAGGCAACATCACTCCACCCTCGCTCATGTAGGGAGGTTGATCCCGGAGACCCCAGCCCACGGCTTTGGTGCCTGGGCCTGTCTCTCCACTCGCGCGCTTCGATATCACAGCCACCGTCCTTCAGGATGCGACGTAGCGTCACGTGCGTGCATTGTGAGTCAGACTTTAAGTCATTCACG ########################################################################################################################################################################################################################################################## LB:Z:Solexa-135852 MD:Z:3C8C12T17G3A21A6C4C10A12 RG:Z:H06JU.1 NM:i:9 AS:i:61 XS:i:19 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:2109:13817:68115 99 1 854934 60 250M = 855102 355 TGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGCCTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTTGGCCCAAGTCCGCCCAGCAGGTGGCAG >=<>?@?>?<>@<@@>@=6>9?>=8>>6?@?<<8>=>9<6;:#3;6==?=A;>>=?>6?>>A?@@A?>:=;7>??B?>=<;>@>A;7?A+<@>>><7>5?A;=<@AAA=;@@>@>@B>@@8.:@:@BA=>@@>?A@>AA>=?A>>=)9<=?8?;?@?<;>A>A@8*&/*<:>=:?@@9=>A+98<@?B##################################### LB:Z:Solexa-135852 MD:Z:44A49A46C80A6C20 RG:Z:H06HD.2 NM:i:5 AS:i:225 XS:i:20 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2109:13817:68115 147 1 855102 60 63S187M = 854934 -355 GTTCGATCGTGTCGAGCGTGTATTCCACGGTAGACATCAATCACCTCCAGTACAAGGTGAGACAGGGTGCCGTATCAGTGCTTCGGTGGCTCCTGTCAGGGGGGCTGAGGACCACTTAGGCCCACGTCCGCCCAGCAGGTGGCAGTCGCATCCCCGGTCCCCTCCACAACCCGGGGCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAATTGGCTGAGCCCATCCATTGGGAC ##################################################################################################################################################################################?>@==>:@?AA=A@?98>??=?=?>?==@>>?>>@?><=?==8?>?:=@?:@8>>>?>;?@??>?<- LB:Z:Solexa-135852 MD:Z:9C1A11G11T1A14C29C0T28C74 RG:Z:H06HD.2 NM:i:9 AS:i:142 XS:i:20 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:1:2108:10798:8482 83 1 854977 60 250M = 854829 -398 CCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCT ###############A;=5<98;??<:;>@>???>>;A69@>>>=??>8?>=>?@>@@?>>?@@<;;?>5?@??@>?@A?@@>A?B@@A?>??9@@?@>>>@>?:@@BA??>A><@@A=@>B>A>A??>@?@8@>@A@@=@>>@>8@?@>?>?A@@?B@?>=@@@>@A?@><=?@@??A>@8>A>7?75;=>?<><<<===<=??8>=>>>>>?>>=>>=>>7>>>>>?>>?=;=> LB:Z:Solexa-135852 MD:Z:1A96C151 RG:Z:H06HD.1 NM:i:2 AS:i:243 XS:i:19 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:1:2108:10798:8482 163 1 854829 60 172M78S = 854977 398 CCACAGACCCGCCAAGCTCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCCGCACCGGGGCCGTGGCCGAGGCCCCATGCCTCCCCCCTCCCCCCCGCTGGGACTTCGGGCACACGGTCTCGAGTCCAAAGCACTTGTGCTGCGAGATTGATATGTGAGCTGATGATC <=;@=6;/?>??=>=>><>?;>>>>==>>??>?>?>>=<<;@;>?><8<<=??>?=>>=@?>@5?:=28;@>>79&6@=&889=;7=;@?;6????????>>@??>?=@>@@>@?8??@?@???@???@??>@>?@@?@???@@A@@@????A>:A<@?A?@?BBBA:@A>AB@ABCB@@B?=ABA?C@?B@BC@B@A=@ABBC@;AAB;BBBCABB@AAA@ABBB@15?@?BBB:A@5=@@/3=-5AB6@?/6>6>A@?########################################################################### LB:Z:Solexa-135852 MD:Z:31C135G26T6A1G0G17 RG:Z:H06JU.1 NM:i:6 AS:i:192 XS:i:19 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:2206:2705:49633 147 1 854846 60 67S183M = 854650 -379 CGTTGCTCAGTATATAGAGATGTGTACGGACGGTCCGGCTCACTCCGTGCCCAGACCCCAGACAAGGTCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAACCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGA #####################################################################?=>@???@6>?4>7/8;?>>><9@=89<43&+@8@>=3?:98=<@@=7<@>;>;;>;===<@>???@85=:(;@>:8<@>>=8@@6=99<95===>?6==;=<2=?=@<>>>??>=>>>?=3>7>>?:??>>>>?>>>>=>>6;<= LB:Z:Solexa-135852 MD:Z:55G76A50 RG:Z:H06HD.1 NM:i:2 AS:i:173 XS:i:20 PU:Z:H06HDADXX130110.1.ATCACGAT +H06JUADXX130110:1:2212:18010:52687 83 1 854829 60 250M = 854619 -460 CCACAGCCCGACCAAGCCCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCA ################################@BA860@?>;A9@=>72)AA@B>=?>4AA@?;B@A?A>A=A9>A8=13>?@7=?<@@=BAC?=:@?7?A>9?BAA=8@<6<=@?A9=>9>>7>=;;:+ACA?;B>=2898640>>8?AA;=ABA?B>??A=@?4>>??<=8??97??<7??>=@:@@@?>?/=>@5<=::@>????9@>=???A>?=@=6@@@@?:;> LB:Z:Solexa-135852 MD:Z:6A2C0G6T131A96C3 RG:Z:H06JU.1 NM:i:6 AS:i:225 XS:i:0 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:1114:5841:68777 83 1 855132 60 250M = 855020 -362 CGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAATTGGCTGAGCCCATCCATTGGGACAGACCCTCCCGCTCCTTGGGGCTCTGGAGAACTCTATTCCTTCTCTTTGCTTAACCTCAAGGTGCTGGGGCCTCTGGCTGCTGCAGCATTTAC ######>A<83&>>:==<@>??>??8=A=2@?>>@@>@?=@>@>@?><@=<>A@@8@>=AAA@@A?>??;?@8@@AA@B>?@A@B@BBAA@B@@A9A@B?A?A@?@@@?@@>?B??A>A??>>>@@??A?A@A?BAAA@@@?>@AA@@>?@B>>AA@BAA9A@BA@AA>??@??>>??>>>?=???>??>>>>>??????>??>?>??>??>=>>??>==>=>>>>=>>>?>>?>??>>?>9<= LB:Z:Solexa-135852 MD:Z:0T249 RG:Z:H06HD.1 NM:i:1 AS:i:249 XS:i:20 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:1:1114:5841:68777 163 1 855020 60 227M23S = 855132 362 GCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCCGCCTCCCAGGTCCCCTCCACAACACGGGCCAGGTCCAGGCTGCAGGACGCAGCGTTGGCAGCCGTAGAACAACGTGTGANTGGC ==<;?<7??>>>>==>>>>>=>>>7>=>?>>>?;>?>>?<>?>=@=@>7?=@?@>?=?>-<><<>@>@@5><>9>6=5=;.<@>8>???@>==>5<>7*6;<=:?@9==<>?;@;=?@?>@?>A?>A=;=<+@A>7?>@###################################################################################################### LB:Z:Solexa-135852 MD:Z:55C109T2A4C15C22C5T8 RG:Z:H06HD.1 NM:i:7 AS:i:192 XS:i:21 PU:Z:H06HDADXX130110.1.ATCACGAT +H06JUADXX130110:1:2208:6083:12507 147 1 854867 60 27S223M = 854320 -770 CATATGTCACATACCATCGTGCAGGCTGCACATGCCCGACCTGCTGGACGCCTCAGACCACGCGGTGGGGCCCGGGGCCGCCCCACAGCCCCTGTGCTGAGAGTGAGCTGCCGTGGACGGCGGCCCCGTGGCCGTGGCCGAGGCACCATCCCTCCCCCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCAC #####################################################################################################################;?<91;0&?;@CBBB9@>>B>8=/@;?8A@BAA?A@<95?<:@9.A@@AB@A?@3@9@<@AA9@@><>:@>?=>@;B>-=?@A=@>??@8=>?@@>>@?>???@?@@???>@=@?@?><>= LB:Z:Solexa-135852 MD:Z:5A12A1G0G8A2A6T6A5T1A6A20A13A13A16A79C14 RG:Z:H06JU.1 NM:i:16 AS:i:143 XS:i:19 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:2111:11136:52477 163 1 855028 60 199M51S = 855318 540 ACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTTGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCCCAACCCGTGCCAGGTCCAGGCTTCCAGCCGCAGCGGTGGAATGCCTACGACTCTGTGAACATGCACTGATCCC =;<=>?>?>>??>>>=>>=7>>>>===>==?'4??>?>>??>>>>?@>=<>>??@=??@A>>>>>>@>;?>?:>>>8=;>=A?>>?>?>7?:=?@A?@@>?>>?=@@A?@B@@@A@>>@>@B>>???@@<8=??9>@@7>?A?A???@@?@A?@?>>?@?:>>>?############################################################################### LB:Z:Solexa-135852 MD:Z:31G15C128A7G14 RG:Z:H06HD.1 NM:i:4 AS:i:179 XS:i:19 PU:Z:H06HDADXX130110.1.ATCACGAT +H06JUADXX130110:1:1202:20258:4169 83 1 854849 60 10S240M = 854717 -372 CGCACGCTACCCAGCAAATGTCCAGCCGGCAAAAGCCGGACCTGGTAGGGGCCTTAGAACAAGGGGTGTGGCCCGAGGCCGTCCCACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCA #################################################################################################AB@B@A:@>/?@CA@8=A<3@8B?7@@?>0&?B>599@B9?AA?A@?@AC=AAB=?>A@@A>;?@@@B?ACABABB?BAA@A@@AA7@@A@@??@@@>??A?A>?A@9=@@@?=>???@@?@@@?@=@>??8>@?@@@???@>@@@?;?? LB:Z:Solexa-135852 MD:Z:5C5G5A3C5C6C9C8C19A55A96C13 RG:Z:H06JU.1 NM:i:11 AS:i:185 XS:i:0 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1106:14191:11272 163 1 855106 60 21S194M35S = 855308 452 CCCAGACAATTCCTCTGTAAATGCCGCAACAGTGCTTCGGGGGCTCTTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGCGCGAGGCGAGGGTGAAATTCGCTGAGACCATCCCTTCGGACAGAACCTCCCGAGACTTGTAGCTCTTGAGAACGCTGTTCCATCTCC ==;>?@=??>?>>@=?>?>>>>??>8@@?>?@>??@??8????@??@@@@>A@??@?=@A?BA?B?AB?AAA?@ABBB@:@AB;BABC@?B@=>;8@B?BCABBBABBB;B??B@BCABA=BB?BB85?ABC@8:>ABA@B@=CC;9A@:A=:87:A@:A########################################################################################## LB:Z:Solexa-135852 MD:Z:25C115G1G4A12G6C6A2G7C7 RG:Z:H06JU.1 NM:i:9 AS:i:149 XS:i:19 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:1115:1839:74012 83 1 854909 60 250M = 854738 -421 GCCTGAGGCCGTCACACAGCACCTGTGCTGAGAGTGACCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGACGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCCTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGG #######################################A>@3;:&><:AB8?BA@=:=???A:@B><)0==&??@===B9<>@9A?8=>@<@?@8?@@@AA???B@A3=)>?@>>4>?=?@A@A>>9?AA=<..&<.9@B?BA>@<=@@?@==-@;75+&6A?:69??A?A<7?<,<@;8+??@9?<9>=@=?<>??????=@>==>>>@>@?>>?@?9??>=> LB:Z:Solexa-135852 MD:Z:3C33G31A2G62T30C83 RG:Z:H06HD.2 NM:i:6 AS:i:221 XS:i:19 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2215:17537:85335 99 1 854987 60 250M = 855415 583 ATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCC >=;==@>>?=???=>=?=>>>???>??>>>>>>>?>=>=7>?=?>>???==>?????@@?8A@AA@@@AAABAABB@BABB?B@:@BA@A@A@A@@?A?@@A>@@AA@@@??@A@A@@@?AA@9AAA>AA@@AAA?:A@@@AA?@A@@?A@@A@@@AA@A@@A>AA>@BA??A@@A>9@?@:B?AA@AA?8=@ABA@AA@A@??@@@:A?>?A@B?@A?@A*=@90=@?B>?>>?@?ABAAAA@@>=### LB:Z:Solexa-135852 MD:Z:88C160A0 RG:Z:H06HD.2 NM:i:2 AS:i:244 XS:i:0 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:1105:12412:70778 83 1 854965 60 250M = 854889 -326 CCGTGGCCGTGGCCGAGTCACCATCCCTCCTCCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCTCAAGGCCTTCGTGCTGGGCCCTGACTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCCCCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGC ##############################################################################################################################################################################################################=?>=<>7,5==>(5:89;41--,=3>$::<;=97;9:??8><>< LB:Z:Solexa-135852 MD:Z:13A3G12A40C23G14C76A62 RG:Z:H06HD.2 NM:i:7 AS:i:215 XS:i:21 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:1105:12412:70778 163 1 854889 60 159M91S = 854965 326 GCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGAGCTGAGAGGGAGCTGACGTGGACGGCGGGACCGTGGCCGGGGCCGGGGCACCATCCCTACACCCCCACTCATGTAGGCATGTGAGGCCCACGGACTCGAGGCCCAGGCCTTCGCTCTGGGCCATGGNGCTGCACTGCGCTGACACTGGTTCTGACGCAAAGTCAGACNCTGTGCCTAACTCGGNNNTGNGGNNNNCNCNNGCNN ==:?>?@>?=?@>@5)?<5<<6884@2.)>":8A9<;?9=>3=@############################################################################################################################################################################################################## LB:Z:Solexa-135852 MD:Z:45T8T19C10T3A1A12C5T12G5G3A8G3C2A9 RG:Z:H06HD.2 NM:i:14 AS:i:89 XS:i:19 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:1210:15496:31592 99 1 854924 60 250M = 855132 394 ACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGTACCACCTAGGCCCACGTGCGCCCAG ?<=>?@>>@?@@?@??@@???@@@@?@>8???@>8?A9@@@=?8@????8?????9@?;>A>??;@@AB@AA?=AC@A>AAC?AA@A?AA@>@AAA@AC?A?;AC?@AABAAAABBA>@BBAA7=@BB@@ABB>B@AACAAA@B>?@;?BB>AAA97A>>?@A@B?>>CBAA@@BA=9>@?A@ABA:BBA?CAAAABBA;2?AAAB@BBA@AB=>B8?################################ LB:Z:Solexa-135852 MD:Z:54A96C72G17C7 RG:Z:H06JU.1 NM:i:4 AS:i:230 XS:i:0 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1210:15496:31592 147 1 855132 60 64S186M = 854924 -394 CGTGACCTACAGACATACCAACCAGAGTCCAGAAGACTTGCCGCGATGGTGCCGCGGACGACCATGTCATGGGGTCTGAGGACCAACTAGACCCTGGTCCGACCAGCCGGTGGCAGCTGAATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAATTGGCTGAGCCCATCCATTGGGACAGACCCTCCCGCTCCTTGGGGCTCTGGAG ##########################################################################################################################A=:5B<<695?<8:575&BA;@BB?=8;?C?@?AAAB@=C?B<7BAC@B@CCB@@BBA?@@A@@B@B@>?@@A>?AA@?>@>@?=4<9=?>=>@@>???@:??@?@>@8@?????@>?>?@@?@>8???@?>>??>>>@>>?>>>@>?>@>A???@???@@@?@@@??A=@>9@A>AAABAAAABC@@BBCAA;BAABAAAAAABAAAB@BAAB?C@:AABAAABABAA@B@AAB?AABBAAA?BABABAAAAAAA:ABB?BAAAAAA*1238=BC@ACAB@B@AB>@AACABAAB?AB?AC@A@AABB?:@AB:AAACAAB@@AAAAB@ACAABA@ABA;AA93>AA>AB@B@?A@18:97# LB:Z:Solexa-135852 MD:Z:11A96C141 RG:Z:H06JU.1 NM:i:2 AS:i:240 XS:i:19 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1204:4799:32908 147 1 854842 60 77S173M = 854673 -342 GAGACACGCGCTATGGTGACTATCTCATTCTGGCTTTCTGCGGCTCTCTGGCGCCCCCCTGTGCGCACAGCCCGGCTAAGCTCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGAT ####################################################################################@@BBA@>3-:-6@?B?<>;;478&<=:+?92@=<;8;;A@=>86<6AA@@;=B;B?C>@BA:>7?&BBA7???>@?<@?>@AAB@A?A?@>7@A=?@8??@??4A@4=@?;16>@>@=6>??@>6?@=@?????@?@?<>?>???@?=?A@??=??>=;== LB:Z:Solexa-135852 MD:Z:136A36 RG:Z:H06JU.1 NM:i:1 AS:i:168 XS:i:20 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:1116:1699:92075 99 1 854896 60 250M = 855103 370 AACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCGACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTG >>9>?>?7;><>>>?>>5><>?>8>?>>>>?=><><=<>=?@>><3?1&?;6@9A@?A@7>>7==:?A@>?@B>;>=?=A>@=@>@@@A>=>=@?=??>;??=>@>8AB>@<=@=?;>@?><@?@A>6?>?@999?@4@:=?@>@;=@=@?7>>@0(9>>???>:+=>@>?@-@;>;+:+<*7;>689=?8@&;9>&69<@?8&&157/;?)/,5=@?;@,4::84 LB:Z:Solexa-135852 MD:Z:82A96C36A33 RG:Z:H06HD.1 NM:i:3 AS:i:235 XS:i:20 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:1:1116:1699:92075 147 1 855103 60 87S163M = 854896 -370 GGAGNGTAGCAGTAGTGAGCCATAGCTATGAGGCTGTGCAGTGCGGTGGCAGCTCGCTTGCCAGGGTTCCCCCGCAAATGCAAGAGGGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGACTGAGGACCACCTAGGCCCACGGCCGCCCAGCAGGTGGCAGCTGCATCCCCGGCCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAAT #############################################################################################################################################################>>@>8-;2:>>:>?>8&;894>:&AA=>@@>>7>><@7=;@?=??<:>>@=>>??>>>=?3?=><><>>=?=?=>>>=>=>>>?=>=<=>>??>?>>?==><=>>>=?>=>=7?>=7>>>?????>=>>??>??>??>>???7@?>????>@A?AA?@@8?AA@A@??>@A>AAB@AA@@A@9A@>??A?@AAA@AAAA@@@??A?@@<=???=@>AA?A?=>?B?BA@>@@8AB?@@@>B>>?>@?=B?@??@<@@@>@>???>?@???=>A>7?>==>?@>>'2A79?@>@@2<@?A?@??>@@?9??@?@A>A?A@@8>>>>??????>@???>@>>???>?>?>@@@?;== LB:Z:Solexa-135852 MD:Z:6C3G31T1A13A3T9A3G1A10^A3T13A6G1A1A0C2A4^A4A3C5T2T3C7C3A5^C1C2A1A1T2C2A68 RG:Z:H06JU.1 NM:i:34 AS:i:68 XS:i:20 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:2206:14612:36168 99 1 854788 60 250M = 855146 572 CCCTCATCGGGCCTGTTACGCACGTTCTGGTCTCTCCGTGCCCACAGACCCGCCAAGCTCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCC >=:>=?>=7>??>?=>>?<7>><7>>>?>=>=?>?>>7>>>>>?=??>=>>7????>?A=@>?@?@@AA@@?>A>@A@A@AA?AA?A@@9B?@B?ABA@A?>A@B?A@BA?AA@@9@>=>?@@??8@?A@@9>>@>@?@?@A?@@>>>A@>B@?@?>C@A?>@=8>?A@?9A@9A>?>>17::>@8&8=@>5@?@0>;@?>>>@@>@@=????A=@>8>>??>>>?7=?>@=??################ LB:Z:Solexa-135852 MD:Z:190A59 RG:Z:H06HD.1 NM:i:1 AS:i:245 XS:i:19 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:1:2206:14612:36168 147 1 855146 60 36S214M = 854788 -572 CTACAGTTGCTCGAGGCTTTCCGGTCCGGAACGTTTAGGACCTCCTAGGCCCACGTCGGCCCGGCAGGTGTCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAATTGGCTGAGCCCATCCATTGGGACAGACCCTCCCGCTCCTTGGGGCTCTGGAGAACTCTATTCCTTCTCTTTGCTTAACCTCAAGGTGCTGGGGC #########################################################################################>><=??8)&=:9>?48B?>99?>@?A;<>@?<<@@@>>?>>A>@@??A>A?;?>>?>@>AA?>>:6>>;>A>=>;@@=>?=@B@?8>>?>?>>?>>>>>=?>=?>?>>>?>>>>>>?>=>>>>>>>>?>>=>>>>?>?>=:== LB:Z:Solexa-135852 MD:Z:6A14C4A7G179 RG:Z:H06HD.1 NM:i:4 AS:i:194 XS:i:19 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:2:1216:12243:93300 83 1 854836 60 94S156M = 854502 -490 GGGGCCATGTTTTCCTTGGTGGCGGGGGCGCCGCCGAGGTCTGGCTCCTTCTTGGGCTTTTTTACGCTGTTTGTGTTCTCTCTGTGCCCATGGCCCCGCAAAGCTCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCTTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCC ####################################################################################################@==>>?>A?@?>@>@?=A@?>@@??A@A?<60<.>?@?6>@A@@==*@?B>A?>>:A:@>B>BA>776?=AB=5>;???;??==;>?@=>=<>=<===>=>@<>>=4=???>6>?8?>=??9=@??????>?;<= LB:Z:Solexa-135852 MD:Z:5C49C86A13 RG:Z:H06HD.2 NM:i:3 AS:i:141 XS:i:20 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:2106:5901:97638 163 1 855122 60 225M25S = 855325 363 CGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTTGCAGGGGGAGGAGAGGGTGAAATTGGCTGAGCCCATCCATTGGGACAGACCCTCCCGCTCCTTGGGGGTCTGGAGAACTCTATTCCTTCTCTTTGCCTAACCTCCAAGTACTCACGCCGCTGGTAGCGG =3:>????>>@?>>>>>>>>>>@?@???>>@>>@@??@??@>5@??8@@@A@@A>@=>?@A@AB@@@@@AAB;BAABBBCABB@B@@BB;?@=(5AA@?=A/&79*8???B8:1>>=A+5<>AB@A5@BABB8@A5=?##################################################################################### LB:Z:Solexa-135852 MD:Z:120G67C28T7 RG:Z:H06JU.1 NM:i:3 AS:i:210 XS:i:20 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2106:6811:81410 163 1 855119 60 158M92S = 855619 750 CTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCCCAACCCGGGCCAGGCCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGGGGCGCGGGGGACATTGGCTGAGCCCTGCCAGTAGAACAGACCGTCACACTACTTGCGGATCTTGCGCACACGCTAACATCTCTTTGCATAAACACCTAGGACTTGCGCCCAACGACG =?;=8:@=/8@??@>?=@??A==#@??@@5>=>?==A?=>A<=A>6@@@7@@@?3;=)0687B;@=8:@?@?:@8&5=?2A>???(2B################################################################################################################################################################## LB:Z:Solexa-135852 MD:Z:85A14T31A2A1A3T2A13 RG:Z:H06JU.1 NM:i:7 AS:i:123 XS:i:20 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2115:8505:7360 99 1 854901 60 250M = 855646 898 GCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACAGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGAC =>2?@@??@?>>8????>8?>?>?>???@>>@?>@@A?A?????AA@@?A=8?@@@>4@@9@AA?,4<=?AA;@>BAB:C?BAB?ABA@AAB@AB?AAB@C?C@BAAAA@AAAAAAAAAAA@?A?:AB=@;76@<@ACA?AAABA@:BAAB@@AAA9CAA=9?CAAB@B@9?ABA=ABACA;ACAAAA@@BAAAA8?BA@AB=9=>@BA9=AA@8>>@AABA6+7>2=>?AC@;@-39A@??AA?@?@?9@?==???>?>?????@@??@@???>?<>A??@@?>??=@>5??@9@??A<@A@??@>?A@A?A@BAAAAA:A@ABB?BAAA?A@@BB8,9=@A@?>?=B@1BAABA@?BB;B:;@=A@A?@BAA:>AA>?@@A@A>-3@?AAAA8?B*+,>>ABAAB@AA@@?C?CAB??9A>?@;B@>&:@@@?ABBACA?7>6>?B@B*?BAABBACACBBAACA>?;@BAA################## LB:Z:Solexa-135852 MD:Z:250 RG:Z:H06JU.1 NM:i:0 AS:i:250 XS:i:19 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1206:3844:74800 99 1 854779 60 237M = 854836 237 AGCCTGGCACCCTCATCGGGCCTGTTACGCACGTTCTGGTCTCTCCGTGCCCACAGACCCGCCAAGCTCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATG ==<>?@@?@=>>?>??>8??@>@????>8??>8??>@????A>@>>8@??>?@>@@A>?@9@@ABAAB@B?ACBABCCABBAABAAABAAB?BBAAAA:B?ACAACAAAAAAAB@BABB?BBAA:A>AAAAAAA:CAAAA:A@B@B?BABB@AC@9@AC@@@B?@ABAAC>B@9?@>B@:A@8?AC?A9:?=BA8?AAAA87:=A??AB=AAA######################## LB:Z:Solexa-135852 MD:Z:199A37 RG:Z:H06JU.1 NM:i:1 AS:i:232 XS:i:20 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1206:3844:74800 147 1 854836 60 57S180M = 854779 -237 GACTATACATCTTCGCGGGCGTTATACGCCACTCGCGGATCCGCCCGCCCCAGCGACCCCGCCAGGCTCCCCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATG #########################################################################BAACBB?9(@BBAABA;9>?CBBB;A@A?@AABCBBBBA@A>CAB@@;4@;B@C@CBBBA8AABBA8@A@@?AA>?<=BBC@CBBCACAB@A?A?@@>?:?BA?@9?@9=???@8>@>@>6>@?@?8?@?@?>???@????@==???@@;@A???=??>>=;>= LB:Z:Solexa-135852 MD:Z:7A4A129A37 RG:Z:H06JU.1 NM:i:3 AS:i:165 XS:i:20 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2104:15554:25815 99 1 854883 60 250M = 855429 647 CTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATTTCAGACAGGGTGCCGCAACAGTGCTTCGGGGGCTCCT ?A<>?@@????@???>@???8???????>>6@??@>8?>?>@>@@@@>?@?@??A?@?A@A?A@ABA@?:AABB?:BB9BBC?A:AAAAA:AAA?A:BA=BB?BAAAAAB@AB?AAB@B?B@B@AAA@AA@AA@A==AAB?B?9A?=?@?A?AAAAA@@AACBA8?@BBA@>@@>@>?BA?>AA59B@BA??=;=7??@??>?>===>=?==?>?>?>???>8>??>?>7?>7??>?>??>A>@>@?>5@@A@A@@AB?:BB?:@B@B?A@?B?B?@9@@A@@@>A@A>@A9A@AA@BA?A>@A@A@AA@@@@A?@A@A@BA@AA@A@@9B@@A@AAA@@@@AAA?A@AA>AA@A7A<>@@A?@@:BAAAA:;>B@@>A>@@>?@8?><@>9=?:A@B@A69>:@@6?;-=@####### LB:Z:Solexa-135852 MD:Z:41A200A0G6 RG:Z:H06HD.2 NM:i:3 AS:i:237 XS:i:21 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2204:14900:50397 147 1 854905 60 41S209M = 854736 -378 GCTGCTTGGGTCATCACTGCAAGGTTCCTAAGTGCACGCGTTGTGGCACGAGGCTGTCACACAGGACCTGTGCCGAGAGTGCGCTGACGTGGCCGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAA ############################################################################################################################B9=>>2<<=<:?>=@A99A??>;66;7??<>@>88@=8=A?AA<;>?7?>@@;???>@A?>?=??A5>@??>>.>>?@>?=?>?>@>@>><>@:8?:>= LB:Z:Solexa-135852 MD:Z:6C6C9C8T7A10A21A96C38 RG:Z:H06HD.2 NM:i:8 AS:i:169 XS:i:0 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:1114:10159:39851 83 1 854847 60 250M = 854434 -663 CCCCAGCCAAGGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGT #############################:A@?;;558;8@@BA>=@B@A9@<>18A?B?B@???9A=?B=8?=A>A@>BA8<>?A?@AABAB@A?BA@@ACAA:@@>@@;AA:AAAAA;?BAAA:?BBAA:@CAA@@AA@CAAAA?@AAAABAAABAAB?ABAA@AB@BBABB@A@B:A@AABA@BA??@A@?@?@@@9>A???>>A???A??>@@?@@?@?8>@@????@>@>?????@? LB:Z:Solexa-135852 MD:Z:1A8T120A96C21 RG:Z:H06JU.1 NM:i:4 AS:i:233 XS:i:0 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:2104:4504:70032 163 1 854796 60 179M71S = 855257 710 GGGCCTGTTACGCACGTTCTGGTCTCTCCGTGCCCACAGACCCGCCAAGCTCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGGGAGCTGACGTGGACGGCGGCACCGTGGCCGTAGTCCAGGCACCCTCCGCTGACCACTCAGCATTCTGGCGTCTGTGGTCATCTGACAGGATCGCGAGAGCGC <<:>>?>>>?<7?><7>>=?=:?>>>?>=7?=;>>?<>>><>=7>>???>@?@=?@=??==?<>>A@>?@@@@=;@>?@@@7@?@@>A?>=8;:=>@>?>)>;?@>@79588==?@@3&66?@3:=A=>7A897:?################################################################################################################## LB:Z:Solexa-135852 MD:Z:147T31 RG:Z:H06HD.1 NM:i:1 AS:i:174 XS:i:19 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:2:1206:15762:8600 147 1 854836 60 106S144M = 854663 -317 CCGTGACTATGTAGATAACTAGTCTAGACACCATCCAGAGAGCCGCACCGCCCTGCACCCCCAGCGGCCATCTTCCCCACCGTCCTGCTCCCGCGGACCCCACACCCCCGCCAAGCTCCCCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCG #######################################################################################################################=>B???@;8>A@>??=>BB??A@@?6=9<>=?@??>??>A@B?<;>?>>:@@@@AA;<77><@A@9=?@?@?=@>=:>?>==?>@=?>?@>>>>8>?=>>7=>8?<>>>8=?>>?7=>=>:3= LB:Z:Solexa-135852 MD:Z:12A129A1 RG:Z:H06HD.2 NM:i:2 AS:i:137 XS:i:0 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:2211:2712:99692 83 1 854853 60 216M = 854853 -216 CCAATGTGCAGCAAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCAC ##############AAA@A@=6*7?:AAA856=1,)=>;;@@@CAAB>AB>;?AB?C@C>A@AA@@?;4>B<><:BB9@>9-23?A>B>:?ABB@9@A;A@A>@:;76@@9@A@??@@>??>??>>>>@>@>8?@7=??@@????????@@@?A><@? LB:Z:Solexa-135852 MD:Z:12C112A90 RG:Z:H06JU.1 NM:i:2 AS:i:206 XS:i:0 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2211:2712:99692 163 1 854853 60 195M21S = 854853 216 CCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAATGAGCTGGCGTGGACGGCGGCACCGTGGCCCTGGCCGAGGCACCATCCCCCCACCCCCACTCATGTAGCGACGCGGGGCACACGGACACGAGCCCAAGGCCTTCGACCATGGCCCCGGACCTGCAC ===?>?16::@@@?>@>=@?8=?=7@>9A28???>??@?A?@;)?:,<>?5=/99?@==@7B@?A@5=@A>@>B?B>?########################################################################################################################################## LB:Z:Solexa-135852 MD:Z:89G7A22G4A13T6T11G2T1T13T0G16 RG:Z:H06JU.1 NM:i:11 AS:i:140 XS:i:23 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:1208:17645:46632 99 1 855091 60 250M = 855469 538 CAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGGGAAATTGGCTGAGCCCATCCATTGGGACAGACCCTCCCGCTCCTTGGGGCTCTGGAGAACTCTATTCCTTCTCGTTGCTT >><>>?=?????>?>=?@>5???=?>=?@?@>99?????>>?>?=>?>>=>>?@?@>7??@A>@@?>6@?@B?:?@A:BAABAB??AA?@@=AA>>A859?AA?>==>@??BA@AA@@?>:BAA<;?A@AA@A@@)=@?@@?@>=A&5<8@>A??=@>A=2>=?@??@>?<=>??=>>>>>>?>??=>??>=>>??==7?==?>????>>>??A??@@@>@A@A9@?AAAABAA:BAABA:A@A?A>A@AA>@A@@@AA@A@A@@@A@AA@A>9@@@A>9@A9@AA>@:@@@A@9@AAA@9BA@AA>@A@?@@A?@A>@@A?A>A?A@?@@@@@@@A@??@@BB@@@8AB@BA@@@???AA>=@AAA?:@@AA<=<5?>A@?=B?A@AA>A?8>B LB:Z:Solexa-135852 MD:Z:141A95 RG:Z:H06HD.2 NM:i:1 AS:i:232 XS:i:0 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2112:2331:51275 147 1 854866 60 29S208M = 854837 -237 CGGCTAGCGTACGAAGCCAAGGGCCAGCAAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGC ######################################>8@?7<:?=7.??:@>?@AA9>B?BA:??>9@@?B@@@AA@?BBA@@A@A=A@A?AB@@:?B>@?:AB:ABA?A:?BABA9?BABA:@BA?A@AAABAA@?<=;AA?@@@@>@A>???>?>?>?7>>>??>=??>??>?=????@8=?>>>==?>>>>=?>>>>?>>>?7:<= LB:Z:Solexa-135852 MD:Z:112A95 RG:Z:H06HD.2 NM:i:1 AS:i:203 XS:i:0 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:1209:3582:7506 83 1 854842 60 250M = 854556 -536 AAGCTCCCCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCC #######@@AA@A?6C?BA@CA>=BAA@A@@;AA;@>><,AA@BB@ABAABAA@BA@>9B:A?B?BAAAA;@BAAA:?BABAAABAABAAA>BA@B@B@B?B@BAABAA:?BA@A:AA:ABAAA:?BAAA:?BAAA:@BAAABAAACB@ACA?=AAAB@AAAAAB?ABBBAAB@BABBAAAAA:A@A@A@?A???@@@?@@@@?9>???A>>???@@>@@@@?@@??@8>??????@>?=?@@@@@>;== LB:Z:Solexa-135852 MD:Z:6A129A96C16 RG:Z:H06JU.1 NM:i:3 AS:i:235 XS:i:0 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:1103:8586:39204 83 1 855135 60 250M = 854985 -400 CATGAGGGCTGAGGCCCACCTAGACCCACGTCCGCCCGGCAGGTGGCGGCTGCATCCCCGGTCCCCTCCGCAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAATTGGCTGAGCCCATCCATTGGGACAGACCCTCCCGCTCCTTGGGGCTCTGGAGAACTCTATTCCTTCTCTTTGCTTAACCTCAAGGTGCTGGGGCCTCTGGCTGCTGCAGCATTTACAGA ################################################################################?A?>?==A=5@@?69;<&6;?A=A>@@AB>@A>?=>A??A=A?;==,A@>@?????@ABA=@=*>?>9:;4>@>==60/;6<78@>>A?>@??>@@BA@??A?B>>@>A>?@=@@@>???@@;?>??>@=<@==@>?>??=???>@>?=*>>>>5???@@?9>=> LB:Z:Solexa-135852 MD:Z:14A8G13A9A21A180 RG:Z:H06HD.2 NM:i:5 AS:i:225 XS:i:19 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:1103:8586:39204 163 1 854985 60 129M121S = 855135 400 CCATCCCTCCACCCTCACTCATGTAAAGATGTGGGGCACACGGACCGGAGCCCAACGCCTTCGTGCTGAGCCCTGGCTCTGCACTCGGCTGCCAGGGTCTCCCACACAATGGCAGAGAGGGGGCCGCAATCGTCCTTCGATGGCACCTGACGTGAGGACATACGAATGCATANGCCTACGGACGTGCAACCACTAGCAGCTGCATACCAGGTCNCCTGCACAACTCAGCNNNCGNCCNNNNCNGNNGCNN ########################################################################################################################################################################################################################################################## LB:Z:Solexa-135852 MD:Z:25G0G18T9G12G21C4A9C5T9T7 RG:Z:H06HD.2 NM:i:10 AS:i:79 XS:i:20 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:2205:10039:44048 83 1 855147 60 250M = 854842 -555 GGCCCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAATTGGCTGAGCCCATCCATTGGGACAGACCCTCCCGCTCCTTGGGGCTCTGGAGAACTCTATTCCTTCTCTTTGCTTAACCTCAAGGTGCTGGGGCCTCTGGCTGCTGCAGCATTTACAGAGGAATTGTCTGG ######@@AB@>>A?@:??>1A>7,ABABA;?ABABAAB==5@?AA9@?BAAAABA@A>?8?A;B@BAABA?CAABAAABAABAAA:AAB>B?AAAAABAAAA@BA@B@BAA?@@AAABCAAAB@BBAAAABAAABBAA@AACA>AABBAA:AABAABBAAAAAA>B?@B@BBAA@@AA@@@@@@@????@??@@???A?@@>??AA?>>>???@@??????????@????????@>?>>?@?@>@?=?? LB:Z:Solexa-135852 MD:Z:2A247 RG:Z:H06JU.1 NM:i:1 AS:i:247 XS:i:19 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:2112:18402:68507 99 1 854926 60 250M = 854992 257 AGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCCACAGTGCTTCGAGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTTCGCCCAGCG >>>=>?8=@>>96<:->:/;@9*=>:>8=75;;2>).;;5<:/6>;2=>=<>A??7>?>A?B<>>@?@;88<6@?=<:7<=>A>&4=@>?8@ABB;=;483A>&<.=A>6==>>7=BB>B??+1:??A=3=94=>AA=>@???@?@6<<.785(<<9=:???>><@@=?5=;1&*;<=;A@=?:)4>?A@8?:5:=2/@:55@@9>&4:;2;;<=?:=64>?A=>@?>>>?(>=??,=4'1=?:@;<< LB:Z:Solexa-135852 MD:Z:6C3C9G3T58C107 RG:Z:H06HD.2 NM:i:5 AS:i:166 XS:i:20 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:2214:19926:54869 83 1 854880 60 250M = 854524 -606 CTGCTAGGGTCCTCAGAACAAGCGGTGTGGCCCGAGGTCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACGGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCT ####################################################################################################################?=<:<6>=@@A=@AA@@@@:??>>:>@>>4??A>>?=@84':@A>?<@A>6==?6792?8;=AA@=?9@???;A3<9:<=&7@??=@?><>41+<6>@?@?<>?;>=;6?5@@?@=@?92A9?/@>>>> LB:Z:Solexa-135852 MD:Z:9G27C48C11A96C54 RG:Z:H06JU.1 NM:i:5 AS:i:225 XS:i:20 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:2208:7065:42848 99 1 855036 60 250M = 855458 574 CCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAATTAGCTGAGCCCATCCATTGG =>;>>=>>7<=??>>>>>>?>=??7>??>>>>>?<==?>>>><>>>@?>??@?@?B=::;;><6>>?>@9:=?>@>774+:>>=@@>>=??>@=>??@?@??@>@@<@?>>:>=@@>8>>@8@>;;>>@=<==8>@>??=???<=A@5<==@?=@>@@=@?=>>7:?@@@<=><>@>==@??@<>>@8@@?9=>??>?@>==??=9<*9:<9-.2:>>9@*8(><8<<>?@?####### LB:Z:Solexa-135852 MD:Z:39C191G18 RG:Z:H06HD.1 NM:i:2 AS:i:240 XS:i:0 PU:Z:H06HDADXX130110.1.ATCACGAT +H06JUADXX130110:1:1112:6257:66807 163 1 855089 60 226M24S = 855340 501 CCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAACTGGCTGAGCCCATCCACTGGGGCAGACACTCGCGCTCCCTAGGGCTCTGCAGAAGACACGTGCTGGACCTTCC ==;>???>>????@>>???@?6@??>????@@?>8????@?>=A???A@@@@>?>A@@@@?>AB?A@AAA@BBB?;?@?9ABBAAABA=5??AB?B>>AB@@BBB;5>=?BB??AA>BC@BB2=6A>B@?;?<63>@=?=4?8=(>/>>==8+=@>?<*6@>?@=>;>>(@,@<< LB:Z:Solexa-135852 MD:Z:9T6A9A5T73A39C5 RG:Z:H06HD.2 NM:i:6 AS:i:122 XS:i:20 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:2210:11744:12253 163 1 855001 60 225M25S = 855291 540 ACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGGGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCACCGGTCGCCTCCCCTACCCGCGCCAGGTCCAGGCGCAAGGCAGAACAGCTGGCATCAGG =<>=@?@???@9:=???????7><=8>A=@?<@<@>?@@=?>>@??6?;:?@57:?A?@?@A@@?>:C=A@A9=>=?CAAAB?ABA?>@=>-85=5>9:@ABB9A?@@C?&+(69A596:>69AB8899?AA<>?ABD?A@9A@BB>BBA############################################################################################## LB:Z:Solexa-135852 MD:Z:74C41T73C6C5A1A5G13 RG:Z:H06JU.1 NM:i:7 AS:i:190 XS:i:21 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2102:2988:48450 99 1 855063 60 250M = 855568 681 CTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAATTGGCTGAGCCCATCCATTGGGACAGACCCTCCCGCTCCCTGGGGCTC ?A@>9????@>????>>@?>>?>>>????????A??????@@@8AA@>@@?@@@@@9@@@?@B@ABAAACABCBABBCACAAB?AB?ACAAAAAAB?:AAA:AAACAAAAA@AABBABC@@BAAAAA;A@=BBBA??B@@A@AA0:@?@?;>+7@<;?BB@AB@ABA;A??@>6>@AA@@A?AA############################################################## LB:Z:Solexa-135852 MD:Z:12C228T8 RG:Z:H06JU.1 NM:i:2 AS:i:240 XS:i:19 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:2213:3884:26257 83 1 855137 60 86S164M = 855137 -164 AAGTTACTTAGATTTATCTAATCCAGCTAGAGACGGCTAACGATACCGAGTTGTGCCTGCATTTCAGACGTGTGCTCTTCCGATCTTGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTACACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAATTGGCTGAGCCCATCCATTGGGACAGACCCTCCCGC #######################################################################?=??@62@<7>?@????A<6??@?@?>=/>7??@A?AA==65@A@9B@??>=>A?<@A?>A??AB==A@A=8=2=A=9;468&<<365825@6=7(?BAABA??@A?>@:@7?@A??>A@??@@==??????@>????>???>@?>?>??>>>>>===>?@>>???@?>2=> LB:Z:Solexa-135852 MD:Z:65C98 RG:Z:H06HD.2 NM:i:1 AS:i:159 XS:i:20 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2213:3884:26257 163 1 855137 60 158M92S = 855137 164 TGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGGGAAATTGGCTGGGTCCATCGATTGGGACAGACCCGCTCGCAGATCGGAAGGACTTTGTGTAGGGAAGTGCTGTTGACTACAGTGGAAGTGCTGCCATTATACTCACATATAGAGATATGTCTACAG =<;>?>@@?8?>>=>?<>6=??>==>>9>=?8?=>?>=?>?976==??@?=?>>=>?8>??@;=<<169@=@@95A@B0@=>6;?@??B@?@>@############################################################################################################################################################ LB:Z:Solexa-135852 MD:Z:123T11A1C5C14 RG:Z:H06HD.2 NM:i:4 AS:i:138 XS:i:21 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:2108:3033:93555 99 1 854836 60 250M = 855188 481 CCCGCCAAGCTCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCCAGGCCTTCGTGCTGGGCCCTGGCCCTGCACTCGGCTGCCAGAGTCTC >?<8@@AA8<=?@<>???>=@?>>?@?>@?<>@?=?@);@@8A>@>???>?>7+>@@>??>;?6>746;8B@A0&,66A;;?>:@?@:@A<>B><@;8?A?BA9=;>BB=<>96??C@;AA+=7&=@@:>20=A;5;=0?=A=>????@??A,*98?6+47*7:>A&9B?+065&3:B@AA9&;:9:?/)92?+(/<6:9@@=:56)96:89>CA;@B=;BA>@###### LB:Z:Solexa-135852 MD:Z:142A59A23T12C10 RG:Z:H06JU.1 NM:i:4 AS:i:230 XS:i:19 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1206:13018:87986 99 1 854837 60 250M = 854957 338 CCGCCAAGCTCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAACGCCTTCGTGCTGGGCCCTGGCTCTCCACTCAGCTGCCCGAGGCTCC ??6?@A@?@??@>????>@???@@@@????@??>@??A@>9A<;?@AA>@>=?@?A>@@AA>@A@@:6=>=>C@B??>?B?ABA@AACACABAAABAABAB?:?@?C?*7@:A@C?A9@A>5@8===BB9C16@C@>A?AB@::BC?ABA>,/9=A@A<<@=?B*;=A>:05B@A7>A=>@A############################################### LB:Z:Solexa-135852 MD:Z:141A61G24G5G3C2A3T4 RG:Z:H06JU.1 NM:i:7 AS:i:219 XS:i:20 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1206:13018:87986 147 1 854957 60 32S218M = 854837 -338 CGTGCACTGAGCTGAGAGTGAGCCATCAGGCGCGGCGGCACCGTGCCCGTGACAGAGGCAGCGTCCCTCAACCCTCGCTCATGTAGTGATGGGGGGCGCACGGACTGGAGGCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTGGGCTGCCCGAGGCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGC ###############################################################################################################################################################################################=9<4&=9@=@<>983)**=?;?>??>90?==@==>>>=??@><4<8>-=>=9@1.+??= LB:Z:Solexa-135852 MD:Z:13G5G8C1A6C6A9G4T5A12C34C4C2A3T92 RG:Z:H06JU.1 NM:i:14 AS:i:148 XS:i:20 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:1209:2471:61355 99 1 854846 60 250M = 855171 544 TCACCAGCTAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATG >=<<=???6???>?>?>??=>>?>=>???==7?==?>????>>>?=?=???>=>>?@8@???@@A@@9AAABA9?@B?B?BABB@AB@@@?A@A@@@=?A??A@A>9>A@A>9@A9@AA>@9@@@AA9@@@AA:A@@AA>@A@?@@A?@A>@@A?A>A@@?@?@@?@@?>@@?A@B?>A=8B?<@??>AAA>=A@AA?9@A?A?<8=@AB??BA?A@?@>A?:AAA@A@@7A@>?B:9?@####### LB:Z:Solexa-135852 MD:Z:8C123A96C20 RG:Z:H06HD.2 NM:i:3 AS:i:235 XS:i:0 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:1103:1710:17998 99 1 854808 60 250M = 854948 331 CACGTTCTGGTCTCTCCGTGCCCACAGACCCGCCAAGCTCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGTCACACGGACTGGAGCCCAAGGCCTTCGTCGTGGGCCC >>:7?@>??;>>@>>=<7>>?8=-?????>?=>>??>>???>?>??@>@>@A>AA>@@?7A?@A@@B@:=5=59@@BAB@@BA5@68=;?>>@>A:B?ABA:@@B@B@B?=?@ABA@ABA:??<>?AB9@AA<>:>:=B>89>:(;?@>:<:9&?07756?0=:AB==?AA>AB;=&=24+%663:;?:6=@<;3&8+77=A@A>B@AA?########### LB:Z:Solexa-135852 MD:Z:170A41G28G0C7 RG:Z:H06HD.2 NM:i:4 AS:i:231 XS:i:20 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:1103:1710:17998 147 1 854948 60 59S191M = 854808 -331 NNCTNNGNANNNNGGNGCNNNGCAAAGTCAGTAACANCGCACATGCGATGAAAGTGACGTGACGTCGACGGCGGCAGNGTGGCCGTGGCCGAGGCACCATCCCTCCCACCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCCGTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATG ######################################################################################################################?A@??><>4-)/?:?>A>8@;@ABA@AA<1<99>@;>?<4>>;3->=@863@;@@=:,&.&&>5?6?:(?>A>A<=:(;>>==?=?>=>?=??>>?:=2;2?8??@>=@7>?>>>7=>>>>>>??@<@>;?= LB:Z:Solexa-135852 MD:Z:6G10C0C11A16A0C70A0C6C63 RG:Z:H06HD.2 NM:i:9 AS:i:149 XS:i:19 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:1115:5592:78513 121 1 854840 60 58S192M = 854840 0 CAGCCGCCTTCGTGGGTCTACTGACGCCCGTCCGGGCCCCCCCGCCACCTCGTCCCCCCCAAGCCCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTG ###########################################################################@<8==.?8?A=254>;.2)8)49;?A?=6??A=0>>65@80930>A>=57>@>?>=<=;6/645*<>8=59>A>@?A>967:69<>=>8;55?;<;=6>>>><8=8;@>5=@==>;==>=5595>>/=>>@=>9,=:43??><>?><3<=>9== LB:Z:Solexa-135852 MD:Z:6T131A53 RG:Z:H06HD.2 NM:i:2 AS:i:182 XS:i:19 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:2113:20581:8348 83 1 855020 60 250M = 854907 -363 GCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAATTGGC #########AB@?AA?:9ACAB?A>=&?9=@CAAA@A@B@A@A?A<=9?B8ABABA@ACAB?9@@A;AA@AAA8B@94A@?74;?@@@@A@???=7??6>??@@@>=>@@@??@?A@A?@?9>@@=@>@?>??=???>>@??@?@?>>??@@@A?=@? LB:Z:Solexa-135852 MD:Z:55C194 RG:Z:H06JU.1 NM:i:1 AS:i:245 XS:i:0 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2113:20581:8348 163 1 854907 60 193M57S = 855020 363 TGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCTGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACCCCGCGGCCCGAGTCTCCCACCCCATGTCAGCGAAGGGGCCGCGAGAGGCACTCGCTGGCTGCTGTCATGACAGCTGAGAGTATCATC ==:>??7A=?@>8??@>@>@@?@>>@??@@@?@@@@>@@@@?@@>8??@@>9@:/;A???8@AAA@-=?@A?A=?AA.>>=?=@ABABBA@??A@7:B????@=BAAAB5>@B################################################################################################################# LB:Z:Solexa-135852 MD:Z:54G16A90T1G2T0C2A13A7 RG:Z:H06JU.1 NM:i:8 AS:i:153 XS:i:20 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:2216:5614:92936 83 1 855100 60 250M = 855028 -322 GGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAATTGGCTGAGCCCATCCATTGGGACAGACCCTCCCGCTCCTTGGGGCTCTGGAGAACTCTATTCCTTCTCTTTGCTTAACCTCAAG ########>86?=6:<8??@<9?@>><=@???>@?<'>>>@><>>>?>>?A>9?BA8AAA>?@>?@>A@?>B?>@A?=@AAB;@==AA@@BA@A@?>A@8>@A@@B@?B@@A?@?@@?A?@@8A?B?A?AA@A@B@A>@?B@?B>B@@?>?AA@AA@A@A?BAAA@@BA@@AA??>?>>=>>???>>8???>???>>>?????>>?>>>>???>>>=>>>>>>>>??>??>?>>?= LB:Z:Solexa-135852 MD:Z:0A249 RG:Z:H06HD.1 NM:i:1 AS:i:249 XS:i:20 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:1:2216:5614:92936 163 1 855028 60 209M41S = 855100 322 ACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCCGGCCAGGGCCCGGCTGCAGGCCGCACGGGTGTCCGTCGTCAGCAAACGCGGCACAGTCTGAGCACC =;<=>?>?>>??=>>=>>=7>=>>==>>==>>=>>>?>>?8>>@?>>?>?>><<>??A>@@B?AA>?@@8A7=?A>=>?7?>8=?AAA??>@>=>>?>@>=?@@=@??@>@A>@@@>=4>>;<7=?@88(/9>8;>>?@&2>&4:@A>@########################################################################## LB:Z:Solexa-135852 MD:Z:47C135G7T2A14 RG:Z:H06HD.1 NM:i:4 AS:i:189 XS:i:21 PU:Z:H06HDADXX130110.1.ATCACGAT +H06JUADXX130110:1:1206:13035:87990 83 1 854936 60 11S239M = 854860 -315 CAGCCTCGGGCCTGAGAGTGAGCTGACGTGGACGGCGGGACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCGCTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAAGCCCACGTCCGCCCAGC ###########################################################A>@?<07=*)=?==;;A@?B@?@9*8=@A?,>C@@=7;8,-8>>@?AAAC?=>>68?>:>9:9?>A??>A?5>=8A@=<7@=/&<;&>?9A?=@AA@A@@=?@>;==78?@@>?><>A??A6@?>?:;<=7?@===&920>=?A?<=??6>@46@@@>??> LB:Z:Solexa-135852 MD:Z:27C14A88A7C81G17 RG:Z:H06JU.1 NM:i:5 AS:i:214 XS:i:19 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1206:13035:87990 163 1 854860 60 23S156M71S = 854936 315 CCACCAAACTCACCAAACAATAAGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGCGCGAGCTGACGGGGACGGCGGCACCGTGGCCGTGACAGAGGCACCACACCTCCACCCCCACTCCTGTAGGGATGCGAGGGACATCGACTGTCGCCCGAGCGCCACGCCTCTGGGCCCGGCAGTGCAGACGGAGACCCTAGATACC ########################################################################################################################################################################################################################################################## LB:Z:Solexa-135852 MD:Z:81A1T9T22G11T0C9T5A10 RG:Z:H06JU.1 NM:i:8 AS:i:116 XS:i:21 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2205:8821:33174 83 1 855111 60 250M = 854913 -448 CAACAGTGCTTGGGTGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAATTGGCTGAGCCCATCCATTGGGACAGACCCTCCCGCTCCTTGGGGCTCTGGAGAACTCTATTCCTTCTCTTTGCTTAACCTCAAGGTGCTGGGGCC ##################################################################?>,5ACAAB@?>@AAA9B=CAA??7@@37=0?A8A:AAACA?CAACAA@BAABAAA;?;B?B?BBAAABAABA@BA@B@C@A?@ABBAAC@??AAA>>@@@?A@????@???@?=??@???@????@@???>>?@?@?>><>? LB:Z:Solexa-135852 MD:Z:11C2G235 RG:Z:H06JU.1 NM:i:2 AS:i:240 XS:i:20 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2205:8821:33174 163 1 854913 60 152M98S = 855111 448 GAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGTACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTCGACTCCGCGGCCAGAGGCTCCGATCCACGGTCAGACAGGGTGCCGCATCAGTGCGTCGCTGTGTCCTATCGTGATGGCGAATGTCGTACTAAGTTCC =><>?>7@<@=?>@>?@>?@???@@@@?@@>?@@@@?@=6??.9>7@7@?9@@9@?=A@8B@6:B?BACAA==?+==@BBB2?AAAA@9A@C>B@4>2;;483=BBBCA*8AA.*84?AA@@@9==@B=?AD?B################################################################################################## LB:Z:Solexa-135852 MD:Z:42G22A86 RG:Z:H06JU.1 NM:i:2 AS:i:142 XS:i:20 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2113:13769:38909 83 1 854720 60 17S233M = 854264 -689 CGCCCCCGCCCCTGGGCGCTGCCTGCGAAGGGCCCCCGGCGGGTCCCCCTCCCCTCTGAAGCTGGGGGGCCGCCGCGGCTGGGCCCCCTCACGGGGCCTGTTCCGCACGTTCTGGTCTCTCCGTGCCCACAGCCCCGCCAAGCTCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACG #####################################################################################################################################AA:AAABBA@BA?A@AA@AAAB?BA@B??@B@@AABB@A@:A@BBBAAABAAA@@@A@@?@?@@@@8>>?>A@@@@8>A?A?8>??????@@@@??@>?@??>@??=???@@?>=7? LB:Z:Solexa-135852 MD:Z:8T1C12T3G6T11C5T4A1A2C0T3A6T0C9A29A117 RG:Z:H06JU.1 NM:i:16 AS:i:153 XS:i:19 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1212:17605:74654 163 1 855137 60 210M40S = 855374 487 TGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGGGAAATTGGCTGAGCCCATCCATTGGGACAGACCCTCCCGCTCCTTGGGGCTCTGGAGAACTCTATTCCGTCTCATTGCTTAACCTCCAGGGGCTTCGGCCCCTTGCCGCTGCGTGCTTTAGAGCAG <=<>?????????>=>==?>@?@>??>9??>8?>>?@??@??@?@@@?@@@@@????8@@?AAAB@AA?A@@BB:@BBBCBBBAAABBBCBBBA@BB;@>:?:>AABBBBA>=A&9=A=;<>*&.&9>;@A@AB?AA8>@BACA########################################################################################## LB:Z:Solexa-135852 MD:Z:123T68T4T12 RG:Z:H06JU.1 NM:i:3 AS:i:195 XS:i:21 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:1202:16735:94446 147 1 854850 60 38S212M = 854687 -375 CTAATGTCAGCATGACACTAGACTACCGCAATCCTACACAGCCATTGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCTTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGC ###################################################?=855>?>>&@2=.:4=>@??>A>?3'0+*8==95<4&58@>A>?A81A8>A>??=>A?==@@A?@?>A>@=6?@>@A@@>?9?A@>>8@@7>>=7<8>>@A<8>>@AA9?B@A>>A?>???=?<<9AA?B?==>?>>=??>==>><>=>=>>>>?7=>>>>>=?>===>>=>>>>>7<>?=?>>?>>>>:== LB:Z:Solexa-135852 MD:Z:6A34C86A83 RG:Z:H06HD.1 NM:i:3 AS:i:197 XS:i:20 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:1:2203:18263:55254 163 1 855119 60 202M48S = 855457 531 CTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGGGAAATTGGCTGAGCCCATCCGTTTGGGCAGACCCTGCCGCTCCTTGCGGCTCTGGAGAACGCGATTCCATACCATGGCCTAAGCTCAATATACATGTACCTCTGGACG =><<7?<<=??=>?=?>===?;?>>?>?>>><>=<>??<;=??????>?>?>>@>6.=::>@@?@@=?@<>>-+5:>@>=?=?A>>>@?A@>?@@8@:88;>6?.>>===@9&7:7<@??############################################################################################################## LB:Z:Solexa-135852 MD:Z:141T20A2G2A8C10G13 RG:Z:H06HD.1 NM:i:6 AS:i:172 XS:i:21 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:2:1213:10410:31581 99 1 855086 60 245M5S = 855469 545 CCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAATTGGCTGAGCCCATCCATTGGGACAGATCCTCCCGCTCCTTGGGGCTCTGGAGAAATCTAGTCCTTGCACT >=<<@>@@??>>??>>@???>??>8@??=>?>?>>>?8??<==?=??>>=>>=?==@A?@BBA6@?AB>:@@A:BAABAAA@>AAA@@?=AA>@@9&5>>B?=>=>?<>BAA@@?=B@:A?<6<=??9?@AA@@@B:9@?@A=A?AA??;@@?@9+6><==,>>??+@<1=:8??############################################# LB:Z:Solexa-135852 MD:Z:206C27C4T5 RG:Z:H06HD.2 NM:i:3 AS:i:230 XS:i:19 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:1209:3431:60445 163 1 854999 60 190M60S = 855241 492 TCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCCCCTGTCATGAGGGCTGAGGACCACCTCGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCAGCACCGGTCACGTGCTCAACCCGGGCCAGCCTCACACTGCAGGTCGCAGCGCAGCACTGG ===<@>???>@?@>???>???>@@>@>8?@>9??@?@??@?:7@>@@?9@@A@@@@@??B??AB@B?@A??A9@@A@AAB?B@=?:?AAA@BABBAABA>=A@BAAA8>BA;B:>;?@A@??BA0>&5<=&7@BA6?B@,@;=A########################################################################################################## LB:Z:Solexa-135852 MD:Z:76C53T26A32 RG:Z:H06JU.1 NM:i:3 AS:i:175 XS:i:20 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1212:4374:39166 83 1 854844 60 250M = 854767 -327 GCTCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAA #########?AB@?>BB@CA82<=97A@>A@A:A@?>AAA@BB@@B@AA?BABA@@>B:A?C@C>;4A;AB@AA:@B>@AAABAA@AAB?BA@A?B@B?B@BAAB@A:?CB@A:B@9ABAAA:?BAAA:?BAAA:@BAAAAAAABAABBA@?@@@B@>@AAAB?ABAAABC?CBBABB@AA:A@AAA@?A@?>@A@?@??@@9??AA?>>A@@?@>@?@@@@@??@8>??@???@?@=A@???@???<=? LB:Z:Solexa-135852 MD:Z:134A96C18 RG:Z:H06JU.1 NM:i:2 AS:i:240 XS:i:0 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1212:4374:39166 163 1 854767 60 204M46S = 854844 327 GGGGGTCGCCGCAGCCTGGCACCCTCATCGGGCCTGTTACGCACGTTCTGGTCTCTCCGTGCCCACAGACCCGCCAAGCTCACCAGCCAATGTGCAGCCAGCACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGCGGCCCGAAGCCGGCACACAGCACCCGTGCTGAGAGTGAGCCGACGTTGACGGCCGCACCGTGGACGTGTGCGCCGCACCAGTCCCGCACACTCGCCCGACTCCGGCACG =<;>?=?6?>8?@(??>>>@@>??=>@@>3>>@@@>9?>>5>?@B??<@@<@@>-=?AA@B>@?B?AA:A@B@>A=@C@BA?@BC@>@?9>A?B?B?BC@BA<6@??9=AB?@?A??>AAAB@7;@?@@A@BB=@9?@@@AA@@B@@@A@@@@A?A?@@BA9@>A>B@BA@9?A@A@9>A@@?>@AA??@@A>AA@A?A?A>@?AA@A?@9>A@?@9@A9@BA=A:?BABA:?BABA:@A>@@?@@@@@@?@?==>????>??>>>=??===>>=>>==?>?>>7=>>?>==?>?>??@??????2<> LB:Z:Solexa-135852 MD:Z:8G5A1A142A70 RG:Z:H06HD.2 NM:i:4 AS:i:210 XS:i:19 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:1110:9471:47293 99 1 855111 60 250M = 855242 344 CAACAGTGCCTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGCCGCAGTGTTGGCAGGGGGAGGAGAGGGTGAAATTGGCTGAGCCCATCCATTGGGACAGACCCTCCCGCTCCTTGGGGCTCTGGAGAACTCTATTCCTTCTCTTTGCTTAACCTCAAGGTGCTGGGGCC >><<>?>??=@>7>>>>??==?>?>??>??>???>??>?=??=>@???>=>?<8>>?8@??A@AA@@?@ABBABBABBA@AAA:A@@@@@A?@A>AA>@@9@@B@A@@@?@A@@AA@AA@@A@9AA@>?@A@@AA@@@@@?AA@AA@@@=?B@@@A@?AAAB@A@@A@?@@?A@?@A@BA@?A@A?AA9BB>AAA@?@@?A@A?@?@?@=B>A@?A?@@A?A?AAA?A@A?A;@A@@@??@?AA?8457- LB:Z:Solexa-135852 MD:Z:9T240 RG:Z:H06HD.2 NM:i:1 AS:i:245 XS:i:19 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:2114:5637:61409 163 1 855003 60 215M35S = 855178 425 TCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCACCAGGTGGCAGCGGCATCCCCGGTCCCCTCCGCCACCCGGGCCAGTTCCAAGATCGAGGCTCGCCTGCTCACAGCAGTAG ==<>?>???>@???>>>???>?=8?@>A?@@?@?>@@??@?;??8??@A??@@>>@@@@B@A@@A?>@:>@??A=@>A@B>AAAAA@BBB@ABBABBCAB4:86>A@9B>@>B?7:>A5@6:>=AA&>A@A=@B5?=;=??B:B@A@4@-7=?@>?CABC?6>A>66A@7).*9'?A>BB###################################################################### LB:Z:Solexa-135852 MD:Z:72C97G11T18A1A11 RG:Z:H06JU.1 NM:i:5 AS:i:190 XS:i:20 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:2208:2358:36315 83 1 854868 60 224M = 854868 -224 CACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCC >???@@??8>?@>@@>>@?@?@@?>?A?@?=;@?8@?A>@>>AA9?@@AA9>@??=>>@>;>A>A>@C@A?B?A?A>@A@A?>8=@@=>9@A9>><:<8>@@@@8>@?A@9?B>?>?A@@@>:?@=;8A?>?<<=?@@A?A@@@??@?A@>>>?>><9?>@?@?=?=?<>??>?>>?>8=????>>>>>>?:>>==??>>>=7=>>>>==?>????>;:== LB:Z:Solexa-135852 MD:Z:110A96C16 RG:Z:H06HD.1 NM:i:2 AS:i:214 XS:i:0 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:1:2208:2358:36315 163 1 854868 60 203M21S = 854868 224 CACAAGCCCGACCTGCTAGGGGCCTCAGAACAAGCGGTGTGGCCCGAGGCCGTCACACAGCACCTGTGCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCCTCGTGCTGGGCCCTGGCTCTGCACTCCGCTGGCAGAGTCTGATACAC =>9>?>?>>7?<>>=>>>>===>=>=>>>><>>>>7==>?>??>=5=:=<=6=;<>>;=>><>?@>;;@<77;=???@=8-<>8:5@A7?@<@57;=A@&8/<>@9?=;>>@=?@72??@A?A=??@@=>62>?>?@<>;>>>9>A?>>@?)?:2?>??######################################## LB:Z:Solexa-135852 MD:Z:110A65T26 RG:Z:H06HD.1 NM:i:2 AS:i:193 XS:i:19 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:2:2216:17544:99486 99 1 855025 60 207M43S = 855400 446 CGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGGGCCGCAACAGTGCTTCGGGAGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCACAACCCGGGCCAGGTCCAGGCTGCAGGTTGCAGGGTTGGCACTGGGAGGGGCAAGTGTAAATTGCTGAGC >5:?=;@;;>==?=?8%==?<=5=(8<9'%:==@2=<@><4@?=@>8:=;>;?>*;7:==3::A@>>??<*>>@?==&5<;,&<=1>:=:>;=@8<###################################################################################################################################################### LB:Z:Solexa-135852 MD:Z:50C30T19G105 RG:Z:H06HD.2 NM:i:3 AS:i:192 XS:i:19 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2103:6333:37609 147 1 854992 60 37S213M = 854642 -563 GACTCTGTGACAGTGTCGGTGCGCGAGCCTCAATGCGTCCACCCTCGCTCCTGTAGGGATGTGGTGCAGACGGACTGGCGCACAAGGCCTTCGTGCTGGGCAGTGGCTCAGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCATCAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGCTGCATCCCCGGTCCCCTCCA ###############################################################################################################################################################################################@?<7285<;=><;::;33246#?)%:>?>@>:A?;;@;>;<9;:28=5+<7=8:3>:<< LB:Z:Solexa-135852 MD:Z:9A3A13G3C9A2C19C0C6T10C37A91 RG:Z:H06HD.2 NM:i:11 AS:i:158 XS:i:20 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2201:15230:48802 99 1 854935 60 250M = 855173 413 GCTGAGAGTGAGCTGACGTGGACGGCGGCACCGTGGCCGTGGCCGAGGCACCATCCCTCCACCCTCACTCATGTAGGGATGTGGGGCACACGGACTGGAGCCCAAGGCCTTCGTGCTGGGCCCTGGCTCTGCACTCGGCTGCCAGAGTCTCCCACCCAATGTCAGAGAGGGTGCCGCAACAGTGCTTCGGGGGCTCCTGTCATGAGGGCTGAGGACCACCTAGGCCCACGTCCGCCCAGCAGGTGGCAGC >==>??@?>???>?>?=8?>??=8??7???=?8>???>7>???>7@?;@?<>??=??@>?@>@@A?A>A@BAA?@AAA@AA@??A>7@A?AAA@AA?A@AA>A?7<>B@AA@@B???A?@@A>@@???@@>A?@?@?AA>=B@:ABA@BA@??@=?6=/B?@?A@@A>=?>@A@AB?<=A?AB?6=?@:<@@@?BA@8@@?>:90 LB:Z:Solexa-135852 MD:Z:43A96C109 RG:Z:H06HD.2 NM:i:2 AS:i:240 XS:i:0 PU:Z:H06HDADXX130110.2.ATCACGAT diff --git a/adam-core/src/test/resources/NA12878.1_922305.G_GC_hom.sam b/adam-core/src/test/resources/NA12878.1_922305.G_GC_hom.sam new file mode 100644 index 0000000000..ca2e16490d --- /dev/null +++ b/adam-core/src/test/resources/NA12878.1_922305.G_GC_hom.sam @@ -0,0 +1,172 @@ +@HD VN:1.5 SO:unsorted +@SQ SN:1 LN:249250621 +@SQ SN:2 LN:243199373 +@SQ SN:3 LN:198022430 +@SQ SN:4 LN:191154276 +@SQ SN:5 LN:180915260 +@SQ SN:6 LN:171115067 +@SQ SN:7 LN:159138663 +@SQ SN:8 LN:146364022 +@SQ SN:9 LN:141213431 +@SQ SN:10 LN:135534747 +@SQ SN:11 LN:135006516 +@SQ SN:12 LN:133851895 +@SQ SN:13 LN:115169878 +@SQ SN:14 LN:107349540 +@SQ SN:15 LN:102531392 +@SQ SN:16 LN:90354753 +@SQ SN:17 LN:81195210 +@SQ SN:18 LN:78077248 +@SQ SN:19 LN:59128983 +@SQ SN:20 LN:63025520 +@SQ SN:21 LN:48129895 +@SQ SN:22 LN:51304566 +@SQ SN:X LN:155270560 +@SQ SN:Y LN:59373566 +@SQ SN:MT LN:16569 +@SQ SN:GL000207.1 LN:4262 +@SQ SN:GL000226.1 LN:15008 +@SQ SN:GL000229.1 LN:19913 +@SQ SN:GL000231.1 LN:27386 +@SQ SN:GL000210.1 LN:27682 +@SQ SN:GL000239.1 LN:33824 +@SQ SN:GL000235.1 LN:34474 +@SQ SN:GL000201.1 LN:36148 +@SQ SN:GL000247.1 LN:36422 +@SQ SN:GL000245.1 LN:36651 +@SQ SN:GL000197.1 LN:37175 +@SQ SN:GL000203.1 LN:37498 +@SQ SN:GL000246.1 LN:38154 +@SQ SN:GL000249.1 LN:38502 +@SQ SN:GL000196.1 LN:38914 +@SQ SN:GL000248.1 LN:39786 +@SQ SN:GL000244.1 LN:39929 +@SQ SN:GL000238.1 LN:39939 +@SQ SN:GL000202.1 LN:40103 +@SQ SN:GL000234.1 LN:40531 +@SQ SN:GL000232.1 LN:40652 +@SQ SN:GL000206.1 LN:41001 +@SQ SN:GL000240.1 LN:41933 +@SQ SN:GL000236.1 LN:41934 +@SQ SN:GL000241.1 LN:42152 +@SQ SN:GL000243.1 LN:43341 +@SQ SN:GL000242.1 LN:43523 +@SQ SN:GL000230.1 LN:43691 +@SQ SN:GL000237.1 LN:45867 +@SQ SN:GL000233.1 LN:45941 +@SQ SN:GL000204.1 LN:81310 +@SQ SN:GL000198.1 LN:90085 +@SQ SN:GL000208.1 LN:92689 +@SQ SN:GL000191.1 LN:106433 +@SQ SN:GL000227.1 LN:128374 +@SQ SN:GL000228.1 LN:129120 +@SQ SN:GL000214.1 LN:137718 +@SQ SN:GL000221.1 LN:155397 +@SQ SN:GL000209.1 LN:159169 +@SQ SN:GL000218.1 LN:161147 +@SQ SN:GL000220.1 LN:161802 +@SQ SN:GL000213.1 LN:164239 +@SQ SN:GL000211.1 LN:166566 +@SQ SN:GL000199.1 LN:169874 +@SQ SN:GL000217.1 LN:172149 +@SQ SN:GL000216.1 LN:172294 +@SQ SN:GL000215.1 LN:172545 +@SQ SN:GL000205.1 LN:174588 +@SQ SN:GL000219.1 LN:179198 +@SQ SN:GL000224.1 LN:179693 +@SQ SN:GL000223.1 LN:180455 +@SQ SN:GL000195.1 LN:182896 +@SQ SN:GL000212.1 LN:186858 +@SQ SN:GL000222.1 LN:186861 +@SQ SN:GL000200.1 LN:187035 +@SQ SN:GL000193.1 LN:189789 +@SQ SN:GL000194.1 LN:191469 +@SQ SN:GL000225.1 LN:211173 +@SQ SN:GL000192.1 LN:547496 +@SQ SN:NC_007605 LN:171823 +@RG ID:H06HD.1 SM:NA12878 CN:BI LB:Solexa-135852 PL:illumina PU:H06HDADXX130110.1.ATCACGAT +@RG ID:H06HD.2 SM:NA12878 CN:BI LB:Solexa-135852 PL:illumina PU:H06HDADXX130110.2.ATCACGAT +@RG ID:H06JU.1 SM:NA12878 CN:BI LB:Solexa-135852 PL:illumina PU:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:2212:8566:17467 99 1 922330 60 214M36S = 922669 533 TGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGGTCTGCCTGCCTCGGCCTCCCAAAATGCTAGGATTTCAGGTGTGAGCCACTGTGGTTAGCCTATTTTGTCCATTTTAAAAATTAGTTTTGTGCCTGGTGCGGGGGCTTCCACCTGTTATCCCCGCCATTTTGGAGGCCGAGGCAGGGCGATCACCTTAGGGCAGGAGGTTTAAGCCAAGCTG >=;>>??????>>?>>?=7>?????>?=?@>?=??<=?/=@;-@@3A;>=:;;A>############################################################################################################################################################################################ LB:Z:Solexa-135852 MD:Z:68A23G10A52G0T0G11T4C0A7A5A2A4G15 RG:Z:H06HD.2 NM:i:13 AS:i:149 XS:i:56 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:1:2208:11330:81404 99 1 922338 60 227M23S = 922667 350 TAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGGGGTTAGCCTATTTTGTCCATTTTTAAAATTAGTTTTTGGCCTTGGGCGGTGGCTCACACCTGTAATTCCAGCAATTTTGGAGGCCGAGGCAGGCAGATGACCTGAGGGCAGGAGGTTTAGTCCAACCTGGCCCACAG >>:>>>>>?<7>>>9=?>;<=?>>>>>?>>?>?<-8>/;>;<=?1?9>=;######################################################################################################################################################################################################## LB:Z:Solexa-135852 MD:Z:112T23A11G6G1T21C10G20C2T5T6 RG:Z:H06HD.1 NM:i:10 AS:i:177 XS:i:91 PU:Z:H06HDADXX130110.1.ATCACGAT +H06JUADXX130110:1:2212:3713:66197 83 1 922268 60 38M1I192M = 922268 -230 TTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGTGGTTAGCCTATTTTGTCCATTTTAAAAATTAGTTTGTGGCCTGGTGC AB?AAAABACAA@A?>4AC@ACBABAA@ABA@ABA?BA@AB@AABAABA;AABAA@AB@BBBBB?AABBBBAC>@AAA@A:AAA?BBBAAAAAB?BBAAAABAAABA?BABAAA?ABAA@@AABBAAB@B@ABABAAABAA@B:AAAABB@A@@@>@@@@@???@@??@>>?>?>@@?@???>?>>??@??AA?????>???????????????@>???=?>@?@@>==?? LB:Z:Solexa-135852 MD:Z:230 RG:Z:H06JU.1 NM:i:1 AS:i:223 XS:i:118 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2212:3713:66197 163 1 922268 60 38M1I192M = 922268 230 TTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGTGGTTAGCCTATTTTGTCCATTTTAAAAATTAGTTTGTGGCCTGGTGC =>;=?=>?>?????===7>@?@??@???????>@????@>@??>?>>?>?>>A???@?A@???????@@@AAAAAAA@BC@;BBB?BBAB@BCBBCCBBBBBBBBCBBBACAACC@CABCAC@CBACCBBBCAABBBBCABBCA;AB@BAB@>AABABB?@??AACBAA@>,<>>A@BBCA@=482@@BABBC6899A?@@############################## LB:Z:Solexa-135852 MD:Z:230 RG:Z:H06JU.1 NM:i:1 AS:i:223 XS:i:118 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:1213:3556:62014 147 1 922193 60 42S113M1I94M = 921931 -469 ATATATGTGGGACATTGTATTACACTGGCGCCAGTGCCTTCATCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGAT ########################################################?<8@;9<9@>>A=?=A>?A;=?36+@>@?A@<?@=>?=97>A@@?@@@?>B@?@@>>=?>??=?=>>A@A@A@AA>?A@@@=??@@@@@?=>?>>>?8>>=<>>???>>>><>?>>==>=>>>><>>>=>>>>>=>>>>>??>>?<>:== LB:Z:Solexa-135852 MD:Z:207 RG:Z:H06HD.1 NM:i:1 AS:i:200 XS:i:82 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:1:2209:13394:73539 83 1 922028 60 250M = 921886 -392 CAGTCATCCCAGTAGGCGCTCATTCTGGTTTTAATTTGCATTTCCTTAATGATGAACAACACTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCA #:7=>?@???@>@@@@8??A>?@A?@@=??8@@>??@@>?@@A@?@@??@>>?>?@??=>?@A@@A@@B@A@@B@A9>@?AA@@AAA=A?@BBB?A?A@A@AB@AAA@?@@@A@A?A@>???>@@?@?@@@@>AA?>AAAA>AAAA@@???B?A@A?BAA@B>?@B@A?AAAAA@B@A@@<=@?@>@A@?>;=<><>?>??>?>?>????>?=>??>=<==>>?>==<>>=>><>=>??>>>=<=> LB:Z:Solexa-135852 MD:Z:250 RG:Z:H06HD.1 NM:i:0 AS:i:250 XS:i:40 PU:Z:H06HDADXX130110.1.ATCACGAT +H06JUADXX130110:1:1215:14385:18999 83 1 922196 60 110M1I139M = 921991 -454 GTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCTCCTGGGTTCAAGTTATTGTTCCACCTGAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACCCCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGC ###########AAAAAB@:.96@5?AA:+*>AB?681<6;>==4-'5?.,.,3*5?B7@4AA>*?BA?BB>5;046,>A@9/.'4?@:9?A=A>A@?>4<4???BA@@@:7&&=?;<6::8?@<>??AA@AA?@=<>?BAA>@B&730@@A??A@?A=@;?@>;;;>('*7@??>@==6-@A@@@9=8?@>@@;?->=96@7?@?@A@8=?.@@/?@@?@;?@5?@?>?@???@@>A;A=>@> LB:Z:Solexa-135852 MD:Z:53C13G12C34A133 RG:Z:H06JU.1 NM:i:5 AS:i:222 XS:i:109 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1112:9171:93967 99 1 922064 60 242M1I7M = 922273 416 TGCATTTCCTTAATGATGAACAACACTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACAC ?????????@????>??>?>@??????>@?>@>?>8?@?@?????@@???>>@?????>@?>@?????@???>@@>A@BA@AABABAACCB@@AB@AAAAABAAAAAA@AAB?BABAAAB@B?B@BAAAAAAABAABBAABBAABBAAA:7AB@BA@AAA8BAAB?BAABB?AB@AB?AAAACAAABAABBAAABAAABB@A@?ABAB@ACA@AA:B?@AAAC?@ABABA?BA@?@AAA?=8<9 LB:Z:Solexa-135852 MD:Z:249 RG:Z:H06JU.1 NM:i:1 AS:i:243 XS:i:40 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1112:9171:93967 147 1 922273 60 42S33M1I174M = 922064 -416 CTAGCTGGAACCTTGTGCCATTGGCATCAGGTGCTTGATCCTCCTCAGCTTCCCGATCAGCTGGAATTACAGGTGCCTGACACCACCCCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGTGGTTAGCCTATTTTGTCCATTTTAAAAAT ##########################################################################################A@5@>AABCCC@BBCCBBAC@ACBBA?9@BB@CBBBBBBAC@ABABAACBBBCB@CBCAB@=BB@AC?AACCABC@CABCBCBB@AABBB9>@@@@@????@>?AAA@>>?AA??@>>@>@?@????@?>?>>??@??>@?>@>@>@?????????><== LB:Z:Solexa-135852 MD:Z:14G0T6G20A163 RG:Z:H06JU.1 NM:i:5 AS:i:180 XS:i:118 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1102:10898:6673 99 1 922093 60 213M1I36M = 922241 362 GCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCACCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGA ?@=?>@@>@>?>8??>?@??????@????@??@?@?A@>@@@?@@?@AA??A?@?@?>@@??@????????@??????>>>==BAAABBAA@?AB@BAACB@AA;6>@AAACAAABAA@?BAAAAAABAB?A?>@?C?>CA?B:9A@BAAA69@=*:?>8## LB:Z:Solexa-135852 MD:Z:156C91T0 RG:Z:H06JU.1 NM:i:3 AS:i:236 XS:i:67 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1102:10898:6673 147 1 922241 60 35S65M1I149M = 922093 -362 GGAGCAGTCAGCAGTGATTTCGTGGCACAGTGCAGCCTCCACCCCTTGGGTTCAAGTGCTTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGTGGTT ############################################################################??/>A?=:BB@?A@BCBABDB??A>ABABBCBC@BABCCCBC@@C?>A?;BBB@CBCA@BAAC@@CB@BBCBB?BB@CBBBB@BBBAAA@@ABAAAA>@?@A@?@@??A@?@8>???@?????@>@@=>A????@?>?==>=@>????>??=?=:>= LB:Z:Solexa-135852 MD:Z:10C12A190 RG:Z:H06JU.1 NM:i:3 AS:i:197 XS:i:118 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:2103:2044:69796 83 1 922159 60 147M1I102M = 922010 -398 TGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGC ?77:>?@@???@>+@@>><=A?@@A@BA=?A>=A??A@A?AA?>A=@?B>?A<7A??@@?@@@B?A?A??A@@>A@?AA>A?@AA>AB=?>@AA@A?>>@@A@@A@@A?=?A?@A@@@@>>@@@@B?BB@BBBBB?BAAA@@AA>@A?@?A8>>>>??@?>>>>?=?>=??>?>????=@=@???>>?>?>=>???>>??????>><=> LB:Z:Solexa-135852 MD:Z:249 RG:Z:H06HD.2 NM:i:1 AS:i:242 XS:i:82 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:1:2216:15253:43872 83 1 922049 60 250M = 921777 -522 ATTCTGGTTTTAATTTGCATTTCCTTAATGATGAACAACACTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATT #99<><=@?@?A@@@A?><<==9?@@@?@>??>>?>86;9??<>???A>@@?@?>8<@;>???A??>?@>A?@>=AA@A@>?A>A>=?>AA@A?A??@=BA??AAAA?A@@@?@@@>?>?>@=@@?@@>>>@=@??@?=?=B??>@>>@@@?ABA>B?A????@?AA@A>@=>?@?=>=;=@=>?>>>>=?>>>?<>=>>?=>?>><>>>>?>>?>>>8>??>><;>> LB:Z:Solexa-135852 MD:Z:250 RG:Z:H06HD.1 NM:i:0 AS:i:250 XS:i:39 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:2:2201:9733:91618 99 1 922031 60 250M = 922283 464 TCATCCCAGTAGGCGCTCATTCTGGTTTTAATTTGCATTTCCTTAATGATGAACAACACTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCT >=<>=>>??>??>?7??=???>?>>>??>??>>>>???>>==?>?>>>?>>?>=>>=?=?>>>?>>=?>=?>?=8>?>???ABB@ABAA?@A@@@BB@<;?AAA@@@AAAAA@A>A@A@??AA@A@AAA@@?@A@AAAA@AAA@@AA?@AA>A@A@A@A?@>A?A@@A@A@@A@A@B@AAA@@@@??@@????A??AA@?AA?A>A??@@=@A?@A?5??AAA?=@@@@@?.:8=A?@A??A??@?=99: LB:Z:Solexa-135852 MD:Z:250 RG:Z:H06HD.2 NM:i:0 AS:i:250 XS:i:34 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2201:9733:91618 147 1 922283 60 37S23M1I189M = 922031 -464 CTGCGTAGGTTACAGTGACACGGACCAGCTAGGCTCACCGAGTAGCTGGGATTCAAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGTGGTTAGCCTATTTTGTCCATTTTAAAAATTAGTTTGTGGCCTGG ##############################################################################<@:-69>=33+*?@AB>3,25???1@@A<-???B>@8@A?AAA@@A?;@?@>>54A@A?B@@@B@<<8?@@?B?A>=ABBAAB:ABA?@A?A@?A=?????>?>>??>?>=?>?>@@??@?@=?>=>???>???>>>?=??>>>>>?>>>>>>??>=>>>>>;<= LB:Z:Solexa-135852 MD:Z:16A0C194 RG:Z:H06HD.2 NM:i:3 AS:i:195 XS:i:114 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:1112:10868:30379 99 1 922169 60 137M1I66M46S = 922575 451 ATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGGGTTACCATGTTGGCCAGGCCGGGCTCCAAATCCCTGCTTCCACGGGTCTGCCCGTCTCCGCCCCC ??=??@@?@????>?????>@>?>@>@?????>>?@@?@??????A?A?A??@????>@????@>?>@?@??>?@??@>?BBABAAA>@@BBAAAABCAAAAB@?AB@BAABA@AA:BAAAAABAAABAAA?BAAAAAABAB?B?AB?B?ABAAAA@A@@AAAAAAAAAAAAAAAA@AB@:A=A&&79=@A>A###################################################### LB:Z:Solexa-135852 MD:Z:183T0T18 RG:Z:H06JU.1 NM:i:3 AS:i:186 XS:i:70 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2203:13735:38769 99 1 922238 60 68M1I53M128S = 922631 534 CAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCCTGGTTGCCAAGCCGGGCTCCAACCCCCTGATTCTAAGGATCTACCCCCCCCCGCCCCCCCAAATCCCTTGAGATCCAGGCTGGGGACCGCCCGGTCACCCACTTTTTCCAGTTTAAGACATAAGTTT ?@==?A?@@>@??>>?=???>@@?@?A@@>??>=@>?A?@AA@@?>@9AA?@?@@??@@@??>@@<=?>=B@B>A?AB>C@BCA@BC@A@AABBA@AABAABA@@A>9?A?;=09&14>=?A################################################################################################################################ LB:Z:Solexa-135852 MD:Z:121 RG:Z:H06JU.1 NM:i:1 AS:i:114 XS:i:67 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2108:18102:60208 163 1 922105 60 199M51S = 922639 746 GTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACTGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTCGGATTACAGGGTCCTGACACACTGCCTGCGCACATATTGAAACTGCAGTGTGGTCAGAGAG <<<>???????>>??==>>>>@?>@?>@?????@?@??@@>@?@?>?A?@?@??@?@?>A@?@?@????@???B@@@>?@AA>=A@A>BABB@A@B@ACBA@CABBBAACCBBCBBBBAA??>ABC@A?B@CBCBBB@ABB>)6?ACB######################################################################## LB:Z:Solexa-135852 MD:Z:78A109G10 RG:Z:H06JU.1 NM:i:2 AS:i:189 XS:i:44 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:2112:15251:51478 163 1 922320 40 52M198S = 922565 363 GGCTAATTTTTGTATTTTTAGTAGGGACGGGGGTTTACCATGTTGGCCAGGCGGGGGTCCAAACCCCCTCTTCTAAAGATTTGCCCTCCCCCGCCCCCCCAAAAGGTCAGGTTTTCAGGGTGGGCCCCCTGGGGTTTGCCCTTTTTTTCCATTTTTAAAATTATTTTTTGCCGCGCGTGTGGGGCTCCCGACATTATATCCCGCCACTATTGCGTGTCGATCAGCGCGTGACACTACAACACATAGTCAG =<;>>?>>>>>>>>=>>>>>>>>>>>><7=>>-07=8=<=3=:>*===>######################################################################################################################################################################################################### XA:Z:20,-47725918,198S52M,1;20,-62433581,198S52M,2;8,-101466506,195S55M,3;2,-122347009,196S54M,3; LB:Z:Solexa-135852 MD:Z:32T19 RG:Z:H06HD.1 NM:i:1 AS:i:47 XS:i:47 PU:Z:H06HDADXX130110.1.ATCACGAT +H06JUADXX130110:1:1111:16324:69801 99 1 922093 60 213M1I36M = 922572 540 GCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCTCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGA ??=?>@@>@>?=8?????@????????>????????@@>@?????@@????A?A?@?>??????????@??A????@?>>>==AAAABAB?B?AB?B?ABA@ABAB@B?ABA@@=AA@=89# LB:Z:Solexa-135852 MD:Z:156C91T0 RG:Z:H06JU.1 NM:i:3 AS:i:236 XS:i:72 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2110:1992:6462 99 1 922132 60 174M1I75M = 922387 438 TTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGGCTCAA ?@=>?:?A@>?@A=@?@?>??>???>>@?;?=????@;???@???@??>*>@@A?@?@?A>A>@?@=??@?@?>AC@@A?:<@A>@B@?@A>5??@:;7?CAA@BAABB>AA@BA?BB=>C??>AAAAAA@A=AB@BB<?C<@=?BA@9>AABAB?B@BB=B@BCAAA?@AABAB:=.)=>AAB>@->?6-*17>:=85**47=BAABBA?@)9+'>CA####### LB:Z:Solexa-135852 MD:Z:243T5 RG:Z:H06JU.1 NM:i:2 AS:i:237 XS:i:73 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1108:16375:36918 147 1 922089 60 25S217M1I7M = 921938 -375 TGAAGTTGCTGAATGAGTAACGACTCTGGGCATGTTCTCACGTTTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACAC ##############################################ABBA9?A@>=:8>9AB=>@AA?@>BCABABCA==8BBA@4B?A@ACCBBBBBAABBA?CA@ACA?BAAB;8BBBC@CCBBBBCBBB@>?ABBABCBAC@BABABCBCABBBBBBBCBA?@BBB@?>AA@@@?>>>?A?@A??>???>@@???????@@?@@??9?A>?@?@>===>>@???>=?????>=;>= LB:Z:Solexa-135852 MD:Z:8C9G205 RG:Z:H06JU.1 NM:i:3 AS:i:208 XS:i:40 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:2207:5585:27137 147 1 922046 60 250M = 921908 -388 CTCAGTCTGATTTCAATCTGCATTTCATTAATGATGCACATCGCTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGG ###############################################@@@@?>*7/189>A>@?@@AAA=>?=@=@@A:=?A@AA@A@@>=AAAA=>7@A?@ABAAA??>BBAB>@AAA@BBBAB@B@@>@@@A?@AA@BBAAB??AB@B?BBBAAABABA@>?BAB@BBBAB?B?A@AB@@B>>@@??@?A>?=?>?????>???@===>?>>?=?=>>?=???><>?>>?>>?@>>7=?=>@>>>:<= LB:Z:Solexa-135852 MD:Z:4T4G3T3T8C9A3A1A207 RG:Z:H06HD.2 NM:i:8 AS:i:212 XS:i:39 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:1216:13772:10503 99 1 922282 60 24M1I205M = 922313 229 CCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGTGGTTAGCCTATTTTGTCCATTTTAAAAATTAGTTTGTGGCCTGGTGCGGTGGCTCACACC >=;7??>???@?>>?>>?=>??>>?>@>?=>==>=>==?>>???>>>>>>>>??>>>>?????>>?=8@AA????B?ABAAABAAAAA@@AA@@@?A?AAA>A?@A@A>AA?AA@@?A@>@@A@A@A@A?9@A@A?@AAAA?@@AAA@@A@AA>A??@?@@A@A@A>A@???@AA@A@AA?AAA@@?@@@AAA?@AA@@A@??AA>@?AA@B>A@??8A@@@B@?@?@>@ LB:Z:Solexa-135852 MD:Z:229 RG:Z:H06HD.2 NM:i:1 AS:i:222 XS:i:118 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:1216:13772:10503 147 1 922313 60 32S198M = 922282 -229 CCAGAGTAGCTGACATTACAGGTCCCTGACCTCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGTGGTTAGCCTATTTTGTCCATTTTAAAAATTAGTTTGTGGCCTGGTGCGGTGGCTCACACC ##################################################>A@B>::7:??A:0?@9:=?=@@A?;>>6??A?@BA>:@5>@A>@A?>A?>A@??B???@?4@@>@?@@ABBAABBAAA:ABA?BA??@AA=@B?@BA?AABAAA@>@>@?B@@@?@@>?==>?@?????>>>?=??>?>>>@>>>?>>??=>>>=>=?>?>=<>?8><>>?>@>=>;<= LB:Z:Solexa-135852 MD:Z:198 RG:Z:H06HD.2 NM:i:0 AS:i:198 XS:i:112 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:1110:20934:37299 163 1 922192 45 1S114M1I46M88S = 922667 500 TCTCTGTTGCCCAGGCTGGAAGGAAGCAGGGGGATCGTGGCTCACTGCTACCTCCACCGCCTGGGTTAAAGAGATTGTTGCACCTCAGCTTCACGAGTAGGTGGGAATACAGGAGCCTGACACGACACCTGGCTAAGTTTAGTATTTTTAGTAGGGACGGGGGTTGTCGCCGTGTTCTCGAAGGTGTACCCAATTGCTTTGCGCCACAAGTGTATATTGTTCCGGCATTTCTAGTGCGGTCGCATACGAG ########################################################################################################################################################################################################################################################## LB:Z:Solexa-135852 MD:Z:20T7T1A4T11A9C8C3T7C12C7C5T6T8C12T3T21 RG:Z:H06JU.1 NM:i:17 AS:i:73 XS:i:39 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:1214:19038:92079 99 1 922156 60 150M1I69M30S = 922564 553 TTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGGTTTACCATGTTTGCCAGGCTGGGGTCCAAATCCCGGACTTCACTGGTATTCC >?<=>>=>?>>>>?=>>>>>>>=>>?=??>>?>?>>=?>?>>?>?>>??>??>>>?>>??>>???>>?>>>??>=?@=@=?>@@@=@?=@A?@@?@B@AA???A>@A@B>?@AA>@@>?A>@?@A@>?@8@@AA@?B@@@A@AA?A>>>>@>B@B?C@@A?A?@@@AA@A?@@AAA@>??@@@AA>?A>>=@>8@?A2&/>66=?######################################### LB:Z:Solexa-135852 MD:Z:196T11G10 RG:Z:H06HD.1 NM:i:3 AS:i:202 XS:i:70 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:2:1106:12328:54139 83 1 922260 60 46M1I203M = 922256 -253 AGTGATTGTTCCACCTCAGTTTCCCGAGTAGCTGGGATTACAGGTGCCTAACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGTGGTTAGCCTATTTTGTCCATTTTAAAAATTAGTTTGTGGCCTGGTGCGGTGGCTCACA :7:=>@B?@9>@:37@:?6+3@6&$=@=??=7?6@?@?=?<:?>>)<;4*996-+.958+@>=@A@@AA?*?7*@@>=?@8A?A??+:>8>;?B=@A>AAAA?>A@?:4>?;@?>A@>;->?>?@?AA=@?@AABBAABB@@A:AB@@?=??@AA?@BABBA?AB@??BA>@>@?AA?>=@@=@>;>???>???>???>@>>?@?>?@@>>>???=?>>=?=?>?>=<@?8>@>@><=> LB:Z:Solexa-135852 MD:Z:19C28G200 RG:Z:H06HD.2 NM:i:3 AS:i:232 XS:i:114 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:1106:12328:54139 163 1 922256 60 50M1I162M37S = 922260 253 TTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAACTGCTNGGATTACAGGTGTGAGCCACTGCGGTTAGCCTAGTTTGTCNCTTGTTGAAATTAGTNNNTGNCCNNNNGNGNNGGNN =>:>@>???>?>>?>>;>>/>>?=@>>>>8?>>?>?@?=-??=<9A@A>=>@==??4@@>@??9=?=6::<@AA@<=7=A43+>=@=?@=>@?>@<;?BA2-<@############################################################################################################################### LB:Z:Solexa-135852 MD:Z:166G4A22T10T6 RG:Z:H06HD.2 NM:i:5 AS:i:188 XS:i:116 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:1:1115:20344:84642 147 1 922133 60 39S173M1I37M = 921973 -370 TCATNTCGCACTGCAACTATCTCTGAACTAGGCGCTATGTTGGTAAAACGACTGATCAAATCTTTTGTCAATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTA #######################################################################################################################??<@?997<:=::;:@@??<;<;=><<99><:9>8878<><;>@=:;=;=9=;A;>===>>=>?<55==3=:?>???==>>>=5<=?=>>?=>9;9<=;-;:-6&>>;2:>=====<9>><>=;<< LB:Z:Solexa-135852 MD:Z:9A12A7C179 RG:Z:H06HD.1 NM:i:4 AS:i:188 XS:i:69 PU:Z:H06HDADXX130110.1.ATCACGAT +H06JUADXX130110:1:2202:20829:11554 83 1 922072 60 234M1I15M = 921968 -353 CTTAATGATGAACAACCCTGGGCATCTTCCCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTG ######################################@@@BB@A==9>,=A;>+BAABAABB>=AAA?@?@?@A?==-?@A@@@ABAAABA?@B@@BAAABCAAC@A??<:>==@>>?7?=?<5;6.@@A??@@=????<@@@@?????@@8@@=>=?@?==??@?>?@?;???????@@@@>=;><>; LB:Z:Solexa-135852 MD:Z:16A12T219 RG:Z:H06JU.1 NM:i:3 AS:i:232 XS:i:52 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:1215:7460:35327 163 1 922191 60 115M1I59M75S = 922416 474 ACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGGGTTACCATGTTGAGCAGTCTGCATTCCAATACCCTCAATCTACGTAAGCGGCGTCCAATAACAGCTCCACTCTGCTGTACTCATACG =;<>>>?>>>>>??>>>>==>>=>>>>>>>>=>??>???>?>>><>?>>?<=>>>?>>????@@>>@@?@>?@=A@ABA?>>8;=>A@A@??=@?@?;<;>>=>>B@@<@?@A>?>@A?AA.9;>??AA>?A@AAA?##################################################################################################### LB:Z:Solexa-135852 MD:Z:161T0T11 RG:Z:H06HD.1 NM:i:3 AS:i:157 XS:i:70 PU:Z:H06HDADXX130110.1.ATCACGAT +H06JUADXX130110:1:2111:4595:68221 83 1 922137 60 67S169M1I13M = 922137 -182 TTTCAAGCAGAAGACGGCATACGAGATCGTGATGTGACTGGAGTTCAGACGTGTGCTCTTCCGATCTTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACC @:9->0AAC@?B<59AA?A@@8>C?@B:?B@AB@BABABAAC@B@@BAA:@B@BAABABBA8@ABABAAAAAC@@A@@AAAAB>AAAAB>;71:)BBBA@BBBAABB@@B@BAB@BAAAB?=ABAB?BBAAAABAAA@A?A@B@ABABC?B@C@@B?BBAAABAAABBA=@ABB@>?BA@@ABA??@@??@>A??@A?A@@@??A@@@?A@??@8>@>?@@@@>>??@@??@?>??????@?9=@?><>> LB:Z:Solexa-135852 MD:Z:182 RG:Z:H06JU.1 NM:i:1 AS:i:175 XS:i:40 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2111:4595:68221 163 1 922137 60 170M80S = 922137 182 TAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGAGACCACACCAGATCGGAAGAGCGTCGAGTAGGTGAAGAGTGTAGACACAGACAGTTGCCGTCTCCGTGACTACGAA ==<>???@=????>@@>?>?@?????>?????@????@????@@A>@?AA@>@?@?@?@????@???@?@@??<>AA@??ACABAAA@@@BBA>>AAB@CA@CB@BCABB@BB==A?AA>>ABCBBACCA>?9=69=@BD6>:18<*5ABACBA@@<>@=?@>@?A?????=>@??@>=@@=?>A>??=@@@??@?@>@@?@@;@A@@>>@???B<16=@?AA?;?AAAB?ABAAA?AA<>?:5=>7<=AA1>2>;@>>50*5(9?@C=@@?C@C>?CA=BA@A@AAA==?8?A@;?>A?&?:?=@@*:=@4>ABB################################################################ LB:Z:Solexa-135852 MD:Z:120T49T17T2T1T1A2C3T8G19T10 RG:Z:H06JU.1 NM:i:11 AS:i:185 XS:i:74 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:2109:16871:87098 83 1 922099 60 207M1I42M = 921631 -717 TCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGAC <6:;>7=?:?@?@@?A>@@?A@>?@=??@>?@=5?@>=?@@@=@>>>?>?@??A@???A@@=@>>?AA??@?A?A???A?@??@B?B@A@@=>B@@A?A@AAA@B@A>><=@?A>@@A@B>A>?>?A?@@?@?A>>@AA@A>???==;;?AA?A@??AB@A@=A>@A@?ABA>>A@??@@?>@?>7>??>>>>>?>>?>>>>>>??>>>?=>?>?>>>=>>>>><>=?>????<>?>=:>> LB:Z:Solexa-135852 MD:Z:249 RG:Z:H06HD.1 NM:i:1 AS:i:242 XS:i:70 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:2:2112:16348:25026 99 1 922135 60 171M1I78M = 922203 279 GGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACC ==;>?@@@??=@>?>=>?>???>>>>>>>@>>>>?>>>>?>>>>???=>????>?=>=?=?>>@@>==>?>??>>?????@???@@@A?AA?AA@@AA?A>A?AAA>@A?@A>@@@@A@@@?A@?@@@?@?A?@A?@?>@A?A@AAA?@@9AA>@?AA@@@A@AA>A@@?@A?A?@>@>AB>A>AA@ABA@??AA9>>>@@AAAA@?=@@?A@>:AA=8:??@>@A@?@A?>?>@A?BB6:4=?=?>:## LB:Z:Solexa-135852 MD:Z:248T0 RG:Z:H06HD.2 NM:i:2 AS:i:241 XS:i:79 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2112:16348:25026 147 1 922203 60 38S103M1I108M = 922135 -279 TGTAATCTAAGTGACATTAGTGCCTAGTTCTGTCGCCAAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGC ########################################################################@?>=>;;68&:663+-@A=A><>@==@@AA?@@>=.>A@?BA>@BAA8?A>BAB?BAA@AA@??@A?B?>?@?>?9==<>=AABA??@B?A?B@??BABBBBBA?BAA@?78@@?>AAAA?????=???@??@?>????@:>>??@=<>>?>??=?=>>>>?>>?>?>?7:<= LB:Z:Solexa-135852 MD:Z:211 RG:Z:H06HD.2 NM:i:1 AS:i:204 XS:i:93 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:2104:18214:16962 99 1 922126 60 180M1I69M = 922570 528 ATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGGGTTACCATGTTGGCCAAGCTGG ?????????>@?@?>??@?@??????>>?????A??@?????????>?@@@?>@>?>@>@????@>>?@@@@@@BAA@ABAABAAABABA@@BA@AB@B?BAABB?AB@AB?AAAABAAABA@BAABAB@AAAA@A@?AB@BAABB>AA9AAAAAABAAABABA?BAABAAABAA@B@BC?B?ACAAABABAAAAAA@AAAAAAAAAAA@?>?;A>@&&893;=;9=AB@########## LB:Z:Solexa-135852 MD:Z:226T0T15G5 RG:Z:H06JU.1 NM:i:4 AS:i:227 XS:i:70 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:1211:8429:56947 83 1 922325 60 250M = 921891 -684 ATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGTGGTTAGCCTATTTTGTCCATTTTAAAAATTAGTTTGTGGCCTGGTGCGGTGGCTCACACCTGTAATCCCAGCAATTTGGGAGGCCGAGGCAGGCAGATCACTTGAGGTCAGGAGTTTGAGACCA ############################################?@AA>=@?><>65;)9<>4.97?<5<<8>@1?B=??@@A>@A@AA??@AA@@AA>A>A?AB?>?@A>A@>@@@>??A@AAAA>@?@@AA@AAA@C@AAA>AAA@A>AAABA?BB8>=??????>>@>>@>??????>@?>??>??===?>??9=?=?>?=@>?=??>>?>>=?>=>>>==@=?@?>@>>:== LB:Z:Solexa-135852 MD:Z:250 RG:Z:H06HD.2 NM:i:0 AS:i:250 XS:i:95 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:2103:3180:47025 83 1 922027 60 250M = 921451 -826 TCAGTCATCCCAGTAGGCGCTCATTCTGGTTTTAATTTGCATTTCCTTAATGATGAACAACACTGTGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTC #######################BCABA@BBBA>@A@>A<*A>BAAB?B>>@ABA@@<:6972:1+9<3B@BBAB:.7?>:@:<;??????>>>????@>?>???>@@@@@?<@= LB:Z:Solexa-135852 MD:Z:65G184 RG:Z:H06JU.1 NM:i:1 AS:i:245 XS:i:39 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:1211:9055:50553 147 1 922080 60 25S225M = 921822 -483 GCTCGACACAGCATTGCAGTGATGCTGAACAACTCTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGT ###################################################@@@@=??@AB@AB@@@?8==>>A=@?A?BBBBA@@A>??AA@>?@AA??BA?@AAABAB?B@B=AAAA?AB?@BAB@BBBAA?B@B@ABABBAAA@?@A@B>??@@A@????????===>??>?=>=?>>=>??>>>??>???>?>>7=>=????>>>=???=>?:;= LB:Z:Solexa-135852 MD:Z:8A216 RG:Z:H06HD.2 NM:i:1 AS:i:220 XS:i:39 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:2206:8577:14147 83 1 922140 60 166M1I83M = 921878 -511 AAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGA @<<=@@AAABAABA@AABAB@BAAABBBAABBBAABBB@CABAB@BA?AB@>ABAB@BBAAAABAAA@>?A@B@ABAAB?B@A@ABABBAAAB=9ABAA>;AABA=???????@>?@>>>?8@>>>A?@@?????>??>???@>???>>?????@@@A??=?? LB:Z:Solexa-135852 MD:Z:249 RG:Z:H06JU.1 NM:i:1 AS:i:242 XS:i:82 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:2201:8829:18772 83 1 922097 60 209M1I40M = 922010 -336 TTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGG #9:<>995;25?@??@>?>?<>8=>??<=?@>?@?@?@>=>??==/>=>@>>?==@>>>?8@<;7=>>>==:=????==?>;=<>=@>?><:>5+=>?@>?@@<<=@@?>@??A?@>@@?>@=@>A==??>@>?=><:=@@><:=?@;=>?967:=@>=?@;>?=?>??@==?:<9=@B@@?=>9<@7>@=@>?>?>>>>?>>=?=;=?<=83/;?=<5=><<;=>==>==><>>?????@:??<>> LB:Z:Solexa-135852 MD:Z:0C248 RG:Z:H06HD.1 NM:i:2 AS:i:241 XS:i:70 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:2:1101:16182:7481 83 1 922122 60 184M1I65M = 921880 -491 ATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGG #:8<>@?AA?>9@?>>AAAA?35<-9?>AAA???A@@>>?@@@A@AA@A@A@?@@@?A??@A?AA@@A?@@@@B>AAA@AAA@?@?=?A@A?AA?@A>A?@?@AAAA@A@A@@@AA?@?@@A@>?@@@@@A@@>AA>AA>A?@@A>AB=@@@@A@AA@AB@@9@A?BBBABAA?AAA@@A?>@@@@@??????>@>>?>=???>>>>>>>=?>>>>>??=??==>?7====?>>>>>>??=??>?>>==> LB:Z:Solexa-135852 MD:Z:249 RG:Z:H06HD.2 NM:i:1 AS:i:242 XS:i:70 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:1213:15654:31812 83 1 922060 60 247M3S = 921877 -430 AATTTGCATTTCCTTAATGATGAACAACACTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTG ###=><<=@?*??@?A?@??A?@@@@??@@A@????A??@?@?@:@@>AA@@A@@>AA?@?@@A>@@A@AA?AAA@>AAAAAA?@@??@A?AA@A@AAAA>A?@@AAAA@AAAA@AA??A?@@A?AA@@@>?@A@A>AAA@@@A@A@@@?BBA?AAA@A>A?A@@BABBABABAAABBA@<@@A@=<@@>>?>===>?>>?=>=>>>=????>???>???@@>>7>?=?????===>>?>?@>=?>><>> LB:Z:Solexa-135852 MD:Z:247 RG:Z:H06HD.2 NM:i:0 AS:i:247 XS:i:40 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2108:11465:97682 83 1 922094 60 212M1I37M = 922045 -298 GATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTA #;;7?AAAA@:>B>A?@?A@@;+@?@@?@@>@?@?AA@AA@@>AAAAAA?@@A?@A?AA@A@AAAA>@@@@AAAA@AAAA@AA??A?@@A?AA@@A??@A@A>AAA@@@A@A@?=>A@A?AAA@A>A?@?@A@AA@A@A@@@AA@@>A?B@>@@@@@@A@@>AB@BB?B@ABB>ABA?@@@A?@?@>?>>7=?=????>===>???>?==>?>?>=?????>?>>?>=???>>>>>>>=???@@@>?:>> LB:Z:Solexa-135852 MD:Z:0C248 RG:Z:H06HD.2 NM:i:2 AS:i:241 XS:i:69 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2108:11465:97682 163 1 922045 60 250M = 922094 298 GCTCATTCTGGTTTTAATTTGCATTTCCTTAATGATGAACAACACTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTCGGTTCAAGTGATTGTTCCACTTCAGGTTCCCGAGTAACTGG =<<=>>?=@>>=>>>>>>>>>?>>>>==?>?>>>?>>??=@?=@=?>?>?>>=?>=?=>=8?>>>???>?>>??>==>>@?@@?A@?AAAAA?B@BBBAB?A@BA@?B@?@ABAAA@@ABABBBAABBBBABA@BAA>@?@?BAA@B?B@BAABA@AABA=BBAABB@@A@<@A@@@@@A@@BB7==A@A;?@@>B>##################################################### LB:Z:Solexa-135852 MD:Z:208G20C4C10G4 RG:Z:H06HD.2 NM:i:4 AS:i:230 XS:i:34 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:1209:19566:18955 147 1 922076 60 37S213M = 921907 -382 CGTAGCACTCATTCTGGTTCAAATGTGCATGTACGTCATGATGAACAACACTGGGCATCTTCTCTCGTGTGCATTTGTTATCCATGTATCTTCTTTGGTCAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGT ###############################################################################?:>?@>6?6A<+A>>A98:2*BA?A;9??<9:A@=;9>@@@A>@A??<@@@A@?@=?:8:=>>?=;>>>;4,<:=?>=??>??@?>=???@?>?=>>>=>???:>>?>@>?@??>7=<;= LB:Z:Solexa-135852 MD:Z:27A34A150 RG:Z:H06HD.2 NM:i:2 AS:i:203 XS:i:39 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:1:1214:8466:5928 99 1 922145 60 161M1I88M = 922271 340 CTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCA >?:>>=???>?=>?>=>>=>=>>>>=???>>??>>>?=?>??>>?>?=?>?>??>?>>???@?>>??>>?????>>>>?@??@???@?=>@@@@B@AAAA?@>?==??@?>@>?>??B?A@AAA???8B@AA@?B@A@@?AA?CA>>>?>B@B?A?@A?@?@B@AABA>?A@AA@???A@@@A@?@>>@@>8@?=69???=?@?>@@>=?>@?@@@??54;?@?@=A??@>@<=:6> LB:Z:Solexa-135852 MD:Z:249 RG:Z:H06HD.1 NM:i:1 AS:i:242 XS:i:82 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:1:1214:8466:5928 147 1 922271 60 35S35M1I179M = 922145 -340 CGCCGTCTGCAGGTGTGGGGTTAAATTTATTGTCACACCTCAGGTTCACGAGTCGCTGGGATTACAGGTGCCTTACACCACTCCTGGCTAATTGTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGTGGTTAGCCTATTTTGTCCATTTTAAAAATTAGTT ###################################################################################?:<';6@@@>9??9/+<@??;9>9:>@?:9<=8(>A@?<9=<>=@>@@A?@@@@A>=@;@>@>@>5:?@<@@<>>8?>A@A@AAA>B8?@?>??>>?A?<@?>???==?????><>=>>=?>>==?<>><>>?>>>?>>>>><>==>>???>>>>>?>>9== LB:Z:Solexa-135852 MD:Z:8C3C5A18G7A11T156 RG:Z:H06HD.1 NM:i:7 AS:i:177 XS:i:109 PU:Z:H06HDADXX130110.1.ATCACGAT +H06JUADXX130110:1:1110:18795:100080 147 1 922133 60 48S173M1I28M = 921962 -372 AACTGTGGTCATAGTACAACGTGACACTTGATTAACCATGTAACCTCATTGGTAATAAGACTGATCAAATATTTTGCCCATTTTGCTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGCTCTTGGCTCGCTGCAACCTCCGCCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTA ################################################################################################################################################################################################################################################>:8>68>;;= LB:Z:Solexa-135852 MD:Z:7A20T7A0T53A9A11A87 RG:Z:H06JU.1 NM:i:8 AS:i:159 XS:i:55 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2106:12724:29264 99 1 922080 60 213M = 922080 213 TGAACAACACTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCT >:=?>A@?A>????=@??@@>@?@>8>@>??@??4>???@?@A?>?@@@>?@@A@????@?@@@@?B@@?@@A@ABB=?@AAA?A@BABAA@B@A>A@BA@A@AAAA@:=AAAABAABAAAA@BA@ABAABBA?ACAA@,@AAB=ACA?A??@>BBA??B@ABBAAABABAABAAB@BCAB;AAA54<><>AB LB:Z:Solexa-135852 MD:Z:213 RG:Z:H06JU.1 NM:i:0 AS:i:213 XS:i:39 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2106:12724:29264 147 1 922080 60 213M = 922080 -213 TGAACAACACTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAACAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCT ##########C?7(@BB69*0*,.;?A>AABB@CA6AA=C@@AC?@AB?ABBA>9<@BA>+B>@BBCBAC@BBAAABA>B?@@ABCCBABB@4AAB@A@C?BACA@@?ABAAAB?B@ACB=BABBBACB@BBBABC@BA@AAB@@B>BB@BAA@?=AA8<>@@@?@>@???@>?@?>???@?@@?@??>8>?=??=== LB:Z:Solexa-135852 MD:Z:60A152 RG:Z:H06JU.1 NM:i:1 AS:i:208 XS:i:37 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:2108:7795:76679 83 1 922175 60 131M1I118M = 922052 -372 TTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGT ##;<@@<<@@AB??AA@=AA??@?=>A@A?AA??A>A?A?@A@AA@A@A@@@AA@@?A@A@@@@@@@@A@@>AA@AA>A?@AB>AA@A>@@A@AA@AA@@9?A>AAA@A@@>@@@@@A@>AA@@A?@??@A@@>A@A@A@AA@AAAAA>A@AAABAB?BBAA@A:AAA?BBBA@@@@A>A?=>?@A>????=???>?????>?>>>?>?>>?=>=>??>?>?>?>??7>???????>>=<> LB:Z:Solexa-135852 MD:Z:249 RG:Z:H06HD.2 NM:i:1 AS:i:242 XS:i:103 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2108:7795:76679 163 1 922052 60 222M28S = 922175 372 CTGGTTTTAATTTGCATTTCCTTAATGATGAACAACACTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGGTCAAGTGATTGTTCCACGTCGGATCGCCGAGTACCTGGGCTTACG <>:>?>?>?>>>>>?>>>>==?>?>>>?>>?>=>>=?=?>>>??>=?>=?>>=7?>>>?>>?>>??@>==?>>>?>=>>=A@@@@>BBABBA@?BA@?@@B@@@@AAAA@??BAAAA@?BBBAABBAAA??BAB?BAB@B?B@A>AA@?>?A?AAB@AA??<@@7@B########################################################## LB:Z:Solexa-135852 MD:Z:204T17 RG:Z:H06HD.2 NM:i:1 AS:i:217 XS:i:34 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:1:1114:19044:27806 99 1 922058 60 250M = 922571 558 TTAATTTGCATTTCCTTAATGATGAACAACACTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCC ==94,9=<=?<>><>>=>?=>==->?3??<>?3;?>?<5>*9;9?<>?=@?>?6=@=>=??=>?>098<<.<@@?::>=>)===?>(<>>:?<-=*7-;?AA>>>?A>>>?6?=>@=>>?>=9;?;=>===;?>82:=;>>>>;>*>::?=;%4?>>;??>5?76:?@>>@8>3:959??>@6@87>>@>>?=@@>@?>=9:?=6=>?################### LB:Z:Solexa-135852 MD:Z:249T0 RG:Z:H06HD.1 NM:i:1 AS:i:249 XS:i:40 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:2:2202:11500:35160 147 1 922203 60 9S103M1I137M = 921991 -452 CGGCTCGCGAGGCTGGAACGAAGCAGTTACATCTTGACTAATTGCAACCTCCACCTCTTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGA ######################################################################@AB>A=381&8:?A=+9?=8$,66AAA?A@<7@?;?AA??@@@>@A>?;5AAB?>?BBAA?@AB?BA@A@B@A@@@>A@>:AAA>@@@???AAB?B@ABAA@AAAAA>B>@@AA@@@@??>>??????=@>???@?>?>?>??7=????>>>>>?=>????==>>>=??><><;<= LB:Z:Solexa-135852 MD:Z:9T8G1G6G2C1C13C1C191 RG:Z:H06HD.2 NM:i:9 AS:i:193 XS:i:112 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:2109:15726:69447 99 1 922110 60 196M1I53M = 922255 333 CATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACC ?@<>>@@>@@??@@?>@?>???@?@@?>>@>@=>@>A?>??AA@@A@@?@???>@@???A@??A?????AAA?@A@@A?A?A;A?BABA@>>AB<6ABAAA@@=AB?=B@@AA=:?ABA@@5@@A?BA;@@>AC6@B)=>8=C>>>?>AA*;@@A?AABBA>A@ABA<;5@B?AA;A;?@>>BA@4?=@=?@@::@AACA7>A@AB??8=9?>B@@>?AABB@@AAA?AB<@AA6>@############# LB:Z:Solexa-135852 MD:Z:249 RG:Z:H06JU.1 NM:i:1 AS:i:242 XS:i:70 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2109:15726:69447 147 1 922255 60 61S51M1I137M = 922110 -333 TTCTAGCTCTGGTTGGAATTGAGGCTGCTGACTCAGAGCACTCTCAACCTACACACTCTGAGTTCAAGTGTTTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGTTCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGA ###############################################################################################DBACAB?<@?=A@=(;4>9/98,-?=9;@?@=>B?ABAAA>BA@?@BBBB@@=>?B?A@9?=>@@>A@@?A@C?A?@;6:AAA?A?>B7?@@?-@@?=A??@@@@?A=@6)@8@@@?@??@@8>???A5?@?@@>@@@?@=???????>=?<=== LB:Z:Solexa-135852 MD:Z:9A133A44 RG:Z:H06JU.1 NM:i:3 AS:i:171 XS:i:74 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1205:2261:74951 99 1 922249 60 57M1I192M = 922370 324 CCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGTGGTTAGCCTAATTTGTCCATTTTAAAAATTAGTTTGTGGCCTGGTGC ??@>???>???????>>?>>@>???@?>>>8??????@???????>?@???A>@??>?>>?>@>?AA@@BBBABBBAA>@ABABAAAACBAAB?:ABAAAAAA?ABAAAAAAAABAAABAA@@@?BBB?B@ACAB?BA@ABABAAAAC@A@B@BACA5=BA@@BA9=A;>AB=?=?@+>8>@@AABB>?AA@@>-?<@AA:=*8AA5?@A-3A?B6+:>B=A@################ LB:Z:Solexa-135852 MD:Z:212T36 RG:Z:H06JU.1 NM:i:2 AS:i:237 XS:i:118 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:1206:10966:91148 147 1 922065 60 22S228M = 921851 -442 GCTCTAATGCTGGTTGTAACTGGCATTTCCTTAATGATGAACAACACTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCT ##############################################@A@A8=+*@90@*A@;?B>>BBAAB>ABA@=A@AC@BBCBBBBCCCA>AA@=>>ABBCABBBBBBABBBCB@CBBBCCBA@BBC@AABCACABACACBABBBBBBAA@CBBBBBBAABA?@BACABCBBB@CAA@ABABBAAAA@@?A?>?@@?A@>;??????>?>@@??@>?>???>?????>@@??@?????8>?=?>;== LB:Z:Solexa-135852 MD:Z:228 RG:Z:H06JU.1 NM:i:0 AS:i:228 XS:i:39 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2209:10085:35025 99 1 922147 60 159M1I63M27S = 922667 642 GATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCGGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACGCCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGGCTTACCATGTTGGCCAAGCTTGGGTCAAAATCCTGGCGTTCAA ?@<>?@@?@??????????????????????????>?????>@>?>@>9?????>>?@?@@??@@?????@@@??A@C@?@BA@AB@B?BAABB?AB@AB?ABAABAAAAA@BAA@AB@AAAA@A@?AB@BAABA@AA:BAAAAABAAAB@AA?B1;@AAACAB>&<@A?B?<@AAABABAAAAAAAAAABAAAABA?@?B?;@>A+&&85;A@?@A################################# LB:Z:Solexa-135852 MD:Z:48T115A40T0T15 RG:Z:H06JU.1 NM:i:5 AS:i:195 XS:i:51 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:1:1213:20471:45490 83 1 922306 60 11S239M = 922233 -312 ATTACCGTTGCCTGACTCCACACCTGGCTAATTTTTGTATTCTTCGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACCCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGTGGTTAGCCTATTTTGTCCATTTTAAAAATTAGTTTGTGGCCTGGTGCGGTGGCTCACACCTGTAATCCCAGCAATTTGGGAGGCCGAGGCAGGC ##########################################################################################=>=/<>>>??:;*::==5:=>:<<<8>=::*9<=>>?<>==>?===>>>=??B@9:7=@9?>=>>8<6:<)6<:,9><<=>>>4>>AA=>>@:9>?;?>=67+&;=<52+;+9=+=>,769><>==:&7=?9<;,=>=;<4;>=+4=@<>>><>= LB:Z:Solexa-135852 MD:Z:5A24T2A43T161 RG:Z:H06HD.1 NM:i:4 AS:i:219 XS:i:83 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:1:1213:20471:45490 163 1 922233 60 73M1I110M66S = 922306 312 CACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGGCTTCAAGTGATCTGCCTGCCTCGGCCTTCCAGAATGCTAGGCGTTCCGGTGTGTGCTACTTTGGTTAGTGTACCTTGTGCATTCGCCAAACTT =>9=>??>;=?=>=<>>;>;=>>>>=>>>;:?>>>??>>><>?>@>???>>>7@==><=>==<<><>?>><>=>;8<6;:;@==A=A@?<>@?=>?@?@?;=?@AA@>>??@=?6<83==258=<=>@@>@?>.>=??8?@??@>A>;9==@=?A>'=???>@=>>@>B?=*<>><<;3.889&9=4<@<>>46?<3;>=9>AB?;547<;.-;?;6>>@?A@?=?>@?>??<5@>;9:9>?89?=;<<>>8:?B>>;;<3<969?:?>57*@>@@?>=;'6>@;?>=.@>5>@9?>?@@=>@>>@>>?@=;<@<=>=??<@<@>?>:>> LB:Z:Solexa-135852 MD:Z:11A21A2C113T98 RG:Z:H06HD.2 NM:i:5 AS:i:222 XS:i:104 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2213:10874:54590 163 1 922180 60 126M1I107M16S = 922213 282 GACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTATGGACGGGGTTTTACCATGTAGGCCAGGCTGGTCTCAAAATCCTGACTTCAAGTGATATGCCTTCCTCGGACTCCGTACTGGCTAG ==9>???@>@=??>>>>>==>?=@@>?>??>?????>?>??=?>?A>>@@>?>@>?@@=@??>?=???>A@@A@A@@>?A?@?BAAB??B>AB@@@?BA@AA:;<>A>?@>?=BABB?@?=?>AAB?@>?>>=AB>.3?@AAB==;?+<:@=1:7086>>9;@@@@################################################################### LB:Z:Solexa-135852 MD:Z:163G19T18C17C5G6 RG:Z:H06HD.2 NM:i:6 AS:i:201 XS:i:82 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:1:1203:12416:72151 147 1 922103 60 34S203M1I12M = 921683 -635 TCACTTAGTGACGAAGCGCTATAGTCCTAGTCGTACGTGTGCATTTGATACCCATGTATCTTCTTGGGTAAATAGACTTATCTAATATTTTGTCTATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACGTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCTCAC ########################################################################################################><=8=;<<==::>:566;8<=47;<::55;:9??A@?>>@;=>54;)6<=;:=8<<9;;*3.?=;;90&'=6<<:<<<=====>?=?<==<>?;><<=?<;5=>:<>>=>;396;==;6;9>6>>?;96<%+)476 LB:Z:Solexa-135852 MD:Z:13T2T14T6A5G3A11C78C71A3 RG:Z:H06HD.1 NM:i:10 AS:i:164 XS:i:40 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:1:2202:11178:83905 83 1 922290 60 16M1I233M = 922150 -389 GCTGGGATTACAGGTGCCTGACCCCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGTGGTTAGCCTATTTTGTCCATTTTAAAAATTAGTTTGTGGCCTGGTGCGGTGGCTCACACCTGTAATCCCAGCAATTTGGGAGGCCGAG ##:;==?@@@?@@>A===?><-&??>>5=>8>?>?@????@@>??@@@?@A>@B@@>@9@>@?AAA??>>@A?A@@@<>B@A@A@?B@B@@><@>A@A>?@AB>AB?@??A?AA@@@AA@A9?@@?A@@?@@A>A@@AB@<>>AA@B?=A?A?BA@@A@A?A@?AABAA@A@AAAA??AA??????@@@=???=?>>>??>=??8>=?>>>>>>>>=??=>>=>=>=>>=>=???>>>?>?>6:?> LB:Z:Solexa-135852 MD:Z:21A227 RG:Z:H06HD.1 NM:i:2 AS:i:237 XS:i:113 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:1:2202:11178:83905 163 1 922150 60 156M1I88M5S = 922290 389 CAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGCGGTTTTACCACGTTGGCCAGGCTGGTCTCAAAAGCCTGACTTCACTGGT ==;>>>>>>>>>>=>=>>>>=>>>>=>>=>>><>>>>?=?=><>=?>>>=>>>>?>>?>>>>>>>>>A@>>>?>>=>@???@@>@=@>A>?<@B?@A?@@@@@@AA<=>A>>?>B@@@?@>>A?@@?A@AAA??@9A>?>@AB?AA@5@<>@???>@?A?A>@9@>@@>>?A=>;=@@A?49<78>@############################################################ LB:Z:Solexa-135852 MD:Z:199G10T21C0T10 RG:Z:H06HD.1 NM:i:5 AS:i:217 XS:i:73 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:2:2214:2845:22052 83 1 922282 60 24M1I225M = 922261 -270 CCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTGGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGTGGTTAGCCTATTTTGTCCATTTTAAAAATTAGTTTGTGGCCTGGTGCGGTGGCTCACACCTGTAATCCCAGCAATTTGGG #####################?B@:<-??9:>>@>>=>>>???A??A?>)>?@@AA@?@@@AAA>@9@@@>A@A@@@@?B>A@@B@@AABAA@>B@@@A??A@@@A?@@@A>AA>@?@B@AA@@AA@@A9@A@@B@@@AAA>A?@AA@?AAA@@A@>A>A?AAA@AAB?BA?BAAB?@@@AAA?=@@@>>>??>>>>>>??=>>>=>=?>?>>=>?8==>>?????>>??>=?>>?>>?@????@?>;=> LB:Z:Solexa-135852 MD:Z:48T200 RG:Z:H06HD.2 NM:i:2 AS:i:237 XS:i:96 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2214:2845:22052 163 1 922261 60 47S45M1I117M40S = 922282 270 ACATGGTAAAACCCCGTCCCTACTAAAAATACAAAAATTAGCCAGGTGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAATTGATCTGCCTGGCTCGGCCTCCCAAAGAGCTACGAGTTCATGAACGAGTCGCCTGAGATAGCCGAGT =;;>>>?@??><>==7=>==>>=??>>?>>?=>>>>>?>???=???;@<@@???>?>>?==A>?>@@@>??9A?:@?@AAAAA?AB?BAA@?B?@?@?@?AA@B?ABAABA@@?AABBA@BAABBB@?@@AAA@?:AA<64>@@>AB@?@B@7;;A?>AB@AA@;=:>A7<8?<:>++2+:=??A<?>>>>>=?>>?>>??=>>==>=7==><>??@?>>>;;= SA:Z:1,922261,+,47S45M1I117M40S,60,3; LB:Z:Solexa-135852 MD:Z:50 RG:Z:H06HD.2 NM:i:0 AS:i:50 XS:i:45 PU:Z:H06HDADXX130110.2.ATCACGAT +H06JUADXX130110:1:2210:10459:11613 99 1 922269 60 37M1I129M83S = 922671 585 TCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGAGTTACCATGTTGGCCAAGCTGGGCTCCAAACCCTGACTTCCAATGTTCTTCCTGCCTCGGCCTCCCCCAGTGCTCGGATTACCGGCTGGAGGCCCTTGGGTTAGCCGATTTTTTCCACCTTTCAACTCAGCATGTGGCTTGGGGTCTGTGTCCCCGCCCTTAATC ??@@?@?@?????8@@???@@??@??@@>@??=?@?@?@>??>@>A??@??@@?A@???@@?A@@@?AABBB@>>@>5;?####################################################################################################################################################################### LB:Z:Solexa-135852 MD:Z:83T0T15G5T3A2C0T9A1G2A3G16A0A6A7 RG:Z:H06JU.1 NM:i:15 AS:i:89 XS:i:62 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2208:10188:83373 83 1 922232 60 74M1I175M = 922066 -415 CCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTATGAGCCACTGTGGTTAGCCTATTTTGTCCATTTTAAAAATT #::<@@A=9?@@,>?7,7:/A@A?BA=BC?AAABC@BB?=??ABABAABBA@;@B?ACAABAA@AAAAABA?BAAABAA@@AAB@=AABA@A@A@BBBBB?AABBBBAB?ABAA@A:AAA?BBBAAAAAB?BBAAAABAAABA?BABAA?>ABAAB@BABBAAB?B@ACBCABBCABAB9??????????@>????@>>??A??A>?@??>@??????>?>>??@?????????>??????@?@@??<@? LB:Z:Solexa-135852 MD:Z:0T206G41 RG:Z:H06JU.1 NM:i:3 AS:i:236 XS:i:113 PU:Z:H06JUADXX130110.1.ATCACGAT +H06JUADXX130110:1:2208:10188:83373 163 1 922066 60 224M26S = 922232 415 CATTTCCTTAATGATGAACAACACTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTACCTTGAGTGTCAGGTGACTGATAGCC =>;>?>>???????>>>>=>@=@>@????@?>@?>@>?>8?@??@@?@???@??>>???@???A?>@????@?@>@??@?AAAA@AAABBABBCBCABCABA@ABBABAABBABAC@CACBBBCAC@CACBBBBBBBCBAAB@ACCBBBB@ABBABCBCABACB>BDAC@BAACCA2@7@B>>??=A?##################################### LB:Z:Solexa-135852 MD:Z:224 RG:Z:H06JU.1 NM:i:0 AS:i:224 XS:i:39 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:2108:13586:98150 83 1 922013 60 250M = 921903 -360 GACAGCTTTGTAATTCAGTCATCCCAGTAGGCGCTCATTCTGGTTTTAATTTGCATTTCCTTAATGATGAACAACACTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGT >;9>?8AAA>?A?@A@A>@@@A@??A>AA@B8?@@@@AA@B@>AAAAA?@@A??@AA@@?A@A?@?@??A@AA@?@@A@@A@@A@AA@A@@9>A>AA@@AAA>A@@A@@@A>A@A@AA@AAA@>AAAAAA?@@??@@?AA@A@AAAA>@@@BAAAAAAAAA@AB@@B@AAB@BBAAB??AB@A>AAA@@?@??@@>>???>?@???=?=?=>???>=???>??>?>??>???>?>>>>????=@@>>=<> LB:Z:Solexa-135852 MD:Z:250 RG:Z:H06HD.2 NM:i:0 AS:i:250 XS:i:39 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:1:2109:10956:43725 83 1 922189 60 117M1I132M = 922057 -381 CCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGG #9:;???>@A@==?@@@??;>?>@>@A@>A>@>A>?A?@@???@?@?@@>?>?>B@?>A@?=?>@@?AB@AB?A?@A@?A@A???@B@BA@ACCA9?B?@BA@A@@=?A???B@>AAA@A>>=?@?>>?@?@?@@@A@AAAAA?A@A@?AAB?AB?@?A9@@@?AA??=A@@A?AA@AA@B@A@@???>????>??=?>>????>???=>?8>>=>>>==>>><>?>??>>>?>>=<=> LB:Z:Solexa-135852 MD:Z:0T248 RG:Z:H06HD.1 NM:i:2 AS:i:241 XS:i:112 PU:Z:H06HDADXX130110.1.ATCACGAT +H06HDADXX130110:1:2109:10956:43725 163 1 922057 60 250M = 922189 381 TTTAATTTGCATTTCCTTAATGATGAACAACACTGGGCATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCTCGAGTCGCTGGGATTACAGGTGC =><=?>>>>??>>>==>>>>==>==>><>><>==>>>>>>=>=><7?>>>>>>??>>?>>>>?>>?@>??>>?>>==?@?=@??B>A>@?>A@@@A:@?A@A?@A>???:@@?@:@A@>?>B?A>B?A@B?A?A?A?AA@A?@A@>?@?@@?@?A@?;@<9<:8??>>?>??@>?65,(:>=)5=<@:?########################################################## LB:Z:Solexa-135852 MD:Z:226C5A17 RG:Z:H06HD.1 NM:i:2 AS:i:240 XS:i:35 PU:Z:H06HDADXX130110.1.ATCACGAT +H06JUADXX130110:1:1108:1898:97567 163 1 922203 60 103M1I46M100S = 922395 421 AGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGGGTTACCATTGTGGCCACGCGCGGGTCCAACCACCCCACTCTCAGGAACTGTGCCGGCCTAGCGCCTCCAAGGCACGTGTGCTATCACAGTGCGCTACTG ==:>???@??????>@>?>>>?@?@????@>@>@@@@@>>@>>@>>?@>A????@@?@?@@A@@??@??@>?A@@AABB@B?;CBBBBBCB@BCBBB@CBBABBBCBB@C@BC@C@BCBABCA@ABBBBB@BBABABBAABA?AC?:####################################################################################################### LB:Z:Solexa-135852 MD:Z:149 RG:Z:H06JU.1 NM:i:1 AS:i:142 XS:i:70 PU:Z:H06JUADXX130110.1.ATCACGAT +H06HDADXX130110:2:2106:10355:18914 99 1 922095 60 211M1I38M = 922275 388 ATCTTCTCACGTGTGCATTTGTTATCCATGTATCTTCTTTGGTAAAAAGACTGATCAAATATTTTGTCCATTTTATTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAG >=;?>>@>?=8>>?>>>>>>>>??>==>>>??>>?>=?>>>>??>>>???=?>?>>?>>>?>>>>>>==>>>>>?>>>>>=<<;=@@=@@A@@>B@A>A?A@@A@A@@A@@AA@@AA@@AA@AA@@@A@A@?@A@@AA?A>A@AAA>@A?@A>@@@@A@A@@A?AA@??@@A?@A?@?>@A?A?AAA?@@9BA>@??A@@AA@A@>A@@@?A?A@A>@>?A?A?@A?>AA?@@@AAA=99=@AAA@=;:< LB:Z:Solexa-135852 MD:Z:249 RG:Z:H06HD.2 NM:i:1 AS:i:242 XS:i:70 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:2106:10355:18914 147 1 922275 60 41S31M1I177M = 922095 -388 CCGGCAACATGAGACCGCTGGCATAGAGTGATAGTGCCACGTCAGCTTCCCGAGTAGCTGAGATTACAGGTGCCTGACACCACCCCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGTTTTACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACTTCAAGTGATCTGCCTGCCTCGGCCTCCCAAAGTGCTAGGATTACAGGTGTGAGCCACTGTGGTTAGCCTATTTTGTCCATTTTAAAAATTAG #####################################################################################@A??@AA@AA:+=;@=?=:?;>?>?:@@@?=A???@@@AB?@?@?A@8??=?B?AABB?AA=>A9??????>>?>?=>????=>?>??>?>=?=@>??>>>??=?==????>??>>>>>>>>>>>?>?>??;>= LB:Z:Solexa-135852 MD:Z:19G21A166 RG:Z:H06HD.2 NM:i:3 AS:i:191 XS:i:118 PU:Z:H06HDADXX130110.2.ATCACGAT +H06HDADXX130110:2:1216:19927:92141 99 1 922170 60 136M1I46M67S = 922602 513 TTTTATTTGAGACAGAGCCTCACTCTGTTGCCCAGGCTGGAATGAAGCAGTGAGATCTTGGCTCACTGCAACCTCCACCCCCTGGGTTCAAGTGATTGTTCCACCTCAGCTTCCCGAGTAGCTGGGATTACAGGTGCCTGACACCACACCTGGCTAATTTTTGTATTTTTAGTAGGGACGGGGGTGTACCACGTTGGGCAATCTGGTGTCTAAATCCGTACATTTATTGAACTGTCTGTCTCAGCGGCCC >?=?@?@@?@?@=;>??>>?=>7?>@?>???;?????@>?@@??@@??>?>3+?+>=@@>@+/=<<0=@@?;?A?>B@AA??=;<=>@>BAA7;@@A@@@68???A>@@@@6<;?:?>>>?BBAAA?=?@@?>==;@?BA@@B@AB@B>?@<=@A(8?;@@AA@@?@@A@>>@@A8<@@####################################################################### LB:Z:Solexa-135852 MD:Z:182 RG:Z:H06HD.2 NM:i:1 AS:i:175 XS:i:70 PU:Z:H06HDADXX130110.2.ATCACGAT diff --git a/adam-core/src/test/scala/org/bdgenomics/adam/algorithms/consensus/ConsensusSuite.scala b/adam-core/src/test/scala/org/bdgenomics/adam/algorithms/consensus/ConsensusSuite.scala index 6640d89636..9188d1b2ff 100644 --- a/adam-core/src/test/scala/org/bdgenomics/adam/algorithms/consensus/ConsensusSuite.scala +++ b/adam-core/src/test/scala/org/bdgenomics/adam/algorithms/consensus/ConsensusSuite.scala @@ -29,7 +29,7 @@ class ConsensusSuite extends FunSuite { val cs = c.insertIntoReference(ref, ReferenceRegion("0", 5L, 16L)) - assert(cs === "AAAAATCGAAAAAA") + assert(cs === "AAAAAATCGAAAAA") } test("test the insertion of a consensus deletion into a reference") { diff --git a/adam-core/src/test/scala/org/bdgenomics/adam/models/MdTagSuite.scala b/adam-core/src/test/scala/org/bdgenomics/adam/models/MdTagSuite.scala index 54ec5283d4..dd2f4b2817 100644 --- a/adam-core/src/test/scala/org/bdgenomics/adam/models/MdTagSuite.scala +++ b/adam-core/src/test/scala/org/bdgenomics/adam/models/MdTagSuite.scala @@ -482,6 +482,20 @@ class MdTagSuite extends FunSuite { assert(tag.getReference(read) === "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGGGGGGGGGAAAAAAAAAAGGGGGGGGGGAAAAAAAAAAA") } + test("get gapped reference") { + val read = AlignmentRecord.newBuilder() + .setSequence("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") + .setReadMapped(true) + .setCigar("29M10D31M") + .setStart(5) + .setEnd(75) + .setMismatchingPositions("29^GGGGGGGGGG10G0G0G0G0G0G0G0G0G0G11") + .build() + + val tag = read.mdTag.get + assert(tag.getReference(read, withGaps = true) === "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGGGGGGGGGAAAAAAAAAAA") + } + test("move a cigar alignment by two for a read") { val read = AlignmentRecord.newBuilder() .setSequence("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") diff --git a/adam-core/src/test/scala/org/bdgenomics/adam/rdd/read/realignment/IndelRealignmentTargetSuite.scala b/adam-core/src/test/scala/org/bdgenomics/adam/rdd/read/realignment/IndelRealignmentTargetSuite.scala index cb95e99221..2552e50829 100644 --- a/adam-core/src/test/scala/org/bdgenomics/adam/rdd/read/realignment/IndelRealignmentTargetSuite.scala +++ b/adam-core/src/test/scala/org/bdgenomics/adam/rdd/read/realignment/IndelRealignmentTargetSuite.scala @@ -79,6 +79,12 @@ class IndelRealignmentTargetSuite extends ADAMFunSuite { assert(targets.head.variation.get.end === 8) assert(targets.head.readRange.start === 3) assert(targets.head.readRange.end === 10) + assert(TargetOrdering.contains(targets.head, read)) + assert(!TargetOrdering.lt(targets.head, read)) + val read2 = make_read(2L, "2M3D2M", "2^AAA2", 4, 7) + val read4 = make_read(4L, "2M3D2M", "2^AAA2", 4, 7) + assert(!TargetOrdering.lt(targets.head, read)) + assert(TargetOrdering.lt(targets.head, read4)) } sparkTest("creating simple target from read with insertion") { diff --git a/adam-core/src/test/scala/org/bdgenomics/adam/rdd/read/realignment/ModPartitionerSuite.scala b/adam-core/src/test/scala/org/bdgenomics/adam/rdd/read/realignment/ModPartitionerSuite.scala new file mode 100644 index 0000000000..b15db53f26 --- /dev/null +++ b/adam-core/src/test/scala/org/bdgenomics/adam/rdd/read/realignment/ModPartitionerSuite.scala @@ -0,0 +1,51 @@ +/** + * 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.rdd.read.realignment + +import org.scalatest.FunSuite + +class ModPartitionerSuite extends FunSuite { + + val partitioner = ModPartitioner(123) + + test("report number of partitions correctly") { + assert(partitioner.numPartitions === 123) + } + + test("partition a number that is lower than the number of partitions and positive") { + assert(partitioner.getPartition(12) == 12) + } + + test("partition a number that is greater than the number of partitions and positive") { + assert(partitioner.getPartition(321) == 75) + } + + test("partition a number that is lower than the number of partitions and negative") { + assert(partitioner.getPartition(-21) == 21) + } + + test("partition a number that is greater than the number of partitions and negative") { + assert(partitioner.getPartition(-1234) == 4) + } + + test("fire an exception if input is not an integer") { + intercept[IllegalArgumentException] { + partitioner.getPartition("a string") + } + } +} diff --git a/adam-core/src/test/scala/org/bdgenomics/adam/rdd/read/realignment/RealignIndelsSuite.scala b/adam-core/src/test/scala/org/bdgenomics/adam/rdd/read/realignment/RealignIndelsSuite.scala index 1cbe55694b..407e6b79b6 100644 --- a/adam-core/src/test/scala/org/bdgenomics/adam/rdd/read/realignment/RealignIndelsSuite.scala +++ b/adam-core/src/test/scala/org/bdgenomics/adam/rdd/read/realignment/RealignIndelsSuite.scala @@ -17,17 +17,24 @@ */ package org.bdgenomics.adam.rdd.read.realignment +import org.apache.spark.SparkContext._ import org.apache.spark.rdd.RDD import org.bdgenomics.adam.algorithms.consensus.{ Consensus, ConsensusGenerator } -import org.bdgenomics.adam.models.ReferencePosition +import org.bdgenomics.adam.models.{ + RecordGroupDictionary, + ReferencePosition, + ReferenceRegion, + SequenceDictionary, + SequenceRecord +} import org.bdgenomics.adam.rdd.ADAMContext._ import org.bdgenomics.adam.rdd.read.AlignmentRecordRDD import org.bdgenomics.adam.rdd.variant.VariantRDD import org.bdgenomics.adam.rich.RichAlignmentRecord -import org.bdgenomics.adam.util.ADAMFunSuite +import org.bdgenomics.adam.util.{ ADAMFunSuite, ReferenceFile } import org.bdgenomics.formats.avro.{ AlignmentRecord, Contig, Variant } class RealignIndelsSuite extends ADAMFunSuite { @@ -41,9 +48,13 @@ class RealignIndelsSuite extends ADAMFunSuite { artificialReadsRdd.rdd } - def artificialRealignedReads(cg: ConsensusGenerator = ConsensusGenerator.fromReads): RDD[AlignmentRecord] = { + def artificialRealignedReads(cg: ConsensusGenerator = ConsensusGenerator.fromReads, + maxCoverage: Int = 3000, + optRefFile: Option[ReferenceFile] = None): RDD[AlignmentRecord] = { artificialReadsRdd - .realignIndels(consensusModel = cg) + .realignIndels(consensusModel = cg, + maxReadsPerTarget = maxCoverage, + optReferenceFile = optRefFile) .sortReadsByReferencePosition() .rdd } @@ -53,8 +64,40 @@ class RealignIndelsSuite extends ADAMFunSuite { sc.loadAlignments(path).rdd } + def makeRead(start: Long, end: Long): RichAlignmentRecord = { + RichAlignmentRecord(AlignmentRecord.newBuilder() + .setContigName("ctg") + .setStart(start) + .setEnd(end) + .setReadMapped(true) + .build()) + } + + test("map reads to targets") { + val targets = Array( + new IndelRealignmentTarget(None, ReferenceRegion("ctg", 1L, 4L)), + new IndelRealignmentTarget(None, ReferenceRegion("ctg", 10L, 44L)), + new IndelRealignmentTarget(None, ReferenceRegion("ctg", 100L, 400L))) + + assert(RealignIndels.mapToTarget(makeRead(0L, 1L), targets, 0, 3) < 0) + assert(RealignIndels.mapToTarget(makeRead(0L, 2L), targets, 0, 3) === 0) + assert(RealignIndels.mapToTarget(makeRead(1L, 2L), targets, 0, 3) === 0) + assert(RealignIndels.mapToTarget(makeRead(3L, 6L), targets, 0, 3) === 0) + assert(RealignIndels.mapToTarget(makeRead(6L, 8L), targets, 0, 3) < 0) + assert(RealignIndels.mapToTarget(makeRead(8L, 12L), targets, 0, 3) === 1) + assert(RealignIndels.mapToTarget(makeRead(10L, 12L), targets, 0, 3) === 1) + assert(RealignIndels.mapToTarget(makeRead(14L, 36L), targets, 0, 3) === 1) + assert(RealignIndels.mapToTarget(makeRead(35L, 50L), targets, 0, 3) === 1) + assert(RealignIndels.mapToTarget(makeRead(45L, 50L), targets, 0, 3) < 0) + assert(RealignIndels.mapToTarget(makeRead(90L, 100L), targets, 0, 3) < 0) + assert(RealignIndels.mapToTarget(makeRead(90L, 101L), targets, 0, 3) === 2) + assert(RealignIndels.mapToTarget(makeRead(200L, 300L), targets, 0, 3) === 2) + assert(RealignIndels.mapToTarget(makeRead(200L, 600L), targets, 0, 3) === 2) + assert(RealignIndels.mapToTarget(makeRead(700L, 1000L), targets, 0, 3) < 0) + } + sparkTest("checking mapping to targets for artificial reads") { - val targets = RealignmentTargetFinder(artificialReads.map(RichAlignmentRecord(_))) + val targets = RealignmentTargetFinder(artificialReads.map(RichAlignmentRecord(_))).toArray assert(targets.size === 1) val rr = artificialReads.map(RichAlignmentRecord(_)) val readsMappedToTarget = RealignIndels.mapTargets(rr, targets).map(kv => { @@ -63,22 +106,22 @@ class RealignIndelsSuite extends ADAMFunSuite { (t, r.map(r => r.record)) }).collect() - assert(readsMappedToTarget.size === 2) + assert(readsMappedToTarget.count(_._1.isDefined) === 1) - readsMappedToTarget.forall { - case (target: Option[IndelRealignmentTarget], reads: Seq[AlignmentRecord]) => reads.forall { + assert(readsMappedToTarget.forall { + case (target: Option[(Int, IndelRealignmentTarget)], reads: Seq[AlignmentRecord]) => reads.forall { read => { if (read.getStart <= 25) { - val result = target.get.readRange.start <= read.getStart.toLong - result && (target.get.readRange.end >= read.getEnd) + val result = target.get._2.readRange.start <= read.getStart.toLong + result && (target.get._2.readRange.end >= read.getEnd) } else { target.isEmpty } } } case _ => false - } + }) } sparkTest("checking alternative consensus for artificial reads") { @@ -115,9 +158,9 @@ class RealignIndelsSuite extends ADAMFunSuite { assert(readReference._1 === refStr.substring(startIndex, stopIndex)) } - val targets = RealignmentTargetFinder(artificialReads.map(RichAlignmentRecord(_))) + val targets = RealignmentTargetFinder(artificialReads.map(RichAlignmentRecord(_))).toArray val rr = artificialReads.map(RichAlignmentRecord(_)) - val readsMappedToTarget: Array[(IndelRealignmentTarget, Iterable[AlignmentRecord])] = RealignIndels.mapTargets(rr, targets) + val readsMappedToTarget: Array[((Int, IndelRealignmentTarget), Iterable[AlignmentRecord])] = RealignIndels.mapTargets(rr, targets) .filter(_._1.isDefined) .map(kv => { val (t, r) = kv @@ -126,7 +169,7 @@ class RealignIndelsSuite extends ADAMFunSuite { }).collect() val readReference = readsMappedToTarget.map { - case (target, reads) => + case ((_, target), reads) => if (!target.isEmpty) { val referenceFromReads: (String, Long, Long) = RealignIndels.getReferenceFromReads(reads.map(r => new RichAlignmentRecord(r)).toSeq) assert(referenceFromReads._2 == -1 || referenceFromReads._1.length > 0) @@ -149,14 +192,28 @@ class RealignIndelsSuite extends ADAMFunSuite { val gatkRead4 = gatkArtificialRealignedReadsCollected.filter(_.getReadName == "read4") val result = artificialRead4.zip(gatkRead4) - assert(result.forall( - pair => pair._1.getReadName == pair._2.getReadName)) - assert(result.forall( - pair => pair._1.getStart == pair._2.getStart)) - assert(result.forall( - pair => pair._1.getCigar == pair._2.getCigar)) - assert(result.forall( - pair => pair._1.getMapq == pair._2.getMapq)) + result.foreach(pair => assert(pair._1.getReadName === pair._2.getReadName)) + result.foreach(pair => assert(pair._1.getStart === pair._2.getStart)) + result.foreach(pair => assert(pair._1.getCigar === pair._2.getCigar)) + result.foreach(pair => assert(pair._1.getMapq === pair._2.getMapq)) + } + + sparkTest("checking realigned reads for artificial input with reference file") { + val artificialRealignedReadsCollected = artificialRealignedReads(optRefFile = Some(sc.loadReferenceFile(testFile("artificial.fa"), 1000))) + .collect() + val gatkArtificialRealignedReadsCollected = gatkArtificialRealignedReads + .collect() + + assert(artificialRealignedReadsCollected.size === gatkArtificialRealignedReadsCollected.size) + + val artificialRead4 = artificialRealignedReadsCollected.filter(_.getReadName == "read4") + val gatkRead4 = gatkArtificialRealignedReadsCollected.filter(_.getReadName == "read4") + val result = artificialRead4.zip(gatkRead4) + + result.foreach(pair => assert(pair._1.getReadName === pair._2.getReadName)) + result.foreach(pair => assert(pair._1.getStart === pair._2.getStart)) + result.foreach(pair => assert(pair._1.getCigar === pair._2.getCigar)) + result.foreach(pair => assert(pair._1.getMapq === pair._2.getMapq)) } sparkTest("checking realigned reads for artificial input using knowns") { @@ -181,14 +238,10 @@ class RealignIndelsSuite extends ADAMFunSuite { val gatkRead4 = gatkArtificialRealignedReadsCollected.filter(_.getReadName == "read4") val result = artificialRead4.zip(gatkRead4) - assert(result.forall( - pair => pair._1.getReadName == pair._2.getReadName)) - assert(result.forall( - pair => pair._1.getStart == pair._2.getStart)) - assert(result.forall( - pair => pair._1.getCigar == pair._2.getCigar)) - assert(result.forall( - pair => pair._1.getMapq == pair._2.getMapq)) + result.foreach(pair => assert(pair._1.getReadName === pair._2.getReadName)) + result.foreach(pair => assert(pair._1.getStart === pair._2.getStart)) + result.foreach(pair => assert(pair._1.getCigar === pair._2.getCigar)) + result.foreach(pair => assert(pair._1.getMapq === pair._2.getMapq)) } sparkTest("checking realigned reads for artificial input using knowns and reads") { @@ -214,38 +267,95 @@ class RealignIndelsSuite extends ADAMFunSuite { val gatkRead4 = gatkArtificialRealignedReadsCollected.filter(_.getReadName == "read4") val result = artificialRead4.zip(gatkRead4) - assert(result.forall( - pair => pair._1.getReadName == pair._2.getReadName)) - assert(result.forall( - pair => pair._1.getStart == pair._2.getStart)) - assert(result.forall( - pair => pair._1.getCigar == pair._2.getCigar)) - assert(result.forall( - pair => pair._1.getMapq == pair._2.getMapq)) + result.foreach(pair => assert(pair._1.getReadName === pair._2.getReadName)) + result.foreach(pair => assert(pair._1.getStart === pair._2.getStart)) + result.foreach(pair => assert(pair._1.getCigar === pair._2.getCigar)) + result.foreach(pair => assert(pair._1.getMapq === pair._2.getMapq)) + } + + sparkTest("skip realigning reads if target is highly covered") { + val artificialRealignedReadsCollected = artificialRealignedReads(maxCoverage = 0) + .collect() + val reads = artificialReads + val result = artificialRealignedReadsCollected.zip(reads.collect()) + + result.foreach(pair => assert(pair._1.getReadName === pair._2.getReadName)) + result.foreach(pair => assert(pair._1.getStart === pair._2.getStart)) + result.foreach(pair => assert(pair._1.getCigar === pair._2.getCigar)) + result.foreach(pair => assert(pair._1.getMapq === pair._2.getMapq)) + } + + sparkTest("skip realignment if target is an insufficient LOD improvement") { + val path = testFile("NA12878.1_922305.G_GC_hom.sam") + val reads = sc.loadAlignments(path) + val realignedReads = reads.realignIndels() + val result = reads.rdd.filter(!_.getSupplementaryAlignment).keyBy(r => (r.getReadName, r.getReadInFragment)) + .join(realignedReads.rdd.filter(!_.getSupplementaryAlignment).keyBy(r => (r.getReadName, r.getReadInFragment))) + .map(_._2) + .collect() + + result.foreach(pair => assert(pair._1 === pair._2)) + } + + sparkTest("realign reads to an insertion") { + val path = testFile("NA12878.1_922305.G_GC_hom.sam") + val reads = sc.loadAlignments(path) + val realignedReads = reads.realignIndels(lodThreshold = 0.0) + val result = reads.rdd.filter(!_.getSupplementaryAlignment).keyBy(r => (r.getReadName, r.getReadInFragment)) + .join(realignedReads.rdd.filter(!_.getSupplementaryAlignment).keyBy(r => (r.getReadName, r.getReadInFragment))) + .map(_._2) + .collect() + + val movedReads = result.filter(pair => pair._1 != pair._2) + assert(movedReads.size === 1) + val read = movedReads.map(_._2) + .filter(_.getReadName === "H06HDADXX130110:1:1114:19044:27806") + .head + assert(read.getStart === 922057) + assert(read.getCigar === "248M1I1M") + assert(read.getMismatchingPositions === "249") } - sparkTest("test mismatch quality scoring") { + test("test mismatch quality scoring") { val ri = new RealignIndels() val read = "AAAAAAAA" val ref = "AAGGGGAA" val qScores = Seq(40, 40, 40, 40, 40, 40, 40, 40) - assert(ri.sumMismatchQualityIgnoreCigar(read, ref, qScores) === 160) + assert(ri.sumMismatchQualityIgnoreCigar(read, ref, qScores, Int.MaxValue, 0) === 160) } - sparkTest("test mismatch quality scoring for no mismatches") { + test("test mismatch quality scoring for no mismatches") { val ri = new RealignIndels() val read = "AAAAAAAA" val qScores = Seq(40, 40, 40, 40, 40, 40, 40, 40) - assert(ri.sumMismatchQualityIgnoreCigar(read, read, qScores) === 0) + assert(ri.sumMismatchQualityIgnoreCigar(read, read, qScores, Int.MaxValue, 0) === 0) + } + + test("test mismatch quality scoring for offset") { + val ri = new RealignIndels() + val read = "AAAAAAAA" + val ref = "G%s".format(read) + val qScores = Seq(40, 40, 40, 40, 40, 40, 40, 40) + + assert(ri.sumMismatchQualityIgnoreCigar(read, ref, qScores, Int.MaxValue, 1) === 0) + } + + test("test mismatch quality scoring with early exit") { + val ri = new RealignIndels() + val read = "AAAAAAAA" + val ref = "AAGGGGAA" + val qScores = Seq(40, 40, 40, 40, 40, 40, 40, 40) + + assert(ri.sumMismatchQualityIgnoreCigar(read, ref, qScores, 120, 0) === Int.MaxValue) } sparkTest("test mismatch quality scoring after unpacking read") { val ri = new RealignIndels() val read = artificialReads.first() - assert(ri.sumMismatchQuality(read) === 800) + assert(ri.sumMismatchQuality(read) === 400) } test("we shouldn't try to realign a region with no target") { @@ -275,8 +385,8 @@ class RealignIndelsSuite extends ADAMFunSuite { val ri = new RealignIndels() // this should be a NOP - assert(ri.realignTargetGroup(None.asInstanceOf[Option[IndelRealignmentTarget]], - reads).size === 2) + assert(ri.realignTargetGroup((None.asInstanceOf[Option[(Int, IndelRealignmentTarget)]], + reads)).size === 2) } sparkTest("we shouldn't try to realign reads with no indel evidence") { @@ -335,9 +445,106 @@ class RealignIndelsSuite extends ADAMFunSuite { Option(op).filter(_ >= 0).foreach(oPos => { val s = artificialReads.collect().filter(x => (x.getReadName() == readName)) - assert(s.filter(x => (x.getStart() == oPos)).length > 0) - assert(s.filter(x => (x.getCigar() == oc)).length > 0) + assert(s.filter(x => (x.getStart() === oPos)).length > 0) + assert(s.filter(x => (x.getCigar() === oc)).length > 0) }) }) } + + sparkTest("realign a read with an insertion that goes off the end of the read") { + // ref: TTACCA___CCACA + // ins: ACCAGTTC + // ext: TTACCA GT + // ovl: TACCA GTTC + // ovs: AGTT CCAC + // st: TT CCACA + val insRead = AlignmentRecord.newBuilder + .setContigName("1") + .setStart(10L) + .setEnd(15L) + .setSequence("ACCAGTTC") + .setQual("........") + .setCigar("4M3I1M") + .setMismatchingPositions("5") + .setReadMapped(true) + .setMapq(40) + .build + val extRead = AlignmentRecord.newBuilder + .setContigName("1") + .setStart(8L) + .setEnd(16L) + .setSequence("TTACCAGT") + .setQual("........") + .setCigar("8M") + .setMismatchingPositions("6C0C0") + .setReadMapped(true) + .setMapq(40) + .build + val ovlRead = AlignmentRecord.newBuilder + .setContigName("1") + .setStart(9L) + .setEnd(18L) + .setSequence("TACCAGTTC") + .setQual("........") + .setCigar("9M") + .setMismatchingPositions("5C0C0A1") + .setReadMapped(true) + .setMapq(41) + .build + val ovsRead = AlignmentRecord.newBuilder + .setContigName("1") + .setStart(10L) + .setEnd(18L) + .setSequence("AGTTCCAC") + .setQual("........") + .setCigar("8M") + .setMismatchingPositions("1C0C0A4") + .setReadMapped(true) + .setMapq(42) + .build + val stRead = AlignmentRecord.newBuilder + .setContigName("1") + .setStart(12L) + .setEnd(19L) + .setSequence("TTCCACA") + .setQual(".......") + .setCigar("7M") + .setMismatchingPositions("0C0A5") + .setReadMapped(true) + .setMapq(43) + .build + val rdd = AlignmentRecordRDD(sc.parallelize(Seq(insRead, extRead, ovlRead, ovsRead, stRead)), + new SequenceDictionary(Vector(SequenceRecord("1", 20L))), + RecordGroupDictionary.empty) + val realignedReads = rdd.realignIndels(lodThreshold = 0.0) + .rdd + .collect + assert(realignedReads.count(_.getMapq >= 50) === 4) + val realignedExtRead = realignedReads.filter(_.getMapq == 50).head + assert(realignedExtRead.getStart === 8L) + assert(realignedExtRead.getEnd === 14L) + assert(realignedExtRead.getCigar === "6M2S") + assert(realignedExtRead.getMismatchingPositions === "6") + val realignedOvlRead = realignedReads.filter(_.getMapq == 51).head + assert(realignedOvlRead.getStart === 9L) + assert(realignedOvlRead.getEnd === 15L) + assert(realignedOvlRead.getCigar === "5M3I1M") + assert(realignedOvlRead.getMismatchingPositions === "6") + val realignedOvsRead = realignedReads.filter(_.getMapq == 52).head + assert(realignedOvsRead.getStart === 13L) + assert(realignedOvsRead.getEnd === 18L) + assert(realignedOvsRead.getCigar === "1M3I4M") + assert(realignedOvsRead.getMismatchingPositions === "5") + val realignedStRead = realignedReads.filter(_.getMapq == 53).head + assert(realignedStRead.getStart === 14L) + assert(realignedStRead.getEnd === 19L) + assert(realignedStRead.getCigar === "2S5M") + assert(realignedStRead.getMismatchingPositions === "5") + } + + sparkTest("if realigning a target doesn't improve the LOD, don't drop reads") { + val reads = sc.loadAlignments(testFile("NA12878.1_854950_855150.sam")) + val realignedReads = reads.realignIndels() + assert(reads.rdd.count === realignedReads.rdd.count) + } }