Skip to content
Snippets Groups Projects
David Hendriks's avatar
a
David Hendriks authored
c23c3f66
History

Python module for binary_c

Coverage: alt text Based on a original work by Jeff Andrews (can be found in old_solution/ directory) updated and extended for Python3 by Robert Izzard, David hendriks

Requirements

To run this code you need to at least have installations of:

  • Python3
  • binary_c version 2.1+

And the following python packages (which will get installed automatically when installing with pip):

  • numpy
  • pytest
  • h5py
  • pathos
  • pandas
  • astropy
  • matplotlib

Environment variables

Before compilation you need to have certain environment variables:

Required:

  • BINARY_C should point to the root directory of your binary_c installation
  • LD_LIBRARY_PATH should include $BINARY_C/src and whatever directories are required to run binary_c (e.g. locations of libgsl, libmemoize, librinterpolate, etc.)
  • LIBRARY_PATH should include whatever directories are required to build binary_c (e.g. locations of libgsl, libmemoize, librinterpolate, etc.)

Build instructions

First, make sure you have built binary_c (See $BINARY_C/doc/binary_c2.pdf section: installation for all the installation instructions for binary_c)) and that it functions correctly.

Installation via PIP:

To install this package via pip:

pip install binarycpython

Installation from source:

For this it is best to set up a virtual environment for this. Activate the virtualenvironment and enter the downloaded version of the repo.

Then run

python setup.py clean && python setup.py build --force && python setup.py sdist && pip install --ignore-installed --no-dependencies -v dist/binarycpython-<version of this package>.tar.gz

This will install this package into the virtual environment. Making changes to the sourcecode can be "installed" into the virtual env with the same command.

Examples

See the examples/ directory for example script. The documentation contains example pages as well.

Usage notes

Make sure that with every change/recompilation you make in binary_c, you also rebuild this package.

Documentation

Look in the doc/ directory. Within the build/html/ there is the html version of the documentation.

FAQ/Issues:

Building issues with binary_c itself:

  • see the documentation of binary_c (in doc/).
  • If you have MESA installed, make sure that the $MESASDK_ROOT/bin/mesasdk_init.sh is not sourced. It comes with its own version of some programs, and those can interfere with installing.

When Pip install fails:

  • Run the installation with -v and/or --log <logfile> to get some more info
  • If gcc throws errors like gcc: error: unrecognized command line option ‘-ftz’; did you mean ‘-flto’?, this might be due to that the python on that system was built with a different compiler. It then passes the python3.6-config --cflags to the binarycpython installation, which, if done with gcc, will not work. Try a different python3.6. I suggest using pyenv to manage python versions. If installing a version of python with pyenv is not possible, then try to use a python version that is avaible to the machine that is built with the same compiler as binary_c was built with.
  • if pip installation results in No files/directories in /tmp/pip-1ckzg0p9-build/pip-egg-info (from PKG-INFO), try running it verbose (-v) to see what is actually going wrong.
  • If pip terminates with the error FileNotFoundError: [Errno 2] No such file or directory: '<...>/binary_c-config' Then make sure that the path to your main $BINARY_C directory is set correctly.

Other:

  • When running jupyter notebooks, make sure you are running the jupyter installation from the same virtual environment.
  • When the output of binary_c seems to be different than expected, you might need to rebuild this python package. Everytime binary_c is compiled, this package needs to be rebuilt too.