Mutate Structure

Briefs

The target for this tutorial to mutate the target protein at defined residue(s). The main function provided are assign_mutant() and mutate_stru(), in which mutate_stru() solves the problem of protein structural prediction upon mutation. It means to determine which mutation to address and determine the structure of the mutant of the source protein caused by residue substitution, deletion, and insertion. (see also: structure_prediction module for an alternative solution)

Input/Output

Input

stru

the target protein structure intended for mutation, represented as a Structure() object.

How to obtain

A Strutcure() object can be obtained by these APIs.
mutant

a target list of mutation objects, generated by the assign_mutant function. The input mutation list will be checked for repetition and validity.

How to obtain

A mutant object can be obtained by these assign_mutant(). The assign_mutant function generates a list of mutants. We can use a for loop to iterate over each mutant object in this list. Within the loop, the mutate_stru function is called to process each individual mutant.
engine

the method used for determine the mutated structure.

How to obtain

Choose from supported engine: tleap_min, pymol, rosetta

Output

The reference/copy of the changed structure (depends on the in_place value) as Structure object, the changed structure can be checked for topology.

Arguments

stru:

the target protein structure for mutation represented as Structure()

mutant:

a target list of mutation objects. (normally generated by the assign_mutant` function. Generally dont recommand generating themanually).

engine:

the engine (method) used for determine the mutated structure.

current available keywords:
tleap_min
pymol
rosetta
in_place:

if change the structure in-place and return the reference. False means return a changed structure_obj and keep the original objecintact (default is False since wild-type structure is expected to also available in many applications)

if_check_mutant_stru:

support turning the mutant structure check off. (on by default)

checker_config:

config which checkers to use and their corresponding kwargs.

{‘checker_name’:{‘keyword’:value, …}, …}
(by default apply all checker)

Example Code

Mutate a target protein

In this example, we perform assign mutations on a protein structure.

How input is prepared

stru

obtained by reading from a PDB file using PDBParser().get_structure() (See Details)

mutant

a target list of mutation objects, generated by the assign_mutant

engine

we choose “pymol”

from enzy_htp.structure import PDBParser
import enzy_htp.mutation.api as mapi
test_A = "test_A.pdb"
test_A_stru = PDBParser.get_structure(test_A)
test_mutation_pattern_A = "M71L, r:2[resi 289 around 4 and not resi 36:larger]*5"
mutants_A = mapi.assign_mutant(test_A_stru, test_mutation_pattern_A)
print(mutants_A)
#[[('MET','LEU','A',71)],
# [('MET','ARG','A',277), ('THR','MET','A',274)],
# [('ASP','ARG','A',287), ('HIS','LEU','A',290)],
# [('LEU','PHE','A',284), ('ILE','PHE','A',285)],
# [('ALA','TRP','A',288), ('VAL','ARG','A',273)],
# [('HIS','LYS','A',290), ('PHE','TYR','A',179)]]
mutant_stru_A_1 = mapi.mutate_stru(test_A_stru, mutants_A[0], "pymol") #mutate group1
PDBParser.save_structure("mut1.pdb",mutant_stru_A_1)
mutant_stru_A_2 = mapi.mutate_stru(test_A_stru, mutants_A[1], "pymol") #mutate group2
PDBParser.save_structure("mut2.pdb",mutant_stru_A_2)
mutant_stru_A_3 = mapi.mutate_stru(test_A_stru, mutants_A[2], "pymol") #mutate group3
PDBParser.save_structure("mut3.pdb",mutant_stru_A_3)

Author: Xingyu Ouyang <ouyangxingyu913@gmail.com>