-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.py
More file actions
60 lines (54 loc) · 1.76 KB
/
Copy pathsetup.py
File metadata and controls
60 lines (54 loc) · 1.76 KB
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
#!/usr/bin/env python3
"""Setup script for pyrion C extensions.
All package metadata is in pyproject.toml - this file only handles C extensions.
"""
from setuptools import setup, Extension
import numpy as np
# C extension modules with aggressive optimization flags for genomics performance
common_flags = ["-O3", "-DNDEBUG", "-Wall"]
# Enhanced flags for faiparser to handle large genomic files
faiparser_flags = common_flags + [
"-D_FILE_OFFSET_BITS=64", # Enable large file support (>2GB genomic files)
"-D_GNU_SOURCE", # Enable GNU extensions (strndup, etc.)
"-funroll-loops", # Unroll loops for better performance
"-finline-functions", # Inline small functions
]
ext_modules = [
Extension(
"pyrion._chainparser",
sources=["csrc/chainparser.c"],
include_dirs=[np.get_include()],
extra_compile_args=common_flags,
),
Extension(
"pyrion._bed12parser",
sources=["csrc/bed12parser.c"],
include_dirs=[np.get_include()],
extra_compile_args=common_flags,
),
Extension(
"pyrion._fastaparser",
sources=["csrc/fastaparser.c"],
include_dirs=[np.get_include()],
extra_compile_args=common_flags,
),
Extension(
"pyrion._narrowbedparser",
sources=["csrc/narrowbedparser.c"],
include_dirs=[np.get_include()],
extra_compile_args=common_flags,
),
Extension(
"pyrion._faiparser",
sources=["csrc/faiparser.c"],
extra_compile_args=faiparser_flags,
),
Extension(
"pyrion._gtfparser",
sources=["csrc/gtfparser.c"],
include_dirs=[np.get_include()],
extra_compile_args=common_flags,
),
]
if __name__ == "__main__":
setup(ext_modules=ext_modules)