Пример #1
0
        public async Task <string> OptimizeProteinSequence(string proteinSequence, string organismId)
        {
            if (string.IsNullOrWhiteSpace(proteinSequence) || string.IsNullOrWhiteSpace(organismId))
            {
                throw new ArgumentNullException();
            }

            string optimizedDNASequence = "";

            var allAminoAcids = await unitOfWork.GetAll <AminoAcid>().Include(x => x.Codons).ToListAsync();

            var organism = unitOfWork.GetById <Organism>(organismId);

            foreach (Char aminoCode in proteinSequence)
            {
                string            aminoAcidCode = aminoCode.ToString();
                AminoAcid         aminoAcid     = allAminoAcids.Single(x => x.Code == aminoAcidCode);
                List <CodonUsage> codonUsages   = new List <CodonUsage>();
                foreach (Codon codon in aminoAcid.Codons)
                {
                    CodonUsage codonUsage = organism.CodonUsages.SingleOrDefault(x => x.Codon.Triplet == codon.Triplet);
                    if (codonUsage != null)
                    {
                        codonUsages.Add(codonUsage);
                    }
                }

                var        maxFrequency  = codonUsages.Max(x => x.Frequency);
                CodonUsage maxCodonUsage = codonUsages.First(x => x.Frequency == maxFrequency);
                optimizedDNASequence += maxCodonUsage.Codon.Triplet;
            }

            return(optimizedDNASequence);
        }
Пример #2
0
        public CodonUsage CreateCodonUsage()
        {
            var codonUsage = new CodonUsage()
            {
                Codon     = CreateCodon(),
                Frequency = 0.57f
            };

            return(GetOrCreate(() => codonUsage));
        }