# msconvert-cli
A Python wrapper around the ProteoWizard msconvert Docker image for converting mass spectrometry files.
## Installation
```bash
uv pip install msconvert-cli
```
Or install from source:
```bash
git clone https://github.com/pgarrett-scripps/msconvert-cli.git
cd msconvert-cli
uv pip install -e .
```
## Quick Start
Basic conversion with a preset config:
```bash
# Convert files using Sage preset (mzML, 32-bit, compressed)
mscli /path/to/raw/files/ -o /output/dir --sage
# Convert with multiple workers (runs 1 file per worker due to Wine limitations)
mscli /data/*.raw -o /output --blitzff --workers 4
# Verbose logging
mscli /data/*.raw -o /output --casanovo -v
```
## Available Presets
- `--sage`: mzML, 32-bit, zlib/gzip compression
- `--biosaur`: mzML format
- `--blitzff`: mzML, MS1 only, 32-bit, zlib/gzip
- `--casanovo`: mzML, MS2 only, m/z [50-2500], denoised, top 200 peaks
- `--casanovo_mgf`: Same as casanovo but MGF format
## Usage Examples
```bash
# Convert all RAW files in a directory
mscli /data/raw_files/ -o /output --sage
# Convert specific files with custom config
mscli file1.raw file2.raw -o /output -c my_config.txt
# Parallel conversion (4 workers, 1 file per worker)
mscli /data/*.raw -o /output --blitzff --workers 4
# Parallel conversion with resource limits
mscli /data/*.raw -o /output --sage --workers 4 --worker-cores 2.0 --worker-memory 4g
# Limit memory and disable swap
mscli /data/*.raw -o /output --sage --worker-memory 4g --worker-swap 4g
# Increase shared memory for large files
mscli /data/*.raw -o /output --sage --worker-shm-size 2g
# Verbose logging to custom file
mscli /data/*.raw -o /output --sage -v --log conversion.log
# Use a specific Docker image version
mscli /data/*.raw -o /output --sage --docker-image proteowizard/pwiz-skyline-i-agree-to-the-vendor-licenses:3.0.23310
# Pass additional msconvert arguments
mscli data.raw -o /output --filter "peakPicking vendor msLevel=1"
```
## Docker Resource Limits
You can control resource allocation for each worker container:
- `--worker-cores`: CPU cores per container (e.g., `2.0`, `0.5`)
- `--worker-memory`: RAM limit (e.g., `4g`, `2048m`)
- `--worker-swap`: Swap limit (e.g., `1g`). Set equal to memory to disable swap.
- `--worker-shm-size`: Shared memory size (default: `512m`). Increase for large files.
Example with all limits:
```bash
mscli /data/*.raw -o /output --sage \
--workers 4 \
--worker-cores 2.0 \
--worker-memory 4g \
--worker-swap 4g \
--worker-shm-size 1g
```
## Logging
Logs are automatically created in the output directory when using `-v` (verbose mode):
```bash
# Auto-generates: /output/msconvert_20251023_144550.log
mscli /data/*.raw -o /output --sage -v
# Or specify a custom log file
mscli /data/*.raw -o /output --sage -v --log my_run.log
```
Log files include:
- Full command details
- Processing progress for each file
- stdout/stderr from msconvert
- Error details when conversions fail
## Notes
- Requires Docker to be installed and running
- Uses `proteowizard/pwiz-skyline-i-agree-to-the-vendor-licenses` Docker image
- Multi-worker mode processes 1 file per worker
- Supports: `.raw`, `.wiff`, `.d`, `.baf`, and other vendor formats
## Development
```bash
# Install with dev dependencies
uv sync
# Run pre-commit hooks
uv run pre-commit run -a
# Run the CLI locally
uv run mscli --help
```
---
Repository initiated with [fpgmaas/cookiecutter-uv](https://github.com/fpgmaas/cookiecutter-uv).
Raw data
{
"_id": null,
"home_page": null,
"name": "msconvert-cli",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.11",
"maintainer_email": null,
"keywords": "docker, mass-spectrometry, msconvert, proteomics, proteowizard",
"author": null,
"author_email": "Patrick Garrett <pgarrett@scripps.edu>",
"download_url": "https://files.pythonhosted.org/packages/df/b1/59a19ec019095b98499e1be6855e31ef61d9b3e7602ad01fb6833e5356d3/msconvert_cli-1.0.0.tar.gz",
"platform": null,
"description": "# msconvert-cli\n\nA Python wrapper around the ProteoWizard msconvert Docker image for converting mass spectrometry files.\n\n## Installation\n\n```bash\nuv pip install msconvert-cli\n```\n\nOr install from source:\n\n```bash\ngit clone https://github.com/pgarrett-scripps/msconvert-cli.git\ncd msconvert-cli\nuv pip install -e .\n```\n\n## Quick Start\n\nBasic conversion with a preset config:\n\n```bash\n# Convert files using Sage preset (mzML, 32-bit, compressed)\nmscli /path/to/raw/files/ -o /output/dir --sage\n\n# Convert with multiple workers (runs 1 file per worker due to Wine limitations)\nmscli /data/*.raw -o /output --blitzff --workers 4\n\n# Verbose logging\nmscli /data/*.raw -o /output --casanovo -v\n```\n\n## Available Presets\n\n- `--sage`: mzML, 32-bit, zlib/gzip compression\n- `--biosaur`: mzML format\n- `--blitzff`: mzML, MS1 only, 32-bit, zlib/gzip\n- `--casanovo`: mzML, MS2 only, m/z [50-2500], denoised, top 200 peaks\n- `--casanovo_mgf`: Same as casanovo but MGF format\n\n## Usage Examples\n\n```bash\n# Convert all RAW files in a directory\nmscli /data/raw_files/ -o /output --sage\n\n# Convert specific files with custom config\nmscli file1.raw file2.raw -o /output -c my_config.txt\n\n# Parallel conversion (4 workers, 1 file per worker)\nmscli /data/*.raw -o /output --blitzff --workers 4\n\n# Parallel conversion with resource limits\nmscli /data/*.raw -o /output --sage --workers 4 --worker-cores 2.0 --worker-memory 4g\n\n# Limit memory and disable swap\nmscli /data/*.raw -o /output --sage --worker-memory 4g --worker-swap 4g\n\n# Increase shared memory for large files\nmscli /data/*.raw -o /output --sage --worker-shm-size 2g\n\n# Verbose logging to custom file\nmscli /data/*.raw -o /output --sage -v --log conversion.log\n\n# Use a specific Docker image version\nmscli /data/*.raw -o /output --sage --docker-image proteowizard/pwiz-skyline-i-agree-to-the-vendor-licenses:3.0.23310\n\n# Pass additional msconvert arguments\nmscli data.raw -o /output --filter \"peakPicking vendor msLevel=1\"\n```\n\n## Docker Resource Limits\n\nYou can control resource allocation for each worker container:\n\n- `--worker-cores`: CPU cores per container (e.g., `2.0`, `0.5`)\n- `--worker-memory`: RAM limit (e.g., `4g`, `2048m`)\n- `--worker-swap`: Swap limit (e.g., `1g`). Set equal to memory to disable swap.\n- `--worker-shm-size`: Shared memory size (default: `512m`). Increase for large files.\n\nExample with all limits:\n```bash\nmscli /data/*.raw -o /output --sage \\\n --workers 4 \\\n --worker-cores 2.0 \\\n --worker-memory 4g \\\n --worker-swap 4g \\\n --worker-shm-size 1g\n```\n\n## Logging\n\nLogs are automatically created in the output directory when using `-v` (verbose mode):\n\n```bash\n# Auto-generates: /output/msconvert_20251023_144550.log\nmscli /data/*.raw -o /output --sage -v\n\n# Or specify a custom log file\nmscli /data/*.raw -o /output --sage -v --log my_run.log\n```\n\nLog files include:\n- Full command details\n- Processing progress for each file\n- stdout/stderr from msconvert\n- Error details when conversions fail\n\n## Notes\n\n- Requires Docker to be installed and running\n- Uses `proteowizard/pwiz-skyline-i-agree-to-the-vendor-licenses` Docker image\n- Multi-worker mode processes 1 file per worker\n- Supports: `.raw`, `.wiff`, `.d`, `.baf`, and other vendor formats\n\n## Development\n\n```bash\n# Install with dev dependencies\nuv sync\n\n# Run pre-commit hooks\nuv run pre-commit run -a\n\n# Run the CLI locally\nuv run mscli --help\n```\n\n---\n\nRepository initiated with [fpgmaas/cookiecutter-uv](https://github.com/fpgmaas/cookiecutter-uv).\n",
"bugtrack_url": null,
"license": null,
"summary": "Python wrapper for ProteoWizard msconvert with Docker support and preset configs",
"version": "1.0.0",
"project_urls": {
"Documentation": "https://pgarrett-scripps.github.io/msconvert-cli/",
"Homepage": "https://github.com/pgarrett-scripps/msconvert-cli",
"Issues": "https://github.com/pgarrett-scripps/msconvert-cli/issues",
"Repository": "https://github.com/pgarrett-scripps/msconvert-cli"
},
"split_keywords": [
"docker",
" mass-spectrometry",
" msconvert",
" proteomics",
" proteowizard"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "6004ab79b1fec0fb178bd987bca34ecf50417f44d9c35ef3eb0f108626a42667",
"md5": "8427496f36349ba2d9126c4539af18e1",
"sha256": "990e15a685d4326b99c943672a1678c6734cb785a3c1fc66ecfa3a8cf78b8833"
},
"downloads": -1,
"filename": "msconvert_cli-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8427496f36349ba2d9126c4539af18e1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.11",
"size": 12329,
"upload_time": "2025-10-23T23:19:22",
"upload_time_iso_8601": "2025-10-23T23:19:22.475473Z",
"url": "https://files.pythonhosted.org/packages/60/04/ab79b1fec0fb178bd987bca34ecf50417f44d9c35ef3eb0f108626a42667/msconvert_cli-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dfb159a19ec019095b98499e1be6855e31ef61d9b3e7602ad01fb6833e5356d3",
"md5": "45210eeb6dd774bf5fb2eb1c790fdabd",
"sha256": "6d16ba837022103cd3486954dcc8f7c9e3d139502c94db368adf2637101aecc0"
},
"downloads": -1,
"filename": "msconvert_cli-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "45210eeb6dd774bf5fb2eb1c790fdabd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.11",
"size": 32711,
"upload_time": "2025-10-23T23:19:23",
"upload_time_iso_8601": "2025-10-23T23:19:23.589032Z",
"url": "https://files.pythonhosted.org/packages/df/b1/59a19ec019095b98499e1be6855e31ef61d9b3e7602ad01fb6833e5356d3/msconvert_cli-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-23 23:19:23",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pgarrett-scripps",
"github_project": "msconvert-cli",
"github_not_found": true,
"lcname": "msconvert-cli"
}