Course on Software Development for Crystallography
15 - 19 June 2009
Institut Laue - Langevin Grenoble, France
Coordinator:
Juan Rodriguez-Carvajal ILL (Grenoble) +33(0)4 76 20 72 05 jrc(at)ill.fr
Lecturers (tentative):
Juan Rodriguez-Carvajal (ILL - Grenoble)
Jorge Navaza (IBS - Grenoble)
Javier González-Platas (La Laguna)
Fermín Otálora (LEC- Granada)
The development of crystallographic software has been one of the pillars of the success of Crystallography in the sense of a structural analysis technique. The availability of high quality software is needed for tackling new problems and to get the maximum information contained in experimental data. This is a necessary condition to get a deeper insight into the real structure of materials.
In the present context the crystallographic community is using a set of computing programs written by authors close to get retired in the forthcoming few years. On the other hand there exists an important offer of proprietary and commercial software. This is an advantage for industrial world but it may bring problems in the academic world due to the fact that development are dictated by the market instead to be driven by the research needs. The development of publicly available software written by the scientists using crystallographic techniques is of great importance is this must be satisfied by the appropriate training of research scientists.
The pre-requisites necessary for pursuing the proposed course with some guaranty of efficacy are the following:
- A solid knowledge of crystallography and diffraction techniques.
- A good training on linear algebra, analytic geometry and differential calculus.
- A good practice in the use of computers with operating systems: Windows, Linux or MacOS
- Fortran 95/2003 language will be the basic high level programming language of the course. If the applicant has no experience with Fortran 95, a basic knowledge of at least one programming language (e.g. Fortran 77, C/C++, Basic, Java, Matlab, Python…) is a pre-requisite.
The aims of the course are:
- Learn the fundamentals of the modern programming techniques: modular programming, object-oriented programming, etc. Development of small console programs and fundamentals of developing a graphic user interface (GUI).
- Learn the use of existing crystallographic libraries: CCSL (Fortran 77), CrysFML (Fortran 95), cctbx (C++), etc. The examples and the emphasis in the course will be based on CrysFML. Learn the use of “scripting” languages for connecting CPU intensive applications.
- Learn to program simple crystallographic calculations: reading files and format transformations, generation of reflections, structure factor calculations, etc.
- Detailed study of a program for solving crystal structures using a combination of global and local optimization using the procedures existing in CrysFML
- Introduction to Crystallographic Computing. The essential mathematics for crystallography.
- Programming languages for developing numerical software.
High level versus low level languages. Modern Fortran versus C/C++.
Scripting languages: shell (Linux) / bat (Windows) files, Python ...
- Introduction to modular programming with F: a short and clean subset of Fortran 95. Tuning G95 for accepting only F-syntax. The essentials of object orientation (OO): data structures, overload of procedures, functions and operators, encapsulation, data hiding, inheritance and polymorphism. How to express OO in Fortran 95? Fortran 2003 for complete OO support.
- Using the Web for getting numerical procedures useful for crystallography: Netlib, TOMS, etc.
- Overview of the available public crystallographic libraries: CCSL (Fortran 77), CrysFML (Fortran 95), cctbx (C++)
… - Elementary crystallographic calculations.
Creation of data structures for crystallography: cell, atom and space group types.
Geometrical calculations: distances, bond angles, dihedral angles, etc.
Symmetry calculations
Generation of reflection lists for a given metrics and space group symmetry
Fourier transforms and Fourier maps
Basic mathematical modules
Chemical and scattering tables
String utilities
Symmetry modules
Cell and atom types
Reflections utilities: reflection types, systematic absences, generation of reflections
Reading CIF files and diffraction patterns
Profile functions
Structure factor calculations
Optimization techniques
- Elementary console programs using CrysFML
Space group information
Checking possible space groups from the analysis of a list of experimental reflections
Structure factors calculations reading a CIF file with the crystal structure
Calculation of a powder diffraction pattern reading a CIF file with the crystal structure
- Introduction to Graphic User Interface
Programming methods
Separating the compute intensive code from the interaction with the user
The use of commercial libraries for making GUIs: Winteracter, GINO, MathFOR, etc
Free software for creating GUIs: Tcl/Tk, Java
If you are interested to take part to this course, please send an email entilted "yourname_applicationCSDC" to csdc(at)ill.eu to explain your involvement in the field, plus a short CV, not omitting to specify your name, affiliation and status (deadline 15th May 2009).
In order to favor fruitful exchanges, the number of participants will be limited to 15. You will be informed if your application is selected (or not) not latter than 20th of May 2009.
The fees (400€) will cover exclusively your participation in the course and the lunches. You should organize yourself for accommodation. Information related to bank transfer will be sent with the response to your application.
On line: search in the internet for crystallographic computing resources and for tutorials in computing languages (Fortran 90/95/2003)
International Union of Crystallography: Commission on Crystallographic Computing
www.iucr.ac.uk/iucr-top/comm/ccom/index.html
Collaborative Computing Project #4: Protein Crystallography.
www.ccp4.ac.uk
Books and articles
Computing methods in Crystallography
Pergamon Press Ltd., Headington Hill Hall, Oxford
J.S. Rollet (1965)
Crystallographic Computing (Series)
Oxford International Union of Crystallography Book Series
Oxford University Press, Inc. New York, NY, USA
Methods and Applications in Crystallographic Computing
Sydney Hall & T. Ashida (Editors)
Oxford University Press, USA (December 13, 1984)
International Tables for Crystallography, Vol B (Reciprocal Space)
U. Shmueli (Editor)
Kluwer Academic Publishers (London, 1993)
Fundamentals of Crystallography.
Giacovazzo C., Monaco H.L., Artioli G., Viterbo D., Ferraris G., Gilli G. and others (2002).Oxford University Press.
The lectures will take place in the main building of ILL (ILL4). They will start on Monday 15th of June at 9:00 am and end on Friday 19th of June around 5:00pm. Details for comming to ILL can be found on http://www.ill.eu/users/user-guide/travelling-to-the-ill/