How to add hydrogens to a crystal structure?

PDB protein crystal structures most of the time lack hydrogen atoms. Usually I use [PyMOL](https://pymol.org/) (`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](http://kinemage.biochem.duke.edu/software/reduce.php) 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*.


 9

[Olex2](http://www.olexsys.org/) (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](http://www.rcsb.org/pdb/explore/explore.do?structureId=1hho) without H-atoms loaded in Olex2: 


[![enter image description here](https://i.stack.imgur.com/QtK1T.png)](https://i.stack.imgur.com/QtK1T.png)


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


[![enter image description here](https://i.stack.imgur.com/S9xGo.png)](https://i.stack.imgur.com/S9xGo.png)


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.


 7

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. 


 1