aboutsummaryrefslogtreecommitdiff
path: root/README
blob: d59754d94e5b5364bb8f601dd80a5d16faa0f387 (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
CrystFEL - Crystallography with a FEL
-------------------------------------

Thomas White <taw@physics.org>, CFEL, DESY Hamburg

CrystFEL is a suite of programs for processing (and simulating) Bragg
diffraction data acquired with a 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.  Unique correction factors are
   needed.

- The crystals are small, leading to significant Fourier truncation effects on
   the detector.

- Many patterns (>10,000) 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 programs are:

	- pattern_sim, for simulating patterns.

	- indexamajig, a "batch indexer" and data reduction program.
	               It is used for finding hits, locating peaks, indexing
	               patterns and constructing lists of h,k,l,I,sigma(I) (or
	               similar) for each pattern.

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

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

	- reintegrate, which is like "indexamajig" but without the indexing
	               step, instead getting the orientation matrix from the
	               output of a previous run of either "indexamajig" or
	               "reintegrate".

In addition, there is also:

	- get_hkl, for generating a list of squared structure factors for
	           comparison to simulated or experimental data.

	- powder_plot, for turning an image into a list of reciprocal space
	               vector moduli and intensities (i.e. a powder diffraction
	               trace).

	- compare_hkl, for working out the differences (e.g. a q-dependent
	               scaling factor) between two lists of reflections.

	- check_hkl, for determining things like completeness.

	- calibrate_detector, for summing patterns after peak detection to use
	                      for calibrating your detector.

	- cubeit, for summing patterns in 3D to inspect the peak profiles.

	- estimate_background, for calculating signal to noise ratios from
	                       the indexed peaks.

	- render_hkl, for turning reflection lists into pretty graphics.


And, because I'm so nice, included at no extra cost is:

	- hdfsee, a simple viewer for images stored in HDF5 format.

There is also a big folder of scripts for achieving many related tasks.

CrystFEL mostly works with images stored in HDF5 format, unit cell and atomic
coordinate data in PDB format, and reflection lists in plain text format (i.e.
not MTZ).

For documentation on the individual programs and topics, see the files inside
the "doc" directory.


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

See the "INSTALL" file for the generic instructions on how to use the build
system.  In short, it's

$ ./configure
$ make
$ sudo make install

You might want to substitute something based on one of the following for the
first step:

$ ./configure --enable-opencl
$ ./configure --with-hdf5=/some/strange/location
$ ./configure --with-libtiff=/some/strange/location
$ ./configure --with-gsl=/some/strange/location
$ ./configure --disable-gtk

If you're compiling on Mac OS X, where GTK, libPNG and libTIFF seem to be much
harder to come by, disable lots of things:

$ ./configure --disable-gtk --disable-png --disable-libtiff

If you get a screen full of errors of the following form:
<stuff>: undefined reference to `cblas_<something>'
Add "--enable-gsl-fudge" to your configuration parameters.



Program name
------------

There seems to be a tendency to capitalise all the letters in the names of
programs in scientific publications.  It's not 1970 any more, and programs can
have capitalisation any way we choose, not just all capitals.

The name for the overall software suite is "CrystFEL", with this being the only
acceptable capitalisation.  The individual programs should always be referred to
with all letters in lower case, exactly the same as the names of the binaries.
Put the names in quotes if this sounds strange to you.  The only exception is if
the name of the program comes at the start of a sentence, or in a title, or
similar position where a word would normally be capitalised.

In most cases, it will be more appropriate to refer to the overall suite than to
one of its constituent programs.

The following are NOT acceptable forms: "CRYSTFEL", "crystFEL", "Crystfel",
"INDEXAMAJIG" and "PATTERN_SIM".

In addition, CrystFEL is made up of "programs", not "routines" nor "procedures".
(The "programs" in turn are made up from "routines" and "procedures", but unless
you are exploring the source code, there's no need for you to know about that).

I hope you can forgive me for being fussy about how my work is referred to in
publications and talks.