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
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,8 @@ auto_ver.sh
*.yaml
*.png
*.jpg
# whitelist images committed to the docs static dir
!docs/source/_static/img/*.png
!docs/source/_static/img/*.jpg
.venv*
.nfs*
26 changes: 12 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
<a href="https://pypi.org/project/scmidas/"><img src="https://img.shields.io/pypi/v/scmidas" alt="PyPI version"></a>
<a href="https://scmidas.readthedocs.io/en/latest/"><img src="https://img.shields.io/readthedocs/scmidas" alt="Documentation Status"></a>
<a href="https://github.com/labomics/midas/blob/main/LICENSE"><img src="https://img.shields.io/github/license/labomics/midas?v=1" alt="License"></a>
<a href="https://colab.research.google.com/github/labomics/midas/blob/main/examples/quickstart.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a>
<a href="https://github.com/labomics/midas/stargazers"><img src="https://img.shields.io/github/stars/labomics/midas?style=social" alt="GitHub Stars"></a>
</p>

Expand All @@ -38,26 +39,23 @@ pip install scmidas

## Quick start

The MIDAS workflow is four calls. The snippet below is an API sketch — replace `...` with your data and refer to the [tutorials](https://scmidas.readthedocs.io/en/latest/) for runnable end-to-end examples.
A bundled 1600-cell PBMC RNA+ADT mosaic dataset lets you go from `pip install` to a UMAP in about a minute on a single GPU — no extra downloads, no config files. Click the [Colab badge](https://colab.research.google.com/github/labomics/midas/blob/main/examples/quickstart.ipynb) to run it without installing anything, or copy the snippet:

```python
from scmidas.config import load_config
from scmidas.model import MIDAS
import scmidas

# 1. Build a model bound to a mosaic dataset.
# Input is either a directory of per-batch MTX matrices, or a MuData
# object via MIDAS.configure_data_from_mdata(...).
model = MIDAS.configure_data_from_dir(load_config(), ..., transform={'atac': 'binarize'})
mdata = scmidas.datasets.quickstart() # bundled toy MuData
model = scmidas.integrate(mdata) # ~1 min on a mid-range GPU
out = model.predict(joint_latent=True) # latent embeddings per batch
```

# 2. Train.
model.train(max_epochs=2000)
This produces lineage-separated clusters that mix freely across batches:

# 3. Predict — latent embeddings (z_c, z_u) and imputed counts per batch.
pred = model.predict()
<div align="center">
<img src="docs/source/_static/img/quickstart_umap.png" alt="quickstart UMAP" width="850px">
</div>

# 4. (Optional) UMAP of the integrated latent space.
model.get_emb_umap()
```
> ⚠️ **`scmidas.integrate()` defaults are tuned for the bundled toy dataset.** For your own data, override `max_epochs` (1000-2000 is typical) and consider letting `batch_size` default back to 256, e.g. `scmidas.integrate(my_mdata, max_epochs=2000, batch_size=256)`. See the [full demos](https://scmidas.readthedocs.io/en/latest/) for end-to-end pipelines on real-sized data, including imputation, batch correction, and cross-modality translation.

## Reproducibility

Expand Down
Binary file added docs/source/_static/img/quickstart_umap.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
38 changes: 38 additions & 0 deletions docs/source/release.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,44 @@ All notable changes to this project will be documented in this file.

---

## Version 0.2.x

### v0.2.0 (2026-05-03)
* **🚀 New — `scmidas.integrate(mdata)` one-line entry point**
* A thin top-level wrapper around `MIDAS.configure_data_from_mdata`
+ `train()` with toy-tuned defaults (`batch_size=128`,
`max_epochs=65`, `lr=3e-4`) so that the bundled quickstart
dataset converges in roughly one minute on a single mid-range
GPU. The full `MIDAS` class API is unchanged for users who
need control.
* ⚠️ The defaults are tuned for the toy quickstart only. For
real datasets, override `max_epochs` (1000-2000) and consider
`batch_size=256`.
* **🚀 New — bundled quickstart dataset**
* `scmidas.datasets.quickstart()` returns a 1600-cell PBMC RNA+ADT
mosaic MuData (4 batches, full mosaic structure: one RNA-only,
one ADT-only, two paired). 500 RNA HVGs + 224 ADT features,
2.66 MB shipped inside the wheel.
* Source: hand-tuned subset of `wnn_mosaic_8batch_mtx`. Build
script: `scripts/build_quickstart_demo.py`.
* **📚 Documentation**
* New `examples/quickstart.ipynb` — pre-rendered notebook that
users can open in Colab via the new badge in the README, no
local install required.
* README quickstart rewritten: replaces the previous `...` API
sketch with a runnable five-line snippet using
`scmidas.datasets.quickstart()` + `scmidas.integrate()`,
followed by the rendered UMAP image.
* **⚙️ Packaging**
* `pyproject.toml` ships `data/*.h5mu` as package data so the
quickstart dataset travels with the wheel.
* Module-level `logging.basicConfig(level=INFO)` removed from
five files (`config`, `data`, `model`, `nn`, `utils`); each
now does the canonical `logger = logging.getLogger(__name__)`
instead. Demo notebooks call `logging.basicConfig` themselves
so visible output is unchanged. Libraries should not call
`basicConfig` — it overrides the user's own logging config.

## Version 0.1.x

### v0.1.19 (2026-05-03)
Expand Down
Loading
Loading