You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
D-AminoAcids (https://proteopedia.org/wiki/index.php/Amino_Acids) are optical isomers or enantiomers (mirror images) of naturally occuring L-AminoAcids. They have the same structure but with opposite chirality.
When I parse structures that contain D-AminoAcids, they are parser as hetatoms.
Here are some of my notes:
I tried adding the D-AminoAcids to StructureTools lookup table, but that was not enough.
HetatomImpl.isAminoAcid() returns false for cases like DAL (D-Alanine), because it tests whether PolymerType.PROTEIN_ONLY.contains(pt).
Although PolymerType includes types for both peptide("polypeptide(L)") and dpeptide("polypeptide(D)"), PolymerType.PROTEIN_ONLY contains the peptide type only.
Also I see a lot of redundancy between StructureTools and ChemCompTools. Is there a need to keep both of them?, or we can simply deprecate the former for the sake of the later.
I think a restructuring task can be done in conjunction with supporting longer ChecmComp names expected in 2022.
We can schedule refactoring this feature to the new version of BioJava. However, we need to start by supporting D-AminoAcids soon.
Here is another question for community discussion:
When an amino acid (regardless to being L or D) is the substrate (say in an oligopeptide), is it considered both polymeric and ligand or only one of them?
I have some reservations about making d-aminoacids behave just as normal aminoacids in biojava. When they appear as part of polymers in the PDB, they appear mostly as short peptides, not as full proteins. Also there are a few cases in the PDB where there are engineered proteins composed of only D-aminoacids (e.g. in racemic mixture crystals) but in any case very rare and non-natural.
I can see how in some applications it might make sense to treat them as aminoacids, but I'd say that in most applications you would want them treated as something different from standard aminoacids. For instance, adding them to PolymerType.PROTEIN_ONLY seems dangerous to me for the general case.
I agree to most of your points @josemduarte.
D-AminoAcids are not as frequent as L-AminoAcids (at least yet). However, they are aminoacids at the end of the day.
They have the natural right to possess getN(), getC(), getO() as all other free AminoAcids citizens (sorry for the silly joke :) ).
Depriving D-AminoAcids from being distinct from all other HetAtomGroups and from identifying a peptide bonds limits the users' research.
That said, it might be a good idea to craft an interface / type called AminoAcid, which includes all sorts of compounds that contain amino and carboxylic acid groups: L_AminoAcids, D_AminoAcids, and maybe Beta_AminoAcids (see below);
and another interface / type called NaturalAminoAcids, which is specific to the 20/21/22 naturally-occurring aminoacids.
Is it possible to write your code to use the Group interface (e.g. Group.getAtom("N") instead of AminoAcid.getN())? I also feel like supporting D-AA is unusual enough that it should not be the default.
Also I see a lot of redundancy between StructureTools and ChemCompTools. Is there a need to keep both of them?, or we can simply deprecate the former for the sake of the later.
StructureTools is older and has many features not included in ChemCompTools. If anything I would deprecate ChemCompTools.
Is it possible to write your code to use the Group interface (e.g. Group.getAtom("N") instead of AminoAcid.getN())? I also feel like supporting D-AA is unusual enough that it should not be the default.
Yes. This exactly is how I worked around this problem in my code. However, this does not fix all problems. For example, D-Gly can form Isopeptide ponds just as same as Gly. Handling Gly and D-Gly differently is an unnecessary overhead to handle.
Overall, I -by contrary to your opinion- don't see supporting D-AA that unusual. At the end of the day, they are already present in nature and their use is becoming more, because the immune system does not recognize them as foreign bodies.
StructureTools is older and has many features not included in ChemCompTools. If anything I would deprecate ChemCompTools.
So, you recommend deprecating ChemCompTools for the sake of StructureTools, @sbliven?
This conversation had been silent for a wile. Let's revive it. Maybe we can catch the next BioJava 7.0.0 release (#1035):
@sbliven Do you recommend deprecating ChemCompTools for the sake of StructureTools?
@JonStargaryen It seems here that the current dictionary considers both D and L AminoAcids to be polymers (not nonstandard polymers). Please correct me if I am wrong.
Activity
aalhossary commentedon Nov 7, 2021
Here is another question for community discussion:
When an amino acid (regardless to being L or D) is the substrate (say in an oligopeptide), is it considered both polymeric and ligand or only one of them?
josemduarte commentedon Nov 20, 2021
I have some reservations about making d-aminoacids behave just as normal aminoacids in biojava. When they appear as part of polymers in the PDB, they appear mostly as short peptides, not as full proteins. Also there are a few cases in the PDB where there are engineered proteins composed of only D-aminoacids (e.g. in racemic mixture crystals) but in any case very rare and non-natural.
I can see how in some applications it might make sense to treat them as aminoacids, but I'd say that in most applications you would want them treated as something different from standard aminoacids. For instance, adding them to
PolymerType.PROTEIN_ONLYseems dangerous to me for the general case.aalhossary commentedon Nov 20, 2021
I agree to most of your points @josemduarte.
D-AminoAcids are not as frequent as L-AminoAcids (at least yet). However, they are aminoacids at the end of the day.
They have the natural right to possess getN(), getC(), getO() as all other free AminoAcids citizens (sorry for the silly joke :) ).
Depriving D-AminoAcids from being distinct from all other
HetAtomGroups and from identifying a peptide bonds limits the users' research.That said, it might be a good idea to craft an interface / type called
AminoAcid, which includes all sorts of compounds that contain amino and carboxylic acid groups:L_AminoAcids,D_AminoAcids, and maybeBeta_AminoAcids(see below);and another interface / type called
NaturalAminoAcids, which is specific to the 20/21/22 naturally-occurring aminoacids.Beta AminoAcids are amino acids in which there is an amine group on the carbon beta to a carboxylic acid group.
https://chem.libretexts.org/Ancillary_Materials/Reference/Organic_Chemistry_Glossary/Beta_Amino_Acid
https://en.wikipedia.org/wiki/Beta-peptide
sbliven commentedon Jan 4, 2022
Is it possible to write your code to use the
Groupinterface (e.g.Group.getAtom("N")instead ofAminoAcid.getN())? I also feel like supporting D-AA is unusual enough that it should not be the default.StructureTools is older and has many features not included in ChemCompTools. If anything I would deprecate ChemCompTools.
aalhossary commentedon Jan 29, 2022
Yes. This exactly is how I worked around this problem in my code. However, this does not fix all problems. For example, D-Gly can form Isopeptide ponds just as same as Gly. Handling Gly and D-Gly differently is an unnecessary overhead to handle.
Overall, I -by contrary to your opinion- don't see supporting D-AA that unusual. At the end of the day, they are already present in nature and their use is becoming more, because the immune system does not recognize them as foreign bodies.
So, you recommend deprecating
ChemCompToolsfor the sake ofStructureTools, @sbliven?aalhossary commentedon Jan 29, 2022
Sorry closed by mistake
aalhossary commentedon Jan 25, 2023
This conversation had been silent for a wile. Let's revive it. Maybe we can catch the next BioJava 7.0.0 release (#1035):
ChemCompToolsfor the sake ofStructureTools?