public static AminoAcidReference Arginine(int sequenceNumber)
        {
            var sideChain1Builder  = new MoleculeBuilder();
            var sideChain11Builder = new MoleculeBuilder();

            sideChain11Builder.Start
            .Add(ElementName.Nitrogen).AddToCurrentAtom(ElementName.Hydrogen, ElementName.Hydrogen);
            var sideChain12Builder = new MoleculeBuilder();

            sideChain12Builder.Start
            .Add(ElementName.Nitrogen).AddToCurrentAtom(ElementName.Hydrogen);
            sideChain1Builder.Start
            .Add(ElementName.Carbon).AddToCurrentAtom(ElementName.Hydrogen, ElementName.Hydrogen)
            .Add(ElementName.Carbon).AddToCurrentAtom(ElementName.Hydrogen, ElementName.Hydrogen)
            .Add(ElementName.Carbon).AddToCurrentAtom(ElementName.Hydrogen, ElementName.Hydrogen)
            .Add(ElementName.Nitrogen).AddToCurrentAtom(ElementName.Hydrogen)
            .Add(ElementName.Carbon)
            .AddSideChain(sideChain11Builder.Start)
            .AddSideChain(sideChain12Builder.Start, BondMultiplicity.Double);

            var moduleBuilder     = new MoleculeBuilder();
            var moleculeReference = moduleBuilder.Start
                                    .Add(ElementName.Nitrogen).AddToCurrentAtom(ElementName.Hydrogen)
                                    .Add(ElementName.Carbon).AddSideChain(sideChain1Builder.Start)
                                    .Add(ElementName.Carbon).AddToCurrentAtom(ElementName.Oxygen, BondMultiplicity.Double);

            return(new AminoAcidReference(AminoAcidName.Arginine, sequenceNumber, moleculeReference));
        }
        public static AminoAcidReference Tyrosine(int sequenceNumber)
        {
            var sideChain1Builder = new MoleculeBuilder();
            var benzolReferences  = sideChain1Builder.Start
                                    .Add(ElementName.Carbon).AddToCurrentAtom(ElementName.Hydrogen, ElementName.Hydrogen)
                                    .AddBenzolRing(3);

            benzolReferences.Single().Add(ElementName.Oxygen, ElementName.Hydrogen);

            var moduleBuilder     = new MoleculeBuilder();
            var moleculeReference = moduleBuilder.Start
                                    .Add(ElementName.Nitrogen).AddToCurrentAtom(ElementName.Hydrogen)
                                    .Add(ElementName.Carbon).AddSideChain(sideChain1Builder.Start).AddToCurrentAtom(ElementName.Hydrogen)
                                    .Add(ElementName.Carbon).AddToCurrentAtom(ElementName.Oxygen, BondMultiplicity.Double);

            return(new AminoAcidReference(AminoAcidName.Tyrosine, sequenceNumber, moleculeReference));
        }
        public static AminoAcidReference Histidine(int sequenceNumber)
        {
            var sideChain1Builder = new MoleculeBuilder();
            var ringBuilder       = new MoleculeBuilder();
            var ringEnd           = ringBuilder.Start
                                    .Add(ElementName.Carbon)
                                    .Add(ElementName.Nitrogen)
                                    .Add(ElementName.Carbon, BondMultiplicity.Double)
                                    .Add(ElementName.Nitrogen).AddToCurrentAtom(ElementName.Hydrogen)
                                    .Add(ElementName.Carbon).AddToCurrentAtom(ElementName.Hydrogen);

            ringBuilder.Start.ConnectTo(ringEnd, BondMultiplicity.Double);
            sideChain1Builder.Start
            .Add(ElementName.Carbon).AddToCurrentAtom(ElementName.Hydrogen)
            .AddSideChain(ringBuilder.Start);

            var moduleBuilder     = new MoleculeBuilder();
            var moleculeReference = moduleBuilder.Start
                                    .Add(ElementName.Nitrogen).AddToCurrentAtom(ElementName.Hydrogen)
                                    .Add(ElementName.Carbon).AddSideChain(sideChain1Builder.Start)
                                    .Add(ElementName.Carbon).AddToCurrentAtom(ElementName.Oxygen, BondMultiplicity.Double);

            return(new AminoAcidReference(AminoAcidName.Histidine, sequenceNumber, moleculeReference));
        }
Exemple #4
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);
        }