コード例 #1
0
        private UnitVector3D FindPositionVector(
            AminoAcidReference aminoAcid,
            AminoAcidReference secondAminoAcid)
        {
            var firstCarbonAlpha = aminoAcid.GetAtomFromName("CA");

            if (firstCarbonAlpha == null)
            {
                throw new KeyNotFoundException("Could not find carbon alpha in first amino acid");
            }
            var secondCarbonAlpha = secondAminoAcid.GetAtomFromName("CA");

            if (secondCarbonAlpha == null)
            {
                throw new KeyNotFoundException("Could not find carbon alpha in second amino acid");
            }
            return(firstCarbonAlpha.Position.VectorTo(secondCarbonAlpha.Position));
        }
コード例 #2
0
        public Peptide GetBackbone()
        {
            var aminoAcids = new List <AminoAcidReference>();

            foreach (var approximatedAminoAcid in approximatePeptide.AminoAcids)
            {
                var moleculeBuilder    = new MoleculeBuilder();
                var aminoAcidReference = moleculeBuilder.Start
                                         .Add(ElementName.Nitrogen, ElementName.Carbon, ElementName.Carbon);
                var aminoAcid = new AminoAcidReference(approximatedAminoAcid.Name, approximatedAminoAcid.SequenceNumber, aminoAcidReference);

                var nitrogen = aminoAcid.VertexIds
                               .Select(aminoAcid.Molecule.GetAtom)
                               .Single(atom => atom.Element == ElementName.Nitrogen);
                nitrogen.Position        = approximatedAminoAcid.NitrogenPosition;
                nitrogen.IsPositionFixed = true;

                var carbonAlpha = aminoAcid.VertexIds
                                  .Select(aminoAcid.Molecule.GetAtom)
                                  .First(atom => atom.Element == ElementName.Carbon);
                carbonAlpha.Position        = approximatedAminoAcid.CarbonAlphaPosition;
                carbonAlpha.IsPositionFixed = true;

                var carbon = aminoAcid.VertexIds
                             .Select(aminoAcid.Molecule.GetAtom)
                             .Last(atom => atom.Element == ElementName.Carbon);
                carbon.Position        = approximatedAminoAcid.CarbonPosition;
                carbon.IsPositionFixed = true;

                aminoAcids.Add(aminoAcid);
            }

            var peptide = PeptideBuilder.PeptideFromAminoAcids(aminoAcids);

            return(peptide);
        }