Re: [modeller_usage] R: R: question for a (putative?) disulfide bridge
To: Anna Marabotti <>, "" <>
Subject: Re: [modeller_usage] R: R: question for a (putative?) disulfide bridge
From: Modeller Caretaker <>
Date: Tue, 02 Dec 2008 10:12:57 -0800
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?
> 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)
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
Modeller mail list: http://salilab.org/mailman/listinfo/modeller_usage