private static double GetUncalibratedSilacMass(SilacCluster sc, SilacType type, IsotopeCluster[] isotopeClusters, double[] centerMz, float[] intensities) { return (GetUncalibratedFullIsotopePatternMassEstimate(sc.GetIsotopeClusterIndices(type), sc.GetIsotopePatternStarts(type), sc.GetMassDiffs(type), isotopeClusters, centerMz, intensities)); }
public SilacMatchEvidence(int silacId, int rawFileIndex, SilacCluster silacCluster, int charge, double intensity0, double intensity1, double intensity2, double calibRT, MascotPeptide peptide) : base(silacId, rawFileIndex, silacCluster, charge, intensity0, intensity1, intensity2, calibRT) { massErrPpm = (silacCluster.Mass - peptide.Mass) / peptide.Mass * 1e6; }
private static double GetCalibratedSilacMassStat(SilacCluster sc, double[,] mzCalibrationPar, double[,] intensityCalibrationPar, SilacType type, IsotopeCluster[] isotopeCluster, IPeakList peakList, float[] intensities) { int dummy; return (GetFullIsotopePatternMassEstimateNoBootstrapStat(sc.GetIsotopeClusterIndices(type), sc.GetIsotopePatternStarts(type), sc.GetMassDiffs(type), mzCalibrationPar, intensityCalibrationPar, true, out dummy, isotopeCluster, peakList, intensities)); }
public static double[] CalcSilacClusterProfile(SilacCluster cl, out int minIndex, SilacType type, IsotopeCluster[] isotopeClusters, IPeakList peakList, float[] intensities) { int[] m = cl.GetIsotopeClusterIndices(type); int n = m.Length; if (n == 1) { return(T03SilacAssembly.CalcIsotopeClusterProfile(isotopeClusters[m[0]], out minIndex, peakList)); } double[][] profiles = new double[n][]; int[] mins = new int[n]; int[] ends = new int[n]; double[] intens = new double[n]; for (int i = 0; i < n; i++) { if (m[i] == -1) { continue; } IsotopeCluster ic = isotopeClusters[m[i]]; profiles[i] = T03SilacAssembly.CalcIsotopeClusterProfile(ic, out mins[i], peakList); intens[i] = T03SilacAssembly.GetIsotopeClusterIntensity(ic, intensities); ends[i] = mins[i] + profiles[i].Length; } minIndex = ArrayUtil.Min(mins); int maxEnd = ArrayUtil.Max(ends); int len = maxEnd - minIndex; double[] result = new double[len]; double norm = 0; for (int i = 0; i < n; i++) { if (m[i] == -1) { continue; } norm += intens[i]; for (int j = 0; j < profiles[i].Length; j++) { result[j + mins[i] - minIndex] += profiles[i][j] * intens[i]; } } for (int i = 0; i < len; i++) { result[i] /= norm; } return(result); }
public static int[][] FindChargePairs(int nsilac, SilacType silacType, double matchPpm, double silacTimeCorrelationThreshold, SilacCluster[] silacClusters, IsotopeCluster[] isotopeClusters, IPeakList peakList, float[] intensities, double[] centerMz) { double[] m = new double[nsilac]; for (int i = 0; i < m.Length; i++) { SilacCluster si = silacClusters[i]; m[i] = GetUncalibratedSilacMass(si, silacType, isotopeClusters, centerMz, intensities); } int[] o = ArrayUtil.Order(m); m = ArrayUtil.SubArray(m, o); List <int[]> pairs = new List <int[]>(); for (int i = 0; i < m.Length; i++) { SilacCluster si = silacClusters[o[i]]; int chargei = isotopeClusters[si.IsotopeClusterindex1].Charge; double m1 = m[i]; int ind1 = ArrayUtil.CeilIndex(m, m1 - matchPpm * 1e-6 * m1); for (int j = ind1; j < i; j++) { SilacCluster sj = silacClusters[o[j]]; int chargej = isotopeClusters[sj.IsotopeClusterindex1].Charge; if (chargei == chargej) { continue; } int mini; double[] pi = CalcSilacClusterProfile(si, out mini, silacType, isotopeClusters, peakList, intensities); int minj; double[] pj = CalcSilacClusterProfile(sj, out minj, silacType, isotopeClusters, peakList, intensities); if (T03SilacAssembly.Correlate(pi, mini, pj, minj) > silacTimeCorrelationThreshold) { pairs.Add(new int[] { o[i], o[j] }); } } } return(pairs.ToArray()); }
protected SilacEvidence(int silacId, int rawFileIndex, SilacCluster silacCluster, int charge, double intensity0, double intensity1, double intensity2, double calibRT) : base(rawFileIndex, (float)silacCluster.ElutionTime, (float)calibRT, charge) { this.silacId = silacId; ratio10 = (float)silacCluster.Ratio10; ratio20 = (float)silacCluster.Ratio20; ratio21 = (float)silacCluster.Ratio21; normalizedRatio10 = (float)silacCluster.NormalizedRatio10; normalizedRatio20 = (float)silacCluster.NormalizedRatio20; normalizedRatio21 = (float)silacCluster.NormalizedRatio21; ratioSignificanceA10 = (float)Math.Log(silacCluster.RatioSignificanceA10); ratioSignificanceA20 = (float)Math.Log(silacCluster.RatioSignificanceA20); ratioSignificanceA21 = (float)Math.Log(silacCluster.RatioSignificanceA21); ratioSignificanceB10 = (float)Math.Log(silacCluster.RatioSignificanceB10); ratioSignificanceB20 = (float)Math.Log(silacCluster.RatioSignificanceB20); ratioSignificanceB21 = (float)Math.Log(silacCluster.RatioSignificanceB21); this.intensity0 = (float)intensity0; this.intensity1 = (float)intensity1; this.intensity2 = (float)intensity2; calibratedMass = silacCluster.Mass; uncalibratedMass = silacCluster.UncalibratedMass; }
public static void RecalibrateImpl(SilacType silacType, int nranges, int[] iranges, int[][] chargePairs, SilacCluster[] silacClusters, ref double[,] mzCalibrationParams, ref double[,] intensityCalibrationParams, double massErrorNormalization, IsotopeCluster[] isotopeCluster, IPeakList peakList, float[] intensities) { double[] x = new double[chargePairs.Length]; double[] y = new double[chargePairs.Length]; double[] sig = new double[chargePairs.Length]; for (int i = 0; i < chargePairs.Length; i++) { x[i] = i; int ind1 = chargePairs[i][0]; int ind2 = chargePairs[i][1]; SilacCluster sc1 = silacClusters[ind1]; SilacCluster sc2 = silacClusters[ind2]; sig[i] = Math.Sqrt(sc1.GetMassError(massErrorNormalization) * sc1.GetMassError(massErrorNormalization) + sc2.GetMassError(massErrorNormalization) * sc2.GetMassError(massErrorNormalization)); } intensityCalibrationParams = new double[nranges, nparamsIntensityFit]; double[,] icp = intensityCalibrationParams; Funcs2 f = delegate(double x1, double[] aa) { int ind = (int)Math.Round(x1); int ind1 = chargePairs[ind][0]; int ind2 = chargePairs[ind][1]; double[,] mzAa = new double[nranges, nparamsMzFit]; int c = 0; for (int j = 0; j < iranges.Length; j++) { for (int i = 0; i < nparamsMzFit; i++) { mzAa[iranges[j], i] = aa[c++]; } } double y1 = GetCalibratedSilacMassStat(silacClusters[ind1], mzAa, icp, silacType, isotopeCluster, peakList, intensities); double y2 = GetCalibratedSilacMassStat(silacClusters[ind2], mzAa, icp, silacType, isotopeCluster, peakList, intensities); double yy = y1 - y2; return(yy); }; double chisq; double[] a = new double[nparamsMzFit * iranges.Length]; int county = 0; for (int j = 0; j < iranges.Length; j++) { for (int i = 0; i < nparamsMzFit; i++) { a[county++] = startValsMzFit[i]; } } NumUtil.FitNonlin(x, y, sig, a, out chisq, f); mzCalibrationParams = new double[nranges, nparamsMzFit]; int s = 0; for (int j = 0; j < iranges.Length; j++) { for (int i = 0; i < nparamsMzFit; i++) { mzCalibrationParams[iranges[j], i] = a[s++]; } } double[,] mcp = mzCalibrationParams; f = delegate(double x1, double[] aa) { int ind = (int)Math.Round(x1); int ind1 = chargePairs[ind][0]; int ind2 = chargePairs[ind][1]; double[,] intensityAa = new double[nranges, nparamsIntensityFit]; int c = 0; for (int j = 0; j < iranges.Length; j++) { for (int i = 0; i < nparamsIntensityFit; i++) { intensityAa[iranges[j], i] = aa[c++]; } } double y1 = GetCalibratedSilacMassStat(silacClusters[ind1], mcp, intensityAa, silacType, isotopeCluster, peakList, intensities); double y2 = GetCalibratedSilacMassStat(silacClusters[ind2], mcp, intensityAa, silacType, isotopeCluster, peakList, intensities); double yy = y1 - y2; return(yy); }; a = new double[nparamsIntensityFit * iranges.Length]; NumUtil.FitNonlin(x, y, sig, a, out chisq, f); s = 0; for (int j = 0; j < iranges.Length; j++) { for (int i = 0; i < nparamsIntensityFit; i++) { intensityCalibrationParams[iranges[j], i] = a[s++]; } } icp = intensityCalibrationParams; f = delegate(double x1, double[] aa) { int ind = (int)Math.Round(x1); int ind1 = chargePairs[ind][0]; int ind2 = chargePairs[ind][1]; double[,] mzAa = new double[nranges, nparamsMzFit]; int c = 0; for (int j = 0; j < iranges.Length; j++) { for (int i = 0; i < nparamsMzFit; i++) { mzAa[iranges[j], i] = aa[c++]; } } double y1 = GetCalibratedSilacMassStat(silacClusters[ind1], mzAa, icp, silacType, isotopeCluster, peakList, intensities); double y2 = GetCalibratedSilacMassStat(silacClusters[ind2], mzAa, icp, silacType, isotopeCluster, peakList, intensities); double yy = y1 - y2; return(yy); }; a = new double[nparamsMzFit * iranges.Length]; county = 0; for (int j = 0; j < iranges.Length; j++) { for (int i = 0; i < nparamsMzFit; i++) { a[county++] = mzCalibrationParams[iranges[j], i]; } } NumUtil.FitNonlin(x, y, sig, a, out chisq, f); s = 0; for (int j = 0; j < iranges.Length; j++) { for (int i = 0; i < nparamsMzFit; i++) { mzCalibrationParams[iranges[j], i] = a[s++]; } } }
public SilacMassEvidence(int silacId, int fileIndex, SilacCluster silacCluster, int charge, double intensity0, double intensity1, double intensity2, double rt) : base(silacId, fileIndex, silacCluster, charge, intensity0, intensity1, intensity2, rt) { }
public SilacMsmsEvidence(int silacId, int rawFileIndex, SilacCluster silacCluster, int charge, double intensity0, double intensity1, double intensity2, double calibRT) : base(silacId, rawFileIndex, silacCluster, charge, intensity0, intensity1, intensity2, calibRT) { }