Source code for ampal.nucleic_acid

"""Contains AMPAL objects representing nucleic acids."""

from ampal.base_ampal import Polymer, Monomer


[docs]class Polynucleotide(Polymer): """`Polymer` type object that represents a `Polynucleotide`. Parameters ---------- monomers : Nucleotide or [Nucleotide], optional `Nucleotide` or list containing `Nucleotide` objects to form the `Polynucleotide`. polymer_id : str, optional An ID that the user can use to identify the `Polynucleotide`. This is used when generating a pdb file using `Polynucleotide().pdb`. parent : ampal.Assembly, optional Reference to `Assembly` containing the `Polynucleotide`. sl : int, optional The default smoothing level used when calculating the backbone primitive. Attributes ---------- id : str `Polynucleotide` ID parent : ampal.Assembly or None Reference to `Assembly` containing the `Polynucleotide` molecule_type : str A description of the type of `Polymer` i.e. Protein, DNA etc. ligands : ampal.LigandGroup A `LigandGroup` containing all the `Ligands` associated with this `Polynucleotide` chain. tags : dict A dictionary containing information about this AMPAL object. The tags dictionary is used by AMPAL to cache information about this object, but is also intended to be used by users to store any relevant information they have. sl : int The default smoothing level used when calculating the backbone primitive. Raises ------ TypeError `Polymer` type objects can only be initialised empty or using a `Monomer`. """ def __init__(self, monomers=None, polymer_id=" ", parent=None, sl=2): super().__init__( monomers=monomers, polymer_id=polymer_id, molecule_type="nucleic_acid", parent=parent, sl=sl, ) @property def sequence(self): """Returns the sequence of the `Polynucleotide` as a string. Returns ------- sequence : str String of the monomer sequence of the `Polynucleotide`. """ seq = [x.mol_code for x in self._monomers] return " ".join(seq)
[docs]class Nucleotide(Monomer): """Represents a nucleotide base. Parameters ---------- atoms : OrderedDict, optional OrderedDict containing Atoms for the `Nucleotide`. OrderedDict is used to maintain the order items were added to the dictionary. mol_code : str, optional One or three letter code that represents the `Nucleotide`. monomer_id : str, optional String used to identify the `Nucleotide`. insertion_code : str, optional Insertion code of `Nucleotide`, used if reading from pdb. is_hetero : bool, optional True if is a hetero atom in pdb. Helps with PDB formatting. parent : ampal.Polynucleotide, optional Reference to `Polynucleotide` containing the `Nucleotide`. Attributes ---------- mol_code : str PDB molecule code that represents the `Nucleotide`. insertion_code : str Insertion code of `Nucleotide`, used if reading from pdb. is_hetero : bool True if is a hetero atom in pdb. Helps with PDB formatting. states : dict Contains an `OrderedDicts` containing atom information for each state available for the `Nucleotide`. id : str String used to identify the `Nucleotide`. reference_atom : str The key that corresponds to the reference `Atom`. This is used by various functions, for example backbone primitives are calculated using the `Atom` defined using this key. parent : Polynucleotide or None A reference to the `Polynucleotide` containing this `Nucleotide`. tags : dict A dictionary containing information about this AMPAL object. The tags dictionary is used by AMPAL to cache information about this object, but is also intended to be used by users to store any relevant information they have. Raises ------ ValueError Raised if `mol_code` is not length 1 or 3. """ def __init__( self, atoms=None, mol_code="UNK", monomer_id=" ", insertion_code=" ", is_hetero=False, parent=None, ): super().__init__(atoms, monomer_id, parent=parent) self.mol_code = mol_code self.mol_letter = mol_code[-1] self.insertion_code = insertion_code self.is_hetero = is_hetero self.reference_atom = "P"
__author__ = "Christopher W. Wood"