{"id":35120131,"url":"https://github.com/goncalojustino/maxquant-windows-scheduler","last_synced_at":"2026-01-13T22:01:46.263Z","repository":{"id":330741285,"uuid":"1123801232","full_name":"goncalojustino/maxquant-windows-scheduler","owner":"goncalojustino","description":"A lightweight PowerShell 7 scheduler for running multiple MaxQuant jobs in parallel on Windows, using a queue-based submission model, CPU affinity, and robust success/failure classification.","archived":false,"fork":false,"pushed_at":"2025-12-27T17:11:20.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-29T14:07:56.250Z","etag":null,"topics":["bioinformatics","computational-proteomics","mass-spectrometry","maxquant","omics","powershell","proteomics","scheduler","windows","workflow"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/goncalojustino.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"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":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-27T16:47:09.000Z","updated_at":"2025-12-27T17:11:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/goncalojustino/maxquant-windows-scheduler","commit_stats":null,"previous_names":["goncalojustino/maxquant-windows-scheduler"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/goncalojustino/maxquant-windows-scheduler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goncalojustino%2Fmaxquant-windows-scheduler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goncalojustino%2Fmaxquant-windows-scheduler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goncalojustino%2Fmaxquant-windows-scheduler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goncalojustino%2Fmaxquant-windows-scheduler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goncalojustino","download_url":"https://codeload.github.com/goncalojustino/maxquant-windows-scheduler/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goncalojustino%2Fmaxquant-windows-scheduler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28400400,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"last_error":"SSL_read: 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":["bioinformatics","computational-proteomics","mass-spectrometry","maxquant","omics","powershell","proteomics","scheduler","windows","workflow"],"created_at":"2025-12-27T23:36:55.740Z","updated_at":"2026-01-13T22:01:46.257Z","avatar_url":"https://github.com/goncalojustino.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# maxquant-windows-scheduler\nA lightweight PowerShell 7 scheduler for running multiple MaxQuant jobs in parallel on Windows, using a queue-based submission model, CPU affinity, and robust success/failure classification.\n\n## Overview\n\nThis repository provides a **minimal local scheduler** for MaxQuant on Windows systems.  \nIt is designed for labs and individual users who:\n\n- must run MaxQuant on **Windows**\n- want to run **multiple jobs in parallel** safely\n- need **explicit resource control** (CPU threads / affinity)\n- want **deterministic success/failure detection**\n- do **not** need a full HPC or cluster scheduler\n\nThe scheduler runs continuously, watches a queue directory for MaxQuant XML files, and launches jobs when sufficient CPU resources are available.\n\n## Key features\n\n- Queue-based job submission (drop XML files into a directory)\n- Parallel execution with CPU thread accounting\n- CPU affinity enforcement (no oversubscription)\n- Supports both `\u003coutputFolder\u003e` and `\u003cfixedCombinedFolder\u003e` XML layouts\n- Robust success/failure classification based on MaxQuant outputs\n- Persistent audit trail (`summary.log`)\n- Explicit failure diagnostics (`FAILED_REASON.txt`)\n- PowerShell 7–native (no deprecated cmdlets)\n\n## Requirements\n- **Windows** (Windows 10/11 or Windows Server)\n- **PowerShell 7 or newer**  \n  (`pwsh`, not Windows PowerShell 5.1)\n- **MaxQuant** installed locally\n\u003e This script **will not run** under Windows PowerShell 5.1.\n\n\n## Directory layout\nThe scheduler expects the following directory structure:\n\n```\nC:\\MQ\\\n ├─ queue\\        # submit XML files here\n ├─ running\\      # XML files currently running\n ├─ done\\         # successfully completed jobs\n ├─ failed\\       # failed jobs\n └─ logs\\         # scheduler logs and job stdout/stderr\n```\n\nAdditional directories are user-defined in the XML files:\n- MaxQuant executable directory (e.g. `C:\\MQ_EXE`)\n- Andromeda index directory (e.g. `C:\\MQ_INDEX`)\n- RAW data directories\n- Output directories\n\n## Installation\n\n1. Clone the repository:\n   ```powershell\n   git clone https://github.com/\u003cyour-username\u003e/maxquant-windows-scheduler.git\n   ```\n2. Ensure PowerShell 7 is available:\n   ```powershell\n   pwsh --version\n   ```\n3. Edit `mq-scheduler.ps1` and set:\n   - path to `MaxQuantCmd.exe`\n   - maximum number of threads (`$MAX_THREADS`)\n   - base scheduler directory (default: `C:\\MQ`)\n\n## Running the scheduler\nFrom **PowerShell 7**:\n```powershell\npwsh -ExecutionPolicy Bypass -File mq-scheduler.ps1\n```\nThe scheduler will start and run continuously.\n\n## Submitting jobs\n\nTo submit a MaxQuant job:\n1. Prepare a valid MaxQuant XML file\n2. Ensure it contains:\n   - `\u003cnumThreads\u003e`\n   - either `\u003coutputFolder\u003e` **or** `\u003cfixedCombinedFolder\u003e`\n3. Copy or move the XML file into:\n```\nC:\\MQ\\queue\\\n```\nThat is the only submission step.\n\n## Output folder resolution\n\nThe scheduler determines the output directory using the following precedence:\n1. `\u003coutputFolder\u003e` under `\u003cMaxQuantParams\u003e`\n2. `\u003cfixedCombinedFolder\u003e` under `\u003cMaxQuantParams\u003e`\n3. `\u003coutputFolder\u003e` at top level\n4. `\u003cfixedCombinedFolder\u003e` at top level\nIf no output folder can be resolved, the job is rejected and marked as failed.\n\n## Success and failure criteria\nA job is classified as **SUCCESS** if **all** of the following are true:\n- MaxQuant exits with code `0`\n- Output directory exists\n- `combined/txt/summary.txt` exists\n- `combined/txt/proteinGroups.txt` exists\nOtherwise, the job is classified as **FAILURE**.\n\n## Failure diagnostics\nFor failed jobs:\n- The XML file is moved to `C:\\MQ\\failed`\n- A `FAILED_REASON.txt` file is written to the output directory (if available)\n- A detailed entry is added to `logs/summary.log`\nExample failure reason:\n```\nExitCode=0; OutputExists=True; SummaryTxt=True; ProteinGroupsTxt=False\n```\nThis indicates that MaxQuant ran and produced output, but protein inference did not complete successfully.\n## Logs\n- Scheduler audit log:\n  ```\n  C:\\MQ\\logs\\summary.log\n  ```\n- Per-job stdout:\n  ```\n  C:\\MQ\\logs\\\u003cjobname\u003e.out\n  ```\n- Per-job stderr:\n  ```\n  C:\\MQ\\logs\\\u003cjobname\u003e.err\n  ```\n## Limitations\n\nThis tool is intentionally minimal:\n- Not a cluster or HPC scheduler\n- No retries or job migration\n- No MaxQuant parameter validation\n- No cloud or container support\n- Single-machine only\n\nIt is designed for **local, deterministic execution**, not for distributed workloads.\n\n## License\n\nThis project is licensed under the MIT License.\n\n## Citation\nIf you use this scheduler in published work, please cite it as:\n\nG. Justino, *maxquant-windows-scheduler*, Zenodo (2025).  \nhttps://doi.org/10.5281/zenodo.18070281\n\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.18070281.svg)](https://doi.org/10.5281/zenodo.18070281)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoncalojustino%2Fmaxquant-windows-scheduler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoncalojustino%2Fmaxquant-windows-scheduler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoncalojustino%2Fmaxquant-windows-scheduler/lists"}