Skip to content

Commit ec3a212

Browse files
author
stefanks
authored
Merge pull request #182 from smith-chem-wisc/StefanBranch
alrighty
2 parents b567f28 + 08672d6 commit ec3a212

7 files changed

+131
-25
lines changed

InternalLogic/Calibration/CalibrationEngine.cs

+6-6
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ protected override MyResults RunSpecific()
6767
Status("Getting Training Points");
6868
pointList = GetDataPoints(ref numMs1MassChargeCombinationsConsidered, ref numMs1MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaks, ref numMs2MassChargeCombinationsConsidered, ref numMs2MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaks);
6969

70-
goodResult.Add(calibrationRound, numMs1MassChargeCombinationsConsidered, numMs1MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaks, pointList.Count, numMs2MassChargeCombinationsConsidered, numMs2MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaks);
70+
goodResult.Add(numMs1MassChargeCombinationsConsidered, numMs1MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaks, pointList.Count, numMs2MassChargeCombinationsConsidered, numMs2MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaks);
7171

7272
if (calibrationRound >= 2 && pointList.Count <= trainingPointCounts[calibrationRound - 2])
7373
break;
@@ -88,6 +88,8 @@ protected override MyResults RunSpecific()
8888

8989
CalibrationFunction combinedCalibration = Calibrate(pointList);
9090

91+
goodResult.Add(combinedCalibration);
92+
9193
if (combinedCalibration == null)
9294
return new MyErroredResults(this, "Could not calibrate");
9395
}
@@ -131,12 +133,10 @@ private List<LabeledDataPoint> GetDataPoints(ref int numMs1MassChargeCombination
131133
var SequenceWithChemicalFormulas = identification.thisPSM.SequenceWithChemicalFormulas;
132134
int peptideCharge = identification.thisPSM.newPsm.scanPrecursorCharge;
133135

134-
int numFragmentsIdentified = -1;
135-
var candidateTrainingPointsForPeptide = new List<LabeledDataPoint>();
136-
Peptide coolPeptide = null;
137-
coolPeptide = new Peptide(SequenceWithChemicalFormulas);
136+
Peptide coolPeptide = new Peptide(SequenceWithChemicalFormulas);
138137

139-
candidateTrainingPointsForPeptide = SearchMS2Spectrum(myMsDataFile.GetOneBasedScan(ms2spectrumIndex), coolPeptide, peptideCharge, out numFragmentsIdentified, ref numMs2MassChargeCombinationsConsidered, ref numMs2MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaks);
138+
int numFragmentsIdentified;
139+
var candidateTrainingPointsForPeptide = SearchMS2Spectrum(myMsDataFile.GetOneBasedScan(ms2spectrumIndex), coolPeptide, peptideCharge, out numFragmentsIdentified, ref numMs2MassChargeCombinationsConsidered, ref numMs2MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaks);
140140

141141
// If MS2 has low evidence for peptide, skip and go to next one
142142
if (numFragmentsIdentified < numFragmentsNeededForEveryIdentification)

InternalLogic/Calibration/CalibrationFunctions/ConstantCalibrationFunction.cs

+23
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,33 @@
11
using MathNet.Numerics.Statistics;
22
using System.Collections.Generic;
33
using System.Linq;
4+
using System.Text;
45

56
namespace InternalLogicCalibration
67
{
78
public class ConstantCalibrationFunction : CalibrationFunction
89
{
10+
11+
#region Public Fields
12+
913
public double a;
1014

15+
#endregion Public Fields
16+
17+
#region Public Methods
18+
19+
public override string ToString()
20+
{
21+
StringBuilder sb = new StringBuilder();
22+
sb.Append("Constant");
23+
sb.Append(" a = " + a);
24+
return sb.ToString();
25+
}
26+
27+
#endregion Public Methods
28+
29+
#region Internal Methods
30+
1131
internal override double Predict(double[] t)
1232
{
1333
return a;
@@ -17,5 +37,8 @@ internal void Train(IEnumerable<LabeledDataPoint> trainingList)
1737
{
1838
a = trainingList.Select(b => b.output).Median();
1939
}
40+
41+
#endregion Internal Methods
42+
2043
}
2144
}
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,29 @@
1-
namespace InternalLogicCalibration
1+
using System.Text;
2+
3+
namespace InternalLogicCalibration
24
{
35
public class IdentityCalibrationFunction : CalibrationFunction
46
{
7+
58
#region Public Methods
69

10+
public override string ToString()
11+
{
12+
StringBuilder sb = new StringBuilder();
13+
sb.Append("Identity");
14+
return sb.ToString();
15+
}
16+
17+
#endregion Public Methods
18+
19+
#region Internal Methods
20+
721
internal override double Predict(double[] t)
822
{
923
return 0;
1024
}
1125

12-
#endregion Public Methods
26+
#endregion Internal Methods
27+
1328
}
1429
}

InternalLogic/Calibration/CalibrationFunctions/LinearCalibrationFunctionMathNet.cs

+29-1
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,46 @@
22
using System;
33
using System.Collections.Generic;
44
using System.Linq;
5+
using System.Text;
56

67
namespace InternalLogicCalibration
78
{
89
internal class LinearCalibrationFunctionMathNet : CalibrationFunction
910
{
10-
private Func<double[], double> f;
11+
12+
#region Private Fields
13+
1114
private readonly int numFeatures;
1215
private readonly TransformFunction transformFunction;
16+
private Func<double[], double> f;
17+
18+
#endregion Private Fields
19+
20+
#region Public Constructors
1321

1422
public LinearCalibrationFunctionMathNet(TransformFunction transformFunction)
1523
{
1624
this.transformFunction = transformFunction;
1725
numFeatures = transformFunction.numOutputs;
1826
}
1927

28+
#endregion Public Constructors
29+
30+
#region Public Methods
31+
32+
public override string ToString()
33+
{
34+
StringBuilder sb = new StringBuilder();
35+
sb.Append("Linear");
36+
sb.Append(" numFeatures: " + numFeatures);
37+
sb.Append(" transform num outputs: " + transformFunction.numOutputs);
38+
return sb.ToString();
39+
}
40+
41+
#endregion Public Methods
42+
43+
#region Internal Methods
44+
2045
internal override double Predict(double[] t)
2146
{
2247
return f(transformFunction.Transform(t));
@@ -42,5 +67,8 @@ internal void Train(IEnumerable<LabeledDataPoint> trainingList)
4267
}
4368
f = Fit.LinearMultiDimFunc(ok, ok2, ye);
4469
}
70+
71+
#endregion Internal Methods
72+
4573
}
4674
}

InternalLogic/Calibration/CalibrationFunctions/QuadraticCalibrationFunctionMathNet.cs

+19-2
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@
22
using System;
33
using System.Collections.Generic;
44
using System.Linq;
5+
using System.Text;
56

67
namespace InternalLogicCalibration
78
{
89
internal class QuadraticCalibrationFunctionMathNet : CalibrationFunction
910
{
11+
1012
#region Private Fields
1113

12-
private Func<double[], double> f;
1314
private readonly int numFeatures;
1415
private readonly int numFeaturesExpanded;
16+
private Func<double[], double> f;
1517
private TransformFunction transform;
1618

1719
#endregion Private Fields
@@ -29,6 +31,20 @@ public QuadraticCalibrationFunctionMathNet(TransformFunction transform)
2931

3032
#region Public Methods
3133

34+
public override string ToString()
35+
{
36+
StringBuilder sb = new StringBuilder();
37+
sb.Append("Quadratic");
38+
sb.Append(" numFeatures: " + numFeatures);
39+
sb.Append(" numFeaturesExpanded: " + numFeaturesExpanded);
40+
sb.Append(" transform: " + transform.numOutputs);
41+
return sb.ToString();
42+
}
43+
44+
#endregion Public Methods
45+
46+
#region Internal Methods
47+
3248
internal override double Predict(double[] t)
3349
{
3450
return f(ExpandFeatures(transform.Transform(t)));
@@ -55,7 +71,7 @@ internal void Train(IEnumerable<LabeledDataPoint> trainingList)
5571
f = Fit.LinearMultiDimFunc(ok, ok2, ye);
5672
}
5773

58-
#endregion Public Methods
74+
#endregion Internal Methods
5975

6076
#region Private Methods
6177

@@ -77,5 +93,6 @@ private double[] ExpandFeatures(double[] input)
7793
}
7894

7995
#endregion Private Methods
96+
8097
}
8198
}

InternalLogic/Calibration/CalibrationFunctions/SeparateCalibrationFunction.cs

+20-6
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,34 @@
22
{
33
internal class SeparateCalibrationFunction : CalibrationFunction
44
{
5-
private readonly CalibrationFunction calibrationFunction1;
6-
private readonly CalibrationFunction calibrationFunction2;
5+
6+
#region Public Constructors
77

88
public SeparateCalibrationFunction(CalibrationFunction calibrationFunction1, CalibrationFunction calibrationFunction2)
99
{
10-
this.calibrationFunction1 = calibrationFunction1;
11-
this.calibrationFunction2 = calibrationFunction2;
10+
this.CalibrationFunction1 = calibrationFunction1;
11+
this.CalibrationFunction2 = calibrationFunction2;
1212
}
1313

14+
#endregion Public Constructors
15+
16+
#region Public Properties
17+
18+
public CalibrationFunction CalibrationFunction1 { get; private set; }
19+
public CalibrationFunction CalibrationFunction2 { get; private set; }
20+
21+
#endregion Public Properties
22+
23+
#region Internal Methods
24+
1425
internal override double Predict(double[] t)
1526
{
1627
if (t[0] < 0)
17-
return calibrationFunction1.Predict(t);
18-
return calibrationFunction2.Predict(t);
28+
return CalibrationFunction1.Predict(t);
29+
return CalibrationFunction2.Predict(t);
1930
}
31+
32+
#endregion Internal Methods
33+
2034
}
2135
}

InternalLogic/Calibration/CalibrationResults.cs

+17-8
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ public class CalibrationResults : MyResults
1111

1212
#region Private Fields
1313

14-
private List<int> calibrationRoundList;
1514
private List<int> numMs1MassChargeCombinationsConsideredList;
1615
private List<int> numMs1MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaksList;
1716
private List<int> numMs2MassChargeCombinationsConsideredList;
1817
private List<int> numMs2MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaksList;
1918
private List<int> countList;
19+
private List<SeparateCalibrationFunction> calibrationFunctions;
2020

2121
#endregion Private Fields
2222

@@ -25,7 +25,7 @@ public class CalibrationResults : MyResults
2525
public CalibrationResults(IMsDataFile<IMzSpectrum<MzPeak>> myMSDataFile, CalibrationEngine s) : base(s)
2626
{
2727
this.MyMSDataFile = myMSDataFile;
28-
calibrationRoundList = new List<int>();
28+
calibrationFunctions = new List<SeparateCalibrationFunction>();
2929
numMs1MassChargeCombinationsConsideredList = new List<int>();
3030
numMs1MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaksList = new List<int>();
3131
numMs2MassChargeCombinationsConsideredList = new List<int>();
@@ -48,15 +48,20 @@ protected override string StringForOutput
4848
get
4949
{
5050
var sb = new StringBuilder();
51-
for (int i = 0; i < calibrationRoundList.Count; i++)
51+
for (int i = 0; i < countList.Count; i++)
5252
{
53-
sb.AppendLine("\t\tRound " + calibrationRoundList[i]);
53+
sb.AppendLine("\t\tRound " + (i + 1));
5454
sb.AppendLine("\t\t\tTraining points: " + countList[i]);
55+
sb.AppendLine("\t\t\tMs1MassChargeSeen: " + numMs1MassChargeCombinationsConsideredList[i]);
56+
sb.AppendLine("\t\t\tMs1MassChargeSeenAndIgnoredBecause too many: " + numMs1MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaksList[i]);
5557
sb.AppendLine("\t\t\tMs2MassChargeSeen: " + numMs2MassChargeCombinationsConsideredList[i]);
5658
sb.AppendLine("\t\t\tMs2MassChargeSeenAndIgnoredBecause too many: " + numMs2MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaksList[i]);
5759

58-
sb.AppendLine("\t\t\tMs1MassChargeSeen: " + numMs1MassChargeCombinationsConsideredList[i]);
59-
sb.AppendLine("\t\t\tMs1MassChargeSeenAndIgnoredBecause too many: " + numMs1MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaksList[i]);
60+
if (i < calibrationFunctions.Count)
61+
{
62+
sb.AppendLine("\t\t\tMs1Calibration function: " + calibrationFunctions[i].CalibrationFunction1.ToString());
63+
sb.AppendLine("\t\t\tMs2Calibration function: " + calibrationFunctions[i].CalibrationFunction2.ToString());
64+
}
6065
}
6166
return sb.ToString();
6267
}
@@ -66,16 +71,20 @@ protected override string StringForOutput
6671

6772
#region Internal Methods
6873

69-
internal void Add(int calibrationRound, int numMs1MassChargeCombinationsConsidered, int numMs1MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaks, int count, int numMs2MassChargeCombinationsConsidered, int numMs2MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaks)
74+
internal void Add(int numMs1MassChargeCombinationsConsidered, int numMs1MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaks, int count, int numMs2MassChargeCombinationsConsidered, int numMs2MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaks)
7075
{
71-
calibrationRoundList.Add(calibrationRound);
7276
numMs1MassChargeCombinationsConsideredList.Add(numMs1MassChargeCombinationsConsidered);
7377
numMs1MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaksList.Add(numMs1MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaks);
7478
numMs2MassChargeCombinationsConsideredList.Add(numMs2MassChargeCombinationsConsidered);
7579
numMs2MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaksList.Add(numMs2MassChargeCombinationsThatAreIgnoredBecauseOfTooManyPeaks);
7680
countList.Add(count);
7781
}
7882

83+
internal void Add(CalibrationFunction combinedCalibration)
84+
{
85+
calibrationFunctions.Add((SeparateCalibrationFunction)combinedCalibration);
86+
}
87+
7988
#endregion Internal Methods
8089

8190
}

0 commit comments

Comments
 (0)