diff --git a/CHANGELOG.md b/CHANGELOG.md index db96f4173b8d32d11a925a1c39679e04cc5ea309..ea99e6775dda65525ef2970bf0e4cd2a8bb7ba45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v2.0.1dev +## v2.1.0dev ### `Added` diff --git a/bin/mapped_2hic_dnase.py b/bin/mapped_2hic_dnase.py index ff593666f03c5b82928ced06b941be296d6169ea..c417907a4483bd33bc6a6e0ceeb752d5c3d32121 100755 --- a/bin/mapped_2hic_dnase.py +++ b/bin/mapped_2hic_dnase.py @@ -362,7 +362,6 @@ if __name__ == "__main__": if cur_handler is not None: if not r1.is_unmapped and not r2.is_unmapped: - ##reorient reads to ease duplicates removal or1, or2 = get_ordered_reads(r1, r2) or1_chrom = samfile.get_reference_name(or1.reference_id) diff --git a/bin/mapped_2hic_fragments.py b/bin/mapped_2hic_fragments.py index cc0e40b472dfb764ba1bf2f550c00c79bce7bd3f..a1298716ce83c4e99931534357c03634fd5d8301 100755 --- a/bin/mapped_2hic_fragments.py +++ b/bin/mapped_2hic_fragments.py @@ -619,7 +619,6 @@ if __name__ == "__main__": r2_chrom = None if r1_resfrag is not None or r2_resfrag is not None: - interactionType = get_interaction_type(r1, r1_chrom, r1_resfrag, r2, r2_chrom, r2_resfrag, verbose) dist = get_PE_fragment_size(r1, r2, r1_resfrag, r2_resfrag, interactionType) cdist = get_cis_dist(r1, r2) diff --git a/bin/mergeSAM.py b/bin/mergeSAM.py index 82ab8c34d979240d12de57b1f2510a54a79d2ca9..d670ec2c6a94b89035ab417b4146806099c2c5aa 100755 --- a/bin/mergeSAM.py +++ b/bin/mergeSAM.py @@ -71,7 +71,6 @@ def get_read_name(read): def sam_flag(read1, read2, hr1, hr2): - f1 = read1.flag f2 = read2.flag diff --git a/docs/output.md b/docs/output.md index 9f6f7033efa9e7f87d190d5a6c1bdb548eeff9e9..1086b0371c3be007b813fdd582e5e79dde1000f6 100644 --- a/docs/output.md +++ b/docs/output.md @@ -23,7 +23,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [MultiQC](#multiqc) - aggregate report and quality controls, describing results of the whole pipeline - [Export](#exprot) - additionnal export for compatibility with downstream - analysis tool and visualization + analysis tool and visualisation ## From raw data to valid pairs @@ -36,7 +36,7 @@ For details about the workflow, see #### Reads alignment -Using Hi-C data, each reads mate has to be independantly aligned on the +Using Hi-C data, each reads mate has to be independently aligned on the reference genome. The current workflow implements a two steps mapping strategy. First, the reads are aligned using an end-to-end aligner. @@ -63,7 +63,7 @@ are available ; - `*.mapstat` - mapping statistics per read mate Usually, a high fraction of reads is expected to be aligned on the genome -(80-90%). Among them, we usually observed a few percent (around 10%) of step 2 +(80-90%). Among them, we usually observe a few percent (around 10%) of step 2 aligned reads. Those reads are chimeric fragments for which we detect a ligation junction. An abnormal level of chimeric reads can reflect a ligation issue during the library preparation. @@ -142,9 +142,9 @@ removed (see `--keep_dups` to disable duplicates filtering). Additional quality controls such as fragment size distribution can be extracted from the list of valid interaction products. -We usually expect to see a distribution centered around 300 pb which correspond +We usually expect to see a distribution centered around 300 bp which corresponds to the paired-end insert size commonly used. -The fraction of dplicates is also presented. A high level of duplication +The fraction of duplicates is also presented. A high level of duplication indicates a poor molecular complexity and a potential PCR bias. Finally, an important metric is to look at the fraction of intra and inter-chromosomal interactions, as well as long range (>20kb) versus short @@ -176,15 +176,15 @@ All results are available in `results/hicpro/stats`. #### Contact maps -Intra et inter-chromosomal contact maps are build for all specified resolutions. -The genome is splitted into bins of equal size. Each valid interaction is +Intra and inter-chromosomal contact maps are built for all specified resolutions. +The genome is split into bins of equal size. Each valid interaction is associated with the genomic bins to generate the raw maps. In addition, Hi-C data can contain several sources of biases which has to be corrected. The HiC-Pro workflow uses the [ìced](https://github.com/hiclib/iced) and [Varoquaux and Servant, 2018](http://joss.theoj.org/papers/10.21105/joss.01286) python package which proposes a fast implementation of the original ICE -normalization algorithm (Imakaev et al. 2012), making the assumption of equal +normalisation algorithm (Imakaev et al. 2012), making the assumption of equal visibility of each fragment. Importantly, the HiC-Pro maps are generated only if the `--hicpro_maps` option @@ -221,16 +221,16 @@ downstream analysis. ## Hi-C contact maps Contact maps are usually stored as simple txt (`HiC-Pro`), .hic (`Juicer/Juicebox`) and .(m)cool (`cooler/Higlass`) formats. -The .cool and .hic format are compressed and indexed and usually much more efficient that the txt format. -In the current workflow, we propose to use the `cooler` format as a standard to build the raw and normalized maps -after valid pairs detection as it is used by several downstream analysis and visualization tools. +The .cool and .hic format are compressed and indexed and usually much more efficient than the txt format. +In the current workflow, we propose to use the `cooler` format as a standard to build the raw and normalised maps +after valid pairs detection as it is used by several downstream analysis and visualisation tools. Raw contact maps are therefore in **`results/contact_maps/raw`** which contains the different maps in `txt` and `cool` formats, at various resolutions. -Normalized contact maps are stored in **`results/contact_maps/norm`** which contains the different maps in `txt`, `cool`, and `mcool` format. +Normalised contact maps are stored in **`results/contact_maps/norm`** which contains the different maps in `txt`, `cool`, and `mcool` format. The bin coordinates used for all resolutions are available in **`results/contact_maps/bins`**. Note that `txt` contact maps generated with `cooler` are identical to those generated by `HiC-Pro`. -However, differences can be observed on the normalized contact maps as the balancing algorithm is not exactly the same. +However, differences can be observed on the normalised contact maps as the balancing algorithm is not exactly the same. ## Downstream analysis @@ -246,23 +246,23 @@ The results generated with the `HiCExplorer hicPlotDistVsCounts` tool (plot and ### Compartments calling Compartments calling is one of the most common analysis which aims at detecting A (open, active) / B (close, inactive) compartments. -In the first studies on the subject, the compartments were called at high/medium resolution (1000000 to 250000) which is enough to call A/B comparments. +In the first studies on the subject, the compartments were called at high/medium resolution (1000000 to 250000) which is enough to call A/B compartments. Analysis at higher resolution has shown that these two main types of compartments can be further divided into compartments subtypes. -Although different methods have been proposed for compartment calling, the standard remains the eigen vector decomposition from the normalized correlation maps. +Although different methods have been proposed for compartment calling, the standard remains the eigen vector decomposition from the normalised correlation maps. Here, we use the implementation available in the [`cooltools`](https://cooltools.readthedocs.io/en/lates) package. -Results are available in **`results/compartments/`** folder and includes : +Results are available in **`results/compartments/`** folder and include : - `*cis.vecs.tsv`: eigenvectors decomposition along the genome - `*cis.lam.txt`: eigenvalues associated with the eigenvectors ### TADs calling -TADs has been described as functional units of the genome. -While contacts between genes and regulatority elements can occur within a single TADs, contacts between TADs are much less frequent, mainly due to the presence of insulation protein (such as CTCF) at their boundaries. Looking at Hi-C maps, TADs look like triangles around the diagonal. According to the contact map resolutions, TADs appear as hierarchical structures with a median size around 1Mb (in mammals), as well as smaller structures usually called sub-TADs of smaller size. +TADs have been described as functional units of the genome. +While contacts between genes and regulatority elements can occur within a single TAD, contacts between TADs are much less frequent, mainly due to the presence of an insulation protein (such as CTCF) at their boundaries. Looking at Hi-C maps, TADs look like triangles around the diagonal. According to the contact map resolutions, TADs appear as hierarchical structures with a median size around 1Mb (in mammals), as well as smaller structures usually called sub-TADs of smaller size. -TADs calling remains a challenging task, and even if many methods have been proposed in the last decade, little overlap have been found between their results. +TADs calling remains a challenging task, and even if many methods have been proposed in the last decade, little overlap has been found between their results. Currently, the pipeline proposes two approaches : @@ -283,7 +283,7 @@ Usually, TADs results are presented as simple BED files, or bigWig files, with t </details> -[MultiQC](http://multiqc.info) is a visualization tool that generates a single HTML report summarising all samples in your project. Most of the pipeline QC results are visualised in the report and further statistics are available in the report data directory. +[MultiQC](http://multiqc.info) is a visualisation tool that generates a single HTML report summarising all samples in your project. Most of the pipeline QC results are visualised in the report and further statistics are available in the report data directory. Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQC. The pipeline has special steps which also allow the software versions to be reported in the MultiQC output for future traceability. For more information about how to use MultiQC reports, see <http://multiqc.info>. diff --git a/modules.json b/modules.json index 45540ca9ea0c4c8493525e58d8671176087348dc..6d7a0306685215f83fe5c69f51f6f54c1927fa04 100644 --- a/modules.json +++ b/modules.json @@ -7,52 +7,52 @@ "nf-core": { "bowtie2/align": { "branch": "master", - "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", + "git_sha": "603ecbd9f45300c9788f197d2a15a005685b4220", "installed_by": ["modules"] }, "bowtie2/build": { "branch": "master", - "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["modules"] }, "cooler/balance": { "branch": "master", - "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["modules"] }, "cooler/cload": { "branch": "master", - "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["modules"] }, "cooler/dump": { "branch": "master", - "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["modules"] }, "cooler/makebins": { "branch": "master", - "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["modules"] }, "cooler/zoomify": { "branch": "master", - "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["modules"] }, "custom/dumpsoftwareversions": { "branch": "master", - "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["modules"] }, "custom/getchromsizes": { "branch": "master", - "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["modules"] }, "fastqc": { "branch": "master", - "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["modules"] } } diff --git a/modules/local/cooltools/eigscis.nf b/modules/local/cooltools/eigscis.nf index feaa30007099cae34a18eaa8105a3367e260e1b6..873bd243cd02102f327cba853197d39bc0ea860e 100644 --- a/modules/local/cooltools/eigscis.nf +++ b/modules/local/cooltools/eigscis.nf @@ -9,7 +9,7 @@ process COOLTOOLS_EIGSCIS { conda "bioconda::cooltools=0.5.1 bioconda::ucsc-bedgraphtobigwig=377" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-c81d8d6b6acf4714ffaae1a274527a41958443f6:cc7ea58b8cefc76bed985dcfe261cb276ed9e0cf-0' : - 'quay.io/biocontainers/mulled-v2-c81d8d6b6acf4714ffaae1a274527a41958443f6:cc7ea58b8cefc76bed985dcfe261cb276ed9e0cf-0' }" + 'biocontainers/mulled-v2-c81d8d6b6acf4714ffaae1a274527a41958443f6:cc7ea58b8cefc76bed985dcfe261cb276ed9e0cf-0' }" input: tuple val(meta), path(cool), val(resolution) diff --git a/modules/local/cooltools/insulation.nf b/modules/local/cooltools/insulation.nf index 8a9127ea47824f9541c4faf2263d8e61030468c3..af53529ef80baa12dbd81bd0a2b8fa3ec2122cfa 100644 --- a/modules/local/cooltools/insulation.nf +++ b/modules/local/cooltools/insulation.nf @@ -9,7 +9,7 @@ process COOLTOOLS_INSULATION { conda "bioconda::cooltools=0.5.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/cooltools:0.5.1--py37h37892f8_0' : - 'quay.io/biocontainers/cooltools:0.5.1--py37h37892f8_0' }" + 'biocontainers/cooltools:0.5.1--py37h37892f8_0' }" input: tuple val(meta), path(cool) diff --git a/modules/local/hicexplorer/hicFindTADs.nf b/modules/local/hicexplorer/hicFindTADs.nf index b6cae335c22111407b3d782e95a067ed087645e0..d86dc837e29e56aa4ba88cd2c66962444046647b 100644 --- a/modules/local/hicexplorer/hicFindTADs.nf +++ b/modules/local/hicexplorer/hicFindTADs.nf @@ -8,7 +8,7 @@ process HIC_FIND_TADS { conda "bioconda::hicexplorer=3.7.2" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/hicexplorer:3.7.2--pyhdfd78af_1' : - 'quay.io/biocontainers/hicexplorer:3.7.2--pyhdfd78af_1' }" + 'biocontainers/hicexplorer:3.7.2--pyhdfd78af_1' }" input: tuple val(meta), path(cool) diff --git a/modules/local/hicexplorer/hicPlotDistVsCounts.nf b/modules/local/hicexplorer/hicPlotDistVsCounts.nf index 3e37d3fe7b466dbe45b2f19c220e2f9a65a07a9a..1143a05d3767ba4a9289e6f423cb7dc768d3d197 100644 --- a/modules/local/hicexplorer/hicPlotDistVsCounts.nf +++ b/modules/local/hicexplorer/hicPlotDistVsCounts.nf @@ -9,7 +9,7 @@ process HIC_PLOT_DIST_VS_COUNTS { conda "bioconda::hicexplorer=3.7.2" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/hicexplorer:3.7.2--pyhdfd78af_1' : - 'quay.io/biocontainers/hicexplorer:3.7.2--pyhdfd78af_1' }" + 'biocontainers/hicexplorer:3.7.2--pyhdfd78af_1' }" input: tuple val(meta), path(cool) diff --git a/modules/local/hicpro/bowtie2_merge.nf b/modules/local/hicpro/bowtie2_merge.nf index 7a4e96be9aaf2470a10ca19672591e0f84853602..64aa6e6c05fd9e729ac26a0704f33b802f7dbb0c 100644 --- a/modules/local/hicpro/bowtie2_merge.nf +++ b/modules/local/hicpro/bowtie2_merge.nf @@ -5,7 +5,7 @@ process MERGE_BOWTIE2{ conda "bioconda::samtools=1.15.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/samtools:1.15.1--h1170115_0' : - 'quay.io/biocontainers/samtools:1.15.1--h1170115_0' }" + 'biocontainers/samtools:1.15.1--h1170115_0' }" input: tuple val(meta), path(bam1), path(bam2) diff --git a/modules/local/hicpro/build_contact_maps.nf b/modules/local/hicpro/build_contact_maps.nf index fd633a984f26b4cccc901a92e983cf0acfaa8eed..34b27aab498c8e1c45355d01b991d5900a619f33 100644 --- a/modules/local/hicpro/build_contact_maps.nf +++ b/modules/local/hicpro/build_contact_maps.nf @@ -5,15 +5,15 @@ process BUILD_CONTACT_MAPS{ conda "conda-forge::sed=4.7" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : - 'ubuntu:20.04' }" + 'quay.io/nf-core/ubuntu:20.04' }" input: - tuple val(meta), path(vpairs), val(resolution) - tuple val(meta2), path(chrsize) + tuple val(meta), path(vpairs), val(resolution) + tuple val(meta2), path(chrsize) output: tuple val(meta), val(resolution), path("*.matrix"), path("*.bed"), emit: maps - + script: def prefix = task.ext.prefix ?: "${meta.id}" """ diff --git a/modules/local/hicpro/combine_mates.nf b/modules/local/hicpro/combine_mates.nf index da95be819a03560d75db2bc80ab3e8b72bf774aa..b0d828e3200bcb00fb4b94dcb071091ae352b7f7 100644 --- a/modules/local/hicpro/combine_mates.nf +++ b/modules/local/hicpro/combine_mates.nf @@ -5,7 +5,7 @@ process COMBINE_MATES { conda "conda-forge::python=3.9 bioconda::pysam=0.19.0" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0' : - 'quay.io/biocontainers/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0'}" + 'biocontainers/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0'}" input: tuple val(meta), path(bam) diff --git a/modules/local/hicpro/dnase_mapping_stats.nf b/modules/local/hicpro/dnase_mapping_stats.nf index 64cb0792e4d93dfcc1b1e7d0b5d50bf7e0b75c73..8e85113944f79dc0b155ee9be441b2badf5c0245 100644 --- a/modules/local/hicpro/dnase_mapping_stats.nf +++ b/modules/local/hicpro/dnase_mapping_stats.nf @@ -5,7 +5,7 @@ process MAPPING_STATS_DNASE { conda "bioconda::samtools=1.15.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/samtools:1.15.1--h1170115_0' : - 'quay.io/biocontainers/samtools:1.15.1--h1170115_0' }" + 'biocontainers/samtools:1.15.1--h1170115_0' }" input: diff --git a/modules/local/hicpro/get_restriction_fragments.nf b/modules/local/hicpro/get_restriction_fragments.nf index affc2d986a339d239602c6e66ad6f0d50517505e..56cd74a24a7d5102aad25cbe7032e31e2c4a1452 100644 --- a/modules/local/hicpro/get_restriction_fragments.nf +++ b/modules/local/hicpro/get_restriction_fragments.nf @@ -5,7 +5,7 @@ process GET_RESTRICTION_FRAGMENTS { conda "conda-forge::python=3.9 conda-forge::numpy=1.22.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0' : - 'quay.io/biocontainers/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0'}" + 'biocontainers/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0'}" input: tuple val(meta), path(fasta) diff --git a/modules/local/hicpro/get_valid_interaction.nf b/modules/local/hicpro/get_valid_interaction.nf index cc148371e52e04e96ca8dc9461a46ce80216b85e..bebd42197471c214ce0cde63c88ea89224387e76 100644 --- a/modules/local/hicpro/get_valid_interaction.nf +++ b/modules/local/hicpro/get_valid_interaction.nf @@ -5,7 +5,7 @@ process GET_VALID_INTERACTION { conda "conda-forge::python=3.9 bioconda::pysam=0.19.0 bioconda::bx-python=0.8.13" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0' : - 'quay.io/biocontainers/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0'}" + 'biocontainers/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0'}" input: tuple val(meta), path(bam) diff --git a/modules/local/hicpro/get_valid_interaction_dnase.nf b/modules/local/hicpro/get_valid_interaction_dnase.nf index 142d0cbd4f042fb0106c7e0380515f7b54c79953..d62318f87feac914b8b07796792fa18e363eef7e 100644 --- a/modules/local/hicpro/get_valid_interaction_dnase.nf +++ b/modules/local/hicpro/get_valid_interaction_dnase.nf @@ -5,7 +5,7 @@ process GET_VALID_INTERACTION_DNASE { conda "conda-forge::python=3.9 bioconda::pysam=0.19.0 bioconda::bx-python=0.8.13" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0' : - 'quay.io/biocontainers/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0'}" + 'biocontainers/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0'}" input: tuple val(meta), path(bam) diff --git a/modules/local/hicpro/hicpro2pairs.nf b/modules/local/hicpro/hicpro2pairs.nf index 2ba2a901b62791e733900b24da4f244cd2fbaba7..eb9b86b5e4ca0ace6549fe0c33a9dd1f63aaf5f3 100644 --- a/modules/local/hicpro/hicpro2pairs.nf +++ b/modules/local/hicpro/hicpro2pairs.nf @@ -5,7 +5,7 @@ process HICPRO2PAIRS { conda "bioconda::pairix=0.3.7" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/pairix:0.3.7--py36h30a8e3e_3' : - 'quay.io/biocontainers/pairix:0.3.7--py36h30a8e3e_3' }" + 'biocontainers/pairix:0.3.7--py36h30a8e3e_3' }" input: tuple val(meta), path(vpairs) diff --git a/modules/local/hicpro/merge_stats.nf b/modules/local/hicpro/merge_stats.nf index b25dc8a13d2f18bc5ae05742c5f15d77fd19627d..d9c2aecb5b2eb5c7574e139f7ffbbf3c8d3289de 100644 --- a/modules/local/hicpro/merge_stats.nf +++ b/modules/local/hicpro/merge_stats.nf @@ -5,7 +5,7 @@ process MERGE_STATS { conda "conda-forge::python=3.9" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0' : - 'quay.io/biocontainers/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0'}" + 'biocontainers/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0'}" input: tuple val(meta), path(fstat) diff --git a/modules/local/hicpro/merge_valid_interaction.nf b/modules/local/hicpro/merge_valid_interaction.nf index 29e568a20997c0a313a87cf964f1f8c10327228b..25c437ef795882591b0f50fcf4a235f29dc60822 100644 --- a/modules/local/hicpro/merge_valid_interaction.nf +++ b/modules/local/hicpro/merge_valid_interaction.nf @@ -5,7 +5,7 @@ process MERGE_VALID_INTERACTION { conda "conda-forge::gawk=5.1.0" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : - 'ubuntu:20.04' }" + 'quay.io/nf-core/ubuntu:20.04' }" input: tuple val(meta), path(vpairs) diff --git a/modules/local/hicpro/run_ice.nf b/modules/local/hicpro/run_ice.nf index c6ec6356d457291f9c9f0c30e0355d91e4bf8058..7ef5727378fdfabfb7b93e2852c11131481c0a11 100644 --- a/modules/local/hicpro/run_ice.nf +++ b/modules/local/hicpro/run_ice.nf @@ -5,7 +5,7 @@ process ICE_NORMALIZATION { conda "conda-forge::python=3.9 bioconda::iced=0.5.10 conda-forge::numpy=1.22.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0' : - 'quay.io/biocontainers/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0' }" + 'biocontainers/mulled-v2-c6ff206325681cbb9c9ef890bb8de554172c0483:713df51cd897ceb893b9a6e6420f527d83c2ed95-0' }" input: tuple val(meta), val(res), path(rmaps), path(bed) diff --git a/modules/local/hicpro/trim_reads.nf b/modules/local/hicpro/trim_reads.nf index 5a96df412ea89845583fc363eccf2df49ba9458d..b9f2ea47e8f2ac40ae3a8ec17f6e01d0e22401b3 100644 --- a/modules/local/hicpro/trim_reads.nf +++ b/modules/local/hicpro/trim_reads.nf @@ -5,7 +5,7 @@ process TRIM_READS { conda "conda-forge::sed=4.7" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : - 'ubuntu:20.04' }" + 'quay.io/nf-core/ubuntu:20.04' }" input: tuple val(meta), path(reads) diff --git a/modules/local/multiqc.nf b/modules/local/multiqc.nf index 595dc94d0eebd849d217c25349e4bb253bee64b6..6f6bad458bb8d83962f1d5a1bc922caeb7d3d9f9 100644 --- a/modules/local/multiqc.nf +++ b/modules/local/multiqc.nf @@ -4,7 +4,7 @@ process MULTIQC { conda "bioconda::multiqc=1.13" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/multiqc:1.13--pyhdfd78af_0' : - 'quay.io/biocontainers/multiqc:1.13--pyhdfd78af_0' }" + 'biocontainers/multiqc:1.13--pyhdfd78af_0' }" input: path multiqc_config diff --git a/modules/local/samplesheet_check.nf b/modules/local/samplesheet_check.nf index 1624dfafe6425f07bbd15daf3b2735ea1187c0ec..096c80b0bd37b9a40bbf61cdefa13007f58b0c5d 100644 --- a/modules/local/samplesheet_check.nf +++ b/modules/local/samplesheet_check.nf @@ -5,7 +5,7 @@ process SAMPLESHEET_CHECK { conda "conda-forge::python=3.8.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/python:3.8.3' : - 'quay.io/biocontainers/python:3.8.3' }" + 'biocontainers/python:3.8.3' }" input: path samplesheet diff --git a/modules/local/split_cooler_dump.nf b/modules/local/split_cooler_dump.nf index 8b9e45b31d304545ea62946f4c4e0eacb7860002..5e392c140a86e51925b1ce751a81868dda5268ef 100644 --- a/modules/local/split_cooler_dump.nf +++ b/modules/local/split_cooler_dump.nf @@ -5,7 +5,7 @@ process SPLIT_COOLER_DUMP { conda "conda-forge::gawk=5.1.0" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : - 'ubuntu:20.04' }" + 'quay.io/nf-core/ubuntu:20.04' }" input: tuple val(meta), path(bedpe) diff --git a/modules/nf-core/bowtie2/align/main.nf b/modules/nf-core/bowtie2/align/main.nf index 3d851866a30b4f629881864516f0789f6cae9443..311a1505eccdd3825db6ad8652305cb445148ae3 100644 --- a/modules/nf-core/bowtie2/align/main.nf +++ b/modules/nf-core/bowtie2/align/main.nf @@ -5,7 +5,7 @@ process BOWTIE2_ALIGN { conda "bioconda::bowtie2=2.4.4 bioconda::samtools=1.16.1 conda-forge::pigz=2.6" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:a0ffedb52808e102887f6ce600d092675bf3528a-0' : - 'quay.io/biocontainers/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:a0ffedb52808e102887f6ce600d092675bf3528a-0' }" + 'biocontainers/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:a0ffedb52808e102887f6ce600d092675bf3528a-0' }" input: tuple val(meta) , path(reads) diff --git a/modules/nf-core/bowtie2/build/main.nf b/modules/nf-core/bowtie2/build/main.nf index 551893af3b3bb1a3955f1cc7c0b50735c6fded8d..566a4accda99ed7c9c56564f6c3348bec439df11 100644 --- a/modules/nf-core/bowtie2/build/main.nf +++ b/modules/nf-core/bowtie2/build/main.nf @@ -5,7 +5,7 @@ process BOWTIE2_BUILD { conda "bioconda::bowtie2=2.4.4" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/bowtie2:2.4.4--py39hbb4e92a_0' : - 'quay.io/biocontainers/bowtie2:2.4.4--py39hbb4e92a_0' }" + 'biocontainers/bowtie2:2.4.4--py39hbb4e92a_0' }" input: tuple val(meta), path(fasta) diff --git a/modules/nf-core/cooler/balance/main.nf b/modules/nf-core/cooler/balance/main.nf index 4173a3c1291df7e25e3529d9ab8f2b6f8d1240b7..6e131d5b4717de6a6e7079b067154f7dd7e4e937 100644 --- a/modules/nf-core/cooler/balance/main.nf +++ b/modules/nf-core/cooler/balance/main.nf @@ -5,7 +5,7 @@ process COOLER_BALANCE { conda "bioconda::cooler=0.8.11" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/cooler:0.8.11--pyh3252c3a_0': - 'quay.io/biocontainers/cooler:0.8.11--pyh3252c3a_0' }" + 'biocontainers/cooler:0.8.11--pyh3252c3a_0' }" input: tuple val(meta), path(cool), val(resolution) diff --git a/modules/nf-core/cooler/cload/main.nf b/modules/nf-core/cooler/cload/main.nf index 80d61f07336f81233a6bd8ffb116e5a25e57048d..80109d48f449af278016bbda6cd08c46bbf8e183 100644 --- a/modules/nf-core/cooler/cload/main.nf +++ b/modules/nf-core/cooler/cload/main.nf @@ -5,7 +5,7 @@ process COOLER_CLOAD { conda "bioconda::cooler=0.8.11" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/cooler:0.8.11--pyh3252c3a_0' : - 'quay.io/biocontainers/cooler:0.8.11--pyh3252c3a_0' }" + 'biocontainers/cooler:0.8.11--pyh3252c3a_0' }" input: tuple val(meta), path(pairs), path(index), val(cool_bin) diff --git a/modules/nf-core/cooler/dump/main.nf b/modules/nf-core/cooler/dump/main.nf index b46c78cf35ec6b40276e2d792635f97b9909ab55..fed7502f8cb6a788b056c87aab3a2e71d26dd400 100644 --- a/modules/nf-core/cooler/dump/main.nf +++ b/modules/nf-core/cooler/dump/main.nf @@ -5,7 +5,7 @@ process COOLER_DUMP { conda "bioconda::cooler=0.8.11" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/cooler:0.8.11--pyh3252c3a_0' : - 'quay.io/biocontainers/cooler:0.8.11--pyh3252c3a_0' }" + 'biocontainers/cooler:0.8.11--pyh3252c3a_0' }" input: tuple val(meta), path(cool), val(resolution) diff --git a/modules/nf-core/cooler/makebins/main.nf b/modules/nf-core/cooler/makebins/main.nf index 7f0826197e99e9e79107359a8c65d7d60346dc49..25d6a40f636257c90251893c74eb2769200b41c1 100644 --- a/modules/nf-core/cooler/makebins/main.nf +++ b/modules/nf-core/cooler/makebins/main.nf @@ -5,7 +5,7 @@ process COOLER_MAKEBINS { conda "bioconda::cooler=0.8.11" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/cooler:0.8.11--pyh3252c3a_0': - 'quay.io/biocontainers/cooler:0.8.11--pyh3252c3a_0' }" + 'biocontainers/cooler:0.8.11--pyh3252c3a_0' }" input: tuple val(meta), path(chromsizes), val(cool_bin) diff --git a/modules/nf-core/cooler/zoomify/main.nf b/modules/nf-core/cooler/zoomify/main.nf index f1cd8df79d02b8630c31de0620521cef0cdd6df0..95e7daff0d19429507d01033eb78eba491625220 100644 --- a/modules/nf-core/cooler/zoomify/main.nf +++ b/modules/nf-core/cooler/zoomify/main.nf @@ -5,7 +5,7 @@ process COOLER_ZOOMIFY { conda "bioconda::cooler=0.8.11" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/cooler:0.8.11--pyh3252c3a_0' : - 'quay.io/biocontainers/cooler:0.8.11--pyh3252c3a_0' }" + 'biocontainers/cooler:0.8.11--pyh3252c3a_0' }" input: tuple val(meta), path(cool) diff --git a/modules/nf-core/custom/dumpsoftwareversions/main.nf b/modules/nf-core/custom/dumpsoftwareversions/main.nf index 3df21765b90921413962c3bb5ca44d117d829297..ebc8727339b0ee4ce7e2feb981a0aaf416723b57 100644 --- a/modules/nf-core/custom/dumpsoftwareversions/main.nf +++ b/modules/nf-core/custom/dumpsoftwareversions/main.nf @@ -2,10 +2,10 @@ process CUSTOM_DUMPSOFTWAREVERSIONS { label 'process_single' // Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container - conda "bioconda::multiqc=1.13" + conda "bioconda::multiqc=1.14" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.13--pyhdfd78af_0' : - 'quay.io/biocontainers/multiqc:1.13--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.14--pyhdfd78af_0' : + 'biocontainers/multiqc:1.14--pyhdfd78af_0' }" input: path versions diff --git a/modules/nf-core/custom/dumpsoftwareversions/meta.yml b/modules/nf-core/custom/dumpsoftwareversions/meta.yml index 60b546a012c457b5459490e732e6ac9be6979db1..c32657de7a2c09e82da1e753a234300fb76237ed 100644 --- a/modules/nf-core/custom/dumpsoftwareversions/meta.yml +++ b/modules/nf-core/custom/dumpsoftwareversions/meta.yml @@ -1,7 +1,9 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/yaml-schema.json name: custom_dumpsoftwareversions description: Custom module used to dump software versions within the nf-core pipeline template keywords: - custom + - dump - version tools: - custom: diff --git a/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py b/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py index b83b32c4d4242764a439f4d51e0255711f9cd40f..da03340857c4c90957c79c9f892030bc1bb397a3 100755 --- a/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py +++ b/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py @@ -3,10 +3,10 @@ """Provide functions to merge multiple versions.yml files.""" -import platform -from textwrap import dedent import yaml +import platform +from textwrap import dedent def _make_versions_html(versions): diff --git a/modules/nf-core/custom/getchromsizes/main.nf b/modules/nf-core/custom/getchromsizes/main.nf index 580f87feade7280bb8d520551aa61f0021b3b88d..060a2e88527af75fabb1d87858c2885b6ca09547 100644 --- a/modules/nf-core/custom/getchromsizes/main.nf +++ b/modules/nf-core/custom/getchromsizes/main.nf @@ -5,7 +5,7 @@ process CUSTOM_GETCHROMSIZES { conda "bioconda::samtools=1.16.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/samtools:1.16.1--h6899075_1' : - 'quay.io/biocontainers/samtools:1.16.1--h6899075_1' }" + 'biocontainers/samtools:1.16.1--h6899075_1' }" input: tuple val(meta), path(fasta) diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index 9ae5838158b28d2ae49270133fbbfe0ea673e991..07d5e433128b416714860fe1dca659219ba1d1ad 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -5,7 +5,7 @@ process FASTQC { conda "bioconda::fastqc=0.11.9" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/fastqc:0.11.9--0' : - 'quay.io/biocontainers/fastqc:0.11.9--0' }" + 'biocontainers/fastqc:0.11.9--0' }" input: tuple val(meta), path(reads) diff --git a/nextflow.config b/nextflow.config index d8a5fa806849a549aac84fd960885dd70f874bb7..931b861808632758b83c5a7ff6d411fed415ed79 100644 --- a/nextflow.config +++ b/nextflow.config @@ -245,6 +245,12 @@ env { // Capture exit codes from upstream processes when piping process.shell = ['/bin/bash', '-euo', 'pipefail'] +// Set default registry for Docker and Podman independent of -profile +// Will not be used unless Docker / Podman are enabled +// Set to your registry if you have a mirror of containers +docker.registry = 'quay.io' +podman.registry = 'quay.io' + def trace_timestamp = new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss') timeline { enabled = true @@ -270,7 +276,7 @@ manifest { description = """Analysis of Chromosome Conformation Capture data (Hi-C)""" mainScript = 'main.nf' nextflowVersion = '!>=22.10.1' - version = '2.0.0' + version = '2.1.0dev' doi = '' } diff --git a/workflows/hic.nf b/workflows/hic.nf index fed1114320cbc615259ab66db847887f9eef100d..2ffa5b4dc8bee033473cab5b755befe9460ca0a9 100644 --- a/workflows/hic.nf +++ b/workflows/hic.nf @@ -28,6 +28,9 @@ if (params.digestion){ ch_restriction_site = Channel.value(restriction_site) ligation_site = params.digestion ? params.digest[ params.digestion ].ligation_site ?: false : false ch_ligation_site = Channel.value(ligation_site) +}else if (params.restriction_site && params.ligation_site){ + ch_restriction_site = Channel.value(params.restriction_site) + ch_ligation_site = Channel.value(params.ligation_site) }else if (params.dnase){ ch_restriction_site = Channel.empty() ch_ligation_site = Channel.empty()