JMol can be used to identify Hydrogen bonds in proteins by the script "calculate HBONDS". By outputting the state of the network, we can obtain a lisdt of H-bonds.
Here's one line from an example output (PDB ID number 1a1x):
74 540 4096 0.001 -2.507 hbond;
I believe the correct interpretation of the first two numbers is that atom 74 is H-bonded to atom 540. (I'm not really sure what the other numbers mean.)
Question: How can we determine which atom is the donor and which is the acceptor?
In the above example, atom 74 is a Nitrogen atom and atom 540 is a Carbon atom, so presumably the Nitrogen atom is the donor. But, how can we tell in general?