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)); }
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); }