diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8b9f4f773..efd8f276f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -71,6 +71,7 @@ jobs: - "icr_davros" - "ifb_core" - "imperial" + - "incliva" - "ipop_up" - "janelia" - "jax" diff --git a/README.md b/README.md index 34e854892..b1fe62077 100644 --- a/README.md +++ b/README.md @@ -128,6 +128,7 @@ Currently documentation is available for the following systems: - [ICR_DAVROS](docs/icr_davros.md) - [IFB](docs/ifb_core.md) - [IMPERIAL](docs/imperial.md) +- [INCLIVA](docs/incliva.md) - [iPOP-UP](docs/ipop_up.md) - [Janelia Research Campus](docs/janelia.md) - [JAX](docs/jax.md) diff --git a/conf/incliva.config b/conf/incliva.config new file mode 100644 index 000000000..6e8cc8d08 --- /dev/null +++ b/conf/incliva.config @@ -0,0 +1,52 @@ +// Profile details +params { + config_profile_description = 'INCLIVA Health Research Institute profile for nf-core.' + config_profile_contact = 'Sheila Zúñiga Trejos - bioinfo@incliva.es' + config_profile_url = 'https://www.incliva.es/en/services/platforms/bioinformatics-unit/' +} + +// Function to get hostname +def getHostname() { + def process = 'hostname'.execute() + process.waitFor() + return process.text.trim() +} + +// Function to set singularity path according to which host nextflow is running on +def setHostConfig(String hostname) { + if (hostname == 'vlinuxcervantes3srv') { + System.out.println("\nINFO: working on ${hostname}\n") + + // Resources details + params.max_memory = 60.GB + params.max_cpus = 15 + singularity.cacheDir = "/nfs/home/software/singularity/nf_cacheDir" + + } else if (hostname == 'vlinuxcervantes4srv') { + System.out.println("\nINFO: working on ${hostname}.\n") + + // Resources details + params.max_memory = 120.GB + params.max_cpus = 19 + singularity.cacheDir = "/nfs/home/software/singularity/nf_cacheDir" + + } else { + System.err.println("\nERROR: unknown machine. Update incliva.config on nf-core/configs if you are working on another host.\n") + } +} + +def hostname = getHostname() + +setHostConfig(hostname) + +// Singularity details +singularity { + enabled = true + autoMounts = true +} + +// Process details +process { + executor = 'local' + maxRetries = 2 +} diff --git a/docs/incliva.md b/docs/incliva.md new file mode 100644 index 000000000..eceecbc49 --- /dev/null +++ b/docs/incliva.md @@ -0,0 +1,14 @@ +# nf-core/configs: INCLIVA Configuration + +All nf-core pipelines have been successfully configured for use on the vlinuxcervantes3 & vlinuxcervantes4 servers at the INCLIVA Health Research Institute. Using this config file will automatically detect which one you are working on, so you do not need to specify it yourself. + +To use, run the pipeline with `-profile incliva`. This will download and launch the [`incliva.config`](../conf/incliva.config) which has been pre-configured with a setup suitable for the vlinuxcervantes3 & vlinuxcervantes4 servers. When using this profile, if Singularity images have not been downloaded already, a docker image containing all of the required software will be downloaded, and converted to a Singularity image before execution of the pipeline. Downloaded images can be checked in the singularity_path directory defined in the config file. + +## Running the workflow on the INCLIVA vlinuxcervantes3 & vlinuxcervantes4 servers + +Nextflow and Singularity are needed to run any nf-core workflow: + +- Install Nextflow : [here](https://www.nextflow.io/docs/latest/getstarted.html#) +- Install Singularity : [here](https://docs.sylabs.io/guides/3.0/user-guide/installation.html) + +By default, Nextflow uses the local executor. The processes are parallelised by spawning multiple threads, taking advantage of the multi-core architecture of the CPU. diff --git a/nfcore_custom.config b/nfcore_custom.config index 81ba240b1..7ddfd573c 100644 --- a/nfcore_custom.config +++ b/nfcore_custom.config @@ -53,6 +53,7 @@ profiles { icr_davros { includeConfig "${params.custom_config_base}/conf/icr_davros.config" } ifb_core { includeConfig "${params.custom_config_base}/conf/ifb_core.config" } imperial { includeConfig "${params.custom_config_base}/conf/imperial.config" } + incliva { includeConfig "${params.custom_config_base}/conf/incliva.config" } ipop_up { includeConfig "${params.custom_config_base}/conf/ipop_up.config" } janelia { includeConfig "${params.custom_config_base}/conf/janelia.config" } jax { includeConfig "${params.custom_config_base}/conf/jax.config" }