| Documentation |
|---|
Install NeXLSpectrum using the Julia package manager
julia> ]add NeXLSpectrumor
julia> using Pkg
julia> Pkg.add("NeXLSpectrum")NeXLSpectrum is a library of tools for manipulating EDS spectrum within the
NeXL framework. NeXLSpectrum depends on NeXLUncertainties, NeXLCore and
NeXLMatrixCorrection and loading NeXLSpectrum will also make these
libraries available.
In addition, NeXLSpectrum makes extensive use of the third-party libraries
DataFrames for data tables and Gadfly for plotting. You will also want to
makes these libraries available.
julia> ]add DataFrames, GadflyPrimarily, NeXLSpectrum
-
Implements the
Spectrumtype to represent individual EDS spectra- Reads
Spectrumobjects from disk files (or other streams) in EMSA, Bruker and ASPEX formats - Writes
Spectrumobjects to a disk file in EMSA format
- Reads
-
Provides utilities and other low level tools to interogate and manipulate
Spectrumobjects -
Implements the
HyperSpectrumtype to represent hyper-spectra (linescan, image, cube, ...)- The individual pixels in a hyper-spectrum are visible as
Spectrumobjects - Reads
HyperSpectrumobjects from LISPIX-style RPL/RAW files - Writes
HyperSpectrumobjects to RPL/RAW files
- The individual pixels in a hyper-spectrum are visible as
-
Provides data types to define detector properties
-
Extends
Gadfly.jlto plot spectra and spectrum-related items -
Provides algorithms to perform Schamber-style filter-fitting of spectra
- Implements a basic weighted LLSQ fit algorithm
- Fits characteristic, escape, Compton and other features
- Implements a 'vector-based' quick-quant algorithm for processing hyper-spectra
- Implements a basic weighted LLSQ fit algorithm
Because Julia uses a just-in-time compiler that recompiles libraries each time Julia
is restarted and the NeXL libraries are quite large, the first time you perform an
operation it can be quite slow. Subsequent calls are much faster. Fortunately, there
is a way around this. The PackageCompiler library can be used to build a version of
Julia in which NeXLSpectrum and the libraries on which it depends are build into the
language much like the base libraries. I recommend that you use the PackageCompiler
to rebuild Julia each time you update the packages (using julia> ]up) or upgrade
to a new version of Julia.
In Windows, this operation looks like:
julia> using NeXLSpectrum, DataFrames, Gadfly # Load the basic libraries
julia> using PackageCompiler
julia> PackageCompiler.create_sysimage(
[ "Gadfly", "DataFrames", "BoteSalvatICX", "NeXLUncertainties", "NeXLCore", "NeXLMatrixCorrection", "NeXLSpectrum" ];
sysimage_path=joinpath(homedir(), ".julia", "NeXLSysimage.dll"),
precompile_execution_file=joinpath(pkgdir(NeXLSpectrum),"scripts", "precompile.jl"))This operation may take tens-of-minutes to complete but will be worth the effort in terms of saved time later on.
In other operating systems, you will want to change the extension on the filename in the sysimage_path.
This command creates a sysimage containing the NeXL libraries along with DataFrames and Gadfly. You will now
have to tell Julia to use this sysimage. I usually create multiple links to Julia that both use the default sysimage
and the NeXLSysimage. The sysimage is selected using the -J command line option. In Windows, this looks like:
## To use the sysimage, start Julia with the `-J` option
# > julia -J"C:\Users\username\.julia\NeXLSysimage.dll"
You can edit the properties of the link used to start Julia to include the -J option. While you are at it,
you might also want to add the -t option to start Julia with multiple threads. For example,
## To use the sysimage, start Julia with the `-J` option
# > julia -J"C:\Users\username\.julia\NeXLSysimage.dll" -t 4
will start Julia with the sysimage and 4 threads. Usually, selecting the number of threads equal to the number of
cores (not HyperThreads) will produce the optimal performance.
