Skip to main content

Python interface to libsequence

Project description

This package provides Python bindings for the C++11 library 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.

Build status

Master branch:

Travis CI Build Status (master branch)

Development branch:

Travis CI Build Status (dev branch)

Requirements:

  • 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.

The recommended method for installing libsequence is bioconda. If you do not use that system, then you should install libsequence from source.

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.

Changelog (rough)

  • 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

Installation:

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:

$ 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

Unit testing:

$ ./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

Documentation:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pylibseq-0.1.9.post0.tar.gz (380.3 kB view details)

Uploaded Source

File details

Details for the file pylibseq-0.1.9.post0.tar.gz.

File metadata

  • Download URL: pylibseq-0.1.9.post0.tar.gz
  • Upload date:
  • Size: 380.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pylibseq-0.1.9.post0.tar.gz
Algorithm Hash digest
SHA256 cf48915f0a3b3392551554d33aaaf5b089a2ac6e8cff3bb1f86b22d66dc6fbd3
MD5 18dcd1aab94ec16c2f433aa0e18abc12
BLAKE2b-256 728b434246de8ea68d58a51cbe43e3e44d94fb51eb1023f5564b09a4b4f80e09

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page