{"id":49781446,"url":"https://github.com/holsam/comms","last_synced_at":"2026-05-11T21:01:20.324Z","repository":{"id":354142729,"uuid":"1215871989","full_name":"holsam/comMS","owner":"holsam","description":"A command line tool for comparative analysis of proteomic data.","archived":false,"fork":false,"pushed_at":"2026-05-11T18:09:43.000Z","size":538,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-11T18:34:21.019Z","etag":null,"topics":["biological-data-analysis","mass-spectrometry","proteomics","proteomics-data-analysis"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/holsam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-20T10:36:46.000Z","updated_at":"2026-05-11T15:57:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/holsam/comMS","commit_stats":null,"previous_names":["holsam/comms"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/holsam/comMS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holsam%2FcomMS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holsam%2FcomMS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holsam%2FcomMS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holsam%2FcomMS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/holsam","download_url":"https://codeload.github.com/holsam/comMS/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holsam%2FcomMS/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32912661,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-11T17:09:15.040Z","status":"ssl_error","status_checked_at":"2026-05-11T17:08:45.420Z","response_time":120,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["biological-data-analysis","mass-spectrometry","proteomics","proteomics-data-analysis"],"created_at":"2026-05-11T21:01:15.363Z","updated_at":"2026-05-11T21:01:20.318Z","avatar_url":"https://github.com/holsam.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"right\"\u003e\n\n![Version][version-shield]\n[![Issues][issues-shield]][issues-url]\n[![project_license][license-shield]][license-url]\n\n\u003c/div\u003e\n\n# comMS\n\u003cins\u003ecom\u003c/ins\u003eparative \u003cins\u003eM\u003c/ins\u003eass \u003cins\u003eS\u003c/ins\u003epectrometry analysis pipeline\n\n## Contents\n- [Overview](#overview)\n- [Requirements](#requirements)\n    - [Python](#python)\n    - [External tools](#external-tools)\n    - [comms report dependencies](#comms-report-dependencies)\n- [Installation](#installation)\n    - [Installing external tools](#installing-external-tools)\n- [Quick start](#quick-start)\n- [Input files](#input-files)\n- [Commands](#commands)\n    - [Pipeline](#pipeline)\n    - [Individual commands](#individual-commands)\n    - [Utilities](#utilities)\n- [Configuration](#configuration)\n    - [Viewing and verifying user configuration](#viewing-and-verifying-user-configuration)\n    - [Protocol flags](#protocol-flags)\n    - [Default search parameters](#default-search-parameters)\n    - [Percolator settings](#percolator-settings)\n    - [Report settings](#report-settings)\n- [Output structure](#output-structure)\n- [Limitations](#limitations)\n- [Getting help \u0026 contributing](#getting-help--contributing)\n- [License](#license)\n\n---\n\u003cp align=\"right\"\u003e\u003ca href=\"#comms\"\u003e^ Back to top\u003c/a\u003e\u003c/p\u003e\n\n## Overview\ncomMS is a command-line tool for automated proteomic analysis and quantification, wrapping the [Crux toolkit](https://crux.ms) and [ThermoRawFileParser](https://github.com/compomics/ThermoRawFileParser) into a single reproducible pipeline. comMS was designed to enable rapid and accurate proteomic analysis and quantification, particularly from multi-species experiments where samples may originate from different species. \n\ncomMS was originally written to allow comparative analysis of samples derived from experiments investigating arbuscular mycorrhizal symbiosis (a plant-fungal mutualism) in *Medicago truncatula*, but should be applicable to any shotgun proteomics experiment that uses tryptic digestion.\n\n---\n\u003cp align=\"right\"\u003e\u003ca href=\"#comms\"\u003e^ Back to top\u003c/a\u003e\u003c/p\u003e\n\n## Requirements\n### Python\ncomMS requires Python 3.14 or later. The recommended way to manage comMS and its Python dependencies is using the package manager [`uv`](https://docs.astral.sh/uv/). If `uv` is not already installed, follow the [installation instructions](https://docs.astral.sh/uv/getting-started/installation/). \n\n### External tools\ncomMS wraps two external binaries that must be available under the `bin/` directory at the repository root. Both tools must currently be downloaded and placed under `bin/` manually. See [Installing external tools](#installing-external-tools) below.\n\nTool | Minimum version | Purpose | Platform notes\n---|---|---|---\n[Crux toolkit][crux-url] | 4.0.0 (5.0.0 for `lfq`) | Peptide index, spectrum search, PSM rescoring, quantification | Uses platform-specific binaries\n[ThermoRawFileParser][trfp-url] | 1.4.5 | `.RAW` → `.mzML` conversion | Versions \u003c 2.0.0 require [Mono](https://mono-project.com) on Linux/macOS\n\n### `comms report` dependencies\nThe `report` command requires R (≥ 4.3.0) and a set of R packages. Required R packages can be installed by running:\n```bash\nRscript src/comms/r/install_deps.R\n```\nIf R is not available, `report` will exit with an informative error.\n\nThe packages installed are:\nPackage | Source\n-- | --\n`tidyverse` | CRAN\n`openxlsx2` | CRAN\n`svglite` | CRAN\n`limma` | Bioconductor\n`ggrepel` | CRAN\n`ggfortify` | CRAN\n`cluster` | CRAN\n`UpSetR` | CRAN\n`pheatmap` | CRAN\n`VennDiagram` | CRAN\n\n---\n\u003cp align=\"right\"\u003e\u003ca href=\"#comms\"\u003e^ Back to top\u003c/a\u003e\u003c/p\u003e\n\n## Installation\nThe recommended installation method is `uv tool install`, which installs comMS as an isolated command available on your `PATH`:\n\n```bash\nuv tool install git+https://github.com/holsam/comMS\n```\n\nTo install from a local checkout:\n\n```bash\ngit clone https://github.com/holsam/comMS\ncd comMS\nuv tool install .\n```\n\nOnce installed, verify the installation:\n\n```bash\ncomms version\n```\n\n### Installing external tools\nDownload [Crux][crux-url] and [ThermoRawFileParser][trfp-url] and place them under the `bin/` directory at the project root. The expected layout is:\n```\nbin/\n  crux-v.v.platform.arch/\n    bin/\n      crux\n  ThermoRawFileParser-v.v.v/  # for versions ≥2.0.0, the subdirectory will have the platform for the given binary - comMS is compatible with this\n    ThermoRawFileParser.exe\n```\n\ncomMS locates binaries using regular expressions, so version subdirectories are expected but exact names are flexible. If multiple versions of either tool are installed under `bin/`, comMS will automatically select the most up-to-date installation.\n\nOn Linux and macOS, [ThermoRawFileParser][trfp-url] versions \u003c2.0.0 require [Mono](https://mono-project.com). Install it via your system package manager (e.g. `brew install mono` on macOS or `apt install mono-complete` on Debian/Ubuntu). ThermoRawFileParser versions ≥2.0.0 and later are native binaries and do not require Mono.\n\nThe `lfq` command requires Crux \u003e= 5.0.0, which introduced the `crux lfq` subcommand wrapping FlashLFQ. All other comMS commands are compatible with Crux \u003e= 4.0.0. comMS will raise an error at startup if the installed Crux version does not meet the requirement for the command being run.\n\n---\n\u003cp align=\"right\"\u003e\u003ca href=\"#comms\"\u003e^ Back to top\u003c/a\u003e\u003c/p\u003e\n\n## Quick start\n```bash\ncomms pipeline sample_sheet.tsv \\\n    --database combined_proteome.fasta \\\n    --input /path/to/raw_files/ \\\n    --out-dir /path/to/results/ \\\n    --organism-tags \"\u003cOrg1\u003e,\u003cPattern1\u003e,\u003cOrg2\u003e,\u003cPattern2\u003e\"\n```\nThis runs all pipeline stages in sequence: \n1. `.RAW` to `.mzML` conversion\n2. Peptide index construction\n3. Peptide-spectrum matching (via Tide-search)\n4. Per-organism PSM rescoring (via Percolator picked-protein)\n5. Quantification (via dNSAF spectral counting). \n\nUse `--skip-convert` if `.mzML` files are already available, and `--skip-report` to omit the report step (which is not yet implemented).\n\n---\n\u003cp align=\"right\"\u003e\u003ca href=\"#comms\"\u003e^ Back to top\u003c/a\u003e\u003c/p\u003e\n\n## Input files\n### Mass spectrometry data files\ncomMS expects mass spectrometry data in Thermo `.RAW` format as input to the `convert` command. If `.mzML` files are already available, the conversion step can be skipped with `--skip-convert` when running the full pipeline. Other mass spectrometry data file formats should be converted to `.mzML` externally before continuing as described above.\n\n### Sample information\ncomMS also requires a sample sheet in either `.TSV` or `.CSV` format with the following columns:\n\nColumn | Required | Description\n---|---|---\n`sample_id` | Required | Unique identifier for each sample\n`raw_file` | Required | Filename of the `.RAW` (or `.mzML`) source file\n`treatment` | Required | Experimental group label\n`fraction` | Required | Sample fraction/type label used for LFQ grouping\n`replicate` | Required | Replicate number within treatment/fraction\n`batch` | Optional | Batch label\n\nExample:\n\n```\nsample_id\traw_file\ttreatment\tfraction replicate\tbatch\nS1  sample_mock_1.RAW\tMOCK\tWCL 1   A\nS2\tsample_treat_1.RAW\tTREAT\tWCL 1   A\n```\n\n---\n\u003cp align=\"right\"\u003e\u003ca href=\"#comms\"\u003e^ Back to top\u003c/a\u003e\u003c/p\u003e\n\n## Commands\ncomMS provides the following commands. Run `comms --help` or `comms \u003ccommand\u003e --help` for full option descriptions.\n### Pipeline\nCommand | Description\n-- | --\n`pipeline`| Run the full analysis pipeline end-to-end from a sample sheet\n\n### Individual commands\nCommand | Description\n-- | --\n`convert` | Convert `.RAW` files to indexed `.mzML` files using ThermoRawFileParser\n`index` | Build a tryptic peptide index from a FASTA file using Crux `tide-index`\n`search` | Match spectra to peptides using Crux `tide-search`\n`rescore` | Rescore PSMs using Crux `percolator` with picked-protein FDR\n`lfq` | Run MS1 label-free quantification using grouped fractions\n`quantify` | Compute dNSAF spectral counts using Crux `spectral-counts`\n`report` | Generate a static analysis report (SVG figures + Excel workbooks) from `comms quantify` and optionally `comms lfq` output\n\n### Utilities\nCommand | Description\n-- | --\n`config` | Manage a user configuration file\n`license` | Print the comMS license\n`version` | Print the installed comMS version\n\n---\n\u003cp align=\"right\"\u003e\u003ca href=\"#comms\"\u003e^ Back to top\u003c/a\u003e\u003c/p\u003e\n\n## Configuration\ncomMS reads settings from a TOML configuration file, and provides the `config` command and its subcommands to interact with this file. \n\nA default configuration file is bundled with comMS, but any modifications should be made to a user config file. Initialise a user config file at the OS-appropriate location by using:\n\n```bash\ncomms config init\n```\n\nConfig file locations:\n\n| OS | Path |\n|---|---|\n| Linux/macOS | `~/.config/comms/config.toml` |\n| Windows | `%APPDATA%\\comms\\config.toml` |\n\nIf no user config file exists, comMS falls back to its bundled defaults.\n\n### Viewing and verifying user configuration\n```bash\ncomms config list      # print current values vs defaults\ncomms config verify    # check all expected keys are present\ncomms config reset     # overwrite with defaults (prompts for confirmation)\n```\n### Protocol flags\nThe `config set` command applies experiment-specific presets. Multiple flags can be combined in a single call.\n\n#### Cysteine alkylation\n```bash\ncomms config set --iodo        # add static carbamidomethylation (C+57.0215 Da)\ncomms config set --no-iodo     # remove carbamidomethylation\n```\nAdd `--iodo` only if iodoacetamide alkylation was performed during sample preparation.\n\n#### Methionine oxidation\n```bash\ncomms config set --ox          # add variable methionine oxidation (M+15.9949 Da)\ncomms config set --no-ox       # remove methionine oxidation\n```\n\n#### Serine/threonine/tyrosine phosphorylation\n```bash\ncomms config set --phos        # add variable STY phosphorylation (STY+79.966331 Da)\ncomms config set --no-phos     # remove STY phosphorylation\n```\n\n#### N-terminal glutamine cyclisation\n```bash\ncomms config set --n-cyc       # add N-terminal Gln → pyro-Glu cyclisation (Q-17.027 Da)\ncomms config set --no-n-cyc    # remove N-terminal Gln cyclisation\n```\n\n#### Protein N-terminal acetylation\n```bash\ncomms config set --n-ace       # add protein N-terminal acetylation (X+42.011 Da)\ncomms config set --no-n-ace    # remove protein N-terminal acetylation\n```\n\n#### Custom modifications\n```bash\ncomms config set --custom \"1K+28.0313\"     # add a custom Tide mods_spec entry\ncomms config set --custom \"1K+28.0313\" --custom \"1R+14.0157\"  # add multiple entries\ncomms config set --custom \"\"               # remove all custom modifications\n```\nCustom modifications are stored separately and merged with the named-flag modifications at search time. The `config list` command shows both the individual values. Passing a modification that is already managed by a named flag (e.g. `1M+15.9949` for `--ox`) will produce a warning and the entry will not be added, please use the appropriate named flag instead.\n\n#### Instrument resolution\n```bash\ncomms config set --high-res    # mz_bin_width=0.02, score_function=xcorr (default)\ncomms config set --low-res     # mz_bin_width=1.0005079, score_function=combined-p-value\n```\n\nUse `--low-res` for ion-trap MS2 data (e.g. older LTQ instruments). Use `--high-res` for Orbitrap data (default for modern instruments).\n\n#### Organism protein patterns\n```bash\ncomms config set --organism Org1=Pattern1 Org2=Pattern2 # defines two organisms whose proteins will use the supplied patterns\n```\nSets the label-to-pattern pairs used to split the combined FASTA by organism during the rescore step, enabling per-organism picked-protein FDR. Each `--organism` argument takes the format Label=Pattern, where `Pattern` is matched as a regular expression against FASTA headers. Once set, these patterns are used automatically by `pipeline` and `rescore` unless overridden with `--organism-tags` at the command line.\n\n### Default index parameters\nPeptide indices are generated using the following parameters:\n\nParameter | Default | Description | Crux equivalent | Config flag\n--|--|--|--|--\nProtease | trypsin | Use tryptic digestion rules | `--enzyme` | —\nDigestion | full | Completely digest proteins | `--digestion` | —\nMissed cleavages | 2 | Maximum missed cleavage sites | `--missed-cleavages` | —\nLeading peptide clipping | True | Duplicate leading peptides with one lacking N-terminal methionine | `--clip-nterm-methionine` | —\nDuplicate decoys | True | Allow duplicated decoy proteins | `--allow-dups` | —\nNumber decoys | 1 | Number of decoy peptides per target | `--num-decoys-per-target` | —\nDecoy strategy | reverse | Generate decoy peptides by reversing residues | `--decoy-format` | —\nM oxidation | True | Variable methionine oxidation (`1M+15.9949`) | `--mods-spec` | `--ox` / `--no-ox`\nSTY phosphorylation | False | Variable STY phosphorylation (`1STY+79.966331`) | `--mods-spec` | `--phos` / `--no-phos`\nCys carbamidomethylation | False | Static cysteine carbamidomethylation (`C+57.0215`) | `--fixed-modifications` | `--iodo` / `--no-iodo`\nPeptide N-cyclicisation | True | Cyclisation of Gln to pyro-Glu at peptide N-termini (`1Q-17.027`) | `--nterm-peptide-mods-spec` | `--n-cyc` / `--no-n-cyc`\nProtein N-acetylation | True | Acetylation of protein N-terminal residue (`1X+42.011`) | `--nterm-protein-mod-spec` | `--n-ace` / `--no-n-ace`\n\nIt is recommended that any proteomes processed using the `index` command include a contaminant protein sequences, such as those in the [cRAP contaminant protein dataset](https://www.thegpm.org/crap/).\n\n### Default search parameters\nThe default configuration applies the following search parameters, informed by *[Svozil \u0026 Baerenfaller, 2017](https://doi.org/10.1016/bs.mie.2016.11.007)*:\n\nParameter | Default | Description\n---|---|---\nProtease | trypsin | Full tryptic digestion\nMissed cleavages | 2 | Maximum missed cleavage sites\nPrecursor tolerance | 10 ppm | Precursor mass window\n\n### Percolator settings\nBy default, PSM rescoring uses picked-protein FDR *[Savitski et al., 2015](https://doi.org/10.1021/acs.jproteome.5b00135)* at a 1% PSM-level FDR threshold, requiring at least two unique peptides per protein for confident identification.\n\nPicked-protein FDR is applied separately per organism when a combined multi-species FASTA is used. Organism patterns are configured via `comms config set --organism` or supplied at runtime with `--organism-tags` to the `rescore` and `pipeline` commands. The format for `--organism-tags` is a comma-separated list of alternating label and pattern pairs:\n```bash\ncomms rescore search_dir/ --database combined_proteome.fasta --organism-tags \"Org1,Pattern1,Org2,Pattern2\"\n```\nThis instructs comMS to split the combined FASTA into one sub-FASTA per organism (with contaminants appended to each), run Percolator separately against each, and merge the rescored PSMs into a single output file per sample.\n\n### Report settings\nThe `report` command performs several analyses:\n\nSection | Content\n---|---\n`qc` | Per-sample NSAF density plots, total spectral count bar charts, missing-value upset plot, presence/absence heatmap\n`pca` | PCA with k-means clustering overlay, Euclidean distance dendrogram\n`da` | limma-based differential abundance ±treatment within each fraction; volcano plots, DA Venn diagrams\n`secondary-species` | Secondary organism proteins per fraction; Venn diagram, candidate table\n`concordance` | LFQ vs dNSAF log₂FC concordance scatter and Venn diagrams (skipped automatically if no `--lfq-dir` provided)\n\n#### Pre-processing\nNormalisation is deliberately NOT applied across fractions, due to the genuine differences in protein composition anticipated.\n#### Differential abundance\nFor differential abundance, limma with empirical Bayes shrinkage is used to support statistical analysis of samples where *n* = 3 (c.f. Ritchie et al. 2015, doi:10.1093/nar/gkv007). Benjamini-Hochberg false-discovery rate is applied within each fraction independently, as across fraction comparisons are likely to be confounded by run-order influences.\n#### Auxiliary scripts\nAn auxiliary script for analysis of EV marker proteins is provided under `r/aux/...`, the contents of which are informed by MISEV 2023 guidelines (c.f. Welsh et al. 2024, doi:10.1002/jev2.12404).\n\n---\n\u003cp align=\"right\"\u003e\u003ca href=\"#comms\"\u003e^ Back to top\u003c/a\u003e\u003c/p\u003e\n\n## Output structure\ncomMS accepts an output directory option (defaults to the current working directory), and writes all outputs following the below directory structure:\n```\n\u003cout_dir\u003e/\n  comms/\n    results/\n      convert/               # indexed .mzML files\n      index/                 # Crux tide-index output\n      search/                # Crux tide-search target PSM files\n      rescore/               # Merged Percolator rescored PSM files\n        organism_n/          # Percolator rescored PSM files for specific organism\n      lfq/                   # MS1 label-free quantification output\n        fraction_n/          # FlashLFQ output for each sample fraction\n      quantify/              # dNSAF spectral-counts output\n      report/                # report output files\n        index.md             # index of all produced files\n        qc/                  # quality check plots and spreadsheet\n        pca/                 # principal component analysis and dendrogram plots\n        da/                  # differential abundance plots and spreadsheet\n        secondary-species/   # secondary species plots and spreadsheet\n        concordance/         # concordance of MS1 LFQ and dNSAF quantification (only if --lfq-dir provided)\n```\n\nIf an output directory for a given command already exists, comMS will not overwrite existing directories and instead add an incremental suffix (e.g. `search-1/`, `search-2/`).\n\n---\n\u003cp align=\"right\"\u003e\u003ca href=\"#comms\"\u003e^ Back to top\u003c/a\u003e\u003c/p\u003e\n\n## Limitations\ncomMS is still being developed and has several known limitations, which are detailed below:\n\n### Path resolution\ncomMS commands resolve the `bin/` directory relative to the package installation path. This works but is a crude way of resolving the path, and may break in differnt installtion environments. A more robust method of resolving the path to this directory will be implemented in future updates.\n\n### Input file requirements\ncomMS requires both a sample sheet (in `.tsv` or `.csv` format) and a FASTA file (containing proteomes and contaminants). Additional functionality will be added to validate any such files before beginning processing, and to assist in generating them.\n\n### `param-medic` output parsing\n\nThe `--param-medic` flag estimates mass tolerances from data before searching, and the `search` command using regular expressions to parse this where available. While comMS will fall back to default values if parsing fails, this requires further validation.\n\n---\n\u003cp align=\"right\"\u003e\u003ca href=\"#comms\"\u003e^ Back to top\u003c/a\u003e\u003c/p\u003e\n\n## Getting help \u0026 contributing\nIf you come across any bugs/issues while using comMS, or if you have a feature request, please open an [issue via GitHub][issues-url].\n\nAny contributions to this project are also very welcome! Specific guidance for developers is provided in `CONTRIBUTING.md`, please read this beforehand.\n\n---\n\u003cp align=\"right\"\u003e\u003ca href=\"#comms\"\u003e^ Back to top\u003c/a\u003e\u003c/p\u003e\n\n## License\nThis repository is distributed under the GPL-3.0 license. See [LICENSE][license-url] for more information.\n\n\u003cbr\u003e\n\n---\n\u003cp align=\"right\"\u003e\u003ca href=\"#comms\"\u003e^ Back to top\u003c/a\u003e\u003c/p\u003e\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n[version-shield]: https://img.shields.io/badge/dynamic/toml?url=https://raw.githubusercontent.com/holsam/comMS/refs/heads/main/pyproject.toml\u0026query=$.project.version\u0026style=for-the-badge\u0026label=Current%20version\u0026color=important\n[issues-shield]: https://img.shields.io/github/issues/holsam/comMS.svg?style=for-the-badge\u0026color=critical\n[issues-url]: https://github.com/holsam/comMS/issues\n[license-shield]: https://img.shields.io/github/license/holsam/comMS.svg?style=for-the-badge\u0026color=informational\n[license-url]: https://github.com/holsam/comMS/blob/main/LICENSE\n[crux-url]: https://crux.ms\n[trfp-url]: https://github.com/compomics/ThermoRawFileParser","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fholsam%2Fcomms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fholsam%2Fcomms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fholsam%2Fcomms/lists"}