schrodinger.application.bioluminate.protein.mutator module¶
- class schrodinger.application.bioluminate.protein.mutator.ProteinMutator(ref_struct, mutations, concurrent=1, sequential=False, idealize=True)¶
Bases:
schrodinger.application.bioluminate.mutation.MacromoleculeMutator
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.Structure.read('receptor.maegz') # 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 = ProteinMutator.convert_residue_list(residues, muts) # Construct the mutator mutator = ProteinMutator(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)
@todo: Add logging
- MUTATIONS_PROPERTY = 's_bioluminate_Mutations'¶
- UNFOLDED_PROPERTY = 'r_bioluminate_Unfolded_Contribution'¶
- UNFOLDED_PROPERTY_PRIME = 'r_bioluminate_Unfolded_Contribution_Prime'¶
- RES_FILE_REGEX = re.compile('(?P<chain>[a-zA-Z0-9_]{1})\n :\n (?P<resnum>-?\\d+)\n (?P<inscode>[a-zA-Z]{1})? # optional\n \\s? # optional\n (?P<mutations>(\\S{3})(,\\S{3})*)? # optional\n , re.VERBOSE)¶
- MUTS_FILE_REGEX = re.compile('(?P<chain>[a-zA-Z0-9_]{1})\n :\n (?P<resnum>-?\\d+)\n (?P<inscode>[a-zA-Z]{1})? # optional\n ->\n (?P<new_resname>(\\S{3}))\n ', re.VERBOSE)¶
- GXG_DATA = {'ALA': -100.736, 'ARG': -118.478, 'ARN': -118.478, 'ASH': -149.255, 'ASN': -137.153, 'ASP': -149.255, 'CYS': -100.845, 'GLH': -143.536, 'GLN': -136.183, 'GLU': -143.536, 'GLY': -105.658, 'HID': -104.977, 'HIE': -104.977, 'HIP': -104.977, 'HIS': -104.977, 'ILE': -84.13, 'LEU': -92.4, 'LYN': -110.759, 'LYS': -110.759, 'MET': -99.708, 'PHE': -96.483, 'PRO': -66.763, 'SER': -96.365, 'THR': -98.156, 'TRP': -105.114, 'TYR': -101.858, 'VAL': -93.493}¶
- GXG_DATA_PRIME = {'ALA': -112.635, 'ARG': -142.467, 'ARN': -142.467, 'ASH': -154.559, 'ASN': -156.375, 'ASP': -154.559, 'CYS': -113.747, 'GLH': -141.673, 'GLN': -152.611, 'GLU': -141.673, 'GLY': -116.263, 'HID': -121.6, 'HIE': -121.6, 'HIP': -121.6, 'HIS': -121.6, 'ILE': -97.541, 'LEU': -107.106, 'LYN': -123.751, 'LYS': -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 = ['ALA', 'ARG', 'ASN', 'ASP', 'CYS', 'GLN', 'GLU', 'GLY', 'HIS', 'HIP', 'HIE', 'ILE', 'LEU', 'LYS', 'MET', 'PHE', 'PRO', 'SER', 'THR', 'TRP', 'TYR', 'VAL']¶
- __init__(ref_struct, mutations, concurrent=1, sequential=False, idealize=True)¶
- Parameters
ref_struct (
schrodinger.structure.Structure
instance) – The reference (starting) structuremutations (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 less than 1.
- See
For easy creation of mutations variable
ProteinMutator.convert_residue_list
- classmethod validate_mutated_residues(residues)¶
Method for validating the residues used in mutations passed in to the
MutateProtein
class.- Raises
ValueError – If the 3-letter residue name is not supported by the
build,mutate
method.
- classmethod convert_res_file(filename, regex=re.compile('(?P<chain>[a-zA-Z0-9_]{1})\n :\n (?P<resnum>-?\\d+)\n (?P<inscode>[a-zA-Z]{1})? # optional\n \\s? # optional\n (?P<mutations>(\\S{3})(, \\S{3})*)? # optional\n, re.VERBOSE))¶
Shim for the mixed-case class method convertResFile
- classmethod convert_res_list(reslist, regex=re.compile('(?P<chain>[a-zA-Z0-9_]{1})\n :\n (?P<resnum>-?\\d+)\n (?P<inscode>[a-zA-Z]{1})? # optional\n \\s? # optional\n (?P<mutations>(\\S{3})(, \\S{3})*)? # optional\n, re.VERBOSE), validate=True)¶
Shim for the mixed-case class method convertResList.
- static get_3_letter_mutation(mutation)¶
- classmethod get_3_letter_mutation_list(mutation_list)¶
- classmethod convert_res_to_muts(res_str, regex=re.compile('(?P<chain>[a-zA-Z0-9_]{1})\n :\n (?P<resnum>-?\\d+)\n (?P<inscode>[a-zA-Z]{1})? # optional\n \\s? # optional\n (?P<mutations>(\\S{3})(, \\S{3})*)? # optional\n, re.VERBOSE), validate=True)¶
Shim for the mixed-case class method convertResToMuts.
- classmethod convert_muts_file(muts_file, regex=re.compile('(?P<chain>[a-zA-Z0-9_]{1})\n :\n (?P<resnum>-?\\d+)\n (?P<inscode>[a-zA-Z]{1})? # optional\n ->\n (?P<new_resname>(\\S{3}))\n ', re.VERBOSE))¶
Shim for the mixed-case class method convertMutsFile.
- classmethod convert_residue_list(residues, mutations, regex=re.compile('(?P<chain>[a-zA-Z0-9_]{1})\n :\n (?P<resnum>-?\\d+)\n (?P<inscode>[a-zA-Z]{1})? # optional\n \\s? # optional\n (?P<mutations>(\\S{3})(, \\S{3})*)? # optional\n, re.VERBOSE))¶
Shim for the mixed-case method convertResidueList.
- calculateMutationsList()¶
Calculate the mutations that will be performed, based on the input residues and their mutations, and the “concurrent” and “sequential” settings.
- generate()¶
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 for all mutations defined in
self.mutations
Each step of generator yields amutation
.- Return type
generator
- getMutationFromChanges(changes)¶
- getLoopMutation(mutated_st, res_str, new_resname)¶
build loop insertion or deletion