Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/workflows/community.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Community

on:
push:
paths:
- 'community/**'
- '.github/workflows/community.yml'
pull_request:
paths:
- 'community/**'
- '.github/workflows/community.yml'
schedule:
# Weekly link-rot check against the default branch (Mondays, 12:00 UTC).
- cron: '0 12 * * 1'
workflow_dispatch:

jobs:
validate:
name: Validate entries
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install pyyaml
- name: Validate schema and check the index is in sync
run: python community/validate.py

links:
name: Check links
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install pyyaml
- name: Check that every linked URL resolves
run: python community/validate.py --links-only
9 changes: 7 additions & 2 deletions .github/workflows/ruff.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
name: Ruff
on: [ push, pull_request ]

on: [push, pull_request]

jobs:
ruff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/ruff-action@v3

- uses: astral-sh/ruff-action@v3
with:
version: "0.9.4"
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,16 @@ model = Merlin(RadiologyReport=True)

#### For a code-first walkthrough of the Merlin codebase, please check out this [blog](https://urldefense.com/v3/__https://passthetorch.dev/posts/deep-dive-into-merlin/__;!!G92We9drHetJ8EofZw!Z0a3-_4uuVWoAUwvJWSw5kj19m15l0bkqc64EveKRMXUceD7ezETrpV2weXxJe6wgUyoYxLFRY3u75ykWYnClE9L$).

## 📂 Merlin Abdominal CT Dataset
## 📂 Merlin Abdominal CT Dataset

We are excited to release the **Merlin Abdominal CT Dataset** to the community!

For details on accessing and using the dataset, please see the [download documentation](documentation/download.md)!

## 🤝 Community

Models, datasets, and tools built on Merlin by the community are indexed in [`community/`](community). Please see here on [how to add yours](community/CONTRIBUTING.md).

## 📎 Citation

If you find this repository useful for your work, please cite the cite the [Nature paper](https://www.nature.com/articles/s41586-026-10181-8):
Expand Down
43 changes: 43 additions & 0 deletions community/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Adding your project to the Merlin community index

The community index points people to work derived from Merlin: fine-tuned models, derived datasets, embeddings, benchmarks, and tutorials. You keep hosting and maintaining your artifact wherever you like. This index just makes it discoverable.

## How to add an entry

1. Fork this repository.
1. Copy [`template.yaml`](template.yaml) to `community/entries/<your-project-name>.yaml`. The filename must be lowercase, e.g. `merlin-nnunet.yaml`.
1. Fill in the fields (see the reference below) and delete the optional ones you do not need.
1. Regenerate the index table and check your links:
```bash
pip install pyyaml
python community/validate.py --write --check-links
```
1. Commit both your YAML file and the updated `community/README.md`, then open a pull request.

CI re-runs the same validation on every pull request that touches `community/`, so if you skip step 4 the check will tell you what to fix.

## Field reference

| Field | Required | Notes |
| --- | --- | --- |
| `name` | yes | Display name, 80 characters max. Must be unique in the index. |
| `description` | yes | One or two sentences, 300 characters max, single line. |
| `category` | yes | One of `model`, `dataset`, `tool`, `benchmark`, `tutorial`, `other`. |
| `authors` | yes | List of `name`, with optional `affiliation` and `email`. |
| `license` | yes | License of your artifact, e.g. `MIT`, `Apache-2.0`, `CC BY-NC 4.0`, or the name of your data use agreement. |
| `links` | yes | Mapping with a required `homepage`, plus optional `code`, `data`, `paper`, `demo`, `docs`. All must be public http(s) URLs. |
| `added` | yes | Date (`YYYY-MM-DD`) you added the entry. |
| `merlin_components` | no | Which parts of Merlin you build on, e.g. `image encoder`, `Merlin Abdominal CT Dataset`. |
| `tags` | no | Free-form keywords. |
| `citation` | no | BibTeX for your work, as a YAML `\|` block. |
| `contact` | no | Email or URL for questions and link-rot follow-up. Recommended. |

## What we ask

- **Host your own artifacts.** This repository does not store models or data. If you are sharing data, point to a host that can serve it, for example Hugging Face, Zenodo, or an institutional repository.
- **Links must be public.** URLs that require a login cannot be checked and will fail CI. A landing page describing how to request access is fine; a private URL is not.
- **Be clear about licensing and provenance.** State the license of what you are sharing, and make sure you have the right to share it. Derived data carries the obligations of the source data — if your work uses the Merlin Abdominal CT Dataset, its [data use agreement](../documentation/download.md) still applies to anything you redistribute.
- **No patient-identifiable data.** Anything you link must be appropriately de-identified.
- **Keep it working.** A weekly CI job re-checks every link. If yours goes dead we will open an issue and, if we cannot reach you, remove the entry. To update or remove your own entry, just open a pull request.

Questions about an entry are best raised as a [GitHub issue](https://github.com/StanfordMIMI/Merlin/issues).
33 changes: 33 additions & 0 deletions community/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Merlin Community Projects 🤝

Work built on top of Merlin, which include models, datasets, tools, benchmarks, and tutorials contributed by the community.

Everything listed here is **hosted and maintained by its own authors**. This directory is an index: each project is described by a small YAML file in [`entries/`](entries), and the table below is generated from those files. Nothing is stored in this repository, and a listing is not an endorsement or a validation of clinical safety.

**Want to add your project?** See [CONTRIBUTING.md](CONTRIBUTING.md), copy [`template.yaml`](template.yaml), fill in the fields, and open a pull request.

## Projects

<!-- COMMUNITY_TABLE:START -->

| Project | Type | Description | License |
| --- | --- | --- | --- |
| [Merlin-nnUNet](https://github.com/ashwinkumargb/Merlin-nnUNet) | model | Integrates the Merlin image encoder into the nnU-Net framework for 3D abdominal CT segmentation, with setup and inference instructions. | Apache-2.0 |

<details>
<summary><b>Merlin-nnUNet</b> — model</summary>

- **Description:** Integrates the Merlin image encoder into the nnU-Net framework for 3D abdominal CT segmentation, with setup and inference instructions.
- **Authors:** Ashwin Kumar (Stanford University)
- **Links:** [Code](https://github.com/ashwinkumargb/Merlin-nnUNet)
- **License:** Apache-2.0
- **Builds on:** image encoder
- **Tags:** `segmentation`, `abdominal-ct`, `nnU-Net`
- **Contact:** akkumar@stanford.edu
- **Added:** 2026-09-11 · **Entry:** [`merlin-nnunet.yaml`](entries/merlin-nnunet.yaml)

</details>

<!-- COMMUNITY_TABLE:END -->

<sub>The table and the expandable entries above are generated by [`validate.py`](validate.py) from the files in [`entries/`](entries). Therefore, you should edit your YAML file, not this section.</sub>
20 changes: 20 additions & 0 deletions community/entries/merlin-nnunet.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Merlin-nnUNet
description: >
Integrates the Merlin image encoder into the nnU-Net framework for 3D
abdominal CT segmentation, with setup and inference instructions.
category: model
authors:
- name: Ashwin Kumar
affiliation: Stanford University
license: Apache-2.0
links:
homepage: https://github.com/ashwinkumargb/Merlin-nnUNet
code: https://github.com/ashwinkumargb/Merlin-nnUNet
added: 2026-09-11
merlin_components:
- image encoder
tags:
- segmentation
- abdominal-ct
- nnU-Net
contact: akkumar@stanford.edu
58 changes: 58 additions & 0 deletions community/template.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Copy this file to entries/<your-project-name>.yaml and fill it in.
# Validate locally with: python community/validate.py --write --check-links
# Field reference: community/CONTRIBUTING.md

# Required. Display name of your project, as you want it listed.
name: My Merlin Project

# Required. One or two sentences, 300 characters max. Plain text, single line.
description: >
A short summary of what your project does and how it builds on Merlin.

# Required. One of: model, dataset, tool, benchmark, tutorial, other
category: tool

# Required. Everyone you want credited. 'affiliation' and 'email' are optional.
authors:
- name: Your Name
affiliation: Your Institution

# Required. The license your artifact is released under, e.g. MIT, Apache-2.0,
# CC BY 4.0, CC BY-NC 4.0, or a Stanford AIMI data use agreement.
license: MIT

# Required. 'homepage' is required; the rest are optional. All must be http(s)
# URLs that work without a login. Merlin does not host artifacts — these point
# to wherever you host yours.
links:
homepage: https://github.com/your-org/your-project
code: https://github.com/your-org/your-project
data: https://huggingface.co/datasets/your-org/your-dataset
paper: https://arxiv.org/abs/0000.00000
demo: https://huggingface.co/spaces/your-org/your-demo
docs: https://your-project.readthedocs.io

# Required. ISO date (YYYY-MM-DD) you are adding this entry.
added: 2026-09-01

# Optional. Which parts of Merlin your work builds on.
merlin_components:
- image encoder
- Merlin Abdominal CT Dataset

# Optional. Free-form keywords.
tags:
- segmentation
- abdominal-ct

# Optional. How people should cite your work, as BibTeX.
citation: |
@article{yourname2026project,
author = {Your Name},
title = {My Merlin Project},
journal = {Journal},
year = {2026}
}

# Optional. Email or URL for questions and follow-up.
contact: you@example.edu
Loading
Loading