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
5 changes: 3 additions & 2 deletions .github/workflows/python-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -273,8 +273,9 @@ jobs:
run: pip install .
- name: Test FragPipe file
run: |
wget -nv -P ./fragpipe https://ftp.pride.ebi.ac.uk/pride/data/archive/2025/08/PXD066146/psm.tsv
wget -nv -P ./fragpipe https://ftp.pride.ebi.ac.uk/pride/data/archive/2025/08/PXD066146/ion.tsv
wget -nv https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/pmultiqc/example-projects/PXD062399.zip
mkdir -p ./fragpipe
unzip -d ./fragpipe PXD062399.zip
multiqc --fragpipe-plugin ./fragpipe -o ./results_fragpipe
- uses: actions/upload-artifact@v4
if: always()
Expand Down
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ You can find example reports on the [docs page](https://bigbio.github.io/pmultiq
| ProteoBench | ProteoBench results | [ProteoBench Example](https://pmultiqc.quantms.org/ProteoBench/multiqc_report.html) ([disable_hoverinfo](https://pmultiqc.quantms.org/ProteoBench_disable_hoverinfo/multiqc_report.html)) | [ProteoBench data](https://proteobench.cubimed.rub.de/datasets/d01e87b997b84c985868204b1ed26749902fd7f9/d01e87b997b84c985868204b1ed26749902fd7f9_data.zip) |
| mzIdentML with mzML | mzIdentML with mzML files | [mzIdentML with mzML Example](https://pmultiqc.quantms.org/PXD053068/multiqc_report.html) ([disable_hoverinfo](https://pmultiqc.quantms.org/PXD053068_disable_hoverinfo/multiqc_report.html)) | [PXD053068 folder](https://ftp.pride.ebi.ac.uk/pride/data/archive/2025/05/PXD053068/) |
| mzIdentML with MGF | mzIdentML with MGF files | [mzIdentML with MGF Example](https://pmultiqc.quantms.org/PXD054720/multiqc_report.html) ([disable_hoverinfo](https://pmultiqc.quantms.org/PXD054720_disable_hoverinfo/multiqc_report.html)) | [PXD054720 folder](https://ftp.pride.ebi.ac.uk/pride/data/archive/2024/08/PXD054720/) |
| FragPipe | FragPipe results | [FragPipe Example](https://pmultiqc.quantms.org/PXD066146/multiqc_report.html) ([disable_hoverinfo](https://pmultiqc.quantms.org/PXD066146_disable_hoverinfo/multiqc_report.html)) | [psm.tsv](https://ftp.pride.ebi.ac.uk/pride/data/archive/2025/08/PXD066146/psm.tsv) |
| FragPipe | FragPipe results | [FragPipe Example](https://pmultiqc.quantms.org/PXD062399/multiqc_report.html) ([disable_hoverinfo](https://pmultiqc.quantms.org/PXD062399_disable_hoverinfo/multiqc_report.html)) | [PXD062399.zip](https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/pmultiqc/example-projects/PXD062399.zip) |

## 👥 Contributing

Expand Down
14 changes: 6 additions & 8 deletions docs/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -165,21 +165,19 @@
"file_type": ["mzid", "disable_hoverinfo"]
},
{
"accession": "PXD066146",
"accession": "PXD062399",
"urls": [
"https://ftp.pride.ebi.ac.uk/pride/data/archive/2025/08/PXD066146/psm.tsv",
"https://ftp.pride.ebi.ac.uk/pride/data/archive/2025/08/PXD066146/ion.tsv"
"https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/pmultiqc/example-projects/PXD062399.zip"
],
"path": "docs/PXD066146",
"path": "docs/PXD062399",
"file_type": ["fragpipe", ""]
},
{
"accession": "PXD066146_disable_hoverinfo",
"accession": "PXD062399_disable_hoverinfo",
"urls": [
"https://ftp.pride.ebi.ac.uk/pride/data/archive/2025/08/PXD066146/psm.tsv",
"https://ftp.pride.ebi.ac.uk/pride/data/archive/2025/08/PXD066146/ion.tsv"
"https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/pmultiqc/example-projects/PXD062399.zip"
],
"path": "docs/PXD066146_disable_hoverinfo",
"path": "docs/PXD062399_disable_hoverinfo",
"file_type": ["fragpipe", "disable_hoverinfo"]
}
]
Expand Down
21 changes: 21 additions & 0 deletions pmultiqc/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,4 +152,25 @@ def pmultiqc_plugin_execution_start():
{"pmultiqc/tsv": {"fn": "*.tsv", "num_lines": 0}},
)

# FragPipe workflow file (parameters)
if "pmultiqc/workflow" not in config.sp:
config.update_dict(
config.sp,
{"pmultiqc/workflow": {"fn": "*.workflow", "num_lines": 0}},
)

# FragPipe manifest file (experiment design)
if "pmultiqc/fp-manifest" not in config.sp:
config.update_dict(
config.sp,
{"pmultiqc/fp-manifest": {"fn": "*.fp-manifest", "num_lines": 0}},
)

# MSFragger params file (search engine parameters)
if "pmultiqc/fragger_params" not in config.sp:
config.update_dict(
config.sp,
{"pmultiqc/fragger_params": {"fn": "*.params", "num_lines": 0}},
)

config.update({"log_filesize_limit": 200 * pow(1024, 3), "thousandsSep_format": ""})
69 changes: 39 additions & 30 deletions pmultiqc/modules/common/plots/id.py
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,8 @@ def draw_identification(
cal_num_table_data=None,
quantms_missed_cleavages=None,
quantms_modified=None,
msms_identified_rate=None
msms_identified_rate=None,
draw_peptide_id_count=True,
):

if cal_num_table_data and cal_num_table_data.get("sdrf_samples"):
Expand Down Expand Up @@ -483,33 +484,34 @@ def build_count(data, value_key, sources):
""",
)

draw_config = {
"id": "peptide_id_count",
"cpswitch": False,
"title": "Peptide ID Count",
"tt_decimals": 0,
"ylab": "Count",
"data_labels": plot_label,
"save_data_file": False,
}

bar_html = bargraph.plot(
peptide_count,
pconfig=draw_config,
)
bar_html = plot_html_check(bar_html)
if draw_peptide_id_count:
draw_config = {
"id": "peptide_id_count",
"cpswitch": False,
"title": "Peptide ID Count",
"tt_decimals": 0,
"ylab": "Count",
"data_labels": plot_label,
"save_data_file": False,
}

add_sub_section(
sub_section=sub_sections,
plot=bar_html,
order=4,
description="""
Number of unique (i.e. not counted twice) peptide sequences including modifications per Raw file.
""",
helptext="""
Based on statistics calculated from mzTab, mzIdentML (mzid), DIA-NN report files, or FragPipe psm.tsv.
""",
)
bar_html = bargraph.plot(
peptide_count,
pconfig=draw_config,
)
bar_html = plot_html_check(bar_html)

add_sub_section(
sub_section=sub_sections,
plot=bar_html,
order=4,
description="""
Number of unique (i.e. not counted twice) peptide sequences including modifications per Raw file.
""",
helptext="""
Based on statistics calculated from mzTab, mzIdentML (mzid), DIA-NN report files, or FragPipe psm.tsv.
""",
)

if quantms_missed_cleavages:

Expand Down Expand Up @@ -912,8 +914,9 @@ def draw_modifications(sub_section, modified_data):
)


def draw_oversampling(sub_section, oversampling, oversampling_plot, is_maxquant):
if is_maxquant:
def draw_oversampling(sub_section, oversampling, oversampling_plot, data_type: str):

if data_type == "maxquant" or data_type == "fragpipe":
draw_config = {
"id": "oversampling_distribution",
"cpswitch": False,
Expand Down Expand Up @@ -948,9 +951,15 @@ def draw_oversampling(sub_section, oversampling, oversampling_plot, is_maxquant)
Oversampling occurs in low-complexity samples or long LC gradients, as well as undersized dynamic
exclusion windows for data independent acquisitions.
"""
if is_maxquant:
if data_type == "maxquant":
helptext += "<p>If DIA-Data: this metric is skipped.</p>"

if data_type == "fragpipe":
helptext += """
<p>[FragPipe: combined_ion.tsv] This plot shows the distribution of
MS/MS spectral counts per ion/peak for each sample.</p>
"""

add_sub_section(
sub_section=sub_section,
plot=bar_html,
Expand Down
Loading