Module protkit.properties.chemical_class
Implements class ChemicalClass
to represent the chemical class of a residue.
IMGT defines the following chemical classes for amino acids: 1. Aliphatic (A, G, I, L, P, V) 2. Aromatic (F, W, Y) 3. Sulfur (C, M) 4. Hydroxyl (S, T) 5. Basic (R, H, K) 6. Acidic (D, E) 7. Amide (N, Q)
See: https://www.imgt.org/IMGTeducation/Aide-memoire/_UK/aminoacids/IMGTclasses.html
Expand source code
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# Authors: Fred Senekal (FS)
# Contact: fred@silicogenesis.com
# License: GPLv3
"""
Implements class `ChemicalClass` to represent the chemical class of a residue.
IMGT defines the following chemical classes for amino acids:
1. Aliphatic (A, G, I, L, P, V)
2. Aromatic (F, W, Y)
3. Sulfur (C, M)
4. Hydroxyl (S, T)
5. Basic (R, H, K)
6. Acidic (D, E)
7. Amide (N, Q)
See: https://www.imgt.org/IMGTeducation/Aide-memoire/_UK/aminoacids/IMGTclasses.html
"""
from typing import List
from protkit.structure.residue import Residue
from protkit.structure.chain import Chain
from protkit.structure.protein import Protein
class ChemicalClass:
UNDEFINED = 0
ALIPHATIC = 1
AROMATIC = 2
SULFUR = 3
HYDROXYL = 4
BASIC = 5
ACIDIC = 6
AMIDE = 7
CHEMICAL_CLASS_STRING = [
"Undefined",
"Aliphatic",
"Aromatic",
"Sulfur",
"Hydroxyl",
"Basic",
"Acidic",
"Amide"
]
CHEMICAL_CLASS = {
"ALA": ALIPHATIC,
"ARG": BASIC,
"ASN": AMIDE,
"ASP": ACIDIC,
"CYS": SULFUR,
"GLN": AMIDE,
"GLU": ACIDIC,
"GLY": ALIPHATIC,
"HIS": BASIC,
"ILE": ALIPHATIC,
"LEU": ALIPHATIC,
"LYS": BASIC,
"MET": SULFUR,
"PHE": AROMATIC,
"PRO": ALIPHATIC,
"SER": HYDROXYL,
"THR": HYDROXYL,
"TRP": AROMATIC,
"TYR": AROMATIC,
"VAL": ALIPHATIC,
"A": ALIPHATIC,
"R": BASIC,
"N": AMIDE,
"D": ACIDIC,
"C": SULFUR,
"Q": AMIDE,
"E": ACIDIC,
"G": ALIPHATIC,
"H": BASIC,
"I": ALIPHATIC,
"L": ALIPHATIC,
"K": BASIC,
"M": SULFUR,
"F": AROMATIC,
"P": ALIPHATIC,
"S": HYDROXYL,
"T": HYDROXYL,
"W": AROMATIC,
"Y": AROMATIC,
"V": ALIPHATIC
}
@staticmethod
def chemical_class_of_residue(residue: Residue,
assign_attribute: bool = False,
key: str = "chemical_class") -> int:
"""
Returns the chemical class of the residue.
Args:
residue (Residue): The residue for which to determine the chemical class.
assign_attribute (bool): Whether to assign the chemical class to the residue.
key (str): The key to use for the attribute.
Returns:
int: The chemical class of the residue.
"""
chemical_class = ChemicalClass.CHEMICAL_CLASS.get(residue.residue_type, ChemicalClass.UNDEFINED)
if assign_attribute:
residue.set_attribute(key, chemical_class)
return chemical_class
@staticmethod
def chemical_classes_of_chain(chain: Chain,
assign_attribute: bool = False,
key: str = "chemical_class") -> List[int]:
"""
Returns the chemical classes of the residues in the chain.
Args:
chain (Chain): The chain for which to determine the chemical classes.
assign_attribute (bool): Whether to assign the chemical classes to the chain.
key (str): The key to use for the attribute.
Returns:
List[int]: The chemical classes of the residues in the chain.
"""
chemical_classes = [ChemicalClass.chemical_class_of_residue(residue, assign_attribute=assign_attribute, key=key) for residue in chain.residues]
if assign_attribute:
chain.set_attribute(key, chemical_classes)
return chemical_classes
@staticmethod
def chemical_classes_of_protein(protein: Protein,
assign_attribute: bool = False,
key: str = "chemical_class") -> List[List[int]]:
"""
Returns the chemical classes of the residues in the protein.
Args:
protein (Protein): The protein for which to determine the chemical classes.
assign_attribute (bool): Whether to assign the chemical classes to the protein.
key (str): The key to use for the attribute.
Returns:
List[List[int]]: The chemical classes of the residues in the protein.
"""
chemical_classes = [ChemicalClass.chemical_classes_of_chain(chain, assign_attribute=assign_attribute, key=key) for chain in protein.chains]
if assign_attribute:
protein.set_attribute(key, chemical_classes)
return chemical_classes
Classes
class ChemicalClass
-
Expand source code
class ChemicalClass: UNDEFINED = 0 ALIPHATIC = 1 AROMATIC = 2 SULFUR = 3 HYDROXYL = 4 BASIC = 5 ACIDIC = 6 AMIDE = 7 CHEMICAL_CLASS_STRING = [ "Undefined", "Aliphatic", "Aromatic", "Sulfur", "Hydroxyl", "Basic", "Acidic", "Amide" ] CHEMICAL_CLASS = { "ALA": ALIPHATIC, "ARG": BASIC, "ASN": AMIDE, "ASP": ACIDIC, "CYS": SULFUR, "GLN": AMIDE, "GLU": ACIDIC, "GLY": ALIPHATIC, "HIS": BASIC, "ILE": ALIPHATIC, "LEU": ALIPHATIC, "LYS": BASIC, "MET": SULFUR, "PHE": AROMATIC, "PRO": ALIPHATIC, "SER": HYDROXYL, "THR": HYDROXYL, "TRP": AROMATIC, "TYR": AROMATIC, "VAL": ALIPHATIC, "A": ALIPHATIC, "R": BASIC, "N": AMIDE, "D": ACIDIC, "C": SULFUR, "Q": AMIDE, "E": ACIDIC, "G": ALIPHATIC, "H": BASIC, "I": ALIPHATIC, "L": ALIPHATIC, "K": BASIC, "M": SULFUR, "F": AROMATIC, "P": ALIPHATIC, "S": HYDROXYL, "T": HYDROXYL, "W": AROMATIC, "Y": AROMATIC, "V": ALIPHATIC } @staticmethod def chemical_class_of_residue(residue: Residue, assign_attribute: bool = False, key: str = "chemical_class") -> int: """ Returns the chemical class of the residue. Args: residue (Residue): The residue for which to determine the chemical class. assign_attribute (bool): Whether to assign the chemical class to the residue. key (str): The key to use for the attribute. Returns: int: The chemical class of the residue. """ chemical_class = ChemicalClass.CHEMICAL_CLASS.get(residue.residue_type, ChemicalClass.UNDEFINED) if assign_attribute: residue.set_attribute(key, chemical_class) return chemical_class @staticmethod def chemical_classes_of_chain(chain: Chain, assign_attribute: bool = False, key: str = "chemical_class") -> List[int]: """ Returns the chemical classes of the residues in the chain. Args: chain (Chain): The chain for which to determine the chemical classes. assign_attribute (bool): Whether to assign the chemical classes to the chain. key (str): The key to use for the attribute. Returns: List[int]: The chemical classes of the residues in the chain. """ chemical_classes = [ChemicalClass.chemical_class_of_residue(residue, assign_attribute=assign_attribute, key=key) for residue in chain.residues] if assign_attribute: chain.set_attribute(key, chemical_classes) return chemical_classes @staticmethod def chemical_classes_of_protein(protein: Protein, assign_attribute: bool = False, key: str = "chemical_class") -> List[List[int]]: """ Returns the chemical classes of the residues in the protein. Args: protein (Protein): The protein for which to determine the chemical classes. assign_attribute (bool): Whether to assign the chemical classes to the protein. key (str): The key to use for the attribute. Returns: List[List[int]]: The chemical classes of the residues in the protein. """ chemical_classes = [ChemicalClass.chemical_classes_of_chain(chain, assign_attribute=assign_attribute, key=key) for chain in protein.chains] if assign_attribute: protein.set_attribute(key, chemical_classes) return chemical_classes
Class variables
var ACIDIC
var ALIPHATIC
var AMIDE
var AROMATIC
var BASIC
var CHEMICAL_CLASS
var CHEMICAL_CLASS_STRING
var HYDROXYL
var SULFUR
var UNDEFINED
Static methods
def chemical_class_of_residue(residue: Residue, assign_attribute: bool = False, key: str = 'chemical_class') ‑> int
-
Returns the chemical class of the residue.
Args
residue
:Residue
- The residue for which to determine the chemical class.
assign_attribute
:bool
- Whether to assign the chemical class to the residue.
key
:str
- The key to use for the attribute.
Returns
int
- The chemical class of the residue.
Expand source code
@staticmethod def chemical_class_of_residue(residue: Residue, assign_attribute: bool = False, key: str = "chemical_class") -> int: """ Returns the chemical class of the residue. Args: residue (Residue): The residue for which to determine the chemical class. assign_attribute (bool): Whether to assign the chemical class to the residue. key (str): The key to use for the attribute. Returns: int: The chemical class of the residue. """ chemical_class = ChemicalClass.CHEMICAL_CLASS.get(residue.residue_type, ChemicalClass.UNDEFINED) if assign_attribute: residue.set_attribute(key, chemical_class) return chemical_class
def chemical_classes_of_chain(chain: Chain, assign_attribute: bool = False, key: str = 'chemical_class') ‑> List[int]
-
Returns the chemical classes of the residues in the chain.
Args
chain
:Chain
- The chain for which to determine the chemical classes.
assign_attribute
:bool
- Whether to assign the chemical classes to the chain.
key
:str
- The key to use for the attribute.
Returns
List[int]
- The chemical classes of the residues in the chain.
Expand source code
@staticmethod def chemical_classes_of_chain(chain: Chain, assign_attribute: bool = False, key: str = "chemical_class") -> List[int]: """ Returns the chemical classes of the residues in the chain. Args: chain (Chain): The chain for which to determine the chemical classes. assign_attribute (bool): Whether to assign the chemical classes to the chain. key (str): The key to use for the attribute. Returns: List[int]: The chemical classes of the residues in the chain. """ chemical_classes = [ChemicalClass.chemical_class_of_residue(residue, assign_attribute=assign_attribute, key=key) for residue in chain.residues] if assign_attribute: chain.set_attribute(key, chemical_classes) return chemical_classes
def chemical_classes_of_protein(protein: Protein, assign_attribute: bool = False, key: str = 'chemical_class') ‑> List[List[int]]
-
Returns the chemical classes of the residues in the protein.
Args
protein
:Protein
- The protein for which to determine the chemical classes.
assign_attribute
:bool
- Whether to assign the chemical classes to the protein.
key
:str
- The key to use for the attribute.
Returns
List[List[int]]
- The chemical classes of the residues in the protein.
Expand source code
@staticmethod def chemical_classes_of_protein(protein: Protein, assign_attribute: bool = False, key: str = "chemical_class") -> List[List[int]]: """ Returns the chemical classes of the residues in the protein. Args: protein (Protein): The protein for which to determine the chemical classes. assign_attribute (bool): Whether to assign the chemical classes to the protein. key (str): The key to use for the attribute. Returns: List[List[int]]: The chemical classes of the residues in the protein. """ chemical_classes = [ChemicalClass.chemical_classes_of_chain(chain, assign_attribute=assign_attribute, key=key) for chain in protein.chains] if assign_attribute: protein.set_attribute(key, chemical_classes) return chemical_classes