Installation
C++ Build
Dependencies
Library |
Purpose |
|---|---|
Non-linear least squares (Gibbs construction, statistical mixture) |
|
YAML configuration parsing |
|
Multidimensional (Delaunay) interpolation |
|
Numerical integration (header-only, bundled with the module) |
|
Unit tests only |
On Debian/Ubuntu:
apt-get install g++ make libceres-dev libyaml-cpp-dev libcgal-dev libgtest-dev
On macOS, via Homebrew:
brew install ceres-solver gsl cgal
On Windows, use Cygwin. Ceres can be installed following the steps here; yaml-cpp must be built from source:
git clone https://github.com/jbeder/yaml-cpp.git
cd yaml-cpp
mkdir build && cd build
cmake -DYAML_BUILD_SHARED_LIBS=OFF ..
make
make DESTDIR=/desired/path/to/installation install
and CGAL installed via vcpkg (vcpkg install cgal).
Building from source
git clone https://gitlab.com/nsf-muses/module-cmf/eos-synthesis
cd eos-synthesis
Before compiling, run the tests to ensure all dependencies are correctly installed:
cd test
bash test_all.sh
If all tests pass, compile the code:
cd ../src
make
The compiled binary is src/synthesis.
Docker
A pre-built image is available on the MUSES GitLab registry:
docker pull registry.gitlab.com/nsf-muses/eos-synthesis:latest
Create directories for input and output files:
mkdir -p input output
docker run -it --rm -v $(pwd)/input:/opt/input -v $(pwd)/output:/opt/output \
registry.gitlab.com/nsf-muses/eos-synthesis:latest ./synthesis
The -v options mount your local input and output directories as volumes in the
container. Make sure config.yaml and the input EoS files are in the input directory
before running, and run the pre/post-processing scripts described in the
Quickstart as needed.
To build the image locally from the provided Dockerfile instead:
docker build -t eos-synthesis .
Python utilities (optional)
The config generation, validation, and postprocessing scripts require Python:
pip install -r requirements.txt
This installs openapi-core, pyyaml, pandas, and the MUSES porter and
compose libraries used by postprocess.py.