schrodinger.protein.assignment module

Module for optimizing hydroxyl, thiol and water orientiations, Chi-flips of asparagine, glutamine and histidine, and protonation states of aspartic acid, glutamic acid, and histidine.

Usage: ProtAssign(st)

Copyright Schrodinger, LLC. All rights reserved.

schrodinger.protein.assignment.correct_arginine_sidechain_charge(st)

Correct charges of arginine sidechains.

Finds the terminal nitrogen that is charged, or the first if both, and sets bond orders accordingly. If both nitrogens are neutral, check if NE is charged. If none of the 3 nitrogens is charged, find if any of the nitrogen atoms is double bonded to CZ and set that atom as charged. If all these checks fail, set NH2 as charged as defined in the PDB standard.

For self-consistency, this method will remove and re-add hydrogens to the Ns.

schrodinger.protein.assignment.calculate_interaction_matrix(ct: schrodinger.structure._structure.Structure, iatoms: List[int], distance: float, use_xtal: bool = False) Dict[int, set]

Create an interaction matrix based on the CHANGEABLE_INDEX_PROPERTY atom property

Parameters
  • ct – Structure with annotated atoms having set the CHANGEABLE_INDEX_PROPERTY corresponding the the index of the changeable

  • iatoms – List of atom indices which take part in interaction

  • distance – Max distance between interacting atoms

  • use_xtal – Take into account crystal symmetry mates

  • use_xtal – bool

Returns

interaction matrix allowing double indexing: interaction_matrix[i, j]

schrodinger.protein.assignment.check_residue_flip_state(res: schrodinger.structure._structure.Residue) tuple

Determine whether a residue cannot be flipped, is, or is not flipped.

Parameters

res – a protein residue

Returns

a tuple of (state, msg), where state describes whether the residue is flipped (True), is not flipped (False), or cannot be flipped (None); if None, msg will contain an explanation

Return type

tuple[bool or NoneType, str]

schrodinger.protein.assignment.get_residue_flip_state(res: schrodinger.structure._structure.Residue) Optional[bool]

Return the flip state of a protein residue.

A truncated version of check_residue_flip_state().

Parameters

res – a protein residue

Returns

the flip state of a residue

schrodinger.protein.assignment.get_heavy_neighbors(atom: schrodinger.structure._structure.StructureAtom) list
Parameters

atom – an atom

Returns

a list of heavy (non-H) atoms covalently bound to atom

Return type

list[structure._StructureAtom]

class schrodinger.protein.assignment.ProtAssign(ct, interactive=False, do_flips=True, asl='', noprot_asl='', atoms=[], use_xtal=False, sample_waters=True, sample_acids=True, freeze_existing=False, include_initial=False, max_comb=10000, num_sequential_cycles=30, max_cluster_size=None, seed: Optional[int] = None, logging_level=1, quiet_flag=False, debug_flag=False, add_labels=True, label_pkas=False, pH: Union[str, float] = 7.4, use_propka=True, user_states=[], minimize=False, ligand_sts=None, include_epik_states=False)

Bases: object

__init__(ct, interactive=False, do_flips=True, asl='', noprot_asl='', atoms=[], use_xtal=False, sample_waters=True, sample_acids=True, freeze_existing=False, include_initial=False, max_comb=10000, num_sequential_cycles=30, max_cluster_size=None, seed: Optional[int] = None, logging_level=1, quiet_flag=False, debug_flag=False, add_labels=True, label_pkas=False, pH: Union[str, float] = 7.4, use_propka=True, user_states=[], minimize=False, ligand_sts=None, include_epik_states=False)
Parameters
  • pH – The pH at which states are determined

  • seed – Seed for random number generator

  • ligand_sts (List[Structure]) – Ligand states to consider during optimization.

fix_elements(ct)
freeze_existing_hydrogens(ct)
setup(ct)
empirical_pka_predictor(ct)

Predict pKa of histidine and Asp/Glu based on empirical rules

remove_zero_order_bonds(ct)
extend_targeted_to_hyds(ct)
delete_atoms(ct, iatoms: List[int])

Delete atoms and update stored atom indices

find_protonation_state_changes(ct, clusters='all')
annotate_structure(ct: schrodinger.structure._structure.Structure) schrodinger.protein.protassign.utils.Interactors

Annotate atoms in structure by their interaction class and whether or not they are static

Returns

Interactor atom indices

enumerate_changeable_states(ct)

Enumerate all states for each changeable. Crystal symmetry mates are taken into account if requested.

Updates the acceptors, donors and clashers attributes

lock_protonation_states(ct)
cluster(ct)

Cluster changeables based on their heavies.

set_user_states(ct)
assign_state_of_changeable(ct, changeable, istate)
increment_state_of_changeable(ct, changeable)
decrement_state_of_changeable(ct, changeable)
assign_best_combinations(ct, last_time=False)

Assign the best combinations to the ct and report output

Parameters
  • ct (schrodinger.Structure) – The structure to operate on

  • last_time (bool) – Whether or not this is the last time through when we should be extra verbose

assign_cluster_combination(ct, icluster, icombination)
single_point_cluster(ct, icluster)
optimize_cluster(ct, icluster, assign=True)
optimize(ct)
check_if_hips_needs_pka_recalculated(iteration: int, icluster: int, hips: List[schrodinger.protein.protassign.changeables.changeable]) Optional[int]

Return the n index for the changeable in hips that needs its PKA re-calculated.

recalculate_empirical_pkas(ct, iteration)

Only recalculate pKa’s of histidines for forced acceptor interactions

recalculate_propka_pkas(ct)
minimize_hydrogens(ct)
restore_zobs(ct)
cleanup(ct)
summarize_pkas()
schrodinger.protein.assignment.annotate_atom_indices(ct)

Add atom index as an atom property to each atom

schrodinger.protein.assignment.get_noncovalent_ligands(ct)

Grab all noncovalent ligands from st for epik

schrodinger.protein.assignment.generate_epik_states(ct, ph=7.4, include_initial=False) List[schrodinger.structure._structure.Structure]

Run Epik on all ligands in the given structure, and return generated states.

schrodinger.protein.assignment.is_covalent_ligand(st: schrodinger.structure._structure.Structure, ligand_indices: List[int]) bool

Check if atom is part of a covalent ligand