public void TestParsingManyMods() { const string modFilePath = @"\\protoapps\UserData\Jungkap\Lewy\db\Mods.txt"; var aaSet = new AminoAcidSet(modFilePath); //aaSet.Display(); //SequenceLocation.ProteinNTerm var residue = AminoAcid.ProteinNTerm.Residue; var location = SequenceLocation.ProteinNTerm; var aa = aaSet.GetAminoAcid(residue, location); Console.Write("{0}\t{1}\t{2}", residue, aa.Mass, aa.Composition); foreach (var modIndex in aaSet.GetModificationIndices(residue, location)) { var modification = aaSet.GetModificationParams().GetModification(modIndex); Console.WriteLine(modification.Mass); //Console.Write("\t" + _modificationParams.GetModification(modIndex)); } Console.WriteLine(); residue = AminoAcid.ProteinCTerm.Residue; location = SequenceLocation.ProteinCTerm; aa = aaSet.GetAminoAcid(residue, location); Console.Write("{0}\t{1}\t{2}", residue, aa.Mass, aa.Composition); foreach (var modIndex in aaSet.GetModificationIndices(residue, location)) { var modification = aaSet.GetModificationParams().GetModification(modIndex); Console.WriteLine(modification.Mass); //Console.Write("\t" + _modificationParams.GetModification(modIndex)); } //foreach (var aa in AminoAcid.StandardAminoAcidArr) /* var keys = _locationSpecificResidueMap[location].Keys.ToArray(); Array.Sort(keys); foreach (var residue in keys) { var aa = GetAminoAcid(residue, location); Console.Write("{0}\t{1}\t{2}", residue, aa.Mass, aa.Composition); foreach (var modIndex in GetModificationIndices(residue, location)) { Console.Write("\t" + _modificationParams.GetModification(modIndex)); } Console.WriteLine(); } } */ }
public ShiftedSequenceGraph(AminoAcidSet aminoAcidSet, double shiftedMass, bool isForward, int maxSequenceLength, double maxSequenceMass = 50000.0) { _aminoAcidSet = aminoAcidSet; _modificationParams = aminoAcidSet.GetModificationParams(); _isForward = isForward; _index = 0; _maxSeqIndex = maxSequenceLength + 2; // shift + Term + length _maxSequenceMass = maxSequenceMass; _aminoAcidSequence = new AminoAcid[_maxSeqIndex]; var shiftAa = new AminoAcid('\0', "Shift", new CompositionWithDeltaMass(shiftedMass)); _aminoAcidSequence[0] = shiftAa; ShiftMass = shiftedMass; _fragmentComposition = new Composition.Composition[_maxSeqIndex]; _fragmentComposition[0] = shiftAa.Composition; _graph = new Node[_maxSeqIndex][]; _graph[0] = new[] { new Node(0) }; _nodeComposition = new Composition.Composition[_maxSeqIndex][]; _compNodeComposition = new Composition.Composition[_maxSeqIndex][]; for (var i = 0; i < _maxSeqIndex; i++) { _compNodeComposition[i] = new Composition.Composition[_modificationParams.NumModificationCombinations]; _nodeComposition[i] = new Composition.Composition[_modificationParams.NumModificationCombinations]; } IsValid = true; }
/// <summary> /// Constructor /// </summary> /// <param name="aminoAcidSet"></param> /// <param name="shiftedMass"></param> /// <param name="isForward"></param> /// <param name="maxSequenceLength"></param> /// <param name="maxSequenceMass"></param> public ShiftedSequenceGraph(AminoAcidSet aminoAcidSet, double shiftedMass, bool isForward, int maxSequenceLength, double maxSequenceMass = 50000.0) { AminoAcidSet = aminoAcidSet; _modificationParams = aminoAcidSet.GetModificationParams(); _isForward = isForward; _index = 0; _maxSeqIndex = maxSequenceLength + 2; // shift + Term + length _maxSequenceMass = maxSequenceMass; _aminoAcidSequence = new AminoAcid[_maxSeqIndex]; var shiftAa = new AminoAcid('\0', "Shift", new CompositionWithDeltaMass(shiftedMass)); _aminoAcidSequence[0] = shiftAa; ShiftMass = shiftedMass; _fragmentComposition = new Composition.Composition[_maxSeqIndex]; _fragmentComposition[0] = shiftAa.Composition; _graph = new Node[_maxSeqIndex][]; _graph[0] = new[] { new Node(0) }; _nodeComposition = new Composition.Composition[_maxSeqIndex][]; _compNodeComposition = new Composition.Composition[_maxSeqIndex][]; for (var i = 0; i < _maxSeqIndex; i++) { _compNodeComposition[i] = new Composition.Composition[_modificationParams.NumModificationCombinations]; _nodeComposition[i] = new Composition.Composition[_modificationParams.NumModificationCombinations]; } IsValid = true; }
/// <summary> /// Generate a sequence graph for the provided data /// </summary> /// <param name="aminoAcidSet"></param> /// <param name="nTerm"></param> /// <param name="sequence"></param> /// <param name="cTerm"></param> protected SequenceGraph(AminoAcidSet aminoAcidSet, AminoAcid nTerm, string sequence, AminoAcid cTerm) { _aminoAcidSet = aminoAcidSet; _sequence = sequence; _nTerm = nTerm; _modificationParams = aminoAcidSet.GetModificationParams(); _maxSeqIndex = sequence.Length + 3; // init + C-term + sequence length + N-term _index = 0; _aminoAcidSequence = new AminoAcid[_maxSeqIndex]; _aminoAcidSequence[0] = AminoAcid.Empty; _suffixComposition = new Composition.Composition[_maxSeqIndex]; _suffixComposition[0] = Composition.Composition.Zero; _graph = new Node[_maxSeqIndex][]; _graph[0] = new[] { new Node(0) }; _nodeComposition = new Composition.Composition[_maxSeqIndex][]; //, _modificationParams.NumModificationCombinations]; _compNodeComposition = new Composition.Composition[_maxSeqIndex][]; //, _modificationParams.NumModificationCombinations]; for (var i = 0; i < _maxSeqIndex; i++) { _compNodeComposition[i] = new Composition.Composition[_modificationParams.NumModificationCombinations]; _nodeComposition[i] = new Composition.Composition[_modificationParams.NumModificationCombinations]; } NumNTermCleavages = 0; IsValid = true; SetNTerminalAminoAcid(nTerm); AddAminoAcid(cTerm.Residue); for (var i = sequence.Length - 1; i >= 0; i--) { if (AddAminoAcid(sequence[i]) == false) { IsValid = false; break; } } if (IsValid) { AddAminoAcid(nTerm.Residue); } }
public static Modification[] GetTerminalModifications(AminoAcidSet aminoAcidSet) { var terminalModifications = new HashSet<Modification>(); var terminalLocations = new[] {SequenceLocation.ProteinNTerm, SequenceLocation.ProteinCTerm}; var terminalResidues = new char[] {AminoAcid.ProteinNTerm.Residue, AminoAcid.ProteinCTerm.Residue}; var modParam = aminoAcidSet.GetModificationParams(); for (var i = 0; i < terminalLocations.Length; i++) { var location = terminalLocations[i]; var residue = terminalResidues[i]; foreach (var modIndex in aminoAcidSet.GetModificationIndices(residue, location)) { var modification = modParam.GetModification(modIndex); terminalModifications.Add(modification); } } return terminalModifications.ToArray(); }
public static AminoAcid[] GetExtendedAminoAcidArray(AminoAcidSet aaSet) { var ret = new List<AminoAcid>(); var modParam = aaSet.GetModificationParams(); var aminoAcidArray = AminoAcid.StandardAminoAcidArr; foreach (var aa in aminoAcidArray) { ret.Add(aa); foreach (var modIndex in aaSet.GetModificationIndices(aa.Residue, SequenceLocation.Everywhere)) { var aa2 = new ModifiedAminoAcid(aa, modParam.GetModification(modIndex)); ret.Add(aa2); } } return ret.ToArray(); }
protected SequenceGraph(AminoAcidSet aminoAcidSet, AminoAcid nTerm, string sequence, AminoAcid cTerm) { _aminoAcidSet = aminoAcidSet; _sequence = sequence; _nTerm = nTerm; _modificationParams = aminoAcidSet.GetModificationParams(); _maxSeqIndex = sequence.Length + 3; // init + C-term + sequence length + N-term _index = 0; _aminoAcidSequence = new AminoAcid[_maxSeqIndex]; _aminoAcidSequence[0] = AminoAcid.Empty; _suffixComposition = new Composition.Composition[_maxSeqIndex]; _suffixComposition[0] = Composition.Composition.Zero; _graph = new Node[_maxSeqIndex][]; _graph[0] = new[] { new Node(0) }; _nodeComposition = new Composition.Composition[_maxSeqIndex][]; //, _modificationParams.NumModificationCombinations]; _compNodeComposition = new Composition.Composition[_maxSeqIndex][]; //, _modificationParams.NumModificationCombinations]; for (var i = 0; i < _maxSeqIndex; i++) { _compNodeComposition[i] = new Composition.Composition[_modificationParams.NumModificationCombinations]; _nodeComposition[i] = new Composition.Composition[_modificationParams.NumModificationCombinations]; } NumNTermCleavages = 0; IsValid = true; SetNTerminalAminoAcid(nTerm); AddAminoAcid(cTerm.Residue); for (var i = sequence.Length - 1; i >= 0; i--) { if (AddAminoAcid(sequence[i]) == false) { IsValid = false; break; } } if (IsValid) AddAminoAcid(nTerm.Residue); }