Python interface to libsequence
The bindings are implemented using Cython.
This package serves two roles:
- It provides a means of using some of the more widely-used bits of libsequence within the Python language
- The unit tests of this package also serve as unit tests for libsequence.
What this package does not (currently) do:
- provide an interface for I/O operations. Python I/O and C++ I/O are fundamentally very different. Bridging the gap requires either adding features to Cython and/or adding modules to this package that depend on the boost Python interface, which would add an additional C++ dependency to this package.
- libsequence must be installed on your system. Currently, this package requires the dev branch of libsequence
- TBB must be installed on your system.
- Python 2 or Python 3
- An up-to-date C++ compiler that is C++11 compatible via the flag -std=c++11. Roughly, this means GCC >= 4.8 and clang >= 3.5.
..note:: If you installing from GitHub, then Cython is a dependency.
If you want to modify the package, you will need Cython installed via your favorite Python package manager.
The supported platforms are Linux and OS X.
- 0.1.9: Made memory management more robust: more unique_ptr instead of raw pointers. Cleanup __dealloc__ functions in extension types. Package now sets __version__. Class names are now “Pythonic” (and identical to the corresponding type names from libsequence) due to aliasing the C++ names from libsequence. Change from distutils to setuptools. Documentation fixes. Expose haplotype diversity and number of haplotype statistics. First (very alpha) release of pymsstats.
- 0.1.8: made sure C++ objects/fxns are declared “nogil”. Raw pointers replaced with C++’s unique_ptr.
- 0.1.7: improvements to build system. Add option to build from GitHub.
- 0.1.6: update to libsequence 1.8.9. Add –use-cython option to setup.py
The latest release of the package is available via PyPi, and can be installed with your favorite Python package manager:
$ pip install --upgrade pylibseq
Or, you may install from GitHub:
The GitHub version does not contain the .cpp files generated by Cython. You need to generate those!
$ git clone http://github.com/molpopgen/pylibseq $ cd pylibseq
$ ./configure $ sudo pip install . --install-option=--use-cython
You may also install from GitHub using pip:
$ pip install git+git://github.com/molpopgen/pylibseq --install-option=--use-cython
If you have libsequence in a “funny location” (e.g., something other that /usr/local):
$ CPPFLAGS=-I/path/to/libsequence/headers LDFLAGS=-L/path/to/libsequence/library sudo python setup.py install --use-cython
For example, if libsequence is installed into /opt:
$ CPPFLAGS=-I/opt/include LDFLAGS=-L/opt/lib sudo python setup.py install
$ ./configure $ python setup.py build_ext -i --use-cython $ python -m unittest discover unit_test
Modifying the package
$ python setup.py build_ext -i --use-cython