Anna Marabotti wrote: > I'm attaching here the pdb file of the model in which I would like to > create the disulfide bridge, and the > scripts I used to do it. My knowledge of Python language is very very > poor and so I'm doing a trial&error > procedure, but at present I obtain only errors... If I understand > well, I should only provide the PDB file to Modeller, > since I don't see any request of > alignment. The sequence then should be read from the PDB file, right?
Correct.
> The PDB file I have attached is the one that I obtained using > mutate_model: residue 55 was previously a Gly, > and now is a Cys in both subunits.So, the number of the residue > should be correct.
Well, your first problem is that there is no residue "55" in your input PDB. There is, however, a residue "55:A". The chain ID must be specified if it is present in the PDB.
> I tried to model a disulfide bridge between Cys55 of the subunit A > and Cys180 of the subunit B, and I tried: > > 1) model-patch_1.py (see attachment): here the error message: ... > KeyError: 'No such residue: 55:'
OK, here it's because you didn't specify the chain IDs.
> 2) model-patch_2.py (see attachment): here the error message: ... > KeyError: 'No such residue: 180:B'
See http://salilab.org/modeller/9v5/manual/node403.html. By default, complete_pdb (and Modeller in general) renumbers residues starting from 1, and chains starting from A. This deals with PDBs containing duplicated residue numbers, and in the general case of comparative modeling, where there are gaps and multiple templates, the residue numbers in the target cannot be deduced from those in the templates anyway. So in your model, there is no residue 180:B; your residues are labeled 1:A through 359:A and 360:B through 718:B.
So in your case you have two options: 1. Modify your script to a) not call special_patches and b) write out the resultant PDB file, e.g.
# Read the sequence: code = '1R3ACYS55CYS55' mdl = complete_pdb(env, code) mdl.write(file='test.pdb')
By inspecting test.pdb you can then figure out what the residue numbers should be for your disulfide bridge in the model. You can then use your original model-patch_2.py script with these corrected residue numbers.
2. Specify transfer_res_num=True when you call complete_pdb, to have Modeller use the original PDB file residue numbering.
By the way, since all your script is doing is calculating the energy (not optimizing the model) you won't see the disulfide bridge pulling those two Cys residues together, although you may see some restraint violations in the log file if they're quite far apart.
Ben Webb, Modeller Caretaker