allencell / napari-allencell-segmenter Goto Github PK
View Code? Open in Web Editor NEWA plugin that enables image segmentation provided by Allen Institute for Cell Science
License: BSD 3-Clause "New" or "Revised" License
A plugin that enables image segmentation provided by Allen Institute for Cell Science
License: BSD 3-Clause "New" or "Revised" License
Story
As a Napari user, I want to access the AICS Segmenter plugin so that I can run segmentations
A/C
I know this is done when...
Details
Story
As an plugin developer, I want to have a way of representing, displaying and executing classic Segmenter workflows so that I can write maintainable and extensible code
A/C
I know this is done when...
Details
Story
As a Napari user, I want to see the AllenCell segmenter plugin in the list of available Napari plugins so that I can install it from Napari
A/C
I know this is done when...
Details
Story
As a designer, I want access to UI prototypes viewable in Napari so that I can fine tune the design
A/C
I know this is done when...
Details
feature/pg7-lamnb1-ui
)cross reference the issue in segmenter AllenCell/aics-segmentation#37
The current h2b
workflow in actually h2b_interphase
. Need to update the name in workflow_h2b.py and conf_h2b.json
When a workflow is lengthy, the buttons at the bottom of the second page of the Workflow Editor plugin get pushed to the bottom, and the user has to scroll down to see/find the buttons.
It would be nice if the buttons such as "Run all" and "Close workflow" were pinned to the bottom of the plugin window, and was always visible regardless of window size or the number of steps in a workflow.
Please describe any alternatives you've considered, even if you've dismissed them
Story
As a stakeholder, I want to make sure the plugin is 100% compatible with the data we release to the public
A/C
I know this is done when...
Details:
Story
As a developer, I want a dedicated and properly structured code repository for the Napari Segmenter plugin so that I can contribute to the project
A/C
I know this is done when...
pip
pytest
Details
Story:
As an engineer, I want to prototype the use of the aicssegmentation code from a Napari plugin so that I can identify potential engineering road blocks
A/C
I know this is done when...
Details
aicssegmentation
on the image and save the result into a new Napari layer (these are like Photoshop layers)from aicssegmentation.core.pre_processing_utils import image_smoothing_gaussian_3d
img_smooth = image_smoothing_gaussian_3d(img, sigma=3.0)
3.0
aicssegmentation
magicgui
as a replacement for dealing directly with QT
for UI componentsStory
As a stakeholder, I want to see a complex workflow running in Napari so that I can identify any potential issues
A/C:
Details:
Story
As a UX designer, I want code examples of all available UI widgets so that I can produce a UI design that is compatible and looks good in Napari
A/C
I know this is done when...
Details
QT
or magicgui
(whichever seems easier to use and/or prettier). If there is no obvious choice right at the beginning, consider building 2 versions of this demo - one for each library.List of possible widgets to include (non-exhaustive):
Story
As a designer, I want access to UI prototypes viewable in Napari so that I can fine tune the design
A/C
I know this is done when...
Details
feature/ui-only
)Story
As a designer, I want access to UI prototypes viewable in Napari so that I can fine tune the design
A/C
I know this is done when...
Details
feature/workflow-steps-ui
)Story
As a Napari user, I want to access the AICS Segmenter plugin so that I can run segmentations
A/C
I know this is done when...
Details
Story
As a plugin developer, I want to follow specific code patterns that decouple UI from logic so that I can develop faster and write maintainable and testable code
A/C
I know this is done when...
Details
Story
As a segmenter plugin user, I want to access and run Segmenter workflow processing steps so that I can produce Segmentations
A/C
I know this is done when...
Given I am on the Workflow Steps screen
When I click on the "Close workflow" button
Then I see a confirmation modal window
And I can no longer interact with the Segmenter plugin or with the Napari viewer
Given I am on the Workflow Steps screen
And the "Close workflow" confirmation modal window is displayed
When I click on "Cancel"
Then the modal window disappears
And I can interact with the Segmenter plugin and the Napari viewer
Given I am on the Workflow Steps screen
And the "Close workflow" confirmation modal window is displayed
When I click on "Close & keep"
Then the modal window disappears
And I am taken back to the "Workflow selection" screen
And all my previous selections have been reset to the default state
Details
QDialog.setModal()
but needs to be testedStory
As a segmenter plugin user, I want to access and run Segmenter workflow processing steps so that I can produce Segmentations
A/C
I know this is done when...
Details
{step_number}. {step_name}
ex: 1. Intensity Normalization
Story
As an plugin developer, I want to have a way of representing, displaying and executing classic Segmenter workflow functions so that I can write maintainable and extensible code
A/C
I know this is done when...
aicssegmentation
workflow engineDetails
Story
As a segmenter plugin user, I want to access and run Segmenter workflow processing steps so that I can produce Segmentations
A/C
I know this is done when...
Results
Story
As an plugin developer, I want to have a way of representing, displaying and executing classic Segmenter workflow functions so that I can write maintainable and extensible code
A/C
I know this is done when...
Details
test
First pass at increasing coverage / add missing unit tests
Details
Story
As an plugin developer, I want to have a way of representing, displaying and executing classic Segmenter workflow functions so that I can write maintainable and extensible code
A/C
I know this is done when...
Details
Story
As the Institute, I want to distribute the plugin to users under a recognizable name so that people know where it's coming from
A/C
Details
napari-allencell-segmenter
Story
As a segmenter plugin user, I want to have access to available image channels and segmenter workflows so that I can start processing my data
A/C
I know this is done when...
Given I am on the "Select workflow" screen
And I have selected an image layer
And I have selected an image channel
Then I can see all available Segmenter workflows in a grid
And interaction with the grid is enabled
Given I am on the "Select workflow" screen
And I have not selected an image layer
Then I can see all available Segmenter workflows in a grid
And the grid is disabled for interaction
Given I am on the "Select workflow" screen
And I have not selected an image channel
Then I can see all available Segmenter workflows in a grid
And the grid is disabled for interaction
Details
Story
As a segmenter plugin user, I want to access and run Segmenter workflow processing steps so that I can produce Segmentations
A/C
Details
aicssegmentation
package and just accessed from the plugin.Updated for the release of new features in the classic plugin as of June 2022.
Need discussion.
Content for the video tutorials is documented here:
https://docs.google.com/document/d/1ZGBgXEb60hJpV02QH6ORydbaNmWG7Ub2kAddbtyEG1k/edit?usp=sharing
Especially for users not familiar with a terminal and/or napari, it would be helpful to provide a video showing how to install the plugin as part of our docs. Inspiration: https://www.sciencedirect.com/science/article/pii/S0006349520300357#mmc1
This will expand to include videos showing new/existing features of the plugin and how to use them.
Just having text instructions with/without screenshot images.
Story
As a Segmenter plugin developer, I want reusable UI components so that I can develop more efficiently
A/C
I know this is done when...
Details
Story
As a segmenter plugin user, I want to have access to available image channels and segmenter workflows so that I can start processing my data
A/C
I know this is done when...
Given I am on the "Select workflow" screen
And I have one or more 3D images loaded in Napari
Then I can see all available 3D image layers in a selectable list
And the current "active layer" is pre-selected
Given I am on the "Select workflow" screen
And I do not have any 3D image loaded in Napari
Then I can see a warning message prompting to open a 3D image
And the layer selection is disabled
Given I am on the "Select workflow" screen
And I have one or more 3D images loaded in Napari
When I add or delete a layer in the Napari viewer
Then the layer selection list is updated to reflect the new state
Details
Story
As a segmenter plugin user, I want to have access to available image channels and segmenter workflows so that I can start processing my data
A/C
I know this is done when...
Details
napari.Viewer.events
propertiesExpected behavior:
After closing a workflow on page2, page1 should function properly again
Actual behavior:
After closing a workflow on page 2, when I click on a workflow in the workflow grid, I see the following error:
RuntimeError: wrapped C/C++ object of type QComboBox has been deleted
Story
As a segmenter plugin user, I want to have access to available image channels and segmenter workflows so that I can start processing my data
A/C
I know this is done when...
Given I am on the "Select workflow" screen
And I have an image layer selected in the plugin
Then I can see all available image channels for the selected layer in a selectable list
Given I am on the "Select workflow" screen
And I select a different image layer
Then the channel list is updated to reflect the new selected layer
Given I am on the "Select workflow" screen
And I do NOT have an image layer selected in the plugin
Then I can see an empty channel list (only header is visible)
And the channel list is disabled for selection
Details
Ch0 - Brightfield
, Ch1 - 498nm
)Story
As a user, I want to be able to adjust the function parameters and run a workflow with those adjusted parameters.
A/C
Details
Story
As a segmenter plugin user, I want to have access to available image channels and segmenter workflows so that I can start processing my data
A/C
I know this is done when...
Given I am on the "Select workflow" screen
And no image is loaded in Napari (ie. no layers available)
Then I can see a warning message asking me to load a 3D image
Given I am on the "Select workflow" screen
And I have an image loaded 2D Napari (ie. less than 3 dimensions)
Then I can see a warning message asking me to load a 3D image
Given I am on the "Select workflow" screen
When I remove all layers from the Napari viewer
Then I can see a warning message asking me to load a 3D image
Details
Story
As a segmenter plugin user, I want to have access to available image channels and segmenter workflows so that I can start processing my data
A/C
I know this is done when...
Details:
Please provide a use case to help us understand your request in context
To maintain code readability we should lint our code to make sure it's consistent with the PEP standards.
Please describe your ideal solution
Github-Action running flake8
Please describe any alternatives you've considered, even if you've dismissed them
make it part of tox and trigger tox from GH-Actions
As a plugin developer, I need a reusable custom widget that contains a slider and a spinbox that are synced to each other. Qt's QSlider widget only supports integer values, so it needs to be adapted to work with float input and outputs as well.
@Aerendel FYI
TODO
Story
As a segmenter plugin user, I want to have access to available image channels and segmenter workflows so that I can start processing my data
A/C
I know this is done when...
Details
Goal:
NOTE:
JSON is not the only way to define a workflow. Advanced users still have the power to implement any workflow in python and used inside Segmenter. To make a workflow available in the plugin as a JSON config file, all functions used in this workflow have to be "streamlinable", which may require implementation of new wrappers. Here, our goal is to make all current workflows in look-up-table available as JSON file, which will require new wrappers or adjusting current wrappers.
Story
As an plugin developer, I want to have a way of representing, displaying and executing classic Segmenter workflow functions so that I can write maintainable and extensible code
A/C
I know this is done when...
Details
aicssegmentation
code baseAs a user, I don't want disabled workflow selection steps to be visually prominent and distracting.
Story
As a segmenter plugin user, I want to have access to available image channels and segmenter workflows so that I can start processing my data
A/C
I know this is done when...
Details
Layer 0 - image name: channel index - channel name
. Refer to wireframes for exact naming format specStory
As a developer, I want my code to always be verified and ready to deploy so that I can deliver new features as fast as possible
A/C
I know this is done when...
main
, the branch must have a successful build, otherwise I cannot mergeDetails
Story
As a developer, I want a dedicated and properly structured code repository for the Napari Segmenter plugin so that I can contribute to the project
A/C
I know this is done when...
main
branch exists and is protected against deletion and forced pushesmain
branch can only happen through pull requests approved by at least 2 reviewersDetails
AllenCell
organizationStory
As a segmenter plugin user, I want to have access to available image channels and segmenter workflows so that I can start processing my data
A/C
I know this is done when...
Details
aicsimageio
to open the original image and get needed the information. This is dependent on Napari exposing channel source or metadata information.Ch0 - Brightfield
, Ch1 - 498nm
)First pass of refactoring
Details:
Story
As a segmenter plugin user, I want to access and run Segmenter workflow processing steps so that I can produce Segmentations
A/C
I know this is done when...
Details
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.