schrodinger.protein.captermini module

Module for capping uncapped terminal residues in a protein structure by adding NME or ACE caps as appropriate. Also has functionality for adding a C-terminal oxygen in places where this is missing.

Usage for capping: capped_st = cap_termini(input_st)

Usage for adding C-terminal oxygens: capped_st = add_terminal_oxygens(input_st)

Copyright Schrodinger, LLC. All rights reserved.

schrodinger.protein.captermini.count_atom_hbonds(st, atom)

Return the number of hydrogens bonds that the given atom is involved in.

schrodinger.protein.captermini.res_can_be_capped(res)

Determines whether a fragment is able to be capped. Returns CAPN if specified residue can be N-capped, CAPC if C-capped; DONTCAP if it can’t be capped.

schrodinger.protein.captermini.find_connected_cap(residue: Residue, terminal_atom: Optional[StructureAtom] = None) → Optional[Residue]

Return one cap connected to residue: ACE (N-terminal) or NMA (C-terminal).

If terminal_atom is given, only return its cap, distinguishing the two caps on a single-residue sequence. Return None if none is connected.

schrodinger.protein.captermini.get_capped_termini(residue: Residue) → Optional[int]

Return CAPC, CAPN, or CAPBOTH for the capped termini on residue. Return None if neither terminus is capped.

schrodinger.protein.captermini.find_c_terminal_oxygen(residue: Residue) → Optional[StructureAtom]

Find the single-bonded terminal oxygen on a C-terminal residue. Prefer an atom named OXT when present.

class schrodinger.protein.captermini.CapTermini(st: Structure, verbose: bool = False, frag_min_atoms: int = 150, sample_carboxylate_oxygens: bool = True, cap_n_terminus: bool = True, cap_c_terminus: bool = True, logger: Logger = None)

Bases: object

__init__(st: Structure, verbose: bool = False, frag_min_atoms: int = 150, sample_carboxylate_oxygens: bool = True, cap_n_terminus: bool = True, cap_c_terminus: bool = True, logger: Logger = None)

Add caps to uncapped terminal residues in the input structure ‘st’.

Parameters:
  • st – Input structure to cap N- and C-termini of

  • verbose – Generate more stdout. Does not apply if custom logger is specified.

  • frag_min_atoms – Peptide fragments with less than this number of atoms will not be capped. Set to 0 to cap all fragments.

  • sample_carboxylate_oxygens – Score carboxylate oxygens based on the number of hydrogen bonds formed to determine NMA attachment point.

  • cap_n_terminus – True to add an N-terminal cap (ACE residue); False otherwise.

  • cap_c_terminus – True to add a C-terminal cap (NMA residue); False otherwise.

  • logger – A logging.Logger instance used for logging messages within the class. If not provided, a default logger will be used.

capSequences(st)

Cap both ends of each sequence in the given structure.

outputStructure()
cappedResidues()

Returns residue strings for residues that were capped.

capResidues()

Returns residue strings for the added cap residues.

findOxygenToReplace(st: Structure, c_atom: StructureAtom) → Optional[StructureAtom]

Check whether c_atom is bound to 2 terminal oxygens. If so, determine which one to replace with a cap, and return its atom index.

Return None if can’t find 2 terminal oxygens.

adjustDihedral(st, atom1, atom2, atom3, atom4)

Adjust dihedral between the original residue and the cap to 0 degrees.

resCapped(residue, capres)

Record this capping in the internal lists.

attachCap(residue, fromatom, replace_atom, fragname)

Attaches the specified fragment and returns the new Residue object

schrodinger.protein.captermini.add_n_cap(residue: Residue) → None

Add an ACE cap to the N-terminus of residue. Call build.reorder_protein_atoms_by_sequence afterward.

schrodinger.protein.captermini.add_c_cap(residue: Residue) → None

Add an NMA cap to the C-terminus of residue. Call build.reorder_protein_atoms_by_sequence afterward.

schrodinger.protein.captermini.remove_n_cap(residue: Residue, charged: bool = True) → None

Remove an ACE cap and set the N-terminus to a charged or neutral state. Apply the requested state even if no ACE cap is connected.

schrodinger.protein.captermini.remove_c_cap(residue: Residue, charged: bool = True) → None

Remove an NMA cap and set the C-terminus to a charged or neutral state. Apply the requested state even if no NMA cap is connected.

schrodinger.protein.captermini.cap_termini(st)

Cap the termini on the specified st Function interface for CapTermini class

schrodinger.protein.captermini.get_missing_oxygen_position(ca_atom: StructureAtom, c_atom: StructureAtom, o_atom: StructureAtom) → ndarray

Return the ideal coordinates of a terminal oxygen, given 3 atoms.

The other 3 atoms are CA, C, and one other oxygen, either O or OXT.

schrodinger.protein.captermini.add_terminal_oxygens(st: Structure, frag_min_atoms: int = 150) → list[Residue]

Add missing oxygen atoms to the C-terminal of each polypeptide chain.

A hydrogen will first be added to the residue and converted to an oxygen. The bond length is not adjusted, and a minimization would be in order to fix this.

This method is designed to work with structures in the context of Protein PrepWizard, meaning they have had hydrogens added previously. As such, the valence of the carbonyl carbon at each termini should be complete and we need to replace hydrogens with oxygens as needed. Also, each termini needs to have at least one oxygen atom (O or OXT), since rebuilding both is more akin to backbone rebuilding and out of scope of this method.

Parameters:
  • st – Structure to add oxygens to.

  • frag_min_atoms – Minimum number of atoms required for a fragment to be considered a polypeptide chain.

Returns:

List of capped residues