diff --git a/CHANGELOG.md b/CHANGELOG.md index edb6f460..fd2d9a2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,15 @@ 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.2.1 Romarin Curie - patch](https://github.com/nf-core/crisprseq/releases/tag/2.2.1) - [23.07.2024] + +### Fixed + +- Fix singularity image pull tag for MAGeCKFlute ([#160](https://github.com/nf-core/crisprseq/pull/160)) +- Escape dollar signs in `containerOptions` ([#163](https://github.com/nf-core/crisprseq/pull/163)) +- Fix error in R script when adding patterns ([#170](https://github.com/nf-core/crisprseq/pull/170)) +- Skip MAGeCKFlute when the function produces an error within the R package ([#171](https://github.com/nf-core/crisprseq/pull/170)) + ## [v2.2.0 - Romarin Curie](https://github.com/nf-core/crisprseq/releases/tag/2.2.0) - [20.06.2024] ### Added diff --git a/README.md b/README.md index 38bad46b..3be80028 100644 --- a/README.md +++ b/README.md @@ -79,18 +79,14 @@ For crispr screening: First, prepare a samplesheet with your input data that looks as follows: -`samplesheet.csv`: - -```csv +```csv title="samplesheet.csv" sample,fastq_1,fastq_2,reference,protospacer,template SAMPLE1,SAMPLE1_R1.fastq.gz,SAMPLE1_R2.fastq.gz,ACTG,ACTG,ACTG ``` or -`samplesheet.csv`: - -```csv +```csv title="samplesheet.csv" sample,fastq_1,fastq_2,condition SAMPLE1,SAMPLE1_R1.fastq.gz,SAMPLE1_R2.fastq.gz,control ``` diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 8ddc9dd0..4a4a1336 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,8 +1,8 @@ report_comment: > - This report has been generated by the nf-core/crisprseq + This report has been generated by the nf-core/crisprseq analysis pipeline. For information about how to interpret these results, please see the - documentation. + documentation. report_section_order: "nf-core-crisprseq-methods-description": diff --git a/bin/cigar_parser.R b/bin/cigar_parser.R index 2092a926..18e867ab 100755 --- a/bin/cigar_parser.R +++ b/bin/cigar_parser.R @@ -772,7 +772,7 @@ ref_fasta = opt$reference gRNA_sequence = opt$gRNA_sequence sample_id = opt$sample_name temp = opt$template -spikes = opt$spikes ### yes or no +spikes = opt$spikes files_summary = opt$summary_file cut_pos_prot = as.numeric(opt$cut_site) mock = opt$mock @@ -900,6 +900,7 @@ if (dim(alignment_info)[1] != 0){ separated_indels["post_ins_nt"]<-NA }else if(dim(separated_indels_ins_all)[1]>0){ separated_indels <- separated_indels_ins_all + separated_indels["patterns"]<-NA } diff --git a/docs/usage.md b/docs/usage.md index 9a574565..03ff1c33 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -52,7 +52,7 @@ nextflow run nf-core/crisprseq -profile docker -params-file params.yaml with `params.yaml` containing: -```yaml +```yaml title="params.yaml" input: './samplesheet.csv' outdir: './results/' genome: 'GRCh37' diff --git a/docs/usage/screening.md b/docs/usage/screening.md index cc7f3be7..645aec8e 100644 --- a/docs/usage/screening.md +++ b/docs/usage/screening.md @@ -17,7 +17,7 @@ The **nf-core/crisprseq** pipeline allows the analysis of CRISPR edited CRISPR p The typical command for running the pipeline is as follows: ```bash -nextflow run nf-core/crisprseq --analysis screening --input samplesheet.csv --library library.csv --outdir -profile docker +nextflow run nf-core/crisprseq --analysis screening --input samplesheet.csv --library library.tsv --outdir -profile docker ``` The following required parameters are here described. @@ -27,7 +27,7 @@ If you wish to input a raw count or normalized table, you can skip the sampleshe The samplesheet can have as many columns as you desire, however, there is a strict requirement for the first 4 columns to match those defined in the table below. -```console +```csv title="samplesheet.csv" sample,fastq_1,fastq_2,condition SRR8983579,SRR8983579.small.fastq.gz,,control SRR8983580,SRR8983580.small.fastq.gz,,treatment diff --git a/docs/usage/targeted.md b/docs/usage/targeted.md index fbbbfa35..bdce1f14 100644 --- a/docs/usage/targeted.md +++ b/docs/usage/targeted.md @@ -24,7 +24,7 @@ You will need to create a samplesheet with information about the samples you wou The `sample` identifiers have to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. The pipeline will concatenate the raw reads before performing any downstream analysis. Below is an example for the same sample sequenced across 3 lanes _(see section below for an explanation of samplesheet columns)_: -```console +```csv title="samplesheet.csv" sample,fastq_1,fastq_2,reference,protospacer,template CONTROL_REP1,AEG588A1_S1_L002_R1_001.fastq.gz,AEG588A1_S1_L002_R2_001.fastq.gz,GCT...CCT,GGGGCCACTAGGGACAGGAT, CONTROL_REP1,AEG588A1_S1_L003_R1_001.fastq.gz,AEG588A1_S1_L003_R2_001.fastq.gz,GCT...CCT,GGGGCCACTAGGGACAGGAT, @@ -37,7 +37,7 @@ The pipeline will auto-detect whether a sample is single- or paired-end using th A final samplesheet file consisting of both single- and paired-end data may look something like the one below. This is for 3 samples, where `chr6` is single-end and has a template sequence _(this is a reduced samplesheet, please refer to the [pipeline example samplesheet](https://raw.githubusercontent.com/nf-core/test-datasets/crisprseq/testdata-edition/samplesheet_test_full.csv) to see the full version)_. -```console +```csv title="samplesheet.csv" sample,fastq_1,fastq_2,reference,protospacer,template hCas9-TRAC-a,hCas9-TRAC-a_R1.fastq.gz,hCas9-TRAC-a_R2.fastq.gz,GCT...CCT,GGGGCCACTAGGGACAGGAT, hCas9-AAVS1-a,hCas9-AAVS1-a_R1.fastq.gz,hCas9-AAVS1-a_R2.fastq.gz,GCT...CCT,GGGGCCACTAGGGACAGGAT, @@ -108,8 +108,7 @@ Please refer to the original [CRISPR-Analytics](https://doi.org/10.1371/journal. In order to customise such parameters, you can override the arguments given to `minimap2` by creating a configuration file and provide it to your nextflow run with `-c`: -```groovy -// Custom config file custom.config +```groovy title="custom.config" process { withName: MINIMAP2_ALIGN_ORIGINAL { ext.args = '-A 29 -B 17 -O 25 -E 2' diff --git a/modules/local/mageck/flutemle.nf b/modules/local/mageck/flutemle.nf index e9efbaaa..b2b0c6cd 100644 --- a/modules/local/mageck/flutemle.nf +++ b/modules/local/mageck/flutemle.nf @@ -5,7 +5,7 @@ process MAGECK_FLUTEMLE { conda "bioconda::bioconductor-mageckflute=2.2.0" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mageckflute:2.2.0--r42hdfd78af_0': + 'https://depot.galaxyproject.org/singularity/bioconductor-mageckflute:2.2.0--r42hdfd78af_0': 'biocontainers/bioconductor-mageckflute:2.2.0--r42hdfd78af_0' }" input: diff --git a/nextflow.config b/nextflow.config index 40c69e2e..6ae4ad28 100644 --- a/nextflow.config +++ b/nextflow.config @@ -140,10 +140,10 @@ profiles { shifter.enabled = false charliecloud.enabled = false apptainer.enabled = false - process.containerOptions = '-u $(id -u):$(id -g)' + process.containerOptions = '-u \$(id -u):\$(id -g)' } arm { - process.containerOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' + process.containerOptions = '-u \$(id -u):\$(id -g) --platform=linux/amd64' } singularity { singularity.enabled = true @@ -285,7 +285,7 @@ manifest { description = """Pipeline for the analysis of CRISPR data""" mainScript = 'main.nf' nextflowVersion = '!>=23.04.0' - version = '2.2.0' + version = '2.2.1' doi = 'https://doi.org/10.5281/zenodo.7598496' } diff --git a/templates/template_fluteMLE.R b/templates/template_fluteMLE.R index 1a9c10fd..7aea697d 100644 --- a/templates/template_fluteMLE.R +++ b/templates/template_fluteMLE.R @@ -17,14 +17,28 @@ before_beta <- sub("\\\\.beta.*", "", beta_strings) unique_strings <- unique(before_beta) for(i in unique_strings) { - FluteMLE(mle, treatname= i, proj=i, pathview.top=5) - } + tryCatch( + { + FluteMLE(mle, treatname= i, proj=i, pathview.top=5) + }, + error=function(e) { + print(paste("Could not run FluteMLE with project",i)) + } + ) + } } else { beta_strings <- grep("\\\\.beta", colnames(mle), value = TRUE) before_beta <- sub("\\\\.beta.*", "", beta_strings) unique_strings <- unique(before_beta) for(i in unique_strings) { - FluteMLE(mle, treatname= i, proj=i, ${args}, pathview.top=5) + tryCatch( + { + FluteMLE(mle, treatname= i, proj=i, ${args}, pathview.top=5) + }, + error=function(e) { + print(paste("Could not run FluteMLE with project",i)) + } + ) } }