public TurnoverCalculator(Workspace workspace, String sequence) { Sequence = sequence; _errOnSideOfLowerAbundance = workspace.GetErrOnSideOfLowerAbundance(); _aminoAcidFormulas = workspace.GetAminoAcidFormulasWithTracers(); _tracerDefs = new Dictionary <String, TracerDef>(); _traceeSymbols = new HashSet <String>(); foreach (var tracerDef in workspace.GetTracerDefs()) { if (!_traceeSymbols.Contains(tracerDef.TraceeSymbol)) { if (tracerDef.GetMaximumTracerCount(sequence) == 0) { continue; } _traceeSymbols.Add(tracerDef.TraceeSymbol); } _tracerDefs.Add(tracerDef.Name, tracerDef); } _maxTracerCount = workspace.GetMaxTracerCount(sequence); _masses = new ReadOnlyCollection <MzRange>(GetMasses()); var tracerFormulae = new List <TracerFormula>(); _tracerFormulaIndexes = new Dictionary <TracerFormula, int>(); var enumerator = new TracerFormulaEnumerator(Sequence, _tracerDefs.Values); while (enumerator.MoveNext()) { _tracerFormulaIndexes.Add(enumerator.Current, tracerFormulae.Count); tracerFormulae.Add(enumerator.Current); } _tracerFormulae = ImmutableList.ValueOf(tracerFormulae); }
public AminoAcidFormulas AddTracerToAminoAcidFormulas(AminoAcidFormulas aminoAcidFormulas) { if (AminoAcidSymbol.HasValue) { aminoAcidFormulas = aminoAcidFormulas.SetIsotopeAbundances( aminoAcidFormulas.IsotopeAbundances.SetAbundances(TraceeSymbol, TraceeMasses)); aminoAcidFormulas = aminoAcidFormulas.SetFormula(AminoAcidSymbol.Value, TraceeSymbol); } aminoAcidFormulas = aminoAcidFormulas.SetIsotopeAbundances( aminoAcidFormulas.IsotopeAbundances.SetAbundances(Name, TracerMasses)); return(aminoAcidFormulas); }
public AminoAcidFormulas GetAminoAcidFormulas() { if (_aminoAcidFormulas != null) { return(_aminoAcidFormulas); } var massShifts = new Dictionary <char, double>(); foreach (var modification in Modifications) { massShifts[modification.Key[0]] = modification.Value; } return(_aminoAcidFormulas = AminoAcidFormulas.Default.SetMassShifts(massShifts)); }
public MassDistribution GetMassDistribution(AminoAcidFormulas aminoAcidFormulas) { return(aminoAcidFormulas.GetMassDistribution(Sequence, Charge)); }
public double GetMonoisotopicMass(AminoAcidFormulas aminoAcidFormulas) { return(AminoAcidFormulas.ProtonMass + aminoAcidFormulas.GetMonoisotopicMass(Sequence) / Charge); }