From 0915851036e7145fb3580fde51b47f6b01e77c61 Mon Sep 17 00:00:00 2001 From: agaszmurlo Date: Thu, 13 Aug 2020 12:37:30 +0200 Subject: [PATCH 1/3] inline Read methods --- .../scala/org/biodatageeks/sequila/pileup/model/Read.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/scala/org/biodatageeks/sequila/pileup/model/Read.scala b/src/main/scala/org/biodatageeks/sequila/pileup/model/Read.scala index 535f787e..395b1ff2 100644 --- a/src/main/scala/org/biodatageeks/sequila/pileup/model/Read.scala +++ b/src/main/scala/org/biodatageeks/sequila/pileup/model/Read.scala @@ -117,8 +117,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) From be579a9263d1570eed1472e268b8982ab4c5de43 Mon Sep 17 00:00:00 2001 From: agaszmurlo Date: Thu, 13 Aug 2020 13:01:43 +0200 Subject: [PATCH 2/3] inlining methods from ContigAggregate --- .../biodatageeks/sequila/pileup/model/ContigAggregate.scala | 2 +- .../scala/org/biodatageeks/sequila/pileup/model/Read.scala | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/scala/org/biodatageeks/sequila/pileup/model/ContigAggregate.scala b/src/main/scala/org/biodatageeks/sequila/pileup/model/ContigAggregate.scala index db9c2ba0..7d8cf202 100644 --- a/src/main/scala/org/biodatageeks/sequila/pileup/model/ContigAggregate.scala +++ b/src/main/scala/org/biodatageeks/sequila/pileup/model/ContigAggregate.scala @@ -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) diff --git a/src/main/scala/org/biodatageeks/sequila/pileup/model/Read.scala b/src/main/scala/org/biodatageeks/sequila/pileup/model/Read.scala index 395b1ff2..467b31ac 100644 --- a/src/main/scala/org/biodatageeks/sequila/pileup/model/Read.scala +++ b/src/main/scala/org/biodatageeks/sequila/pileup/model/Read.scala @@ -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 @@ -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) } } } From 320958b039176c9daa2c507168f829e4337a2cce Mon Sep 17 00:00:00 2001 From: agaszmurlo Date: Thu, 13 Aug 2020 13:05:02 +0200 Subject: [PATCH 3/3] inlining add to cache method --- src/main/scala/org/biodatageeks/sequila/pileup/model/Read.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/org/biodatageeks/sequila/pileup/model/Read.scala b/src/main/scala/org/biodatageeks/sequila/pileup/model/Read.scala index 467b31ac..44fd70b5 100644 --- a/src/main/scala/org/biodatageeks/sequila/pileup/model/Read.scala +++ b/src/main/scala/org/biodatageeks/sequila/pileup/model/Read.scala @@ -36,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) } } }