# Python module for binary_c Coverage:  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.