Contribute¶
For contributors who add an agent to Bench, a dataset or a task to Studio, or an encoder to Perception.
How MedOmni is developed¶
MedOmni is developed in a private repository. The public repository is an export of each release, and every commit in it keeps its author.
A pull request goes to the public repository:
- Create the starting files with the piece's
newcommand, fill them in, and run its check command locally. - Open a pull request on the public repository. CI runs the same check, and the MedOmni team reviews it.
- Once it is merged there, it is brought into development under your name and ships in the next release.
Work that should stay in your own repository, for example a task on data that cannot leave your institution, can be a plug-in package instead: your own medomni-* package that ships the same pieces in a content folder and runs the same check. See Publish a plug-in package.
Contributions change only extension points. Only the MedOmni team changes Core and the contracts; if you need a contract change, such as a new family, open an issue first.
Every model card and task template lists its authors.
What you can add¶
- Add an encoder: a new encoder for an existing family.
- Add a dataset: a new openly licensed dataset, read by MedOmni's builder.
- Add a task: a template and a cohort on a supported dataset.
- An agent, below.
Add an agent (Bench)¶
For a new scaffold or model.
Steps¶
-
Create the agent config and fill it in, as in Test your agent.
medomni bench agent new my-agent -
Open a pull request adding it as
bench/agents/<name>.yaml.
Check¶
medomni bench run --agent my-agent.yaml --set medomni-bench/smoke-dummy
Every atom task of medomni-bench/smoke-dummy must finish with a run and no infrastructure error.
Publish a plug-in package¶
For agents, datasets, tasks or encoders that live in your own repository.
Steps¶
- Create a Python package named
medomni-<name>that depends onmedomni. - Add a content folder to the package, laid out like MedOmni's repository:
bench/agents/,studio/datasets/<dataset>/,bench/benchmarks/<benchmark>/,perception/encoders/<family>/<encoder>/. Create each piece in it as on the Add pages. -
Register the folder with one entry point in
pyproject.toml:[project.entry-points."medomni.plugins"] myname = "medomni_myname:content"A family converter, a task builder, an arm or a Studio tool is Python code: register it in
medomni.converters,medomni.builders,medomni.arms(with its build side inmedomni.arm_builds) ormedomni.tools. A converter for one dataset's own format is declared in itsdataset.yamlinstead. See Plug-ins. -
In your package's tests, run the same checks with
medomni.core.testing. - Install it as a wheel or in editable mode. Zip installs are not supported.
Check¶
medomni plugins
Your package and each piece it adds are listed, and the check commands (medomni studio task check, medomni perception check and the rest) work on them as on built-in pieces.
Where next¶
- Design principles: what Core and the extension points are.
- Tasks: the task template contract.
- Recipes: the cohort, label and evidence fields.