aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2011-06-16 17:53:28 +0200
committerThomas White <taw@physics.org>2012-02-22 15:27:28 +0100
commit34b21127ea75e6a714a6c04a09f226180b2eb541 (patch)
treedb5d75b4365cbbda4728f0d512d24abcdd3ece88
parentaa4d05d94275baa8c87acc6343a23d16f1877b24 (diff)
Move documentation to manpages
-rw-r--r--Makefile.am12
-rw-r--r--Makefile.in89
-rw-r--r--doc/0-INDEX22
-rw-r--r--doc/man/crystfel_geometry.1 (renamed from doc/geometry.txt)13
-rw-r--r--doc/man/indexamajig.1 (renamed from doc/indexamajig.txt)51
-rw-r--r--doc/man/pattern_sim.1 (renamed from doc/pattern_sim.txt)27
-rw-r--r--doc/man/process_hkl.1 (renamed from doc/process_hkl.txt)31
-rw-r--r--doc/quickstart.txt5
-rw-r--r--doc/symmetry.txt56
9 files changed, 151 insertions, 155 deletions
diff --git a/Makefile.am b/Makefile.am
index db70f378..5b71af1e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -151,11 +151,11 @@ crystfel_DATA = data/diffraction.cl data/defs.h data/hdfsee.ui
EXTRA_DIST += $(crystfel_DATA)
+man_MANS = doc/man/indexamajig.1 doc/man/process_hkl.1 doc/man/pattern_sim.1 \
+ doc/man/crystfel_geometry.1
+
crystfeldocdir = $(docdir)
-crystfeldoc_DATA = doc/geometry.txt doc/indexamajig.txt doc/pattern_sim.txt \
- doc/process_hkl.txt doc/symmetry.txt \
- doc/twin-calculator.pdf \
- doc/0-INDEX doc/examples/lcls-dec.geom \
+crystfeldoc_DATA = doc/twin-calculator.pdf doc/examples/lcls-dec.geom \
doc/examples/lcls-dec.beam \
doc/examples/lcls-june-r0013-r0128.geom \
doc/examples/lcls-june.beam \
@@ -165,9 +165,7 @@ crystfeldoc_DATA = doc/geometry.txt doc/indexamajig.txt doc/pattern_sim.txt \
doc/examples/cspad-feb2011.geom \
doc/examples/lcls-cxi-9keV.beam
-EXTRA_DIST += doc/geometry.txt doc/indexamajig.txt doc/pattern_sim.txt \
- doc/process_hkl.txt doc/symmetry.txt doc/twin-calculator.pdf \
- doc/0-INDEX doc/examples/lcls-dec.geom \
+EXTRA_DIST += doc/twin-calculator.pdf doc/examples/lcls-dec.geom \
doc/examples/lcls-june-r0013-r0128.geom \
doc/examples/lcls-xpp-estimate.geom doc/examples/simple.geom \
doc/examples/lcls-dec.beam doc/examples/lcls-june.beam \
diff --git a/Makefile.in b/Makefile.in
index 584d4ace..5a7d3fd4 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -82,8 +82,9 @@ CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@BUILD_HDFSEE_TRUE@am__EXEEXT_1 = src/hdfsee$(EXEEXT)
@BUILD_CUBEIT_TRUE@am__EXEEXT_2 = src/cubeit$(EXEEXT)
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(crystfeldir)" \
- "$(DESTDIR)$(crystfeldocdir)" "$(DESTDIR)$(scriptdir)"
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
+ "$(DESTDIR)$(crystfeldir)" "$(DESTDIR)$(crystfeldocdir)" \
+ "$(DESTDIR)$(scriptdir)"
@HAVE_OPENCL_TRUE@am__EXEEXT_3 = tests/gpu_sim_check$(EXEEXT)
PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
am__dirstamp = $(am__leading_dot)dirstamp
@@ -341,6 +342,9 @@ am__nobase_list = $(am__nobase_strip_setup); \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(man_MANS)
DATA = $(crystfel_DATA) $(crystfeldoc_DATA) $(script_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
@@ -603,9 +607,7 @@ EXTRA_DIST = configure m4/gnulib-cache.m4 tests/first_merge_check \
src/symmetry.h src/povray.h src/index-priv.h src/geometry.h \
src/render_hkl.h src/stream.h src/thread-pool.h \
src/beam-parameters.h src/post-refinement.h src/hrs-scaling.h \
- src/reflist.h $(crystfel_DATA) doc/geometry.txt \
- doc/indexamajig.txt doc/pattern_sim.txt doc/process_hkl.txt \
- doc/symmetry.txt doc/twin-calculator.pdf doc/0-INDEX \
+ src/reflist.h $(crystfel_DATA) doc/twin-calculator.pdf \
doc/examples/lcls-dec.geom \
doc/examples/lcls-june-r0013-r0128.geom \
doc/examples/lcls-xpp-estimate.geom doc/examples/simple.geom \
@@ -712,11 +714,11 @@ tests_integration_check_SOURCES = tests/integration_check.c src/peaks.c \
INCLUDES = "-I$(top_srcdir)/data"
crystfeldir = $(datadir)/crystfel
crystfel_DATA = data/diffraction.cl data/defs.h data/hdfsee.ui
+man_MANS = doc/man/indexamajig.1 doc/man/process_hkl.1 doc/man/pattern_sim.1 \
+ doc/man/crystfel_geometry.1
+
crystfeldocdir = $(docdir)
-crystfeldoc_DATA = doc/geometry.txt doc/indexamajig.txt doc/pattern_sim.txt \
- doc/process_hkl.txt doc/symmetry.txt \
- doc/twin-calculator.pdf \
- doc/0-INDEX doc/examples/lcls-dec.geom \
+crystfeldoc_DATA = doc/twin-calculator.pdf doc/examples/lcls-dec.geom \
doc/examples/lcls-dec.beam \
doc/examples/lcls-june-r0013-r0128.geom \
doc/examples/lcls-june.beam \
@@ -1085,6 +1087,44 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+install-man1: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ { for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ test -z "$$files" || { \
+ echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
install-crystfelDATA: $(crystfel_DATA)
@$(NORMAL_INSTALL)
test -z "$(crystfeldir)" || $(MKDIR_P) "$(DESTDIR)$(crystfeldir)"
@@ -1374,6 +1414,19 @@ check-TESTS: $(TESTS)
else :; fi
distdir: $(DISTFILES)
+ @list='$(MANS)'; if test -n "$$list"; then \
+ list=`for p in $$list; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+ if test -n "$$list" && \
+ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
+ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+ echo " typically \`make maintainer-clean' will remove them" >&2; \
+ exit 1; \
+ else :; fi; \
+ else :; fi
$(am__remove_distdir)
test -d "$(distdir)" || mkdir "$(distdir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -1551,10 +1604,10 @@ distcleancheck: distclean
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) check-TESTS
check: check-recursive
-all-am: Makefile $(PROGRAMS) $(DATA) config.h
+all-am: Makefile $(PROGRAMS) $(MANS) $(DATA) config.h
installdirs: installdirs-recursive
installdirs-am:
- for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(crystfeldir)" "$(DESTDIR)$(crystfeldocdir)" "$(DESTDIR)$(scriptdir)"; do \
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(crystfeldir)" "$(DESTDIR)$(crystfeldocdir)" "$(DESTDIR)$(scriptdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
@@ -1611,7 +1664,7 @@ info: info-recursive
info-am:
install-data-am: install-crystfelDATA install-crystfeldocDATA \
- install-scriptDATA
+ install-man install-scriptDATA
install-dvi: install-dvi-recursive
@@ -1627,7 +1680,7 @@ install-info: install-info-recursive
install-info-am:
-install-man:
+install-man: install-man1
install-pdf: install-pdf-recursive
@@ -1659,7 +1712,9 @@ ps: ps-recursive
ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-crystfelDATA \
- uninstall-crystfeldocDATA uninstall-scriptDATA
+ uninstall-crystfeldocDATA uninstall-man uninstall-scriptDATA
+
+uninstall-man: uninstall-man1
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check-am \
ctags-recursive install-am install-strip tags-recursive
@@ -1676,14 +1731,14 @@ uninstall-am: uninstall-binPROGRAMS uninstall-crystfelDATA \
install-crystfeldocDATA install-data install-data-am \
install-dvi install-dvi-am install-exec install-exec-am \
install-html install-html-am install-info install-info-am \
- install-man install-pdf install-pdf-am install-ps \
+ install-man install-man1 install-pdf install-pdf-am install-ps \
install-ps-am install-scriptDATA install-strip installcheck \
installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \
uninstall uninstall-am uninstall-binPROGRAMS \
- uninstall-crystfelDATA uninstall-crystfeldocDATA \
- uninstall-scriptDATA
+ uninstall-crystfelDATA uninstall-crystfeldocDATA uninstall-man \
+ uninstall-man1 uninstall-scriptDATA
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/doc/0-INDEX b/doc/0-INDEX
deleted file mode 100644
index 7bf5aec7..00000000
--- a/doc/0-INDEX
+++ /dev/null
@@ -1,22 +0,0 @@
-Index to the CrystFEL documentation
------------------------------------
-
-quickstart.txt
- Basic usage information and suggested workflow.
-
-indexamajig.txt
-pattern_sim.txt
-process_hkl.txt
- Information about the individual programs and their use.
-
-geometry.txt
- Information about detector geometry description files.
-
-twin-calculator.pdf
- Symmetry tables (in two formats).
-
-symmetry.txt
- How CrystFEL uses symmetry.
-
-examples/
- Contains example geometry files.
diff --git a/doc/geometry.txt b/doc/man/crystfel_geometry.1
index c215d27c..0deb058e 100644
--- a/doc/geometry.txt
+++ b/doc/man/crystfel_geometry.1
@@ -1,5 +1,16 @@
+.\"
+.\" Geometry man page
+.\"
+.\" (c) 2009-2011 Thomas White <taw@physics.org>
+.\"
+.\" Part of CrystFEL - crystallography with a FEL
+.\"
+
+.TH CRYSTFEL\_GEOMETRY 1
+.SH NAME
CrystFEL detector geometry files
---------------------------------
+
+.SH OVERVIEW
The detector geometry is taken from a text file rather than hardcoded into the
program. Programs which care about the geometry (particularly indexamajig,
diff --git a/doc/indexamajig.txt b/doc/man/indexamajig.1
index c7097851..fcb1afc4 100644
--- a/doc/indexamajig.txt
+++ b/doc/man/indexamajig.1
@@ -1,5 +1,20 @@
-indexamajig - bulk indexing and data reduction program
-------------------------------------------------------
+.\"
+.\" indexamajig man page
+.\"
+.\" (c) 2009-2011 Thomas White <taw@physics.org>
+.\"
+.\" Part of CrystFEL - crystallography with a FEL
+.\"
+
+.TH INDEXAMAJIG 1
+.SH NAME
+indexamajig \- bulk indexing and data reduction program
+.SH SYNOPSIS
+.PP
+.B indexamajig
+[options]
+
+.SH DESCRIPTION
The "indexamajig" program takes as input a list of diffraction image files,
currently in HDF5 format. For each image, it attempts to find peaks and then
@@ -14,13 +29,7 @@ indexing, and that you'd like the program to output a list of intensities for
each successfully indexed pattern. Here is what the minimal use might look like
on the command line:
-indexamajig -i mypatterns.lst -j 10 \
- -g mygeometry.geom \
- --indexing=mosflm,dirax --peaks=hdf5 \
- --cell-reduction=reduce \
- -b myxfel..beam \
- -o test.stream -p mycell.pdb \
- --record=integrated
+indexamajig -i mypatterns.lst -j 10 -g mygeometry.geom --indexing=mosflm,dirax --peaks=hdf5 --cell-reduction=reduce -b myxfel..beam -o test.stream -p mycell.pdb --record=integrated
More typical use includes all the above, but might also include a noise or
common mode filter (--filter-noise or --filter-cm respectively) if detector
@@ -34,8 +43,8 @@ a method for estimating the intensities of saturated peaks. It goes in
/processing/hitfinder/peakinfo_saturated, and should be an n*3 two dimensional
array, where the first two columns contain fast scan and slow scan coordinates
(in that order) and the third contains the value which should belong in a peak
-at the given location. The value will be divided by 5 and spread in a small
-cross centred on that location.
+at the given location. The value will be spread in a small cross centred on
+that location.
See doc/geometry for information about how to create a geometry description
file.
@@ -65,9 +74,7 @@ which could not be indexed, you might use
"--record=integrated,peaksifnotindexed" and then use "check-peak-detection" from
the "scripts" folder to visualise the results of the peak detection.
-
-Peak Detection
---------------
+.SH PEAK DETECTION
You can control the peak detection on the command line. Firstly, you can choose
the peak detection method using "--peaks=<method>". Currently, two possible
@@ -96,8 +103,7 @@ You can suppress peak detection altogether for a panel in the geometry file by
specifying the "no_index" value for the panel as non-zero.
-Indexing Methods
-----------------
+.SH INDEXING METHODS
You can choose between a variety of indexing methods. You can choose more than
one method, in which case each method will be tried in turn until the later cell
@@ -111,9 +117,7 @@ have the dirax or ipmosflm binaries in your PATH.
Example: --indexing=dirax,mosflm
-
-Cell Reduction
---------------
+.SH CELL REDUCTION
You can choose from various options for cell reduction with the
"--cell-reduction=" option. The choices are "none", "reduce" and "compare".
@@ -158,8 +162,7 @@ F), you should be careful when using "compare" for the cell reduction, since
be converted to the non-primitive conventional cell from the PDB.
-Tuning CPU affinities for NUMA hardware
----------------------------------------
+.SH TUNING CPU AFFINITIES FOR NUMA HARDWARE
If you are running indexamajig on a NUMA (non-uniform memory architecture)
machine, a performance gain can sometimes be made by preventing the kernel from
@@ -203,16 +206,14 @@ This would dedicate half of the CPUs to one instance, and the other half to the
other.
-A Note about Unit Cell Settings
--------------------------------
+.SH A NOTE ABOUT UNIT CELL SETTINGS
CrystFEL's core symmetry module only knows about one setting for each unit cell.
You must use the same setting. That means that the unique axis (for cells which
have one) must be "c".
-"Gotchas"
----------
+.SH KNOWN BUGS
Don't run more than one indexamajig jobs simultaneously in the same working
directory - they'll overwrite each other's DirAx or MOSFLM files, causing subtle
diff --git a/doc/pattern_sim.txt b/doc/man/pattern_sim.1
index cbbcb749..d53aeae5 100644
--- a/doc/pattern_sim.txt
+++ b/doc/man/pattern_sim.1
@@ -1,13 +1,26 @@
+.\"
+.\" pattern_sim man page
+.\"
+.\" (c) 2009-2011 Thomas White <taw@physics.org>
+.\"
+.\" Part of CrystFEL - crystallography with a FEL
+.\"
+
+.TH PATTERN\_SIM 1
+.SH NAME
+pattern\_sim \- Simulation of nanocrystallographic diffraction patterns
+.SH SYNOPSIS
+.PP
+.B pattern\_sim
+[options]
+
+.SH DESCRIPTION
+
pattern_sim does not know about symmetry, so your input reflection list
(give with "-i") must be expanded. You can do this with:
$ get_hkl -i myfile.hkl -o output.hkl -y mypointgroup -e 1
-
-
-The symmetry of the molecular model (the space group)
------------------------------------------------------
-
get_hkl does not currently understand symmetry, which means you'll have to
expand any molecular model (the PDB) out to P1 to get the correct results. You
can achieve that, for example, by loading it into Mercury, turning on "Packing"
@@ -19,9 +32,5 @@ While on this subject, you might also want to include hydrogens in the model
using something like:
$ echo HYDROGENS APPEND | hgen xyzin model.pdb xyzout model-with-H.pdb
-
-A Note about Unit Cell Settings
--------------------------------
-
Please be sure to read the "Note about Unit Cell Settings" in the documentation
for indexamajig.
diff --git a/doc/process_hkl.txt b/doc/man/process_hkl.1
index 3c5e40f9..6c626e31 100644
--- a/doc/process_hkl.txt
+++ b/doc/man/process_hkl.1
@@ -1,5 +1,20 @@
-process_hkl - data scaling and merging program
-----------------------------------------------
+.\"
+.\" process_hkl man page
+.\"
+.\" (c) 2009-2011 Thomas White <taw@physics.org>
+.\"
+.\" Part of CrystFEL - crystallography with a FEL
+.\"
+
+.TH PROCESS\_HKL 1
+.SH NAME
+process\_hkl \- Monte Carlo merging program
+.SH SYNOPSIS
+.PP
+.B process\_hkl
+-i mypatterns.stream -o mydata.hkl -y mypointgroup [options]
+
+.SH DESCRIPTION
This program takes as input the data stream from "indexamajig". It merges the
many individual intensities together to form a single list of reflection
@@ -9,9 +24,7 @@ Typical usage is of the form:
$ process_hkl -i mypatterns.stream -o mydata.hkl -y mypointgroup
-
-How to choose the point group
------------------------------
+.SH CHOICE OF POINT GROUP FOR MERGING
One of the main features of serial crystallography is that the orientations of
individual crystals are random. That means that the orientation of each
@@ -34,13 +47,5 @@ this information, process_hkl will try to resolve the remaining orientational
ambiguities to get from the apparent symmetry to the true symmetry (given with
"-y"). Currently, it won't do a very good job of it.
-Commit number 5cdcaad6277c on the 13th of October 2010 altered indexamajig such
-that it always finds a right-handed unit cell. That means that no ambiguity due
-to inversion exists in streams produced by versions later than that. For
-streams produced by copies of indexamajig older than that, you DO need to use
-the corresponding holohedral Laue class (not point group) as the apparent
-symmetry (with -a). However, since the ambiguity resolution used by process_hkl
-doesn't really work, this detail is somewhat academic.
-
The document twin-calculator.pdf contains more detailed information about this
issue, as well as tables which contain all the required information.
diff --git a/doc/quickstart.txt b/doc/quickstart.txt
deleted file mode 100644
index 5af7120e..00000000
--- a/doc/quickstart.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Quick start guide for CrystFEL
-------------------------------
-
-So, you have a folder full of thousands of diffraction patterns, and you want to
-analyse them. You've come to the right place.
diff --git a/doc/symmetry.txt b/doc/symmetry.txt
deleted file mode 100644
index c190f8ee..00000000
--- a/doc/symmetry.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-How CrystFEL handles symmetry
------------------------------
-
-Most programs in CrystFEL understand point group symmetry. The exception is
-"get_hkl", which you can read about below. You give the point group following
-the "-y" option to the programs.
-
-Please read doc/process_hkl for important information on how symmetry is used
-during the indexing and merging procedures. It's important to understand how
-this works before, for example, trying to merge a dataset.
-
-Symmetry definitions are included in src/symmetry.c. Point group definitions
-are required for merging and the display of merged results, but space groups are
-not taken into account since merging does not care about systematic absences -
-as far as CrystFEL is concerned, systematic absences are just measurements
-which happen to have values of zero. Each space group belongs to exactly one
-point group, which you can look up in the International Tables for X-Ray
-Crystallography. Alternatively, "twin-calculator.pdf" in the same directory as
-this file lists all the space groups according to point group, Laue class and
-holohedry.
-
-
-Adding a new point group
-------------------------
-
-Point groups are being added here as they are required, so it's likely that the
-exact one you want hasn't been added yet. Here's how to add a new one by
-editing src/symmetry.c.
-
-First, expand the check_cond() function to include a description of the
-asymmetric reciprocal unit cell for the point group. Every reflection in the
-whole of reciprocal space must map onto exactly one reflection in the asymmetric
-unit cell so defined. The asymmetric cell is usually defined with positive h, k
-and l, but it doesn't really matter. Working out the required condition means
-visualising the cell and taking care to properly handle situations such as the
-(000) reflection. Get this right, otherwise you'll go crazy when it breaks in
-weird ways.
-
-Next, expand the num_general_equivs() function. Given a point group, this
-function must return the number of equivalent reflections for a general
-reflection, including the input reflection. High-symmetry reflections (usually
-ones with zeroes in their indices) have fewer equivalents, but the num_equivs()
-function will work this out for you.
-
-Finally, add the new point group to the get_general_equiv() function. This
-function takes a set of Miller indices, a point group and an index "n", and
-returns (by reference) the indices of the "n"th equivalent reflection. You just
-have to worry about the general position, because get_equiv() will work out the
-special positions for you. get_general_equiv() must return the original indices
-when idx=0.
-
-If you want the new point group to be used for simulation on the GPU, you will
-also need to modify src/diffraction-gpu.c and data/diffraction.cl. Choose a
-simple capitalised name for the point group and add it to the list of OpenCL
-preprocessor definitions in setup_gpu(). Then add a corresponding list of
-equivalents following the established pattern in molecule_factor(). That's it.