Pewarta Proxy

📋 Server Request & Proxy Logs

Loading active proxy settings...
Developed by Khairul Adha (adhexa.id)
Mengambil log server...

⚙️ Pengaturan Proxy Target

Skip to content

Support of D-AminoAcids #993

Open
Open

Description

@aalhossary

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.

Activity

  1. aalhossary commented on Nov 7, 2021

    @aalhossary
    MemberAuthor

    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?

  2. josemduarte commented on Nov 20, 2021

    @josemduarte
    Contributor

    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.

  3. aalhossary commented on Nov 20, 2021

    @aalhossary
    MemberAuthor

    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.


    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

  4. sbliven commented on Jan 4, 2022

    @sbliven
    Member

    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.

  5. aalhossary commented on Jan 29, 2022

    @aalhossary
    MemberAuthor

    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?

  6. aalhossary commented on Jan 29, 2022

    @aalhossary
    MemberAuthor

    Sorry closed by mistake

  7. aalhossary commented on Jan 25, 2023

    @aalhossary
    MemberAuthor

    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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementImprovement of existing code or methodnew featureNew method or data structure

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions