Skip to content

Commit 6bff307

Browse files
committed
Publish GSE274113 tutorial dataset workflow
1 parent f6ffa57 commit 6bff307

6 files changed

Lines changed: 75 additions & 21 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,15 @@ after its first public release.
1919
labels retained in portable checkpoints.
2020
- Version-pinned, checksum-verified download command for the scDiffusion-X
2121
OpenProblem dataset.
22+
- Version-pinned, checksum-verified download command for the processed
23+
GSE274113 perturbation dataset on Zenodo.
2224
- A concise H5MU-first tutorial and an implementation audit linking the public
2325
models to the executed research references.
2426
- End-to-end paper workflows for training the generation RNA VAE and
2527
multimodal AE, encoding raw paired profiles, and decoding generated states.
2628
- Leave-one-cell-type-out perturbation preparation and the executed
2729
training-only post-sampling latent mean-shift correction.
30+
- Public perturbation tutorial commands using the published GSE274113 H5MU.
2831

2932
### Changed
3033

README.md

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ states. It supports cell-type-conditioned generation and
1313
perturbation-conditioned prediction while keeping the two modalities paired.
1414

1515
> **Alpha release.** The flow model and raw-H5MU paper workflow are ready for
16-
> testing. The processed perturbation dataset is not yet hosted publicly; the
17-
> tutorial therefore requires a local path for that dataset.
16+
> testing. Both public datasets used by the tutorial are now available through
17+
> version-pinned downloads.
1818
1919
## Install
2020

@@ -92,6 +92,27 @@ The upstream file contains the correct raw RNA counts and binary ATAC
9292
profiles. The tutorial splits it, trains the RNA VAE and ATAC AE, and runs
9393
`multiflow paper encode`; users do not create latent arrays manually.
9494

95+
## GSE274113 perturbation data
96+
97+
The processed paired perturbation data can also be downloaded directly:
98+
99+
```bash
100+
multiflow data download gse274113 \
101+
--output data/GSE274113_filtered.h5mu \
102+
--accept-license
103+
```
104+
105+
This is a version-pinned **31.15 GB** Zenodo download. MultiFlow verifies the
106+
published byte size and MD5 before making the file available at the requested
107+
path.
108+
109+
- Version DOI: [10.5281/zenodo.21986866](https://doi.org/10.5281/zenodo.21986866)
110+
- All-versions DOI: [10.5281/zenodo.21986865](https://doi.org/10.5281/zenodo.21986865)
111+
- Source study: [GSE274113](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE274113)
112+
113+
The complete leave-one-cell-type-out perturbation workflow is in the
114+
[tutorial](docs/tutorial.md#4-task-2-perturbation-prediction).
115+
95116
## Models
96117

97118
- `cell-state` (default): bidirectional cross-attention MultiFlow.

docs/implementation_audit.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,10 @@ CLI round trips.
5757
scDiffusion-X multimodal AE. Perturbation uses the multimodal AE for both raw
5858
RNA counts and binary ATAC. These task-specific scales are not interchangeable.
5959
- The release includes the audited RNA VAE architecture and wrappers around a
60-
pinned scDiffusion-X checkout. It does not redistribute pretrained weights or
61-
the processed GSE274113 H5MU.
60+
pinned scDiffusion-X checkout. It does not bundle pretrained weights or large
61+
data files. The processed GSE274113 H5MU is distributed separately through
62+
the version-pinned Zenodo record
63+
[10.5281/zenodo.21986866](https://doi.org/10.5281/zenodo.21986866).
6264
- `multiflow paper prepare-perturbation-fold` reproduces the executed notebook:
6365
it removes held-out non-control cells from flow training, retains held-out
6466
controls, and computes each cell-type context from all remaining flow-training

docs/tutorial.md

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -234,26 +234,27 @@ Bernoulli sample and therefore contains only 0 and 1.
234234

235235
### 4.1 Prepare the perturbation H5MU
236236

237-
The paper uses processed GSE274113 paired multiome data. The processed H5MU is
238-
not currently hosted by this repository, so do not substitute OpenProblem:
237+
The paper uses processed GSE274113 paired multiome data. Download the exact
238+
version used by this tutorial from Zenodo. The file is 31.15 GB; the command
239+
supports resuming and verifies its byte size and MD5 before publishing it at
240+
the requested path:
239241

240242
```bash
241-
export PERTURBATION_H5MU=/path/to/GSE274113_filtered.h5mu
243+
multiflow data download gse274113 \
244+
--output data/GSE274113_filtered.h5mu \
245+
--accept-license
246+
247+
export PERTURBATION_H5MU=data/GSE274113_filtered.h5mu
242248
multiflow data validate "$PERTURBATION_H5MU"
243249
```
244250

245-
For a public release, upload the processed file to Zenodo or Figshare, not
246-
GitHub. Upload these items together:
247-
248-
- `GSE274113_filtered.h5mu`;
249-
- `SHA256SUMS.txt`;
250-
- `dataset_manifest.json` with cell, gene and peak counts, matrix scales,
251-
feature identifiers, preprocessing version and required `obs` columns; and
252-
- `README_data.md` citing GSE274113 and describing peak merging and filtering.
253-
254-
After the record receives a DOI, add its version-pinned URL, byte size and
255-
checksum to `src/multiflow_omics/datasets.py`. Until then, this tutorial uses a
256-
local path rather than a fabricated URL.
251+
The fixed dataset version is
252+
[Zenodo 10.5281/zenodo.21986866](https://doi.org/10.5281/zenodo.21986866);
253+
the DOI representing all current and future versions is
254+
[10.5281/zenodo.21986865](https://doi.org/10.5281/zenodo.21986865). The source
255+
study is [GSE274113](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE274113).
256+
Review the Zenodo record and source-data terms before passing
257+
`--accept-license`.
257258

258259
### 4.2 Train and run the perturbation encoder
259260

src/multiflow_omics/datasets.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,23 @@ class DatasetFile:
3030
license="CC BY 4.0",
3131
)
3232

33-
DATASETS = {OPENPROBLEM.name: OPENPROBLEM}
33+
GSE274113 = DatasetFile(
34+
name="gse274113",
35+
filename="GSE274113_filtered.h5mu",
36+
url=(
37+
"https://zenodo.org/records/21986866/files/"
38+
"GSE274113_filtered.h5mu?download=1"
39+
),
40+
size_bytes=31_154_968_237,
41+
md5="b1aecf4d4cacf3328c0b3147426f5d16",
42+
doi="10.5281/zenodo.21986866",
43+
license="See the Zenodo record and the GSE274113 source-data terms",
44+
)
45+
46+
DATASETS = {
47+
OPENPROBLEM.name: OPENPROBLEM,
48+
GSE274113.name: GSE274113,
49+
}
3450

3551

3652
def md5_file(path: str | os.PathLike[str], *, chunk_size: int = 8 * 1024 * 1024) -> str:

tests/test_datasets.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import pytest
66

7-
from multiflow_omics.datasets import DatasetFile, verify_dataset_file
7+
from multiflow_omics.datasets import DATASETS, DatasetFile, verify_dataset_file
88

99

1010
def test_dataset_file_verification(tmp_path):
@@ -26,3 +26,14 @@ def test_dataset_file_verification(tmp_path):
2626
path,
2727
DatasetFile(**{**dataset.__dict__, "size_bytes": len(payload) + 1}),
2828
)
29+
30+
31+
def test_public_dataset_registry_is_version_pinned():
32+
perturbation = DATASETS["gse274113"]
33+
assert perturbation.filename == "GSE274113_filtered.h5mu"
34+
assert perturbation.doi == "10.5281/zenodo.21986866"
35+
assert perturbation.url.endswith(
36+
"/records/21986866/files/GSE274113_filtered.h5mu?download=1"
37+
)
38+
assert perturbation.size_bytes == 31_154_968_237
39+
assert perturbation.md5 == "b1aecf4d4cacf3328c0b3147426f5d16"

0 commit comments

Comments
 (0)