diff options
Diffstat (limited to 'julia/CrystFEL/src/CrystFEL.jl')
-rw-r--r-- | julia/CrystFEL/src/CrystFEL.jl | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/julia/CrystFEL/src/CrystFEL.jl b/julia/CrystFEL/src/CrystFEL.jl new file mode 100644 index 00000000..897d2614 --- /dev/null +++ b/julia/CrystFEL/src/CrystFEL.jl @@ -0,0 +1,94 @@ +""" + CrystFEL + +Julia bindings for CrystFEL data structures and routines + +## Quick start +```julia + using CrystFEL + ... +``` +""" +module CrystFEL + +libcrystfel = "libcrystfel.so" + +# Configure libcrystfel to use Julia's memory management. This is needed so +# that the Julia GC knows about the memory we allocate via libcrystfel +# routines. Otherwise, potentially very large objects will be kept hanging +# around in memory because Julia thinks it's using a very small amount of +# memory, and rarely runs the GC. In the case of image structures, the +# difference between apparent and true memory use can be a factor of a million! +function __init__() + @ccall libcrystfel.set_mm_funcs(cglobal(:jl_malloc)::Ptr{Cvoid}, + cglobal(:jl_free)::Ptr{Cvoid}, + cglobal(:jl_calloc)::Ptr{Cvoid}, + cglobal(:jl_realloc)::Ptr{Cvoid})::Cint +end + +include("cell.jl") +using .UnitCells +export UnitCell, LatticeType, CenteringType, UniqueAxis +export TriclinicLattice, MonoclinicLattice, OrthorhombicLattice +export TetragonalLattice, HexagonalLattice, RhombohedralLattice, CubicLattice +export PrimitiveCell, ACenteredCell, BCenteredCell, CCenteredCell +export BodyCenteredCell, FaceCenteredCell, RhombohedralCell, RhombohedralCellOnHexagonalAxes +export NoUniqueAxis, UnknownUniqueAxis, UniqueAxisA, UniqueAxisB, UniqueAxisC +export rotatecell + +include("detgeom.jl") +using .DetGeoms +export Panel, DetGeom + +include("symmetry.jl") +using .Symmetry +export SymOpList, asymmetricindices + +include("datatemplates.jl") +using .DataTemplates +export DataTemplate, loaddatatemplate, wavelength, cameralength +export translategroup!, rotategroup! + +include("peaklist.jl") +using .PeakLists +export PeakList + +include("reflists.jl") +using .RefLists +export RefList, loadreflist, savereflist! +export Reflection, MergedReflection, UnmergedReflection + +include("crystal.jl") +using .Crystals +export Crystal, InternalCrystal + +include("image.jl") +using .Images +export Image + +include("diffcalc.jl") +using .DiffractionCalculations +export predictreflections, calculatepartialities! +export PartialityModel, UnityModel, XSphereModel, OffsetModel, RandomModel, GeneralGaussianModel + +include("indexing.jl") +using .Indexing +export Indexer, index + +include("streams.jl") +using .Streams +export Stream, chunkwrite, chunkread, allcrystals + +include("millepede.jl") +using .Millepede +export Mille + +include("peaksearch.jl") +using .PeakSearch +export zaefpeaks, peakfinder8, peakfinder9 + +include("mergeutils.jl") +using .MergeUtils +export @addmeasurement, cstddev, mergereflections + +end # of module |