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
{{ message }}
Repository navigation
Add a Samples page: PSMs, peptides and proteins per sample, by condition - #47
Before: there is no per-sample view. To check whether one run underperformed, you have to open each file's PSM table or compare abundance columns by eye.
After: a new Samples page under Workflow Results shows each sample's target PSMs, peptides, identified proteins, and quantified proteins and peptides, grouped by the conditions set on the Configure page.
A bar chart is coloured by condition, with a selector for which count it shows.
An OpenMS-Insight table lists the samples.
A per-condition table gives the sample count and the mean of each count.
Samples without a condition appear as "Unassigned", with a link to Configure.
In TMT mode, each sample is a channel and the page shows the proteins quantified per channel. Identifications are per file, so the page points to the Overview page for those (#46).
This is ProSE parity item R9 (Samples tab).
How:
src/common/samples.py is Streamlit-free. It counts from what the run already wrote: the IDFilter idXMLs (top hit per spectrum, decoys left out, so counts are at the run's PSM FDR) and the ProteomicsLFQ CSV (intensity above 0).
The page caches on the group assignments and the result files' modification times.
The chart is Plotly, because openms-insight has no bar chart.
Validation:
tests/test_samples.py has 3 tests: decoy exclusion, condition ordering with missing and zero-intensity samples, and TMT channels with the condition summary.
pytest tests/ passed 117 tests.
pylint --errors-only is clean on the changed files.
I rendered the page in Chromium with six files in two conditions; the screenshots match the layout described above.
Note: #42, #43 and #46 also add lines to app.py's "Workflow Results" list. Whichever merges later needs main merged in.
test-nginx (simple, arm64) failed while the ingress-nginx controller was still being installed, before the app was deployed. kubectl wait ran right after the manifests were applied and returned error: no matching resources found, because the controller pods had only just been created (Pending, 0s old). The openms namespace was still empty. This is a race in the kind setup step, and this PR doesn't touch k8s or the Docker images. No fix exists yet.
Update: the one re-run passed, so all checks on this PR are now green.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Before: there is no per-sample view. To check whether one run underperformed, you have to open each file's PSM table or compare abundance columns by eye.
After: a new Samples page under Workflow Results shows each sample's target PSMs, peptides, identified proteins, and quantified proteins and peptides, grouped by the conditions set on the Configure page.
In TMT mode, each sample is a channel and the page shows the proteins quantified per channel. Identifications are per file, so the page points to the Overview page for those (#46).
This is ProSE parity item R9 (Samples tab).
How:
src/common/samples.pyis Streamlit-free. It counts from what the run already wrote: the IDFilter idXMLs (top hit per spectrum, decoys left out, so counts are at the run's PSM FDR) and the ProteomicsLFQ CSV (intensity above 0).Validation:
tests/test_samples.pyhas 3 tests: decoy exclusion, condition ordering with missing and zero-intensity samples, and TMT channels with the condition summary.pytest tests/passed 117 tests.pylint --errors-onlyis clean on the changed files.Note: #42, #43 and #46 also add lines to
app.py's "Workflow Results" list. Whichever merges later needs main merged in.Generated by Claude Code