Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

setup.py #12

Closed
wants to merge 17 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@
#############

*.py[co]
*.egg-info
build/
*.eggs
dist/
.cache/
storm_analysis/test/output/

#############
## Emacs
Expand Down
14 changes: 14 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
recursive-include storm_analysis *.py
recursive-include storm_analysis *.ui
recursive-include storm_analysis *.txt
recursive-include storm_analysis *.md
recursive-include storm_analysis *.m
recursive-include storm_analysis *.mat
recursive-include storm_analysis *.c
recursive-include storm_analysis *.h
recursive-include storm_analysis */data/*
recursive-include storm_analysis */sample_data/*
recursive-include storm_analysis *tests*

prune storm_analysis/test/output

2 changes: 2 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[aliases]
test=pytest
139 changes: 139 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import platform
import os
import sys

from setuptools import setup, find_packages
from distutils.core import Extension

import numpy

version = "1.0"
description = "Read and write image data from and to TIFF files."
long_description = ""

def get_c_extensions():

include_dirs = [os.path.join(sys.prefix, "include")]
library_dirs = []

if platform.system() == 'Windows':
include_dirs += [os.environ['LIBRARY_INC']]
library_dirs += [os.environ['LIBRARY_LIB']]
elif platform.system() == 'Linux':
include_dirs += []
library_dirs += []
elif platform.system() == 'Darwin':
include_dirs += []
library_dirs += []

extensions = [Extension("storm_analysis.fista._fista_decon_utilities", ["./storm_analysis/fista/fista_decon_utilities.c"],
libraries=library_dirs, include_dirs=include_dirs),
Extension("storm_analysis.fista._fista_fft", ["./storm_analysis/fista/fista_fft.c"],
libraries=library_dirs + ["fftw3"], include_dirs=include_dirs),

Extension("storm_analysis.sa_library._matched_filter", ["./storm_analysis/sa_library/matched_filter.c"],
libraries=library_dirs + ["fftw3"], include_dirs=include_dirs + []),
Extension("storm_analysis.sa_library._grid", ["./storm_analysis/sa_library/grid.c"],
libraries=library_dirs, include_dirs=include_dirs),
Extension("storm_analysis.sa_library._multi_fit", ["./storm_analysis/sa_library/multi_fit.c"],
libraries=library_dirs + ["lapack"], include_dirs=include_dirs + []),
Extension("storm_analysis.sa_library._ia_utilities", ["./storm_analysis/sa_library/ia_utilities.c"],
libraries=library_dirs, include_dirs=include_dirs),

Extension("storm_analysis.dbscan._dbscan", ["./storm_analysis/dbscan/dbscan.c",
"./storm_analysis/dbscan/kdtree.c"],
libraries=library_dirs, include_dirs=include_dirs),

Extension("storm_analysis.decon_storm._mlem_sparse", ["./storm_analysis/decon_storm/mlem_sparse.c"],
libraries=library_dirs, include_dirs=include_dirs),

Extension("storm_analysis.sCMOS._scmos_utilities", ["./storm_analysis/sCMOS/scmos_utilities.c"],
libraries=library_dirs, include_dirs=include_dirs),

Extension("storm_analysis.frc._frc", ["./storm_analysis/frc/frc.c"],
libraries=library_dirs, include_dirs=include_dirs),

Extension("storm_analysis.simulator._draw_gaussians", ["./storm_analysis/simulator/draw_gaussians.c"],
libraries=library_dirs, include_dirs=include_dirs),
Extension("storm_analysis.simulator._zernike", ["./storm_analysis/simulator/zernike.c"],
libraries=library_dirs, include_dirs=include_dirs),

Extension("storm_analysis.spliner._cubic_spline", ["./storm_analysis/spliner/cubic_spline.c"],
libraries=library_dirs, include_dirs=include_dirs),
Extension("storm_analysis.spliner._cubic_fit", ["./storm_analysis/spliner/cubic_fit.c",
"./storm_analysis/spliner/multi_fit_core.c",
"./storm_analysis/spliner/cubic_spline.c"],
libraries=library_dirs + ["lapack"], include_dirs=include_dirs),

Extension("storm_analysis.rolling_ball_bgr._rolling_ball_lib", ["./storm_analysis/rolling_ball_bgr/rolling_ball_lib.c"],
libraries=library_dirs, include_dirs=include_dirs),

Extension("storm_analysis.sa_utilities._fitz", ["./storm_analysis/sa_utilities/fitz.c"],
libraries=library_dirs, include_dirs=include_dirs),
Extension("storm_analysis.sa_utilities._tracker", ["./storm_analysis/sa_utilities/tracker.c"],
libraries=library_dirs, include_dirs=include_dirs),
Extension("storm_analysis.sa_utilities._avemlist", ["./storm_analysis/sa_utilities/avemlist.c"],
libraries=library_dirs, include_dirs=include_dirs),
Extension("storm_analysis.sa_utilities._apply-drift-correction", ["./storm_analysis/sa_utilities/apply-drift-correction.c"],
libraries=library_dirs, include_dirs=include_dirs),
]

if platform.system() == 'Windows':
extensions += [Extension("storm_analysis.L1H._fista_lib", ["./storm_analysis/L1H/fista_lib.c"],
libraries=library_dirs, include_dirs=include_dirs),
Extension("storm_analysis.L1H._homotopy_storm", ["./storm_analysis/L1H/homotopy_storm.c"],
libraries=library_dirs, include_dirs=include_dirs),
Extension("storm_analysis.L1H._homotopy_sse", ["./storm_analysis/L1H/homotopy_sse.c"],
libraries=library_dirs, include_dirs=include_dirs),
Extension("storm_analysis.L1H._homotopy_general", ["./storm_analysis/L1H/homotopy_general.c"],
libraries=library_dirs, include_dirs=include_dirs),
Extension("storm_analysis.L1H._homotopy_imagea", ["./storm_analysis/L1H/homotopy_imagea.c"],
libraries=library_dirs, include_dirs=include_dirs),
Extension("storm_analysis.L1H._homotopy_common", ["./storm_analysis/L1H/homotopy_common.c"],
libraries=library_dirs, include_dirs=include_dirs),
Extension("storm_analysis.L1H._homotopy_imagea_common", ["./storm_analysis/L1H/homotopy_imagea_common.c"],
libraries=library_dirs, include_dirs=include_dirs),
Extension("storm_analysis.L1H._homotopy_gpu", ["./storm_analysis/L1H/homotopy_gpu.c"],
libraries=library_dirs, include_dirs=include_dirs),
]

return extensions

setup(
name='storm_analysis',
version=version,
description=description,
long_description=long_description,
author='Hazen Babcock',
author_email='hbabcock at fas.harvard.edu',
url='https://github.com/ZhuangLab/storm-analysis',

zip_safe=False,
packages=find_packages(),

ext_modules=get_c_extensions(),
package_data={},
exclude_package_data={},
include_package_data=True,

requires=[],

setup_requires=['pytest-runner'],
tests_require=['pytest'],

license="",
keywords='storm,microscopy',
classifiers=[
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License',
"Programming Language :: C",
"Programming Language :: Python :: 2",
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
],
)
2 changes: 1 addition & 1 deletion storm_analysis/L1H/homotopy_c.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
def setCInterface(homotopy_lib):
global homotopy

homotopy = loadclib.loadCLibrary(os.path.dirname(__file__), homotopy_lib)
homotopy = loadclib.loadCLibrary("storm_analysis.L1H", "_" + homotopy_lib)

l1flt_size = homotopy.getL1FLTSize()
if(l1flt_size == 4):
Expand Down
2 changes: 1 addition & 1 deletion storm_analysis/L1H/homotopy_imagea_c.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
def setCInterface(homotopy_ia_lib):
global homotopyIa

homotopyIa = loadclib.loadCLibrary(os.path.dirname(__file__), homotopy_ia_lib)
homotopyIa = loadclib.loadCLibrary("storm_analysis.L1H", "_" + homotopy_ia_lib)

# Check that C libraries were compiled as expected.
l1flt_size = homotopyIa.getL1FLTSize()
Expand Down
23 changes: 23 additions & 0 deletions storm_analysis/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,24 @@
#!/usr/bin/python
import os


def get_data(data_path):
import pkg_resources
data = pkg_resources.resource_filename(__name__, data_path)
return data


def get_path(path):
return os.path.join(os.path.dirname(os.path.abspath(__file__)), path)


def get_path_output_test(fname=None):
out_path = get_path("test/output/")

if not os.path.exists(out_path):
os.makedirs(out_path)

if fname:
return os.path.join(out_path, fname)
else:
return out_path
4 changes: 2 additions & 2 deletions storm_analysis/dbscan/dbscan_c.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

import storm_analysis.sa_library.loadclib as loadclib

lib_dbscan = loadclib.loadCLibrary(os.path.dirname(__file__), "dbscan")
lib_dbscan = loadclib.loadCLibrary("storm_analysis.dbscan", "_dbscan")

lib_dbscan.dbscan.argtypes = [ndpointer(dtype=numpy.float32),
ndpointer(dtype=numpy.float32),
Expand Down Expand Up @@ -72,7 +72,7 @@ def dbscan(x, y, z, c, eps, min_points, z_factor = 0.5, verbose = True):
# Print number of clusters
if verbose:
n_clusters_ = len(set(c_l)) - (1 if -1 in c_l else 0)
print 'Estimated number of clusters: %d' % n_clusters_
print('Estimated number of clusters: %d' % n_clusters_)

return c_l

Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion storm_analysis/decon_storm/mlem_c.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
c_double_p = POINTER(c_double)

# Load mlem C library
mlem = loadclib.loadCLibrary("mlem_sparse")
mlem = loadclib.loadCLibrary("storm_analysis.decon_storm", "_mlem_sparse")

# Define structures
class GAUSS(Structure):
Expand Down
2 changes: 1 addition & 1 deletion storm_analysis/fista/fista_decon_utilities_c.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

import storm_analysis.sa_library.loadclib as loadclib

fd_util = loadclib.loadCLibrary(os.path.dirname(__file__), "fista_decon_utilities")
fd_util = loadclib.loadCLibrary("storm_analysis.fista", "_fista_decon_utilities")

# C interface definition
fd_util.label.argtypes = [ndpointer(dtype=numpy.float64),
Expand Down
2 changes: 1 addition & 1 deletion storm_analysis/fista/fista_fft_c.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

import storm_analysis.fista.fista_3d as fista3D

fista_fft = loadclib.loadCLibrary(os.path.dirname(__file__), "fista_fft")
fista_fft = loadclib.loadCLibrary("storm_analysis.fista", "_fista_fft")

# C interface definition
fista_fft.getXVector.argtypes = [ndpointer(dtype=numpy.float64)]
Expand Down
2 changes: 1 addition & 1 deletion storm_analysis/frc/frc_c.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

import storm_analysis.sa_library.loadclib as loadclib

frc_lib = loadclib.loadCLibrary(os.path.dirname(__file__), "frc")
frc_lib = loadclib.loadCLibrary("storm_analysis.frc", "_frc")

# Function specifications.
frc_lib.calc_frc.argtypes = [ndpointer(dtype=numpy.complex128),
Expand Down
Loading