Ejemplo n.º 1
0
 /// <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)));
 }
Ejemplo n.º 2
0
        public void IncrementAminoAcidCount(string aminoAcidCode, decimal incrementValue = 1)
        {
            if (string.IsNullOrEmpty(aminoAcidCode))
            {
                throw new ArgumentOutOfRangeException(nameof(aminoAcidCode));
            }

            IncrementAminoAcidCount(AminoAcidConversions.AminoAcidNameToNumber(aminoAcidCode), incrementValue);
        }
Ejemplo n.º 3
0
        public void IncrementAminoAcidCount(char aminoAcidCode, decimal incrementValue = 1)
        {
            if (!ParameterValidation.IsAminoAcidCodeValid(aminoAcidCode))
            {
                throw new ArgumentOutOfRangeException(nameof(aminoAcidCode));
            }

            IncrementAminoAcidCount(AminoAcidConversions.AminoAcidNameToNumber(aminoAcidCode), incrementValue);
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 8
0
        public static bool IsAminoAcidCodeValid(string aminoAcidNameOrCode)
        {
            int aminoAcidNumber = AminoAcidConversions.AminoAcidNameToNumber(aminoAcidNameOrCode);

            return(IsAminoAcidNumberValid(aminoAcidNumber));
        }