aboutsummaryrefslogtreecommitdiff
path: root/julia/CrystFEL/src/CrystFEL.jl
blob: 8663701496dcefa8aa93485cae0891eb382521b6 (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
"""
    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, translategroup!

include("peaklist.jl")
using .PeakLists
export PeakList

include("reflists.jl")
using .RefLists
export RefList, loadreflist
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

include("millepede.jl")
using .Millepede
export Mille

include("peaksearch.jl")
using .PeakSearch
export zaefpeaks, peakfinder8, peakfinder9

end  # of module