schrodinger.structutils.build module

Functions for modifying chemical structures.

Copyright Schrodinger, LLC. All rights reserved.

schrodinger.structutils.build.connect(st, atomlist1, atomlist2)

Perform a connect between the atoms in the CT “st” based on the heavy atoms in atomlist1 and those in atomlist2. Usually each list will contain one atom each, from different molecules. Hydrogens bound to the specified atoms are removed as necessary, and the molecule of atomlist2 will be rotated and translated such that the newly formed bond(s) are proper length, and bond angles are valid.

Returns a dictionary of atom renumbering. Keys are old atom numbers, values are new atom numbers (or None if the atom was deleted, i.e. a hydrogen).

schrodinger.structutils.build.attach_fragment(st, fromatom, toatom, fraggroup, fragname, direction=None, torsion_group=None, conformation=None)

Attach fragment <fragname> of group <fraggroup> to <fromatom> in place of atom <toatom>. Will use growbond atom labels in the incoming fragment.

Optionally specify a <direction> string. Usually one of the following: ‘forward’, ‘backward’, ‘forward(N-to-C)’, ‘backward(C-to-N)’.

Optionally specify a torsion group and associated conformation. Usually this will be a secondary structure string such as “extended” for torsion group “Secondary_Structure:”

Returns a dictionary of atom renumbering. Keys are old atom numbers, values are new atom numbers (or None if the atom was deleted, i.e. a hydrogen).

schrodinger.structutils.build.grow_mult(st, mmfrag_handle, grow_atoms1, grow_atoms2)

Grow for fragments with multiple connections, such as two-stranded DNA & RNA.

The st is the structure to which to add the fragment. The frag handle is an mmfrag instance of the fragment to grow.

Returns a tuple of (new-grow-atom-1, new-grow-atom-2, renumber-map). The new-grow-atom-1 and new-grow-atom-2 are lists that match the renumbered atoms corresponding to grow_atoms1 and grow_atoms2. The reunumber map is a dictionary of atom renumbering. Keys are old atom numbers, values are new atom numbers (or None if the atom was deleted, i.e. a hydrogen).

schrodinger.structutils.build.attach_structure(st, st_atom_from, st_atom_to, frag_st, frag_atom_from, frag_atom_to)

Similar to attach_fragment(), but takes a fragment CT instead of name. From and to atoms in the fragment must also be specified.

Returns a dictionary of renumbered atoms. Keys are old atom numbers, values are new atom numbers or None if the atom was deleted.

schrodinger.structutils.build.mutate(st, atom_in_res, res_type)

Mutate the residue containing atom number ‘atom_in_res’ in Structure object ‘st’ to be of residue type ‘res_type’. The residue type may be one of the 20 amino acids (including the HIS/HIP/HIE variants), a D-amino acids, or other non-standard residues. For a list of alternate residues, see the $MMSHARE/data/res/nonstandard_peptide.bld.

There is no error if the residue is already of the type requested.

Parameters:
  • st (Structure object) – Structure object which should be mutated.
  • atom_in_res (int) – Mutate the residue that this atom is in.
  • res_type (str) – Desired residue type (e.g. “ALA”).
Return type:

dict

Returns:

A dictionary of renumbered atoms. Keys are old atom numbers, values are new atom numbers or None if the atom was deleted.

schrodinger.structutils.build.add_hydrogens(st, treatment='All-atom with No-Lp', atom_list=None)

Adds hydrogens to the Structure ‘st’.

Default treatment is suitable for nearly all purposes. Hydrogens are added in standard geometry and no attempt is made to optimize the treatment in order to maximize hydrogen bonds, etc.

Parameters

atom_list
A list of atom indices (or _StructureAtom objects) to add hydrogens to (default all atoms).
schrodinger.structutils.build.delete_hydrogens(st)

Deletes hydrogens from the Structure ‘st’.

schrodinger.structutils.build.delete_zobs(st)

Delete all zero-order bonds from the given structure.

schrodinger.structutils.build.delete_bonds_to_atoms(atoms)

Delete all bonds to the requested atoms. Use like:

build.delete_bonds_to_atoms(st.atom) build.delete_bonds_to_atoms(residue.atom) build.delete_bonds_to_atoms(map(st.atom.__getitem__, atom_indices))
Parameters:atoms (iterable of atom objects) – atoms whose bonds should be deleted
schrodinger.structutils.build.delete_bonds(bonds)

Delete the requested bonds. Bonds can be StructureBond or pairs of _StructureAtom.

Parameters:bonds (iterable[StructureBond] or list[(_StructureAtom, _StructureAtom)]) – Bonds to delete
schrodinger.structutils.build.reorder_atoms(st, new_order)

Create a new structure from the provided one, with atoms reordered as specified in the new_order list.

Parameters:new_order (list of ints) – The new_order list must be the same size as the number atoms in the provided structure, and atom indices begin at one.
schrodinger.structutils.build.reorder_protein_atoms_by_sequence(st)

Renumbers structure.Structure atoms by Residue order and returns a new structure object. New structure has atom numbering in sequence order via connectivity (not residue numbering) and allows behavior matching a properly ordered pdb structure.

Parameters:st (structure.Structure) – structure object to reorder
Return type:structure.Structure
Returns:copy of input structure with atoms reordered
schrodinger.structutils.build.desalt_structure(st)

Returns a desalted copy of a specified structure

Parameters:st (schrodinger.structure.Structure) – Structure to be desalted
Returns:Desalted copy of the structure
Return type:schrodinger.structure.Structure
schrodinger.structutils.build.neutralize_structure(st)

Returns a neutralized copy of a specified structure. This structure should have already had hydrogen atoms added to it.

Parameters:st (schrodinger.structure.Structure) – Structure to be neutralized
Returns:Neutralized copy of the structure
Return type:schrodinger.structure.Structure