File tree 7 files changed +63
-16
lines changed
7 files changed +63
-16
lines changed Original file line number Diff line number Diff line change 4
4
* .ipynb
5
5
* .db
6
6
* .py [cod ]
7
+ * .c
8
+ * .cpp
9
+ * .so
10
+ lsd.egg-info
11
+ build
7
12
docker /lsd
8
13
docker /requirements.txt
14
+ docker /setup.py
Original file line number Diff line number Diff line change 1
1
default :
2
- pip install .
3
- -rm -rf dist build gunpowder.egg-info
2
+ python setup.py install
4
3
5
4
.PHONY : install-full
6
5
install-full :
Original file line number Diff line number Diff line change 6
6
RUN apt-get update && apt-get install -y --no-install-recommends \
7
7
wget \
8
8
git \
9
+ python-numpy \
9
10
libmlpack-dev && \
10
11
rm -rf /var/lib/apt/lists/*
11
12
@@ -116,5 +117,7 @@ ENV PYTHONPATH ${DAISY_ROOT}:$PYTHONPATH
116
117
# Makefile ensures that)
117
118
ADD lsd /src/lsd/lsd
118
119
ADD requirements.txt /src/lsd/requirements.txt
120
+ ADD setup.py /src/lsd/setup.py
119
121
WORKDIR /src/lsd
122
+ RUN python setup.py build_ext --inplace
120
123
ENV PYTHONPATH /src/lsd:$PYTHONPATH
Original file line number Diff line number Diff line change 1
- TAG ="funkey/lsd:v0.3 "
1
+ TAG ="funkey/lsd:v0.4 "
2
2
3
3
.PHONY : default push
4
4
default :
5
5
# -docker rmi -f $(TAG)
6
6
-rm -rf lsd
7
7
cp -r ../lsd .
8
8
cp ../requirements.txt .
9
+ cp ../setup.py .
9
10
docker build -t $(TAG ) .
10
11
11
12
push : default
Original file line number Diff line number Diff line change
1
+ from __future__ import absolute_import
2
+ from .replace_values import replace_values as cpp_replace_values
1
3
import numpy as np
2
4
3
5
def replace_values (array , old_values , new_values ):
4
6
5
- values_map = np .arange (old_values .max () + 1 , dtype = new_values .dtype )
6
- values_map [old_values ] = new_values
7
+ max_old_value = old_values .max ()
7
8
8
- return values_map [array ]
9
+ if max_old_value < 1024 ** 3 :
10
+
11
+ values_map = np .arange (old_values .max () + 1 , dtype = new_values .dtype )
12
+ values_map [old_values ] = new_values
13
+
14
+ return values_map [array ]
15
+
16
+ else :
17
+
18
+ values_map = {
19
+ old_value : new_value
20
+ for old_value , new_value in zip (old_values , new_values )
21
+ }
22
+
23
+ return cpp_replace_values (array , values_map )
9
24
10
25
def relabel (array , return_backwards_map = False ):
11
26
'''Relabel array, such that IDs are consecutive. Excludes 0.'''
Original file line number Diff line number Diff line change
1
+ from libcpp.map cimport map
2
+ cimport cython
3
+ import logging
4
+ import numpy as np
5
+ cimport numpy as np
6
+
7
+ @ cython.boundscheck (False )
8
+ @ cython.wraparound (False )
9
+ def replace_values (array_np , values_map ):
10
+
11
+ cdef Py_ssize_t i = 0
12
+ cdef Py_ssize_t n = array_np.size()
13
+
14
+ replaced_np = np.zeros_like(array_np)
15
+ cdef np.npy_uint64[:] array = array_np
16
+ cdef np.npy_uint64[:] replaced = replaced_np
17
+ cdef map [np.npy_uint64, np.npy_uint64] cmap = values_map
18
+
19
+ for i in range (n):
20
+ replaced[i] = cmap[array[i]]
21
+
22
+ return replaced_np
Original file line number Diff line number Diff line change 1
- from setuptools import setup
2
- import subprocess
1
+ from Cython .Distutils import build_ext
2
+ from distutils .core import setup
3
+ from distutils .extension import Extension
3
4
4
5
setup (
5
6
name = 'lsd' ,
13
14
'lsd' ,
14
15
'lsd.gp' ,
15
16
],
16
- install_requires = [
17
- "numpy" ,
18
- "scipy" ,
19
- "h5py" ,
20
- "scikit-image" ,
21
- "requests" ,
22
- "gunpowder"
23
- ]
17
+ ext_modules = [
18
+ Extension (
19
+ 'lsd.replace_values' ,
20
+ sources = [ 'lsd/replace_values.pyx' ] ,
21
+ extra_compile_args = [ '-O3' ] ,
22
+ language = 'c++' )
23
+ ],
24
+ cmdclass = { 'build_ext' : build_ext }
24
25
)
You can’t perform that action at this time.
0 commit comments