Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SpotMAX would like to join as a community partner #104

Open
ElpadoCan opened this issue Nov 6, 2024 · 8 comments
Open

SpotMAX would like to join as a community partner #104

ElpadoCan opened this issue Nov 6, 2024 · 8 comments
Assignees

Comments

@ElpadoCan
Copy link
Contributor

ElpadoCan commented Nov 6, 2024

1. Description of your software, organization, company or team

SpotMAX is a Python software for the analysis of multi-dimensional fluorescence microscopy data.

2. Description of the resources that you plan to contribute. Please also include the url to your project repo.

We plan to upload two U-Net models (one 2D and one 3D) trained on a large dataset of diffraction-limited spots. Additionally, SpotMAX can run the models from BioImage.IO and we will encourage users who train their own SpotMAX model to submit it as a resource on BioImage.IO.

The training dataset is available here (permanent link with DOI coming soon): https://hmgubox2.helmholtz-muenchen.de/index.php/s/BFpbnnNGNFQCTk3

If possible, we would also like to contribute to BioImage.IO code development.

3. Description of future plans on how your project will be maintained.

SpotMAX is developed on top of our previously published software Cell-ACDC.

It has been primarily developed and maintained by me (Francesco Padovani) with funding ensured by the PI of the group, Kurt Schmoller. It is already used by more than 15 research labs. Many of these labs (some of them are co-authors) already provided invaluable feedback to further improve our software.

We are committed to maintaining SpotMAX for the years to come while applying for grants to keep it alive. It builds on top of the Cell-ACDC user base that counts over 100 active users.

Thank you very much and congratulations on the incredible amount of work done so far, BioImage.IO is amazing 🚀

@FynnBe FynnBe transferred this issue from bioimage-io/collection-bioimage-io Nov 7, 2024
@FynnBe
Copy link
Member

FynnBe commented Nov 7, 2024

Hi @ElpadoCan !
We are very happy about your initiative to join as a community partner and will gladly help you onboard!

Here suggestions to get you started contributing your models and dataset (no need to wait to be a community partner, this is open to anyone):

  • upload your model descriptions. You can create them in Python code using the bioimageio.spec library (example, see Section 5. Create your own) or the model creator gui and then upload to bioimage.io.
  • describe the datasets in our format for linking them on bioimage.io. Either fill out the upload form directly (start by adding some file, e.g. a README.md. The data should not be uploaded here, but linked under source) or create the descriptions in Python code (see example) (I'd personally recommend that if you want to upload descriptions of two or more datasets) and then upload the zip package.

The description format is currently documented in a few ways:

Here you can find details on the technical steps of how to become a community partner (I will help you complete these steps):
https://github.com/bioimage-io/collection?tab=readme-ov-file#add-community-partner

  • add your info to the bioimageio_collection_config.json analog to this example
  • compatibility check script
  • compatibility check workflow

@FynnBe FynnBe self-assigned this Nov 8, 2024
@ElpadoCan
Copy link
Contributor Author

Hi @FynnBe,

Thank you very much for the quick reply. I just created PR #106 to add SpotMAX to the list of partners.

About the resources we plan to contribute, I will look into it as soon as I can. I will start with the models.

Instead, could we please wait for the dataset to be on a repository like EBI BioImage Archive with a permanent DOI? Thanks!

@ElpadoCan
Copy link
Contributor Author

Hi @FynnBe, I started looking at the notebook on how to create my model to upload to the zoo and I have a question. The notebook creates a ModelDescr using the variable model that was created by loading an existing model.

However, my model is not existing yet, so how do I initialize model from scratch? Thank you very much!

@FynnBe
Copy link
Member

FynnBe commented Nov 8, 2024

Instead, could we please wait for the dataset to be on a repository like EBI BioImage Archive with a permanent DOI?

Of course, you can upload their descriptions whenever you're ready

@FynnBe
Copy link
Member

FynnBe commented Nov 8, 2024

However, my model is not existing yet, so how do I initialize model from scratch?

Here is a notebook that I created a recent presentation from:
https://github.com/bioimage-io/core-bioimage-io-python/blob/main/presentations/create_ambitious_sloth.ipynb

In it a model is created from scratch (see section 'Description details')

@FynnBe
Copy link
Member

FynnBe commented Nov 8, 2024

image
Welcome SpotMAX! 🎉

@ElpadoCan
Copy link
Contributor Author

image
Welcome SpotMAX! 🎉

Fantastic thank you very much!!

Small suggestion, it would be nice to have the name of the software as tool tip on each partner's icon, what do you think? Not a priority at all of course.

Thanks again and I will try to contribute models now. I will also look into having automatic upload for our users of the models they train through a simple "Upload to Bioimage.IO" button on SpotMAX gui, if they want of course.

@FynnBe
Copy link
Member

FynnBe commented Nov 12, 2024

Small update:
I have refactored the ilastik example to provide script_utils.check_tool_compatibility:

def check_tool_compatibility(
tool_name: str,
tool_version: str,
*,
all_version_path: Path,
output_folder: Path,
check_tool_compatibility_impl: Callable[
[str, str], Union[CompatibilityReportDict, "CompatibilityReport"]
],
applicable_types: Set[str],
):
"""helper to implement tool compatibility checks
Args:
tool_name: name of the tool (without version), e.g. "ilastik"
tool_version: version of the tool, e.g. "1.4"
all_versions_path: Path to the `all_versions.json` file.
output_folder: Folder to write compatibility reports to.
check_tool_compatibility_impl:
Function accepting two positional arguments:
URL to an rdf.yaml, SHA-256 of that rdf.yaml.
And returning a compatibility report.
applicable_types: Set of resource types
**check_tool_compatibility_impl** is applicable to.
"""

This simplifies the compatibility script needed from a partner, e.g. ilastik example, so now almost only an analog to

def check_compatibility_ilastik_impl(
rdf_url: str,
sha256: str,
) -> CompatibilityReportDict:
"""Create a `CompatibilityReport` for a resource description.
Args:
rdf_url: URL to the rdf.yaml file
sha256: SHA-256 value of **rdf_url** content
"""

is needed to implement the compatibility check.

Hope this makes things easier now and more maintainable in the future!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants