From 776ec327876d43f84735faf02053fc929a9846d0 Mon Sep 17 00:00:00 2001 From: Daniel Geiszler Date: Wed, 29 May 2024 13:33:11 +0300 Subject: [PATCH] Change decoy generation to complementary Use fixed npv Fix npv denominator --- .../iterativelocalization/IterativeLocalizer.java | 12 ++++++------ .../MatchedIonDistribution.java | 9 +++++---- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/edu/umich/andykong/ptmshepherd/iterativelocalization/IterativeLocalizer.java b/src/edu/umich/andykong/ptmshepherd/iterativelocalization/IterativeLocalizer.java index fd058ae..78b5881 100644 --- a/src/edu/umich/andykong/ptmshepherd/iterativelocalization/IterativeLocalizer.java +++ b/src/edu/umich/andykong/ptmshepherd/iterativelocalization/IterativeLocalizer.java @@ -171,13 +171,13 @@ private void fitMatchedIonDistribution() throws Exception { float[] reducedInts = reducedIons[1]; // Get sites that are/would be shifted - ArrayList sitePepFrags = DownstreamPepFragGenerator.calculatePeptideFragments( - targetPep, this.ionTypes, mutationSite, 1); - ArrayList decoySitePepFrags = DownstreamPepFragGenerator.calculatePeptideFragments( - decoyPep, this.ionTypes, mutationSite, 1); + //ArrayList sitePepFrags = DownstreamPepFragGenerator.calculatePeptideFragments( + // targetPep, this.ionTypes, mutationSite, 1); + //ArrayList decoySitePepFrags = DownstreamPepFragGenerator.calculatePeptideFragments( + // decoyPep, this.ionTypes, mutationSite, 1); // Generate target and decoy fragments - //ArrayList sitePepFrags = targetPep.calculatePeptideFragments(this.ionTypes, 1); - //ArrayList decoySitePepFrags = decoyPep.calculateComplementaryFragments(this.ionTypes, mutatedMassShift, mutationSite, 1); + ArrayList sitePepFrags = targetPep.calculatePeptideFragments(this.ionTypes, 1); + ArrayList decoySitePepFrags = targetPep.calculateComplementaryFragments(this.ionTypes, mutatedMassShift, mutationSite, 1); // Score over all possible sites /** diff --git a/src/edu/umich/andykong/ptmshepherd/iterativelocalization/MatchedIonDistribution.java b/src/edu/umich/andykong/ptmshepherd/iterativelocalization/MatchedIonDistribution.java index 64250be..6804771 100644 --- a/src/edu/umich/andykong/ptmshepherd/iterativelocalization/MatchedIonDistribution.java +++ b/src/edu/umich/andykong/ptmshepherd/iterativelocalization/MatchedIonDistribution.java @@ -297,7 +297,7 @@ public void calculateNegativePredictiveValue() { // todo see if adding 1 here he this.ionPosterior = new double[((int) (100.0 * this.binMult + 1))]; for (int i = 0; i < this.ionPosterior.length; i++) { - this.ionPosterior[i] = (double) ((this.pdf[i] + 1) / (double) (this.pdf[i] + this.pdfDecoy[i] + 2)); + this.ionPosterior[i] = (double) ((this.pdf[i]) / (double) (this.pdf[i] + this.pdfDecoy[i])); System.out.println(this.ionPosterior[i]); } //this.negPredictiveValue = Math.max(this.negPredictiveValue, 0.01); @@ -442,9 +442,10 @@ public double calcIonProbability(float intensity, float massError) { public double calculateIonProbabilityLda(float intensity, float massError) { double projVal; double prob; - if (intensity < 0) - prob = this.ionPosterior[(int) (intensity * -1 * this.binMult)]; - else { + if (intensity < 0) { + //prob = this.ionPosterior[(int) (intensity * -1 * this.binMult)]; + prob = this.negPredictiveValue; + } else { projVal = this.ldaProcessor.projectData(massError, intensity).getEntry(0,0); int projValIndex = translateLdaValToIndex(projVal); prob = 1.0 - this.qVals[projValIndex];