Skip to content
This repository was archived by the owner on Nov 28, 2020. It is now read-only.

2.12 Improvements/manual inlining #203

Open
wants to merge 3 commits into
base: improvements/scala_2.12_inline
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ case class ContigAggregate(
qualityCache: QualityCache
) {

private val altsKeyCache = mutable.TreeSet.empty[Int]
val altsKeyCache = mutable.TreeSet.empty[Int]

def hasAltOnPosition(pos:Int):Boolean = alts.contains(pos)
def getRange: broadcast.Range = broadcast.Range(contig, startPosition, maxPosition)
Expand Down
12 changes: 7 additions & 5 deletions src/main/scala/org/biodatageeks/sequila/pileup/model/Read.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import org.biodatageeks.sequila.pileup.MDTagParser
import org.biodatageeks.sequila.pileup.conf.{Conf, QualityConstants}
import org.biodatageeks.sequila.pileup.timers.PileupTimers.{AnalyzeReadsCalculateAltsParseMDTimer, AnalyzeReadsCalculateAltsTimer, AnalyzeReadsCalculateEventsTimer}
import org.biodatageeks.sequila.pileup.timers.PileupTimers._
import org.biodatageeks.sequila.pileup.model.Quals._

import scala.collection.mutable

Expand Down Expand Up @@ -35,7 +36,7 @@ case class ExtendedReads(r:SAMRecord) {
val cigarConf = CigarDerivedConf.create(start, cigar)
val readQualSummary = ReadQualSummary(start, r.getEnd, r.getBaseQualities, cigarConf)
ReadQualSummaryFillExisitingQualTimer.time { fillBaseQualitiesForExistingAlts(agg, foundAlts, readQualSummary) }
agg.addToCache(readQualSummary)
agg.qualityCache.addOrReplace(readQualSummary)
}
}
}
Expand Down Expand Up @@ -117,8 +118,8 @@ case class ExtendedReads(r:SAMRecord) {
position += 1

val indexInSeq = calculatePositionInReadSeq(position - read.getStart -delCounter)
val altBase = getAltBaseFromSequence(indexInSeq)
val altBaseQual = getAltBaseQualFromSequence(indexInSeq)
val altBase = this.r.getReadString.charAt(indexInSeq-1)
val altBaseQual = this.r.getBaseQualities()(indexInSeq-1)
val altPosition = position - clipLen - 1
val newAlt = !aggregate.hasAltOnPosition(altPosition)
aggregate.updateAlts(altPosition, altBase)
Expand All @@ -142,14 +143,15 @@ case class ExtendedReads(r:SAMRecord) {

//~100s
def fillBaseQualitiesForExistingAlts(agg: ContigAggregate, blackList:scala.collection.Set[Int], readQualSummary: ReadQualSummary): Unit = {
val altsPositions = agg.getAltPositionsForRange(r.getStart, r.getEnd) //~1s
//val altsPositions = agg.getAltPositionsForRange(r.getStart, r.getEnd) //~1s
val altsPositions = agg.altsKeyCache.range(r.getStart,r.getEnd+1)
val positionsToFill = altsPositions diff blackList //~1s
for (pos <- positionsToFill.iterator) { //~10s empty loop
if(!readQualSummary.cigarDerivedConf.hasDel || !readQualSummary.hasDeletionOnPosition(pos) ) {
val relativePos = if(!readQualSummary.cigarDerivedConf.hasIndel && !readQualSummary.cigarDerivedConf.hasClip ) pos - readQualSummary.start
else readQualSummary.relativePosition(pos)
val qual = readQualSummary.qualsArray(relativePos)
agg.updateQuals(pos, QualityConstants.REF_SYMBOL, qual, false)
agg.quals.updateQuals(pos, QualityConstants.REF_SYMBOL,qual, false, true)
}
}
}
Expand Down