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