CONECT records writing mutated PDB
Hello there,
I use Modeller to induce point mutations on a PDB. This part works very well (see code below).
My problem is the protein has several disulfides defined by CONECT records in the template PDB. The output pdb is missing these records and they are required later. Since the atom count changes after several point mutations, it can not be done as easily, and doing it by hand is not an option.
Is there a way to force Modeller to do so? or it lacks the code to recompute the sulfurs?. I read it does if the output file is a PSF, but not with PDB.
Thanks in advance. Pedro
mdl = model(env, file=pdb_file) aln = alignment(env) aln.append_model(mdl, atom_files=pdb_file, align_codes=pdb_file)
for mutation in mutations: for pos, new_residue in mutation.items(): chain_id, res_id = pos.split(":") pointmut = f'{res_id}:{chain_id}' sel = selection(mdl.residues[pointmut]) sel.mutate(residue_type=self.res1to3[new_residue]) #mutate position
aln.append_model(mdl, align_codes='mut') mdl.clear_topology() mdl.generate_topology(aln['mut']) mdl.transfer_xyz(aln) mdl.build(initialize_xyz=False, build_method='INTERNAL_COORDINATES') mdl2 = model(env, file=pdb_file) mdl.res_num_from(mdl2,aln) mdl.write(file=output_file, model_format='PDB')
On 9/13/23 8:51 AM, Pedro Guillem via modeller_usage wrote: > I use Modeller to induce point mutations on a PDB. This part works very > well (see code below). > > My problem is the protein has several disulfides defined by CONECT > records in the template PDB. The output pdb is missing these records and > they are required later.
Modeller does not read CONECT records, but it will write them for any disulfide bonds that it knows about. So all you need to do is to patch the topology with the disulfides you want. You can either patch them explicitly: https://salilab.org/modeller/10.3/manual/node188.html
or you can have Modeller deduce them from the geometry of your template structure: https://salilab.org/modeller/10.3/manual/node189.html
I think in the latter case, since you already have a suitable alignment, adding
mdl.patch_ss_templates(aln)
immediately after your call to mdl.build(), should do the trick.
Ben Webb, Modeller Caretaker
participants (2)
-
Modeller Caretaker
-
Pedro Guillem