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.

exception schrodinger.protein.assignment.PropKaException(value)

Bases: Exception

__init__(value)

Initialize self. See help(type(self)) for accurate signature.

args
with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.

schrodinger.protein.assignment.report(message_level=1, message='')
schrodinger.protein.assignment.measure(ct, atom1=None, atom2=None, atom3=None, atom4=None, use_xtal=False, max_dist=10.0)
class schrodinger.protein.assignment.ProtAssign(ct, interactive=False, do_flips=True, asl='', noprot_asl='', atoms=[], use_xtal=False, torsion_penalty=False, sample_waters=True, sample_acids=True, freeze_existing=False, include_initial=False, max_comb=10000, logging_level=1, quiet_flag=False, debug_flag=False, add_labels=True, label_pkas=False, pH='neutral', use_propka=True, propka_pH=7.0, user_states=[], minimize=False)

Bases: object

clustering_distance = 4.0
class changeable(ct, iatom)

Bases: object

asl = 'none'
OH_length = 1.0
HOH_angle = 109.5
max_hbond_distance = 3.5
hbond_min_angle = 150.0
hbond_heavy_min_angle = 80.0
hbond_heavy_max_angle = 140.0
__init__(ct, iatom)

Initialize self. See help(type(self)) for accurate signature.

pre_treat_1(ct)
pre_treat_2(ct)
pre_treat(ct)
enumerate_states(ct, acceptors, donors, pH, do_flips=True, include_initial=False)
lock_protonation()
add_current_to_states(ct)
assign_state(ct, istate, add_labels=True, label_pkas=False, state_gap=None, verbose=False)
assign_state_gap(atom, state_gaps, report_gaps=True)

Write the Gap in energy between the lowest energy state and the state with different protonation states or heavy atom positions to the output ct :param atom: The atom that should have properties written to it :type atom:structure.StructureAtom :param state_gaps: The energy gaps between states for a given

changeable position.
Parameters:report_gaps (Boolean) – Whether to report the gaps to the log file as well
update_atom_indices(ct, new_indices)
get_new_index(ct, atom_index, new_indices)
get_view_atoms()
get_residue_name(ct, iatom)
get_atom_name(ct, iatom)
swap_atoms(ct, atom1, atom2)
get_penalty(istate)
get_adjustable_atoms()
change_pka(pka, propka_pH)
get_dihedral_atoms(ct, h)
class amide_changeable(ct, iatom)

Bases: schrodinger.protein.assignment.changeable

This is the primary amide -NH2 group of ASN and GLN residues.

asl = '((res.ptype "ASN " AND atom.ptype " CG ") OR (res.ptype "GLN " AND atom.ptype " CD "))'
__init__(ct, iatom)

Initialize self. See help(type(self)) for accurate signature.

pre_treat_1(ct)
pre_treat_2(ct)
enumerate_states(ct, acceptors, donors, pH, do_flips=True, include_initial=False)
assign_state(ct, istate, add_labels=True, label_pkas=False, state_gaps=None, verbose=False)
update_atom_indices(ct, new_indices)
get_heavies()
get_state_sites(ct, istate)
get_view_atoms()
get_penalty(istate)
get_adjustable_atoms()
HOH_angle = 109.5
OH_length = 1.0
add_current_to_states(ct)
assign_state_gap(atom, state_gaps, report_gaps=True)

Write the Gap in energy between the lowest energy state and the state with different protonation states or heavy atom positions to the output ct :param atom: The atom that should have properties written to it :type atom:structure.StructureAtom :param state_gaps: The energy gaps between states for a given

changeable position.
Parameters:report_gaps (Boolean) – Whether to report the gaps to the log file as well
change_pka(pka, propka_pH)
get_atom_name(ct, iatom)
get_dihedral_atoms(ct, h)
get_new_index(ct, atom_index, new_indices)
get_residue_name(ct, iatom)
hbond_heavy_max_angle = 140.0
hbond_heavy_min_angle = 80.0
hbond_min_angle = 150.0
lock_protonation()
max_hbond_distance = 3.5
pre_treat(ct)
swap_atoms(ct, atom1, atom2)
class histidine_changeable(ct, iatom)

Bases: schrodinger.protein.assignment.changeable

Imidazole group of Histidine residues.

asl = '((res.ptype "HIS ","HID ","HIE ","HIP ")) AND ((atom.ptype " CG "))'
__init__(ct, iatom)

Initialize self. See help(type(self)) for accurate signature.

pre_treat_1(ct)
pre_treat_2(ct)
enumerate_states(ct, acceptors, donors, pH, do_flips=True, include_initial=False)
lock_protonation()
assign_state(ct, istate, add_labels=True, label_pkas=False, state_gaps=None, verbose=False)
update_atom_indices(ct, new_indices)
get_heavies()
get_state_sites(ct, istate)
get_view_atoms()
get_penalty(istate)
get_adjustable_atoms()
change_pka(pka, propka_pH)
HOH_angle = 109.5
OH_length = 1.0
add_current_to_states(ct)
assign_state_gap(atom, state_gaps, report_gaps=True)

Write the Gap in energy between the lowest energy state and the state with different protonation states or heavy atom positions to the output ct :param atom: The atom that should have properties written to it :type atom:structure.StructureAtom :param state_gaps: The energy gaps between states for a given

changeable position.
Parameters:report_gaps (Boolean) – Whether to report the gaps to the log file as well
get_atom_name(ct, iatom)
get_dihedral_atoms(ct, h)
get_new_index(ct, atom_index, new_indices)
get_residue_name(ct, iatom)
hbond_heavy_max_angle = 140.0
hbond_heavy_min_angle = 80.0
hbond_min_angle = 150.0
max_hbond_distance = 3.5
pre_treat(ct)
swap_atoms(ct, atom1, atom2)
class carboxyl_changeable(ct, iatom)

Bases: schrodinger.protein.assignment.changeable

asl = '(res.ptype "ASP ","ASH " AND atom.ptype " CG ") OR (res.ptype "GLU ","GLH " AND atom.ptype " CD ")'
__init__(ct, iatom)

Initialize self. See help(type(self)) for accurate signature.

pre_treat_1(ct)
pre_treat_2(ct)
enumerate_states(ct, acceptors, donors, pH, do_flips=True, include_initial=False)
lock_protonation()
assign_state(ct, istate, add_labels=True, label_pkas=False, state_gaps=None, verbose=False)
update_atom_indices(ct, new_indices)
get_heavies()
get_state_sites(ct, istate)
get_view_atoms()
get_penalty(istate)
get_adjustable_atoms()
change_pka(pka, propka_pH)
HOH_angle = 109.5
OH_length = 1.0
add_current_to_states(ct)
assign_state_gap(atom, state_gaps, report_gaps=True)

Write the Gap in energy between the lowest energy state and the state with different protonation states or heavy atom positions to the output ct :param atom: The atom that should have properties written to it :type atom:structure.StructureAtom :param state_gaps: The energy gaps between states for a given

changeable position.
Parameters:report_gaps (Boolean) – Whether to report the gaps to the log file as well
get_atom_name(ct, iatom)
get_dihedral_atoms(ct, h)
get_new_index(ct, atom_index, new_indices)
get_residue_name(ct, iatom)
hbond_heavy_max_angle = 140.0
hbond_heavy_min_angle = 80.0
hbond_min_angle = 150.0
max_hbond_distance = 3.5
pre_treat(ct)
swap_atoms(ct, atom1, atom2)
class rotatable_changeable(ct, iatom)

Bases: schrodinger.protein.assignment.changeable

asl = '((res.ptype "CYS ","CYT ") AND (atom.ptype " SG ") AND (atom.formal -1)) OR ((res.ptype "TYR ") AND (atom.ptype " OH ") AND (atom.formal -1)) OR (( atom.ele H AND not /C0-H0/ AND not /N0-H0/ ) AND NOT (res.ptype "HOH","DOD","SPC","ASH","GLH","ASP","GLU" ))'
__init__(ct, iatom)

Initialize self. See help(type(self)) for accurate signature.

pre_treat_1(ct)
pre_treat_2(ct)
enumerate_states(ct, acceptors, donors, pH, do_flips=True, include_initial=False)
lock_protonation()
add_current_to_states(ct)
assign_state(ct, istate, add_labels=True, label_pkas=False, state_gaps=None, verbose=False)
update_atom_indices(ct, new_indices)
get_heavies()
get_state_sites(ct, istate)
get_view_atoms()
get_penalty(istate)
get_adjustable_atoms()
change_pka(pka, propka_pH)
HOH_angle = 109.5
OH_length = 1.0
assign_state_gap(atom, state_gaps, report_gaps=True)

Write the Gap in energy between the lowest energy state and the state with different protonation states or heavy atom positions to the output ct :param atom: The atom that should have properties written to it :type atom:structure.StructureAtom :param state_gaps: The energy gaps between states for a given

changeable position.
Parameters:report_gaps (Boolean) – Whether to report the gaps to the log file as well
get_atom_name(ct, iatom)
get_dihedral_atoms(ct, h)
get_new_index(ct, atom_index, new_indices)
get_residue_name(ct, iatom)
hbond_heavy_max_angle = 140.0
hbond_heavy_min_angle = 80.0
hbond_min_angle = 150.0
max_hbond_distance = 3.5
pre_treat(ct)
swap_atoms(ct, atom1, atom2)
class amine_changeable(ct, iatom)

Bases: schrodinger.protein.assignment.changeable

asl = '((res.ptype "LYS ","LYN ") AND (atom.ptype " NZ "))'
__init__(ct, iatom)

Initialize self. See help(type(self)) for accurate signature.

pre_treat_1(ct)
pre_treat_2(ct)
enumerate_states(ct, acceptors, donors, pH, do_flips=True, include_initial=False)
lock_protonation()
assign_state(ct, istate, add_labels=True, label_pkas=False, state_gaps=None, verbose=False)
update_atom_indices(ct, new_indices)
get_heavies()
get_state_sites(ct, istate)
get_view_atoms()
get_penalty(istate)
change_pka(pka, propka_pH)
HOH_angle = 109.5
OH_length = 1.0
add_current_to_states(ct)
assign_state_gap(atom, state_gaps, report_gaps=True)

Write the Gap in energy between the lowest energy state and the state with different protonation states or heavy atom positions to the output ct :param atom: The atom that should have properties written to it :type atom:structure.StructureAtom :param state_gaps: The energy gaps between states for a given

changeable position.
Parameters:report_gaps (Boolean) – Whether to report the gaps to the log file as well
get_adjustable_atoms()
get_atom_name(ct, iatom)
get_dihedral_atoms(ct, h)
get_new_index(ct, atom_index, new_indices)
get_residue_name(ct, iatom)
hbond_heavy_max_angle = 140.0
hbond_heavy_min_angle = 80.0
hbond_min_angle = 150.0
max_hbond_distance = 3.5
pre_treat(ct)
swap_atoms(ct, atom1, atom2)
class water_changeable(ct, iatom)

Bases: schrodinger.protein.assignment.changeable

asl = '(water) AND (atom.ele O)'
redundancy_tolerance = 0.5
__init__(ct, iatom)

Initialize self. See help(type(self)) for accurate signature.

find_dihedrals(ct, atom1, atom2, atom3, acceptors, donors)
enumerate_states(ct, acceptors, donors, pH, do_flips=True, include_initial=False)
add_current_to_states(ct)
assign_state(ct, istate, add_labels=True, label_pkas=False, state_gaps=None, verbose=False)
update_atom_indices(ct, new_indices)
get_heavies()
get_state_sites(ct, istate)
get_view_atoms()
get_penalty(istate)
get_adjustable_atoms()
HOH_angle = 109.5
OH_length = 1.0
assign_state_gap(atom, state_gaps, report_gaps=True)

Write the Gap in energy between the lowest energy state and the state with different protonation states or heavy atom positions to the output ct :param atom: The atom that should have properties written to it :type atom:structure.StructureAtom :param state_gaps: The energy gaps between states for a given

changeable position.
Parameters:report_gaps (Boolean) – Whether to report the gaps to the log file as well
change_pka(pka, propka_pH)
get_atom_name(ct, iatom)
get_dihedral_atoms(ct, h)
get_new_index(ct, atom_index, new_indices)
get_residue_name(ct, iatom)
hbond_heavy_max_angle = 140.0
hbond_heavy_min_angle = 80.0
hbond_min_angle = 150.0
lock_protonation()
max_hbond_distance = 3.5
pre_treat(ct)
pre_treat_1(ct)
pre_treat_2(ct)
swap_atoms(ct, atom1, atom2)
class hbond_cluster

Bases: object

get_residue_name(ct, iatom)
get_atom_name(ct, iatom)
__init__()

Initialize self. See help(type(self)) for accurate signature.

setup_xtal(ct, interact, clustering_distance)
optimize(ct, interact, static_donors, static_acceptors, static_clashers, max_comb, use_propka, propka_pH=7.0, xtal_ct=None)
score_combination(ct, interact, states)
single_point(ct, interact, static_donors, static_acceptors, static_clashers, xtal_ct=None)
setup_local_static_alt(ct, static_acceptors, static_donors, static_clashers)
setup_local_static(ct, static_acceptors, static_donors, static_clashers)
initialize_score_storage()
pre_score_self(ct)
pre_score_pairs(ct, interact)
score_pair(ct, iacceptors, idonors, iclashers, icharge, jacceptors, jdonors, jclashers, jcharge, use_xtal=False)
score_donor_acceptor(ct, donor_heavy, donor_hydrogen, acceptor_heavy, use_xtal=False)
score_donor_donor(ct, donor1_heavy, donor1_hydrogen, donor2_heavy, donor2_hydrogen, use_xtal=False)
score_exhaustively(ct, interact, find_all_solutions=True, tolerate_clashes=False)
score_sequentially(ct, interact)

This routine uses an algorithm similar to Prime’s iteration to convergence. Starting from a random configuration, each species is optimized in turn, keeping the others fixed in their current state. This continues until the system reaches convergence (no more changes in the most optimal state for all residues).

expand_solutions(ct, interact)

This takes an existing set of good solutions and generates more by deconverging them and then iterating them back to convergence. Generates at least 10 new solutions.

recombine_solutions(ct, interact)

This is similar to score_sequentially, but begins with some pre-existing good solutions in self.combinations, and then creates hybrids to try to improve on them.

deconverge(ct, interact, comb, problem_cutoff=50.0)

This starts with what is assumed to be a good solution, and then randomizes the states, but not to anything that produces a problem.

iterate_to_convergence(ct, interact, comb, problem_cutoff=50.0)

This iterates the combination ‘comb’ to convergence. Maximum of 10 cycles.

create_hybrid(local_combinations, interact, random_scaffold=False)

This takes the lowest energy solution, and for each problematic region it searches other solutions (in random order) for any which may have had better luck for just that part of the overall cluster. It then splices those solutions into the lowest energy one. If random_scaffold, then it selects a random solution as the basis in stead of the lowest energy one.

trim_redundant_combinations()
assign_combination(ct, icombination, add_labels, label_pkas, verbose=False)

Assign a given combination to this cluster :param ct: The structure to operate on :type ct:schrodinger.Structure :param icombination: The index of the combination to assign

or if this number is larger then the stored combinations, just keep the current state
:param add_labels:Whether to add labels to atoms to be
seen in maestro with the current protonation state

:type add_labels:Boolean :param label_pka:Whether to add labels for the pKa of each

residue

:type label_pka:Boolean :param verbose:Whether to report additional information

to the log file about the combination chosen

:type verbose:Boolean

determine_gap(icombination, ichangeable)

Create a dictionary with the energy gaps to each of the various states. States that differ by only a hydrogen rotation are not considered unique :type icombination: integer :param icombination: the combination to use as the zero

point. In most situations this will be the lowest energy combination ( 0 when sorted)
Parameters:ichangeable (integer) – The residue number ( or position number) within the cluster which will be analyzed
Rparam:dictionary where the key is the name of the state or “Default” when the state is one of the staggers
Return type:dictionary with a key of string and value of a float
__init__(ct, interactive=False, do_flips=True, asl='', noprot_asl='', atoms=[], use_xtal=False, torsion_penalty=False, sample_waters=True, sample_acids=True, freeze_existing=False, include_initial=False, max_comb=10000, logging_level=1, quiet_flag=False, debug_flag=False, add_labels=True, label_pkas=False, pH='neutral', use_propka=True, propka_pH=7.0, user_states=[], minimize=False)

Initialize self. See help(type(self)) for accurate signature.

fix_elements(ct)
freeze_existing_hydrogens(ct)
setup(ct)
remove_zero_order_bonds(ct)
extend_targeted_to_hyds(ct)
delete_atoms(ct, atoms)
run_propka(changeables, ct, use_xtal=False)
generate_mates(ct)
apply_pkas(changeables, changes, propka_pH)
find_protonation_state_changes(ct, clusters='all')
identify_species(ct)
identify_all_hbonders(ct)
enumerate_changeable_states(ct)
lock_protonation_states(ct)
remove_changeables_from_hbonders()
cluster(ct)
set_user_states(ct)
assign_state_of_changeable(ct, ichangeable, istate)
increment_state_of_changeable(ct, ichangeable)
decrement_state_of_changeable(ct, ichangeable)
record_current_indices(ct)
assign_best_combinations(ct, last_time=False)

Assign the best combinations to the ct and report output :param ct:The structure to operate on :type ct: schrodinger.Structure :param last_time: 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)
minimize_hydrogens(ct)
restore_zobs(ct)
cleanup(ct)
summarize_pkas()