SHARP 2.0.0 - release notes

  1. Introduction
  2. List of changes
  3. Timings
  4. Installation
  5. References


The current production version of SHARP (2.0.0) is intended as a drop-in replacement of SHARP 1.4.0 (the previous production version). It can be run in the same way as SHARP 1.4.0 using the same set of scripts (SUSHI 3.0.x).

List of changes

  1. General

    The algorithms implemented in this major revision of the code remain the same as in the relevant papers published previously [1], but some subtle changes have been introduced at various stages of the computations. However, the actual implementation is almost completely new. In the following sections the main changes are explained.

  2. Double precision arithmetic

    All computations are now done in double precision. This transition was necessary to cope with very large range of values encountered in likelihood computations, a common phenomenon in statistics. Despite this, the new code is much faster and uses less memory.

  3. Core libraries

    All low-level functions (mainly the likelihood functions and their derivatives) have been redesigned and rewritten from the ground-up. As mentioned above, they are the same as previously published. However, we anticipate changes there in the near future. A fairly sophisticated part of this section of the code is an algorithm to integrate various likelihood functions over the complex plane. Speed-up gains achieved initially has been deliberately sacrificed partly to achieve a higher numerical accuracy.

  4. Middle layer of the code

    All computations are now orchestrated by a set of functions reflecting to a large extend the special nature of the optimization problem involved. This way of coding is related to problems like automatic differentiation [2] and use of sparsity of some matrices emerging at intermediate steps of the computations, but does not involve any approximations. Big memory savings and speed gains have been achieved here. The scalability wrt. model size has improved significantly. With the present version it is feasible to investigate structures containing hundreds of sites. The code is also very well suited for further extensions.

  5. New optimizer

    The old minimizer (of the line-search type) has been replaced by a state-of-the-art bound-constrained trust region type Newton method algorithm [3],[4] which uses as a preconditioner a sparse incomplete Cholesky factorization with predictable memory requirements [5]. Although SHARP often solves relatively small problems (in terms of number of variables), this optimizer is well suited for very large ones.

  6. Improvements in handling heavy atom model

    Model deficiencies caused by incorrect sites can now be detected at earlier stages making the optimization procedure more robust. A sparse approximation of the final Hessian can now be used to achieve further speedup for high resolution data and/or structures with many heavy atom sites.

  7. This is a production release

    The code has been extensively tested on both simulated data and on all the real data sets at our disposal. It was in active beta testing for over 6 months. However, testing is never exhaustive and can only reveal bugs, but not the absence of problems. We would be grateful for any feedback from the users, especially those familiar with the previous versions of the program, about potential problems as well as overall code behaviour.


The timings are for a set of 14 jobs consisting of small, medium, and large wrt. both number of variables, number of reflections, and type (SAD, MAD, MIR). The times are in hours running on an Compaq/Alpha ES40. Excluding the longest running job (Cyanase)


(see also the main installation instructions!)


[1] La Fortelle, E. de & Bricogne, G., Maximum-Likelihood Heavy-Atom Parameter Refinement for Multiple Isomorphous Replacement and Multiwavelength Anomalous Diffraction Methods, Methods in Enzymology, Macromolecular Crystallography, volume 276, pp. 472-494, edited by R. M. Sweet and C. W. Carter, Jr. New York: Academic Press.

[2] Evaluating Derivatives: Principles and Techniques of Algorithmic Differentiation, Andreas Griewank, Frontiers in Applied Mathematics 19, SIAM, Philadelphia, USA, 2000.

[3] A.R. Conn, N. Gould and Ph. L. Toint, Trust-Region Methods, SIAM, Philadelphia, USA, 2000.

[4] Chih-Jen Lin, Jorge J. Moré, Newton's method for large bound-constrained optimization problems, SIAM Journal on Optimization, Volume 9, Number 4, pp. 1100-1127, 1999.

[5] Chih-Jen Lin, Jorge J. Moré, Incomplete Cholesky factorizations with limited memory, SIAM Journal on Scientific Computing, 21, pages 24-45, 1999., <>