"""
Auto-generated residue definitions.
DO NOT EDIT - Generated by ciffy/codegen/generate.py from CCD.

Uses lazy loading: atom data is loaded only when first accessed.
"""

from .atom import AtomGroup
from ._residue_base import ResidueBase
from ._generated_molecule import Molecule
from ._generated_atoms import (
    _load_A,
    _load_C,
    _load_CCC,
    _load_FHU,
    _load_G,
    _load_G7M,
    _load_H2U,
    _load_I,
    _load_M2G,
    _load_N,
    _load_OMC,
    _load_OMG,
    _load_OMU,
    _load_PPU,
    _load_PSU,
    _load_U,
    _load_X1MA,
    _load_X1MG,
    _load_X2MA,
    _load_X2MG,
    _load_X4SU,
    _load_X5MC,
    _load_X5MU,
    _load_X6MZ,
    _load_X7MG,
    _load_YYG,
    _load_DA,
    _load_DC,
    _load_DG,
    _load_DT,
    _load_ALA,
    _load_ARG,
    _load_ASN,
    _load_ASP,
    _load_CSO,
    _load_CYS,
    _load_GLN,
    _load_GLU,
    _load_GLY,
    _load_HIS,
    _load_HYP,
    _load_ILE,
    _load_LEU,
    _load_LYS,
    _load_MEQ,
    _load_MET,
    _load_MLY,
    _load_MS6,
    _load_MSE,
    _load_OCS,
    _load_PHE,
    _load_PRO,
    _load_PTR,
    _load_SEP,
    _load_SER,
    _load_THR,
    _load_TPO,
    _load_TRP,
    _load_TYR,
    _load_UNK,
    _load_VAL,
    _load_X4D4,
    _load_HOH,
    _load_CS,
    _load_K,
    _load_MG,
    _load_NA,
    _load_ZN,
    _load_ACT,
    _load_GNG,
    _load_GTP,
    _load_X6O1,
)


class Residue(ResidueBase):
    """See ResidueBase for documentation and methods."""

    A = AtomGroup("A", None, value=1, molecule_type=Molecule.RNA.value, abbrev="a", loader=_load_A)
    C = AtomGroup("C", None, value=2, molecule_type=Molecule.RNA.value, abbrev="c", loader=_load_C)
    CCC = AtomGroup("CCC", None, value=3, molecule_type=Molecule.RNA.value, abbrev="c", loader=_load_CCC)
    FHU = AtomGroup("FHU", None, value=4, molecule_type=Molecule.RNA.value, abbrev="u", loader=_load_FHU)
    G = AtomGroup("G", None, value=5, molecule_type=Molecule.RNA.value, abbrev="g", loader=_load_G)
    G7M = AtomGroup("G7M", None, value=6, molecule_type=Molecule.RNA.value, abbrev="g", loader=_load_G7M)
    H2U = AtomGroup("H2U", None, value=7, molecule_type=Molecule.RNA.value, abbrev="u", loader=_load_H2U)
    I = AtomGroup("I", None, value=8, molecule_type=Molecule.RNA.value, abbrev="i", loader=_load_I)
    M2G = AtomGroup("M2G", None, value=9, molecule_type=Molecule.RNA.value, abbrev="g", loader=_load_M2G)
    N = AtomGroup("N", None, value=10, molecule_type=Molecule.RNA.value, abbrev="n", loader=_load_N)
    OMC = AtomGroup("OMC", None, value=11, molecule_type=Molecule.RNA.value, abbrev="c", loader=_load_OMC)
    OMG = AtomGroup("OMG", None, value=12, molecule_type=Molecule.RNA.value, abbrev="g", loader=_load_OMG)
    OMU = AtomGroup("OMU", None, value=13, molecule_type=Molecule.RNA.value, abbrev="u", loader=_load_OMU)
    PPU = AtomGroup("PPU", None, value=14, molecule_type=Molecule.RNA.value, abbrev="a", loader=_load_PPU)
    PSU = AtomGroup("PSU", None, value=15, molecule_type=Molecule.RNA.value, abbrev="u", loader=_load_PSU)
    U = AtomGroup("U", None, value=16, molecule_type=Molecule.RNA.value, abbrev="u", loader=_load_U)
    X1MA = AtomGroup("X1MA", None, value=17, molecule_type=Molecule.RNA.value, abbrev="a", loader=_load_X1MA)
    X1MG = AtomGroup("X1MG", None, value=18, molecule_type=Molecule.RNA.value, abbrev="g", loader=_load_X1MG)
    X2MA = AtomGroup("X2MA", None, value=19, molecule_type=Molecule.RNA.value, abbrev="a", loader=_load_X2MA)
    X2MG = AtomGroup("X2MG", None, value=20, molecule_type=Molecule.RNA.value, abbrev="g", loader=_load_X2MG)
    X4SU = AtomGroup("X4SU", None, value=21, molecule_type=Molecule.RNA.value, abbrev="u", loader=_load_X4SU)
    X5MC = AtomGroup("X5MC", None, value=22, molecule_type=Molecule.RNA.value, abbrev="c", loader=_load_X5MC)
    X5MU = AtomGroup("X5MU", None, value=23, molecule_type=Molecule.RNA.value, abbrev="u", loader=_load_X5MU)
    X6MZ = AtomGroup("X6MZ", None, value=24, molecule_type=Molecule.RNA.value, abbrev="a", loader=_load_X6MZ)
    X7MG = AtomGroup("X7MG", None, value=25, molecule_type=Molecule.RNA.value, abbrev="g", loader=_load_X7MG)
    YYG = AtomGroup("YYG", None, value=26, molecule_type=Molecule.RNA.value, abbrev="g", loader=_load_YYG)
    DA = AtomGroup("DA", None, value=27, molecule_type=Molecule.DNA.value, abbrev="a", loader=_load_DA)
    DC = AtomGroup("DC", None, value=28, molecule_type=Molecule.DNA.value, abbrev="c", loader=_load_DC)
    DG = AtomGroup("DG", None, value=29, molecule_type=Molecule.DNA.value, abbrev="g", loader=_load_DG)
    DT = AtomGroup("DT", None, value=30, molecule_type=Molecule.DNA.value, abbrev="t", loader=_load_DT)
    ALA = AtomGroup("ALA", None, value=31, molecule_type=Molecule.PROTEIN.value, abbrev="A", loader=_load_ALA)
    ARG = AtomGroup("ARG", None, value=32, molecule_type=Molecule.PROTEIN.value, abbrev="R", loader=_load_ARG)
    ASN = AtomGroup("ASN", None, value=33, molecule_type=Molecule.PROTEIN.value, abbrev="N", loader=_load_ASN)
    ASP = AtomGroup("ASP", None, value=34, molecule_type=Molecule.PROTEIN.value, abbrev="D", loader=_load_ASP)
    CSO = AtomGroup("CSO", None, value=35, molecule_type=Molecule.PROTEIN.value, abbrev="C", loader=_load_CSO)
    CYS = AtomGroup("CYS", None, value=36, molecule_type=Molecule.PROTEIN.value, abbrev="C", loader=_load_CYS)
    GLN = AtomGroup("GLN", None, value=37, molecule_type=Molecule.PROTEIN.value, abbrev="Q", loader=_load_GLN)
    GLU = AtomGroup("GLU", None, value=38, molecule_type=Molecule.PROTEIN.value, abbrev="E", loader=_load_GLU)
    GLY = AtomGroup("GLY", None, value=39, molecule_type=Molecule.PROTEIN.value, abbrev="G", loader=_load_GLY)
    HIS = AtomGroup("HIS", None, value=40, molecule_type=Molecule.PROTEIN.value, abbrev="H", loader=_load_HIS)
    HYP = AtomGroup("HYP", None, value=41, molecule_type=Molecule.PROTEIN.value, abbrev="P", loader=_load_HYP)
    ILE = AtomGroup("ILE", None, value=42, molecule_type=Molecule.PROTEIN.value, abbrev="I", loader=_load_ILE)
    LEU = AtomGroup("LEU", None, value=43, molecule_type=Molecule.PROTEIN.value, abbrev="L", loader=_load_LEU)
    LYS = AtomGroup("LYS", None, value=44, molecule_type=Molecule.PROTEIN.value, abbrev="K", loader=_load_LYS)
    MEQ = AtomGroup("MEQ", None, value=45, molecule_type=Molecule.PROTEIN.value, abbrev="Q", loader=_load_MEQ)
    MET = AtomGroup("MET", None, value=46, molecule_type=Molecule.PROTEIN.value, abbrev="M", loader=_load_MET)
    MLY = AtomGroup("MLY", None, value=47, molecule_type=Molecule.PROTEIN.value, abbrev="K", loader=_load_MLY)
    MS6 = AtomGroup("MS6", None, value=48, molecule_type=Molecule.PROTEIN.value, abbrev="~", loader=_load_MS6)
    MSE = AtomGroup("MSE", None, value=49, molecule_type=Molecule.PROTEIN.value, abbrev="M", loader=_load_MSE)
    OCS = AtomGroup("OCS", None, value=50, molecule_type=Molecule.PROTEIN.value, abbrev="C", loader=_load_OCS)
    PHE = AtomGroup("PHE", None, value=51, molecule_type=Molecule.PROTEIN.value, abbrev="F", loader=_load_PHE)
    PRO = AtomGroup("PRO", None, value=52, molecule_type=Molecule.PROTEIN.value, abbrev="P", loader=_load_PRO)
    PTR = AtomGroup("PTR", None, value=53, molecule_type=Molecule.PROTEIN.value, abbrev="Y", loader=_load_PTR)
    SEP = AtomGroup("SEP", None, value=54, molecule_type=Molecule.PROTEIN.value, abbrev="S", loader=_load_SEP)
    SER = AtomGroup("SER", None, value=55, molecule_type=Molecule.PROTEIN.value, abbrev="S", loader=_load_SER)
    THR = AtomGroup("THR", None, value=56, molecule_type=Molecule.PROTEIN.value, abbrev="T", loader=_load_THR)
    TPO = AtomGroup("TPO", None, value=57, molecule_type=Molecule.PROTEIN.value, abbrev="T", loader=_load_TPO)
    TRP = AtomGroup("TRP", None, value=58, molecule_type=Molecule.PROTEIN.value, abbrev="W", loader=_load_TRP)
    TYR = AtomGroup("TYR", None, value=59, molecule_type=Molecule.PROTEIN.value, abbrev="Y", loader=_load_TYR)
    UNK = AtomGroup("UNK", None, value=60, molecule_type=Molecule.PROTEIN.value, abbrev="X", loader=_load_UNK)
    VAL = AtomGroup("VAL", None, value=61, molecule_type=Molecule.PROTEIN.value, abbrev="V", loader=_load_VAL)
    X4D4 = AtomGroup("X4D4", None, value=62, molecule_type=Molecule.PROTEIN.value, abbrev="~", loader=_load_X4D4)
    HOH = AtomGroup("HOH", None, value=63, molecule_type=Molecule.WATER.value, abbrev="~", loader=_load_HOH)
    CS = AtomGroup("CS", None, value=64, molecule_type=Molecule.ION.value, abbrev="~", loader=_load_CS)
    K = AtomGroup("K", None, value=65, molecule_type=Molecule.ION.value, abbrev="~", loader=_load_K)
    MG = AtomGroup("MG", None, value=66, molecule_type=Molecule.ION.value, abbrev="~", loader=_load_MG)
    NA = AtomGroup("NA", None, value=67, molecule_type=Molecule.ION.value, abbrev="~", loader=_load_NA)
    ZN = AtomGroup("ZN", None, value=68, molecule_type=Molecule.ION.value, abbrev="~", loader=_load_ZN)
    ACT = AtomGroup("ACT", None, value=69, molecule_type=Molecule.LIGAND.value, abbrev="~", loader=_load_ACT)
    GNG = AtomGroup("GNG", None, value=70, molecule_type=Molecule.LIGAND.value, abbrev="~", loader=_load_GNG)
    GTP = AtomGroup("GTP", None, value=71, molecule_type=Molecule.LIGAND.value, abbrev="G", loader=_load_GTP)
    X6O1 = AtomGroup("X6O1", None, value=72, molecule_type=Molecule.LIGAND.value, abbrev="~", loader=_load_X6O1)


Residue._init_members()
