diff --git a/Makefile b/Makefile index a87e4ed..7c19bdd 100644 --- a/Makefile +++ b/Makefile @@ -1,16 +1,19 @@ docker-imgs: - docker build --platform linux/amd64 -t medbioinf/ident-comparison-python:latest -f docker/python/Dockerfile . + docker pull ghcr.io/medbioinf/pipeline-of-identification:latest docker pull proteowizard/pwiz-skyline-i-agree-to-the-vendor-licenses:3.0.25073-842baef - - docker pull quay.io/medbioinf/openms:3.1.0 + docker pull quay.io/medbioinf/tdf2mzml:0.4 + docker pull quay.io/medbioinf/openms:3.4.1 + docker pull quay.io/medbioinf/fdrbench-nightly:146f77 docker pull quay.io/medbioinf/comet-ms:v2024.01.0 - docker pull quay.io/medbioinf/sage:v0.14.7 - docker pull quay.io/medbioinf/xtandem:2017.2.1.4 + docker pull quay.io/medbioinf/maxquant:2.6.3.0 docker pull quay.io/medbioinf/msamanda:3.0.22.071 docker pull quay.io/medbioinf/msgfplus:v2024.03.26 - docker pull quay.io/medbioinf/mzid-merger:1.4.26 + docker pull quay.io/medbioinf/sage:v0.15.0-beta.1 + docker pull quay.io/medbioinf/xtandem:2017.2.1.4 + + docker pull ghcr.io/percolator/percolator:branch-3-08 - docker pull quay.io/medbioinf/percolator:3.6.5 + docker build --platform linux/amd64 -t medbioinf/msfragger -f docker/msfragger/Dockerfile docker/msfragger/. diff --git a/docker/maxquant/Dockerfile b/docker/maxquant/Dockerfile deleted file mode 100644 index 1434281..0000000 --- a/docker/maxquant/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -FROM --platform=amd64 mambaorg/micromamba:1.5.8-noble - -COPY environment.yml . -COPY maxquant.zip . - -# install and setup of micromamba -USER root -ENV HOME=/root -ENV ENV_NAME=maxquant - -RUN echo 'show_banner: false' > ~/.mambarc - -RUN micromamba env create -y -f environment.yml \ - && micromamba clean --all --yes - -RUN apt-get update -y \ - && apt-get install -y unzip \ - && apt-get clean \ - && unzip maxquant.zip -d /opt/ \ - && ln -s /opt/MaxQuant* /opt/MaxQuant \ - && rm -rf maxquant.zip - -# First is necessary for base_image to activate the conda environment second is entrypoint -# which adds the python file to PATH -ENTRYPOINT [ "/usr/local/bin/_entrypoint.sh"] diff --git a/docker/maxquant/environment.yml b/docker/maxquant/environment.yml deleted file mode 100644 index 32fb9f5..0000000 --- a/docker/maxquant/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: maxquant -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - conda-forge::dotnet=7.0.404 \ No newline at end of file diff --git a/docker/msfragger/Dockerfile b/docker/msfragger/Dockerfile index 6664f35..f5a1dcf 100644 --- a/docker/msfragger/Dockerfile +++ b/docker/msfragger/Dockerfile @@ -1,9 +1,8 @@ -FROM --platform=amd64 mambaorg/micromamba:2.1.1-ubuntu22.04 +FROM mambaorg/micromamba:2.3.1-ubuntu24.04 -WORKDIR /home/mambauser # Copy environment.yml and requirements.txt -COPY --chown=mambauser:mambauser environment.yml . -COPY --chown=mambauser:mambauser requirements.txt . +COPY --chown=mambauser:mambauser environment.yml /home/mambauser/ +COPY --chown=mambauser:mambauser requirements.txt /home/mambauser/ # copy over MSFragger bin COPY --chown=mambauser:mambauser ./MSFragger-4.2.zip /tmp/ @@ -12,10 +11,10 @@ COPY --chown=mambauser:mambauser ./MSFragger-4.2.zip /tmp/ USER mambauser ENV HOME=/home/mambauser ENV ENV_NAME=medbioinforub-msfragger +WORKDIR /home/mambauser -RUN echo 'show_banner: false' > ~/.mambarc - -RUN micromamba env create -y -f environment.yml \ +RUN echo 'show_banner: false' > ~/.mambarc \ + && micromamba env create -y -f /home/mambauser/environment.yml \ && micromamba clean --all --yes # install / unzip MSFragger diff --git a/docker/msfragger/environment.yml b/docker/msfragger/environment.yml index 64f43c1..c0fd5d7 100644 --- a/docker/msfragger/environment.yml +++ b/docker/msfragger/environment.yml @@ -9,6 +9,6 @@ dependencies: - setuptools - git - openjdk=21 - - unzip=6.0 + - conda-forge::unzip=6.0 - pip: - -r requirements.txt diff --git a/main.nf b/main.nf index 6e4cd57..2127322 100644 --- a/main.nf +++ b/main.nf @@ -3,7 +3,7 @@ nextflow.enable.dsl=2 nextflow.preview.output = true // default python image -params.python_image = 'medbioinf/ident-comparison-python' +params.python_image = 'ghcr.io/medbioinf/pipeline-of-identification:latest' // parameters set by the command line params.raw_files = '' diff --git a/src/identification/maxquant_identification.nf b/src/identification/maxquant_identification.nf index 5185ae9..21bc147 100644 --- a/src/identification/maxquant_identification.nf +++ b/src/identification/maxquant_identification.nf @@ -1,6 +1,6 @@ nextflow.enable.dsl=2 -params.maxquant_image = 'medbioinf/maxquant:v2.6.1.0' +params.maxquant_image = 'quay.io/medbioinf/maxquant:2.6.3.0' // number of threads used by maxquant params.maxquant_threads = 4 diff --git a/src/postprocessing/percolator.nf b/src/postprocessing/percolator.nf index 547666b..0c44840 100644 --- a/src/postprocessing/percolator.nf +++ b/src/postprocessing/percolator.nf @@ -1,6 +1,6 @@ nextflow.enable.dsl=2 -params.percolator_image = 'quay.io/medbioinf/percolator:3.6.5' +params.percolator_image = 'ghcr.io/percolator/percolator:branch-3-08' // number of threads used by percolator params.percolator_threads = 4 diff --git a/src/preprocess/convert_to_mzml.nf b/src/preprocess/convert_to_mzml.nf index 3e03cee..5feb7b1 100644 --- a/src/preprocess/convert_to_mzml.nf +++ b/src/preprocess/convert_to_mzml.nf @@ -1,7 +1,8 @@ nextflow.enable.dsl=2 params.msconvert_image = 'proteowizard/pwiz-skyline-i-agree-to-the-vendor-licenses:3.0.25073-842baef' - +params.tdf2mzml_image = 'quay.io/medbioinf/tdf2mzml:0.4' +params.tdf2mzml_threads = 8 workflow convert_to_mzml { take: @@ -9,7 +10,8 @@ workflow convert_to_mzml { main: if (params.is_timstof) { - mzml = convert_bruker_d(input_path) + mzml_direct_convert = convert_bruker_d(input_path) + mzml = adjust_mzML(mzml_direct_convert) } else { mzml = convert_thermo_raw(input_path) } @@ -23,6 +25,7 @@ workflow convert_to_mzml { process convert_thermo_raw { cpus 2 + memory "8 GB" container { params.msconvert_image } input: @@ -38,24 +41,51 @@ process convert_thermo_raw { } process convert_bruker_d { - cpus 2 - container { params.python_image } + cpus { params.tdf2mzml_threads } + memory "8 GB" + container { params.tdf2mzml_image } input: - path input_raw + path input_d output: - path "${input_raw.baseName}.mzML" + path "${input_d.baseName}.mzML" script: """ - # here goes the converter... + export MKL_NUM_THREADS=${params.tdf2mzml_threads} + export NUMEXPR_NUM_THREADS=${params.tdf2mzml_threads} + export OMP_NUM_THREADS=${params.tdf2mzml_threads} + tdf2mzml -i ${input_d} --compression "zlib" -o ${input_d.baseName}.mzML + """ +} + +process adjust_mzML { + cpus 2 + memory "8 GB" + container { params.msconvert_image } + + input: + path input_mzML + + output: + path "uncompressed/${input_mzML.baseName}.mzML" + + script: + """ # msamanda needs explicit "scan=" in the id of a scan (not there in e.g. TimsTOF converted mzML data) - sed -i -e 's/ ${input_mzML.baseName}.reindex.mzML # after this, the mzML index needs to be removed, or just the compression??? - ## docker run --rm -it -v ./:/data/ proteowizard/pwiz-skyline-i-agree-to-the-vendor-licenses:3.0.25073-842baef wine msconvert --mzML -o /data/rem-index --noindex --zlib=off /data/${file}; + ## docker run --rm -it -v ./:/data/ proteowizard/pwiz-skyline-i-agree-to-the-vendor-licenses:3.0.25073-842baef wine msconvert --mzML -o ${input_mzML}.noindex_nocompress.mzML --noindex --zlib=off ${input_mzML}; + + # uncompress the mzML with re-named id-tags (this re-calculates also the index, but for X!Tandem it is needed uncompressed anyways) + mkdir uncompressed + wine msconvert --mzML --zlib=off -o uncompressed --outfile ${input_mzML.baseName}.mzML ${input_mzML.baseName}.reindex.mzML + + # cleanup + rm ${input_mzML.baseName}.reindex.mzML """ } diff --git a/src/preprocess/create_decoy_database.nf b/src/preprocess/create_decoy_database.nf index be5be37..a82adad 100644 --- a/src/preprocess/create_decoy_database.nf +++ b/src/preprocess/create_decoy_database.nf @@ -1,6 +1,6 @@ nextflow.enable.dsl=2 -params.openms_image = 'quay.io/medbioinf/openms:3.1.0' +params.openms_image = 'quay.io/medbioinf/openms:3.4.1' // number of threads used by maxquant params.decoy_database_threads = 4