sakoho81 / miplib

A Python software library with a variety of functions for (optical) microscopy image restoration, reconstruction and analysis.
Other
66 stars 22 forks source link

Version issues when installing #5

Closed dpshepherd closed 3 years ago

dpshepherd commented 4 years ago

I'm trying to install your library into a fresh conda environment on a Ubuntu system with an Nvidia Titan RTX GPU and ran into a few issues. I replicated these issues on a Windows 10 machine with an Nvidia Titan XP.

  1. pyculib is no longer maintained - so you need to pull it from channel numba(or somewhere else)
  2. I believe cudatoolkit=7.5 is no longer on the conda channel. Is it safe to update this to the modern toolkit version (e.g. 10.2?) Or does your library require an older version of CUDA? If so, what channel should it be installed from?
  3. Once I get the package installed using a modified _environmentclient.yml to address 1 and 2 above, I am unable to run the examples. This appears to be an issue with changes to Numpy on how boolean operations are handled. If I try to run the One Image Sectioned FSC and 3D Wiener Filtering notebook, I get the follow error for this code: %% capture result = fsc.calculate_one_image_sectioned_fsc(image,args,z_correction=z_correction)

Error (truncated to most important part): TypeError: numpy boolean subtract, the '-' operator, is deprecated, use the bitwise_xor, the '^' operator, or the logical _xor function instead.

What version of Numpy is the library complied for? After some internet searching, this appears to be a change in Numpy somewhere around version 1.14, but if I try numpy=1.13.3 in the _enviromentclient.yml file, I get a version mismatch error when attempting import miplib.ui.cli.miplib_entry_point_options as options.

Thanks.

sakoho81 commented 4 years ago

Hi there. The GPU acceleration functionality would indeed require some attention as the pyculib is no longer being developed. The state of the pyculib also necessitates the ancient cudatoolkit=7.5. I am planning to move to some other library, possibly cupy or reikna, when I have some time.

In any case, I just pushed a small update to the repo, that fixes the environment.yml and the Numpy compatibility issues. I tested it with numpy=1.14.5. Seems to work fine on Windows 10 at least. I didn't test the CUDA stuff, so let me know if you find some more bugs.

dpshepherd commented 3 years ago

I just pulled the changes and made a new environment using the updated environment.yml.

I get the following error when running python setup.py develop,

running develop
running egg_info
creating miplib.egg-info
writing miplib.egg-info/PKG-INFO
writing dependency_links to miplib.egg-info/dependency_links.txt
writing entry points to miplib.egg-info/entry_points.txt
writing requirements to miplib.egg-info/requires.txt
writing top-level names to miplib.egg-info/top_level.txt
writing manifest file 'miplib.egg-info/SOURCES.txt'
reading manifest file 'miplib.egg-info/SOURCES.txt'
writing manifest file 'miplib.egg-info/SOURCES.txt'
running build_ext
building 'miplib.processing.ops_ext' extension
creating build
creating build/temp.linux-x86_64-3.6
creating build/temp.linux-x86_64-3.6/miplib
creating build/temp.linux-x86_64-3.6/miplib/processing
creating build/temp.linux-x86_64-3.6/miplib/processing/src
gcc -pthread -B /home/dps/miniconda3/envs/miplib/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/numpy/core/include -I/home/dps/miniconda3/envs/miplib/include/python3.6m -c miplib/processing/src/ops_ext.c -o build/temp.linux-x86_64-3.6/miplib/processing/src/ops_ext.o
In file included from /home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/numpy/core/include/numpy/ndarraytypes.h:1818,
                 from /home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/numpy/core/include/numpy/ndarrayobject.h:18,
                 from /home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/numpy/core/include/numpy/arrayobject.h:4,
                 from miplib/processing/src/ops_ext.c:6:
/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
   15 | #warning "Using deprecated NumPy API, disable it by " \
      |  ^~~~~~~
miplib/processing/src/ops_ext.c: In function ‘div_unit_grad’:
miplib/processing/src/ops_ext.c:592:20: warning: variable ‘hz2’ set but not used [-Wunused-but-set-variable]
  592 |   double hx2, hy2, hz2;
      |                    ^~~
miplib/processing/src/ops_ext.c:592:15: warning: variable ‘hy2’ set but not used [-Wunused-but-set-variable]
  592 |   double hx2, hy2, hz2;
      |               ^~~
miplib/processing/src/ops_ext.c:592:10: warning: variable ‘hx2’ set but not used [-Wunused-but-set-variable]
  592 |   double hx2, hy2, hz2;
      |          ^~~
miplib/processing/src/ops_ext.c:590:16: warning: variable ‘r_data_sp’ set but not used [-Wunused-but-set-variable]
  590 |   npy_float32* r_data_sp = NULL;
      |                ^~~~~~~~~
miplib/processing/src/ops_ext.c:589:16: warning: variable ‘f_data_sp’ set but not used [-Wunused-but-set-variable]
  589 |   npy_float32* f_data_sp = NULL;
      |                ^~~~~~~~~
miplib/processing/src/ops_ext.c:588:16: warning: variable ‘r_data_dp’ set but not used [-Wunused-but-set-variable]
  588 |   npy_float64* r_data_dp = NULL;
      |                ^~~~~~~~~
miplib/processing/src/ops_ext.c:587:16: warning: variable ‘f_data_dp’ set but not used [-Wunused-but-set-variable]
  587 |   npy_float64* f_data_dp = NULL;
      |                ^~~~~~~~~
miplib/processing/src/ops_ext.c:586:51: warning: variable ‘km2’ set but not used [-Wunused-but-set-variable]
  586 |   int i, j, k, im1, im2, ip1, jm1, jm2, jp1, km1, km2, kp1;
      |                                                   ^~~
miplib/processing/src/ops_ext.c:586:36: warning: variable ‘jm2’ set but not used [-Wunused-but-set-variable]
  586 |   int i, j, k, im1, im2, ip1, jm1, jm2, jp1, km1, km2, kp1;
      |                                    ^~~
miplib/processing/src/ops_ext.c:586:21: warning: variable ‘im2’ set but not used [-Wunused-but-set-variable]
  586 |   int i, j, k, im1, im2, ip1, jm1, jm2, jp1, km1, km2, kp1;
      |                     ^~~
miplib/processing/src/ops_ext.c: In function ‘div_unit_grad1’:
miplib/processing/src/ops_ext.c:822:16: warning: unused variable ‘Dxmf’ [-Wunused-variable]
  822 |   double Dxpf, Dxmf;
      |                ^~~~
miplib/processing/src/ops_ext.c:818:10: warning: variable ‘hx2’ set but not used [-Wunused-but-set-variable]
  818 |   double hx2;
      |          ^~~
miplib/processing/src/ops_ext.c:816:16: warning: variable ‘r_data_dp’ set but not used [-Wunused-but-set-variable]
  816 |   npy_float64* r_data_dp = NULL;
      |                ^~~~~~~~~
miplib/processing/src/ops_ext.c:815:16: warning: variable ‘f_data_dp’ set but not used [-Wunused-but-set-variable]
  815 |   npy_float64* f_data_dp = NULL;
      |                ^~~~~~~~~
miplib/processing/src/ops_ext.c:814:15: warning: unused variable ‘im2’ [-Wunused-variable]
  814 |   int i, im1, im2, ip1;
      |               ^~~
At top level:
miplib/processing/src/ops_ext.c:390:18: warning: ‘zero_if_zero_inplace’ defined but not used [-Wunused-function]
  390 | static PyObject *zero_if_zero_inplace(PyObject *self, PyObject *args)
      |                  ^~~~~~~~~~~~~~~~~~~~
miplib/processing/src/ops_ext.c:271:18: warning: ‘poisson_hist_factor_estimate’ defined but not used [-Wunused-function]
  271 | static PyObject *poisson_hist_factor_estimate(PyObject *self, PyObject *args)
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
creating build/lib.linux-x86_64-3.6
creating build/lib.linux-x86_64-3.6/miplib
creating build/lib.linux-x86_64-3.6/miplib/processing
gcc -pthread -shared -B /home/dps/miniconda3/envs/miplib/compiler_compat -L/home/dps/miniconda3/envs/miplib/lib -Wl,-rpath=/home/dps/miniconda3/envs/miplib/lib -Wl,--no-as-needed -Wl,--sysroot=/ build/temp.linux-x86_64-3.6/miplib/processing/src/ops_ext.o -o build/lib.linux-x86_64-3.6/miplib/processing/ops_ext.cpython-36m-x86_64-linux-gnu.so
building 'miplib.data.io._tifffile' extension
creating build/temp.linux-x86_64-3.6/miplib/data
creating build/temp.linux-x86_64-3.6/miplib/data/io
creating build/temp.linux-x86_64-3.6/miplib/data/io/src
gcc -pthread -B /home/dps/miniconda3/envs/miplib/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/numpy/core/include -I/home/dps/miniconda3/envs/miplib/include/python3.6m -c miplib/data/io/src/tifffile.c -o build/temp.linux-x86_64-3.6/miplib/data/io/src/tifffile.o
creating build/lib.linux-x86_64-3.6/miplib/data
creating build/lib.linux-x86_64-3.6/miplib/data/io
gcc -pthread -shared -B /home/dps/miniconda3/envs/miplib/compiler_compat -L/home/dps/miniconda3/envs/miplib/lib -Wl,-rpath=/home/dps/miniconda3/envs/miplib/lib -Wl,--no-as-needed -Wl,--sysroot=/ build/temp.linux-x86_64-3.6/miplib/data/io/src/tifffile.o -o build/lib.linux-x86_64-3.6/miplib/data/io/_tifffile.cpython-36m-x86_64-linux-gnu.so
copying build/lib.linux-x86_64-3.6/miplib/processing/ops_ext.cpython-36m-x86_64-linux-gnu.so -> miplib/processing
copying build/lib.linux-x86_64-3.6/miplib/data/io/_tifffile.cpython-36m-x86_64-linux-gnu.so -> miplib/data/io
Creating /home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/miplib.egg-link (link to .)
Adding miplib 1.0.4 to easy-install.pth file
Installing miplib.correlatem script to /home/dps/miniconda3/envs/miplib/bin
Installing miplib.deconvolve script to /home/dps/miniconda3/envs/miplib/bin
Installing miplib.fuse script to /home/dps/miniconda3/envs/miplib/bin
Installing miplib.import script to /home/dps/miniconda3/envs/miplib/bin
Installing miplib.ism script to /home/dps/miniconda3/envs/miplib/bin
Installing miplib.register script to /home/dps/miniconda3/envs/miplib/bin
Installing miplib.resolution script to /home/dps/miniconda3/envs/miplib/bin
Installing miplib.transform script to /home/dps/miniconda3/envs/miplib/bin
Installing pyimq.main script to /home/dps/miniconda3/envs/miplib/bin
Installing pyimq.power script to /home/dps/miniconda3/envs/miplib/bin
Installing pyimq.subjective script to /home/dps/miniconda3/envs/miplib/bin
Installing pyimq.util.blurseq script to /home/dps/miniconda3/envs/miplib/bin
Installing pyimq.util.imseq script to /home/dps/miniconda3/envs/miplib/bin

Installed /home/dps/Documents/Github/miplib
Processing dependencies for miplib==1.0.4
Searching for psf
Reading https://pypi.org/simple/psf/
Downloading https://files.pythonhosted.org/packages/15/75/2ce93f01119077cf75674e3019b6e2774baf57cf7ae27d15dc48263049dc/psf-2020.1.1.tar.gz#sha256=f792c0b2e8c36e353c79e77a2360a4b9aa52eadc7b7ddb56f3c51d41fe0f18fa
Best match: psf 2020.1.1
Processing psf-2020.1.1.tar.gz
Writing /tmp/easy_install-4ddq1mdg/psf-2020.1.1/setup.cfg
Running psf-2020.1.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-4ddq1mdg/psf-2020.1.1/egg-dist-tmp-42op5tux
Traceback (most recent call last):
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/sandbox.py", line 154, in save_modules
    yield saved
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/sandbox.py", line 195, in setup_context
    yield
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/sandbox.py", line 250, in run_setup
    _execfile(setup_script, ns)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/sandbox.py", line 45, in _execfile
    exec(code, globals, locals)
  File "/tmp/easy_install-4ddq1mdg/psf-2020.1.1/setup.py", line 75, in <module>
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/__init__.py", line 165, in setup
    return distutils.core.setup(**attrs)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/bdist_egg.py", line 165, in run
    self.run_command("egg_info")
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/egg_info.py", line 297, in run
    self.find_sources()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/egg_info.py", line 304, in find_sources
    mm.run()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/egg_info.py", line 535, in run
    self.add_defaults()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/egg_info.py", line 571, in add_defaults
    sdist.add_defaults(self)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/py36compat.py", line 36, in add_defaults
    self._add_defaults_ext()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/py36compat.py", line 119, in _add_defaults_ext
    build_ext = self.get_finalized_command('build_ext')
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/cmd.py", line 299, in get_finalized_command
    cmd_obj.ensure_finalized()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/cmd.py", line 107, in ensure_finalized
    self.finalize_options()
  File "/tmp/easy_install-4ddq1mdg/psf-2020.1.1/setup.py", line 42, in finalize_options
    ],
AttributeError: 'dict' object has no attribute '__NUMPY_SETUP__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "setup.py", line 48, in <module>
    'Programming Language :: Python :: 3.6',
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/__init__.py", line 165, in setup
    return distutils.core.setup(**attrs)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/develop.py", line 38, in run
    self.install_for_development()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/develop.py", line 155, in install_for_development
    self.process_distribution(None, self.dist, not self.no_deps)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 759, in process_distribution
    [requirement], self.local_index, self.easy_install
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/pkg_resources/__init__.py", line 781, in resolve
    replace_conflicting=replace_conflicting
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1064, in best_match
    return self.obtain(req, installer)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1076, in obtain
    return installer(requirement)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 686, in easy_install
    return self.install_item(spec, dist.location, tmpdir, deps)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 712, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 897, in install_eggs
    return self.build_and_install(setup_script, setup_base)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 1167, in build_and_install
    self.run_setup(setup_script, setup_base, args)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 1151, in run_setup
    run_setup(setup_script, args)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/sandbox.py", line 253, in run_setup
    raise
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/contextlib.py", line 99, in __exit__
    self.gen.throw(type, value, traceback)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/sandbox.py", line 195, in setup_context
    yield
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/contextlib.py", line 99, in __exit__
    self.gen.throw(type, value, traceback)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/sandbox.py", line 166, in save_modules
    saved_exc.resume()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/sandbox.py", line 141, in resume
    six.reraise(type, exc, self._tb)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/_vendor/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/sandbox.py", line 154, in save_modules
    yield saved
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/sandbox.py", line 195, in setup_context
    yield
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/sandbox.py", line 250, in run_setup
    _execfile(setup_script, ns)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/sandbox.py", line 45, in _execfile
    exec(code, globals, locals)
  File "/tmp/easy_install-4ddq1mdg/psf-2020.1.1/setup.py", line 75, in <module>
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/__init__.py", line 165, in setup
    return distutils.core.setup(**attrs)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/bdist_egg.py", line 165, in run
    self.run_command("egg_info")
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/egg_info.py", line 297, in run
    self.find_sources()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/egg_info.py", line 304, in find_sources
    mm.run()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/egg_info.py", line 535, in run
    self.add_defaults()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/egg_info.py", line 571, in add_defaults
    sdist.add_defaults(self)
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/py36compat.py", line 36, in add_defaults
    self._add_defaults_ext()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/site-packages/setuptools/command/py36compat.py", line 119, in _add_defaults_ext
    build_ext = self.get_finalized_command('build_ext')
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/cmd.py", line 299, in get_finalized_command
    cmd_obj.ensure_finalized()
  File "/home/dps/miniconda3/envs/miplib/lib/python3.6/distutils/cmd.py", line 107, in ensure_finalized
    self.finalize_options()
  File "/tmp/easy_install-4ddq1mdg/psf-2020.1.1/setup.py", line 42, in finalize_options
    ],
AttributeError: 'dict' object has no attribute '__NUMPY_SETUP__'
sakoho81 commented 3 years ago

I forgot to add the psf package to the environment file. That's fixed now. I tried installing on Ubuntu 20.04 and didn't get any errors.

dpshepherd commented 3 years ago

I just pulled your updates and can run python setup.py develop now. However, when running One Image Sectioned FSC and 3D Wiener filtering.ipynb example, I get the following error when attempting to load an image (block 2).

AttributeError                            Traceback (most recent call last)
<ipython-input-2-0a9e4df0455b> in <module>
      9         dl.urlretrieve("https://ndownloader.figshare.com/files/15203144", full_path)
     10 
---> 11 image = read.get_image(full_path, channel=0)
     12 
     13 # The FSC z-correction is based on the difference of the sampling density in XY versus Z.

~/Documents/Github/miplib/miplib/data/io/read.py in get_image(filename, series, channel, return_type, bioformats)
     31     else:
     32         if bioformats:
---> 33             data = __bioformats(filename, series, channel, return_type == 'itk')
     34         else:
     35             data = __tiff(filename, return_type == 'itk')

~/Documents/Github/miplib/miplib/data/io/read.py in __bioformats(filename, series, channel, return_itk)
    160     assert pims.bioformats.available(), "Please install jpype in order to use " \
    161                                         "the bioformats reader."
--> 162     image = pims.bioformats.BioformatsReader(filename, series=series)
    163 
    164     # Get Pixel/Voxel size information

~/miniconda3/envs/miplib/lib/python3.6/site-packages/pims/bioformats.py in __init__(self, filename, meta, java_memory, read_mode, series)
    362         # See https://github.com/openmicroscopy/bioformats/issues/2955
    363         # circumventing the reserved keyword 'in'
--> 364         mo = getattr(loci.formats, 'in').DynamicMetadataOptions()
    365         mo.set('nativend2.chunkmap', 'False')  # Format Bool as String
    366         self.rdr.setMetadataOptions(mo)

AttributeError: Java package 'loci.formats' has no attribute 'in'

I used to be able to load this demo image with the non developer install of miplib. I don't use bioformats in Python, so I'm not sure how to chase this error down. From your link to github in the code, it does seem there is some issue with .nd2 files with bioformats?

Thanks for your continued help on this!

sakoho81 commented 3 years ago

That's interesting. I haven't seen that error before. Usually problems with the bioformats are due to missing JAVA_HOME definition or something in the JRE. But in this case it seems that something has changed in either pims or then in the bioformats Java package. I will take a look, as soon as I have some time.

sakoho81 commented 3 years ago

There seems to be a bug in pims that causes this error. It seems to have something to do with how the string conversion works in the newer jpype versions. I also tried with the latest commit in pims on Github and the problem seems to persist. Anyhow, I managed to get it working by downgrading both, pims=0.4.1 and jpype1=0.7.5. There's a warning when you load the image, but everything seems to work ok.

dpshepherd commented 3 years ago

The current environment files have conflicts that the conda installer can't solve. This seems to stem from the older numpy version. If I remove that version enforcement, the conda installer is successful. However, I am not able to manually downgrade numpy afterward.

If I try to run your examples with the most current numpy, then I get the numpy boolean error that started this thread.

I tried to install on fresh miniconda installs on both Ubuntu and Windows 10.

sakoho81 commented 3 years ago

I can't seem to reproduce your problem. I tried both the environment.yml and environment_nocuda.yml on four different computers (Windows 10, macOS Catalina, Ubuntu 20.04 LTS). Did you pull the latest files from GitHub?

dpshepherd commented 3 years ago

Yes, interesting. I will test on another machine.

dpshepherd commented 3 years ago

I tried a different machine and got the conda environment creation to work. However, I can only get it the examples to work if I compile the library, instead of using the pip install. Otherwise I run into the same numpy boolean error that I listed in the first post of this issue.

sakoho81 commented 3 years ago

Good to hear that you got it working. Indeed, the pypi package is currently out of date. I will fix that.