/// <summary> /// This method returns the percentage of the given Amino Acid in the entire UniProt database. /// </summary> /// <param name="aminoAcidCode"></param> /// <returns></returns> public static decimal AminoAcidCompositionInPercent(string aminoAcidCode) { if (aminoAcidCode == null) { throw new ArgumentNullException(nameof(aminoAcidCode)); } return(AminoAcidCompositionInPercent(AminoAcidConversions.AminoAcidNameToNumber(aminoAcidCode))); }
public void IncrementAminoAcidCount(string aminoAcidCode, decimal incrementValue = 1) { if (string.IsNullOrEmpty(aminoAcidCode)) { throw new ArgumentOutOfRangeException(nameof(aminoAcidCode)); } IncrementAminoAcidCount(AminoAcidConversions.AminoAcidNameToNumber(aminoAcidCode), incrementValue); }
public void IncrementAminoAcidCount(char aminoAcidCode, decimal incrementValue = 1) { if (!ParameterValidation.IsAminoAcidCodeValid(aminoAcidCode)) { throw new ArgumentOutOfRangeException(nameof(aminoAcidCode)); } IncrementAminoAcidCount(AminoAcidConversions.AminoAcidNameToNumber(aminoAcidCode), incrementValue); }
public static string FindProteinInterfaceAminoAcidCommonPropertiesMotif(List <string> proteinInterfaceSequenceList, AminoAcidPropertyMatchType aminoAcidPropertyMatchType, double matchValue = 0) { if (proteinInterfaceSequenceList == null) { throw new ArgumentNullException(nameof(proteinInterfaceSequenceList)); } var totalProteinInterfaces = proteinInterfaceSequenceList.Count; var proteinInterfaceLength = proteinInterfaceSequenceList.Select(a => a.Length).Max(); var aminoAcidObjects = new AminoAcidProperties <bool> [TotalAminoAcids]; for (var aaIndex = 0; aaIndex < aminoAcidObjects.Length; aaIndex++) { aminoAcidObjects[aaIndex] = AminoAcidConversions.AminoAcidNumberToAminoAcidObject(aaIndex + 1); } var aminoAcidPositionCount = new AminoAcidProperties <int> [proteinInterfaceLength]; for (var position = 0; position < aminoAcidPositionCount.Length; position++) { aminoAcidPositionCount[position] = new AminoAcidProperties <int>(); } var motifs = new List <string>(); for (int positionIndex = 0; positionIndex < proteinInterfaceLength; positionIndex++) { string positionMotif = ""; foreach (var aaCode in proteinInterfaceSequenceList.Where(a => a.Length > positionIndex).Select(a => a[positionIndex]).Distinct().ToArray()) { if (!char.IsLetterOrDigit(aaCode) || NonStandardAminoAcids.Contains(aaCode)) { continue; } var aminoAcid = aminoAcidObjects[AminoAcidConversions.AminoAcidNameToNumber(aaCode) - 1]; var matches = AminoAcidConversions.ListAminoAcidsByProperty(aminoAcid, aminoAcidPropertyMatchType, matchValue); positionMotif += string.Join("", matches.Where(a => !positionMotif.Contains(a) && !NonStandardAminoAcids.Contains(a)).ToArray()); } motifs.Add(positionMotif); } return(MotifFormatter(motifs)); }
public static int[] ConvertAminoAcidNameCodeToSubgroupNumbers(EnumAminoAcidGroups enumAminoAcidGroups, char aminoAcidNameCode) { return(ConvertAminoAcidNumberToSubgroupNumbers(enumAminoAcidGroups, AminoAcidConversions.AminoAcidNameToNumber(aminoAcidNameCode))); }
public static MotifProfileSpreadsheetRecord Record(List <VectorProteinInterfaceWhole> vectorProteinInterfaceWholeList) { if (vectorProteinInterfaceWholeList == null || vectorProteinInterfaceWholeList.Count == 0) { return(null); } var maxProteinInterfaceLength = vectorProteinInterfaceWholeList.Select(a => a.ProteinInterfaceAminoAcids1L().Length).Max(); var totalAminoAcids = AminoAcidTotals.TotalAminoAcids(); var result = new MotifProfileSpreadsheetRecord { AminoAcidProfile = new decimal[maxProteinInterfaceLength][], AverageProfile = new decimal[totalAminoAcids], TotalFound = "" + vectorProteinInterfaceWholeList.Count, }; var directionFwd = vectorProteinInterfaceWholeList.Count(a => !a.ReversedSequence); var directionRev = vectorProteinInterfaceWholeList.Count - directionFwd; if (directionFwd > 0 && directionRev == 0) { result.Direction = "Fwd"; } else if (directionFwd == 0 && directionRev > 0) { result.Direction = "Rev"; } else { result.Direction = "Mix"; } for (var positionIndex = 0; positionIndex < result.AminoAcidProfile.Length; positionIndex++) { result.AminoAcidProfile[positionIndex] = new decimal[totalAminoAcids]; } foreach (var record in vectorProteinInterfaceWholeList) { var aminoAcidCode1L = record.ProteinInterfaceAminoAcids1L(); for (int positionIndex = 0; positionIndex < aminoAcidCode1L.Length; positionIndex++) { var aa = aminoAcidCode1L[positionIndex]; var aaIndex = AminoAcidConversions.AminoAcidNameToNumber(aa) - 1; result.AminoAcidProfile[positionIndex][aaIndex]++; result.AverageProfile[aaIndex]++; } } for (var positionIndex = 0; positionIndex < result.AminoAcidProfile.Length; positionIndex++) { var positionTotal = result.AminoAcidProfile[positionIndex].Sum(); for (var aaIndex = 0; aaIndex < totalAminoAcids; aaIndex++) { result.AminoAcidProfile[positionIndex][aaIndex] = (result.AminoAcidProfile[positionIndex][aaIndex] / positionTotal) * 100; } } var averageTotal = result.AverageProfile.Sum(); for (var aaIndex = 0; aaIndex < totalAminoAcids; aaIndex++) { result.AverageProfile[aaIndex] = averageTotal != 0 ? (result.AverageProfile[aaIndex] / averageTotal) * 100 : 0; } return(result); }
/// <summary> /// IncrementAminoAcidCount /// </summary> /// <param name="aminoAcidCodeA"></param> /// <param name="aminoAcidCodeB"></param> /// <param name="incrementValue"></param> public void IncrementAminoAcidCount(string aminoAcidCodeA, string aminoAcidCodeB, decimal incrementValue = 1.0m) { IncrementAminoAcidCount(AminoAcidConversions.AminoAcidNameToNumber(aminoAcidCodeA), AminoAcidConversions.AminoAcidNameToNumber(aminoAcidCodeB), incrementValue); }
public static bool IsAminoAcidCodeValid(string aminoAcidNameOrCode) { int aminoAcidNumber = AminoAcidConversions.AminoAcidNameToNumber(aminoAcidNameOrCode); return(IsAminoAcidNumberValid(aminoAcidNumber)); }