Mercurial > repos > artbio > mutational_patterns
comparison mutational_patterns.R @ 23:83f8c93c34b4 draft
"planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/master/tools/mutational_patterns commit 3c4d96db0a3c54ed68bf782f08b89b6959255d58"
author | artbio |
---|---|
date | Wed, 27 Oct 2021 00:46:47 +0000 |
parents | 00be8f0b2c89 |
children | ca6c19ee7da0 |
comparison
equal
deleted
inserted
replaced
22:00be8f0b2c89 | 23:83f8c93c34b4 |
---|---|
90 make_option( | 90 make_option( |
91 "--output_sigpattern", | 91 "--output_sigpattern", |
92 default = NA, | 92 default = NA, |
93 type = "character", | 93 type = "character", |
94 help = "path to output dataset" | 94 help = "path to output dataset" |
95 ), | |
96 make_option( | |
97 "--display_signatures", | |
98 default = NA, | |
99 type = "character", | |
100 help = "display input signature profiles if set to yes" | |
95 ), | 101 ), |
96 make_option( | 102 make_option( |
97 "--sig_contrib_matrix", | 103 "--sig_contrib_matrix", |
98 default = NA, | 104 default = NA, |
99 type = "character", | 105 type = "character", |
201 rownames(nmf_res$contribution) <- paste0("SBS", 1:opt$newsignum) | 207 rownames(nmf_res$contribution) <- paste0("SBS", 1:opt$newsignum) |
202 # Plot the 96-profile of the signatures: | 208 # Plot the 96-profile of the signatures: |
203 p5 <- plot_96_profile(nmf_res$signatures, condensed = TRUE) | 209 p5 <- plot_96_profile(nmf_res$signatures, condensed = TRUE) |
204 new_sig_matrix <- reshape2::dcast(p5$data, substitution + context ~ sample, value.var = "freq") | 210 new_sig_matrix <- reshape2::dcast(p5$data, substitution + context ~ sample, value.var = "freq") |
205 new_sig_matrix <- format(new_sig_matrix, scientific = TRUE) | 211 new_sig_matrix <- format(new_sig_matrix, scientific = TRUE) |
212 newcol <- paste0(gsub("\\..", "", new_sig_matrix$context, perl = T), | |
213 "[", new_sig_matrix$substitution, "]", | |
214 gsub("^.\\.", "", new_sig_matrix$context, perl = T)) | |
215 new_sig_matrix <- cbind(Type = newcol, new_sig_matrix[, seq_along(new_sig_matrix)[-c(1, 2)]]) | |
206 write.table(new_sig_matrix, file = opt$sigmatrix, quote = FALSE, row.names = FALSE, sep = "\t") | 216 write.table(new_sig_matrix, file = opt$sigmatrix, quote = FALSE, row.names = FALSE, sep = "\t") |
207 grid.arrange(p5) | 217 grid.arrange(p5) |
208 # Visualize the contribution of the signatures in a barplot | 218 # Visualize the contribution of the signatures in a barplot |
209 pc1 <- plot_contribution(nmf_res$contribution, nmf_res$signature, mode = "relative", coord_flip = TRUE) | 219 pc1 <- plot_contribution(nmf_res$contribution, nmf_res$signature, mode = "relative", coord_flip = TRUE) |
210 # Visualize the contribution of the signatures in absolute number of mutations | 220 # Visualize the contribution of the signatures in absolute number of mutations |
281 "SBS35", "SBS36", "SBS37", "SBS38", "SBS39", "SBS40", "SBS41", "SBS42", "SBS43", "SBS44", "SBS45", | 291 "SBS35", "SBS36", "SBS37", "SBS38", "SBS39", "SBS40", "SBS41", "SBS42", "SBS43", "SBS44", "SBS45", |
282 "SBS46", "SBS47", "SBS48", "SBS49", "SBS50", "SBS51", "SBS52", "SBS53", "SBS54", "SBS55", "SBS56", | 292 "SBS46", "SBS47", "SBS48", "SBS49", "SBS50", "SBS51", "SBS52", "SBS53", "SBS54", "SBS55", "SBS56", |
283 "SBS57", "SBS58", "SBS59", "SBS60", "SBS84", "SBS85", "SBS86", "SBS87", "SBS88", "SBS89", "SBS90", | 293 "SBS57", "SBS58", "SBS59", "SBS60", "SBS84", "SBS85", "SBS86", "SBS87", "SBS88", "SBS89", "SBS90", |
284 "SBS91", "SBS92", "SBS93", "SBS94") | 294 "SBS91", "SBS92", "SBS93", "SBS94") |
285 | 295 |
296 # if signature names provided are not compliant with cosmic nomenclature, | |
297 # we attribute these names to the active signature_colors vector, adjusted to the length | |
298 # of the signature names. | |
299 | |
300 if (! all(colnames(sbs_signatures) %in% names(signature_colors))) { # provided signature are not all included in cosmic names | |
301 signature_colors <- signature_colors[seq_along(sbs_signatures)] | |
302 names(signature_colors) <- colnames(sbs_signatures) | |
303 } | |
304 | |
286 # This is IMPORTANT since in Galaxy we do not use the embeded function get_known_signatures() | 305 # This is IMPORTANT since in Galaxy we do not use the embeded function get_known_signatures() |
287 sbs_signatures <- as.matrix(sbs_signatures) | 306 sbs_signatures <- as.matrix(sbs_signatures) |
288 | 307 |
289 | 308 |
290 # Plot mutational profiles of the COSMIC signatures | 309 # Plot mutational profiles of the COSMIC signatures |
291 | 310 |
292 pdf(opt$output_sigpattern, paper = "special", width = 11.69, height = 11.69) | 311 pdf(opt$output_sigpattern, paper = "special", width = 11.69, height = 11.69) |
293 for (i in head(seq(1, ncol(sbs_signatures), by = 20), -1)) { | 312 if (opt$display_signatures == "yes") { |
294 p6 <- plot_96_profile(sbs_signatures[, i:(i + 19)], condensed = TRUE, ymax = 0.3) | 313 for (i in head(seq(1, ncol(sbs_signatures), by = 20), -1)) { |
295 grid.arrange(p6, top = textGrob(paste0(tag, " profiles (", trunc((i + 1) / 20) + 1, " of ", | 314 p6 <- plot_96_profile(sbs_signatures[, i:(i + 19)], condensed = TRUE, ymax = 0.3) |
315 grid.arrange(p6, top = textGrob(paste0(tag, " profiles (", trunc((i + 1) / 20) + 1, " of ", | |
316 trunc(ncol(sbs_signatures) / 20) + 1, " pages)"), | |
317 gp = gpar(fontsize = 12, font = 3))) | |
318 } | |
319 p6 <- plot_96_profile(sbs_signatures[, (trunc(ncol(sbs_signatures) / 20) * 20):(ncol(sbs_signatures))], | |
320 condensed = TRUE, ymax = 0.3) | |
321 grid.arrange(p6, top = textGrob(paste0(tag, " profiles (", trunc(ncol(sbs_signatures) / 20) + 1, " of ", | |
296 trunc(ncol(sbs_signatures) / 20) + 1, " pages)"), | 322 trunc(ncol(sbs_signatures) / 20) + 1, " pages)"), |
297 gp = gpar(fontsize = 12, font = 3))) | 323 gp = gpar(fontsize = 12, font = 3))) |
298 } | 324 } |
299 p6 <- plot_96_profile(sbs_signatures[, (trunc(ncol(sbs_signatures) / 20) * 20):(ncol(sbs_signatures))], | |
300 condensed = TRUE, ymax = 0.3) | |
301 grid.arrange(p6, top = textGrob(paste0(tag, " profiles (", trunc(ncol(sbs_signatures) / 20) + 1, " of ", | |
302 trunc(ncol(sbs_signatures) / 20) + 1, " pages)"), | |
303 gp = gpar(fontsize = 12, font = 3))) | |
304 | 325 |
305 | 326 |
306 # Find optimal contribution of COSMIC signatures to reconstruct 96 mutational profiles | 327 # Find optimal contribution of COSMIC signatures to reconstruct 96 mutational profiles |
307 pseudo_mut_mat <- mut_mat + 0.0001 # First add a small pseudocount to the mutation count matrix | 328 pseudo_mut_mat <- mut_mat + 0.0001 # First add a small pseudocount to the mutation count matrix |
308 fit_res <- fit_to_signatures(pseudo_mut_mat, sbs_signatures) | 329 fit_res <- fit_to_signatures(pseudo_mut_mat, sbs_signatures) |