-
Notifications
You must be signed in to change notification settings - Fork 1
/
medicc_total_cn.nf
60 lines (43 loc) · 2.93 KB
/
medicc_total_cn.nf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/env nextflow
params.hmmcopy_results_csv ?: { log.error "No annotations data provided. Make sure you have used the '--hmmcopy_results_csv' option."; exit 1 }()
hmmcopy_results_csv = Channel.fromPath(params.hmmcopy_results_csv) | splitCsv(header:true) | map { row -> file(row.hmmcopy_results, checkIfExists: true) } | toList()
hmmcopy_results_csv_yaml = Channel.fromPath(params.hmmcopy_results_csv) | splitCsv(header:true) | map { row -> file(row.hmmcopy_results + '.yaml', checkIfExists: true) } | toList()
params.annotation_metrics_csv ?: { log.error "No annotations data provided. Make sure you have used the '--annotation_metrics_csv' option."; exit 1 }()
annotation_metrics_csv = Channel.fromPath(params.annotation_metrics_csv) | splitCsv(header:true) | map { row -> file(row.annotation_metrics, checkIfExists: true) } | toList()
annotation_metrics_csv_yaml = Channel.fromPath(params.annotation_metrics_csv) | splitCsv(header:true) | map { row -> file(row.annotation_metrics + '.yaml', checkIfExists: true) } | toList()
params.output_directory ?: { log.error "No copy number data provided. Make sure you have used the '--output_directory' option."; exit 1 }()
params.results_basename ?: { params.results_basename = 'output' }()
params.medicc_args = "-j 400 --input-type t --total-copy-numbers --input-allele-columns cn --verbose --plot none --no-plot-tree"
include { MEDICC } from './subworkflows/medicc'
process GENERATE_MEDICC_INPUT {
input:
path hmmcopy_results_csv, stageAs: 'hmmcopy_results*.csv.gz'
path hmmcopy_results_csv_yaml, stageAs: 'hmmcopy_results*.csv.gz.yaml'
path annotation_metrics_csv, stageAs: 'annotation_metrics*.csv.gz'
path annotation_metrics_csv_yaml, stageAs: 'annotation_metrics*.csv.gz.yaml'
output:
path "${params.results_basename}.tsv", emit: medicc_input
script:
"""
create_medicc_input.py ${params.results_basename}.tsv --hmmcopy_reads ${hmmcopy_results_csv.join(' --hmmcopy_reads ')} --annotation_metrics ${annotation_metrics_csv.join(' --annotation_metrics ')}
"""
}
process PLOT_MEDICC_RESULTS {
input:
path medicc_input
path cn_profiles
path tree
output:
path "${params.results_basename}_tree_heatmap.png", emit: tree_cn_figure
script:
"""
plot_medicc_output.py ${medicc_input} ${cn_profiles} ${tree} ${params.results_basename}_tree_heatmap.png
"""
}
workflow {
GENERATE_MEDICC_INPUT(hmmcopy_results_csv, hmmcopy_results_csv_yaml, annotation_metrics_csv, annotation_metrics_csv_yaml)
MEDICC(GENERATE_MEDICC_INPUT.out.medicc_input, Channel.of(params.medicc_args), Channel.of(params.output_directory))
PLOT_MEDICC_RESULTS(GENERATE_MEDICC_INPUT.out.medicc_input, MEDICC.out.final_cn_profiles, MEDICC.out.final_tree_newick)
GENERATE_MEDICC_INPUT.out.medicc_input.subscribe { it.copyTo(params.output_directory) }
PLOT_MEDICC_RESULTS.out.tree_cn_figure.subscribe { it.copyTo(params.output_directory) }
}