On Mon, Jun 21, 2010 at 11:55 AM, Jianghai Zhu <jzhu@idi.harvard.edu> wrote:
I am using secondary restraints in the phenix.refine. I got the following error message.
hydrogen_bonds_from_selections: incomplete non-PRO residues in helix.
 "(chain 'A' and resseq 141:143) and (altloc 'A' or altloc ' ') and name H" => 0 donors
 "(chain 'A' and resseq 141:143) and (altloc 'A' or altloc ' ') and name O" => 3 acceptors
. . .
Traceback (most recent call last):
. . . 
File "/nfs/home/jzhu/phenix/phenix-1.6.2-432/cctbx_project/mmtbx/secondary_structure.py", line 652, in _donors_and_acceptors
   donor_isel.insert(k, n_atoms)
IndexError: Index out of range.

The code will try to switch intelligently between restraining H-O and N-O distances, depending on whether or not hydrogen atoms are present in the PDB file - but it does so globally, and *any* hydrogen atoms are enough to trigger use of the H-O restraints.  The warning messages are telling you that hydrogens are missing on those residues; this could happen if you added residues in Coot, but didn't re-run phenix.ready_set to fully hydrogenate them.  The IndexError is just a bug, probably due to some special case present in your model.

If you intended to refine with hydrogens, you should run phenix.ready_set first; if not, I'd recommend deleting whatever hydrogen atoms are present now, and/or add this parameter:

h_bond_restraints.substitute_n_for_h=True

which will tell it to only restrain N-O distances.  I'd still like to figure out why it crashes, however - could you please send me the PDB file privately?  (I don't need data for this, just the model.)

thanks,
Nat