aboutsummaryrefslogtreecommitdiff
path: root/README
blob: d74ea8c6d37bdaf04a4cd89cf5ee3a530f56c769 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
CrystFEL - Data processing for serial crystallography
-----------------------------------------------------

Copyright © 2012-2020 Deutsches Elektronen-Synchrotron DESY,
                      a research centre of the Helmholtz Association.

Authors:
  Thomas White <taw@physics.org>
  Richard Kirian <rkirian@asu.edu>
  Kenneth Beyerlein <kenneth.beyerlein@desy.de>
  Andrew Aquila <andrew.aquila@cfel.de>
  Andrew Martin <andrew.martin@desy.de>
  Lorenzo Galli <lorenzo.galli@desy.de>
  Chun Hong Yoon <chun.hong.yoon@desy.de>
  Kenneth Beyerlein <kenneth.beyerlein@desy.de>
  Karol Nass <karol.nass@desy.de>
  Nadia Zatsepin <nadia.zatsepin@asu.edu>
  Anton Barty <anton.barty@desy.de>
  Cornelius Gati <cornelius.gati@desy.de>
  Fedor Chervinskii <fedor.chervinskii@gmail.com>
  Alexandra Tolstikova <alexandra.tolstikova@desy.de>
  Wolfgang Brehm <wolfgang.brehm@gmail.com>
  Valerio Mariani <valerio.mariani@desy.de>
  Parker de Waal <Parker.deWaal@vai.org>
  Takanori Nakane <nakane.t@gmail.com>
  Keitaro Yamashita <k.yamashita@spring8.or.jp>
  Mamoru Suzuki <mamoru.suzuki@protein.osaka-u.ac.jp>
  Thomas Grant <tgrant@hwi.buffalo.edu>
  Steve Aplin <steve.aplin@desy.de>
  Oleksandr Yefanov <oleksandr.yefanov@desy.de>
  Helen Ginn  <helen@strubi.ox.ac.uk>
  Nicolas Riebesel <nicolas.riebesel@tuhh.de>
  Yaroslav Gevorkov <yaroslav.gevorkov@desy.de>
  Omri Mor <omor1@asu.edu>

--------------------------------------------------------------------------------

CrystFEL is free software: you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.

CrystFEL is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
CrystFEL.  If not, see <http://www.gnu.org/licenses/>.

--------------------------------------------------------------------------------

CrystFEL is a suite of programs for processing (and simulating) Bragg
diffraction data from "serial crystallography" experiments, often (but not
always) performed using an X-ray Free-Electron Laser.  Some of the particular
characteristics of such data which call for a specialised software suite are:

- The sliced, rather than integrated, measurement of intensity data.  Many, if
  not all reflections are partially integrated.

- Many patterns (thousands) are required - high throughput is needed.

- The crystal orientations in each pattern are random and uncorrelated, meaning
  that:

- Merging into lower symmetry point groups may require the resolution of
  indexing ambiguities.


CrystFEL includes programs for simulating and processing patterns subject to the
above characteristics.  The main data processing pipeline is defined by four
programs:

	- indexamajig, for bulk indexing and integration of diffraction patterns

	- process_hkl, for quickly merging per-pattern lists of intensities into
	               a single reflection list

	- partialator, for merging patterns more accurately (and much more
	               slowly) using scaling, partiality modelling and
		       post refinement

	- ambigator, for resolving indexing ambiguities

There are two tools for calculating figures of merit for reflection data:

	- compare_hkl, for figures of merit that involve comparing two sets of
	               data, like CC* and R_split

	- check_hkl, for figures of merit based on only one set of data, like
	             completeness, redundancy and twinning tests

Three tools are provided for visualising data:

	- cell_explorer, for examining distributions of lattice parameters

	- hdfsee, an image viewer

	- render_hkl, for turning reflection lists into pretty graphics

CrystFEL can also simulate data, e.g. for methods development:

	- pattern_sim, which performs a Fourier image calculation

	- partial_sim, which calculates reflection intensities based on a
	               partiality calculation and optionally plots the peaks
		       in an image

There are also five utility programs:

	- get_hkl, for doing various simple operations on reflection lists such
	           as expanding by symmetry or adding noise

	- cell_tool, for doing operations on unit cells such as applying
	             transformations or looking for indexing ambiguities

	- geoptimiser, for refining detector geometry.

	- list_events, for creating event lists from multi-event files.

	- make_pixelmap, for creating HDF5 pixel map files for other programs
	                 like Cheetah and OnDA

	- whirligig, for finding multiple shots from single crystals.


There is also a folder full of scripts for achieving many related tasks, such as
file format conversion.

Standard "man" pages are provided for documentation, or you can invoke any
program with the argument "--help" to get a summary of options.  There are some
example geometry and beam description files in doc/examples, and API
documentation created using Doxygen.


Installation
------------

The terse installation instructions below should be enough if you're experienced
with installing software from source.  More detailed installation information is
available on the website:
https://www.desy.de/~twhite/crystfel/install.html

Mandatory dependencies:
	- CMake 3.12 or later
	- HDF5 1.8.0 or later (1.10.0 or later preferred)
	- GNU Scientific Library (GSL)
	- Bison 2.6 or later
	- Flex
	- Zlib (1.2.3.5 or later preferred)

"Optional" dependencies:
	- GTK2 or later (GTK3 preferred)
	- Cairo
	- Pango
	- gdk-pixbuf
	- NCurses
	- libPNG
	- libTIFF
	- FFTW3
	- XGandalf (https://stash.desy.de/users/gevorkov/repos/xgandalf)

"Optional" run-time dependencies:
	- Mosflm (https://www.mrc-lmb.cam.ac.uk/mosflm/mosflm/)
	- DirAx (http://www.crystal.chem.uu.nl/distr/dirax/)
	- XDS (http://xds.mpimf-heidelberg.mpg.de/)

Note that "optional" means that you *can* install CrystFEL without them, however
your installation will lack important components such as the visualisation
tools and certain indexing algorithms.

For processing electron diffraction or wide-bandwidth X-ray data, you should
also install PinkIndexer from:
https://stash.desy.de/users/gevorkov/repos/pinkindexer

Installation follows the normal CMake procedure:

$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install

If external libraries have been installed in non-standard locations, you can set
the path like this, for example for Xgandalf:
   cmake -DXGANDALF_INCLUDES=/path/to/xgandalf/include \
         -DXGANDALF_LIBRARIES=/path/to/xgandalf/lib/libxgandalf.so

The path to HDF5 can be set similarly:
   cmake -DHDF5_ROOT=/path/to/hdf5 (... /include, /lib etc)

To install CrystFEL in a custom location, use:
   cmake -DCMAKE_INSTALL_PREFIX=/path/for/crystfel/installation


Funding acknowledgements
------------------------

Development of CrystFEL is primarily funded by the Helmholtz Association.

Partial funding for CrystFEL has previously been provided by:

- "X-Probe", a project of the European Union's 2020 Research and Innovation
  Program Under the Marie Skłodowska-Curie grant agreement 637295 (2015-2018).

- The BMBF German-Russian Cooperation "SyncFELMed", grant 05K14CHA (2014-2017).

- BioStruct-X, a project funded by the Seventh Framework Programme (FP7) of the
  European Commission (2011-2016).