Class Mutator
Mutates a set of residues in a protein structure allowing concurrent
mutations as well as the option to limit concurrent mutations to
sequential residues only.
Here is an example of a mutation of a Ser residue to: Asp, Glu, Asn,
& Gln (one-letter codes are D, E, N, & Q respectively). The Ser
residue is in chain A and has a residue number of 22. This example will
write a file named 'mutated_structures.maegz' that has the reference
structure as the first CT and each mutation CT after that. Five total
structures will be in the output file:
from schrodinger import structure
from schrodinger.application.bioluminate import protein
# Get the input structure
reference_st = structure.StructureReader('receptor.maegz').next()
# Create the writer for the output file and append the reference
writer = structure.StructureWriter('mutated_structures.maegz')
writer.append(reference_st)
# Define the residues and mutations
residues = ['A:22']
muts = 'DENQ'
# Get a compatible list of mutations. The above turns into
# [('A', 22, 'DENQ')]
mutations = protein.Mutator.convert_residue_list(residues, muts)
# Construct the mutator
mutator = protein.Mutator(st, mutations)
# Loop over each mutation
for mutation in mutator.generate():
#
mutated_structure = mutation.struct
residue_map = mutation.residue_map
res_str = ", ".join(str(res) for res in residue_map.values())
print 'Residues affected by this mutation: %s' % res_str
# Do something with the mutated structure (refine maybe)
writer.append(mutated_structure)
|
|
| __init__(self,
ref_struct,
mutations,
concurrent=1,
sequential=False,
idealize=True) |
|
|
|
|
calculateMutationsList(self)
Calculate the mutations that will be performed, based on the input
residues and their mutations, and the "concurrent" and
"sequential" settings. |
|
|
|
generator
|
generate(self)
Used to loop over all mutations. |
|
|
|
|
| getMutationFromChanges(self,
changes) |
|
|
|
|
getLoopMutation(self,
mutated_st,
res_str,
new_resname)
build loop insertion or deletion |
|
|
|
|
validate_mutated_residues(residues)
Method for validating the residues used in mutations passed in to the
C{MutateProtein} class. |
|
|
|
|
validate_mutations(mutations)
Private method for validating the mutations passed in to the
C{MutateProtein} class. |
|
|
|
list of tuples
|
convert_res_file(filename,
regex=re.compile(r'(?x)(?P<chain>[a-zA-Z_]{1}):(?P<resnum>\d+)(?P<in...)
Converts lines in filename into a list of mutations to use. |
|
|
|
|
convert_muts_file(muts_file,
regex=re.compile(r'(?x)(?P<chain>[a-zA-Z_]{1}):(?P<resnum>\d+)(?P<in...)
Converts lines in filename into a list of mutations to use. |
|
|
|
list of tuples
|
convert_residue_list(residues,
mutations,
regex=re.compile(r'(?x)(?P<chain>[a-zA-Z_]{1}):(?P<resnum>\d+)(?P<in...)
Convert a list of residues and mutations to a standard list of
mutations. |
|
|
|
|
MUTATIONS_PROPERTY = 's_bioluminate_Mutations'
|
|
|
UNFOLDED_PROPERTY = 'r_bioluminate_Unfolded_Contribution'
|
|
|
UNFOLDED_PROPERTY_PRIME = 'r_bioluminate_Unfolded_Contribution...
|
|
|
GXG_DATA = {'ALA': -100.736, 'ARG': -118.478, 'ARN': -118.478,...
|
|
|
GXG_DATA_PRIME = {'ALA': -112.635, 'ARG': -142.467, 'ARN': -14...
|
|
|
SUPPORTED_BUILD_RESIDUES = ['ALA', 'ARG', 'ASN', 'ASP', 'CYS',...
|
|
|
mutations
The list of mutations that will be carried out
|
|
|
total_mutations
Total number of mutations that will be generated
|
__init__(self,
ref_struct,
mutations,
concurrent=1,
sequential=False,
idealize=True)
(Constructor)
|
|
- Parameters:
ref_struct (schrodinger.structure.Structure instance) - The reference (starting) structure
mutations (List of tuples) - A list of the mutations to carry out on the
ref_struct. Each element of the list is a tuple of
("res num.", ["pdbnames"]) where "res
num." is the residue number being altered and
"pdbnames" is a list of the standard PDB residue names
to mutate it to.
concurrent (int) - Maximum concurrent mutations
sequential (bool) - Limit concurrent mutations to being sequential
idealize (bool) - Whether to idealize the reference structure by self-mutating the
affected residues before calculating properties.
- Raises:
RuntimeError - If concurrent is not between 1 and 99.
|
validate_mutated_residues(residues)
Static Method
|
|
Method for validating the residues used in mutations passed in to the
C{MutateProtein} class.
@raise ValueError: If the 3-letter residue name is not supported
by the L{build,mutate} method.
@todo: Convert the return to raise a custom MutateProteinError.
This will help in letting front-end know why it fails.
@todo: Add validation for assuring chain and resnum are in self.struct
|
validate_mutations(mutations)
Static Method
|
|
Private method for validating the mutations passed in to the
C{MutateProtein} class.
@raise ValueError: If the C{mutations} passed in is not a list, if each
item in the list is not a tuple, if the tuple is not of length 4
(chain, resnum idx, inscode, mutation resnames), if the resnum is
not an integer, or any of the 3-letter residue names in "mutation
resnames" is not supported by the L{build,mutate} method.
@todo: Convert the return to raise a custom MutateProteinError.
This will help in letting front-end know why it fails.
@todo: Add validation for assuring chain and resnum are in self.struct
|
convert_res_file(filename,
regex=re.compile(r'(?x)(?P<chain>[a-zA-Z_]{1}):(?P<resnum>\d+)(?P<in...)
Static Method
|
|
Converts lines in filename into a list of mutations to use. Returns a
list of tuples where each tuple is ( "chain",
"resnum", "inscode", "three-letter resnames for
mutation").
Each line could be multiple mutations (one residue to multiple
mutation states)
- Parameters:
fileobj (file) - The open file object containing the list of mutations.
- Returns: list of tuples
- List of mutations with valid syntax for the class
- Raises:
RuntimeError - If any of chain, resnum or mutation is missing
|
convert_muts_file(muts_file,
regex=re.compile(r'(?x)(?P<chain>[a-zA-Z_]{1}):(?P<resnum>\d+)(?P<in...)
Static Method
|
|
Converts lines in filename into a list of mutations to use. Returns a
list of tuples where each tuple is ( "chain",
"resnum", "inscode", "three-letter resnames for
mutation").
Also supports loop insertion and deletion.
Each line is one mutation (could be multiple residues)
|
convert_residue_list(residues,
mutations,
regex=re.compile(r'(?x)(?P<chain>[a-zA-Z_]{1}):(?P<resnum>\d+)(?P<in...)
Static Method
|
|
Convert a list of residues and mutations to a standard list of
mutations. Returns a list of tuples where each tuple is (
"chain", "resnum", "inscode",
"three-letter resnames for mutation").
- Parameters:
residues (list of strings (Syntax: <chain>:<resnum> if no chain
use "_")) - Residues that will be mutated.
mutations - The three-letter names for the residues that will be used in
mutation.
- Returns: list of tuples
- List of mutations with valid syntax for the class
- Raises:
RuntimeError - If any of chain, resnum or mutation is missing or if there is an
invalid residue name
|
|
Used to loop over all mutations. Each mutation consists of the mutated
structure and a residue mapping dict. The structure is raw, that is,
unrefined in any way.
- Returns: generator
- Generator for all mutations defined in
self.mutations Each step of generator yields a mutation.
|
UNFOLDED_PROPERTY_PRIME
- Value:
'r_bioluminate_Unfolded_Contribution_Prime'
|
|
GXG_DATA
- Value:
{'ALA': -100.736,
'ARG': -118.478,
'ARN': -118.478,
'ASH': -149.255,
'ASN': -137.153,
'ASP': -149.255,
'CYS': -100.845,
'GLH': -143.536,
...
|
|
GXG_DATA_PRIME
- Value:
{'ALA': -112.635,
'ARG': -142.467,
'ARN': -142.467,
'ASH': -154.559,
'ASN': -156.375,
'ASP': -154.559,
'CYS': -113.747,
'GLH': -141.673,
...
|
|
SUPPORTED_BUILD_RESIDUES
- Value:
['ALA',
'ARG',
'ASN',
'ASP',
'CYS',
'GLN',
'GLU',
'GLY',
...
|
|
mutations
The list of mutations that will be carried out
- Get Method:
- unreachable.mutations(self)
- The list of mutations that will be carried out
- Set Method:
- unreachable.mutations(self,
mutations)
- The setter method for
self.mutations.
|
total_mutations
Total number of mutations that will be generated
- Get Method:
- unreachable.total_mutations(self)
- Total number of mutations that will be generated
|