This tutorial, which was given at the school "Advanced Software Development for Crystallographers", 20th-22nd of August 2015, in Rovinj, Croatia, aims at teaching some aspects of numerical optimistions in the contect of the CCTBX.
The field of numerical optimisation is huge and has gone through several revolutions in the last two decades, making it nearly impossible to even introduce it in such a tutorial. Thus we will completely focus on crystallographic refinement. We will first briefly present the two main paradigms: least-squares and maximum likelihood. We will then explain constraints and restraints. The tutorial per se will then show how to implement constraints in least-squares refinement on a pedagogical example. We will show how to develop a new CCTBX module, with a C++ implementation, and we will then write a bridge between C++ and Python.
The participant should have a working knowledge of the cctbx, or they should have attended the other tutorial of mine introducing the cctbx.