Skip to content

docs: revise and improve QC pages, add new tag widget - #105

Merged
dbirman merged 5 commits into
devfrom
104-revise-qc-docs
Oct 7, 2026
Merged

dbirman merged 5 commits into
devfrom
104-revise-qc-docs

Conversation

@dbirman

@dbirman dbirman commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

This PR improves the QC documentation based on some learning we've done in the past few months about what metrics rise to the level of "critical" QC that should fail an asset.

I also added a cool widget that should help people with developing their QC metric tag hierarchy, which was previously an arcane ask of scientists/engineers.


📚 Documentation preview 📚: https://biodata-schema--105.org.readthedocs.build/en/105/

@dbirman dbirman linked an issue Oct 6, 2026 that may be closed by this pull request

@dougollerenshaw dougollerenshaw left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left a couple inline comments. I think this is an improvement regardless, so I'm approving regardless of whether you address my comments.

If possible, I'd suggesting adding some scientists as reviewers since they're the ones who will actually be interacting with this concept most directly. I want to make sure that they find this sufficiently well documented.

As a side note why are the same changes showing up in both docs/base/core/quality_control.md and docs/source/quality_control.md?

Comment thread docs/base/core/quality_control.md Outdated
The metrics defined during quality control should define whether or not an asset can be used for analysis and the properties of an asset that could influence how an analysis is performed. There are two levels of QC:

Each [QCMetric](#qcmetric) is a single value or array of values that can be computed, or observed, about one modality in a data asset. These can have any type. Metrics should be significant: i.e. whether they pass or fail should matter for the modality. Metrics need to be human understandable. If you find yourself generating more than fifty metrics for a modality you should group them together (i.e. make the value a dictionary combining similar metrics and the rule an evaluation of multiple fields in the dictionary).
- Quality control metrics that are **not allowed to fail** are metrics that at `stage:raw` would prevent an asset from being processed or that at `stage:processing` would prevent an asset from being analyzed. This is a very high bar. Another way of saying this is that if the goals of the data acquisition were met, then all metrics that are 'not allowed to fail' should be passing.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think very concrete examples of these two types of metrics would be helpful. I'm a little afraid that 'if the goals of the data acquisition were met' is a little bit open to interpretation. You might add something like "For example, if the goal of the acquisition was to collect behavior and fiber photometry, the only 'not allowed to fail' metrics should be metrics that define whether the behavior and fiber photometry data could be analyzed, not whether they pass some thresholds on behavior engagement, signal to noise ratio, or other potentially variable metrics"

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment thread docs/base/core/quality_control.md Outdated

Each [QCMetric](#qcmetric) is a single value or array of values that can be computed, or observed, about one modality in a data asset. These can have any type. Metrics should be significant: i.e. whether they pass or fail should matter for the modality. Metrics need to be human understandable. If you find yourself generating more than fifty metrics for a modality you should group them together (i.e. make the value a dictionary combining similar metrics and the rule an evaluation of multiple fields in the dictionary).
- Quality control metrics that are **not allowed to fail** are metrics that at `stage:raw` would prevent an asset from being processed or that at `stage:processing` would prevent an asset from being analyzed. This is a very high bar. Another way of saying this is that if the goals of the data acquisition were met, then all metrics that are 'not allowed to fail' should be passing.
- Quality control metrics that are **allowed to fail** are metrics that will influence the analysis of data, for example by indicating that one element of an asset cannot be used. These assets do not invalidate further analysis but they change how analysis should be performed.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is actually unclear to me. By "element", do you mean something different than "modality"?

Back to the behavior + fiber photometry example. Wouldn't there be different "not allowed to fail" metrics on both modalities independently? In other words, wouldn't it be possible to completely fail (and throw out) the fiber data, but retain the behavior data? I'd assume so, but in that case, I don't know why we'd call that "allowed to fail" so I'm assuming that's different than what you're describing here.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

simplified

@dbirman
dbirman merged commit 36c084e into dev Oct 7, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Revise QC docs

2 participants