aln = <alignment> | Alignment between model and templates | |
io = <io_data> | Options for reading atom files |
This command should be run after model.generate_topology() and before model.restraints.make() to ensure that the disulfides are restrained properly by the bond length, angle, and dihedral angle restraints and that no SG-SG non-bonded interactions are applied.
The disulfide bond, angle and dihedral angle restraints have their own physical restraint type separate from the other bond, angle and dihedral angle restraints (Table 3.5).
# Example for: model.patch_ss_templates() and model.patch_ss() # This will patch CYS-CYS disulfide bonds using disulfides in aligned templates: log.verbose() env = environ() env.libs.topology.read(file='$(LIB)/top_heav.lib') env.libs.parameters.read(file='$(LIB)/par.lib') # Read the sequence, calculate its topology, and coordinates: aln = alignment(env, file='toxin.ali', align_codes=('2ctx', '2abx')) # Superpose the two template structures without changing the alignment. # This is for TRANSFER_XYZ to work properly. It relies on not reading # the atom files again before TRANSFER_XYZ. aln.malign3d(fit=False) # This is for TRANSFER_XYZ to work properly. # Restore the alignment, and add in the model sequence, 1fas: aln.clear() aln.append(file='toxin.ali', align_codes=('2ctx', '2abx', '1fas')) mdl = model(env) mdl.generate_topology(aln, sequence='1fas') mdl.transfer_xyz(aln) mdl.build(initialize_xyz=True, build_method='INTERNAL_COORDINATES') mdl.write(file='1fas.noSS') # Create the disulfide bonds using equivalent disulfide bonds in templates: mdl.patch_ss_templates(aln) # Create the stereochemical restraints mdl.restraints.make(aln, restraint_type='stereo', spline_on_site=False) # Calculate energy to test the disulfide restraints (bonds, angles, dihedrals): mdl.energy() mdl.read(file='1fas.noSS') # Create the disulfide bonds guessing by coordinates mdl.patch_ss() # Create the stereochemical restraints mdl.restraints.make(aln, restraint_type='stereo', spline_on_site=False) # Calculate energy to test the disulfide restraints (bonds, angles, dihedrals): mdl.energy()