Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Control-FREEC improvements #196

Closed
wants to merge 62 commits into from
Closed
Show file tree
Hide file tree
Changes from 59 commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
8518d36
added script to help downstream analysis, adding RankScore for Scout
Oct 17, 2019
627019b
Merge remote-tracking branch 'upstream/dev'
Oct 17, 2019
10cefaf
#51 CHANGELOG
Oct 18, 2019
6d213a4
Merge branch 'dev' into master
maxulysse Oct 21, 2019
8148546
nf-core bump-version . 2.5.1
maxulysse Oct 21, 2019
e3453c6
fix script name in docs
maxulysse Oct 21, 2019
6aa1091
fix markdownlint
maxulysse Oct 21, 2019
33ff41f
fix autoMounts in singularity profile, closes #48
maxulysse Oct 21, 2019
a7b0f00
fix path to script, close #50
maxulysse Oct 21, 2019
a3e45c6
build 2.5.1 version of annotation containers
maxulysse Oct 21, 2019
d00a8f7
add patch to branch protection
maxulysse Oct 21, 2019
8dfc48a
pull image 2.5,tag it as 2.5.1
maxulysse Oct 21, 2019
db4775c
pull image 2.5,tag it as 2.5.1
maxulysse Oct 21, 2019
642ddfb
use correct tag for containers close #49
maxulysse Oct 21, 2019
94c82e2
bump version to 2.5.1
maxulysse Oct 21, 2019
c650e08
update script name
maxulysse Oct 21, 2019
424a4f5
update docs
maxulysse Oct 21, 2019
8ba3e47
update CHANGELOG
maxulysse Oct 21, 2019
84f039c
always download nfcore/sarek
maxulysse Oct 21, 2019
b238dd6
Try to fix branch protection
maxulysse Oct 22, 2019
83e5348
Group checks
maxulysse Oct 22, 2019
114e2c0
rewrote test
maxulysse Oct 22, 2019
b76f217
This time it'll work
maxulysse Oct 22, 2019
67bc341
Typo
maxulysse Oct 22, 2019
9019dc3
Update .github/workflows/branch.yml
maxulysse Oct 22, 2019
6e7262f
Update .github/workflows/branch.yml
maxulysse Oct 22, 2019
9893a3b
fix travis branch protection
maxulysse Oct 22, 2019
05c6e0b
Merge pull request #53 from MaxUlysse/patch
maxulysse Oct 22, 2019
bc6155f
Merge remote-tracking branch 'upstream/dev'
Oct 31, 2019
4bdff8e
Update README.md
maxulysse Nov 8, 2019
eb22a0c
Merge branch 'master' into dev
maxulysse Dec 16, 2019
5c30fd8
Merge branch 'dev'
maxulysse Dec 16, 2019
11c3ad3
Merge remote-tracking branch 'upstream/master'
Dec 18, 2019
a722f3e
Merge remote-tracking branch 'upstream/dev' into dev
Dec 18, 2019
f4e9883
reducing CPU usage for Mpileup
Dec 18, 2019
e71b7bc
Merge remote-tracking branch 'upstream/dev'
Dec 18, 2019
70f34d6
Merge remote-tracking branch 'upstream/dev' into dev
Dec 18, 2019
d83a244
Merge branch 'dev' of github.com:szilvajuhos/sarek into dev
Dec 18, 2019
cb76fef
Merge remote-tracking branch 'upstream/dev'
Dec 18, 2019
72d37b7
Merge branch 'dev'
Dec 18, 2019
f202e18
cleanup with meld
Dec 18, 2019
42b19ff
Update docs/downstream.md
Dec 18, 2019
f523aa8
Update docs/downstream.md
Dec 18, 2019
e8c0bf1
some docs additions
Dec 18, 2019
bb7aa1f
Merge branch 'master' of github.com:szilvajuhos/sarek
Dec 18, 2019
7b4dda8
Update docs/downstream.md
Dec 18, 2019
9be155c
Update docs/downstream.md
Dec 18, 2019
37573e1
Update docs/downstream.md
Dec 18, 2019
261aa4e
Update docs/downstream.md
Dec 18, 2019
a94696d
Update docs/downstream.md
Dec 18, 2019
0639d72
Update docs/downstream.md
Dec 18, 2019
aae1015
added extra space
Dec 18, 2019
6d2efd0
Merge branch 'master' of github.com:szilvajuhos/sarek
Dec 18, 2019
e03b7a4
Merge branch 'dev' into master
maxulysse Jan 24, 2020
20a3556
merge conflict resolved
Apr 21, 2020
65a1069
Merge remote-tracking branch 'upstream/dev' into CF
Apr 22, 2020
34e9469
First time CF is working with extra pileups
Apr 22, 2020
b72e27a
First working version
Apr 24, 2020
0ab51e5
Merge remote-tracking branch 'upstream/dev' into CF
Apr 24, 2020
0ae70ed
Removing #51 and moving downstream to szilvajuhos/btb-scripts
Apr 24, 2020
d1ebfb1
Fixing some null parameters and C&P typos
Apr 24, 2020
cf620c8
yet an other version that somehow worked
Apr 27, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Piellorieppe is one of the main massif in the Sarek National Park.

### Added - [2.6dev]

- [#51](https://github.com/nf-core/sarek/pull/51) - Script for RankScore annotation
- [#76](https://github.com/nf-core/sarek/pull/76) - Add `GATK Spark` possibilities to Sarek
- [#87](https://github.com/nf-core/sarek/pull/87) - Add `GATK BaseRecalibrator` plot to `MultiQC` report
- [#115](https://github.com/nf-core/sarek/pull/115) - Add [@szilvajuhos](https://github.com/szilvajuhos) abstract for ESHG2020
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ The nf-core/sarek pipeline comes with documentation about the pipeline, found in
* [Complementary information about ASCAT](docs/ascat.md)
* [Complementary information about Sentieon](docs/sentieon.md)
* [Extra documentation on annotation](docs/annotation.md)
* [Downstream processing, ranking, and connection to Scout](docs/downstream.md)
5. [Troubleshooting](https://nf-co.re/usage/troubleshooting)

## Credits
Expand Down
109 changes: 109 additions & 0 deletions docs/downstream.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
# Downstream processing, ranking and connection to [Scout](https://github.com/Clinical-Genomics/scout)

## RankScore annotations

[Scout](https://github.com/Clinical-Genomics/scout) was developed to help clinicians to visualise relevant
variations, focusing on rare diseases. However, adding cancer capabilities are on the way, and the first step to add
somatic mutations is to rank them in the VCF and load them to Scout. The scores have to be added as a `RankScore` INFO
field, and have to have the format like:

```text
chr1 514206 rs1247069502 A C . PASS ECNT=1;dbSNP=rs1247069502 RankScore=ScoreTest:0 GT:AD:AF 0/1:2,6:0.750 0/0:33,1:0.029
```

where the `ScoreTest` is the sample (normal) ID, and the score of this particular variation is 0. Scout will accept and
show any sort of scores if the VCF is annotated properly. There have to be an info line in the VCF like:

```text
##INFO=<ID=RankScore,Number=.,Type=String,Description="The rank score for this variant ... . family_id:rank_score.">
```

RankScores for Scout considering rare diseases are calculated by [genmod](https://github.com/moonso/genmod), hence we
are following the same annotation format to accomodate VCF files generated by Sarek.

## Calculating RankScores with [Pathfindr](https://github.com/NBISweden/pathfindr)

There are many approaches to score variants, Pathfindr considers many statistics found in the VCF file, collates
[snpEff](http://snpeff.sourceforge.net/) and [VEP](https://www.ensembl.org/info/docs/tools/vep/index.html) annotations
to calculate a single score that is written into a HTML page, also into a CSV file. This CSV can be processed with the
`scripts/addPFRanksToVCF.py` python3 script. The CSV do not have to be generated by Pathfindr: until you have a
comma-delimited file with a header with the `ID` in the first column and further columns named as `chr`,`start` and
`rank_score`, the VCF will be annotated with the provided rank score in the CSV:

```text
ID,sample,rank_score,rank_terms,LOH,whatever,Consequence,IMPACT,SomethingIrrelevant,chr,start,end,width
chr1:47248600_A/G,SampleTheBig,2,T1_gene,Y,0.926928,MODIFIER,0,0.853685,chr1,47248600,47248600,1
chr1:110337540_C/T,SampleTheBig,2,T1_gene,Y,0.920036,MODIFIER,0,0.674548,chr1,110337540,110337540,1
rs1205765240;rs4067337,SampleTheBig,2,T1_gene,"",0.605296,MODIFIER,0.348,0.209617,chr1,148963716,148963717,2
chr1:197775910_G/A,SampleTheBig,2, TFBS not_canonical,"",0.813335,MODIFIER,0,0.471831,chr1,197775910,197775910,1
rs142472845,SampleTheBig,2,T2_gene,"",0.519579,MODIFIER,0.002,0.140411,chr1,248458340,248458340,1
chr2:15453359_C/T,SampleTheBig,2,T2_gene,"",0.514598,MODIFIER,0,0.00526232,chr2,15453359,15453359,1
chr2:29413588_G/A,SampleTheBig,2,T1_gene,"",0.00738279,MODIFIER,0,0.994607,chr2,29413588,29413588,1
chr2:70181162_C/T,SampleTheBig,2, high_impact,"",0.201275,HIGH,0,0.76965,chr2,70181162,70181162,1
rs1335878992,SampleTheBig,2,T2_gene,"",0.00478691,MODIFIER,0,0.66847,chr2,80397367,80397367,1
rs56269417,SampleTheBig,2,T2_gene,"",0.76779,MODIFIER,0,0.378918,chr2,98265733,98265733,1
...
```

The basis of the annotation is `chr:startposition`: all variants in the VCF with the same coordinates will get the same
RankScore irrespectively of the ALT allele. If there are multiple scores for a single genomic coordinate in the CSV, the
very last one in the file will be stored only.

## Usage of `scripts/addPFRanksToVCF.py` : transferring Pathfindr rank_score to Scout

Usage is:

```bash
$ ./addPFRanksToVCF.py -h
Usage: addPFRanksToVCF.py [OPTIONS]

Options:
-v, --vcf TEXT VCF file to annotate [required]
-c, --csv TEXT CSV file with ranked scores [required]
-f, --family TEXT family ID as expected in scout yaml file (usually sample
name of the normal) [required]
-h, --help Show this message and exit.
```

Three parameters have to be provided, `-v` and `-c` are the name of the VCF and CSV files respectively, the `-f`
parameter is the name of the normal sample in the VCF file. MuTect2 (GATK version < 4.0) VCF has a header line like:

```text
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT TUMOR NORMAL
```

not showing sample names, only the `TUMOR` and `NORMAL` columns. For Scout, the `NORMAL` part has to be altered to
reflect actual sample name: this sample name will be also used in the RankScore annotation. By providing the something
like `-f ThisIsIt` , the header line will be

```text
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT TUMOR ThisIsIt
```

and annotations will be like `RankScore=ThisIsIt:7` . The `.yaml` file for Scout to load the case has to be prepared in
a way, that the `family` entry and the `sample_id` in the `samples:` sections also contain this key. Example:

```text
---

owner: BTB
human_genome_build: 38
# family has to be the same as the NORMAL column in the VCF
# also have to be the same as the sample_id
family: 'ScoreTest'
# family name will appear in the Scout table
family_name: 'Mutect2Testing'
samples:
- analysis_type: wgs
sample_id: ScoreTest
tumor_type: medulloblastoma
phenotype: affected
father: 0
mother: 0
expected_coverage: 90
sex: male

# This VCF contains the RankScore annotations already
vcf_cancer: testM2.vcf

```
101 changes: 80 additions & 21 deletions main.nf
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ def helpMessage() {
--known_indels [file] knownIndels file
--known_indels_index [file] knownIndels index
If none provided, will be generated automatically if a knownIndels file is provided
--mappability [file] Mappability file for Control-FREEC
--species [str] Species for VEP
--snpeff_db [str] snpEff Database version
--vep_cache_version [int] VEP Cache version
Expand All @@ -125,6 +126,13 @@ def helpMessage() {
--max_multiqc_email_size [str] Theshold size for MultiQC report to be attached in notification email. If file generated by pipeline exceeds the threshold, it will not be attached (Default: 25MB)
-name [str] Name for the pipeline run. If not specified, Nextflow will automatically generate a random mnemonic


--normal_pileup [file] Normal pileup file for Control-FREEC
--tumor_pileup [file] Tumor pileup file for Control-FREEC
--cf_coeff [str] Control-FREEC coefficientOfVariation [0.015]
--cf_ploidy [str] Control-FREEC ploidy [2]
--cf_window [str] Control-FREEC window size [not set, as using coefficientOfVariation by default]

AWSBatch options:
--awsqueue [str] The AWSBatch JobQueue that needs to be set when running on AWSBatch
--awsregion [str] The AWS Region for your AWSBatch job to run on
Expand Down Expand Up @@ -361,6 +369,10 @@ if (!checkParameterList(annotateTools,annoList)) exit 1, 'Unknown tool(s) to ann

// Check parameters
if ((params.ascat_ploidy && !params.ascat_purity) || (!params.ascat_ploidy && params.ascat_purity)) exit 1, 'Please specify both --ascat_purity and --ascat_ploidy, or none of them'
if ((params.normal_pileup && !params.tumor_pileup) || (!params.normal_pileup && params.tumor_pileup)) exit 1, 'Please specify both --normal_pileup and --tumor_pileup, or none of them'

// for Control-FREEC window and coefficientOfVariation we need only one of them
if (params.cf_window && params.cf_coeff) exit 1, 'Please specify either --cf_window OR --cf_coeff, but not both of them'

// Has the run name been specified by the user?
// This has the bonus effect of catching both -name and --name
Expand Down Expand Up @@ -477,6 +489,12 @@ ch_cadd_wg_snvs_tbi = params.cadd_wg_snvs_tbi ? Channel.value(file(params.cadd_w
ch_pon = params.pon ? Channel.value(file(params.pon)) : "null"
ch_target_bed = params.target_bed ? Channel.value(file(params.target_bed)) : "null"

// parameters to experiment with Control-FREEC
szilvajuhos marked this conversation as resolved.
Show resolved Hide resolved
cf_window = params.cf_window ? Channel.value(file(params.cf_window)) : "null"
szilvajuhos marked this conversation as resolved.
Show resolved Hide resolved
cf_coeff = params.cf_coeff ? Channel.value(file(params.cf_coeff)) : "null"
szilvajuhos marked this conversation as resolved.
Show resolved Hide resolved
cf_ploidy = params.cf_ploidy ? Channel.value(file(params.cf_ploidy)) : "null"
szilvajuhos marked this conversation as resolved.
Show resolved Hide resolved

szilvajuhos marked this conversation as resolved.
Show resolved Hide resolved

szilvajuhos marked this conversation as resolved.
Show resolved Hide resolved
/*
================================================================================
PRINTING SUMMARY
Expand Down Expand Up @@ -912,7 +930,7 @@ if (step in ['recalibrate', 'variantcalling', 'annotate']) {

(inputBam, inputBamFastQC) = inputBam.into(2)

// Removing inputFile2 wich is null in case of uBAM
// Removing inputFile2 which is null in case of uBAM
inputBamFastQC = inputBamFastQC.map {
idPatient, idSample, idRun, inputFile1, inputFile2 ->
[idPatient, idSample, idRun, inputFile1]
Expand Down Expand Up @@ -2194,8 +2212,7 @@ vcfFreebayesSingle = vcfFreebayesSingle.groupTuple(by: [0,1,2])
SOMATIC VARIANT CALLING
================================================================================
*/

// Ascat, Control-FREEC
// Ascat, pileup, pileups with no intervals, recalibrated, and IDs when the pileup is provided by CLI for Control-FREEC
(bamAscat, bamMpileup, bamMpileupNoInt, bamRecalAll) = bamRecalAll.into(4)

// separate BAM by status
Expand Down Expand Up @@ -2945,18 +2962,25 @@ process Mpileup {
file(fastaFai) from ch_fai

output:
set idPatient, idSample, file("${prefix}${idSample}.pileup.gz") into mpileupMerge
set idPatient, idSample, file("${prefix}${idSample}.pileup") into mpileupMerge

when: 'controlfreec' in tools || 'mpileup' in tools

script:
prefix = params.no_intervals ? "" : "${intervalBed.baseName}_"
intervalsOptions = params.no_intervals ? "" : "-l ${intervalBed}"

if(params.normal_pileup && params.tumor_pileup) // we already have pileups
"""
touch ${prefix}${idSample}.pileup
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure I understand the idea here

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So instead of a useless process here and in the next one, I think we make a new channel that match the ControlFreec process with the input mpileups and make it conditional so we don't even use these two processes at all.
That would be better, and safer, and easier to understand

"""
else
"""
# Control-FREEC reads uncompresses the zipped file TWICE in single-threaded mode.
# For the moment we are not using compressed pileups.
samtools mpileup \
-f ${fasta} ${bam} \
${intervalsOptions} \
| bgzip --threads ${task.cpus} -c > ${prefix}${idSample}.pileup.gz
${intervalsOptions} > ${prefix}${idSample}.pileup # | bgzip --threads ${task.cpus} -c > ${prefix}${idSample}.pileup.gz
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if the output is not with the .gz I don't think we're saving it in the results folder actually.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right, have to be fixed in the publishDir as I see

"""
}

Expand All @@ -2969,8 +2993,9 @@ if (!params.no_intervals) {
}

// STEP MPILEUP.2 - MERGE

process MergeMpileup {
label 'cpus_1'

tag {idSample}

publishDir params.outdir, mode: params.publish_dir_mode, saveAs: { it == "${idSample}.pileup.gz" ? "VariantCalling/${idSample}/mpileup/${it}" : '' }
Expand All @@ -2979,19 +3004,25 @@ process MergeMpileup {
set idPatient, idSample, file(mpileup) from mpileupMerge

output:
set idPatient, idSample, file("${idSample}.pileup.gz") into mpileupOut
set idPatient, idSample, file("${idSample}.pileup") into mpileupOut

when: !(params.no_intervals) && 'controlfreec' in tools || 'mpileup' in tools

script:
if(params.normal_pileup && params.tumor_pileup)
"""
if [[ ${params.normal_pileup} =~ $idSample ]] ; then ln -s ${params.normal_pileup} ${idSample}.pileup ; fi
if [[ ${params.tumor_pileup} =~ $idSample ]] ; then ln -s ${params.tumor_pileup} ${idSample}.pileup ; fi
"""
for i in `ls -1v *.pileup.gz`;
do zcat \$i >> ${idSample}.pileup
else
"""
for i in `ls -1v *.pileup`;
do cat \$i >> ${idSample}.pileup
done

bgzip --threads ${task.cpus} -c ${idSample}.pileup > ${idSample}.pileup.gz
#bgzip --threads ${task.cpus} -c ${idSample}.pileup > ${idSample}.pileup.gz

rm ${idSample}.pileup
#rm ${idSample}.pileup
"""
}

Expand All @@ -3015,7 +3046,8 @@ mpileupOut = mpileupOut.map {
// STEP CONTROLFREEC.1 - CONTROLFREEC

process ControlFREEC {
label 'memory_singleCPU_2_task'
label 'cpus_max'
//label 'memory_singleCPU_2_task'

tag {idSampleTumor + "_vs_" + idSampleNormal}

Expand All @@ -3031,28 +3063,44 @@ process ControlFREEC {
file(fastaFai) from ch_fai

output:
set idPatient, idSampleNormal, idSampleTumor, file("${idSampleTumor}.pileup.gz_CNVs"), file("${idSampleTumor}.pileup.gz_ratio.txt"), file("${idSampleTumor}.pileup.gz_normal_CNVs"), file("${idSampleTumor}.pileup.gz_normal_ratio.txt"), file("${idSampleTumor}.pileup.gz_BAF.txt"), file("${idSampleNormal}.pileup.gz_BAF.txt") into controlFreecViz
set file("*.pileup.gz*"), file("${idSampleTumor}_vs_${idSampleNormal}.config.txt") into controlFreecOut
set idPatient, idSampleNormal, idSampleTumor, file("${idSampleTumor}.pileup_CNVs"), file("${idSampleTumor}.pileup_ratio.txt"), file("${idSampleTumor}.pileup_normal_CNVs"), file("${idSampleTumor}.pileup_normal_ratio.txt"), file("${idSampleTumor}.pileup_BAF.txt"), file("${idSampleNormal}.pileup_BAF.txt") into controlFreecViz
set file("*.pileup*"), file("${idSampleTumor}_vs_${idSampleNormal}.config.txt") into controlFreecOut

when: 'controlfreec' in tools

script:
config = "${idSampleTumor}_vs_${idSampleNormal}.config.txt"
gender = genderMap[idPatient]
ploidy = params.cf_ploidy ? "${params.cf_ploidy}" : "2"
// if we are using coefficientOfVariation, we must delete the window parameter
if(params.cf_coeff) {
coeff = "coefficientOfVariation = $params.cf_coeff"
window = ""
}
else if(params.cf_window) {
coeff = ""
window = "window = ${params.cf_window}"
}
else { // default settings
coeff = "coefficientOfVariation = 0.015"
window = "" // it is "window = 20000" in the default settings, without coefficientOfVariation set, but we do not like it. Note, it is not written in stone
}
mappability = "gemMappabilityFile = ${params.mappability}"
"""
touch ${config}
echo "[general]" >> ${config}
echo "BedGraphOutput = TRUE" >> ${config}
echo "chrFiles = \${PWD}/${chrDir.fileName}" >> ${config}
echo "chrLenFile = \${PWD}/${chrLength.fileName}" >> ${config}
echo "coefficientOfVariation = 0.05" >> ${config}
echo "${coeff}" >> ${config}
echo "contaminationAdjustment = TRUE" >> ${config}
echo "forceGCcontentNormalization = 0" >> ${config}
echo "forceGCcontentNormalization = 1" >> ${config}
echo "maxThreads = ${task.cpus}" >> ${config}
echo "minimalSubclonePresence = 20" >> ${config}
echo "ploidy = 2,3,4" >> ${config}
echo "ploidy = ${ploidy}" >> ${config}
echo "sex = ${gender}" >> ${config}
echo "window = 50000" >> ${config}
echo "${window}" >> ${config}
echo "${mappability}" >> ${config}
echo "" >> ${config}

echo "[control]" >> ${config}
Expand Down Expand Up @@ -3094,11 +3142,20 @@ process ControlFreecViz {
when: 'controlfreec' in tools

"""
cat /opt/conda/envs/nf-core-sarek-${workflow.manifest.version}/bin/assess_significance.R | R --slave --args ${cnvTumor} ${ratioTumor}
cat /opt/conda/envs/nf-core-sarek-${workflow.manifest.version}/bin/assess_significance.R | R --slave --args ${cnvNormal} ${ratioNormal}
echo "Shaping CNV files to make sure we can assess signifacance"
awk 'NF==9{print}' ${cnvTumor} > TUMOR.CNVs
awk 'NF==7{print}' ${cnvNormal} > NORMAL.CNVs
echo "############### Calculating significance values for TUMOR CNVs #############"
cat /opt/conda/envs/nf-core-sarek-${workflow.manifest.version}/bin/assess_significance.R | R --slave --args TUMOR.CNVs ${ratioTumor}
echo "############### Calculating significance values for NORMAL CNVs ############"
cat /opt/conda/envs/nf-core-sarek-${workflow.manifest.version}/bin/assess_significance.R | R --slave --args NORMAL.CNVs ${ratioNormal}
echo "############### Creating graph for TUMOR ratios ###############"
cat /opt/conda/envs/nf-core-sarek-${workflow.manifest.version}/bin/makeGraph.R | R --slave --args 2 ${ratioTumor} ${bafTumor}
echo "############### Creating graph for NORMAL ratios ##############"
cat /opt/conda/envs/nf-core-sarek-${workflow.manifest.version}/bin/makeGraph.R | R --slave --args 2 ${ratioNormal} ${bafNormal}
echo "############### Creating BED files for TUMOR ##############"
perl /opt/conda/envs/nf-core-sarek-${workflow.manifest.version}/bin/freec2bed.pl -f ${ratioTumor} > ${idSampleTumor}.bed
echo "############### Creating BED files for NORMAL #############"
perl /opt/conda/envs/nf-core-sarek-${workflow.manifest.version}/bin/freec2bed.pl -f ${ratioNormal} > ${idSampleNormal}.bed
"""
}
Expand Down Expand Up @@ -3694,6 +3751,8 @@ def nfcoreHeader() {
c_reset = params.monochrome_logs ? '' : "\033[0m";
c_white = params.monochrome_logs ? '' : "\033[0;37m";
c_yellow = params.monochrome_logs ? '' : "\033[0;33m";

return "--"
Comment on lines +3750 to +3751
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no sure why you added that

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because I could not see the debug messages. Will be restored eventually :)


return """ -${c_dim}--------------------------------------------------${c_reset}-
${c_green},--.${c_black}/${c_green},-.${c_reset}
Expand Down
Loading