Skip to content
Open
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
2 changes: 1 addition & 1 deletion .github/workflows/build-windows-executable-app.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ env:
OPENMS_VERSION: 3.5.0
PYTHON_VERSION: 3.11.0
# Name of the installer
APP_NAME: FLASHApp-1.0.1
APP_NAME: FLASHApp-1.1.0
APP_UpgradeCode: "69ae44ad-d554-4e3c-8715-7c4daf60f8bb"

jobs:
Expand Down
12 changes: 7 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ FROM ubuntu:24.04 AS setup-build-system
WORKDIR /

ARG OPENMS_REPO=https://github.com/t0mdavid-m/OpenMS.git
ARG OPENMS_BRANCH=FVdeploy
ARG OPENMS_BRANCH=FDmerge
ARG PORT=8501
# Streamlit app Gihub user name (to download artifact from).
ARG GITHUB_USER=OpenMS
Expand Down Expand Up @@ -66,10 +66,12 @@ RUN echo "mamba activate streamlit-env" >> ~/.bashrc
SHELL ["/bin/bash", "--rcfile", "~/.bashrc"]
SHELL ["mamba", "run", "-n", "streamlit-env", "/bin/bash", "-c"]

# Cython is capped below 3.3: autowrap 0.24 reflects on
# Nodes.CConstTypeNode / Nodes.CConstOrVolatileTypeNode, which Cython 3.3
# removed, breaking the pyOpenMS code generation in 'make pyopenms'.
RUN pip install --upgrade pip && python -m pip install -U setuptools nose 'Cython>=3.1,<3.3' 'autowrap==0.24' pandas 'numpy>=2.0' pytest
# autowrap 0.23.0: FDmerge's pyOpenMS predates the autowrap 0.24 migration
# (create_cpp_extension.py passes include_boost, which 0.24 removed); its
# requirements_bld.txt history pins 0.23.0. Cython is capped below 3.3, which
# removed Nodes.CConstTypeNode / Nodes.CConstOrVolatileTypeNode that autowrap
# reflects on, breaking the pyOpenMS code generation in 'make pyopenms'.
RUN pip install --upgrade pip && python -m pip install -U setuptools nose 'Cython>=3.1,<3.3' 'autowrap==0.23.0' pandas 'numpy>=2.0' pytest

# Clone OpenMS branch and the associcated contrib+thirdparties+pyOpenMS-doc submodules.
RUN git clone --recursive --depth=1 -b ${OPENMS_BRANCH} --single-branch ${OPENMS_REPO} && cd /OpenMS
Expand Down
12 changes: 7 additions & 5 deletions Dockerfile.arm
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ FROM ubuntu:24.04 AS setup-build-system
WORKDIR /

ARG OPENMS_REPO=https://github.com/t0mdavid-m/OpenMS.git
ARG OPENMS_BRANCH=FVdeploy
ARG OPENMS_BRANCH=FDmerge
ARG PORT=8501
# Streamlit app Gihub user name (to download artifact from).
ARG GITHUB_USER=OpenMS
Expand Down Expand Up @@ -59,10 +59,12 @@ RUN echo "mamba activate streamlit-env" >> ~/.bashrc
SHELL ["/bin/bash", "--rcfile", "~/.bashrc"]
SHELL ["mamba", "run", "-n", "streamlit-env", "/bin/bash", "-c"]

# Cython is capped below 3.3: autowrap 0.24 reflects on
# Nodes.CConstTypeNode / Nodes.CConstOrVolatileTypeNode, which Cython 3.3
# removed, breaking the pyOpenMS code generation in 'make pyopenms'.
RUN pip install --upgrade pip && python -m pip install -U setuptools nose 'Cython>=3.1,<3.3' 'autowrap==0.24' pandas 'numpy>=2.0' pytest
# autowrap 0.23.0: FDmerge's pyOpenMS predates the autowrap 0.24 migration
# (create_cpp_extension.py passes include_boost, which 0.24 removed); its
# requirements_bld.txt history pins 0.23.0. Cython is capped below 3.3, which
# removed Nodes.CConstTypeNode / Nodes.CConstOrVolatileTypeNode that autowrap
# reflects on, breaking the pyOpenMS code generation in 'make pyopenms'.
RUN pip install --upgrade pip && python -m pip install -U setuptools nose 'Cython>=3.1,<3.3' 'autowrap==0.23.0' pandas 'numpy>=2.0' pytest

# Clone OpenMS branch and the associcated contrib+thirdparties+pyOpenMS-doc submodules.
RUN git clone --recursive --depth=1 -b ${OPENMS_BRANCH} --single-branch ${OPENMS_REPO} && cd /OpenMS
Expand Down
10 changes: 9 additions & 1 deletion content/FLASHTnT/FLASHTnTWorkflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@
('tags.tsv', 'tags_tsv', ''),
('tagged.tsv', 'tags_tsv', ''),
('protein.tsv', 'protein_tsv', ''),
# optional FLASHAnnotator output (-out, -out_annotation of the workflow)
('annotated.tsv', 'annotated_tsv', ''),
('fragments.tsv', 'fragments_tsv', ''),
)

REQUIRED_FILES = (
Expand Down Expand Up @@ -100,15 +103,20 @@ def process_uploaded_files(uploaded_files):
results['out_deconv_mzML'], results['anno_annotated_mzML'],
logger=wf.logger
)
annotation = wf.file_manager.get_results(
unparsed_dataset, ['annotated_tsv', 'fragments_tsv'], partial=True
)
parseTnT(
wf.file_manager, unparsed_dataset,
results['out_deconv_mzML'], results['anno_annotated_mzML'],
results['tags_tsv'], results['protein_tsv'],
annotation_tsv=annotation.get('fragments_tsv'),
annotated_protein_tsv=annotation.get('annotated_tsv'),
logger=wf.logger
)

# Upload files via upload widget
st.subheader("**Upload FLASHDeconv & FLASHTnT output files (anno_annotated.mzML, out_deconv.mzML, tags.tsv & protein.tsv)**")
st.subheader("**Upload FLASHDeconv & FLASHTnT output files (anno_annotated.mzML, out_deconv.mzML, tags.tsv & protein.tsv; optionally FLASHAnnotator's annotated.tsv & fragments.tsv)**")
# Display info how to upload files
st.info(
"""
Expand Down
16 changes: 9 additions & 7 deletions content/user_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ The **Layout Manager** allows users to customize the experiment display settings

![Download Results](/static/images/flashTnT_upload.png)

3. Click the **"Database"** tab to upload the necessary **FASTA** database files.
3. Click the **"Database"** tab to upload the protein database (**FASTA** or **PEFF**). FLASHTnT estimates its FDR from decoys: a FASTA file without `DECOY_` entries gets shuffled decoys added automatically, a PEFF file gets its decoys from FLASHTnT.
4. Click **"Add Database"** to confirm the upload.


Expand All @@ -139,13 +139,15 @@ The **Layout Manager** allows users to customize the experiment display settings
## **2️⃣ Configuring Parameters**
1. Click the **"Configure"** tab.
2. Select your uploaded **mzML file**.
3. Choose the **FASTA database** file.
4. There are two sub-tabs for configuring parameters: **FLASHDeconv** and **FLASHTnT**.
3. Choose the **database** file.
4. There are three sub-tabs for configuring parameters: **FLASHDeconv**, **FLASHTnT** and **FLASHAnnotator**.
5. Adjust FLASHTnT parameters:
Adjust **general settings** such as:
- **FDR settings** (prsm_fdr, pro_fdr) – Set thresholds for precursor and proteoform-level FDR (e.g., 1.00%).
- **Ion types** (ion_type) – Ion series to consider when generating tags (e.g., b, y).
- **Max modification count** (max_mod_count) – Maximum number of allowed modifications per protein.
- **FDR settings** (pro_fdr, protein_fdr) – Proteoform- and protein-level FDR thresholds (e.g., 0.01).
- **Ion types** (ion_type) – Ion series to consider (e.g., b, y; c, z for ETD/ECD). FLASHAnnotator uses the same ion types.
- **Modifications** (var_mod, fixed_mod, max_blind_mod_count) – Variable, fixed and blind (unknown) modifications.
- **Native mode** (native) – For native and targeted top-down data (one or a few spectra, often several proteins per spectrum).
6. FLASHAnnotator annotates each reported proteoform on its raw MS2 spectrum (fragment isotope envelopes at every charge, including internal fragments) and scores it. Its fragment envelopes are the fragment ions shown in the Sequence View.


5. Click **Save** to apply settings.
Expand Down Expand Up @@ -173,7 +175,7 @@ Adjust **general settings** such as:
2. Select how many experiments to display simultaneously (e.g., 1–5).
3. Choose **components** to add for each experiment:
- **Protein Table** – Lists proteins identified by FLASHTnT, including accession, modifications, and score.
- **Sequence View** – Annotates tags, PTMs, and fragments. Visualizes FLASHTnT results; for FLASHDeconv data must be user-supplied.
- **Sequence View** – Annotates tags, PTMs, and fragments. Visualizes FLASHTnT results; for FLASHDeconv data must be user-supplied. For FLASHTnT the fragment ions are FLASHAnnotator's raw-spectrum annotation: terminal fragments are marked on the residues, internal fragments as a purple depth strip and brackets on the residues and as an internal fragment track below the sequence (one bar per piece, packed into lanes, colored by ion type, shaded by intensity). Click a bar or residue to select the fragment in the table and highlight its residues.
- **Internal Fragment Map** – Shows internal fragment ions from the selected scan
- **Tag Table** – Lists sequence tags with corresponding information.
- **Spectrum View** – Shows the annotated spectrum with matched peaks.
Expand Down

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

This file was deleted.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions js-component/dist/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
<link rel="icon" href="./favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>openms-streamlit-vue-component</title>
<script type="module" crossorigin src="./assets/index-ec8d47d1.js"></script>
<link rel="stylesheet" href="./assets/index-801f5ae0.css">
<script type="module" crossorigin src="./assets/index-39c0fb45.js"></script>
<link rel="stylesheet" href="./assets/index-8cc5a14e.css">
</head>
<body>
<div id="app"></div>
Expand Down
14 changes: 14 additions & 0 deletions presets.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,19 @@
"algorithm:link:mz_tol": 10.0
}
}
},
"flashtnt": {
"Lysate": {
"_description": "LC-MS/MS of a cell lysate: MS1 surveys, many spectra, one proteoform per spectrum mostly (FLASHTnT default search).",
"FLASHTnT": {
"native": false
}
},
"Native": {
"_description": "Native or targeted top-down: one or a few spectra, often several proteins per spectrum, no MS1 survey (FLASHTnT -native).",
"FLASHTnT": {
"native": true
}
}
}
}
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ watchdog==6.0.0
# via streamlit
xlsxwriter
scipy>=1.15
polars>=1.0.0
polars>=1.0.0,<2 # 2.0 removed APIs the parsers use (e.g. LazyFrame.with_row_count)

# Redis Queue dependencies (for online mode)
redis>=5.0.0
Expand Down
2 changes: 1 addition & 1 deletion settings.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"app-name": "FLASHApp",
"github-user": "OpenMS",
"version": "1.0.1",
"version": "1.1.0",
"repository-name": "FLASHApp",
"legal_links": {
"impressum": "https://openms.de/impressum",
Expand Down
Loading
Loading