# How to add hydrogens to a crystal structure?

PDB protein crystal structures most of the time lack hydrogen atoms. Usually I use PyMOL (h_add) but it does not always seem to be giving the correct result. What can I use for accurate hydrogen addition?

I've used Reduce before, which is excellent. I'm not sure what you mean by ' does not always seem to be giving the correct result', though? Perhaps you could file a bug report with the PyMOL team if you think there is a bug in h_add.

• Indeed, I think the PyMOL team would be highly interested in knowing about bugs in hydrogen addition from a PDB crystal structure. – Geoff Hutchison Jun 1 '15 at 14:54
• @GeoffHutchison : True. Actually, it wouldn't be so hard to run h_add and Reduce over some subset of the pdb (small, high-res structures?) to see what differences there are - if any. – gilleain Jun 1 '15 at 16:22

Olex2 (free, available for Windows, MacOS, Linux) can also be used to add hydrogens to any structure with the similar to PyMOL's command hadd. Example: hemoglobin PDB without H-atoms loaded in Olex2:

Executing hadd command adds hydrogens to all atoms where it is appropriate (taking hybridization into account), chemdraw assigns proper bonds order:

Alternatively, one can only populate certain atom types with hydrogens by selecting them first, e.g. for carbons: sel \$C, then hadd. Also, one can hide/show added hydrogens by pressing Ctrl+H.

To save the file, type file name_of_protein.xyz. Saving in PDB also works, but the metadata/header is going to be lost, and sometimes the PDB file cannot be read properly by third-party software. So XYZ is the most safe option here.

There are many software packages that do what you request. PHENIX, Schrodinger, SCWRL4. It depends on how accurate you want, and options for pH etc.