Package schrodinger :: Package application :: Package bioluminate :: Module protein :: Class Mutator
[hide private]
[frames] | no frames]

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)

To Do: Add logging

Instance Methods [hide private]
 
__init__(self, ref_struct, mutations, concurrent=1, sequential=False, idealize=True)
 
mutations(self, mutations)
The setter method for self.mutations.
 
total_mutations(self)
Total number of mutations that will be generated
 
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
Static Methods [hide private]
 
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=MUTATION_3_LETTER_RE)
Converts lines in filename into a list of mutations to use.
 
convert_muts_file(muts_file, regex=MUTATION_RE)
Converts lines in filename into a list of mutations to use.
list of tuples
convert_residue_list(residues, mutations, regex=MUTATION_3_LETTER_RE)
Convert a list of residues and mutations to a standard list of mutations.
Class Variables [hide private]
  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, "A...
  GXG_DATA_PRIME = {"ALA":-112.635, "ARG":-142.467, "ARN":-142.4...
  SUPPORTED_BUILD_RESIDUES = ['ALA', 'ARG', 'ASN', 'ASP', 'CYS',...
Method Details [hide private]

__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.

See Also: For easy creation of mutations variable Mutator.convert_residue_list

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

mutations(self, mutations)

 

The setter method for self.mutations.

Decorators:
  • @mutations.setter
Raises:
  • RuntimeError - If the mutations have an invalid syntax

total_mutations(self)

 

Total number of mutations that will be generated

Decorators:
  • @property

convert_res_file(filename, regex=MUTATION_3_LETTER_RE)
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=MUTATION_RE)
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=MUTATION_3_LETTER_RE)
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

generate(self)

 

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.

Class Variable Details [hide private]

UNFOLDED_PROPERTY_PRIME

Value:
"r_bioluminate_Unfolded_Contribution_Prime"

GXG_DATA

Value:
{"ALA":-100.736, "ARG":-118.478, "ARN":-118.478, "ASN":-137.153, "ASP"\
:-149.255, "ASH":-149.255, "CYS":-100.845, "GLN":-136.183, "GLU":-143.\
536, "GLH":-143.536, "GLY":-105.658, "HIS":-104.977, "HIE":-104.977, "\
HID":-104.977, "HIP":-104.977, "ILE":-84.130, "LEU":-92.400, "LYS":-11\
0.759, "LYN":-110.759, "MET":-99.708, "PHE":-96.483, "PRO":-66.763, "S\
ER":-96.365, "THR":-98.156, "TRP":-105.114, "TYR":-101.858, "VAL":-93.\
493,}

GXG_DATA_PRIME

Value:
{"ALA":-112.635, "ARG":-142.467, "ARN":-142.467, "ASN":-156.375, "ASP"\
:-154.559, "ASH":-154.559, "CYS":-113.747, "GLN":-152.611, "GLU":-141.\
673, "GLH":-141.673, "GLY":-116.263, "HIS":-121.600, "HIE":-121.600, "\
HID":-121.600, "HIP":-121.600, "ILE":-97.541, "LEU":-107.106, "LYS":-1\
23.751, "LYN":-123.751, "MET":-112.643, "PHE":-113.719, "PRO":-81.734,\
 "SER":-112.693, "THR":-116.048, "TRP":-122.407, "TYR":-123.497, "VAL"\
:-109.017,}

SUPPORTED_BUILD_RESIDUES

Value:
['ALA', 'ARG', 'ASN', 'ASP', 'CYS', 'GLN', 'GLU', 'GLY', 'HIS', 'HIP',\
 'HIE', 'ILE', 'LEU', 'LYS', 'MET', 'PHE', 'PRO', 'SER', 'THR', 'TRP',\
 'TYR', 'VAL']