Code Monkey home page Code Monkey logo

natari's Introduction

natari

License PyPI Python Version

Napari gaming

Sliding puzzle

Restore the image by reordering the superpixels using the W, A, S, D keys!

Cell counting arcade

Commander! Cells are intruding our dish! Control your tiny space ship using 1 and 2 keys to move it left/right. Use the 9 key to shoot a anti-cell bullet.

The image originates from BBBC022v1 (Gustafsdottir et al., PLOS ONE, 2013), available from the Broad Bioimage Benchmark Collection (Ljosa et al., Nature Methods, 2012).

Snake

Two mitochondria navigating in a cell searching for stress granules. The two players can control their mito using the W, A, S, D and I, J, K, L keys, respectively.

Ping pong

Don't drop the organoid! Use your racket and hit it back to your colleague! The two players can use W, S and I, K to control their racket, respectively.

This napari plugin was generated with Cookiecutter using with @napari's cookiecutter-napari-plugin template.

Installation

You can install natari via pip:

pip install natari

Known issues

  • To make the keyboard buttons work, you sometimes have to click within the image after starting the game.

Contributing

Contributions are very welcome.

License

"natari" is free and open source software. The code is in the public domain.

See also: unlicense.org

Issues

If you encounter any problems, please file an issue along with a detailed description.

natari's People

Contributors

haesleinhuepf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

natari's Issues

Boids live visualization (or for generating tracking datasets)

Hi Robert,

in case you get bored over the holidays I want to mention an idea that I recently communicated to @jni, but I won't find the time and the peace of mind to implement myself for a while.

Implementing the Boids flocking algorithm with live visualization in napari. Idea would be to simulate a few boids. Each boid would have a few basic parameters such as a diameter and intensity, according to which a few sub coordinates are generated (from a probability distribution function taking into account diameter and intensity), these sub coordinates would represent individual fluorophores.
The resulting point coordinates could then be convolved with a PSF (simulated or measured from a real microscope).

While being a nice visualization on one hand it would also allow generating some interesting tracking datasets with groundtruth.

Just mentioning it ... no pressure ;-)

Installation via plugin manager fails

When trying to install via napari's built-in plugin manager (i.e. clicking "Install"), the plugin fails to be installed correctly:

ModuleNotFoundError: No module named 'pyclesperanto_prototype'
Full stack trace
============================ Errors for plugin 'natari' ============================

napari version: 0.4.12


ERROR #1: Error while importing module natari -----------------------------------

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\napari_plugin_engine\manager.py in _load_and_register(self=, mod_name='natari', plugin_name='natari')
    317         try:
--> 318             module = load(mod_name)
        module = undefined
        global load = 
        mod_name = 'natari'
    319             if self.is_registered(module):

C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\napari_plugin_engine\manager.py in load(value='natari')
   1041         raise ValueError(f"malformed entry point string: {value}")
-> 1042     module = importlib.import_module(match.group('module'))
        module = undefined
        global importlib.import_module = 
        match.group = 
   1043     attrs = filter(None, (match.group('attr') or '').split('.'))

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\__init__.py in import_module(name='natari', package=None)
    126             level += 1
--> 127     return _bootstrap._gcd_import(name[level:], package, level)
        global _bootstrap._gcd_import = 
        name = 'natari'
        level = 0
        package = None
    128 

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap.py in _gcd_import(name='natari', package=None, level=0)

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap.py in _find_and_load(name='natari', import_=)

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap.py in _find_and_load_unlocked(name='natari', import_=)

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap.py in _load_unlocked(spec=ModuleSpec(name='natari', loader=

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap_external.py in exec_module(self=, module=)

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap.py in _call_with_frames_removed(f=, *args=( at 0x000001B1CB2D89D0, fil...al\lib\site-packages\natari\__init__.py", line 2>, {'__builtins__': {'ArithmeticError': , 'AssertionError': , 'AttributeError': , 'BaseException': , 'BlockingIOError': , 'BrokenPipeError': , 'BufferError': , 'BytesWarning': , 'ChildProcessError': , 'ConnectionAbortedError': , ...}, '__cached__': r'C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari\__pycache__\__init__.cpython-39.pyc', '__doc__': None, '__file__': r'C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari\__init__.py', '__loader__': , '__name__': 'natari', '__package__': 'natari', '__path__': [r'C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari'], '__spec__': ModuleSpec(name='natari', loader=

C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari\__init__.py in 
      7 
----> 8 from ._function import napari_experimental_provide_function
        global _function = undefined
        global napari_experimental_provide_function = undefined

C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari\_function.py in 
     15 from .ping_pong import ping_pong
---> 16 from .snake import snake
        global snake = undefined
     17 

C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari\snake.py in 
     19 
---> 20 import pyclesperanto_prototype as cle
        global pyclesperanto_prototype = undefined
        global cle = undefined
     21 

ModuleNotFoundError: No module named 'pyclesperanto_prototype'

The above exception was the direct cause of the following exception:

PluginImportError                         Traceback (most recent call last)
C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\napari_plugin_engine\manager.py in discover(self=, path=None, entry_point=None, prefix=None, ignore_errors=True)
    262 
    263             try:
--> 264                 if self._load_and_register(mod_name, name):
        self._load_and_register = >
        mod_name = 'napari_tutorial_spot_detection_plugin'
        name = 'napari-tutorial-spot-detection-plugin'
    265                     count += 1
    266                     self._id_counts[name] = 1

C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\napari_plugin_engine\manager.py in _load_and_register(self=, mod_name='natari', plugin_name='natari')
    320                 return None
    321         except Exception as exc:
--> 322             raise PluginImportError(
        global PluginImportError = 
        plugin_name = 'natari'
        global cause = undefined
        exc = undefined
    323                 f'Error while importing module {mod_name}',
    324                 plugin_name=plugin_name,

PluginImportError: Error while importing module natari

ERROR #2: Error while importing module natari -----------------------------------

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\napari_plugin_engine\manager.py in _load_and_register(self=, mod_name='natari', plugin_name='natari')
    317         try:
--> 318             module = load(mod_name)
        module = undefined
        global load = 
        mod_name = 'natari'
    319             if self.is_registered(module):

C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\napari_plugin_engine\manager.py in load(value='natari')
   1041         raise ValueError(f"malformed entry point string: {value}")
-> 1042     module = importlib.import_module(match.group('module'))
        module = undefined
        global importlib.import_module = 
        match.group = 
   1043     attrs = filter(None, (match.group('attr') or '').split('.'))

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\__init__.py in import_module(name='natari', package=None)
    126             level += 1
--> 127     return _bootstrap._gcd_import(name[level:], package, level)
        global _bootstrap._gcd_import = 
        name = 'natari'
        level = 0
        package = None
    128 

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap.py in _gcd_import(name='natari', package=None, level=0)

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap.py in _find_and_load(name='natari', import_=)

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap.py in _find_and_load_unlocked(name='natari', import_=)

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap.py in _load_unlocked(spec=ModuleSpec(name='natari', loader=

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap_external.py in exec_module(self=, module=)

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap.py in _call_with_frames_removed(f=, *args=( at 0x000001B1C8836B30, fil...al\lib\site-packages\natari\__init__.py", line 2>, {'__builtins__': {'ArithmeticError': , 'AssertionError': , 'AttributeError': , 'BaseException': , 'BlockingIOError': , 'BrokenPipeError': , 'BufferError': , 'BytesWarning': , 'ChildProcessError': , 'ConnectionAbortedError': , ...}, '__cached__': r'C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari\__pycache__\__init__.cpython-39.pyc', '__doc__': None, '__file__': r'C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari\__init__.py', '__loader__': , '__name__': 'natari', '__package__': 'natari', '__path__': [r'C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari'], '__spec__': ModuleSpec(name='natari', loader=

C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari\__init__.py in 
      7 
----> 8 from ._function import napari_experimental_provide_function
        global _function = undefined
        global napari_experimental_provide_function = undefined

C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari\_function.py in 
     15 from .ping_pong import ping_pong
---> 16 from .snake import snake
        global snake = undefined
     17 

C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari\snake.py in 
     19 
---> 20 import pyclesperanto_prototype as cle
        global pyclesperanto_prototype = undefined
        global cle = undefined
     21 

ModuleNotFoundError: No module named 'pyclesperanto_prototype'

The above exception was the direct cause of the following exception:

PluginImportError                         Traceback (most recent call last)
C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\napari_plugin_engine\manager.py in discover(self=, path=None, entry_point=None, prefix=None, ignore_errors=True)
    262 
    263             try:
--> 264                 if self._load_and_register(mod_name, name):
        self._load_and_register = >
        mod_name = 'napari_tutorial_spot_detection_plugin'
        name = 'napari-tutorial-spot-detection-plugin'
    265                     count += 1
    266                     self._id_counts[name] = 1

C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\napari_plugin_engine\manager.py in _load_and_register(self=, mod_name='natari', plugin_name='natari')
    320                 return None
    321         except Exception as exc:
--> 322             raise PluginImportError(
        global PluginImportError = 
        plugin_name = 'natari'
        global cause = undefined
        exc = undefined
    323                 f'Error while importing module {mod_name}',
    324                 plugin_name=plugin_name,

PluginImportError: Error while importing module natari

ERROR #3: Error while importing module natari -----------------------------------

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\napari_plugin_engine\manager.py in _load_and_register(self=, mod_name='natari', plugin_name='natari')
    317         try:
--> 318             module = load(mod_name)
        module = undefined
        global load = 
        mod_name = 'natari'
    319             if self.is_registered(module):

C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\napari_plugin_engine\manager.py in load(value='natari')
   1041         raise ValueError(f"malformed entry point string: {value}")
-> 1042     module = importlib.import_module(match.group('module'))
        module = undefined
        global importlib.import_module = 
        match.group = 
   1043     attrs = filter(None, (match.group('attr') or '').split('.'))

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\__init__.py in import_module(name='natari', package=None)
    126             level += 1
--> 127     return _bootstrap._gcd_import(name[level:], package, level)
        global _bootstrap._gcd_import = 
        name = 'natari'
        level = 0
        package = None
    128 

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap.py in _gcd_import(name='natari', package=None, level=0)

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap.py in _find_and_load(name='natari', import_=)

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap.py in _find_and_load_unlocked(name='natari', import_=)

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap.py in _load_unlocked(spec=ModuleSpec(name='natari', loader=

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap_external.py in exec_module(self=, module=)

C:\anaconda383\x64\envs\napari-tutorial\lib\importlib\_bootstrap.py in _call_with_frames_removed(f=, *args=( at 0x000001B1CD24F7C0, fil...al\lib\site-packages\natari\__init__.py", line 2>, {'__builtins__': {'ArithmeticError': , 'AssertionError': , 'AttributeError': , 'BaseException': , 'BlockingIOError': , 'BrokenPipeError': , 'BufferError': , 'BytesWarning': , 'ChildProcessError': , 'ConnectionAbortedError': , ...}, '__cached__': r'C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari\__pycache__\__init__.cpython-39.pyc', '__doc__': None, '__file__': r'C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari\__init__.py', '__loader__': , '__name__': 'natari', '__package__': 'natari', '__path__': [r'C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari'], '__spec__': ModuleSpec(name='natari', loader=

C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari\__init__.py in 
      7 
----> 8 from ._function import napari_experimental_provide_function
        global _function = undefined
        global napari_experimental_provide_function = undefined

C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari\_function.py in 
     15 from .ping_pong import ping_pong
---> 16 from .snake import snake
        global snake = undefined
     17 

C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\natari\snake.py in 
     19 
---> 20 import pyclesperanto_prototype as cle
        global pyclesperanto_prototype = undefined
        global cle = undefined
     21 

ModuleNotFoundError: No module named 'pyclesperanto_prototype'

The above exception was the direct cause of the following exception:

PluginImportError                         Traceback (most recent call last)
C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\napari_plugin_engine\manager.py in discover(self=, path=None, entry_point=None, prefix=None, ignore_errors=True)
    262 
    263             try:
--> 264                 if self._load_and_register(mod_name, name):
        self._load_and_register = >
        mod_name = 'napari_tutorial_spot_detection_plugin'
        name = 'napari-tutorial-spot-detection-plugin'
    265                     count += 1
    266                     self._id_counts[name] = 1

C:\anaconda383\x64\envs\napari-tutorial\lib\site-packages\napari_plugin_engine\manager.py in _load_and_register(self=, mod_name='natari', plugin_name='natari')
    320                 return None
    321         except Exception as exc:
--> 322             raise PluginImportError(
        global PluginImportError = 
        plugin_name = 'natari'
        global cause = undefined
        exc = undefined
    323                 f'Error while importing module {mod_name}',
    324                 plugin_name=plugin_name,

PluginImportError: Error while importing module natari
================================================================================

Cell counting: FileNotFoundError

Launching the cell counting widget and hitting run gives me an error:

FileNotFoundError: [Errno 2] No such file or directory: '/Users/piotrsobolewski/Dev/miniforge3/envs/TF-StarDist-napari/lib/python3.9/site-packages/natari/data/IXMtest_A02_s9.tif'

Installed using the napari plugin menu. Doing a listing shows the data/ dir is missing:

> ll /Users/piotrsobolewski/Dev/miniforge3/envs/TF-StarDist-napari/lib/python3.9/site-packages/natari/
.rw-r--r--   96 piotrsobolewski 17 Oct 11:56 __init__.py
drwxr-xr-x    - piotrsobolewski 17 Oct 11:56 __pycache__/
.rw-r--r-- 1.9k piotrsobolewski 17 Oct 11:56 _function.py
.rw-r--r--  106 piotrsobolewski 17 Oct 11:56 _utils.py
.rw-r--r-- 8.0k piotrsobolewski 17 Oct 11:56 cell_counting_arcade.py
.rw-r--r-- 6.1k piotrsobolewski 17 Oct 11:56 ping_pong.py
.rw-r--r-- 8.7k piotrsobolewski 17 Oct 11:56 snake.py

Snake: warning spam

After launching the snake game, the following warning is spammed in the napari warning window and my terminal (Napari launched from terminal, not jupyter/vs code etc.)

/Users/piotrsobolewski/Dev/miniforge3/envs/TF-StarDist-napari/lib/python3.9/site-packages/jupyter_client/session.py:809: DeprecationWarning: Accessing zmq Socket attribute recv_multipart on BackgroundSocket!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.