From e0bebc8a805cd6082422930a4b7324033a58b0ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caterina=20Fuster-Barcel=C3=B3?= <100411909@alumnos.uc3m.es> Date: Mon, 3 Jun 2024 15:44:53 +0200 Subject: [PATCH] Making doc guides top level and remove deprecated --- docs/_sidebar.md | 4 +- docs/deprecated/bioengine/README.md | 1 - docs/deprecated/bioengine/bioengine_apps.md | 2 - docs/deprecated/community_partners/README.md | 178 --------- .../bioimage-io-community-partners.svg | 1 - .../contribute-test-summaries.md | 47 --- .../community_partners/how_to_join.md | 39 -- .../community_partners/partner_collection.md | 54 --- .../community_partners/user_analytics.md | 38 -- docs/deprecated/consumer_software/README.md | 8 - .../consumer_software/model_runner.md | 12 - .../deprecated/consumer_software/tutorials.md | 9 - docs/deprecated/contribute_models/README.md | 89 ----- .../contribute_models/contribute.md | 15 - .../contribute_models/contribute_zenodo.md | 31 -- .../contribute_models/dummy_model_folder.png | Bin 25293 -> 0 bytes .../contribute_models/enable_actions.png | Bin 65255 -> 0 bytes .../deprecated/contribute_models/tutorials.md | 36 -- docs/deprecated/contribute_others/README.md | 10 - .../deprecated/resources_developers/README.md | 19 - docs/deprecated/user_guide/README.md | 3 - docs/deprecated/user_guide/explanations.md | 0 docs/deprecated/user_guide/welcome_slides.md | 84 ----- .../wiki_files/resource_status_accepted.png | Bin 102695 -> 0 bytes docs/guides/community-partners-guide.md | 347 ++++++++++++++++++ docs/guides/developers-guide.md | 293 +++++++++++++++ .../tutorials.md => guides/user-guide.md} | 32 +- 27 files changed, 666 insertions(+), 686 deletions(-) delete mode 100644 docs/deprecated/bioengine/README.md delete mode 100644 docs/deprecated/bioengine/bioengine_apps.md delete mode 100644 docs/deprecated/community_partners/README.md delete mode 100644 docs/deprecated/community_partners/bioimage-io-community-partners.svg delete mode 100644 docs/deprecated/community_partners/contribute-test-summaries.md delete mode 100644 docs/deprecated/community_partners/how_to_join.md delete mode 100644 docs/deprecated/community_partners/partner_collection.md delete mode 100644 docs/deprecated/community_partners/user_analytics.md delete mode 100644 docs/deprecated/consumer_software/README.md delete mode 100644 docs/deprecated/consumer_software/model_runner.md delete mode 100644 docs/deprecated/consumer_software/tutorials.md delete mode 100644 docs/deprecated/contribute_models/README.md delete mode 100644 docs/deprecated/contribute_models/contribute.md delete mode 100644 docs/deprecated/contribute_models/contribute_zenodo.md delete mode 100644 docs/deprecated/contribute_models/dummy_model_folder.png delete mode 100644 docs/deprecated/contribute_models/enable_actions.png delete mode 100644 docs/deprecated/contribute_models/tutorials.md delete mode 100644 docs/deprecated/contribute_others/README.md delete mode 100644 docs/deprecated/resources_developers/README.md delete mode 100644 docs/deprecated/user_guide/README.md delete mode 100644 docs/deprecated/user_guide/explanations.md delete mode 100644 docs/deprecated/user_guide/welcome_slides.md delete mode 100644 docs/deprecated/wiki_files/resource_status_accepted.png create mode 100644 docs/guides/community-partners-guide.md create mode 100644 docs/guides/developers-guide.md rename docs/{deprecated/user_guide/tutorials.md => guides/user-guide.md} (57%) diff --git a/docs/_sidebar.md b/docs/_sidebar.md index 9de5f511..b6762b98 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -1,7 +1,9 @@ * [Welcome](/README.md) * [Getting Started](/getting_started/README.md) -* [Guides](/guides/README.md) +* [User Guide](/guides/user-guide.md) +* [Developers Guide](/guides/developers-guide.md) +* [Community Partners Guide](/guides/community-partners-guide.md) * [Tools and Resources](/tools_and_resources/README.md) * [Help Desk](/help_desk/README.md) * [Terms of Service](/terms_of_service.md) diff --git a/docs/deprecated/bioengine/README.md b/docs/deprecated/bioengine/README.md deleted file mode 100644 index c023cb0c..00000000 --- a/docs/deprecated/bioengine/README.md +++ /dev/null @@ -1 +0,0 @@ -# BioEngine Apps \ No newline at end of file diff --git a/docs/deprecated/bioengine/bioengine_apps.md b/docs/deprecated/bioengine/bioengine_apps.md deleted file mode 100644 index 992a97f9..00000000 --- a/docs/deprecated/bioengine/bioengine_apps.md +++ /dev/null @@ -1,2 +0,0 @@ ------ -## \ No newline at end of file diff --git a/docs/deprecated/community_partners/README.md b/docs/deprecated/community_partners/README.md deleted file mode 100644 index daeaf486..00000000 --- a/docs/deprecated/community_partners/README.md +++ /dev/null @@ -1,178 +0,0 @@ -# Join as a community partner - -BioImage.IO is a community-driven open source initiative, providing access to trained deep learning models and related resources contributed by the community members. To help us better disseminate and maintain the resources, we introduced the concepts of **community partner**. - -## What is a community partner? -Usually, a community partner is an organization, a company, a research group, or a software team (of one or more) that can consume and/or produce resources of the BioImage.Io model zoo. Additionally, most partners continuously and openly contribute resources of their own. The first community partners represent open source consumer software of BioImage.IO (e.g. ilastik, Fiji, deepImageJ, ZeroCostDL4Mic, StarDist). - -### Benefits as a community partner -By joining BioImage.IO as a community partner, you will be able to: - - Participate in decision making process of the model specification. - - Show your logo in BioImage.IO and enable filtering models by compatibility with your software. - - Connect CI to automatically test new model compatibility with your software and use other infrastructure features provided by BioImage.IO. - -### Responsibilities -The main responsibilities of a community partner are: - - Use BioImage.IO as their only primary trained model repository. - - Review resources contributed by others that claim to be compatible with this community partner software. - - Maintain this community partner's models and other resources in their linked repository, setup continous integration workflows to test models and keep them up-to-date with the latest spec. - -### Who should join as a community partner? - * A team behind a software which produces or consumes trained models compatible with the BioImage.IO spec. - * A organization, group, company or team (of one or more) who contributed and will keep contributing more models to BioImage.IO. - -## How does it work? -Community partners can host their own Github repository for storing models and other resources that are relevant. These resources are listed in a [collection RDF](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/collection_spec_latest.md)–a yaml file–which will be dynamically linked to the [central repository of BioImage.IO](https://github.com/bioimage-io/bioimage-io-models). The [continuous integration (CI) service](https://github.com/bioimage-io/bioimage-io-models/actions) configured in the central repo will then pull the resources from partners' repo and compile them into items displayed in the BioImage.IO website. Each community partner is responsible for maintaining the resources that are relevant. - -![bioimage-io-community-partners](bioimage-io-community-partners.png) - - -## How to setup CI in the community partner repository -See more information here: https://github.com/bioimage-io/collection-bioimage-io#contribute-resource-test-summaries - - -## Report User Analytics - -Community partners can use our user analytics service to report resource downloads and access to statistics. - -See [User Analytics](/community_partners/user_analytics.md) for more details. - -## Meet our Community Partners -Below is a list of our esteemed Community Partners who actively engage with the BioImage Model Zoo project, contributing their expertise, resources, and support to enhance the bioimage analysis community. - - -```html - -{ - "name": "BioImageIO Community Partners", - "type": "window", - "tags": [], - "ui": "", - "version": "0.1.0", - "cover": "", - "description": "Create a table for the bioimage.io community partners", - "icon": "extension", - "inputs": null, - "outputs": null, - "api_version": "0.1.8", - "env": "", - "permissions": [], - "requirements": ["https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js", "https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js", "https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.min.js", "https://cdn.tailwindcss.com"], - "dependencies": [], - "defaults": {"w": 20, "h": 10} -} - - - -// Main React App Component -const App = () => { - const [partners, setPartners] = React.useState([]); - - // Fetch JSON data from the URL - React.useEffect(() => { - fetch('https://raw.githubusercontent.com/bioimage-io/collection-bioimage-io/gh-pages/collection.json') - .then(response => response.json()) - .then(data => { - if (data.config && data.config.partners) { - setPartners(data.config.partners); - } else { - setPartners([]); - } - }) - .catch(err => console.error(err)); - }, []); - - return ( -
-
-

Community Partners

- - - - - - - - - - {partners.map((partner, index) => ( - - - - - - ))} - -
Community PartnerDocumentationContact
{partner.name || 'N/A'}{partner.docs || 'N/A'} - {partner.contact ? ( - partner.contact.map((contact, i) => ( -
-
Name: {contact.name || 'N/A'}
-
Github: {contact.github || 'N/A'}
-
Email: {contact.email || 'N/A'}
-
- )) - ) : ( - 'N/A' - )} -
-
-
- ); -}; - -// Render the App component -ReactDOM.render(, document.getElementById('root')); - -
- - - -
-
- - -``` - - diff --git a/docs/deprecated/community_partners/bioimage-io-community-partners.svg b/docs/deprecated/community_partners/bioimage-io-community-partners.svg deleted file mode 100644 index dc59717c..00000000 --- a/docs/deprecated/community_partners/bioimage-io-community-partners.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/deprecated/community_partners/contribute-test-summaries.md b/docs/deprecated/community_partners/contribute-test-summaries.md deleted file mode 100644 index 9d967620..00000000 --- a/docs/deprecated/community_partners/contribute-test-summaries.md +++ /dev/null @@ -1,47 +0,0 @@ -# How to contribute tests summaries - -As BioImage.IO community partner may contribute test summaries. As defined in [bioimageio.core](https://github.com/bioimage-io/core-bioimage-io-python/blob/d435fcdb38c8b2152ac0d20f61ee498d88e7f1d0/bioimageio/core/common.py#L4) a test summary is a dictionary with the following keys: - - name: str - - source_name: str - - status: Literal["passed", "failed"] - - error: Union[None, str] - - traceback: Optional[List[str]] - - nested_errors: Optional[Dict[str, dict]] - - bioimageio_spec_version: str - - bioimageio_core_version: str - - warnings: dict - -In the [BioImage.IO collection template](https://github.com/bioimage-io/collection-bioimage-io/blob/main/collection_rdf_template.yaml), where a community partner is registered, the location of `test_summaries` and how to trigger them can be specified as well. -The location of partner test summaries is specified by a GitHub repository `repository`, where test summaries are hosted in `deploy_branch`/`deploy_folder`. -To update the test summaries (for new or updated resources) `workflow` specifies a GitHub Actions workflow to trigger from `workflow_ref` by @bioimageiobot. -For the automatic trigger machanism to work the partner `repository` needs to invite @bioimageiobot as a collaborator and the `workflow` needs to run on `workflow_dispatch` with a `pending_matrix` input. - -Let's take a look at an example: the [ilastik partner entry](https://github.com/bioimage-io/collection-bioimage-io/blob/aa4742d33394809e44e63ce48f9bac9ad3518122/collection_rdf_template.yaml#L63-L68 -) below specifies that test summaries are hosted at [ilastik/bioimage-io-resources/tree/gh-pages/test_summaries](https://github.com/ilastik/bioimage-io-resources/tree/gh-pages/test_summaries). -The [test_bioimageio_resources.yaml](https://github.com/ilastik/bioimage-io-resources/blob/main/.github/workflows/test_bioimageio_resources.yaml) is regularly dispatched by @bioimageiobot to keep test summaries up-to-date. - -```yaml -id: ilastik -repository: ilastik/bioimage-io-resources -branch: main -collection_file_name: collection.yaml -test_summaries: - repository: ilastik/bioimage-io-resources - deploy_branch: gh-pages - deploy_folder: test_summaries - workflow: test_bioimageio_resources.yaml - workflow_ref: refs/heads/main -``` - -The test summaries are expected to follow the folder/file name pattern "//test_summary_*.yaml", where * can be any string to differentiate different test settings. - -## Display of partner test summaries - -Once a community partner is registered to contribute test summaries with the `test_summaries` data explained above, the main [BioImage.IO CI](https://github.com/bioimage-io/collection-bioimage-io/blob/main/.github/workflows/auto_update_main.yaml) collects these summaries. The collection including these collected test summaries are displayed on bioimage.io. Currently test summaries are rendered like so: -![image](https://user-images.githubusercontent.com/15139589/226955477-6f8a8917-423f-4b9e-b08a-17bdb276aa2c.png) - - -## Updating test summaries - -The main [BioImage.IO CI](https://github.com/bioimage-io/collection-bioimage-io/blob/main/.github/workflows/auto_update_main.yaml) triggers the partner's CI for new or updated resources. -Additionally, the parter may decide at any time to rerun (some of) their tests if changes on their side (like a new version release of their software) requires additional tests or a reevaluation. diff --git a/docs/deprecated/community_partners/how_to_join.md b/docs/deprecated/community_partners/how_to_join.md deleted file mode 100644 index 92d8c397..00000000 --- a/docs/deprecated/community_partners/how_to_join.md +++ /dev/null @@ -1,39 +0,0 @@ - -## How to join as a community partner? - -Note that in order to contribute resources to the BioImage.IO Model Zoo you do not need to become a community partner. How to contribute resources is described [here](/contribute_models/README.md). The role of a community partner is described [here](/community_partners/README.md). - - -If you are eligible and willing to join as a community partner, please submit a request issue [here](https://github.com/bioimage-io/collection-bioimage-io/issues/new) with relevant information including the following: -1. Description of your software, organization, company or team. -2. Description of the resources that you plan to contribute. Please also include the url to your project repo. -3. Description of future plans on how your project will be maintained. - -The admin team of BioImage.IO will discuss the request and decide whether to approve or decline. We will mainly check whether the project are beneficial for the users of BioImage.IO and the requirements for participation are met. - -Upon approval, we will guide you to follow these steps in order to incorporate your contribution to BioImage.IO: - -1. Firstly, please create or choose a GitHub repo for hosting your resource collection that you would like to contribute. We recommend to create a dedicated repository in your organization for this purpose. As an example you might want to take a look at the [ilastik collection](https://github.com/ilastik/bioimage-io-resources/blob/main/collection.yaml). -1. Add a [collection RDF](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/collection_spec_latest.md) in your chosen repository, which lists all resources you would like to contribute. For this, you will also need to prepare the icons of your software or project. -1. Setup CI service for testing your collection RDF. Please refer to [how to setup CI service](/community_partners/how_to_join?id=how-to-setup-ci-service-for-a-community-partners39-repo). -1. Make a PR (or an issue) in the BioImage.IO Collection repo to link your collection to the [collection_rdf_template.yaml](https://github.com/bioimage-io/collection-bioimage-io/blob/main/collection_rdf_template.yaml)(under `config.partners`). We only require the link to your collection RDF here and need to agree on a partner id for you. -1. To make the maintainance easier, we also ask you to add one of the admin member as collabrators in your resource collection repository. This will make it easier for us to help you maintaining your collection, and keep synchronized in case we make changes to the specification. - -## How to register a software or application? - -A community partner can have one or multiple associated software, you can register them in the collection RDF file of your repository (see the previous section about creating a collection repository). A software is categorized as "Application" in the BioImage Model Zoo. The first thing to do is to create an application file in the [ImJoy plugin file format](https://imjoy.io/docs/#/development?id=plugin-file-format). This basically allows you define a landing page for your software with executable features such as download or test run buttons for your software. The most common use case is to create a landing page for your software. Each software will have an unique id, typically in the format of `/`. Every model can add links (manually when upload or automatically via the CI) to the software. For each model, the user can click the link on top of the model card, and the landing page will be loaded. Through the ImJoy plugin mechanism, the context information contains the current model information will be injected to the landing page, it's up to the developer who made the software app to decided how to use those information. - -To see an example, you can find the [source for the ilastik app](https://github.com/ilastik/bioimage-io-resources/blob/main/src/ilastik-app.imjoy.html) and also the corresponding entry in the collection file [here](https://github.com/ilastik/bioimage-io-resources/blob/2d2f1b12b185b1b880bfb679ed2aa981bf88d1ed/collection.yaml#L45-L59). - -## How to setup CI service for a community partners' repo? - -The CI service is an useful tool to autotomize the maintenance of the model repo and ensure a high quality for all BioImage.IO resources. -You basically need to add some testing scripts to your repo and configure it using CI services such as Github Actions, Travis or Circle CI etc. The testing script will be triggered by a new commit or pull request to the repo. For simplicity, we recommend Github Actions which can be triggered by adding a yaml file under the folder `.github/workflows`. For example, here is an example file [.github/workflows/compile-manifest.yml](https://github.com/deepimagej/models/blob/master/.github/workflows/compile-manifest.yml) that we used to verify the model spec in the central repo. - -There are at least three steps are recommended: - 1. Run the [`compile_model_manifest.py`](https://github.com/bioimage-io/bioimage-io-models/blob/master/manifest.bioimage.io.yaml) script to make sure the manifest can be correctly compiled. - 2. Verify the yaml files according to model spec with [.github.com/bioimage-io/python-bioimage-io](https://github.com/bioimage-io/python-bioimage-io). - 3. If possible, test every models added to the repo. - -As a start, you can use [.github/workflows/compile-manifest.yml](https://github.com/deepimagej/models/blob/master/.github/workflows/compile-manifest.yml) as your template. - diff --git a/docs/deprecated/community_partners/partner_collection.md b/docs/deprecated/community_partners/partner_collection.md deleted file mode 100644 index 761f36a5..00000000 --- a/docs/deprecated/community_partners/partner_collection.md +++ /dev/null @@ -1,54 +0,0 @@ -# BioImage.IO Partner Collection - -A BioImage.IO partner collection is a YAML file in GitHub repository of a community partner. The file adheres to the collection RDF specification described [here](https://github.com/bioimage-io/spec-bioimage-io#collection-resource-description-file-specification). - -The appearance of the partner collection on the website can be customized by the `config` field as described in the next section. - -## Customizing appearance on bioimage.io - -Like any RDF, a collection RDF may have a `config` field to hold non-standardized metadata. We currently use some of this metadata to customize the partner collection appearance on the bioimage.io website. The fields used here are subject to change, but as a community partner we'll keep you in the loop on any changes here and will likely formalize this part in the future. - -A typical partner collection RDF `config` field may look like this: - -```yaml -config: - # a url for the user to get more details about the collection or your project - # it can be a markdown file (*.md) hosted on github, you need to use the `raw` url - # or an external link to your website - about_url: http://details_about_my_collection - - # these tags will be used to filter items when the user select this collection - tags: - - awesome - - # the logo for the collection, you can use an emoji or a url to a png/jpg/gif/svg image - logo: 🦒 - - # the icon for your collection you can use an emoji or a url to a png/jpg/gif/svg image - # note, this must be a square or contained in a square - icon: 🦒 - - - # settings for the splash screen - splash_title: Awesome Collection - splash_subtitle: Awesome Collection is Awesome! - splash_feature_list: - - Easy to use... - - It's just awesome... - explore_button_text: Start Awesomeness - background_image: static/img/zoo-background.svg - - # the available resource types in your collection - resource_types: - - model - - application - - notebook - - dataset - - # the default resource type you want to set, set to `all` if you want to show all your items by default - default_type: all -``` - -You can find a complete example [here](https://github.com/ilastik/bioimage-io-models/blob/master/collection.yaml). - -If you want to join as a community partner, please send the link to BioImage.IO by following the instructions for [joining community partners](https://github.com/bioimage-io/bioimage.io/blob/master/docs/community_partners/how_to_join.md). diff --git a/docs/deprecated/community_partners/user_analytics.md b/docs/deprecated/community_partners/user_analytics.md deleted file mode 100644 index 65c7c124..00000000 --- a/docs/deprecated/community_partners/user_analytics.md +++ /dev/null @@ -1,38 +0,0 @@ -# User Analytics - -We provide the analytics service to help consumer software to keep track of their resource (including model, datasets etc.) downloads. - -### Report resource downloads - -To help us maintain the resource download statistics at BioImage.IO, please send a report to our analytics service when a resource item is downloaded. - -Under the hood, we use [matomo](https://matomo.org) to track the user downloads. It provide tracking api in various programming languages and frameworks, see here: https://developer.matomo.org/api-reference/tracking-api. - -The easiest way to report a model download is to send an http request to matomo. - - -You need to construct an URL to report the download: - -`https://bioimage.matomo.cloud/matomo.php?download=https://doi.org/[MODEL DOI]&idsite=1&rec=1&r=646242&h=13&m=35&s=20&url=http://bioimage.io/#/?id=[MODEL DOI]&uadata={"brands":[{"brand":"[CONSUMER ID]","version":"[CONSUMER VERSION]"}]}` - - -In the above URL, you need to provide the following parameters: - * `[MODEL DOI]`: The resource doi, it should be similar to `10.5281/zenodo.55555555`. Also note that Zenodo deposit has concept doi and version doi, we recommend to use the concept doi such that the downloads across versions can be aggregated. - * `[CONSUMER ID]`: The id for the registered consumer software, for example: `ilastik` or `deepimagej`. - * `[CONSUMER VERSION]`: The software version for the consumer software. - - -### Obtain resource usage statistics -You can get the user statistics from via the HTTP API, for example: - * To get the global statistics of the whole website: `https://bioimage.matomo.cloud/?module=API&method=Live.getCounters&idSite=1&lastMinutes=30&format=JSON&token_auth=anonymous` - * To get the number of downloads: `https://bioimage.matomo.cloud/?module=API&method=Actions.getDownloads&idSite=1&period=year&date=2023-03-01&format=JSON&token_auth=anonymous` - * To get the number of downloads for a specific resource (via DOI): ```https://bioimage.matomo.cloud/?module=API&method=Actions.getDownload&downloadUrl=https://doi.org/`[MODEL DOI]`&idSite=1&period=year&date=2023-03-01&format=JSON&token_auth=anonymous```. To see an example, click here: https://bioimage.matomo.cloud/?module=API&method=Actions.getDownload&downloadUrl=https://doi.org/test&idSite=1&idCustomReport=1&period=year&date=2023-03-01&format=JSON&token_auth=anonymous - - For more detailed API, see here: https://developer.matomo.org/api-reference/reporting-api - - -Please note that the reports are not processed in realtime, this means you won't see the statistics for your reports immediately: - - In the report request, we need to configure the date properly. For example, we can change period to `year` and date to `2023-03-01` (see here: https://developer.matomo.org/api-reference/Piwik/Period) - - The report will only be generated every 15 minutes: https://matomo.org/faq/general/faq_41/ so we won't see the report immediately. - - diff --git a/docs/deprecated/consumer_software/README.md b/docs/deprecated/consumer_software/README.md deleted file mode 100644 index d87a01c6..00000000 --- a/docs/deprecated/consumer_software/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Consumer Software - -The BioImage Model Zoo allows community partner software to consume the models from our website. Users of our partner software can download models and use them to process their own data. - -Here you can find some resources to help users to use different consumer softwares: - - - [Tutorials](/consumer_software/tutorials.md) - - [Model Runner](/consumer_software/model_runner.md) \ No newline at end of file diff --git a/docs/deprecated/consumer_software/model_runner.md b/docs/deprecated/consumer_software/model_runner.md deleted file mode 100644 index 835e2099..00000000 --- a/docs/deprecated/consumer_software/model_runner.md +++ /dev/null @@ -1,12 +0,0 @@ -# Model Runner - -Model Runners implement the core logic to use a model for inference (or training) in a [consumer software](README.md). Furthermore, the model runners are used for testing the bioimage.io models independent of a specific consumer software. -Each Model Runner supports one or more [weight formats](https://github.com/bioimage-io/spec-bioimage-io/blob/master/supported_formats_and_operations.md#weight-formats) - [consumer software](README.md). - - -These Model Runners are currently used by consumer software: - -| model runner | used by ilastik | used by DeepImageJ | used by Fiji | -| --- | --- | --- | --- | -| tiktorch runner: https://github.com/ilastik/tiktorch/tree/master/tiktorch/runner | yes | no | no | diff --git a/docs/deprecated/consumer_software/tutorials.md b/docs/deprecated/consumer_software/tutorials.md deleted file mode 100644 index b66b63d2..00000000 --- a/docs/deprecated/consumer_software/tutorials.md +++ /dev/null @@ -1,9 +0,0 @@ -# Tutorials - -The models in the BioImage Model Zoo can be used in the community partners. Please, refer to each software documentation to know how to run the models accordingly: - -- [Ilastik](https://www.ilastik.org/documentation/nn/nn.html) -- [DeepImageJ](https://deepimagej.github.io/tutorials.html) -- [ZeroCostDL4Mic](https://github.com/HenriquesLab/ZeroCostDL4Mic/wiki) -- [ImJoy](https://imjoy.io/docs/#/) - diff --git a/docs/deprecated/contribute_models/README.md b/docs/deprecated/contribute_models/README.md deleted file mode 100644 index 49ae3d2b..00000000 --- a/docs/deprecated/contribute_models/README.md +++ /dev/null @@ -1,89 +0,0 @@ -# BioImage.IO Models - -A BioImage.IO model is a zip file containing all the items, technical description and metadata of the model, together with the trained architecture of the model. Briefly, a BioImage.IO model has at least, the following items: -* Trained model in the correct format (check the Resource Description File Specifications for the [supported formats](https://bioimage.io/docs/#/bioimageio_preprocessing_spec)) -* Example input image (numpy array) -* Example output (numpy array) -* Resource description file specifications (`rdf.yaml`) -* An example cover image for visual representation of the model in the zoo. - -In some cases, the model may need additional files. - -## Model contribution requirements - -- Follow the [BioImage.IO Model Resource Description File Specification (RDF)](https://bioimage.io/docs/#/bioimageio_model_spec) with `format_version>= 0.4.5`. -- The model is expected to be cross-compatible among the [consumer software](https://github.com/bioimage-io/spec-bioimage-io/blob/master/supported_formats_and_operations.md#consumers), and should always run on at least one. -- The model should be well documented (i.e., human readable name and rich description tailored for life-scientists, citations) -- The model should be public and can be used by anyone under the chosen licensing conditions. - -## Model contribution guidelines - -### 1. Create a BioImage.IO model -Two options: - 1. Choose one way to create your model: - - Automatic export of the model using the [bioimageio.core python library](https://github.com/bioimage-io/core-bioimage-io-python) (recomended). - Example code [here](https://github.com/bioimage-io/core-bioimage-io-python/blob/main/example/model_creation.ipynb). - - The main function to build the model is `bioimageio.core.build_model`. Check its input variables to know what has to be provided. - - Manual generation of the model: - - Create the [BioImage.IO Model Resource Description File Specifications](https://bioimage.io/docs/#/bioimageio_model_spec) (`rdf.yaml` file). - - Each field on the file is either mandatory or optional. In the Bioimage Model Zoo web page you can find different examples. - 2. Check that the model is correctly created: - - Static validation of the model format using the [bioimageio.core python library](https://github.com/bioimage-io/core-bioimage-io-python) library (*e.g.*, in the terminal, `bioimageio validate /../rdf.yaml`). - - Dynamic validation of the model's deployment (*e.g.*, in the terminal, `bioimageio test-model --weights tensorflow_saved_model_bundle --device cpu /.../rdf.yaml`). It tests that the model generates the expected output. - -### 2. Upload the model to the BioImage Model Zoo [VIDEO TUTORIAL](https://oc.embl.de/index.php/s/JBWwJGgsXh0vYM6) - -**SEE A VIDEO TUTORIAL [HERE](https://oc.embl.de/index.php/s/JBWwJGgsXh0vYM6)** - - - - In [BioImage.IO](https://bioimage.io/), click on `+Upload` and follow the steps: - - 1. Log in to Zenodo and give access to the BioEngine application. You will see an automatic message once you are logged in. If not, refresh the page. - This step needs to be done only for the first time you upload a model. - 2. Upload your model RDF. - - - - 3. Complete the missing fields. - - - - - - 4. A [pull request (PR)](https://github.com/bioimage-io/collection-bioimage-io/pulls/bioimageiobot) is generated (this process may take some minutes). In the PR, the model is tested by a Continuous Integration (CI) workflow for its technical correctness. and reviewed by a maintainer from the BioImage.IO team. This PR is aimed for further discussions between model contributors and the BioImage.IO team. - 5. Once the model passes all checks and has the approval of a maintainer, it will be added to the BioImage.IO collection and displayed in the webpage (this process may take some minutes). - - -## How to get most of your model documentation -### Model naming - -Models are expected to be used by life-scientists, thus, it is expected that the naming is human readable but also informative enough regarding the final application and the biological tissue being analysed. Example: - - **Name:** `Neuron Segmentation in EM (Membrane Prediction)`, `B. Sutilist bacteria segmentation - Widefield microscopy - 2D UNet` - - -### Model Tags - -The tags in the model RDF are used to search for each model in the BioImage Model Zoo. The more informative tags you write, the easier it will be for a potential user to find your model. Example: - - **My model description**: An encoder-decoder trained for denoising of point-scanning super-resolution microsocpy images of HeLa cells microtubules - - **Tags**: `denoising`, `PSSR`, `microtubules`, `encoder-decoder`, `deblurring`, `fluorescence`, `2D`, `HeLa cells`, `deepimagej`, `ilastik`, `image restoration`, `trained-model` etc. - -### Model links -The BioImage Model Zoo is a software webpage. Each model is displayed with an interactive card that can have datasets, notebooks, applications, consumer-software or test-run buttons linked. Example: - - **Links**: `imjoy/BioImageIO-Packager`, `ilastik/ilastik`, `deepimagej/deepimagej`, `zero/dataset_fnet_3d_zerocostdl4mic` etc. - -### Representative Covers - -You can include different cover images that represent the analysed tissue, imaging modality, image processing task and the performance of the model. This image will be used in the model card to guide the users through the model search. - - -## Considerations for the model description file (format_version>=0.3.0) - -When following the BioImage.IO model RDF specification provided at https://github.com/bioimage-io/spec-bioimage-io, it is important that you pay special attention to the following: -* Choose test input image(s) and generate the respective test output tensor(s). This enables our scripts to test your model for technical correctness and to test which [consumer software](https://bioimage.io/docs/#/consumer_software/model_runner) can process it. -* Pre-processing and post-processing should be always described. You can check which [preprocessing](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/preprocessing_spec_latest.md) and [postprocessing](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/postprocessing_spec_latest.md) functions are supported at the moment and open an [issue here](https://github.com/bioimage-io/spec-bioimage-io/issues) if you are missing a specific operation. -* Do not forget to include any additional files needed for the correct execution of the model during the upload process. diff --git a/docs/deprecated/contribute_models/contribute.md b/docs/deprecated/contribute_models/contribute.md deleted file mode 100644 index 378bf318..00000000 --- a/docs/deprecated/contribute_models/contribute.md +++ /dev/null @@ -1,15 +0,0 @@ -# Contribute to BioImage.IO - -You are welcome to submit your **models**, **datasest**, **applicaitons** and Jupyter **notebooks** to BioImage.IO. - -To add an resource item to BioImage.IO, you need to provide a set of basic information about the resouce, including name, description, authors etc. and we will generate a resource card to display in the website. - -For [community partners](https://github.com/bioimage-io/bioimage.io/blob/master/docs/join-partners.md), you can add models directly to the linked repository. If you are not part of the community partners, you can follow the instructions below to submit resource items (models, datasets etc.) to BioImage.IO. - -## Submit to BioImage.IO -* Step 1, prepare a [`Resource Description File`](/bioimageio_rdf_spec)(RDF) and complete at least the mandatory fields and ideally also the recommended fields for different types of resource. - -* Step 2, save the RDF file in one of the public git hosting website, it is recommended to store the RDF file in your project git repository on Github/Gitlab/Bitbucket (make sure it's a public repo). Alternatively, you can post it on [Gist](https://gist.github.com/), copy the the **raw** url to the actual file content. - -* Step 3, post the url to the comment box below (if you don't see it, click [here](https://github.com/bioimage-io/bioimage-io-models/issues/26)). And the admin team will check and verify the format and incooperate to BioImage.IO if the submitted file is qualified. - diff --git a/docs/deprecated/contribute_models/contribute_zenodo.md b/docs/deprecated/contribute_models/contribute_zenodo.md deleted file mode 100644 index 9ba69ee8..00000000 --- a/docs/deprecated/contribute_models/contribute_zenodo.md +++ /dev/null @@ -1,31 +0,0 @@ -# Uploading a Model to Zenodo for BioImage Model Zoo - -**Note:** This tutorial provides a temporary solution for uploading models to the BioImage Model Zoo via Zenodo while the upload feature on the BioImage.IO website is being fixed. - -## Purpose -This tutorial will guide you through the process of uploading a model to the BioImage Model Zoo community on Zenodo. The BioImage Model Zoo project aims to collect and share bioimage analysis models, and your contribution is valuable. Follow the steps below to upload your model. - -## Uploading a model - -1. Open your web browser and navigate to the Zenodo website at [https://zenodo.org/](https://zenodo.org). You need to create a Zenodo account if you do not have one. - - Zenodo initial page - -2. On the right, close to your username, click the "New upload" button to begin the model upload process. Make sure that the repository is set as public. -The files in the BioImage.IO zip have to be uploaded one-by-one (See the example in the image below). Note that you can drag & drop all together at once. - - New upload - -3. Add `bioimage.io` on Keywords and subjects. This is crucial for us to identify your submission. - - Find BioImage.IO community - -4. Follow the on-screen instructions to provide the required information about your model. Make sure to include a clear description, relevant tags, and any necessary documentation. See [this documentation](contribute_models/README.md) for more details on the required files and information. - -5. Once finished, click on Submit. - -6. Your model will be proposed as a new contribution to the BioImage Model Zoo automatically. If the model passes all the tests, it will be automatically displayed in the Zoo. If the model does not pass the test, the GitHub users indicated in `maintainers` in the `rdf.yaml` file will be noitified through GitHub. This process can take 12-24h. - - -## Conclusion -You've successfully uploaded your model to the BioImage Model Zoo community on Zenodo. Thank you for your contribution to the BioImage Model Zoo project. Remember that this is a temporary solution while the upload feature on the BioImage.IO website is being fixed. We appreciate your patience and support! diff --git a/docs/deprecated/contribute_models/dummy_model_folder.png b/docs/deprecated/contribute_models/dummy_model_folder.png deleted file mode 100644 index 0b747fd493e08240b904887e92beb503ba8d7676..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25293 zcmc$`RX`j;vo?%7A-F?GaCevB!QI{6T{pp<;O_1o971q+cX#(?Sw52Yod3T#x1a3I z%vM$RbXQOJ^i)01ge%HRq9PF>K|nyDN_`VkhJb)FgMfe}LV$ahgh=-`ydPj(M5I&^ z-haLbreW{@@m<9=T~!>+T|JDP%^)o79qh~)TuhwJ%|4zSAV~V_=I3i(;yekmMGQS70{xw0M`jjX8*WwT2f15!4Uo&Y7W%xu!7N^r3 z|4mA+-@HK}f;W6ntYUu0ntkWuBBZ25(qBXJZ{yOa%gf8Xw5E;gK4KF?e{XI^V`SuQ zBslhTG3RV2j_epx%p(jFb^vl>S@f>SG=~$QeeW0G*VS^hPsih$4w7jd-&@Bn)S6&i{2Sj2DVod3k=E)a#q~ zyS#lp`@iJQIsb8a$^Yl_Js;|JERvq3;aN|wqi@NK21)17^EQBk{k$*ud|m`8f4$jlMMx?fN^?0>l(6j`2r4VvTQK zt8c$Gul7~{n73lNd+NoxoBA-uFIskJ@^tI3(c+o3fI2z*ve(;Derx--YfcrguaKN) z+y5~ebTi;rW1;;*Z$=lQShc;F={beF&K9tOEmEp(kEBE5x(;7hY;SHFIFeYU7#ee1 zZRR!M?#a(EqEVpis4$S-HgTX~qxj1h!R^I%?}T_?H+4F`9$U0j*#+r^{%37I+Izig z_e{3FPXgBWn^p#IoX;d9<`a5fWo79(Dl|-b56;ilI+I7wKQi{+j{ z)zV#0H4fdg5wGbRMHS}A8jtySI;`%lCLPSTk5N{Yj%zN&e7KsdMyT5a!QZJQS-S$z z7zR-a%O~VPU1?+drsLG)M%c5-`l5AS$~K^iITy(JE%DkMrY>+A7|F}_R>ieghI4)mz-vu^tyzqya~AoyJIY@@@)~&4LE2~6cALTNSVwuE&VR?$ z^Gf%+*u1ILZ~GJ%2!wxIx;tV|u4`gQb=7(HT_Y`osuPN`0P>*nnz-l_>mYym>Ik58 zzwI$^`BQvt^GpbVSt67eA`Z`5Ucm*SpLI}Ycc}jG>i%+x+jV~CDSx;ai0+5H z*(5mAm8sDcTF=RlUhA?584{ZvR8jFGB+qR&r$Vojpt>6FUDQ`C0B^ap74BPktXFup zw~BuHbSs20(ul)mWBw`^SZzVGxX*tt*xsMEs<2`9bh40k+QIqYkd446nnY<)#``JL zU#J8l<-u3JH-!t(`gOn9LXnc(@!_$;6>veXmY!MgXVuA8CiqsTW~%K`i?)eJA$mC+ z-wlFZ!=BYidEivdhbBPdZRoBFvli?ZXylMxAibnDa))+U=4ZYj$1T@iY=Hn?PBv?u zHX$-ovvrACaS(6dZ)O_ixqv6c{iR>DICZOPbxK{ak`dPdAaCA`Y-%_rmh6lG8Jka@ zIHtR~*?MF##fR5wEiqqyj$X+u5;=?vdbOpbxIN*rXSwW^VL$Rtrj?se?phS*^-cZ_ zrbpIVZa!iiZ_6$+&TvunV~WWN=gA@%JJZ4z4n3SuYCXoMz3UK*<-i|gk;K6y#L+J{ zTj5Pw$t>w9wCox(BbBh-l$1>hVRxI{9v-6BZfY5l8MJ4y8iTbC%F2_Sl(}27p}5|0 zgZscE`E8a>^#ZqNZ)|gyp3+|nPkvX>qHOIBW#31ya2>a~zLD6Tyf{Uxbyj?ZUj87& zdC=!&fZ@Q;lf^Gboq%XKG2yYr!bDZVr*i3z9{VM9_Vv)`vf0P}E$O(CNhA7aZg^$* z+V4Vrxl-l44;;Kv#?vgwQiHfGEjlW+p>ugwlW5CCsI-X3q9%DY7ZeMNp+a>n2FWj>dRX<~g;jYza|(~Vj#kR}Gs&Dx!?ytQjYqnT*`tJ%>ooIHLr5rq{P1u@R5Qh>y@0D zn3uj8W=ic`MPjM&1nj#t7Jnj;y%a8Lw=KEfa}DuzM?|JLX1BqL7P#zExLEEI>l%4f zd~m(II5x5w>6?Cfc`g<@ygVEooTY?}xq7&{RoL`sEh*tBI@nUP%?1&j_i8KE7&%DT zxAiS2IZRbZ`lK(|DRk3>&M34XIc89c^9Tl_uAY6Rv3PMS`XI+YyYx|?GwtZH1m zwN*smYmD!w)aNR09z-v@0qM^bbWz=vCCYNdBwTiVOtFRQJMB5t=YyY*`N@-`+pEYI zoJ*W61oXGdKwx3+CLx(&f={e0#eRegzR$eShdNU!i@ViJO1}oLN7~W(n}Az;zyE2l2%iEH>>XU#NSY5}O1aEk_Ga}=fl{vIM zyS2EKFcqS$`(eZQ`e$S#aCd{th_f(S($h94)s+Y?2iCnLx-syuSY{5Lf~#{uhw(P(#^#QMWU#AI&)sg_Odm`eTzZOh zA-7&;BV%|3GOf4IkA}|CKPXxrCThmF0xJs>V6i*79+;g}x2|3{yO@H_^bO)gf)yWyrP<3aW;0Kic75S*eD`d#qBKBl{e#|2b@mC(_plP_Rkk;oWAn!_l&0 zt3#3G#5Pe?#6T8|lF2|eH#v-Q45gmk?JO?d3C@agIgt~rGVKy;jp#tRC5g^q?4l7 z3pAF%)BtOb=@c}(U@D{w%|<|AWBhV3%-DZG=lxyWY0j=LWc{HuQ21@jY%?3y{b9As z6=281H=#|vk;`^Y*oN-m3!Q`FnU2fFom^k>lD6VNzxn1CjaBnegz(vMzn8_AME}z% z=K%d~zdfebuX9TM@$BvWl98Vs4v3h1ouf5q+y*QMp+ zWogd2(kQ2)5Bt%VVDgay*w^fHF|AQVcVE^-$lL0?EvYnpfzr#vmf)Wb{S&T)_!6iB zV)TB&;7j{$MP-^lKq0w??>3-TJAy!iRug?qM?f(@>G%F!tWmfa!+TU>eg8nbmos7k zZT)k6mQr%wUTn_pHyRnC)KU9(oEq<5Je6BU0UeqbFTj@age6MiB}|h$r9+zhavAe3;i{ERiKgXpaADxS0ZFgZqw*Y_xB1O}D{h z@}v!B^A?->0IjAQeCq2C{e*hzpLC%QE}kzi<+_=FmL?e?KR&L*P=b^qttuW}Kz)=r zXe_lpQ?{IGt86x20NMeLt@};)YdI!|#MDc?dyu!M70nBHY4AtV>(wd{uD5IAh~OJ< zeSluH(Ei}M$xYknP54L|gn>VpIV^ZLvY|4z;CYE_t!32I5mTo7+ou^Ai*~p=8|hCu zADAYJrC_h1bT#^}v>2&0H`x?TL|Bre8Asq_(CzPZ?AU=Vc%u^VY)!!h`W6o*upL*b z%H{1U4V|R7lyJ;uj_7dnwI;J#OD!Dd60JTvOL$eemeD9VN>Tg0flqGf=x_9kaZ5Zm zqC}Dow7NAKVNDKCw+BD-eZh%vcDhia&F1G`?InAj8{n}3@%b&zVyx9o+Oa>^{m=C^ zaB3#IptU6*h0hwqIV8#48Uqs_c21AQk5pvE)y|0CR+C_712pgajoMx+mUPE_0e$E< z6TYOQ2h_oH%CK5@TFeGr=tHr$zGb^b#{5o!Txj2=X@x3TOyH{TkPe!gks2I*S&G$~ z6ZSv2zb_sp(b)YbBInJ4&xH<)C={0C^lV!lWZ-g0lPFo+6C|Sq zFNb^2p(!n({P(!$fqh*9GxN{krn|(uMHP-l=Gj#%YT&Hf!t#$J&*aMmLr>nHKZ^9I zb%&BTp`nj7Kg|vhN0>|-XrIKO?(Ii3r_lU~q)<-lqnxfvuC})+$L?{)@D!&!;GrT&0H!bZ} zy|&PR?5s`mK|yy6@ps2HU039c$u|VEyOH3r>>J2UrV}|s+XXmRV1n0~)Qn>8%D1jm zjzsibArm72lkz;rn3nU~ZL4jj>2p9}>i5sTi1T$^J zDp4R$f?dhZ-YEUxuPiQJ&-T^ZQsX6|vkglO5Fnk-k<|oV^!(WEKmDKCt*4^|G0m^H zkI=`wN{At83vGeHl_iMK6b8g{T!Gkfw3e0rsyTP;P0pnrTerK%_=c4CAl!~umCuX^ z)^|B;>7RM%E8>6ukSchhl#aESI+e{*P4<~cZ^?N~8RC-X$OYX@#gS84yaCTntaIJ( ztFvkC*UJu7JO z2xeXp(bS3gFB-DaM?C?P# z4c8}cI^3MoKz+68B@wSS3m&9p=eM--s#So=M#nRc;9{fG7dTY!XUNCVUd7U>KMDB| zmed-X*fkCb-vk{FEI&7PxLog%{~}URR7E9D$KG<^bFbR(!OWJjm1eFxLqQomu5@h= z!+<@~WQ+B6RT)4n#zsS3Jbn)X%3j|ok-f34AX%!={ZLl-4Rdqb@fdJx*noRk}>W{=b z!UA?HCPixMebhlzI*@#P;6^BdKZIDaI&joSQiBoGpsvY@i!Wu=WHdx5@Z$4R^mAc! zF|R9a*^sZ3#ZepeDpHy3bXz+jmcn!z4&~H10%{RGbt*KKAi|YRB>*fgEta}s>?$|^ z$!9$R+)s_kgmS0Y#+8ffp)d2IeB90rjG`x-CKjaxBd|7X;LGCv@$v$D#{p5;bq-5q zwRi|dD$MNs0^#S%l8$;Z@4Lt`kUy-qSO$WI8#{HD5*I9V^k`2?3DH|OC|bXR5e4#mY0zW3BQ{2dqFRAo^? zO21+eM!#JsLM)9!!$ORgcyKibIBvwZj1AHiD^-5cm`VX0;I*bKyHFGkKp@DP4~ zvF;S#Z>-&s>SZLu<22P(Emk_YIXiUo;(SHNwBLvNu6g!L%pQVgd`kJMWO#{(efTbw zCl?P=o$q=_NDMwX%d5&Rbm?ov3_jR7c}&muU`j^ z_yH-;zpe=-S$xM)UE6q3bmtDMdo!BX9bPb=d&@+$uD1+nlP5QB2tpRd>u?#k7XJ8S z{VIVaEg&g~guj4=q$|}HkQgI}E;rs;0k`_Hzj1vS$X*SKde6eiz!qOvr z{dUgVWchI+e1f<_nLKn89L4XS_9TO8sbnUSJg8TN+geVI1=lDpqqrmJP`KG)W%Av& z=PU=!G`AEO4wv^XE*t}wtQA;3L@9}e4#V2tY0O= z|AwQuNj;&2@s&mG@(H3TK|O{d$t*{IH{smezR*A~hXZ0w*8R*kK{$h?9E;u4tNeJh zd?~zZ|H-4LKgFtx+on@m@0TM7V+^F;F1J&A_wr%_nmSJLZWdvj=@)FpXzc*hG?K@u zow7e}{S)`5Pv^629UvKrEKJGd&-r>1>uL&eK$mLX!Cm#{)gG|~!7=>Q)FyB+G@D15 z4fRp7x_LhKn7eFQu2NHrDX&C}RYNury?f<%J-LHhd)z1fS43D>^_X>-`e12>DmdIc z3u~+jj|`s9iLqlhu4n1_+~beG%h5>^+g-4?#vc6EJdI(-oq727+07_RXjlo@ewtFv zR~PjW;}+8Jq7p<0N16|EuBgIp@+GsF1K*;_vDuna=Rhb47oNmfHA$mCDH4CgNEAdg z)H)O8*mg{Wjv9MT_6Lh}g0!vzUPSG>2TUC^Cm~Q^Syt5MpuG7V0DlPY@Gd=lU>^V> zD+Ydjb?1ajVQ9FIlH2i`S+yk%59$1l%i)NHw7K&>JK4{lJaO`K<@U>UK8JIWvGlM^ zj~tx$obO=sU)_zR>XgNQOYE<^#?=r~xSjW~^^hgk_%Y*ghBmumQN{su^hVSCK`^`g z=JlBp)AH&!$84+2^<7~uQgex48M&kJuo$JE-}hb(`|D5Dq}soOJW}dk_oAaVxNzlu zQhe97vgwD0TvZ95FG6mX!a1~mBw>A zeBr-*R9x2DJMc1RMYR5F0(=-vjT0q(vDurebvry{c72kED)H?fn1IA{8hbtQdBI`S zXYllSwbvJHi?%y$zPSx$s&&1n7}I*8=WwB(>|7ZH{c4nYSgc>3tuFRr_JC^uA(%px z=VK%#9{&*I3rC`MXJEYe3L>U!vAJe0T^i@Cw$N6n(+=-~%vD@^Rnq^I=WOZ^lc2H6 zg6(E;MDCF7sKx^{gJF9#r&p`}4p(c!yc`DY3yDp5jhN>1jUCI`BdD?P1LRouE-i%* zq`>~!wN}X2#JzUaQMpKT=AxA_W?>-5X>(TZm*XTtAU8B$i; zv!d|c$Z%iYTSA`}Yp4BFR^w~nhg!>M*PIKx+NAvNQk<3SKG3X&o*5G^UqJVvP7M{4vKp``Fzdtwa=FvLOF0zwfiO3 zh)4S@2#g=yRi;{6S*{vH8mG+H;U%&-2RE>$Fjw*r@`%3|s&Zb2naxyI%-t|Z8K>~A z%Ih2lzzdgd$R8@Rn`Ukz{4$i1C2;@4Y=PPDt6xxAfy+_(r*i#q0utm1Si z7ZS?awnN?}=!{?qRChYm`!fL$h;d-VXZ9B8U1fW5_H&ehv*+tqC{Vvy174uULv^dep~N$}m_Rs!Pi&sHHw z{H~7Pp9_!DaiK02!%&WbQAaGeEJf37vuB^51Pn$LEPEIj?&n)F673gq?n3J)d=yPQ z-u@$bTO5tg?fA6|mK8o}R0m_WnxMhO+yUwOch!tH0iLsF$9F=8a_$4c*G2{&zb?6( zJWp^VttGaG_u-t{PYWC{?_p{m`r_|Uqj_B`MP-VIh~3`X2MfFD2*xAG&4Tbsg_qxI zj2oustz&~j!BpkkF_+`2sBR}M=<0*f>Rs;knrC=xO-HYS398v$LI(<1M|fL1iO|m*d6L|7P}s||IVCL>e1V1j z`MX+PLo9`B^)cv8-{V;Oh1Je%SN(kcv?s~&$!ftL%Csvf)#OVxC7c+1ujRE5ns@41 zG^Kz=g>49y{vAKkcCXaY#2pv8A#t*BZGJT>p0VF9;*@A+_0Sad!U7Dze^SniqQs+{f;U(HPzxkLB9mBO=oL;2dEo(QG0&&7iYnDaw+Y zxZF=I@Aqt_wS#Xi*8j#KU8wt6y1RQ?t^a-Tw{N+S=EO$BI0UfKbXp z&}^ohoMbMksD=gn6T4Fe?~C~X|K^!|Y`b50Xv(F4nM`t(>0&lCL{tWUvBPymq=2$DZl@r+Vnb`V z($WYjM*BKl-juM`0Ky((pt2hf%G_@wB-Vg7bag($*jsBVy_-vOU@K?z>5{7eEn zdK>IXk>aI_Hoy{!_-X6V5)Ln#nhJwkY3aM*nrzv+Q-@~fN0*bQDeh14<4R>?L_`zd zj|^NN3NeULbX)b3Lw-{Em9??pa2gb}3WVbbs>|C-QS!^nObr%UDuDzm)P6@QK|4&@ z{7Py;#I>4VNZOI20d@7qES!iW{OIyP@e&}|_kNmomchzkTFaeeX0sa+?YkhKNW+dl zeP(M;Hkp{6wbRpl2v5r0M`!OkmX9tp{a`SiKRB(E45e86$)T}xxWQ(;(*G7?Q5(+* zRl)R;k&g!3Pm6UjiLV5;g3L{bvaYB^lsQ=2n4s?IaF#rqCT#DC65^FYxM!P-vG_3@UbyH|@ek!YpF&vc-cD=2y z_Yg@j+*S@*<`1svC%@u;Rw z^0g~3t5NWRcx4o<5Q%fMr9ziG1W5FxrP2Yn2w;#6ra;EOY6rpht z8tZBZX8D-brE8dEh|>3ypfkux#iZ2Pj7q3Kxghf#0k_)DtjA{_kF^*w8&d!KNU-=9 zPma$~)zIZis?9$F`vDfi8KfA5t}%8Qm5KD`hYIr7vq26t9M!1B*R#uZi#sY7Si9*Z zeu3AQ<3YGxMdJaEAG-Jw&WQ(S?gSk;?M&EQD6{$s-Gt51RI+U+68Vy^5%Bsz*jheY z;P3|u68Wyj#Md@6`1f?7(ZF0dIaNu$%_DeC!+Vb4!*&%3BIwEVi!~?SAJCpf8rYv{ zgnVo-xTIOdYJ`3T8x+zrZll=hjQM9Hrf8sYm><`6P`LwLk5Jca{?^XR+KIaypis@iq4HKND2zTL#a!wf4XOS?HOW9b5f9%P zvhR;gKSb34jlUwSupMUVUj6MLv*+u+1(eofwg%9*7-K!~xwM3YRD(}yHG%u&WSpvZ z?MhiV!?%6$n@rYXBD3B%kXXFolly(&zRa$;M)-7=;e)%^|vFB{5l z;txR}0k4i-Nwq@;Zw^KQvz3Ds-V-cF{)}OM=NG=4{1fMsxk}};#a#s!BUMtkyuicy zKYlEVz+fgVjw zwEiL17)F}}nktXsZZ4PZEU`@>tkimEfI~9Tj`de$pkIBE!pgxMgO7)>p9M>^0m2VK z#LQPaE-LoU=cm^Jm?gDD@9P!4X+)8P1xm#|r;<`Fhf&MbIxXP`K77V9o*!h=>x2bF`Wa6ll@|VEiUcTZR zu)R)hgLVm~O<<^VC}{>2v8rKfB^=TgwafKr@v!KR1)Gc38poXro1VZDCRN=W6qA;>7es%%=f($EqGZHqlf(xlSj znnt{<->9tx92E2ib0pE6L2VymooiTiq0&CeQ*8Q-h=G9$4~g4P&xI_J4)yyA$is_0 z`kD%La2rv6!;!_Y?y_nKhaXvTHjHwvLR&vkoC@@Zp@q)WEBb3lBgCZz)xWj8S^vYq zWXg3Z+~NKO#C&`QYY;@kWsE1k1pFymw&i3e7~cP@U>lmHs^92`ZQv={oJW77G;hG~ z9QE74`-ew~Rm&Dh3k~Jta@csz;N96gI2iZj=XVA+efoQ z$3VM$sJp%MEo`3qdrdKt{o@mv?|pq@#>TsfSg6_A*;v$D5%N@z9Zu#rk->?HSQr=> zN@{#y|1M9@|DbX*g|kJ|%F7Fji{ld$Wu>KQDI4(Lfh8{ypEoVp2~fNRs;ec|){qR@ z36v5;U-Df4HiMtQ>w{VIdzWlE3EkVXLg}UX%_H)2r!A+fn=G4FK-DpS(JHK7M~akx z5iMjS*=vRWpfmrEpg>#d%1FaBWvL7}XYTh(b5egtXGcgzYmQfO z;=m(u)BD#|aKrlu(c>WVu8SIc`SedTvqzJ-d|obl^6$3r3?kS1SC|_T(d=Kn@?S;L z{(310^XGs3wGBg__46-w_tM5+>JU}4h z0?G!iF<&Cd`|gdCXZ7~cT7h#N7RRGZ{<6k?56JsA*9E}JJbq;g`sgvUKNxAvB)4Vs>@@(vMJ=|xw#svsVuf2LY~I)H$4tz(m-lT5`)Il^EHBmAG+u{ zQ!^{yTrxOO&m(wUW#Fb~B_WdypGNJRCIrBohy#9*RDT?tXhJv9P!*xsEp2$1!NHMS z$W`#m@vYVbvk>V`9Ckm?0PYF&%QUxsEX*$jSiXTjTLXa*tsR3GOOF$0o6Z|yE3X2f zk@ue~OK&e#$odKrnDWN7%^?hI&!VLu=lvssCu8?acWctFeOKU1BT2>2GA^}3PV^(J zIUwg-6{=(7CF4Gp9~ud8nBlSkV=P=+y%QJ2EquT;p*5_oE))`eJV`jP1>DTLr~?o8 z6pk*Wv@37KFB&Gd1)gp~_V8g16(zUgcam?%ip8lIwOZ23jpgtXr-6Pgbmfpa5oAw$ zI735Sms!i*+Z{%W1NDFdSAVZoE+g^Vc21EnfO6N}Hk~^fC;%D}390a#lmWjTZTi-y zfB>RcSnL@-oJRa9iE1O?&4am8Z!D1J|YvZK{>?K_8eHcMStfmS<thcxCpo*|HiX>g zN>!!*wZc*89y}S1(X-&HF}HjN3!Q5ZhaLLNBlp6YB&RUqYr^CVVP&+2S{{R#ck(>40)PeZfNAhL)Sv zjrLQi@{?6NVLZElqCmI||N=f_<8AGxq7MnA4> zvhmHnMp{;bpP<}wJaZV@3gN9u{|DkCig(|AOjYi)g+`ZfPVIZo_qjJND_fHV#XM_% z!Q{673if#6Eb*@LX19BVYls;*)Er!`zRc+P9m7zjUqM0^-F`dc^U_kP=1r(nzoT-{?yIzccQ4STB2=l$~(lPVt{8w=RQ5!>UnSV z*pC0UtNFD0%5UcZZ!+VEpj_oeIM)qdwng<5kY3%1Ry zL(zQQ1@x~?AL7&YtcD%exJsWko&tsCCC;`F_wZ+*II8q~udH#?7hLBWPJc$ZB#*`z zvD*R#M{(aHnps&E&gM6 zxVlTT^Ue_&Ctw3-_0P4hGyUPX%)EoyJyWzNU>q_A#Q$R@Wy9nqvEg`ypP=C(GrT};lICZZ)EGU1O zIV}s%xsUh6{APLlCWn^wER=z0=?bT*dfaHBzM}Oa zqvev4c{^5HR;M#(mx{B_GwjEDpm{@2ykEw7u+CJ493l!&W`$lgc)TptSoOp8H^A6| zUffUC6m9@H%jym1I=Y~j7b^fpZZEXzWr@EVb~p#sWNcDu>0C1P^@iIW*E{R-@$9fh zuE9(Cg{A=hbwo`Zaz3oTKH9C0>3Tl)beXLNayl}U#n2z3H{~6IS%q14vnV;XcJ@@e zSRpayQSf%zuNkf40;0hnvws;$Me}yh=z~Mf*Q7`lyqD#oJF^S7u^j;M_-I4!XcQ`u zU}GREW+2bQM1`-TZe+PshlNhPjfs|!6T8qV{O$V2tF6H-T5OY$6B)@Gg?!*!i`h0gBV!qVNh(1ae0CazoF zf}Z}LS9!`v`<8N`?xTmjvrP?wG{yt4!nG#(f#Mo+#le0MXn$DQDj6~3 ze_V1mhi}Ds@9{9<5Dkx6_tMr|s@U~h-GX`yd0!E$kTdm91AKMBZUacNDt zw!c>xODi6UZbyAul#gcFBjYEH(cr*E#ew9lCT@bff1JHfy;mez=QDLxKwN3C5L&KJ z8&Qol&bJ`!0%WIhm<(6BS3SAKBJ;-XzYsnz-k&}7@|u;N01EWmWXUKh9!egQINbI$ zUZ_eF;>=Mb7OpSJtKLrSVoYVmka1R%yz(u+#(&KEu72HLm0NIFr}+~5blkTZ)XKla zoJ7eIAQnj_2#GIXiA3_`vl1pXMly0Ys9v{i2n~#~{HmlN(3O;JG!n&itTz|4JtWOZ zRHabkG)`@h5rl<bZv3Z9U&KUXtB&A4DKee$CB4|R(jL&l8v=v_*HC3_*h8EEa6^H3FG8|%hQ ze)(0IJ{txW4`MJ}x(2@AlrpK3l)KC=+syM8GU|BkXTO>#qTNQwgkHMRJl&xJTU9ko zzYIi-5~6S5tKu&Bpj;x4JeNT`03)ql&iDz(8~|eI&T9FA_&Yv~f+8wW_WrI_M&L`V z!GP}PpBPqTvhOW65B>Bt_%?U?Ntyh&60SJMma*dWK0i{Lc-f)El>04p8z(Ss#m##9 zQzd2=pL)^ImrOd7q3yaomy~cOrR02A$c%!Ce!>tXqLzCV7)0?A<%!7Eb|{@XAAE6;ZZ2UPa3a!}wI%+qFGc5Nr4alDcoxq%F@#D|wTWe;#I-G|hN9}h& z6tr~XG7CzL)ZP)$YE0iRfDSR{yG8iC;*zZdMRFJ(G1v@hcC;R=`WuB1A?}bLfUd6H zt8IS}WHg(*Bw)$rf}3;1mfYq>k@BFOW=m4|x^b#0^esbH&?61m9>7{WP!l!Wk<@mh z8!qo-fK460pGg_?zjuZ-z27qEiW#SCEHCRwjVU{Sqk%tFwbLL8nY=KjiFVb(k+PWc4ak7X_yn zigTZ6li!0pTbJ~hrH6X)~m=BV%&a0ad>w&+ODQMJYu5leD z>wPoNIsPqkGgYqm9aSZ*KaT}MDMC^+&~O%lKTce}eNOCW@cL1#S8^j0WYRK>91pP3g^^V99T9Rmy`tig-|HO%LiIc~(0T#YT`1}pGhZG=|PfJ;Ski1G(HR%tC>INhq_{B(`%;Sy>m?*EfLSq9SaAnr9&dkRSI9y_DCdI#@wph{_sG zi%^(tvVG8(a7nTcQd=Lb_Wm_j84M>3nq@ zyhw}&$CTMH#UqjHKF28dw}@YNjn9UTx|pCQW-m)yVmv_SSIAWyzaCzVh1>+Y<{p_)Z1=;HmK)BGst!3TX+<-IG%1#4-+Dl z>KG0xv*ub!d5zrP1?)9y3Aeia7*Ft??c5w8I{dKWiu-ij=~1r>$@spkJ#{0P3BC%N zTQ7+Vo=^XLe`~%Gdvs`-Kl`$Ae35LYm0&!OYa_D>JjEw@fSJ#b+fls2+aUEz!RH>p zLGfwky=LQ6DzNu}V`A*N&56!+N$MP{;QEnc_t-TuO0t%7e5-A&dq-q+&o||fCq1gA z;x)~6$rY?>OVa3RL3xhk-@A3dQL5XDXyh=cY_edQjXa@mKQ@AEIaA3oo-SuzL78^G zyE0R#Wy2e@iu^S$<>1;W^pxH!k3nuF#?a^lS@yY2C5H4&+Xg{Y2$13(&gNOHWupCI zDZqS7cEjc{WI_8!3XWXf#=VrQy<*DA_~4Dr4<*^RQkspoEx)|?eN<6N+m??lQI^Q2 ziNU4TxC0>EKap zzE9amT!&oKY<_JItygVlWnxX%*2$KHlg@L8TqUy$u5j|o6XH-&9iv$`khwpd9IMgJ z9|QdGZaSH6StL*fj+q}c1UE2c2C7Em`z3S*WqC)&J^3vFd7rr5qTJnS*y z>9{c!v@H~QuU|wxSA3{p@=2gX^E4XHk{05NArW7^Hg0HRzYq*fu-hFTLRmNE?Ap3^{HDiaj0u%7Ud^d}1%qC2L+6yau=_x{0f+1cA@px{hF z;yW5N1K2UuuZ-)RYIu(#k4pU)XA_Fm_q}Qng#Tj^$Nw4Hd=HPZ6ToJSgWuVWe=mKV zlT@Nu?BUd7-6VL@_BYNd0V-q@b9;`~R&570urXoIii2zRUhGEU$A4OUug- z-1bkoFl(33@S@>#U3nX|TkZexQa>}1&?Z8XQ#xia>i-%s^?zI_*Jlap^Uhcwg_Ts3P3>xuq!QI%AB4RTiL0q`)X?QbHRk8` z7km$xhIL($)Z+M$GKT*#G3#C9GOaYUtEB!fb+FS-qu?^~URUn7PyZ;no~rN8-idGY zY!f^w|Bq)q-aT8i!hxqp;`WbhN(OF!w>fhcr@Tl07tt2^Zz}2kCiZUb3zfl{`X5yL z0dW&)sR8?D0aveTdy*#{+JK6T!!M;-eao+PI-=w8?4#qQhLfBNKM|L+M{&{@xh%`&ZovL6uEGLJwtE;P}rNxx6UKI;A zu;=@`WMg9ki(2t}OAB{=e0)9qBlSVazX<+biEle_W_~{Dvv|bT$;n8Q&EhwCdHG9$ z_VWk+hPgS_&tJaOt)9cc!R;IzygxRsCs$w8<#`j_uCK50P~afmGc)flq(*wr zKs78!4V(TMA4dfM0HD`bmW=V#@q?GPPyeRLpXGfS>f4)}Ka-Pa(Gr2{_Jj7#Cah`9 zX|gcymAX?97;4%yVd;E!Wnf z)vyw47p4oVEiwZ_2hu5*i~{FgK1>q(f_$xjAPD(Kgf5#~dg6m>bM0mv_9~quZB$_0 z(-6%9n)T#qw6)Ud^DmUwXX}wxC;I*F=T&C+^~E7p*7uJG{O7v>cQ*G>sO4%!TB}}X zF`A=P>pD~Q@@fR^r-KoW%x6N=?ILo(D!CV^ux*@Sw5*)%BCw==#b6xbeA$W#;;BS) ziTJMeT;(-Vpua%>bZ`_kpx3x*<^<;zT_{AEPR)bn{KfUH^vu?HJ3ZjO$7o+!Yy=6|= ze>L~Tde2ucF68OIop+E|QUGx*Ml^2jZIV|qi}mb27KGE3%;F9^w;K$Wih1N_?<{et z_P9y}D!28}R-A$4<}xiOtj+2tCOZPoLg6IsMsF9A?$t}(i@OC4F)>y{*|d@pDt~{P zSq*YZ$_*#_<#loj3McUU&EV_jcYSjs?ZIQL-mP%BE#$<1N_R)d^;6^ab$CQj;Mp++ zy2J-2(&ye793q=|!V=$8uvv^nm^xj=)bQo^@CU(TAel|9HbU8a^g_}k^JBriF6)n8 zKC?GOKKR-FXsyavYOyLtKd*Lu9C_QEA$W$t65m{W5={Zrc##jc=cx=ZoevmAmAE{O zRz#QG*XVrNCqpt6Y)&l3=sBqCa{0#_W^mL`%7C`+*@Ws#_rmR2n!t458(63U*pRn~^Nvlv4<*F>PtnSAoA2atGBw3Re<48CAO(R7c=cKui4 zHOH@dOO+kb%xf`u-_8VIQQX^Cpo16FlO!eB;!_5Jg4u{bB@++ZQ=8) zNQ!lK+pE$>ZrXJYIs?_(Dq0=R6l@t(SG%?HvIu}kD`fSX-bQELY%q@uQxQyoKrb(= zl>vp|lRcG=JClj(yr}Q8H%#|RkJZXpVYUm;=ADfC#o8EXyH$&g32XJ6QAVK^u>RMHw*Lsb>a{Y4Kv>IWZU^fNIr zX!f}8eH}(ai*=2qS>-q32(MGP{qwuI%%Br83$E+83d!Iyw+ofL49x#3?W?1r>Y~0W z2`P~VF=(WR99l#H89+hll9Y!ArG^lZh9L%FXldzEI)-ML0Yq}7yBmgP-r-s6`|n$C z&Odj}J+=4Q`|h)U`|fj3SS+U%rvJrCDy4V!8=jY-EaXH<=m_djX|~4X$1%2{`MUG< zPO9d=C%U2HAO{J+G&>sbiHzo@Z80XRXC6{9V%x>3@M96~xdL8wbhiMM8c-5;TIVW7 z#UDGPlLH2-amo^Y?1VxBu}`R`-wVxJwK>llVLU%p zq|m495wLt*8=IyUqmSSTk}w*6d=G`Octtl5np`AVR-BhN*_2p0MRl@cl(=^v?( z;;NvH266Ej_d&c6$sg{Ka;xGEB@Mnc#cM)#URQY zSp;rAq^MK#45-21O9mgfzj@?pgwUyyb?RqZi3O^{?YXq;sO?wfV`%2eZ8v|*FF!g` zi1CLfZmZ_IZ5aaUB)a|ZHSmk2gu*uZo>1jKJX$CZIq_59#PB}1CEOQ4YzeP%yH7Dt zVcYftDlQ_!`>y4OMQymDWKrD-GSui8{A=o^RYR;GgT|&oP1q;tX~L$xC$>L@kkPE< zGoZ7t8C-G=4>ipxED<@sC|pdEVuN43E`8;c`pfM2g>4$R5Lxr=e2+p6$%zSui5Ld8 zZ3z3}2`!{FCYbl%^3?ATjyL$7wLP)rphflA&RNQP9~2|OD_H4mP$unu z0bRPdp(r6K(2#WQlGD|}OYtymb22!nWbvN;+0ssg%oKg++?sdxCy{AbY!PAgVCo@n=XwBOiKlsnQiV#DCj>rN6wJA1H}6 zmdQWzF6f$Sx&$Hg{K}+ueF!WtHM6y|*Zt`;cqsJ;DThKe5G64Dm&j;x?RL5W35aD(sHaIQw^{=wC$!_G^1M z_u5CP`J;02xbDK#?#hAIA&IMZIt3GcSMtNy@adk? z?f+hpU~NAYs42vUR31>=%mEXwjfd@yPj(A>yAg7K^JjR^{;uZ|5g4_Vc8h6J*3fn#=F{ItVS!Px5? zkp@L?TNdgMxqX{dYVHTpo?*f5pZOGVia-|yaB1uUoVqW*PE<2%s_Q2;b==x7qoSG8 z*bZfhR7t=j7X21uMg)~ln1Qxhlz3UCzV+ZJdTW}AYzbP)+Fr{U==oNO_Nx)yX?QT5 zC(&({ba>7fc;AU&s(ZliPZ8N3q{%<-Y5)Ym>u)p3=-Q!8xtgLE;c@%4mwfCn8X9lR z#+1Z#!z3M<(S0$}b|@y!c76AuSg7a{FH>tfQBz2b-Kh_*`ukoYh1rdWWWEIC@P;gP zgb!7fZ-?(7XAs}2ersl6sKBS<>2dk=S)B1#i{!c4LEib-c^5fBjYn$(Nn z9+0|_8rC4Bqa>6|BWd&m#7&Dse4Mk{vir}@$5@fa?J>NTvnW&$#~H@ethfyeeAJRk z@5d^-ev~Or3LLDCy*zCH?soODRYWs1VDLx3Gc2a~ICV0rxE=Ae;ym&^jr>nTugCQC z#`-&F0dv3c%uOGv>cw0dka31m>*h66T@E4F2>Qsk0>D~;OqYY+#|XKkcG^J|S85Ph zhu!NdU*$uI`8_riC^l%j7J@z%VNAqcIy)<^$>`k|;2U_1k9%pF1=wPKTf-n|9uR9k z>tvreqV;8ESCJDdowCzD>SRXX;0R<9ZvZFHJ$EzWlV5hYP^kI#YykPDs9%EuZJf00 zaj7%F2735u{qzlab8T(m`?0?tAJDwGu0zf{tK0L7U76dQZI7Q_A97RT;M{7|641a~ z+Uj!lrtCL%sAATDo0@{t(Ob7T@yDy0R@Q?ZsfeI&Gip~(;v9ibUp2jv=yUuGzVTxE z&7S^Z54BXO&o=weEET4%`NO1$d2axrI>qO2uVcw?{*D>-&t+%Zvb@u;4@O7&7gBs0 z`7+PZjB;_=UOzf>M{)KIZk?A~WIyG`o3yo13#`VTj!xm@| zhQ5$O{Ny&LXV+D#yuaP6NRyiSlZ)0cQTNz5XB=m^ObKhFs3%z^6)YRWE zpoj@}cB~OIAU6=_n&N^ML_|cc7svL4S&G`Vj_B~HC=N+Uh8lFbOcZtnnM_7O0h$>X zp}-;k@W{xHjgPi{Lju4I@Oh3Q34;kjeM8ICJ{`+j(kd6-R7OY1!WSoR&uvVx=A~t^ z+`KKGTBgL!&K{_ZGdvHdNaEw;y}iBT^d90?1Rt8sQ*u(l2{> zuWIC*Y^-YYyQ`ZiT(|W(6dSEy6F;vkEj_oec#MmUaPsibGBWm}YwQk=k2(4H_$1Ql z`E-bC(4dbW#glR4<%5qxdH(wI;pjSq*{ErtDXXfgCLJZKtr1@;D)s~g&AFj`pDZWW z*FP*SEk!^etxNL(HRlL_q_&ER%5ueimvTyS9W|L-Rne&nkx1G=PrgQSI0Vvz6Kr}q zNJr;B0)gP<AHPV+U&k!`s$w=OI3jJDJp`;7pph z#XqU`x}th;z;EK;dBeVaC40+;5Zsz6^q`V815&SKp;X(JBljf(%~L#Zwi|8hPj5>^Jt*9fm01Z4YQGe#yoa+R%(CFZmH}31C!q1MPv|zGmD!igBf3&g=4JyzXPoAP}nhP5K~$8r&^hSD(@Rq zGO(#q%&wafQCyX=Y4aw30u7++h~6FDJR>T~XcH=U)iJI#^d^#sA* zTIE*>MaWpU*?sQ48sUTH_;D(??UGpv$S!<(c8DMj_1@Mq4b|WYWqQ4Ew}hDDJve_* zj=nL$X|3Yk+5uff%M{bzx4Fv2*K~}uV!8#-y&98_x?LULTQ*TzZ@oz>QFNYnwPts2 zVEw%l^BCiIPS`YLzEBKyGxKSq{Z!+;u%v|)J!R3X_>;6{6Jt99yFpQJ_O4|d&FaMJ z9$kvAFOoMy?K#M)RPWQWDGk@jjBNG;S`9o>!+%)2>+gW}Bt!P^P^{TYYNhoi_}fKP z`^+=yME9^wjfj}{S6Oy2h-{RwT`}AA2%En!<|(j(t4Dl)XQR4C}{bf39U*O!DQ~@^e#iyLD@sYhnJfG@k0+-dvNII%tuS zuFPrivjbVq%;WLXip6R{n_tEHmdo&2P=-i!5iKtB*!iTlF|cGI$O#DuC{YZ_3N%IJ zFdPW5O-8(-aXA`D_~v+3ERbC2KbWH?68?VeGgUNY87iD!7X7F(F=8l8v}lY}?{7PT zTVY!!xn`i%+GE`|fQh-I7=2keBR!dae(c;v&?sOrF`IE!RVt6))~s5WvbJa17dcQw zTMgMuHrF(+^#{ss4~;Z8vQ|Z1{PD>V&!}JZ{ZRZHKuQKe3MrmnF?e7@5_1WoQhW$9O)Z+ub*P=`?1x zSSS^}oSIOQ|5Tz{(RP&;GGN zurW}MqH=GlKj>)-Oe8>{bF;U~qhF;J;)MEK#c`ga{l-#H(8d(>N<>C(N4HhRI2s#$ z4Ko}eIdG15ZDo^>+Cj`)Qy(eJg8YgyK`9EEZW%R|;4Q?@q2hJ(6o4nm>c!sCiar!3 z`UBrE5S!q}pR)^YUGyBVxKa*2^nWROSwaTdUL0x|QncGuf2?mh8_?c0ULomrU+u0b zyn~j@eyogFq3h@}TG)`y@Y^huM>NpZ#q5;Y<|0qfM636g2&+Zc?tC&-;>@DMpuqo6 zjC*|4x#M`z6!|sj$#qG+Bk$!F*8=TiTD@hw;VU_Q- zftm1pFqz_ADJRs(s)%R4!f7ednDdK~$0D@KMV2?-jbjB)HZFL|nf#G+4WtmoU0r_m zg!VzF8z_H6@sW|bIXq+AhV`{r;ZnPoMg4+qDfc@-a0Ff?Bc^*3kO)q=rp^KUfWAdL8_6g%91Odh}M9;Ga{TSTW2;+TVJHTVG$j$$)aAB z96qQIld}g#n}jIu*9Tlq--xMXvGg6iAenXdt5~K@4+cv@S6wC|zhnv9xOsathHTG= z#We6qm7Sg3eXy2Ht@s`T8Bv+SgT@fq;XRRZ+Dn;{I;kDo4B`mG3VxC_t%SN_b-CCN zr7U@5WQgr-v7@K@V)#TPhPw@8*tN77*^}CZ1xP$Xc<1_WCna>Jz)QQ3G1JgxdycJS zgwlbkVl-@KrdOd9lHz+zu}Y?YP|#_j!OhVt}6-EkE+`WN0s}S4hOwb!FMc(Qb9P zth3n|vS$k%vVre8uPg!VgtYV>%kb8J&WN=N^TvQnp6kt&P(u0ar%k-Z%7k@EJ_VU0_ zyiK$fO#*ca$Bxc*hl1yP#*CxzBdS=o)?UxSxR>G;`+Oey>4nBc^xGm6Hh$~iJxOG}%fomW*D-#jst??Fr%LUO^3Aot>7=G@6_4nPh4q;N!1xC_7Tw zZ{x>KS~6N)XwWihDM~`*-jHs5Iz)47wJRvM$OR9Wg^1Zu;U#gNwMTIY$-!0lY?VJ8 zzf$i=E?;coGOnx*hyZ+s(r%;o@+_K?5*rj^E8HxoNzw~cOUuIh<}zfT1q8ryg$p4X z?)MQzq-%l>DchJ)H&a_xas8#t=}Ws=mK8DujI43p-lE0s(@|3IV}F@z_xsEAh!inI z5fTJZV=woO6ZGPit3F$ZcTFLe(v0-kUH&#YRP1io(hr=W) z4`~vq-o#4lma+_gPpt=d-Nj8ET>cM_KK|6XX0*e^SE-ke8g>k{AT@r= zBDOo)V7;^E$uEcTQ07w)e3rUC!n|fucM_oVFHfGe&kluwmS@pRXBQ?*o9AInQcrMN zLie^+T47BRAbk8(9pcR{Svp?_`-!=S^+UVLdc*}I_z0J^g=f@YQ&4i7mxG(5lnU@1 zU?FMwyTvNMsUeiuXpsfG<9Y0ZNP-8$4^l71E}N0M6syt&fha|SGT?!Z1v z)X(!VbFepNFcX=nTydy(&^)?hKy!5ABOp!wG6`i}rQ+^A_YOYzt%dwd62-Q+{2}KL zFt@Suk|2$7d+7^X_*7@LQ@pj%yY1TDg2T;e9DK3l*wZ) z4oN~>WD}sIwJ4LG;^+1*RNS#LKTFrYItmXjUwjr7dm_#}4z=V_{H_&IEWS~fW(N-J zx};1m-J1H+o=q*~sjRY`)n)SI&YmO!6>m?tzQ0O(Q`g2R{H-RzuVsT<uPOgE4i1*p~Z9o;LZ@6)LOur@&HeRgkE0 z66cPkkjozUL6sv{DiFEHc@hgi4D%hja{h^ z5aJ>r|}LKK-^;*{xFTqOMr*qPY*2bk`aO2f-L`p+_bijI3h1;5dSm zJjDKMy%Jxpf8JFj4tKk%zx)$>EI5}eh~6Cb(Ng@UelCy|7sD_mjxS}FhoNbJyu%nl zqZQm1vIu^}{;mcNB+?8k1>Rng{|kV=an}a7WxH_12TT8NP$ejjKhdYY>3z-C>AyD~ zCVvb8n7ars(*8Nu$i9W;?rFF?!ou3PVD0dP3bn diff --git a/docs/deprecated/contribute_models/enable_actions.png b/docs/deprecated/contribute_models/enable_actions.png deleted file mode 100644 index 903663116e60129cc696a2c618ea414cfdea89c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65255 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�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 diff --git a/docs/deprecated/contribute_models/tutorials.md b/docs/deprecated/contribute_models/tutorials.md deleted file mode 100644 index a324df6d..00000000 --- a/docs/deprecated/contribute_models/tutorials.md +++ /dev/null @@ -1,36 +0,0 @@ - -# Tutorial for contributing models - -2. On bioimage.io, click on `+Upload` and follow the steps: - - 1) Log in to Zenodo and give access to the BioEngine application. You will see an automatic message once you are logged in. If not, refresh the page. - This step needs to be done only for the first time you upload a model. - 2) Upload your model RDF. - - - - 3) Complete the missing fields. Check out how to get most of your model documentation - - - - - - - -## How to get most of your model documentation -### Model Tags - -The tags in the model RDF are used to search for each model in the BioImage Model Zoo. The more informative tags you write, the easier it will be for a potential user to find your model. Example: - -**My model description**: An encoder-decoder trained for denoising of point-scanning super-resolution microsocpy images of HeLa cells microtubules - -**Tags**: `denoising`, `PSSR`, `microtubules`, `encoder-decoder`, `deblurring`, `fluorescence`, `2D`, `HeLa cells`, `deepimagej`, `ilastik`, `image restoration`, `trained-model` etc. - -### Model links - -## Considerations for the model description file (format_version>=0.3.0) -When following the BioImage.IO model RDF specification provided at https://github.com/bioimage-io/spec-bioimage-io, it is important that you pay special attention to the following: -* Choose test input image(s) and generate the respective test output tensor(s). This enables our scripts to test your model for technical correctness and to test which [consumer software](https://bioimage.io/docs/#/consumer_software/model_runner) can process it. -* Choose a representative cover image of the task performed by your model. This image will be used in the model card to guide the users through the model search. -* Pre-processing and post-processing should be always described. You can check which [preprocessing](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/preprocessing_spec_latest.md) and [postprocessing](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/postprocessing_spec_latest.md) functions are supported at the moment and open an [issue here](https://github.com/bioimage-io/spec-bioimage-io/issues) if you are missing a specific operation. -* Do not forget to include any additional files needed for the correct execution of the model during the upload process. diff --git a/docs/deprecated/contribute_others/README.md b/docs/deprecated/contribute_others/README.md deleted file mode 100644 index ff51548d..00000000 --- a/docs/deprecated/contribute_others/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# BioImage.IO Datasets and Applications - -The BioImage Model Zoo establishes a common dissemination point for deep learning trained models in the bioimage analysis community. To enable further processing, more complex workflows, fine-tuning or retraining, it is possible to contribute software applications (e.g., python notebooks) or documented datasets. -Please, check the generic Resource Description File for [notebook and datasets contribution](https://bioimage.io/docs/#/contribute_models/README?id=contributing-other-resource-types). - -## Datasets -The BioImage Model Zoo does not necessarily store data. Instead, it displays information about publicly available data that was or can be used to train a model. The information will also be displayed with a card in the web page. Datasets are usually linked to models already published in the BioImage Model Zoo. - -## Applications -Software applications such as notebooks, python scripts or ImageJ macros can also be provided through the BioImage Model Zoo. These applications are usually linked to a model in the zoo. \ No newline at end of file diff --git a/docs/deprecated/resources_developers/README.md b/docs/deprecated/resources_developers/README.md deleted file mode 100644 index 8415064a..00000000 --- a/docs/deprecated/resources_developers/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Resources for developers - -## Python resources -### [Python BioImageIO core package](https://github.com/bioimage-io/core-bioimage-io-python) - -The `bioimageio.core` is the main package to interact with the BioImageIO contents (*e.g.*, models, datasets, applications). It contains utilities to load and use BioimageIO resources such as processing images with BioImageIO models. - -Detailed documentation on the package can be found on [GitHub](https://bioimage-io.github.io/core-bioimage-io-python/bioimageio/core.html), along with [example notebooks](https://github.com/bioimage-io/core-bioimage-io-python/tree/main/example). - -### [Python BioImageIO spec package](https://github.com/bioimage-io/spec-bioimage-io) - -The `bioimageio.spec` package enables the interaction with the BioImageIO Resource Description File (RDF) specifications for models, datasets, applications, and notebooks. It is a dependency of the [`bioimageio.core`](https://bioimage-io.github.io/core-bioimage-io-python/bioimageio/core.html). This package contains the utilities for model metadata information handling. - -Detailed documentation on the package can be found on [GitHub](https://bioimage-io.github.io/spec-bioimage-io/bioimageio/spec.html), along with [example notebooks](https://github.com/bioimage-io/spec-bioimage-io/tree/main/example_use). - -## Java resources -### [Java BioImageIO library](https://github.com/bioimage-io/JDLL) - -Detailed instructions on how to use the Java Deep Learning library can be found in the [Wiki guide](https://github.com/bioimage-io/JDLL/wiki/0.-Home), which also includes a [Quickstart](https://github.com/bioimage-io/JDLL/wiki/II.-Quickstart-for-developers) guide for developers. \ No newline at end of file diff --git a/docs/deprecated/user_guide/README.md b/docs/deprecated/user_guide/README.md deleted file mode 100644 index f52240c0..00000000 --- a/docs/deprecated/user_guide/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# User Guide - -See a [video](https://oc.embl.de/index.php/s/eJOIdzDVJpToETd) about using a model from the BioImage Model Zoo in different software. diff --git a/docs/deprecated/user_guide/explanations.md b/docs/deprecated/user_guide/explanations.md deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/deprecated/user_guide/welcome_slides.md b/docs/deprecated/user_guide/welcome_slides.md deleted file mode 100644 index 243c3bc9..00000000 --- a/docs/deprecated/user_guide/welcome_slides.md +++ /dev/null @@ -1,84 +0,0 @@ - -## BioImage Model Zoo Welcome to the BioImage Model Zoo! - -#### 🔍 What you can find: -* Pretrained AI models to perform bioimage analysis tasks. -* Reference datasets used to train the models (and to test them!) -* Python notebooks to train or fin-tune your models. - -#### 🌟 Why is worth trying it? - You can easily run any of the models in user-friendly tools such as Ilastik, deepImageJ, ZeroCostDL4Mic, ImJoy or Fiji. - -Skip tutorial -Back to the documentation ------ -### BioImage Model ZooBioImage Model Zoo: Overview - - - ------ -### BioImage Model ZooBioImage Model Zoo: Overview - - - ------ -### BioImage Model ZooBioImage Model Zoo: Overview - - - ------ -### BioImage Model ZooBioImage Model Zoo: Content - - - ------ - -### BioImage Model ZooBioImage Model Zoo: Models - - - ------ -### BioImage Model ZooBioImage Model Zoo: Models - - - - ------ -### BioImage Model ZooBioImage Model Zoo: Models - - - -##### If you want to know more about the BioImage Model Zoo, check out the documentation or 📩 contact us. - ------ -### Acknowledgements - -BioImage.IO is powered by the 🧠 and ❤️ of: - * deepImageJ Team - * Fiji/ImageJ Team - * Ilastik Team - * ImJoy Team - * ZeroCostDL4Mic Team - * ... - -Follow us on twitter @bioimageio - ------ - -# 🙏Thank You! - -ImJoy Slides is made by the [@ImJoyTeam](https://twitter.com/imjoyteam). - - -```javascript execute -Reveal.addEventListener('embed-demo', async function(){ - // load the web app via its URL - viewer = await api.createWindow({src: "https://kaibu.org/#/app", window_id: "kaibu-window"}) - // call api functions directly via RPC - // add an image layer - await viewer.view_image("https://images.proteinatlas.org/61448/1319_C10_2_blue_red_green.jpg") - // add an annotation layer - await viewer.add_shapes([], {name:"annotation"}) -}) -``` diff --git a/docs/deprecated/wiki_files/resource_status_accepted.png b/docs/deprecated/wiki_files/resource_status_accepted.png deleted file mode 100644 index a0fa9b76cd5dcc9336b355a9c7364df9e739eb9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102695 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 +```html + +{ + "name": "BioImageIO Community Partners", + "type": "window", + "tags": [], + "ui": "", + "version": "0.1.0", + "cover": "", + "description": "Create a table for the bioimage.io community partners", + "icon": "extension", + "inputs": null, + "outputs": null, + "api_version": "0.1.8", + "env": "", + "permissions": [], + "requirements": ["https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js", "https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js", "https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.min.js", "https://cdn.tailwindcss.com"], + "dependencies": [], + "defaults": {"w": 20, "h": 10} +} + + + +// Main React App Component +const App = () => { + const [partners, setPartners] = React.useState([]); + + // Fetch JSON data from the URL + React.useEffect(() => { + fetch('https://raw.githubusercontent.com/bioimage-io/collection-bioimage-io/gh-pages/collection.json') + .then(response => response.json()) + .then(data => { + if (data.config && data.config.partners) { + setPartners(data.config.partners); + } else { + setPartners([]); + } + }) + .catch(err => console.error(err)); + }, []); + + return ( +

+ ); +}; + +// Render the App component +ReactDOM.render(, document.getElementById('root')); + + + + + +
+
+ + +``` + + +## How to join as a community partner? + +Note that in order to contribute resources to the BioImage.IO Model Zoo you do not need to become a community partner. How to contribute resources is described [here](/contribute_models/README.md). The role of a community partner is described [here](/community_partners/README.md). + + +If you are eligible and willing to join as a community partner, please submit a request issue [here](https://github.com/bioimage-io/collection-bioimage-io/issues/new) with relevant information including the following: +1. Description of your software, organization, company or team. +2. Description of the resources that you plan to contribute. Please also include the url to your project repo. +3. Description of future plans on how your project will be maintained. + +The admin team of BioImage.IO will discuss the request and decide whether to approve or decline. We will mainly check whether the project are beneficial for the users of BioImage.IO and the requirements for participation are met. + +Upon approval, we will guide you to follow these steps in order to incorporate your contribution to BioImage.IO: + +1. Firstly, please create or choose a GitHub repo for hosting your resource collection that you would like to contribute. We recommend to create a dedicated repository in your organization for this purpose. As an example you might want to take a look at the [ilastik collection](https://github.com/ilastik/bioimage-io-resources/blob/main/collection.yaml). +1. Add a [collection RDF](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/collection_spec_latest.md) in your chosen repository, which lists all resources you would like to contribute. For this, you will also need to prepare the icons of your software or project. +1. Setup CI service for testing your collection RDF. Please refer to [how to setup CI service](/community_partners/how_to_join?id=how-to-setup-ci-service-for-a-community-partners39-repo). +1. Make a PR (or an issue) in the BioImage.IO Collection repo to link your collection to the [collection_rdf_template.yaml](https://github.com/bioimage-io/collection-bioimage-io/blob/main/collection_rdf_template.yaml)(under `config.partners`). We only require the link to your collection RDF here and need to agree on a partner id for you. +1. To make the maintainance easier, we also ask you to add one of the admin member as collabrators in your resource collection repository. This will make it easier for us to help you maintaining your collection, and keep synchronized in case we make changes to the specification. + +## How to register a software or application? + +A community partner can have one or multiple associated software, you can register them in the collection RDF file of your repository (see the previous section about creating a collection repository). A software is categorized as "Application" in the BioImage Model Zoo. The first thing to do is to create an application file in the [ImJoy plugin file format](https://imjoy.io/docs/#/development?id=plugin-file-format). This basically allows you define a landing page for your software with executable features such as download or test run buttons for your software. The most common use case is to create a landing page for your software. Each software will have an unique id, typically in the format of `/`. Every model can add links (manually when upload or automatically via the CI) to the software. For each model, the user can click the link on top of the model card, and the landing page will be loaded. Through the ImJoy plugin mechanism, the context information contains the current model information will be injected to the landing page, it's up to the developer who made the software app to decided how to use those information. + +To see an example, you can find the [source for the ilastik app](https://github.com/ilastik/bioimage-io-resources/blob/main/src/ilastik-app.imjoy.html) and also the corresponding entry in the collection file [here](https://github.com/ilastik/bioimage-io-resources/blob/2d2f1b12b185b1b880bfb679ed2aa981bf88d1ed/collection.yaml#L45-L59). + +## How to setup CI service for a community partners' repo? + +The CI service is an useful tool to autotomize the maintenance of the model repo and ensure a high quality for all BioImage.IO resources. +You basically need to add some testing scripts to your repo and configure it using CI services such as Github Actions, Travis or Circle CI etc. The testing script will be triggered by a new commit or pull request to the repo. For simplicity, we recommend Github Actions which can be triggered by adding a yaml file under the folder `.github/workflows`. For example, here is an example file [.github/workflows/compile-manifest.yml](https://github.com/deepimagej/models/blob/master/.github/workflows/compile-manifest.yml) that we used to verify the model spec in the central repo. + +There are at least three steps are recommended: + 1. Run the [`compile_model_manifest.py`](https://github.com/bioimage-io/bioimage-io-models/blob/master/manifest.bioimage.io.yaml) script to make sure the manifest can be correctly compiled. + 2. Verify the yaml files according to model spec with [.github.com/bioimage-io/python-bioimage-io](https://github.com/bioimage-io/python-bioimage-io). + 3. If possible, test every models added to the repo. + +As a start, you can use [.github/workflows/compile-manifest.yml](https://github.com/deepimagej/models/blob/master/.github/workflows/compile-manifest.yml) as your template. + +See more information here: https://github.com/bioimage-io/collection-bioimage-io#contribute-resource-test-summaries + +## Report User Analytics + +We provide the analytics service to help consumer software to keep track of their resource (including model, datasets etc.) downloads. + +### Report resource downloads + +To help us maintain the resource download statistics at BioImage.IO, please send a report to our analytics service when a resource item is downloaded. + +Under the hood, we use [matomo](https://matomo.org) to track the user downloads. It provide tracking api in various programming languages and frameworks, see here: https://developer.matomo.org/api-reference/tracking-api. + +The easiest way to report a model download is to send an http request to matomo. + + +You need to construct an URL to report the download: + +`https://bioimage.matomo.cloud/matomo.php?download=https://doi.org/[MODEL DOI]&idsite=1&rec=1&r=646242&h=13&m=35&s=20&url=http://bioimage.io/#/?id=[MODEL DOI]&uadata={"brands":[{"brand":"[CONSUMER ID]","version":"[CONSUMER VERSION]"}]}` + + +In the above URL, you need to provide the following parameters: + * `[MODEL DOI]`: The resource doi, it should be similar to `10.5281/zenodo.55555555`. Also note that Zenodo deposit has concept doi and version doi, we recommend to use the concept doi such that the downloads across versions can be aggregated. + * `[CONSUMER ID]`: The id for the registered consumer software, for example: `ilastik` or `deepimagej`. + * `[CONSUMER VERSION]`: The software version for the consumer software. + + +### Obtain resource usage statistics +You can get the user statistics from via the HTTP API, for example: + * To get the global statistics of the whole website: `https://bioimage.matomo.cloud/?module=API&method=Live.getCounters&idSite=1&lastMinutes=30&format=JSON&token_auth=anonymous` + * To get the number of downloads: `https://bioimage.matomo.cloud/?module=API&method=Actions.getDownloads&idSite=1&period=year&date=2023-03-01&format=JSON&token_auth=anonymous` + * To get the number of downloads for a specific resource (via DOI): ```https://bioimage.matomo.cloud/?module=API&method=Actions.getDownload&downloadUrl=https://doi.org/`[MODEL DOI]`&idSite=1&period=year&date=2023-03-01&format=JSON&token_auth=anonymous```. To see an example, click here: https://bioimage.matomo.cloud/?module=API&method=Actions.getDownload&downloadUrl=https://doi.org/test&idSite=1&idCustomReport=1&period=year&date=2023-03-01&format=JSON&token_auth=anonymous + + For more detailed API, see here: https://developer.matomo.org/api-reference/reporting-api + + +Please note that the reports are not processed in realtime, this means you won't see the statistics for your reports immediately: + - In the report request, we need to configure the date properly. For example, we can change period to `year` and date to `2023-03-01` (see here: https://developer.matomo.org/api-reference/Piwik/Period) + - The report will only be generated every 15 minutes: https://matomo.org/faq/general/faq_41/ so we won't see the report immediately. + +## BioImage.IO Partner Collection + +A BioImage.IO partner collection is a YAML file in GitHub repository of a community partner. The file adheres to the collection RDF specification described [here](https://github.com/bioimage-io/spec-bioimage-io#collection-resource-description-file-specification). + +The appearance of the partner collection on the website can be customized by the `config` field as described in the next section. + +### Customizing appearance on bioimage.io + +Like any RDF, a collection RDF may have a `config` field to hold non-standardized metadata. We currently use some of this metadata to customize the partner collection appearance on the bioimage.io website. The fields used here are subject to change, but as a community partner we'll keep you in the loop on any changes here and will likely formalize this part in the future. + +A typical partner collection RDF `config` field may look like this: + +```yaml +config: + # a url for the user to get more details about the collection or your project + # it can be a markdown file (*.md) hosted on github, you need to use the `raw` url + # or an external link to your website + about_url: http://details_about_my_collection + + # these tags will be used to filter items when the user select this collection + tags: + - awesome + + # the logo for the collection, you can use an emoji or a url to a png/jpg/gif/svg image + logo: 🦒 + + # the icon for your collection you can use an emoji or a url to a png/jpg/gif/svg image + # note, this must be a square or contained in a square + icon: 🦒 + + + # settings for the splash screen + splash_title: Awesome Collection + splash_subtitle: Awesome Collection is Awesome! + splash_feature_list: + - Easy to use... + - It's just awesome... + explore_button_text: Start Awesomeness + background_image: static/img/zoo-background.svg + + # the available resource types in your collection + resource_types: + - model + - application + - notebook + - dataset + + # the default resource type you want to set, set to `all` if you want to show all your items by default + default_type: all +``` + +You can find a complete example [here](https://github.com/ilastik/bioimage-io-models/blob/master/collection.yaml). + +If you want to join as a community partner, please send the link to BioImage.IO by following the instructions for [joining community partners](https://github.com/bioimage-io/bioimage.io/blob/master/docs/community_partners/how_to_join.md). + +## How to contribute tests summaries + +As BioImage.IO community partner may contribute test summaries. As defined in [bioimageio.core](https://github.com/bioimage-io/core-bioimage-io-python/blob/d435fcdb38c8b2152ac0d20f61ee498d88e7f1d0/bioimageio/core/common.py#L4) a test summary is a dictionary with the following keys: + - name: str + - source_name: str + - status: Literal["passed", "failed"] + - error: Union[None, str] + - traceback: Optional[List[str]] + - nested_errors: Optional[Dict[str, dict]] + - bioimageio_spec_version: str + - bioimageio_core_version: str + - warnings: dict + +In the [BioImage.IO collection template](https://github.com/bioimage-io/collection-bioimage-io/blob/main/collection_rdf_template.yaml), where a community partner is registered, the location of `test_summaries` and how to trigger them can be specified as well. +The location of partner test summaries is specified by a GitHub repository `repository`, where test summaries are hosted in `deploy_branch`/`deploy_folder`. +To update the test summaries (for new or updated resources) `workflow` specifies a GitHub Actions workflow to trigger from `workflow_ref` by @bioimageiobot. +For the automatic trigger machanism to work the partner `repository` needs to invite @bioimageiobot as a collaborator and the `workflow` needs to run on `workflow_dispatch` with a `pending_matrix` input. + +Let's take a look at an example: the [ilastik partner entry](https://github.com/bioimage-io/collection-bioimage-io/blob/aa4742d33394809e44e63ce48f9bac9ad3518122/collection_rdf_template.yaml#L63-L68 +) below specifies that test summaries are hosted at [ilastik/bioimage-io-resources/tree/gh-pages/test_summaries](https://github.com/ilastik/bioimage-io-resources/tree/gh-pages/test_summaries). +The [test_bioimageio_resources.yaml](https://github.com/ilastik/bioimage-io-resources/blob/main/.github/workflows/test_bioimageio_resources.yaml) is regularly dispatched by @bioimageiobot to keep test summaries up-to-date. + +```yaml +id: ilastik +repository: ilastik/bioimage-io-resources +branch: main +collection_file_name: collection.yaml +test_summaries: + repository: ilastik/bioimage-io-resources + deploy_branch: gh-pages + deploy_folder: test_summaries + workflow: test_bioimageio_resources.yaml + workflow_ref: refs/heads/main +``` + +The test summaries are expected to follow the folder/file name pattern "//test_summary_*.yaml", where * can be any string to differentiate different test settings. + +### Display of partner test summaries + +Once a community partner is registered to contribute test summaries with the `test_summaries` data explained above, the main [BioImage.IO CI](https://github.com/bioimage-io/collection-bioimage-io/blob/main/.github/workflows/auto_update_main.yaml) collects these summaries. The collection including these collected test summaries are displayed on bioimage.io. Currently test summaries are rendered like so: +![image](https://user-images.githubusercontent.com/15139589/226955477-6f8a8917-423f-4b9e-b08a-17bdb276aa2c.png) + + +### Updating test summaries + +The main [BioImage.IO CI](https://github.com/bioimage-io/collection-bioimage-io/blob/main/.github/workflows/auto_update_main.yaml) triggers the partner's CI for new or updated resources. +Additionally, the parter may decide at any time to rerun (some of) their tests if changes on their side (like a new version release of their software) requires additional tests or a reevaluation. diff --git a/docs/guides/developers-guide.md b/docs/guides/developers-guide.md new file mode 100644 index 00000000..a72a5068 --- /dev/null +++ b/docs/guides/developers-guide.md @@ -0,0 +1,293 @@ +# Developers Guide + +## Models in the BioImage Model Zoo +A BioImage.IO model is a zip file containing all the items, technical description and metadata of the model, together with the trained architecture of the model. Briefly, a BioImage.IO model has at least, the following items: +* Trained model in the correct format (check the Resource Description File Specifications for the [supported formats](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/user_docs/model_descr_latest.md)) +* Example input image (numpy array) +* Example output (numpy array) +* Resource description file specifications (`rdf.yaml`) +* An example cover image for visual representation of the model in the zoo. + +In some cases, the model may need additional files. + +### Model contribution requirements + +- Follow the [BioImage.IO Model Resource Description File Specification (RDF)](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/user_docs/model_descr_latest.md) with `format_version>= 0.4.5`. +- The model is expected to be cross-compatible among the consumer software, and should always run on at least one. +- The model should be well documented (i.e., human readable name and rich description tailored for life-scientists, citations) +- The model should be public and can be used by anyone under the chosen licensing conditions. + +### Upload a model to the BioImage Model Zoo + +**1. Create a BioImage.IO model** +Two options: + 1. Choose one way to create your model: + - Automatic export of the model using the [bioimageio.core python library](https://github.com/bioimage-io/core-bioimage-io-python) (recomended). + Example code [here](https://github.com/bioimage-io/core-bioimage-io-python/blob/main/example/model_creation.ipynb). + - The main function to build the model is `bioimageio.core.build_model`. Check its input variables to know what has to be provided. + - Manual generation of the model: + - Create the [BioImage.IO Model Resource Description File Specifications](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/user_docs/model_descr_latest.md) (`rdf.yaml` file). + - Each field on the file is either mandatory or optional. In the Bioimage Model Zoo web page you can find different examples. + 2. Check that the model is correctly created: + - Static validation of the model format using the [bioimageio.core python library](https://github.com/bioimage-io/core-bioimage-io-python) library (*e.g.*, in the terminal, `bioimageio validate /../rdf.yaml`). + - Dynamic validation of the model's deployment (*e.g.*, in the terminal, `bioimageio test-model --weights tensorflow_saved_model_bundle --device cpu /.../rdf.yaml`). It tests that the model generates the expected output. + +**2. Upload the model to the BioImage Model Zoo** + +To upload a model to the BioImage Model Zoo, you have a tutorial video of the process step by step available [here](https://oc.embl.de/index.php/s/JBWwJGgsXh0vYM6). + + + +For a detailed explanation, follow these steps: +1. In [BioImage.IO](https://bioimage.io/), click on `+Upload` and follow the steps: + +2. Log in to Zenodo and give access to the BioEngine application. You will see an automatic message once you are logged in. If not, refresh the page. This step needs to be done only for the first time you upload a model. + +3. Upload your model RDF. + + +4. Complete the missing fields. + + + + +5. A [Pull Request (PR)](https://github.com/bioimage-io/collection-bioimage-io/pulls/bioimageiobot) is generated (this process may take some minutes). In the PR, the model is tested by a Continuous Integration (CI) workflow for its technical correctness. and reviewed by a maintainer from the BioImage.IO team. This PR is aimed for further discussions between model contributors and the BioImage.IO team. + +6. Once the model passes all checks and has the approval of a maintainer, it will be added to the BioImage.IO collection and displayed in the webpage (this process may take some minutes). + +### Upload a model through Zenodo +**Note:** This tutorial provides a temporary solution for uploading models to the BioImage Model Zoo via Zenodo while the upload feature on the BioImage.IO website is being fixed. + +This tutorial will guide you through the process of uploading a model to the BioImage Model Zoo community on Zenodo. The BioImage Model Zoo project aims to collect and share bioimage analysis models, and your contribution is valuable. Follow the steps below to upload your model. + +1. Open your web browser and navigate to the Zenodo website at [https://zenodo.org/](https://zenodo.org). You need to create a Zenodo account if you do not have one. + + Zenodo initial page + +2. On the right, close to your username, click the "New upload" button to begin the model upload process. Make sure that the repository is set as public. +The files in the BioImage.IO zip have to be uploaded one-by-one (See the example in the image below). Note that you can drag & drop all together at once. + + New upload + +3. Add `bioimage.io` on Keywords and subjects. This is crucial for us to identify your submission. + + Find BioImage.IO community + +4. Follow the on-screen instructions to provide the required information about your model. Make sure to include a clear description, relevant tags, and any necessary documentation. + +5. Once finished, click on Submit. + +6. Your model will be proposed as a new contribution to the BioImage Model Zoo automatically. If the model passes all the tests, it will be automatically displayed in the Zoo. If the model does not pass the test, the GitHub users indicated in `maintainers` in the `rdf.yaml` file will be noitified through GitHub. This process can take 12-24h. + +You've successfully uploaded your model to the BioImage Model Zoo community on Zenodo. Thank you for your contribution to the BioImage Model Zoo project. Remember that this is a temporary solution while the upload feature on the BioImage.IO website is being fixed. We appreciate your patience and support! + + +### Model Documentation +#### Model naming + +Models are expected to be used by life-scientists, thus, it is expected that the naming is human readable but also informative enough regarding the final application and the biological tissue being analysed. Example: + + **Name:** `Neuron Segmentation in EM (Membrane Prediction)`, `B. Sutilist bacteria segmentation - Widefield microscopy - 2D UNet` + + +#### Model Tags +The tags in the model RDF are used to search for each model in the BioImage Model Zoo. The more informative tags you write, the easier it will be for a potential user to find your model. Example: + + **My model description**: An encoder-decoder trained for denoising of point-scanning super-resolution microsocpy images of HeLa cells microtubules + + **Tags**: `denoising`, `PSSR`, `microtubules`, `encoder-decoder`, `deblurring`, `fluorescence`, `2D`, `HeLa cells`, `deepimagej`, `ilastik`, `image restoration`, `trained-model` etc. + +#### Model links +The BioImage Model Zoo is a software webpage. Each model is displayed with an interactive card that can have datasets, notebooks, applications, consumer-software or test-run buttons linked. Example: + + **Links**: `imjoy/BioImageIO-Packager`, `ilastik/ilastik`, `deepimagej/deepimagej`, `zero/dataset_fnet_3d_zerocostdl4mic` etc. + +#### Representative Covers + +You can include different cover images that represent the analysed tissue, imaging modality, image processing task and the performance of the model. This image will be used in the model card to guide the users through the model search. + + +### Considerations for the model description file + +When following the BioImage.IO model RDF specification provided at https://github.com/bioimage-io/spec-bioimage-io, it is important that you pay special attention to the following: +* Choose test input image(s) and generate the respective test output tensor(s). This enables our scripts to test your model for technical correctness and to test which [consumer software](https://bioimage.io/docs/#/consumer_software/model_runner) can process it. +* Pre-processing and post-processing should be always described. You can check which [preprocessing](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/preprocessing_spec_latest.md) and [postprocessing](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/postprocessing_spec_latest.md) functions are supported at the moment and open an [issue here](https://github.com/bioimage-io/spec-bioimage-io/issues) if you are missing a specific operation. +* Do not forget to include any additional files needed for the correct execution of the model during the upload process. + +### Model Resource Description File Specification (0.4.9) +This specification defines the fields used in a BioImage.IO-compliant resource description file (`RDF`) for describing AI models with pretrained weights. +These fields are typically stored in YAML files which we call Model Resource Description Files or `model RDF`. +The model RDFs can be downloaded or uploaded to the bioimage.io website, produced or consumed by BioImage.IO-compatible consumers(e.g. image analysis software or other website). + +The model RDF YAML file contains mandatory and optional fields. In the following description, optional fields are indicated by _optional_. +_optional*_ with an asterisk indicates the field is optional depending on the value in another field. + +*
`format_version` _(required String)_ Version of the BioImage.IO Model Resource Description File Specification used. + This is mandatory, and important for the consumer software to verify before parsing the fields. + The recommended behavior for the implementation is to keep backward compatibility and throw an error if the model yaml + is in an unsupported format version. The current format version described here is + 0.4.9 +* `authors` _(required List\[Author\])_ A list of authors. The authors are the creators of the specifications and the primary points of contact. + 1. _(Author)_ is a Dict with the following keys: + * `name` _(Name→String)_ Full name. + * `affiliation` _(String)_ Affiliation. + * `email` _(Email)_ E-Mail + * `github_user` _(String)_ GitHub user name. + * `orcid` _(String)_ [orcid](https://support.orcid.org/hc/en-us/sections/360001495313-What-is-ORCID) id in hyphenated groups of 4 digits, e.g. '0000-0001-2345-6789' (and [valid](https://support.orcid.org/hc/en-us/articles/360006897674-Structure-of-the-ORCID-Identifier) as per ISO 7064 11,2.) +* `description` _(required String)_ A string containing a brief description. +* `documentation` _(required Union\[URL→URI | Path→String\])_ Relative path or URL to file with additional documentation in markdown. The file must be in markdown format with `.md` file name extension. It is recommended to use `README.md` as the documentation name. The documentation should include a (sub)section '[#[#]]# Validation' with details on how to quantitatively validate the model on unseen data. +* `inputs` _(required List\[InputTensor\])_ Describes the input tensors expected by this model. + 1. _(InputTensor)_ is a Dict with the following keys: + * `axes` _(Axes→String)_ Axes identifying characters from: bitczyx. Same length and order as the axes in `shape`. + + | character | description | + | --- | --- | + | b | batch (groups multiple samples) | + | i | instance/index/element | + | t | time | + | c | channel | + | z | spatial dimension z | + | y | spatial dimension y | + | x | spatial dimension x | + * `data_type` _(String)_ The data type of this tensor. For inputs, only `float32` is allowed and the consumer software needs to ensure that the correct data type is passed here. For outputs can be any of `float32, float64, (u)int8, (u)int16, (u)int32, (u)int64`. The data flow in bioimage.io models is explained [in this diagram.](https://docs.google.com/drawings/d/1FTw8-Rn6a6nXdkZ_SkMumtcjvur9mtIhRqLwnKqZNHM/edit). + * `name` _(String)_ Tensor name. No duplicates are allowed. + * `shape` _(Union\[ExplicitShape→List\[Integer\] | ParametrizedInputShape\])_ Specification of input tensor shape. + 1. _(ExplicitShape→List\[Integer\])_ Exact shape with same length as `axes`, e.g. `shape: [1, 512, 512, 1]` + 1. _(ParametrizedInputShape)_ A sequence of valid shapes given by `shape = min + k * step for k in {0, 1, ...}`. ParametrizedInputShape is a Dict with the following keys: + * `min` _(List\[Integer\])_ The minimum input shape with same length as `axes` + * `step` _(List\[Integer\])_ The minimum shape change with same length as `axes` + * `data_range` _(Tuple)_ Tuple `(minimum, maximum)` specifying the allowed range of the data in this tensor. If not specified, the full data range that can be expressed in `data_type` is allowed. + * `preprocessing` _(List\[Preprocessing\])_ Description of how this input should be preprocessed. + 1. _(Preprocessing)_ is a Dict with the following keys: + * `name` _(String)_ Name of preprocessing. One of: binarize, clip, scale_linear, sigmoid, zero_mean_unit_variance, scale_range. + * `kwargs` _(Kwargs→Dict\[String, Any\])_ Key word arguments as described in [preprocessing spec](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/preprocessing_spec_0_4.md). +* `license` _(required String)_ A [SPDX license identifier](https://spdx.org/licenses/)(e.g. `CC-BY-4.0`, `MIT`, `BSD-2-Clause`). We don't support custom license beyond the SPDX license list, if you need that please send an Github issue to discuss your intentions with the community. +* `name` _(required Name→String)_ Name of this model. It should be human-readable and only contain letters, numbers, underscore '_', minus '-' or spaces and not be longer than 64 characters. +* `test_inputs` _(required List\[Union\[URI→String | Path→String\]\])_ List of URIs or local relative paths to test inputs as described in inputs for **a single test case**. This means if your model has more than one input, you should provide one URI for each input.Each test input should be a file with a ndarray in [numpy.lib file format](https://numpy.org/doc/stable/reference/generated/numpy.lib.format.html#module-numpy.lib.format).The extension must be '.npy'. +* `test_outputs` _(required List\[Union\[URI→String | Path→String\]\])_ Analog to test_inputs. +* `timestamp` _(required DateTime)_ Timestamp of the initial creation of this model in [ISO 8601](#https://en.wikipedia.org/wiki/ISO_8601) format. +* `weights` _(required Dict\[String, Union\[KerasHdf5WeightsEntry | OnnxWeightsEntry | PytorchStateDictWeightsEntry | TensorflowJsWeightsEntry | TensorflowSavedModelBundleWeightsEntry | TorchscriptWeightsEntry\]\])_ + 1. _(String)_ Format of this set of weights. One of: pytorch_state_dict, torchscript, keras_hdf5, tensorflow_js, tensorflow_saved_model_bundle, onnx + 1. _(Union\[KerasHdf5WeightsEntry | OnnxWeightsEntry | PytorchStateDictWeightsEntry | TensorflowJsWeightsEntry | TensorflowSavedModelBundleWeightsEntry | TorchscriptWeightsEntry\])_ The weights for this model. Weights can be given for different formats, but should otherwise be equivalent. See [weight_formats_spec_0_4.md](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/weight_formats_spec_0_4.md) for the required and optional fields per weight format. The available weight formats determine which consumers can use this model. +* `attachments` _(optional Attachments)_ Additional unknown keys are allowed. Attachments is a Dict with the following keys: + * `files` _(optional List\[Union\[URI→String | Path→String\]\])_ File attachments; included when packaging the resource. +* `badges` _(optional List\[Badge\])_ a list of badges + 1. _(Badge)_ Custom badge. Badge is a Dict with the following keys: + * `label` _(String)_ e.g. 'Open in Colab' + * `icon` _(String)_ e.g. 'https://colab.research.google.com/assets/colab-badge.svg' + * `url` _(Union\[URL→URI | Path→String\])_ e.g. 'https://colab.research.google.com/github/HenriquesLab/ZeroCostDL4Mic/blob/master/Colab_notebooks/U-net_2D_ZeroCostDL4Mic.ipynb' +* `cite` _(optional List\[CiteEntry\])_ A list of citation entries. + Each entry contains a mandatory `text` field and either one or both of `doi` and `url`. + E.g. the citation for the model architecture and/or the training data used. + 1. _(CiteEntry)_ is a Dict with the following keys: + * `text` _(String)_ free text description + * `doi` _(DOI→String)_ digital object identifier, see https://www.doi.org/ (alternatively specify `url`) + * `url` _(String)_ url to cite (alternatively specify `doi`) +* `config` _(optional YamlDict→Dict\[Any, Any\])_ A custom configuration field that can contain any keys not present in the RDF spec. This means you should not store, for example, github repo URL in `config` since we already have the `git_repo` key defined in the spec. + Keys in `config` may be very specific to a tool or consumer software. To avoid conflicted definitions, it is recommended to wrap configuration into a sub-field named with the specific domain or tool name, for example: + + ```yaml + config: + bioimage_io: # here is the domain name + my_custom_key: 3837283 + another_key: + nested: value + imagej: + macro_dir: /path/to/macro/file + ``` + If possible, please use [`snake_case`](https://en.wikipedia.org/wiki/Snake_case) for keys in `config`. + For example: + ```yaml + config: + # custom config for DeepImageJ, see https://github.com/bioimage-io/configuration/issues/23 + deepimagej: + model_keys: + # In principle the tag "SERVING" is used in almost every tf model + model_tag: tf.saved_model.tag_constants.SERVING + # Signature definition to call the model. Again "SERVING" is the most general + signature_definition: tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY + test_information: + input_size: [2048x2048] # Size of the input images + output_size: [1264x1264 ]# Size of all the outputs + device: cpu # Device used. In principle either cpu or GPU + memory_peak: 257.7 Mb # Maximum memory consumed by the model in the device + runtime: 78.8s # Time it took to run the model + pixel_size: [9.658E-4µmx9.658E-4µm] # Size of the pixels of the input + ``` +* `covers` _(optional List\[Union\[URL→URI | Path→String\]\])_ A list of cover images provided by either a relative path to the model folder, or a hyperlink starting with 'http[s]'. Please use an image smaller than 500KB and an aspect ratio width to height of 2:1. The supported image formats are: 'jpg', 'png', 'gif'. +* `download_url` _(optional Union\[URL→URI | Path→String\])_ optional url to download the resource from +* `git_repo` _(optional URL→URI)_ A url to the git repository, e.g. to Github or Gitlab.If the model is contained in a subfolder of a git repository, then a url to the exact folder(which contains the configuration yaml file) should be used. +* `icon` _(optional String)_ an icon for the resource +* `id` _(optional String)_ Unique id within a collection of resources. +* `links` _(optional List\[String\])_ links to other bioimage.io resources +* `maintainers` _(optional List\[Maintainer\])_ Maintainers of this resource. + 1. _(Maintainer)_ is a Dict with the following keys: + * `github_user` _(String)_ GitHub user name. + * `affiliation` _(String)_ Affiliation. + * `email` _(Email)_ E-Mail + * `name` _(Name→String)_ Full name. + * `orcid` _(String)_ [orcid](https://support.orcid.org/hc/en-us/sections/360001495313-What-is-ORCID) id in hyphenated groups of 4 digits, e.g. '0000-0001-2345-6789' (and [valid](https://support.orcid.org/hc/en-us/articles/360006897674-Structure-of-the-ORCID-Identifier) as per ISO 7064 11,2.) +* `outputs` _(optional List\[OutputTensor\])_ Describes the output tensors from this model. + 1. _(OutputTensor)_ is a Dict with the following keys: + * `axes` _(Axes→String)_ Axes identifying characters from: bitczyx. Same length and order as the axes in `shape`. + + | character | description | + | --- | --- | + | b | batch (groups multiple samples) | + | i | instance/index/element | + | t | time | + | c | channel | + | z | spatial dimension z | + | y | spatial dimension y | + | x | spatial dimension x | + * `data_type` _(String)_ The data type of this tensor. For inputs, only `float32` is allowed and the consumer software needs to ensure that the correct data type is passed here. For outputs can be any of `float32, float64, (u)int8, (u)int16, (u)int32, (u)int64`. The data flow in bioimage.io models is explained [in this diagram.](https://docs.google.com/drawings/d/1FTw8-Rn6a6nXdkZ_SkMumtcjvur9mtIhRqLwnKqZNHM/edit). + * `name` _(String)_ Tensor name. No duplicates are allowed. + * `shape` _(Union\[ExplicitShape→List\[Integer\] | ImplicitOutputShape\])_ Specification of output tensor shape. + 1. _(ImplicitOutputShape)_ In reference to the shape of an input tensor, the shape of the output tensor is `shape = shape(input_tensor) * scale + 2 * offset`. ImplicitOutputShape is a Dict with the following keys: + * `offset` _(List\[Float\])_ Position of origin wrt to input. Multiple of 0.5. + * `reference_tensor` _(String)_ Name of the reference tensor. + * `scale` _(List\[Float\])_ 'output_pix/input_pix' for each dimension. + * `data_range` _(Tuple)_ Tuple `(minimum, maximum)` specifying the allowed range of the data in this tensor. If not specified, the full data range that can be expressed in `data_type` is allowed. + * `halo` _(List\[Integer\])_ The halo to crop from the output tensor (for example to crop away boundary effects or for tiling). The halo should be cropped from both sides, i.e. `shape_after_crop = shape - 2 * halo`. The `halo` is not cropped by the bioimage.io model, but is left to be cropped by the consumer software. Use `shape:offset` if the model output itself is cropped and input and output shapes not fixed. + * `postprocessing` _(List\[Postprocessing\])_ Description of how this output should be postprocessed. + 1. _(Postprocessing)_ is a Dict with the following keys: + * `name` _(String)_ Name of postprocessing. One of: binarize, clip, scale_linear, sigmoid, zero_mean_unit_variance, scale_range, scale_mean_variance. + * `kwargs` _(Kwargs→Dict\[String, Any\])_ Key word arguments as described in [postprocessing spec](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/postprocessing_spec_0_4.md). +* `packaged_by` _(optional List\[Author\])_ The persons that have packaged and uploaded this model. Only needs to be specified if different from `authors` in root or any entry in `weights`. + 1. _(Author)_ is a Dict with the following keys: + * `name` _(Name→String)_ Full name. + * `affiliation` _(String)_ Affiliation. + * `email` _(Email)_ E-Mail + * `github_user` _(String)_ GitHub user name. + * `orcid` _(String)_ [orcid](https://support.orcid.org/hc/en-us/sections/360001495313-What-is-ORCID) id in hyphenated groups of 4 digits, e.g. '0000-0001-2345-6789' (and [valid](https://support.orcid.org/hc/en-us/articles/360006897674-Structure-of-the-ORCID-Identifier) as per ISO 7064 11,2.) +* `parent` _(optional ModelParent)_ The model from which this model is derived, e.g. by fine-tuning the weights. ModelParent is a Dict with the following keys: + * `id` _(optional BioImageIO_ID→String)_ ID as shown on resource card on bioimage.io + * `sha256` _(optional SHA256→String)_ Hash of the parent model RDF. Note: the hash is not validated + * `uri` _(optional Union\[URI→String | Path→String\])_ URL or local relative path of a model RDF +* `rdf_source` _(optional Union\[URL→URI | DOI→String\])_ url or doi to the source of the resource definition +* `run_mode` _(optional RunMode)_ Custom run mode for this model: for more complex prediction procedures like test time data augmentation that currently cannot be expressed in the specification. No standard run modes are defined yet. RunMode is a Dict with the following keys: + * `name` _(required String)_ The name of the `run_mode` + * `kwargs` _(optional Kwargs→Dict\[String, Any\])_ Key word arguments. +* `sample_inputs` _(optional List\[Union\[URI→String | Path→String\]\])_ List of URIs/local relative paths to sample inputs to illustrate possible inputs for the model, for example stored as png or tif images. The model is not tested with these sample files that serve to inform a human user about an example use case. +* `sample_outputs` _(optional List\[Union\[URI→String | Path→String\]\])_ List of URIs/local relative paths to sample outputs corresponding to the `sample_inputs`. +* `tags` _(optional List\[String\])_ A list of tags. +* `training_data` _(optional Union\[Dataset | LinkedDataset\])_ + 1. _(optional Dataset)_ in-place definition of [dataset RDF](https://github.com/bioimage-io/spec-bioimage-io/blob/gh-pages/dataset_spec_0_2.md) + 1. _(optional LinkedDataset)_ is a Dict with the following keys: + * `id` _(optional String)_ dataset id +* `version` _(optional Version→String)_ The version number of the model. The version number format must be a string in `MAJOR.MINOR.PATCH` format following the guidelines in Semantic Versioning 2.0.0 (see https://semver.org/), e.g. the initial version number should be `0.1.0`. + + +## Other contributions +You are welcome to submit your **models**, **datasest**, **applicaitons** and Jupyter **notebooks** to BioImage.IO. + +To add an resource item to BioImage.IO, you need to provide a set of basic information about the resouce, including name, description, authors etc. and we will generate a resource card to display in the website. + +For Community Partners, you can add models directly to the linked repository. If you are not part of the community partners, you can follow the instructions below to submit resource items (models, datasets etc.) to BioImage.IO. + +### Submit to BioImage.IO +* Step 1, prepare a [`Resource Description File`](/bioimageio_rdf_spec)(RDF) and complete at least the mandatory fields and ideally also the recommended fields for different types of resource. + +* Step 2, save the RDF file in one of the public git hosting website, it is recommended to store the RDF file in your project git repository on Github/Gitlab/Bitbucket (make sure it's a public repo). Alternatively, you can post it on [Gist](https://gist.github.com/), copy the the **raw** url to the actual file content. + +* Step 3, post the url to the comment box below (if you don't see it, click [here](https://github.com/bioimage-io/bioimage-io-models/issues/26)). And the admin team will check and verify the format and incooperate to BioImage.IO if the submitted file is qualified. diff --git a/docs/deprecated/user_guide/tutorials.md b/docs/guides/user-guide.md similarity index 57% rename from docs/deprecated/user_guide/tutorials.md rename to docs/guides/user-guide.md index d7a9e60b..35a728a6 100644 --- a/docs/deprecated/user_guide/tutorials.md +++ b/docs/guides/user-guide.md @@ -1,12 +1,17 @@ - +# User Guide +This guide is intended for users wanting to consume or use models from the BioImage Model Zoo. There are plenty of models in the BioImage Model Zoo that you can use in your own software, in the software of our community partners or you can even download them and use them in a notebook or code of your own. -# How-To use bioimage.io +## Downloading and using Models from the BioImage Model Zoo -## Download a model +See a [video](https://oc.embl.de/index.php/s/eJOIdzDVJpToETd) about using a model from the BioImage Model Zoo in different software. -bioimage.io download +bioimage.io download -## Consumer-software guidelines + +## Using BioImage Model Zoo models in different software + +### BiaPy +TBD ### DeepImageJ @@ -19,8 +24,9 @@ This will give you all the necessary Plugins to run bioimage.io models at the mo 1) Download a deepImageJ model from the BioImage Model Zoo repository. 2) Use `DeepImageJ Install Model` in ImageJ to install the `.zip` file that you just downloaded: choose the `Private model` option and `From ZIP file`. 3) In the `zip` file you just downloaded, there is an `exampleImage.tif`that you can open in ImageJ and process with the model you just downloaded. - 4) See a detailed tutorial [here](https://deepimagej.github.io/deepimagej/tutorials.html). + 4) See a detailed tutorial [here](https://deepimagej.github.io/tutorials.html). +For more detailed information about the connection between the BioImage Model Zoo and deepImageJ, see deepImageJ wiki [here](https://github.com/deepimagej/deepimagej-plugin/wiki/BioImage-Model-Zoo-Connection). ### Fiji **Note: Fiji only supports Tensorflow 1 models at the moment!** @@ -33,7 +39,7 @@ This will give you all the necessary Plugins to run bioimage.io models at the mo b) For any other bioimage.io model, go to Plugins > bioimage.io > bioimage.io prediction. 4. Continuing from 3b) you will arrive at this window: -Fiji bioimage.io prediction +Fiji bioimage.io prediction The configuration fields should be self-explanatory. @@ -41,13 +47,12 @@ The configuration fields should be self-explanatory. ### Ilastik - TBD ### ImJoy - TBD + ### ZeroCostDL4Mic **Note: [ZeroCostDL4Mic](https://github.com/HenriquesLab/ZeroCostDL4Mic/wiki) allows you trainig models and upload them to the BioImage Model Zoo or fine-tune existing ones!** @@ -55,3 +60,12 @@ TBD 2. Unzip the model `.zip` file so you can use it later in the notebook. 3. Open the ZeroCostDL4Mic notebook that corresponds to the model you downloaded. 4. When required, specify the path to the unziped folder containing the model. + +## Best Practices for Model Usage +TBD + +## Use Cases +- [Use-case 1: Stardist H&E nucleus segmentation](https://github.com/bioimage-io/use-cases/tree/main/case1-stardist) +- [Use-case 2: 3D U-Net for cell-segmentation in light microscopy](https://github.com/bioimage-io/use-cases/tree/main/case2-finetuning) +- [Use-case 3: Classification, imjoy & python library usage](https://github.com/bioimage-io/use-cases/tree/main/case3-devtools) +- [Use-case 4: Domain adaptation for mitochondria segmentation in EM](https://github.com/bioimage-io/use-cases/tree/main/case4-research)