forked from tskit-dev/tsinfer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
105 lines (93 loc) · 3.06 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import os
import platform
from setuptools import setup, Extension
from setuptools.command.build_ext import build_ext as _build_ext
IS_WINDOWS = platform.system() == "Windows"
# Obscure magic required to allow numpy be used as an 'setup_requires'.
class build_ext(_build_ext):
def finalize_options(self):
super(build_ext, self).finalize_options()
# Prevent numpy from thinking it is still in its setup process:
__builtins__.__NUMPY_SETUP__ = False
import numpy
self.include_dirs.append(numpy.get_include())
libdir = "lib"
tskroot = os.path.join(libdir, "subprojects", "tskit")
tskdir = os.path.join(tskroot, "tskit")
kasdir = os.path.join(libdir, "subprojects", "kastore")
includes = [libdir, tskroot, tskdir, kasdir]
tsi_source_files = [
"ancestor_matcher.c",
"ancestor_builder.c",
"object_heap.c",
"tree_sequence_builder.c",
"avl.c",
]
# We're not actually using very much of tskit at the moment, so
# just build the stuff we need.
tsk_source_files = ["core.c"]
kas_source_files = ["kastore.c"]
sources = (
["_tsinfermodule.c"]
+ [os.path.join(libdir, f) for f in tsi_source_files]
+ [os.path.join(tskdir, f) for f in tsk_source_files]
+ [os.path.join(kasdir, f) for f in kas_source_files]
)
libraries = []
if IS_WINDOWS:
# Needed for generating UUIDs in tskit
libraries.append("Advapi32")
_tsinfer_module = Extension(
"_tsinfer",
sources=sources,
# Enable asserts by default.
undef_macros=["NDEBUG"],
extra_compile_args=["-std=c99"],
include_dirs=includes,
libraries=libraries,
)
with open("README.rst") as f:
long_description = f.read()
setup(
name="tsinfer",
description="Infer tree sequences from genetic variation data.",
long_description=long_description,
packages=["tsinfer"],
author="Jerome Kelleher",
author_email="[email protected]",
url="http://pypi.python.org/pypi/tsinfer",
entry_points={"console_scripts": ["tsinfer=tsinfer.__main__:main"]},
setup_requires=["setuptools_scm", "numpy"],
cmdclass={"build_ext": build_ext},
install_requires=[
"numpy",
"six",
"tqdm",
"humanize",
"daiquiri",
"tskit>=0.2.3",
"numcodecs>=0.6",
"zarr>=2.2",
"lmdb",
"sortedcontainers",
"attrs",
],
ext_modules=[_tsinfer_module],
keywords=[],
license="GNU GPLv3+",
classifiers=[
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
"Development Status :: 3 - Alpha",
"Environment :: Other Environment",
"Intended Audience :: Science/Research",
"Operating System :: POSIX",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Bio-Informatics",
],
use_scm_version={"write_to": "tsinfer/_version.py"},
)