FragPipe tools are licensed software. Uploading built images to Docker Hub, GitHub Container Registry, Quay.io, or any other public registry is a violation of the FragPipe license agreement.
After building, store your image in:
- A local Docker daemon (default after
docker build) - A private container registry (e.g., AWS ECR, private Docker Hub repo, Artifactory)
nf-core/msproteomics supports two FragPipe Docker image variants:
- Academic container — For academic and non-profit use (free license from NESViLab)
- Commercial container — For industry use (paid license from Fragmatics)
Both containers use fcyucn/fragpipe:24.0 as their base image, which provides all open-source FragPipe tools pre-installed (Philosopher, Percolator, MSBooster, PTMShepherd, etc.).
The academic container layers academic-licensed JARs (MSFragger, IonQuant, DiaTracer) on top.
The commercial container replaces the base's lib/ and tools/ with the FragPipePlus distribution's (commercial JARs + DIA-NN), so no superseded public JAR (batmass-io 1.36.5, MSBooster 1.4.14) or tools/Skyline/ stays behind.
Both containers expose the same tool aliases in PATH, so pipeline modules work identically with either variant.
- Docker installed and running
- Internet access to download tools
You need three tools from NESViLab (free for academic/non-profit use):
-
MSFragger: https://msfragger-upgrader.nesvilab.org/upgrader/
- Fill in your academic email and agree to the license
- Download the zip (e.g.,
MSFragger-4.4.1.zip)
-
IonQuant: https://msfragger-upgrader.nesvilab.org/ionquant/
- Fill in your academic email and agree to the license
- Download the zip (e.g.,
IonQuant-1.11.20.zip)
-
DiaTracer: https://msfragger-upgrader.nesvilab.org/diatracer/
- Fill in your academic email and agree to the license
- Download the zip (e.g.,
diatracer-2.2.1.zip)
cd docs/fragpipe-docker
export MSFRAGGER_ZIP=~/Downloads/MSFragger-4.4.1.zip
export IONQUANT_ZIP=~/Downloads/IonQuant-1.11.20.zip
export DIATRACER_ZIP=~/Downloads/diatracer-2.2.1.zip
./build_nfcore.sh academicdocker run --rm fragpipe-nfcore:24.0 msfragger --version
docker run --rm fragpipe-nfcore:24.0 ionquant --version
docker run --rm fragpipe-nfcore:24.0 diatracer --version
docker run --rm fragpipe-nfcore:24.0 philosopher version
docker run --rm fragpipe-nfcore:24.0 percolator --help 2>&1 | head -1# Tag for your private registry
docker tag fragpipe-nfcore:24.0 your-registry.example.com/fragpipe:24.0-academic
# Push to your private registry
docker push your-registry.example.com/fragpipe:24.0-academicnextflow run main.nf \
--mode fragpipe \
--fragpipe_workflow /path/to/LFQ-MBR.workflow \
--fragpipe_container your-registry.example.com/fragpipe:24.0-academic \
--input samplesheet.csv \
--database /path/to/database.fasta \
--outdir results \
-profile docker- Docker installed and running
- Commercial license from Fragmatics
- Contact Fragmatics at info@fragmatics.com or visit https://www.fragmatics.com/
- Purchase a commercial license for FragPipePlus
- You will receive:
FragPipePlus-24.0-linux.zip— the complete distributionlicense.dat— the license file (required at runtime by MSFragger, IonQuant, DiaTracer)
cd docs/fragpipe-docker
export FRAGPIPEPLUS_ZIP=~/Downloads/FragPipePlus-24.0-linux.zip
export LICENSE_FILE=~/Downloads/license.dat
./build_nfcore.sh commercialSame as academic container (Steps 3-5 above). Replace academic with commercial in the tag.
Override the default tag with the TAG environment variable:
TAG=my-fragpipe:latest ./build_nfcore.sh academicEvery FragPipe module (licensed and open-source tools alike) runs from the one image given with --fragpipe_container, as FragPipe runs all tools from one distribution; there is no default image:
nextflow run main.nf \
--mode fragpipe \
--fragpipe_workflow /path/to/LFQ-MBR.workflow \
--fragpipe_container your-registry.example.com/fragpipe:24.0-academic \
--input samplesheet.csv \
--database /path/to/database.fasta \
--outdir results \
-profile dockerAll FragPipe-based workflows (DDA LFQ, TMT Label Check, generic FragPipe) use this container for commercial modules.
| Tool | Version | License |
|---|---|---|
| Java | 17 (openjdk-17, from base image) | GPL-2.0 |
| MSFragger | 4.4.1 | Academic/Commercial |
| IonQuant | 1.11.20 | Academic/Commercial |
| DiaTracer | 2.2.1 | Academic/Commercial |
| Philosopher | 5.1.3-RC9 | GPL-3.0 |
| Percolator | 3.7.1 | Apache-2.0 |
| MSBooster | 1.4.14 (academic) / 1.4.17 (commercial) | LGPL-3.0 |
| PTMShepherd | 3.0.11 | Open Source |
| TMT-Integrator | 6.1.3 | Open Source |
| Crystal-C | 1.5.10 | Open Source |
| DIA-Umpire | 2.3.3 | Open Source |
| MBG | 0.3.6 | Open Source |
| batmass-io | 1.36.5 (academic) / 1.36.6 (commercial) | Open Source |
| DIA-NN | 1.8.1 | Free (bundled in FragPipe container) |
Both containers are based on fcyucn/fragpipe:24.0, which installs the full FragPipe distribution at /fragpipe_bin/fragpipe-24.0/fragpipe-24.0/.
Pipeline modules discover tools at runtime via the tools_dir path (default: /fragpipe_bin/fragpipe-24.0/fragpipe-24.0/tools).
/fragpipe_bin/fragpipe-24.0/fragpipe-24.0/
├── bin/ (FragPipe CLI)
├── lib/ (FragPipe Java libraries)
├── tools/
│ ├── MSFragger*.jar (licensed, added by academic/commercial build)
│ ├── IonQuant*.jar (licensed, added by academic/commercial build)
│ ├── DiaTracer*.jar (licensed, added by academic/commercial build)
│ ├── MSBooster*.jar
│ ├── Philosopher/philosopher (binary)
│ ├── percolator (binary)
│ ├── PTMShepherd*.jar
│ ├── TMTIntegrator*.jar
│ ├── CrystalC*.jar
│ ├── DIAUmpire*.jar
│ ├── MBG*.jar
│ └── ...
└── ext/
├── bruker/ (Bruker native libs)
└── thermo/ (Thermo native libs)
Ensure the container was built correctly and the licensed JAR is in the tools directory. Check that the JAR exists:
docker run --rm <image> find /fragpipe_bin -name "MSFragger*.jar"The licensed JAR was not properly extracted or copied into the tools directory.
For academic builds, verify that your MSFRAGGER_ZIP points to a valid zip containing the JAR.
Check that the zip structure matches (e.g., MSFragger-4.4.1/MSFragger-4.4.1.jar):
unzip -l $MSFRAGGER_ZIP | head -20Both containers inherit Java 17 (openjdk-17) from the fcyucn/fragpipe:24.0 base image.
If you see errors like UnsupportedClassVersionError or JAVA_HOME is not set, check which Java is active:
docker run --rm <image> java -version
docker run --rm <image> bash -c 'echo $JAVA_HOME'FragPipe 24.0 tools are compatible with Java 17+. Do not downgrade to Java 11 or earlier, as MSFragger 4.x requires Java 17 at minimum.