Skip to content
Snippets Groups Projects
README.md 3.9 KiB
Newer Older
David Hendriks's avatar
David Hendriks committed
# Python module for binary_c
David Hendriks's avatar
David Hendriks committed
Coverage: ![alt text](coverage.svg)
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
David Hendriks's avatar
David Hendriks committed
To run this code you need to at least have installations of:
David Hendriks's avatar
David Hendriks committed

And the following python packages (which will get installed automatically when installing with pip):
- numpy
- pytest
- h5py
- pathos
- pandas
- astropy
- matplotlib
David Hendriks's avatar
David Hendriks committed
Before compilation you need to have certain environment variables:
David Hendriks's avatar
David Hendriks committed
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.)
David Hendriks's avatar
David Hendriks committed
------------------
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:

David Hendriks's avatar
David Hendriks committed
```
David Hendriks's avatar
David Hendriks committed
pip install binarycpython
David Hendriks's avatar
David Hendriks committed
```
David Hendriks's avatar
David Hendriks committed
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
David Hendriks's avatar
David Hendriks committed
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
David Hendriks's avatar
David Hendriks committed
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. 
David Hendriks's avatar
David Hendriks committed
Examples
--------
See the examples/ directory for example script. The documentation contains example pages as well. 
David Hendriks's avatar
David Hendriks committed
Usage notes
-----------
Make sure that with every change/recompilation you make in `binary_c`, you also rebuild this package. 
David Hendriks's avatar
David Hendriks committed
Documentation
-------------
Look in the doc/ directory. Within the build/html/ there is the html version of the documentation. 
David Hendriks's avatar
David Hendriks committed
FAQ/Issues:
David Hendriks's avatar
David Hendriks committed
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.  

David Hendriks's avatar
David Hendriks committed
When Pip install fails:
David Hendriks's avatar
David Hendriks committed
- Run the installation with `-v` and/or `--log <logfile>` to get some more info
David Hendriks's avatar
David Hendriks committed
- 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. 
David Hendriks's avatar
David Hendriks committed
- 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.
David Hendriks's avatar
David Hendriks committed
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.