python-microscopy / pyme-warp-drive

GPU-acceleration package for the PYthon Microscopy Environment (PYME).
http://python-microscopy.org/
Other
3 stars 2 forks source link

CompileError in detection code on compute capability 3.5 GPU, CUDA 11.2 #14

Closed barentine closed 3 years ago

barentine commented 3 years ago

Unclear if the compute capability is the issue. Buffer tests compile and pass, filtering however fails to compile. Some deprecation warnings about architecture.

pytest output ``` ================================================= test session starts ================================================= platform win32 -- Python 3.7.11, pytest-6.2.4, py-1.10.0, pluggy-0.13.1 rootdir: C:\Userfiles\PYME\pyme-warp-drive collected 15 items warpdrive\test_buffers.py ............ [ 80%] warpdrive\test_detection.py FFF [100%] ===================================================== FAILURES ===================================================== __________________________________________ test_repeatability_same_frame ___________________________________________ def test_repeatability_same_frame(): from PYME.localization.FitFactories import AstigGaussGPUFitFR from PYME.IO import MetaDataHandler x, _, im = gen_image() fitter = AstigGaussGPUFitFR.FitFactory(np.atleast_3d(im), mdh) > results = fitter.FindAndFit(1, cameraMaps=camera_info_manager) warpdrive\test_detection.py:57: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ..\python-microscopy\PYME\localization\FitFactories\AstigGaussGPUFitFR.py:255: in FindAndFit self.refresh_warpdrive(cameraMaps) ..\python-microscopy\PYME\localization\FitFactories\AstigGaussGPUFitFR.py:171: in refresh_warpdrive _warpdrive = warpdrive.detector(small_filter_size, 2 * small_filter_size, guess_psf_sigma_pix) warpdrive\detector.py:75: in __init__ self.dog_mod = compile_filters() warpdrive\detector_cu.py:26: in compile_filters mod = SourceModule(FILTER_SOURCE) C:\ProgramData\Anaconda3\envs\pyme\lib\site-packages\pycuda\compiler.py:358: in __init__ include_dirs, C:\ProgramData\Anaconda3\envs\pyme\lib\site-packages\pycuda\compiler.py:298: in compile return compile_plain(source, options, keep, nvcc, cache_dir, target) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ source = 'extern "C" {\n/*\nfilter.cu contains various convolution functions for the detector class to call.\n\nAndrew Barentin... uniflargedat[dloc] = (unifsmalldat[dloc]/unifsmallvar[dloc]) - (uniflargedat[dloc]/uniflargevar[dloc]);\n\n}\n\n}\n' options = ['-arch', 'sm_35', '-m64', '-Ic:\\programdata\\anaconda3\\envs\\pyme\\lib\\site-packages\\pycuda\\cuda'] keep = False, nvcc = 'nvcc' cache_dir = 'C:\\Users\\Administrator\\AppData\\Local\\pycuda\\pycuda\\Cache\\compiler-cache-v1', target = 'cubin' def compile_plain(source, options, keep, nvcc, cache_dir, target="cubin"): from os.path import join assert target in ["cubin", "ptx", "fatbin"] if cache_dir: checksum = _new_md5() if "#include" in source: checksum.update(preprocess_source(source, options, nvcc).encode("utf-8")) else: checksum.update(source.encode("utf-8")) for option in options: checksum.update(option.encode("utf-8")) checksum.update(get_nvcc_version(nvcc).encode("utf-8")) from pycuda.characterize import platform_bits checksum.update(str(platform_bits()).encode("utf-8")) cache_file = checksum.hexdigest() cache_path = join(cache_dir, cache_file + "." + target) try: cache_file = open(cache_path, "rb") try: return cache_file.read() finally: cache_file.close() except Exception: pass from tempfile import mkdtemp file_dir = mkdtemp() file_root = "kernel" cu_file_name = file_root + ".cu" cu_file_path = join(file_dir, cu_file_name) outf = open(cu_file_path, "w") outf.write(str(source)) outf.close() if keep: options = options[:] options.append("--keep") print("*** compiler output in %s" % file_dir) cmdline = [nvcc, "--" + target] + options + [cu_file_name] result, stdout, stderr = call_capture_output( cmdline, cwd=file_dir, error_on_nonzero=False ) try: result_f = open(join(file_dir, file_root + "." + target), "rb") except OSError: no_output = True else: no_output = False if result != 0 or (no_output and (stdout or stderr)): if result == 0: from warnings import warn warn( "PyCUDA: nvcc exited with status 0, but appears to have " "encountered an error" ) from pycuda.driver import CompileError raise CompileError( "nvcc compilation of %s failed" % cu_file_path, cmdline, stdout=stdout.decode("utf-8", "replace"), > stderr=stderr.decode("utf-8", "replace"), ) E pycuda.driver.CompileError: nvcc compilation of C:\Users\ADMINI~1\AppData\Local\Temp\tmpxzdy86t3\kernel.cu failed E [command: nvcc --cubin -arch sm_35 -m64 -Ic:\programdata\anaconda3\envs\pyme\lib\site-packages\pycuda\cuda kernel.cu] E [stdout: E kernel.cu(34): error: expected a ")" E E 1 error detected in the compilation of "kernel.cu". E nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning). E kernel.cu E ] C:\ProgramData\Anaconda3\envs\pyme\lib\site-packages\pycuda\compiler.py:155: CompileError ----------------------------------------------- Captured stdout call ----------------------------------------------- Density = 10.204081632653068 /um^2 __________________________________________ test_repeatability_multiframe ___________________________________________ def test_repeatability_multiframe(): from PYME.localization.FitFactories import AstigGaussGPUFitFR from PYME.IO import MetaDataHandler from PYME.localization.remFitBuf import CameraInfoManager n_frame_batch = 50 res = [] ims = [] for ind in range(n_frame_batch): _, _, im = gen_image() ims.append(im) > _res = AstigGaussGPUFitFR.FitFactory(np.atleast_3d(im), mdh).FindAndFit(1, cameraMaps=camera_info_manager) warpdrive\test_detection.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ..\python-microscopy\PYME\localization\FitFactories\AstigGaussGPUFitFR.py:255: in FindAndFit self.refresh_warpdrive(cameraMaps) ..\python-microscopy\PYME\localization\FitFactories\AstigGaussGPUFitFR.py:171: in refresh_warpdrive _warpdrive = warpdrive.detector(small_filter_size, 2 * small_filter_size, guess_psf_sigma_pix) warpdrive\detector.py:75: in __init__ self.dog_mod = compile_filters() warpdrive\detector_cu.py:26: in compile_filters mod = SourceModule(FILTER_SOURCE) C:\ProgramData\Anaconda3\envs\pyme\lib\site-packages\pycuda\compiler.py:358: in __init__ include_dirs, C:\ProgramData\Anaconda3\envs\pyme\lib\site-packages\pycuda\compiler.py:298: in compile return compile_plain(source, options, keep, nvcc, cache_dir, target) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ source = 'extern "C" {\n/*\nfilter.cu contains various convolution functions for the detector class to call.\n\nAndrew Barentin... uniflargedat[dloc] = (unifsmalldat[dloc]/unifsmallvar[dloc]) - (uniflargedat[dloc]/uniflargevar[dloc]);\n\n}\n\n}\n' options = ['-arch', 'sm_35', '-m64', '-Ic:\\programdata\\anaconda3\\envs\\pyme\\lib\\site-packages\\pycuda\\cuda'] keep = False, nvcc = 'nvcc' cache_dir = 'C:\\Users\\Administrator\\AppData\\Local\\pycuda\\pycuda\\Cache\\compiler-cache-v1', target = 'cubin' def compile_plain(source, options, keep, nvcc, cache_dir, target="cubin"): from os.path import join assert target in ["cubin", "ptx", "fatbin"] if cache_dir: checksum = _new_md5() if "#include" in source: checksum.update(preprocess_source(source, options, nvcc).encode("utf-8")) else: checksum.update(source.encode("utf-8")) for option in options: checksum.update(option.encode("utf-8")) checksum.update(get_nvcc_version(nvcc).encode("utf-8")) from pycuda.characterize import platform_bits checksum.update(str(platform_bits()).encode("utf-8")) cache_file = checksum.hexdigest() cache_path = join(cache_dir, cache_file + "." + target) try: cache_file = open(cache_path, "rb") try: return cache_file.read() finally: cache_file.close() except Exception: pass from tempfile import mkdtemp file_dir = mkdtemp() file_root = "kernel" cu_file_name = file_root + ".cu" cu_file_path = join(file_dir, cu_file_name) outf = open(cu_file_path, "w") outf.write(str(source)) outf.close() if keep: options = options[:] options.append("--keep") print("*** compiler output in %s" % file_dir) cmdline = [nvcc, "--" + target] + options + [cu_file_name] result, stdout, stderr = call_capture_output( cmdline, cwd=file_dir, error_on_nonzero=False ) try: result_f = open(join(file_dir, file_root + "." + target), "rb") except OSError: no_output = True else: no_output = False if result != 0 or (no_output and (stdout or stderr)): if result == 0: from warnings import warn warn( "PyCUDA: nvcc exited with status 0, but appears to have " "encountered an error" ) from pycuda.driver import CompileError raise CompileError( "nvcc compilation of %s failed" % cu_file_path, cmdline, stdout=stdout.decode("utf-8", "replace"), > stderr=stderr.decode("utf-8", "replace"), ) E pycuda.driver.CompileError: nvcc compilation of C:\Users\ADMINI~1\AppData\Local\Temp\tmprxzt6emg\kernel.cu failed E [command: nvcc --cubin -arch sm_35 -m64 -Ic:\programdata\anaconda3\envs\pyme\lib\site-packages\pycuda\cuda kernel.cu] E [stdout: E kernel.cu(34): error: expected a ")" E E 1 error detected in the compilation of "kernel.cu". E nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning). E kernel.cu E ] C:\ProgramData\Anaconda3\envs\pyme\lib\site-packages\pycuda\compiler.py:155: CompileError ----------------------------------------------- Captured stdout call ----------------------------------------------- Density = 10.204081632653068 /um^2 ______________________________________ test_camera_correction_and_sigma_calc _______________________________________ def test_camera_correction_and_sigma_calc(): import warpdrive as wd _, _, im = gen_image() im = im.astype(np.float32) darkmap = 1 * np.ones_like(im) varmap = np.ones_like(im) flatmap = np.ones_like(im) eperadu = np.float32(0.41) noise_factor = np.float32(1.0) em_gain = np.float32(1.0) corrected = (im - darkmap) * flatmap * eperadu sigma = np.sqrt(varmap + noise_factor * noise_factor * em_gain * np.max(np.stack([corrected, np.ones_like(im)]), axis=0) + em_gain * em_gain / eperadu) > _warpdrive = wd.detector() warpdrive\test_detection.py:114: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ warpdrive\detector.py:75: in __init__ self.dog_mod = compile_filters() warpdrive\detector_cu.py:26: in compile_filters mod = SourceModule(FILTER_SOURCE) C:\ProgramData\Anaconda3\envs\pyme\lib\site-packages\pycuda\compiler.py:358: in __init__ include_dirs, C:\ProgramData\Anaconda3\envs\pyme\lib\site-packages\pycuda\compiler.py:298: in compile return compile_plain(source, options, keep, nvcc, cache_dir, target) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ source = 'extern "C" {\n/*\nfilter.cu contains various convolution functions for the detector class to call.\n\nAndrew Barentin... uniflargedat[dloc] = (unifsmalldat[dloc]/unifsmallvar[dloc]) - (uniflargedat[dloc]/uniflargevar[dloc]);\n\n}\n\n}\n' options = ['-arch', 'sm_35', '-m64', '-Ic:\\programdata\\anaconda3\\envs\\pyme\\lib\\site-packages\\pycuda\\cuda'] keep = False, nvcc = 'nvcc' cache_dir = 'C:\\Users\\Administrator\\AppData\\Local\\pycuda\\pycuda\\Cache\\compiler-cache-v1', target = 'cubin' def compile_plain(source, options, keep, nvcc, cache_dir, target="cubin"): from os.path import join assert target in ["cubin", "ptx", "fatbin"] if cache_dir: checksum = _new_md5() if "#include" in source: checksum.update(preprocess_source(source, options, nvcc).encode("utf-8")) else: checksum.update(source.encode("utf-8")) for option in options: checksum.update(option.encode("utf-8")) checksum.update(get_nvcc_version(nvcc).encode("utf-8")) from pycuda.characterize import platform_bits checksum.update(str(platform_bits()).encode("utf-8")) cache_file = checksum.hexdigest() cache_path = join(cache_dir, cache_file + "." + target) try: cache_file = open(cache_path, "rb") try: return cache_file.read() finally: cache_file.close() except Exception: pass from tempfile import mkdtemp file_dir = mkdtemp() file_root = "kernel" cu_file_name = file_root + ".cu" cu_file_path = join(file_dir, cu_file_name) outf = open(cu_file_path, "w") outf.write(str(source)) outf.close() if keep: options = options[:] options.append("--keep") print("*** compiler output in %s" % file_dir) cmdline = [nvcc, "--" + target] + options + [cu_file_name] result, stdout, stderr = call_capture_output( cmdline, cwd=file_dir, error_on_nonzero=False ) try: result_f = open(join(file_dir, file_root + "." + target), "rb") except OSError: no_output = True else: no_output = False if result != 0 or (no_output and (stdout or stderr)): if result == 0: from warnings import warn warn( "PyCUDA: nvcc exited with status 0, but appears to have " "encountered an error" ) from pycuda.driver import CompileError raise CompileError( "nvcc compilation of %s failed" % cu_file_path, cmdline, stdout=stdout.decode("utf-8", "replace"), > stderr=stderr.decode("utf-8", "replace"), ) E pycuda.driver.CompileError: nvcc compilation of C:\Users\ADMINI~1\AppData\Local\Temp\tmph5eyg8qh\kernel.cu failed E [command: nvcc --cubin -arch sm_35 -m64 -Ic:\programdata\anaconda3\envs\pyme\lib\site-packages\pycuda\cuda kernel.cu] E [stdout: E kernel.cu(34): error: expected a ")" E E 1 error detected in the compilation of "kernel.cu". E nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning). E kernel.cu E ] C:\ProgramData\Anaconda3\envs\pyme\lib\site-packages\pycuda\compiler.py:155: CompileError ----------------------------------------------- Captured stdout call ----------------------------------------------- Density = 10.204081632653068 /um^2 ================================================= warnings summary ================================================= ..\..\..\ProgramData\Anaconda3\envs\pyme\lib\site-packages\win32\lib\pywintypes.py:2 C:\ProgramData\Anaconda3\envs\pyme\lib\site-packages\win32\lib\pywintypes.py:2: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses import imp, sys, os ..\python-microscopy\PYME\IO\MetaDataHandler.py:72 c:\userfiles\pyme\python-microscopy\PYME\IO\MetaDataHandler.py:72: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working from collections import MutableMapping as DictMixin ..\python-microscopy\PYME\IO\MetaDataHandler.py:653 c:\userfiles\pyme\python-microscopy\PYME\IO\MetaDataHandler.py:653: UserWarning: DictMDHandler is not yet fully supported, and will likely cause failures for anything related to localisation fitting warnings.warn('DictMDHandler is not yet fully supported, and will likely cause failures for anything related to localisation fitting') ..\python-microscopy\PYME\IO\MetaDataHandler.py:513 ..\python-microscopy\PYME\IO\MetaDataHandler.py:513 ..\python-microscopy\PYME\IO\MetaDataHandler.py:513 c:\userfiles\pyme\python-microscopy\PYME\IO\MetaDataHandler.py:513: DeprecationWarning: Metadata access should use dictionary based or getEntry() syntax, not attribute based access warnings.warn('Metadata access should use dictionary based or getEntry() syntax, not attribute based access', DeprecationWarning) -- Docs: https://docs.pytest.org/en/stable/warnings.html ============================================= short test summary info ============================================== FAILED warpdrive/test_detection.py::test_repeatability_same_frame - pycuda.driver.CompileError: nvcc compilation o... FAILED warpdrive/test_detection.py::test_repeatability_multiframe - pycuda.driver.CompileError: nvcc compilation o... FAILED warpdrive/test_detection.py::test_camera_correction_and_sigma_calc - pycuda.driver.CompileError: nvcc compi... =============================== 3 failed, 12 passed, 6 warnings in 171.30s (0:02:51) =============================== Exception ignored in: Traceback (most recent call last): File "C:\Userfiles\PYME\pyme-warp-drive\warpdrive\detector.py", line 106, in __del__ cuda.stop_profiler() pycuda._driver.LogicError: cuProfilerStop failed: invalid device context Exception ignored in: Traceback (most recent call last): File "C:\Userfiles\PYME\pyme-warp-drive\warpdrive\detector.py", line 106, in __del__ cuda.stop_profiler() pycuda._driver.LogicError: cuProfilerStop failed: invalid device context Exception ignored in: Traceback (most recent call last): File "C:\Userfiles\PYME\pyme-warp-drive\warpdrive\detector.py", line 106, in __del__ pycuda._driver.LogicError: cuProfilerStop failed: invalid device context ```
NVCC version info and conda list ``` (pyme) C:\Userfiles\PYME\pyme-warp-drive>nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2020 NVIDIA Corporation Built on Mon_Nov_30_19:15:10_Pacific_Standard_Time_2020 Cuda compilation tools, release 11.2, V11.2.67 Build cuda_11.2.r11.2/compiler.29373293_0 (pyme) C:\Userfiles\PYME\pyme-warp-drive>conda list # packages in environment at C:\ProgramData\Anaconda3\envs\pyme: # # Name Version Build Channel alabaster 0.7.12 py37_0 appdirs 1.4.4 pypi_0 pypi atomicwrites 1.4.0 py_0 attrs 21.2.0 pyhd3eb1b0_0 babel 2.9.1 pyhd3eb1b0_0 backcall 0.2.0 pyhd3eb1b0_0 blas 1.0 mkl blosc 1.19.0 h7bd577a_0 bottleneck 1.3.2 py37h2a96729_1 brotlipy 0.7.0 py37h2bbff1b_1003 bzip2 1.0.8 he774522_0 ca-certificates 2021.7.5 haa95532_1 cairo 1.14.12 hf171d8a_3 certifi 2021.5.30 py37haa95532_0 cffi 1.14.6 py37h2bbff1b_0 chardet 4.0.0 py37haa95532_1003 cheroot 8.5.2 py37haa95532_1 cherrypy 18.6.0 py37haa95532_0 cloudpickle 1.6.0 py_0 colorama 0.4.4 pyhd3eb1b0_0 cryptography 3.4.7 py37h71e12ea_0 cycler 0.10.0 py37_0 cython 0.29.24 py37hd77b12b_0 cytoolz 0.11.0 py37he774522_0 dask-core 2021.8.0 pyhd3eb1b0_0 decorator 5.0.9 pyhd3eb1b0_0 docutils 0.17.1 py37haa95532_1 fftw 3.3.4 0 david_baddeley freetype 2.10.4 hd328e21_0 fsspec 2021.7.0 pyhd3eb1b0_0 future 0.18.2 py37_1 git 2.32.0 haa95532_1 hdf5 1.10.4 h7ebc959_0 icc_rt 2019.0.0 h0cc432a_1 icu 58.2 ha925a31_3 idna 2.10 pyhd3eb1b0_0 ifaddr 0.1.6 py_0 david_baddeley imageio 2.9.0 pyhd3eb1b0_0 imagesize 1.2.0 pyhd3eb1b0_0 importlib-metadata 3.10.0 py37haa95532_0 importlib_metadata 3.10.0 hd3eb1b0_0 iniconfig 1.1.1 pyhd3eb1b0_0 intel-openmp 2021.3.0 haa95532_3372 ipython 7.26.0 py37hd4e2768_0 ipython_genutils 0.2.0 pyhd3eb1b0_1 jaraco.classes 3.2.1 pyhd3eb1b0_0 jaraco.collections 3.3.0 pyhd3eb1b0_0 jaraco.functools 3.3.0 pyhd3eb1b0_0 jaraco.text 3.5.1 py37haa95532_2 jedi 0.18.0 py37haa95532_1 jinja2 3.0.1 pyhd3eb1b0_0 joblib 1.0.1 pyhd3eb1b0_0 jpeg 9b hb83a4c4_2 kiwisolver 1.3.1 py37hd77b12b_0 libpng 1.6.37 h2a8f88b_0 libtiff 4.2.0 hd0e1b90_0 locket 0.2.1 py37haa95532_1 lz4-c 1.9.3 h2bbff1b_1 lzo 2.10 he774522_2 mako 1.1.4 pypi_0 pypi markupsafe 2.0.1 py37h2bbff1b_0 matplotlib 3.1.2 py37h64f37c6_0 matplotlib-inline 0.1.2 pyhd3eb1b0_2 mkl 2020.2 256 mkl-service 2.3.0 py37h196d8e1_0 mkl_fft 1.3.0 py37h46781fe_0 mkl_random 1.1.1 py37h47e9c7a_0 mock 4.0.3 pyhd3eb1b0_0 more-itertools 8.8.0 pyhd3eb1b0_0 mpld3 v0.3 py37_0 david_baddeley networkx 2.6.2 pyhd3eb1b0_0 numexpr 2.7.3 py37hcbcaa1e_0 numpy 1.19.2 py37hadc3359_0 numpy-base 1.19.2 py37ha3acd2a_0 olefile 0.46 py37_0 openssl 1.1.1k h2bbff1b_0 packaging 21.0 pyhd3eb1b0_0 pandas 1.3.1 py37h6214cd6_0 parso 0.8.2 pyhd3eb1b0_0 partd 1.2.0 pyhd3eb1b0_0 pickleshare 0.7.5 pyhd3eb1b0_1003 pillow 8.3.1 py37h4fa10fc_0 pip 21.2.2 py37haa95532_0 pixman 0.40.0 he774522_0 pluggy 0.13.1 py37haa95532_0 portend 2.7.1 pyhd3eb1b0_0 prompt-toolkit 3.0.17 pyh06a4308_0 psutil 5.8.0 py37h2bbff1b_1 py 1.10.0 pyhd3eb1b0_0 pycairo 1.19.1 py37hb2538c6_0 pycparser 2.20 py_2 pycuda 2021.1 pypi_0 pypi pyface 7.1.0 py37_1 pyfftw 0.11.1+26.g101c792 pypi_0 pypi pygments 2.9.0 pyhd3eb1b0_0 pyme-depends 1.17 py37_0 david_baddeley pyme-warp-drive 0.3 dev_0 pymecompress 0.2.0 py37_0 david_baddeley pyopengl 3.1.1a1 py37haa95532_0 pyopenssl 20.0.1 pyhd3eb1b0_1 pyparsing 2.4.7 pyhd3eb1b0_0 pyqt 5.9.2 py37h6538335_2 pysocks 1.7.1 py37_1 pytables 3.6.1 py37h1da0976_0 pytest 6.2.4 py37haa95532_2 python 3.7.11 h6244533_0 python-dateutil 2.8.2 pyhd3eb1b0_0 python-microscopy 21.7.7 dev_0 pytools 2021.2.8 pypi_0 pypi pytz 2021.1 pyhd3eb1b0_0 pywavelets 1.1.1 py37he774522_2 pywin32 228 py37hbaba5e8_1 pyyaml 5.4.1 py37h2bbff1b_1 qt 5.9.7 vc14h73c81de_0 repoze.lru 0.7 py37_0 requests 2.25.1 pyhd3eb1b0_0 routes 2.5.1 py37haa95532_0 scikit-image 0.16.2 py37h47e9c7a_0 scikit-learn 0.24.2 py37hf11a4ad_1 scipy 1.3.0 py37h29ff71c_0 setuptools 52.0.0 py37haa95532_0 simplejson 3.17.3 py37h2bbff1b_2 sip 4.19.8 py37h6538335_0 six 1.16.0 pyhd3eb1b0_0 snappy 1.1.8 h33f27b4_0 snowballstemmer 2.1.0 pyhd3eb1b0_0 sphinx 4.0.2 pyhd3eb1b0_0 sphinxcontrib-applehelp 1.0.2 pyhd3eb1b0_0 sphinxcontrib-devhelp 1.0.2 pyhd3eb1b0_0 sphinxcontrib-htmlhelp 2.0.0 pyhd3eb1b0_0 sphinxcontrib-jsmath 1.0.1 pyhd3eb1b0_0 sphinxcontrib-qthelp 1.0.3 pyhd3eb1b0_0 sphinxcontrib-serializinghtml 1.1.5 pyhd3eb1b0_0 sqlite 3.36.0 h2bbff1b_0 tempora 4.1.1 pyhd3eb1b0_0 threadpoolctl 2.2.0 pyhbf3da8f_0 tk 8.6.10 he774522_0 toml 0.10.2 pyhd3eb1b0_0 toolz 0.11.1 pyhd3eb1b0_0 toposort 1.5 py37_3 david_baddeley tornado 6.1 py37h2bbff1b_0 traitlets 5.0.5 pyhd3eb1b0_0 traits 6.2.0 py37h2bbff1b_0 traitsui 7.1.0 py_0 typing_extensions 3.10.0.0 pyh06a4308_0 ujson 4.0.2 py37hd77b12b_0 urllib3 1.26.6 pyhd3eb1b0_1 vc 14.2 h21ff451_1 vs2015_runtime 14.27.29016 h5e58377_2 wcwidth 0.2.5 py_0 wheel 0.37.0 pyhd3eb1b0_0 win_inet_pton 1.1.0 py37haa95532_0 wincertstore 0.2 py37_0 wxpython 4.0.4 py37ha925a31_0 xz 5.2.5 h62dcd97_0 yaml 0.2.5 he774522_0 zc.lockfile 2.0 py_0 zeroconf 0.24.0 py37_3 david_baddeley zipp 3.5.0 pyhd3eb1b0_0 zlib 1.2.11 h62dcd97_4 zstd 1.4.9 h19a0ad4_0 ```
barentine commented 3 years ago

fixed in #15