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')