Skip to content
Snippets Groups Projects
hicstuff.config 11.5 KiB
Newer Older
Mia Croiset's avatar
Mia Croiset committed
params {

    // Input options
    input = null


    // References
    genome = null
    igenomes_base = 's3://ngi-igenomes/igenomes'
    igenomes_ignore = false
    chromosome_size = null
    restriction_fragments = null
    save_reference = false

    // Mapping
    split_fastq = false
    fastq_chunks_size = 20000000
    save_interaction_bam = false
    save_aligned_intermediates = false
    bwt2_opts_end2end = '--very-sensitive -L 30 --score-min L,-0.6,-0.2 --end-to-end --reorder'
    bwt2_opts_trimmed = '--very-sensitive -L 20 --score-min L,-0.6,-0.2 --end-to-end --reorder'
    keep_dups = false
    keep_multi = false
    min_mapq = 10

    // Digestion Hi-C
    digestion = null
    ligation_site = null
    restriction_site = null
    digest {
      'hindiii'{
         restriction_site='A^AGCTT'
         ligation_site='AAGCTAGCTT'
      }
      'mboi' {
         restriction_site='^GATC'
         ligation_site='GATCGATC'
      }
      'dpnii' {
         restriction_site='^GATC'
         ligation_site='GATCGATC'
      }
      'arima' {
         restriction_site='^GATC,G^ANTC'
         ligation_site='GATCGATC,GATCANTC,GANTGATC,GANTANTC'
      }
    }

    min_restriction_fragment_size = 0
    max_restriction_fragment_size = 0
    min_insert_size = 0
    max_insert_size = 0
    save_pairs_intermediates = false

    // Dnase Hi-C
    dnase = false
    min_cis_dist = 0

    // Contact maps
    save_raw_maps = false
    bin_size = '1000000'
    res_zoomify = null
    hicpro_maps = false
    ice_max_iter = 100
    ice_filter_low_count_perc = 0.02
    ice_filter_high_count_perc =  0
    ice_eps = 0.1

    // Downstream Analysis
    res_dist_decay = '250000'
    tads_caller = 'insulation'
    res_tads = '40000'
    res_compartments = '250000'

    // Workflow
    skip_maps = false
    skip_balancing = false
    skip_mcool = false
    skip_dist_decay = false
    skip_compartments = false
    skip_tads = false
    skip_multiqc = false

    // MultiQC options
    multiqc_config             = null
    multiqc_title              = null
    multiqc_logo               = null
    max_multiqc_email_size     = '25.MB'
    multiqc_methods_description = null

    // Boilerplate options
Mia Croiset's avatar
Mia Croiset committed
    outdir                     = '${params.outdir}'
Mia Croiset's avatar
Mia Croiset committed
    tracedir                   = "${params.outdir}/pipeline_info"
    publish_dir_mode           = 'copy'
    email                      = null
    email_on_fail              = null
    plaintext_email            = false
    monochrome_logs            = false
    hook_url                   = null
    help                       = false
    version                    = false
    validate_params            = true
    show_hidden_params         = false
    schema_ignore_params       = 'genomes,digest'

    // Config options
    custom_config_version      = 'master'
    custom_config_base         = "https://raw.githubusercontent.com/nf-core/configs/${params.custom_config_version}"
    config_profile_description = null
    config_profile_contact     = null
    config_profile_url         = null
    config_profile_name        = null


    // Max resource options
    // Defaults only, expecting to be overwritten
    max_memory                 = '128.GB'
    max_cpus                   = 16
    max_time                   = '240.h'

    // Hicstuff
    hicstuff_bwt2_align_opts = '--very-sensitive-local'
    hicstuff_min_size = 0
    hicstuff_circular = 'false'
    hicstuff_output_contigs = 'info_contigs.txt'
    hicstuff_output_frags = 'fragments_list.txt'
    hicstuff_frags_plot = 'false'
    hicstuff_frags_plot_path = 'frags_hist.pdf'
Mia Croiset's avatar
Mia Croiset committed
    hicstuff_valid_pairs = 'valid.pairs'
    hicstuff_valid_idx = 'valid_idx.pairs'
    hicstuff_min_qual = 30
    hicstuff_matrix = 'abs_fragments_contacts_weighted.txt'
    hicstuff_bin = 10000
    hicstuff_valid_idx_filtered = 'valid_idx_filtered.pairs'
    hicstuff_plot_events = 'false'
    hicstuff_pie_plot = 'distrib'
    hicstuff_dist_plot = 'dist'
    hicstuff_centro_file = 'None'       //give absolute path or 'None'
    hicstuff_base = 1.1
    hicstuff_distance_out_file = 'distance_law.txt'
    hicstuff_rm_centro = 'None'         //int or 'None'
    hicstuff_distance_plot = 'false'
    hicstuff_distance_out_plot = 'plot_distance_law.pdf'
    hicstuff_filter_pcr_out_file = 'valid_idx_pcrfree.pairs'

    //Hicstuff optional modules
    filter_event = false
    distance_law = false
    filter_pcr = false
    filter_pcr_picard = true

    workflow = 'hicstuff'
Mia Croiset's avatar
Mia Croiset committed
}

process {
    //Default
    publishDir = [
        path: { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" },
        mode: 'copy',
        saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
    ]

    withName: 'BOWTIE2_ALIGNMENT' {
        ext.prefix = { "${meta.id}_${meta.chunk}_${meta.mates}" }
        ext.args = params.hicstuff_bwt2_align_opts
        publishDir = [
            path: { "${params.outdir}/hicstuff/reads"},
            mode: 'copy'
        ]
    }

    withName: 'FRAGMENT_ENZYME' {
        ext.args = { [
            " -m ${params.hicstuff_min_size}",
            " -c ${params.hicstuff_circular}",
            " -o ${params.hicstuff_output_contigs}",
            " -f ${params.hicstuff_output_frags}",
            " -p ${params.hicstuff_frags_plot}",
            " -g ${params.hicstuff_frags_plot_path}"
        ].join('').trim() }
        publishDir = [
            path: { "${params.outdir}/hicstuff/fragment_enzyme" },
            mode: 'copy'
        ]
    }

    withName: 'BAM2PAIRS' {
        ext.pairs = params.hicstuff_valid_pairs
        ext.index = params.hicstuff_valid_idx
Mia Croiset's avatar
Mia Croiset committed
        ext.args = { [
            " -q ${params.hicstuff_min_qual}",
            " -c ${params.hicstuff_circular}"
Mia Croiset's avatar
Mia Croiset committed
        ].join('').trim() }
        publishDir = [
            path: { "${params.outdir}/hicstuff/pairs" },
            mode: 'copy'
        ]
    }

    withName: 'FILTER_EVENT' {
        ext.args = { [
           " -o ${params.hicstuff_valid_idx_filtered}",
           " --plot ${params.hicstuff_plot_events}",
           " -d ${params.hicstuff_dist_plot}",
           " -q ${params.hicstuff_pie_plot}"
        ].join('').trim() }
        publishDir = [
            path: { "${params.outdir}/hicstuff/pairs" },
            mode: 'copy'
        ]
    }

    withName: 'DISTANCE_LAW' {
        ext.args = { [
            " -c ${params.hicstuff_centro_file}",
            " -b ${params.hicstuff_base}",
            " -o ${params.hicstuff_distance_out_file}",
            " -u ${params.hicstuff_circular}",
            " -r ${params.hicstuff_rm_centro}",
            " -l ${params.hicstuff_distance_plot}",
            " -d ${params.hicstuff_distance_out_plot}"
        ].join('').trim() }
        publishDir = [
            path: { "${params.outdir}/hicstuff/pairs" },
            mode: 'copy'
        ]
    }

    withName: 'FILTER_PCR' {
        ext.args = { [
            "-o ${params.hicstuff_filter_pcr_out_file}"
        ].join('').trim() }
        publishDir = [
            path: { "${params.outdir}/hicstuff/pairs" },
            mode: 'copy'
        ]
    }

    withName: 'GATK4_MARKDUPLICATES' {
        ext.prefix = { "${meta.id}_${meta.chunk}_${meta.mates}.bam" }
        ext.args = { [
            "--REMOVE_DUPLICATES true"
        ].join('').trim() }
        publishDir = [
            path: { "${params.outdir}/gatk4/bam" },
            mode: 'copy'
        ]
    }

    withName: 'PICARD_MARKDUPLICATES' {
        ext.prefix = { "${meta.id}_${meta.chunk}_${meta.mates}" }
        ext.args = { [
            "--REMOVE_DUPLICATES true"
        ].join('').trim() }
        publishDir = [
            path: { "${params.outdir}/picard/bam" },
            mode: 'copy'
        ]
    }

    withName: 'SAMTOOLS_SORT' {
        ext.prefix = { "${meta.id}_${meta.chunk}_${meta.mates}_sorted" }
        ext.args = { [
            ""
        ].join('').trim() }
    }

    withName: 'SAMTOOLS_SORT_N' {
        ext.prefix = { "${meta.id}_${meta.chunk}_${meta.mates}_nsorted" }
        ext.args = { [
            "-n"
        ].join('').trim() }
        publishDir = [
            path: { "${params.outdir}/gatk4/bam" },
            mode: 'copy'
        ]
    }

    withName: 'SAMTOOLS_INDEX' {
        ext.args = { [
            ""
        ].join('').trim() }
    }

    withName: 'BUILD_MATRIX' {
        ext.args = params.hicstuff_matrix
        publishDir = [
            path: { "${params.outdir}/hicstuff/matrix" },
            mode: 'copy'
        ]
    }
    withName: 'BUILD_MATRIX_COOL' {
        ext.args = params.hicstuff_matrix
        publishDir = [
            path: { "${params.outdir}/hicstuff/matrix" },
            mode: 'copy'
        ]
    }
        withName: 'BUILD_MATRIX_COOL_ALT' {
        ext.outname = params.hicstuff_matrix
        ext.bin = params.hicstuff_bin
        ext.args = {"-c1 2 -p1 3 -p2 4 -c2 5"}
        publishDir = [
            path: { "${params.outdir}/hicstuff/matrix" },
            mode: 'copy'
        ]
    }

    //**********************************************
    // PREPARE_GENOME
    withName: 'BOWTIE2_BUILD' {
        publishDir = [
            path: { "${params.outdir}/genome/bowtie2_index" },
            mode: 'copy'
        ]
    }

    withName: 'CUSTOM_GETCHROMSIZES' {
        publishDir = [
            path: { "${params.outdir}/genome" },
            mode: 'copy'
        ]
    }

    withName: 'GET_RESTRICTION_FRAGMENTS' {
        publishDir = [
            path: { "${params.outdir}/genome" },
            mode: 'copy'
        ]
    }

}

Mia Croiset's avatar
Mia Croiset committed
profiles {
    debug { process.beforeScript = 'echo $HOSTNAME' }
    conda {
        conda.enabled          = true
        docker.enabled         = false
        singularity.enabled    = false
        podman.enabled         = false
        shifter.enabled        = false
        charliecloud.enabled   = false
    }
    mamba {
        conda.enabled          = true
        conda.useMamba         = true
        docker.enabled         = false
        singularity.enabled    = false
        podman.enabled         = false
        shifter.enabled        = false
        charliecloud.enabled   = false
    }
    docker {
        docker.enabled         = true
        docker.registry        = 'quay.io'
Mia Croiset's avatar
Mia Croiset committed
        docker.userEmulation   = true
        singularity.enabled    = false
        podman.enabled         = false
        shifter.enabled        = false
        charliecloud.enabled   = false
    }
    arm {
        docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64'
    }
    singularity {
        singularity.enabled    = true
        singularity.autoMounts = true
        docker.enabled         = false
        podman.enabled         = false
        shifter.enabled        = false
        charliecloud.enabled   = false
    }
    podman {
        podman.enabled         = true
        docker.enabled         = false
        singularity.enabled    = false
        shifter.enabled        = false
        charliecloud.enabled   = false
    }
    shifter {
        shifter.enabled        = true
        docker.enabled         = false
        singularity.enabled    = false
        podman.enabled         = false
        charliecloud.enabled   = false
    }
    charliecloud {
        charliecloud.enabled   = true
        docker.enabled         = false
        singularity.enabled    = false
        podman.enabled         = false
        shifter.enabled        = false
    }
    gitpod {
        executor.name          = 'local'
        executor.cpus          = 16
        executor.memory        = 60.GB
    }
    test      { includeConfig 'conf/test.config'      }
    test_full { includeConfig 'conf/test_full.config' }
}
includeConfig 'base.config'