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
9 changes: 0 additions & 9 deletions .github/workflows/build-docker-images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,3 @@ jobs:
- uses: actions/checkout@v3
- name: Build the full Docker image
run: docker build . --file Dockerfile --tag streamlitapp:latest

build-simple-app:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- name: Build the Docker image (pyOpenMS only)
run: docker build . --file Dockerfile_simple --tag streamlitapp-simple:latest
4 changes: 2 additions & 2 deletions .github/workflows/build-windows-executable-app.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ jobs:
uses: actions/cache@v4
with:
path: ${{ github.workspace }}/OpenMS/contrib
key: ${{ runner.os }}-contrib3
key: ${{ runner.os }}-contrib-${{ env.OPENMS_VERSION }}

- name: Load contrib build
if: steps.cache-contrib-win.outputs.cache-hit != 'true'
Expand All @@ -82,7 +82,7 @@ jobs:
run: |
cd OpenMS/contrib
# Download the file using the URL fetched from GitHub
gh release download -R OpenMS/contrib --pattern 'contrib_build-Windows.tar.gz'
gh release download release/${{ env.OPENMS_VERSION }} -R OpenMS/contrib --pattern 'contrib_build-Windows.tar.gz'
# Extract the archive
7z x -so contrib_build-Windows.tar.gz | 7z x -si -ttar
rm contrib_build-Windows.tar.gz
Expand Down
28 changes: 0 additions & 28 deletions .github/workflows/workflow-tests.yml

This file was deleted.

175 changes: 48 additions & 127 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,134 +1,55 @@
# OpenMS streamlit template

[![Open Template!](https://static.streamlit.io/badges/streamlit_badge_black_white.svg)](https://abi-services.cs.uni-tuebingen.de/streamlit-template/)

This repository contains a template app for OpenMS workflows in a web application using the **streamlit** framework. It serves as a foundation for apps ranging from simple workflows with **pyOpenMS** to complex workflows utilizing **OpenMS TOPP tools** with parallel execution. It includes solutions for handling user data and parameters in workspaces as well as deployment with docker-compose.

## Features

- Workspaces for user data with unique shareable IDs
- Persistent parameters and input files within a workspace
- local and online mode
- Captcha control
- Packaged executables for Windows
- framework for workflows with OpenMS TOPP tools
- Deployment [with docker-compose](https://github.com/OpenMS/streamlit-deployment)

## 🔗 Try the Online Demo

Explore the hosted version here: 👉 [Live App](https://abi-services.cs.uni-tuebingen.de/streamlit-template/)

## 💻 Run Locally

To run the app locally:

1. **Clone the repository**
```bash
git clone https://github.com/OpenMS/streamlit-template.git
cd streamlit-template
```

2. **Install dependencies**

Make sure you can run ```pip``` commands.

Install all dependencies with:
```bash
pip install -r requirements.txt
```

4. **Launch the app**
```bash
streamlit run app.py
```

> ⚠️ Note: The local version offers limited functionality. Features that depend on OpenMS TOPP tools are only available out of the box in the Docker setup. For the local version [OpenMS Command Line Tools](https://openms.readthedocs.io/en/latest/about/installation.html) must be installed separately.


## 🐳 Build with Docker

This repository contains two Dockerfiles.

1. `Dockerfile`: This Dockerfile builds all dependencies for the app including Python packages and the OpenMS TOPP tools. Recommended for more complex workflows where you want to use the OpenMS TOPP tools for instance with the **TOPP Workflow Framework**.
2. `Dockerfile_simple`: This Dockerfile builds only the Python packages. Recommended for simple apps using pyOpenMS only.

1. **Install Docker**

Install Docker from the [official Docker installation guide](https://docs.docker.com/engine/install/)

<details>
<summary>Click to expand</summary>

```bash
# Remove older Docker versions (if any)
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove -y $pkg; done
```

</details>

2. **Test Docker**

Verify that Docker is working.
```bash
docker run hello-world
```
When running this command, you should see a hello world message from Docker.

3. **Clone the repository**
```bash
git clone https://github.com/OpenMS/streamlit-template.git
cd streamlit-template
```

4. **Specify GitHub token (to download Windows executables).**

Create a temporary `.env` file with your Github token.

It should contain only one line:
`GITHUB_TOKEN=<your-github-token>`

ℹ️ **Note:** This step is not strictly required, but skipping it will remove the option to download executables from the WebApp.

3. **Build & Launch the App**

To build and start the containers.
From the project root directory:

```bash
docker-compose up -d --build
```
At the end, you should see this:
```
[+] Running 2/2
✔ openms-streamlit-template Built
✔ Container openms-streamlit-template Started
```

To make sure server started successfully, run `docker compose ps`. You should see `Up` status:
```
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4abe0603e521 openms_streamlit_template "/app/entrypoint.sh …" 7 minutes ago Up 7 minutes 0.0.0.0:8501->8501/tcp, :::8501->8501/tcp openms-streamlit-template
```

To map the port to default streamlit port `8501` and launch.

```
docker run -p 8505:8501 openms_streamlit_template
```

## Documentation

Documentation for **users** and **developers** is included as pages in [this template app](https://abi-services.cs.uni-tuebingen.de/streamlit-template/), indicated by the 📖 icon.
# quantms-web — DDA Label-Free Quantification

## Citation
A browser-based **Data-Dependent Acquisition (DDA) Label-Free Quantification** workflow for proteomics. Upload mzML files and a protein FASTA; get identified and quantified proteins with volcano plots, PCA, and clustered heatmaps. No CLI, no Nextflow config.

Please cite:
Müller, T. D., Siraj, A., et al. OpenMS WebApps: Building User-Friendly Solutions for MS Analysis. Journal of Proteome Research (2025). [https://doi.org/10.1021/acs.jproteome.4c00872](https://doi.org/10.1021/acs.jproteome.4c00872)
quantms-web mirrors the **dda-lfq branch of the [quantms Nextflow workflow](https://github.com/bigbio/quantms)** but runs as a [Streamlit](https://streamlit.io) app powered by OpenMS TOPP tools.

## References
## Pipeline

| Stage | Tool | What it does |
|---|---|---|
| 1. Identification | Comet | Peptide-spectrum matching against a protein database |
| 2. Rescoring | Percolator | ML-based statistical validation of PSMs |
| 3. Filtering | IDFilter | FDR-controlled peptide identification filtering |
| 4. Quantification | ProteomicsLFQ | Label-free quantification across samples |
| 5. Analysis | Built-in | Volcano plots, PCA, heatmaps, spectral library export |
Comment on lines +9 to +15
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Document the optional decoy-generation step to match runtime behavior.

The pipeline table skips the optional DecoyDatabase stage that is part of the implemented workflow path (generate-decoys=True). Please add it (or explicitly mark current table as simplified) to avoid user confusion about expected inputs/outputs.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 9 - 15, The README pipeline table omits the optional
DecoyDatabase stage used when generate-decoys=True, causing mismatch with
runtime behavior; update the table to include a row for "DecoyDatabase" (or add
an explicit note that the table is simplified) and describe its role (decoy
generation for downstream FDR control) so users know when inputs/outputs include
decoy files; reference the pipeline stage name "DecoyDatabase" and the config
flag "generate-decoys=True" in the note so readers can correlate docs with the
implemented workflow.


## Run locally

Install the Python dependencies and launch:

```bash
git clone https://github.com/OpenMS/quantms-web.git
cd quantms-web
pip install -r requirements.txt
streamlit run app.py
```

The full pipeline runs locally once the [OpenMS Command Line Tools](https://openms.readthedocs.io/en/latest/about/installation.html) are on your `PATH` — they provide Comet, Percolator, ProteomicsLFQ, and the rest of the TOPP suite. With Python alone, the pyOpenMS-backed parts of the UI still work.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

In current OpenMS documentation, are Comet and Percolator binaries bundled with OpenMS Command Line Tools by default, or are they accessed via adapters/external dependencies depending on installation?

💡 Result:

In the current OpenMS documentation (version 3.5.0 and nightly 3.6.0-pre), Comet and Percolator binaries are not bundled as direct OpenMS Command Line Tools (TOPP). Instead, they are external tools accessed via OpenMS adapters (CometAdapter and PercolatorAdapter). These adapters require the user to provide the path to the respective executables (-comet_executable and -percolator_executable parameters, which can be in PATH). However, for Comet, the documentation explicitly states that OpenMS installers ship with Comet, making it available by default in those installations. Percolator is treated similarly as an external dependency without mention of bundling in installers. For source builds or conda (libopenms/openms packages), third-party tools like Comet must be in PATH separately, and tools return exit code 14 if missing.

Citations:


Clarify that Comet and Percolator availability depends on installation method and that both are accessed via OpenMS adapters.

The phrase "they provide Comet, Percolator..." is ambiguous. Comet is bundled with OpenMS installers by default, while Percolator is an external dependency. Both are accessed via adapters (CometAdapter, PercolatorAdapter) that require explicit paths to the respective executables. Distinguish this from the direct TOPP suite tools, and note that availability varies by installation method (installers vs. source builds vs. conda packages).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` at line 28, Update the README sentence to clarify that Comet is
typically bundled with OpenMS installers while Percolator is an external
dependency, and that both are invoked via OpenMS adapters (CometAdapter,
PercolatorAdapter) which require explicit paths to the respective executables;
also distinguish these adapter-invoked tools from the direct TOPP suite tools
and note that availability varies by installation method (official installers vs
source builds vs conda packages).


## Run with Docker

Ships OpenMS and the search engines together so the full pipeline works out of the box:

- Pfeuffer, J., Bielow, C., Wein, S. et al. OpenMS 3 enables reproducible analysis of large-scale mass spectrometry data. Nat Methods 21, 365–367 (2024). [https://doi.org/10.1038/s41592-024-02197-7](https://doi.org/10.1038/s41592-024-02197-7)
```bash
docker-compose up -d --build
```

- Röst HL, Schmitt U, Aebersold R, Malmström L. pyOpenMS: a Python-based interface to the OpenMS mass-spectrometry algorithm library. Proteomics. 2014 Jan;14(1):74-7. [https://doi.org/10.1002/pmic.201300246](https://doi.org/10.1002/pmic.201300246). PMID: [24420968](https://pubmed.ncbi.nlm.nih.gov/24420968/).
Open http://localhost:8501.

## Windows installer

Download the latest `.msi` from [Releases](https://github.com/OpenMS/quantms-web/releases) and double-click to install. Standalone — no Python or Docker required.

## Workspaces

Every analysis session runs in an isolated **workspace** that persists inputs, parameters, and results. In online deployments the workspace ID is part of the URL, so runs are resumable and shareable.

## Citation

Müller, T. D., Siraj, A., et al. *OpenMS WebApps: Building User-Friendly Solutions for MS Analysis.* Journal of Proteome Research (2025). [doi:10.1021/acs.jproteome.4c00872](https://doi.org/10.1021/acs.jproteome.4c00872)

## References

- Pfeuffer, J., Bielow, C., Wein, S. et al. *OpenMS 3 enables reproducible analysis of large-scale mass spectrometry data.* Nat Methods 21, 365–367 (2024). [doi:10.1038/s41592-024-02197-7](https://doi.org/10.1038/s41592-024-02197-7)
- Röst HL, Schmitt U, Aebersold R, Malmström L. *pyOpenMS: a Python-based interface to the OpenMS mass-spectrometry algorithm library.* Proteomics 14, 74–77 (2014). [doi:10.1002/pmic.201300246](https://doi.org/10.1002/pmic.201300246)
Loading
Loading