You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**Ambiguous ⇒ leave unset.** If the source value does not *uniquely*
221
+
determine the target — e.g. a cell *type* aligns with models in multiple species — do **not** derive. Leave it unset
222
+
and note it; never pick the "likely" option.
223
+
-**Confirm with the user before writing the derivation into code.**
224
+
Derivation is a mapping *decision*, not a lookup. Show the user the rule you intend to encode as source field → target field, the entailing authority (which ancestor/lookup), and
225
+
exactly which rows will stay unset because they're ambiguous. Get
226
+
explicit approval. Only then code it. Don't silently bake in a derivation.
227
+
-**Cell lines belong in `tissue`.** When you do derive, a cell line's
228
+
canonical slot is `sample.tissue = [TissueEntry(label=<line>,
229
+
ontology_id=<resolvedid>, type="cell line")]` — not an ad-hoc `cell_line`
230
+
extra. Its anatomical tissue-of-origin (e.g. A549 → lung / UBERON) is a
231
+
*further* derivation, held to the same entailment + confirmation bar.
208
232
-**`version` is never null.** It's a required signature field (`str`, not
209
233
optional). If the source has no version, default it to `"1.0.0"` — use
210
234
`src.get("release") or "1.0.0"`, never pass `None`.
@@ -244,7 +268,7 @@ Get token from catalog's `/docs` → Token → `/token/issue`. Pass via `CATALOG
244
268
here with a precise error, before any network call.
245
269
-**`record_schema_version` is auto-set.** Don't map a source field
246
270
onto it; the model defaults it.
247
-
-**`dataset_type` values are `raw` / `processed`** (`DatasetType.raw`) — not `primary`.
271
+
-**`dataset_type` values are `raw` / `processed`** (`DatasetType.raw`)
248
272
-**`data_quality.checks_*` accept any shape** (`Any`): a count, a list of
249
273
names, or a nested dict all validate.
250
274
-**`extra="allow"` cuts both ways.** Unknown keys are preserved (great for
@@ -262,6 +286,7 @@ Get token from catalog's `/docs` → Token → `/token/issue`. Pass via `CATALOG
262
286
-**No live server on a clean machine.**`--dry-run` swaps the client's internal
263
287
`_http` for an `httpx.MockTransport` fake catalog (`_mock_client` in the
264
288
template) so you can validate the full submit path without a token.
289
+
- Don't ask user for sensitive tokens or credentials.
265
290
266
291
## Troubleshooting
267
292
@@ -277,4 +302,4 @@ Get token from catalog's `/docs` → Token → `/token/issue`. Pass via `CATALOG
277
302
to update it in place (see *Registering*).
278
303
-`ValueError: update_if_exists and error_on_duplicate cannot both be True` →
279
304
both flags were set; `update_if_exists=True` requires `error_on_duplicate=False`.
280
-
-`AuthenticationError` (401) → bad/expired token; reissue at `/token/issue`.
305
+
-`AuthenticationError` (401) → bad/expired token; ask user to reissue at `/token` page.
Copy file name to clipboardExpand all lines: schema/v1.4.0/schema.md
+17-16Lines changed: 17 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -115,15 +115,16 @@ and modality-specific metadata all live at the dataset level.
115
115
116
116
### Dataset types
117
117
118
-
**Raw** are data produced by a single experimental acquisition — one pass through
118
+
**Raw** are data produced by a single experimental acquisition from a machine — one pass through
119
119
an instrument or pipeline under consistent conditions (same organism, same assay, same
120
120
modality). If two groups of files came from the same run under the same conditions,
121
121
they go in one dataset. If anything changes between them, register them separately.
122
122
123
123
**Processed** are always new datasets. When an existing dataset is processed,
124
124
the output goes in a new dataset record linked back to its source via a lineage edge.
125
-
The original is never modified. A processed dataset can be derived from multiple source
126
-
datasets across different samples, assays, or modalities.
125
+
The original is never modified. Any qualitative change to the raw dataset such as preprocessing,
126
+
makes it a processed dataset. A processed dataset can be derived from multiple source datasets
127
+
across different samples, assays, or modalities.
127
128
128
129
The `dataset_type` field records this distinction as `raw` or `processed`.
129
130
@@ -182,12 +183,12 @@ level are permitted for domain-specific or team-specific needs.
182
183
183
184
#### Experimental metadata
184
185
185
-
| Field | Type | Required | Description |
186
-
|---|---|---|---|
187
-
|`sub_modality`| string | No | More granular specification of the experimental procedure (e.g. `scRNA-seq`, `brightfield`, `bulk`). |
188
-
|`assay`| list[json]| No | Assay(s) used to produce the dataset. Each entry: `{ label, ontology_id }`. Recommended ontology: **EFO** (e.g. `EFO:0022605`). |
189
-
|`machine_information`| json | No | Information about the instrument used for data generation. |
190
-
|`experimental_protocols`| json | No | Protocol details for the experiment. |
|`sub_modality`| string | No | More granular specification of the experimental procedure (e.g. `scRNA-seq`, `brightfield`, `bulk`). |
189
+
|`assay`| list[json]| No | Assay(s) used to produce the dataset. Each entry: `{ label, ontology_id }`. Recommended ontology: **EFO** (e.g. `EFO:0022605`), **FBbi** (eg. `FBbi:00100015`). |
190
+
|`machine_information`| json | No | Information about the instrument used for data generation. |
191
+
|`experimental_protocols`| json | No | Protocol details for the experiment. |
191
192
192
193
#### Sample metadata
193
194
@@ -208,13 +209,13 @@ ontology recommended below. These follow the
|`assay`|**EFO**|Experimental Factor Ontology, e.g. `EFO:0022605`.|
215
-
|`disease`|**MONDO**| Use `PATO:0000461` for normal/healthy and `MONDO:0021178` for injury. |
216
-
|`development_stage`| organism-specific |**HsapDv** (human), **MmusDv** (mouse), **WBls** (C. elegans), **ZFS** (zebrafish), **FBdv** (Drosophila); `UBERON:0000105` (life cycle stage) for other organisms. Use `unknown` if unavailable and `na` for cell lines. |
217
-
|`tissue`| depends on `type`|**UBERON** for tissue/organoid (or organism-specific **WBbt** / **ZFA** / **FBbt**); **CL** for cell culture; **Cellosaurus** (`CVCL_` prefix) for cell lines; `GO:0005575` (cellular_component) descendants for organelles. |
212
+
| Field | Recommended ontology | Notes & special values |
|`assay`|modality-specific | Default: Experimental Factor Ontology, e.g. `EFO:0022605`, for imaging use Biological Imaging Methods Ontology eg: `FBbi:00000243`|
216
+
|`disease`|**MONDO**| Use `PATO:0000461` for normal/healthy and `MONDO:0021178` for injury.|
217
+
|`development_stage`| organism-specific |**HsapDv** (human), **MmusDv** (mouse), **WBls** (C. elegans), **ZFS** (zebrafish), **FBdv** (Drosophila); `UBERON:0000105` (life cycle stage) for other organisms. Use `unknown` if unavailable and `na` for cell lines.|
218
+
|`tissue`| depends on `type`|**UBERON** for tissue/organoid (or organism-specific **WBbt** / **ZFA** / **FBbt**); **CL** for cell culture; **Cellosaurus** (`CVCL_` prefix) for cell lines; `GO:0005575` (cellular_component) descendants for organelles. |
218
219
219
220
The `tissue` entry's `type` field is a controlled value: one of `tissue`, `organoid`,
0 commit comments