Hi Luc,
I have not been able to find any facility to constraint hydrogen geometry, in the manner of the AFIX in ShelXL I mean. Have I missed them or would it need to be implemented?
They need to be implemented.
In the latter case, I have tried to figure out how this could be done. I manage to find how position and ADP constraints are handled by constraint objects featuring methods to return the independent variables and the gradient with respect to them. Then cctbx/cctbx/ examples/structure_factor_derivatives_4.py shows how those features can be used. Would Hydrogen geometry constraint be best handled by mimicking those special positions constraint?
I am not sure. The handling of hydrogens seems more complicated than dealing with the constraints due to symmetry. I just had a quick look at the SHELX manual. I see many special cases. If I had a chance to work on this, I'd start with a Python script emulating some of the cases handled by SHELX, refining a few small structures. After getting a few concrete examples to work, I'd try to generalize the procedures for handling the special cases. I'd switch to C++ only after having fully conquered the math and the bookkeeping in Python, and being sure about the final interfaces. To implement the core refinement, I'd copy and modify cctbx/cctbx/xray/minimization.py. See also phenix/phenix/substructure/hyss/minimization.py, which you can find in the CCI Apps bundle (http://phenix-online.org/download/cci_apps/). Hope this helps. As you can tell, I am not an expert in constrained hydrogen refinement, but I'm very interested in seeing such algorithms in the cctbx (we'd probably want to use them in phenix.refine). Let me know if you feel I can do something to help out. Cheers, Ralf ____________________________________________________________________________________ Cheap talk? Check out Yahoo! Messenger's low PC-to-Phone call rates. http://voice.yahoo.com