Change the g2 example to reflect the further development of the xpcs routines.
In xpcs, return a nan-handled result.
In wrapping, include a pass-through for columns to unwrap_plan.
In shape, change the way inputs are checked and cast. Probably at some point this type-checking idiom will migrate to the other modules.
In conditioning: add a new function, sort_configurations, which attempts to automatically sort an array of weights into self-similar configurations. This is useful for an experiment like the barker code imaging, where instability in the endstation/beam alignment led to periodic drift between speckle pattern configurations.

In io and propagate: improved type checking along the lines of the shapes module
In crosscorr: move to fftw if available
In phasing: move to fftw if available
In symmetry_microscope: move to fftw if available for cpu; for gpu, find some big speedups through better kernel design and workgroup usage. This probably broke some stuff...
In gpu: allow a "local" kwarg for _kexec. In complete passthrough for the various _cl_ functions.
New kernels for faster symmetry microscope using gpu
Update README for networkx and python-louvain
In conditioning, update sort_configurations to accept 3d data. If 3d data is input, put all frames through the pairwise_covariances routine in crosscorr
In crosscorr, unify the cpu and gpu code paths for pairwise covariances. The gpu code path was previously in phasing for some reason
In propagate, update cpu code path to use fftw if available. Fix bugs uncovered by unit testing.
In shape, fix a stupid bug in the way rotated indices are calculated
Fix some bugs in the imaging_backend and in propagate during testing of the fth web app
Improve the speed of the domain generator. On the cpu path, move to FFTW when available. On the gpu path, re-write some kernels to be more efficient (in particular, use fewer memory transfers). Change the way the bias is calculated from x-x**3 to tanh(x)