From 7c82c81d5dfcbedf41280ff2ed776a4dfc26b13f Mon Sep 17 00:00:00 2001 From: Jerome Salignon Date: Sat, 6 Apr 2024 14:34:45 +0200 Subject: [PATCH 01/27] adding figures to show all Cactus outputs --- case_study/4__making_figures.R | 83 ++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/case_study/4__making_figures.R b/case_study/4__making_figures.R index ece001b..594d745 100644 --- a/case_study/4__making_figures.R +++ b/case_study/4__making_figures.R @@ -120,3 +120,86 @@ dt_dw = dt_dw[order(-L2FC), c('COMP', 'gene_name', 'gene_id', 'pval', 'padj', 'L openxlsx::write.xlsx(list(up = dt_up, down = dt_dw), 'Table_S1.xlsx') + + +homedir=~ +eval homedir=$homedir +cactus_dir=$homedir/workspace/cactus +cd $cactus_dir/case_study/figures + +# ~/workspace/cactus/docs/examples/png +# /raid/jersal/workspace/cactus/docs/examples/png + +library(ggplot2) + +png_to_gg <- function(png_file, margin = 20) { + ggplot2::ggplot() + ggplot2::annotation_custom( + grid::rasterGrob(png::readPNG(png_file), + width = ggplot2::unit(1,"npc"), + height = ggplot2::unit(1,"npc")), + -Inf, Inf, -Inf, Inf) + theme(plot.margin = + margin(t = margin, r = margin, b = margin, l = margin, unit = "pt")) +} + +plot_by_chunk <- function(lp, nrow, ncol){ + nplots = length(lp) + npages = ceiling(nplots / (nrow * ncol)) + lp1 = vector('list', length = npages) + + for(page in 1:npages){ + cur_panel = 1 + (page - 1) * 12 + v_panels = cur_panel:min(cur_panel + 11, nplots) + p1 = ggpubr::ggarrange(plotlist = lp[v_panels], nrow = 4, ncol = 3, + labels = v_panels) + lp1[[page]] = p1 + } + + return(lp1) +} + + +v_files = list.files('../../docs/examples/png', full.names = T) + +v_files_1 = c( + grep('\\/ctl_1__', v_files, value = T), + grep('without_control_pca', v_files, value = T), + grep('spearman_correlation_heatmap', v_files, value = T), + grep('ATAC__peaks__grouped', v_files, value = T), + grep('hmg4_vs_ctl__ATAC_', v_files, value = T), + grep('hmg4_vs_ctl__mRNA_', v_files, value = T), + # grep('mRNA_volcano__', v_files, value = T), + grep('venn_up', v_files, value = T), + grep('__barplot', v_files, value = T), + grep('__heatmap\\.', v_files, value = T) + ) +v_files %>% .[!. %in% v_files_1] +# [1] "../../docs/examples/png/hmg4_vs_spt16__ATAC_volcano__no_rtr.png" +# [2] "../../docs/examples/png/hmg4_vs_spt16__ATAC_volcano.png" +# [3] "../../docs/examples/png/mRNA_volcano__no_gtr.png" +# [4] "../../docs/examples/png/mRNA_volcano__with_gtr.png" + +v_files_1 %>% .[which(duplicated(.))] # character(0) + +v_files_1 %<>% .[. != '../../docs/examples/png/hmg4_vs_ctl__ATAC_other_plots.png'] +v_files_1 %<>% .[. != '../../docs/examples/png/hmg4_vs_ctl__mRNA_other_plots.png'] + +lp = lapply(v_files_1, png_to_gg) + +lp1 = plot_by_chunk(lp, 4, 3) + +pdf('Sup_fig_test.pdf', width = 7, height = 10) + print(lp1) +dev.off() + + + + + +# lp = lapply(v_files_1, png_to_gg) +# p1 = ggpubr::ggarrange(plotlist = lp, nrow = 4, ncol = 3, +# labels = 'auto') + +# pdf('Sup_fig_test.pdf', width = 7, height = 10) +# print(p1) +# dev.off() + From e810db1d800325b6175852f0535edfe80185a08b Mon Sep 17 00:00:00 2001 From: Jerome Salignon Date: Mon, 8 Apr 2024 10:45:17 +0200 Subject: [PATCH 02/27] adding figures to show all Cactus outputs --- case_study/4__making_figures.R | 132 +++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) diff --git a/case_study/4__making_figures.R b/case_study/4__making_figures.R index 594d745..7e9f633 100644 --- a/case_study/4__making_figures.R +++ b/case_study/4__making_figures.R @@ -158,8 +158,140 @@ plot_by_chunk <- function(lp, nrow, ncol){ } +grep1 <- function(x) grep(x, v_files, value = T) + + + + +rep('__barplot', v_files, value = T), + grep('__heatmap\\.' + +v_files_1_DA_mrna_ = grep1('\\/hmg4_vs_ctl__mRNA') + +plot_4_by_3 <- function(v_files_1){ + lp = lapply(v_files_1, png_to_gg) + p1 = ggpubr::ggarrange(plotlist = lp, nrow = 4, ncol = 3, + labels = 'auto') + return(p1) +} + + + + = ggpubr::ggarrange(plotlist = lp[v_panels], nrow = 4, ncol = 3, + labels = v_panels) + + +v_files_1_1_QC_reads = grep1('\\/(pca|spearman|ctl_1__(average|reads|insert))') +v_files_1_1_QC_peaks = grep1('(\\/(ctl_1__peaks|ATAC__peaks)|saturation_curve)') +v_files_1_1_QC = c(v_files_1_1_QC_reads, v_files_1_1_QC_peaks) +v_files_1_2_DA = grep1('\\/hmg4_vs_ctl__') %>% + grep('mRNA_(PCA|volcano)', ., invert = T, value = T) %>% c(grep1('venn')) +v_files_1_3_EN = grep1('__(barplot|heatmap)\\.') + +v_files_1_2_DA %>% length +v_files_1_3_EN %>% length + + +p1 = plot_4_by_3(v_files_1_1_QC) +p2 = plot_4_by_3(v_files_1_2_DA) +p3 = plot_4_by_3(v_files_1_3_EN) + + + +grep('mRNA_(PCA|volcano)', grep1('\\/hmg4_vs_ctl__'), invert = T, value = T) + + +v_files_1_1_QC = c(v_files_1_1_QC_reads, v_files_1_1_QC_peaks) + + +_1 + +grep1('__(barplot|heatmap)\\.') + + +v_files_2 = c(v_files_1_1_QC_reads, v_files_1_1_QC_peaks, v_files_1_2_DA, v_files_1_3_enrich) + +v_files %>% .[!. %in% v_files_2] + +> v_files %>% .[!. %in% v_files_2] +[1] "../../docs/examples/png/all__1000__hmg4_vs_ctl__venn_up_and_down.png" +[2] "../../docs/examples/png/all__down__1000__hmg4_vs_ctl__venn_up_or_down.png" +[3] "../../docs/examples/png/all__up__1000__hmg4_vs_ctl__venn_up_or_down.png" +[4] "../../docs/examples/png/ctl_1__saturation_curve.png" +[5] "../../docs/examples/png/hmg4_vs_spt16__ATAC_volcano__no_rtr.png" +[6] "../../docs/examples/png/hmg4_vs_spt16__ATAC_volcano.png" +[7] "../../docs/examples/png/mRNA_volcano__no_gtr.png" +[8] "../../docs/examples/png/mRNA_volcano__with_gtr.png" +> + + + pca|spearman|ctl_1__reads)') + + + +grep1('(pca|spearman|\\/ctl_1__(average|reads|insert))') + +v_files_1_QC_reads = grep('(pca|spearman|\\/ctl_1__(average|reads|insert))', + v_files, value = T), + + + [2] "../../docs/examples/png/ctl_1__reads_coverage.png" + [3] "../../docs/examples/png/ctl_1__peaks_coverage.png" + [4] "../../docs/examples/png/ctl_1__reads_coverage.png" + [5] "../../docs/examples/png/ctl_1__saturation_curve.png" + [6] "../../docs/examples/png/pca_top5000_without_control_pca.png" + [7] "../../docs/examples/png/spearman_correlation_heatmap_without_outliers_without_control_cor.png" + [8] "../../docs/examples/png/ATAC__peaks__grouped__annotation_barplot.png" + [9] "../../docs/examples/png/ATAC__peaks__grouped__average_profile.png" +[10] "../../docs/examples/png/ATAC__peaks__grouped__distance_to_TSS.png" +[11] "../../docs/examples/png/hmg4_vs_ctl__ATAC_FDR_by_PA.png" +[12] "../../docs/examples/png/hmg4_vs_ctl__ATAC_other_plots-1.png" +[13] "../../docs/examples/png/hmg4_vs_ctl__ATAC_other_plots-2.png" +[14] "../../docs/examples/png/hmg4_vs_ctl__ATAC_other_plots-3.png" +[15] "../../docs/examples/png/hmg4_vs_ctl__ATAC_PCA_1_2.png" +[16] "../../docs/examples/png/hmg4_vs_ctl__ATAC_PCA_3_4.png" +[17] "../../docs/examples/png/hmg4_vs_ctl__ATAC_volcano.png" +[18] "../../docs/examples/png/hmg4_vs_ctl__mRNA_other_plots-1.png" +[19] "../../docs/examples/png/hmg4_vs_ctl__mRNA_other_plots-2.png" +[20] "../../docs/examples/png/hmg4_vs_ctl__mRNA_PCA_1_2.png" +[21] "../../docs/examples/png/hmg4_vs_ctl__mRNA_PCA_3_4.png" +[22] "../../docs/examples/png/hmg4_vs_ctl__mRNA_volcano.png" +[23] "../../docs/examples/png/all__1000__hmg4_vs_ctl__venn_up_and_down.png" +[24] "../../docs/examples/png/all__down__1000__hmg4_vs_ctl__venn_up_or_down.png" +[25] "../../docs/examples/png/all__up__1000__hmg4_vs_ctl__venn_up_or_down.png" +[26] "../../docs/examples/png/ATAC__all__down__1000__hmg4_vs_ctl__CHIP__barplot.png" +[27] "../../docs/examples/png/ATAC__all__down__1000__hmg4_vs_ctl__chrom_states__barplot.png" +[28] "../../docs/examples/png/ATAC__all__down__1000__hmg4_vs_ctl__func_anno_BP__barplot.png" +[29] "../../docs/examples/png/ATAC__all__down__1000__hmg4_vs_ctl__func_anno_KEGG__barplot.png" +[30] "../../docs/examples/png/ATAC__all__down__1000__hmg4_vs_ctl__genes_self__barplot.png" +[31] "../../docs/examples/png/ATAC__all__down__1000__hmg4_vs_ctl__peaks_self__barplot.png" +[32] "../../docs/examples/png/ATAC__all__down__1000__hmg4_vs_spt16__motifs__barplot.png" +[33] "../../docs/examples/png/ATAC__all__1000__all__CHIP__heatmap.png" +[34] "../../docs/examples/png/ATAC__all__1000__all__chrom_states__heatmap.png" +[35] "../../docs/examples/png/ATAC__all__1000__all__func_anno_BP__heatmap.png" +[36] "../../docs/examples/png/ATAC__all__1000__all__func_anno_KEGG__heatmap.png" +[37] "../../docs/examples/png/ATAC__all__1000__all__genes_self__heatmap.png" +[38] "../../docs/examples/png/ATAC__all__1000__all__motifs__heatmap.png" +[39] "../../docs/examples/png/ATAC__all__1000__all__peaks_self__heatmap.png" +>' + + + +v_files = + +list.files('../../docs/examples/png', full.names = T) +list.files('../../docs/examples/png', full.names = T) + + + v_files = list.files('../../docs/examples/png', full.names = T) +v_files_QC_reads = c( + grep('\\/ctl_1__', v_files, value = T), + grep('without_control_pca', v_files, value = T), + grep('spearman_correlation_heatmap', v_files, value = T) +) + v_files_1 = c( grep('\\/ctl_1__', v_files, value = T), grep('without_control_pca', v_files, value = T), From 78327546b43761deec1936a586af86f6adf5d0f6 Mon Sep 17 00:00:00 2001 From: Jerome Salignon Date: Mon, 8 Apr 2024 12:12:07 +0200 Subject: [PATCH 03/27] adding figures to show all Cactus outputs --- case_study/4__making_figures.R | 161 +++++++++++++++++++++++++++++---- 1 file changed, 145 insertions(+), 16 deletions(-) diff --git a/case_study/4__making_figures.R b/case_study/4__making_figures.R index 7e9f633..c10e0a1 100644 --- a/case_study/4__making_figures.R +++ b/case_study/4__making_figures.R @@ -141,6 +141,151 @@ png_to_gg <- function(png_file, margin = 20) { margin(t = margin, r = margin, b = margin, l = margin, unit = "pt")) } +grep1 <- function(x) grep(x, v_png_files, value = T) + +v_png_files = c(list.files('../../docs/examples/png', full.names = T), + list.files('../../docs/examples/xlsx_png', full.names = T)) + +v_files_1_QC_reads = grep1('\\/(pca|spearman|ctl_1__(average|reads|insert))') +v_files_1_QC_peaks = grep1('(\\/(ctl_1__peaks|ATAC__peaks)|saturation_curve)') +v_files_1_QC = c(v_files_1_QC_reads, v_files_1_QC_peaks) +v_files_2_DA_fig = grep1('\\/hmg4_vs_ctl__') %>% c(grep1('venn')) +# v_files_2_DA_fig = grep1('\\/hmg4_vs_ctl__') %>% +# grep('mRNA_(PCA|volcano)', ., invert = T, value = T) %>% c(grep1('venn')) +v_files_2_DA_tab = c(grep1('xlsx_png\\/ATAC'), grep1('xlsx_png\\/mRNA'), + grep1('xlsx_png\\/res')) +v_files_2_DA = c(v_files_2_DA_fig, v_files_2_DA_tab) +v_files_3_EN_fig = c(grep1('__barplot\\.'), grep1('__heatmap\\.')) +v_files_3_EN_tab = grep1('xlsx_png\\/(CHIP|motifs|func|peaks|genes|chrom)') +v_files_3_EN = c(v_files_3_EN_fig, v_files_3_EN_tab) + +length(v_files_1_QC_reads) +length(v_files_1_QC_peaks) +length(v_files_1_QC) +length(v_files_2_DA_fig) +length(v_files_2_DA_tab) +length(v_files_3_EN_fig) +length(v_files_3_EN_tab) + +plot_nrow_by_ncol <- function(v_files, nrow = 4, ncol = 3, v_labels = 'auto'){ + lp = lapply(v_files, png_to_gg) + p1 = ggpubr::ggarrange(plotlist = lp, nrow = nrow, ncol = ncol, + labels = v_labels) + return(p1) +} + +plot_figures <- function(v_files, nrow = 4, ncol = 3, v_labels = 'auto'){ + plot_nrow_by_ncol(v_files, nrow = nrow, ncol = ncol, v_labels = v_labels) +} + +plot_tables <- function(v_files, nrow = 6, ncol = 2, v_labels = v_labels){ + plot_nrow_by_ncol(v_files, nrow = nrow, ncol = ncol, v_labels = v_labels) +} + +# plot_1_by_3 <- function(v_files_tab, v_files_fig, nrow = 5, ncol = 1){ +# len = length(v_files_2_DA_fig) +# v_labels = letters[len:(len + length(v_files_2_DA_tab))] +# plot_nrow_by_ncol(v_files_tab, nrow = nrow, ncol = ncol, +# v_labels = v_labels) +# } + +p_QC = plot_4_by_3(v_files_1_QC) +pdf('Figure_S3.pdf', width = 7, height = 10) + print(p_QC) +dev.off() + +length(v_files_2_DA_fig) # 17 +length(v_files_2_DA_fig) - 12 # 5 +length(v_files_2_DA_tab) # 7 +p_DA_1 = plot_figures(v_files_2_DA_fig[1:12]) +p_DA_2_1 = plot_figures(v_files_2_DA_fig[13:17], nrow = 2, + v_labels = letters[12 + (1:6)]) +p_DA_2_2 = plot_tables(v_files_2_DA_tab, v_labels = letters[12 + (6:13)], + nrow = 4) +p_DA_2 = ggpubr::ggarrange(p_DA_2_1, p_DA_2_2, nrow = 2, ncol = 1) +pdf('Figure_S4.pdf', width = 7, height = 10) + print(p_DA_1) + print(p_DA_2) +dev.off() + + +length(v_files_3_EN_fig) # 14 +length(v_files_3_EN_fig) - 12 # 2 +length(v_files_3_EN_tab) # 7 +p_EN_1 = plot_figures(v_files_3_EN_fig[1:12]) +p_EN_2_1 = plot_figures(v_files_3_EN_fig[13:14], nrow = 1, + v_labels = letters[12 + (1:2)]) +p_EN_2_2 = plot_tables(v_files_3_EN_tab, + v_labels = letters[12 + (3:10)], nrow = 5) +p_EN_2 = ggpubr::ggarrange(p_EN_2_1, p_EN_2_2, nrow = 2, ncol = 1, + heights = c(0.25, 0.75) ) +pdf('Figure_S5.pdf', width = 7, height = 10) + print(p_EN_1) + print(p_EN_2) +dev.off() + + + +v_files_3_EN_fig +v_files_3_EN_tab +plot_4_by_3(v_files_1_QC) + + + +plot_1_by_3 <- function(v_files_tab, v_labels, nrow = 1, ncol = 3){ + + +plot_1_by_3 <- function(v_files_tab, v_labels, nrow = 1, ncol = 3){ + lp = lapply(v_files_tab, png_to_gg) + p1 = ggpubr::ggarrange(plotlist = lp, nrow = nrow, ncol = ncol, + labels = v_labels) + return(p1) +} + +p1 = plot_4_by_3(v_files_1_1_QC) +p2 = plot_4_by_3(v_files_1_1_QC) + + +v_files_1_2_DA %>% length +v_files_1_3_EN %>% length + + +p1 = plot_4_by_3(v_files_1_1_QC) +p2 = plot_4_by_3(v_files_1_2_DA) +p3 = plot_4_by_3(v_files_1_3_EN) + + + +list.files('../../docs/examples/png') +list.files('../../docs/examples/') + + +v_files_1 = c( + grep('\\/ctl_1__', v_files, value = T), + grep('without_control_pca', v_files, value = T), + grep('spearman_correlation_heatmap', v_files, value = T), + grep('ATAC__peaks__grouped', v_files, value = T), + grep('hmg4_vs_ctl__ATAC_', v_files, value = T), + grep('hmg4_vs_ctl__mRNA_', v_files, value = T), + # grep('mRNA_volcano__', v_files, value = T), + grep('venn_up', v_files, value = T), + grep('__barplot', v_files, value = T), + grep('__heatmap\\.', v_files, value = T) + ) + + + +v_files_1_DA_mrna_ = grep1('\\/hmg4_vs_ctl__mRNA') + +plot_4_by_3 <- function(v_files_1){ + lp = lapply(v_files_1, png_to_gg) + p1 = ggpubr::ggarrange(plotlist = lp, nrow = 4, ncol = 3, + labels = 'auto') + return(p1) +} + + + plot_by_chunk <- function(lp, nrow, ncol){ nplots = length(lp) npages = ceiling(nplots / (nrow * ncol)) @@ -158,7 +303,6 @@ plot_by_chunk <- function(lp, nrow, ncol){ } -grep1 <- function(x) grep(x, v_files, value = T) @@ -181,21 +325,6 @@ plot_4_by_3 <- function(v_files_1){ labels = v_panels) -v_files_1_1_QC_reads = grep1('\\/(pca|spearman|ctl_1__(average|reads|insert))') -v_files_1_1_QC_peaks = grep1('(\\/(ctl_1__peaks|ATAC__peaks)|saturation_curve)') -v_files_1_1_QC = c(v_files_1_1_QC_reads, v_files_1_1_QC_peaks) -v_files_1_2_DA = grep1('\\/hmg4_vs_ctl__') %>% - grep('mRNA_(PCA|volcano)', ., invert = T, value = T) %>% c(grep1('venn')) -v_files_1_3_EN = grep1('__(barplot|heatmap)\\.') - -v_files_1_2_DA %>% length -v_files_1_3_EN %>% length - - -p1 = plot_4_by_3(v_files_1_1_QC) -p2 = plot_4_by_3(v_files_1_2_DA) -p3 = plot_4_by_3(v_files_1_3_EN) - grep('mRNA_(PCA|volcano)', grep1('\\/hmg4_vs_ctl__'), invert = T, value = T) From b0ac21f7902ea6c8b2b6f149b5e383e05b0c4f63 Mon Sep 17 00:00:00 2001 From: Jerome Salignon Date: Mon, 8 Apr 2024 12:14:25 +0200 Subject: [PATCH 04/27] adding figures to show all Cactus outputs --- case_study/4__making_figures.R | 268 +-------------------------------- 1 file changed, 5 insertions(+), 263 deletions(-) diff --git a/case_study/4__making_figures.R b/case_study/4__making_figures.R index c10e0a1..8f7c05f 100644 --- a/case_study/4__making_figures.R +++ b/case_study/4__making_figures.R @@ -24,6 +24,10 @@ update_text_size <- function(px) { ) } + + + + # Fig 5: peak_self heatmaps p1 = readRDS1('mRNA__Null__1.3__ctl__peaks_self__heatmap__worm.rds') + ggtitle('worm, DEGs') @@ -122,15 +126,9 @@ openxlsx::write.xlsx(list(up = dt_up, down = dt_dw), 'Table_S1.xlsx') -homedir=~ -eval homedir=$homedir -cactus_dir=$homedir/workspace/cactus -cd $cactus_dir/case_study/figures -# ~/workspace/cactus/docs/examples/png -# /raid/jersal/workspace/cactus/docs/examples/png -library(ggplot2) +# Supplementary Figures showing all outputs from Cactus png_to_gg <- function(png_file, margin = 20) { ggplot2::ggplot() + ggplot2::annotation_custom( @@ -150,8 +148,6 @@ v_files_1_QC_reads = grep1('\\/(pca|spearman|ctl_1__(average|reads|insert))') v_files_1_QC_peaks = grep1('(\\/(ctl_1__peaks|ATAC__peaks)|saturation_curve)') v_files_1_QC = c(v_files_1_QC_reads, v_files_1_QC_peaks) v_files_2_DA_fig = grep1('\\/hmg4_vs_ctl__') %>% c(grep1('venn')) -# v_files_2_DA_fig = grep1('\\/hmg4_vs_ctl__') %>% -# grep('mRNA_(PCA|volcano)', ., invert = T, value = T) %>% c(grep1('venn')) v_files_2_DA_tab = c(grep1('xlsx_png\\/ATAC'), grep1('xlsx_png\\/mRNA'), grep1('xlsx_png\\/res')) v_files_2_DA = c(v_files_2_DA_fig, v_files_2_DA_tab) @@ -159,14 +155,6 @@ v_files_3_EN_fig = c(grep1('__barplot\\.'), grep1('__heatmap\\.')) v_files_3_EN_tab = grep1('xlsx_png\\/(CHIP|motifs|func|peaks|genes|chrom)') v_files_3_EN = c(v_files_3_EN_fig, v_files_3_EN_tab) -length(v_files_1_QC_reads) -length(v_files_1_QC_peaks) -length(v_files_1_QC) -length(v_files_2_DA_fig) -length(v_files_2_DA_tab) -length(v_files_3_EN_fig) -length(v_files_3_EN_tab) - plot_nrow_by_ncol <- function(v_files, nrow = 4, ncol = 3, v_labels = 'auto'){ lp = lapply(v_files, png_to_gg) p1 = ggpubr::ggarrange(plotlist = lp, nrow = nrow, ncol = ncol, @@ -182,13 +170,6 @@ plot_tables <- function(v_files, nrow = 6, ncol = 2, v_labels = v_labels){ plot_nrow_by_ncol(v_files, nrow = nrow, ncol = ncol, v_labels = v_labels) } -# plot_1_by_3 <- function(v_files_tab, v_files_fig, nrow = 5, ncol = 1){ -# len = length(v_files_2_DA_fig) -# v_labels = letters[len:(len + length(v_files_2_DA_tab))] -# plot_nrow_by_ncol(v_files_tab, nrow = nrow, ncol = ncol, -# v_labels = v_labels) -# } - p_QC = plot_4_by_3(v_files_1_QC) pdf('Figure_S3.pdf', width = 7, height = 10) print(p_QC) @@ -208,7 +189,6 @@ pdf('Figure_S4.pdf', width = 7, height = 10) print(p_DA_2) dev.off() - length(v_files_3_EN_fig) # 14 length(v_files_3_EN_fig) - 12 # 2 length(v_files_3_EN_tab) # 7 @@ -226,241 +206,3 @@ dev.off() -v_files_3_EN_fig -v_files_3_EN_tab -plot_4_by_3(v_files_1_QC) - - - -plot_1_by_3 <- function(v_files_tab, v_labels, nrow = 1, ncol = 3){ - - -plot_1_by_3 <- function(v_files_tab, v_labels, nrow = 1, ncol = 3){ - lp = lapply(v_files_tab, png_to_gg) - p1 = ggpubr::ggarrange(plotlist = lp, nrow = nrow, ncol = ncol, - labels = v_labels) - return(p1) -} - -p1 = plot_4_by_3(v_files_1_1_QC) -p2 = plot_4_by_3(v_files_1_1_QC) - - -v_files_1_2_DA %>% length -v_files_1_3_EN %>% length - - -p1 = plot_4_by_3(v_files_1_1_QC) -p2 = plot_4_by_3(v_files_1_2_DA) -p3 = plot_4_by_3(v_files_1_3_EN) - - - -list.files('../../docs/examples/png') -list.files('../../docs/examples/') - - -v_files_1 = c( - grep('\\/ctl_1__', v_files, value = T), - grep('without_control_pca', v_files, value = T), - grep('spearman_correlation_heatmap', v_files, value = T), - grep('ATAC__peaks__grouped', v_files, value = T), - grep('hmg4_vs_ctl__ATAC_', v_files, value = T), - grep('hmg4_vs_ctl__mRNA_', v_files, value = T), - # grep('mRNA_volcano__', v_files, value = T), - grep('venn_up', v_files, value = T), - grep('__barplot', v_files, value = T), - grep('__heatmap\\.', v_files, value = T) - ) - - - -v_files_1_DA_mrna_ = grep1('\\/hmg4_vs_ctl__mRNA') - -plot_4_by_3 <- function(v_files_1){ - lp = lapply(v_files_1, png_to_gg) - p1 = ggpubr::ggarrange(plotlist = lp, nrow = 4, ncol = 3, - labels = 'auto') - return(p1) -} - - - -plot_by_chunk <- function(lp, nrow, ncol){ - nplots = length(lp) - npages = ceiling(nplots / (nrow * ncol)) - lp1 = vector('list', length = npages) - - for(page in 1:npages){ - cur_panel = 1 + (page - 1) * 12 - v_panels = cur_panel:min(cur_panel + 11, nplots) - p1 = ggpubr::ggarrange(plotlist = lp[v_panels], nrow = 4, ncol = 3, - labels = v_panels) - lp1[[page]] = p1 - } - - return(lp1) -} - - - - - - -rep('__barplot', v_files, value = T), - grep('__heatmap\\.' - -v_files_1_DA_mrna_ = grep1('\\/hmg4_vs_ctl__mRNA') - -plot_4_by_3 <- function(v_files_1){ - lp = lapply(v_files_1, png_to_gg) - p1 = ggpubr::ggarrange(plotlist = lp, nrow = 4, ncol = 3, - labels = 'auto') - return(p1) -} - - - - = ggpubr::ggarrange(plotlist = lp[v_panels], nrow = 4, ncol = 3, - labels = v_panels) - - - - -grep('mRNA_(PCA|volcano)', grep1('\\/hmg4_vs_ctl__'), invert = T, value = T) - - -v_files_1_1_QC = c(v_files_1_1_QC_reads, v_files_1_1_QC_peaks) - - -_1 - -grep1('__(barplot|heatmap)\\.') - - -v_files_2 = c(v_files_1_1_QC_reads, v_files_1_1_QC_peaks, v_files_1_2_DA, v_files_1_3_enrich) - -v_files %>% .[!. %in% v_files_2] - -> v_files %>% .[!. %in% v_files_2] -[1] "../../docs/examples/png/all__1000__hmg4_vs_ctl__venn_up_and_down.png" -[2] "../../docs/examples/png/all__down__1000__hmg4_vs_ctl__venn_up_or_down.png" -[3] "../../docs/examples/png/all__up__1000__hmg4_vs_ctl__venn_up_or_down.png" -[4] "../../docs/examples/png/ctl_1__saturation_curve.png" -[5] "../../docs/examples/png/hmg4_vs_spt16__ATAC_volcano__no_rtr.png" -[6] "../../docs/examples/png/hmg4_vs_spt16__ATAC_volcano.png" -[7] "../../docs/examples/png/mRNA_volcano__no_gtr.png" -[8] "../../docs/examples/png/mRNA_volcano__with_gtr.png" -> - - - pca|spearman|ctl_1__reads)') - - - -grep1('(pca|spearman|\\/ctl_1__(average|reads|insert))') - -v_files_1_QC_reads = grep('(pca|spearman|\\/ctl_1__(average|reads|insert))', - v_files, value = T), - - - [2] "../../docs/examples/png/ctl_1__reads_coverage.png" - [3] "../../docs/examples/png/ctl_1__peaks_coverage.png" - [4] "../../docs/examples/png/ctl_1__reads_coverage.png" - [5] "../../docs/examples/png/ctl_1__saturation_curve.png" - [6] "../../docs/examples/png/pca_top5000_without_control_pca.png" - [7] "../../docs/examples/png/spearman_correlation_heatmap_without_outliers_without_control_cor.png" - [8] "../../docs/examples/png/ATAC__peaks__grouped__annotation_barplot.png" - [9] "../../docs/examples/png/ATAC__peaks__grouped__average_profile.png" -[10] "../../docs/examples/png/ATAC__peaks__grouped__distance_to_TSS.png" -[11] "../../docs/examples/png/hmg4_vs_ctl__ATAC_FDR_by_PA.png" -[12] "../../docs/examples/png/hmg4_vs_ctl__ATAC_other_plots-1.png" -[13] "../../docs/examples/png/hmg4_vs_ctl__ATAC_other_plots-2.png" -[14] "../../docs/examples/png/hmg4_vs_ctl__ATAC_other_plots-3.png" -[15] "../../docs/examples/png/hmg4_vs_ctl__ATAC_PCA_1_2.png" -[16] "../../docs/examples/png/hmg4_vs_ctl__ATAC_PCA_3_4.png" -[17] "../../docs/examples/png/hmg4_vs_ctl__ATAC_volcano.png" -[18] "../../docs/examples/png/hmg4_vs_ctl__mRNA_other_plots-1.png" -[19] "../../docs/examples/png/hmg4_vs_ctl__mRNA_other_plots-2.png" -[20] "../../docs/examples/png/hmg4_vs_ctl__mRNA_PCA_1_2.png" -[21] "../../docs/examples/png/hmg4_vs_ctl__mRNA_PCA_3_4.png" -[22] "../../docs/examples/png/hmg4_vs_ctl__mRNA_volcano.png" -[23] "../../docs/examples/png/all__1000__hmg4_vs_ctl__venn_up_and_down.png" -[24] "../../docs/examples/png/all__down__1000__hmg4_vs_ctl__venn_up_or_down.png" -[25] "../../docs/examples/png/all__up__1000__hmg4_vs_ctl__venn_up_or_down.png" -[26] "../../docs/examples/png/ATAC__all__down__1000__hmg4_vs_ctl__CHIP__barplot.png" -[27] "../../docs/examples/png/ATAC__all__down__1000__hmg4_vs_ctl__chrom_states__barplot.png" -[28] "../../docs/examples/png/ATAC__all__down__1000__hmg4_vs_ctl__func_anno_BP__barplot.png" -[29] "../../docs/examples/png/ATAC__all__down__1000__hmg4_vs_ctl__func_anno_KEGG__barplot.png" -[30] "../../docs/examples/png/ATAC__all__down__1000__hmg4_vs_ctl__genes_self__barplot.png" -[31] "../../docs/examples/png/ATAC__all__down__1000__hmg4_vs_ctl__peaks_self__barplot.png" -[32] "../../docs/examples/png/ATAC__all__down__1000__hmg4_vs_spt16__motifs__barplot.png" -[33] "../../docs/examples/png/ATAC__all__1000__all__CHIP__heatmap.png" -[34] "../../docs/examples/png/ATAC__all__1000__all__chrom_states__heatmap.png" -[35] "../../docs/examples/png/ATAC__all__1000__all__func_anno_BP__heatmap.png" -[36] "../../docs/examples/png/ATAC__all__1000__all__func_anno_KEGG__heatmap.png" -[37] "../../docs/examples/png/ATAC__all__1000__all__genes_self__heatmap.png" -[38] "../../docs/examples/png/ATAC__all__1000__all__motifs__heatmap.png" -[39] "../../docs/examples/png/ATAC__all__1000__all__peaks_self__heatmap.png" ->' - - - -v_files = - -list.files('../../docs/examples/png', full.names = T) -list.files('../../docs/examples/png', full.names = T) - - - -v_files = list.files('../../docs/examples/png', full.names = T) - -v_files_QC_reads = c( - grep('\\/ctl_1__', v_files, value = T), - grep('without_control_pca', v_files, value = T), - grep('spearman_correlation_heatmap', v_files, value = T) -) - -v_files_1 = c( - grep('\\/ctl_1__', v_files, value = T), - grep('without_control_pca', v_files, value = T), - grep('spearman_correlation_heatmap', v_files, value = T), - grep('ATAC__peaks__grouped', v_files, value = T), - grep('hmg4_vs_ctl__ATAC_', v_files, value = T), - grep('hmg4_vs_ctl__mRNA_', v_files, value = T), - # grep('mRNA_volcano__', v_files, value = T), - grep('venn_up', v_files, value = T), - grep('__barplot', v_files, value = T), - grep('__heatmap\\.', v_files, value = T) - ) -v_files %>% .[!. %in% v_files_1] -# [1] "../../docs/examples/png/hmg4_vs_spt16__ATAC_volcano__no_rtr.png" -# [2] "../../docs/examples/png/hmg4_vs_spt16__ATAC_volcano.png" -# [3] "../../docs/examples/png/mRNA_volcano__no_gtr.png" -# [4] "../../docs/examples/png/mRNA_volcano__with_gtr.png" - -v_files_1 %>% .[which(duplicated(.))] # character(0) - -v_files_1 %<>% .[. != '../../docs/examples/png/hmg4_vs_ctl__ATAC_other_plots.png'] -v_files_1 %<>% .[. != '../../docs/examples/png/hmg4_vs_ctl__mRNA_other_plots.png'] - -lp = lapply(v_files_1, png_to_gg) - -lp1 = plot_by_chunk(lp, 4, 3) - -pdf('Sup_fig_test.pdf', width = 7, height = 10) - print(lp1) -dev.off() - - - - - -# lp = lapply(v_files_1, png_to_gg) -# p1 = ggpubr::ggarrange(plotlist = lp, nrow = 4, ncol = 3, -# labels = 'auto') - -# pdf('Sup_fig_test.pdf', width = 7, height = 10) -# print(p1) -# dev.off() - From 250afb6174c3e976ec9eda72da480732daf8a938 Mon Sep 17 00:00:00 2001 From: Jerome Salignon Date: Tue, 9 Apr 2024 09:44:09 +0200 Subject: [PATCH 05/27] adding figures to show all Cactus outputs; fixing a bug in the main script: bigwig files were not saved --- case_study/4__making_figures.R | 77 +++++++++++++++++++------------- docs/util/get_figure_examples.sh | 13 +++++- main.nf | 2 +- 3 files changed, 58 insertions(+), 34 deletions(-) diff --git a/case_study/4__making_figures.R b/case_study/4__making_figures.R index 8f7c05f..cf813dc 100644 --- a/case_study/4__making_figures.R +++ b/case_study/4__making_figures.R @@ -126,8 +126,6 @@ openxlsx::write.xlsx(list(up = dt_up, down = dt_dw), 'Table_S1.xlsx') - - # Supplementary Figures showing all outputs from Cactus png_to_gg <- function(png_file, margin = 20) { @@ -141,22 +139,9 @@ png_to_gg <- function(png_file, margin = 20) { grep1 <- function(x) grep(x, v_png_files, value = T) -v_png_files = c(list.files('../../docs/examples/png', full.names = T), - list.files('../../docs/examples/xlsx_png', full.names = T)) - -v_files_1_QC_reads = grep1('\\/(pca|spearman|ctl_1__(average|reads|insert))') -v_files_1_QC_peaks = grep1('(\\/(ctl_1__peaks|ATAC__peaks)|saturation_curve)') -v_files_1_QC = c(v_files_1_QC_reads, v_files_1_QC_peaks) -v_files_2_DA_fig = grep1('\\/hmg4_vs_ctl__') %>% c(grep1('venn')) -v_files_2_DA_tab = c(grep1('xlsx_png\\/ATAC'), grep1('xlsx_png\\/mRNA'), - grep1('xlsx_png\\/res')) -v_files_2_DA = c(v_files_2_DA_fig, v_files_2_DA_tab) -v_files_3_EN_fig = c(grep1('__barplot\\.'), grep1('__heatmap\\.')) -v_files_3_EN_tab = grep1('xlsx_png\\/(CHIP|motifs|func|peaks|genes|chrom)') -v_files_3_EN = c(v_files_3_EN_fig, v_files_3_EN_tab) - -plot_nrow_by_ncol <- function(v_files, nrow = 4, ncol = 3, v_labels = 'auto'){ - lp = lapply(v_files, png_to_gg) +plot_nrow_by_ncol <- function(v_files, nrow = 4, ncol = 3, v_labels = 'auto', + margin = 10){ + lp = lapply(v_files, png_to_gg, margin = margin) p1 = ggpubr::ggarrange(plotlist = lp, nrow = nrow, ncol = ncol, labels = v_labels) return(p1) @@ -166,29 +151,49 @@ plot_figures <- function(v_files, nrow = 4, ncol = 3, v_labels = 'auto'){ plot_nrow_by_ncol(v_files, nrow = nrow, ncol = ncol, v_labels = v_labels) } -plot_tables <- function(v_files, nrow = 6, ncol = 2, v_labels = v_labels){ - plot_nrow_by_ncol(v_files, nrow = nrow, ncol = ncol, v_labels = v_labels) +plot_tables <- function(v_files, nrow = 6, ncol = 2, v_labels = v_labels, + margin = 15){ + plot_nrow_by_ncol(v_files, nrow = nrow, ncol = ncol, v_labels = v_labels, + margin = margin) } -p_QC = plot_4_by_3(v_files_1_QC) -pdf('Figure_S3.pdf', width = 7, height = 10) +v_png_files = c(list.files('../../docs/examples/png', full.names = T), + list.files('../../docs/examples/xlsx_png', full.names = T)) + +v_files_1_QC_reads = grep1('\\/(pca|spearman|ctl_1__(reads|insert))') +v_files_1_QC_peaks = grep1('(\\/(ctl_1__(peaks|average)|ATAC__peaks)|saturation_curve)') +v_files_1_QC = c(v_files_1_QC_reads, v_files_1_QC_peaks) +p_QC = plot_figures(v_files_1_QC) +pdf('Figure_S2.pdf', width = 7, height = 10) print(p_QC) dev.off() -length(v_files_2_DA_fig) # 17 -length(v_files_2_DA_fig) - 12 # 5 + +v_files_2_DA_fig = grep1('\\/hmg4_vs_ctl__') %>% c(grep1('venn')) +v_files_2_DA_fig %<>% .[. != '../../docs/examples/png/hmg4_vs_ctl__ATAC_other_plots.png'] +v_files_2_DA_fig %<>% .[. != '../../docs/examples/png/hmg4_vs_ctl__mRNA_other_plots.png'] +v_files_2_DA_fig %<>% sort %>% rev +v_files_2_DA_tab = c(grep1('xlsx_png\\/ATAC'), grep1('xlsx_png\\/mRNA'), + grep1('xlsx_png\\/res')) +length(v_files_2_DA_fig) # 15 +length(v_files_2_DA_fig) - 12 # 3 length(v_files_2_DA_tab) # 7 +length(v_files_2_DA_tab) + length(v_files_2_DA_fig) - 12 # 10 p_DA_1 = plot_figures(v_files_2_DA_fig[1:12]) -p_DA_2_1 = plot_figures(v_files_2_DA_fig[13:17], nrow = 2, - v_labels = letters[12 + (1:6)]) -p_DA_2_2 = plot_tables(v_files_2_DA_tab, v_labels = letters[12 + (6:13)], - nrow = 4) -p_DA_2 = ggpubr::ggarrange(p_DA_2_1, p_DA_2_2, nrow = 2, ncol = 1) -pdf('Figure_S4.pdf', width = 7, height = 10) +p_DA_2_1 = plot_figures(v_files_2_DA_fig[13:15], nrow = 1, + v_labels = letters[12 + (1:3)]) +p_DA_2_2 = plot_tables(v_files_2_DA_tab, v_labels = letters[12 + (4:10)], + nrow = 5) +p_DA_2 = ggpubr::ggarrange(p_DA_2_1, p_DA_2_2, nrow = 2, ncol = 1, + heights = c(0.25, 0.75) ) +pdf('Figure_S3.pdf', width = 7, height = 10) print(p_DA_1) print(p_DA_2) dev.off() + +v_files_3_EN_fig = c(grep1('__barplot\\.'), grep1('__heatmap\\.')) +v_files_3_EN_tab = grep1('xlsx_png\\/(CHIP|motifs|func|peaks|genes|chrom)') length(v_files_3_EN_fig) # 14 length(v_files_3_EN_fig) - 12 # 2 length(v_files_3_EN_tab) # 7 @@ -199,10 +204,20 @@ p_EN_2_2 = plot_tables(v_files_3_EN_tab, v_labels = letters[12 + (3:10)], nrow = 5) p_EN_2 = ggpubr::ggarrange(p_EN_2_1, p_EN_2_2, nrow = 2, ncol = 1, heights = c(0.25, 0.75) ) -pdf('Figure_S5.pdf', width = 7, height = 10) +pdf('Figure_S4.pdf', width = 7, height = 10) print(p_EN_1) print(p_EN_2) dev.off() +# +remotes::install_github(repo = "poisonalien/trackplot") +library(trackplot) + +#Path to bigWig files +bigWigs = c("H1_Oct4.bw", "H1_Nanog.bw", "H1_k4me3.bw", + "H1_k4me1.bw", "H1_k27ac.bw", "H1_H2az.bw", "H1_Ctcf.bw") + +#Make a table of bigWigs along with ref genome build +bigWigs = read_coldata(bws = bigWigs, build = "hg19") diff --git a/docs/util/get_figure_examples.sh b/docs/util/get_figure_examples.sh index e2fd7d1..3707636 100644 --- a/docs/util/get_figure_examples.sh +++ b/docs/util/get_figure_examples.sh @@ -13,7 +13,12 @@ figshare_version=v4 tools_manager=singularity species=worm ; cd $test_dir/$tools_manager/$species -nextflow run jsalignon/cactus -r hotfix/0.8.1 -profile $tools_manager --executor_local_cpus $cpu_nb --executor_local_memory $memory_size --references_dir $cactus_dir/references/$figshare_version -params-file parameters/full_test.yml --split__threshold_values [1000] --res_dir 'results/almost_full_test' +# nextflow run jsalignon/cactus -r hotfix/0.8.1 -profile $tools_manager --executor_local_cpus $cpu_nb --executor_local_memory $memory_size --references_dir $cactus_dir/references/$figshare_version -params-file parameters/full_test.yml --split__threshold_values [1000] --res_dir 'results/almost_full_test' +nextflow run jsalignon/cactus -r v0.8.6 -profile $tools_manager \ + --executor_local_cpus $cpu_nb --executor_local_memory $memory_size \ + --references_dir $cactus_dir/references/$figshare_version \ + -params-file parameters/full_test.yml --split__threshold_values [1000] \ + --res_dir 'results/v0.8.6' # nextflow run jsalignon/cactus -r main -latest -profile $tools_manager --executor_local_cpus $cpu_nb --executor_local_memory $memory_size --references_dir $cactus_dir/references/$figshare_version -params-file parameters/full_test.yml --split__threshold_values [1000] --res_dir 'results/almost_full_test' # nextflow run jsalignon/cactus -r main -latest -profile $tools_manager --executor_local_cpus $cpu_nb --executor_local_memory $memory_size --references_dir $cactus_dir/references/$figshare_version -params-file parameters/no_enrich__no_rtr.yml @@ -43,7 +48,8 @@ test_dir_2="$cactus_dir/$testing_dir_name/singularity" res_worm_dir="$test_dir_2/worm/results/" res_fly_dir="$test_dir_2/fly/results/" -run_worm_dir="$res_worm_dir/almost_full_test" +# run_worm_dir="$res_worm_dir/almost_full_test" +run_worm_dir="$res_worm_dir/v0.8.6" run_worm_figure_dir="$run_worm_dir/Figures_Individual" run_worm_tables_dir="$run_worm_dir/Tables_Merged" @@ -78,6 +84,9 @@ find $run_worm_figure_dir -name "pca_top5000_without_control_pca.pdf" -exec cp " find $run_worm_figure_dir -regex ".*\(ATAC\|mRNA\)__multiQC.html" -exec cp "{}" $examples_dir_html \; +find $run_worm_figure_dir -name "hmg4_*.bw" + +find $run_worm_figure_dir -name "ATAC__all__1000__all__*.pdf" -exec cp "{}" $examples_dir_pdf \; ## Making png images from PDF diff --git a/main.nf b/main.nf index 8a951ba..18bb6f2 100644 --- a/main.nf +++ b/main.nf @@ -702,7 +702,7 @@ process ATAC_QC_reads__computing_bigwig_tracks_and_plotting_coverage { publishDir path: "${res_dir}", mode: "${pub_mode}", saveAs: { if (it.indexOf(".pdf") > 0) "Figures_Individual/1_Preprocessing/ATAC__reads__coverage/${it}" - else if (it.indexOf("_raw.bw") > 0) + else if (it.indexOf(".bw") > 0) "Processed_Data/1_Preprocessing/ATAC__reads__bigwig_raw/${it}" } From 3050f0d42cd26c8077e4d31731dcb9f3583c6de3 Mon Sep 17 00:00:00 2001 From: Jerome Salignon Date: Tue, 9 Apr 2024 09:53:28 +0200 Subject: [PATCH 06/27] empty commit --- docs/util/get_figure_examples.sh | 9 +++++++++ main.nf | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/util/get_figure_examples.sh b/docs/util/get_figure_examples.sh index 3707636..ff108c5 100644 --- a/docs/util/get_figure_examples.sh +++ b/docs/util/get_figure_examples.sh @@ -19,6 +19,13 @@ nextflow run jsalignon/cactus -r v0.8.6 -profile $tools_manager \ --references_dir $cactus_dir/references/$figshare_version \ -params-file parameters/full_test.yml --split__threshold_values [1000] \ --res_dir 'results/v0.8.6' + +nextflow run jsalignon/cactus -r origin/revisions -profile $tools_manager \ + --executor_local_cpus $cpu_nb --executor_local_memory $memory_size \ + --references_dir $cactus_dir/references/$figshare_version \ + -params-file parameters/full_test.yml --split__threshold_values [1000] \ + --res_dir 'results/v0.8.6_revisions' + # nextflow run jsalignon/cactus -r main -latest -profile $tools_manager --executor_local_cpus $cpu_nb --executor_local_memory $memory_size --references_dir $cactus_dir/references/$figshare_version -params-file parameters/full_test.yml --split__threshold_values [1000] --res_dir 'results/almost_full_test' # nextflow run jsalignon/cactus -r main -latest -profile $tools_manager --executor_local_cpus $cpu_nb --executor_local_memory $memory_size --references_dir $cactus_dir/references/$figshare_version -params-file parameters/no_enrich__no_rtr.yml @@ -28,6 +35,8 @@ nextflow run jsalignon/cactus -r v0.8.6 -profile $tools_manager \ + + ####### getting example figures homedir=~ diff --git a/main.nf b/main.nf index 18bb6f2..354aebf 100644 --- a/main.nf +++ b/main.nf @@ -703,7 +703,7 @@ process ATAC_QC_reads__computing_bigwig_tracks_and_plotting_coverage { if (it.indexOf(".pdf") > 0) "Figures_Individual/1_Preprocessing/ATAC__reads__coverage/${it}" else if (it.indexOf(".bw") > 0) - "Processed_Data/1_Preprocessing/ATAC__reads__bigwig_raw/${it}" + "Processed_Data/1_Preprocessing/ATAC__reads__bigwig/${it}" } when: @@ -732,6 +732,7 @@ process ATAC_QC_reads__computing_bigwig_tracks_and_plotting_coverage { --effectiveGenomeSize ${params.effective_genome_size} \ --outFileName ${id}.bw + plotCoverage \ --bam ${bam} \ --numberOfSamples ${params.deeptools__nb_of_1_bp_samples} \ From 65f04f6c155533859754850c758e980822482407 Mon Sep 17 00:00:00 2001 From: Jerome Salignon Date: Tue, 9 Apr 2024 21:00:43 +0200 Subject: [PATCH 07/27] working on the genome browser tracks --- case_study/2__running_the_case_study.sh | 8 +- case_study/3__getting_figure_panels.sh | 4 + case_study/4__making_figures.R | 621 +++++++++++++++++++++++- docs/util/get_figure_examples.sh | 7 +- 4 files changed, 630 insertions(+), 10 deletions(-) diff --git a/case_study/2__running_the_case_study.sh b/case_study/2__running_the_case_study.sh index a3bf397..422c029 100644 --- a/case_study/2__running_the_case_study.sh +++ b/case_study/2__running_the_case_study.sh @@ -8,14 +8,15 @@ homedir=~ eval homedir=$homedir cactus_dir=$homedir/workspace/cactus -test_dir=$cactus_dir/test_datasets +test_ds_dir=$cactus_dir/test_datasets # case_study_dir=$test_ds_dir/case_study/data case_study_dir=$test_ds_dir/application_note ## setting up variables cpu_nb=30 memory_size='300G' -cactus_version="v0.8.6" ; latest_flag='' +# cactus_version="v0.8.6" ; latest_flag='' +cactus_version="revisions" ; latest_flag='' # nextflow drop jsalignon/cactus # if needed figshare_version=v4 @@ -26,7 +27,8 @@ heatmaps_filters_motifs="c( 30, 20, 10, T, 2, 'ward.D', F )" heatmaps_params__peaks_self="c( 0.05, T, 'none', T, 50, 'UUDD', 2.5 )" common__heatmaps_ggplot="c( 12, 12, 12 )" heatmaps_ggplot__chrom_states="c( 8, 10, 7 )" -res_prefix="results/2023_11_26__" +# res_prefix="results/2023_11_26__" +res_prefix="results/2024_04_09__" ## Initialization ################# diff --git a/case_study/3__getting_figure_panels.sh b/case_study/3__getting_figure_panels.sh index d6d8f1c..f481973 100644 --- a/case_study/3__getting_figure_panels.sh +++ b/case_study/3__getting_figure_panels.sh @@ -72,6 +72,10 @@ cp $case_study_dir_human_2_pro_3/Heatmaps__chrom_states/ATAC__all__1.3__ctl__chr # Tab S1: reprogramming genes defined in Figure 6L of the Kolundzic et al. study cp $case_study_dir_human_1/Tables_Merged/2_Differential_Analysis/res_simple.xlsx $case_study_copy_dir +# Fig S2: HA-HE gene tracks +# find "$case_study_dir/worm/results/2024_04_09___worm_run_1/Processed_Data" -regex ".*\(hmg4\|ctl\).*.bw" -exec cp "{}" $case_study_copy_dir \; +find "$case_study_dir/worm/results/2024_04_09___worm_run_1/Processed_Data" -regex ".*\(hmg4\|ctl\).*.bw" -exec bash -c 'cp "$0" "${1}/$(basename "${0%.*}").bigWig"' {} "$case_study_copy_dir" \; + # converting the heavy plots to png pdftoppm -rx 300 -ry 300 -png \ diff --git a/case_study/4__making_figures.R b/case_study/4__making_figures.R index cf813dc..999f76d 100644 --- a/case_study/4__making_figures.R +++ b/case_study/4__making_figures.R @@ -210,14 +210,631 @@ pdf('Figure_S4.pdf', width = 7, height = 10) dev.off() +# Fig S2: HA-HE gene tracks + +# remotes::install_github(repo = "poisonalien/trackplot") +cd ~/install/R/github +git clone https://github.com/CRG-Barcelona/libbeato.git +git clone https://github.com/CRG-Barcelona/bwtool.git +cd libbeato/ +./configure +make +sudo make install +cd ../bwtool/ +./configure +make +sudo make install -# -remotes::install_github(repo = "poisonalien/trackplot") library(trackplot) +install.packages('Signac') + + +library(Signac) +library(GenomicRanges) + +v_bw = list.files('panels', pattern = '*.bw', full.names = T) %>% + setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bw', '', .)) + +inx3_loci = "chr10:5995156-5999243" +OrganismDb + +BigwigTrack( + region, + bigwig, + + + +v_bw = R.utils::getAbsolutePath(list.files('../../docs/examples/bw', full.names = T)) %>% + setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bw', '', .)) + + +library(EnsDb.Hsapiens.v86) + + +library(BSgenome.Celegans.UCSC.ce11) + +l_bw = list.files('../../docs/examples/bw', full.names = T) %>% + setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bw', '', .)) %>% as.list + +gr <- GRanges(seqnames = 'chr10', + ranges = IRanges(start = 5995156, end = 5999243)) # inx3 +genome(gr) <- 'ce11' + + +p1 = BigwigTrack(gr, l_bw) +p2 = AnnotationPlot(atac_small, region = gr) +p3 = CombineTracks(plotlist = list(p1, p2), heights = c(1, 1)) + +pdf('tmp.pdf', width = 7, height = 10) + print(p3) +dev.off() + +library(Seurat) +set.seed(123) # For reproducibility +# Simulate expression data: 100 genes x 10 cells +data_matrix <- matrix(rpois(1000, lambda = 1), nrow = 100, ncol = 10) + +# Assign row and column names to simulate gene names and cell IDs +rownames(data_matrix) <- paste0("Gene", seq_len(nrow(data_matrix))) +colnames(data_matrix) <- paste0("Cell", seq_len(ncol(data_matrix))) +seurat_object <- CreateSeuratObject(counts = data_matrix) +seurat_object$genome <- "ce11" + +p2 = AnnotationPlot(seurat_object, region = gr) + +gr <- GRanges(seqnames = 'X', + ranges = IRanges(start = 5995156, end = 5999243)) + +p1 = BigwigTrack(gr, l_bw) + + +#genome : "hg19" +gen<-genome(cpgIslands) +#Chromosme name : "chr7" +chr <- as.character(unique(seqnames(cpgIslands))) +#Ideogram track +itrack <- IdeogramTrack(genome = gen, chromosome = chr) + +gtrack <- GenomeAxisTrack() + + +bmt <- BiomartGeneRegionTrack(genome = "hg19", chromosome = "chr12", + start = afrom, end = ato, filter = list(with_ox_refseq_mrna = TRUE), + stacking = "dense") + + +p1 = BigwigTrack(region = 'chr10:5995156-5999243', l_bw) + + + +gr_inx3 <- GRanges(seqnames = 'chrX', + ranges = IRanges(start = 5995156, end = 5999243)) + +p1 = BigwigTrack(region = 'chr10:5995156-5999243', l_bw) + + + +gr_inx3 <- GRanges(seqnames = 'chr10', + ranges = IRanges(start = 5995156, end = 5999243)) + +p1 = BigwigTrack(region = 'chr10:5995156-5999243', l_bw) + + + + +v_bw = list.files('panels', pattern = '*.bw', full.names = T) %>% + setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bw', '', .)) +gr <- GRanges(seqnames = 'chr10', + ranges = IRanges(start = 5995156, end = 5999243)) # inx3 +genome(gr) <- 'ce11' + + + + +dTrack2 <- DataTrack(range = v_bw[1], genome = "hg19", + type = "l", chromosome = "chr19", name = "bedGraph") +p1 = plotTracks(dTrack2) + +pdf('tmp.pdf', width = 7, height = 10) + print(p3) +dev.off() + + +# BiocManager::install("Gviz") + +library(Gviz) +library(TxDb.Celegans.UCSC.ce11.ensGene) +txdb = TxDb.Celegans.UCSC.ce11.ensGene +exons = exons(txdb) + +test = transcripts(txdb) +test = genes(txdb) + +grtrack <- GeneRegionTrack(exons, genome = 'ce11', + chromosome = 'chr10', name = "foo", + transcriptAnnotation = "symbol") + +grtrack <- GeneRegionTrack(exons, genome = 'ce11', + chromosome = 'chr10', name = "foo", + transcriptAnnotation = "symbol", + start = 5995156, end = 5999243) + +df_genes = readRDS('../../references/v4/worm/genome/annotation/R/df_genes_metadata.rds') +df_genes = readRDS('../../references/v4/worm/genome/annotation/R/df_genes_transcripts.rds') + + +library(Gviz) +library(TxDb.Celegans.UCSC.ce11.ensGene) +txdb = TxDb.Celegans.UCSC.ce11.ensGene +exons = exons(txdb) + +txTr <- GeneRegionTrack(exons, chromosome = 'chr10', start = 5995156, end = 5999243) +p1 = plotTracks(txTr) + +pdf('tmp.pdf', width = 7, height = 10) + print(grtrack) +dev.off() + +genome = 'ce11' +chromosome = 'chrX' +start = 5995156 +end = 5999243 + +ensGenes <- UcscTrack(genome = genome, chromosome = chromosome, + track="Ensembl Genes", table = "ensGene", + from = start, to = end, + trackType = "GeneRegionTrack", + rstarts = "exonStarts", rends = "exonEnds", + gene = "name", symbol = "name2", + transcript = "name", strand = "strand", + fill = "#960000", name = "Ensembl Genes") + +v_bw = list.files('panels', pattern = '*.bw', full.names = T) %>% + setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bw', '', .)) +gr <- GRanges(seqnames = chromosome, + ranges = IRanges(start = start, end = end)) # inx3 + +dTrack2 <- DataTrack(range = v_bw[1], genome = genome, + type = 'l', chromosome = chromosome, name = "bigwig", + from = start, to = end) + + +pdf('tmp.pdf', width = 7, height = 10) + plotTracks(list(dTrack2, ensGenes), from = start, to = end) +dev.off() + + + + +v_bw = list.files('panels', pattern = '*.bigWig', full.names = T) %>% + setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bigWig', '', .)) +gr <- GRanges(seqnames = chromosome, + ranges = IRanges(start = start, end = end)) # inx3 + +dTrack2 <- DataTrack(range = v_bw[1], genome = genome, + type = 'l', chromosome = chromosome, name = "bigwig", + from = start, to = end) + + +dTrack2 <- DataTrack(data = v_bw[1], genome = genome, + type = 'l', chromosome = chromosome, name = "bigWig", + from = start, to = end) + + +dTrack2 <- DataTrack(data = "panels/ctl_1.bigWig") +dTrack2@data + + +dTrack2 <- DataTrack(data = "panels/ctl_1.bw", range = gr) +dTrack2@data + + +dTrack2 <- DataTrack(data = "panels/ctl_1.bigWig", range = gr) +dTrack2@data + + + +dTrack2 <- DataTrack(range = "panels/ctl_1.bw", genome = genome, + chromosome = chromosome, + from = start, to = end) +dTrack2@data +Track2@range + + + +dTrack2 <- DataTrack(range = "panels/ctl_1.bigWig") +dTrack2@data + + +# set track for ChIP-seq coverage +chipseqFile=system.file("extdata", + "wgEncodeHaibTfbsA549.chr21.bw", + package="compGenomRData") + +cov.track=DataTrack(chipseqFile,type = "l", + name="coverage") + +library(rtracklayer) + +bw_med1 <- import.bw(v_bw[1], as="GRanges") +bw_med1@seqnames@values %<>% paste0('chr', .) %>% as.factor +bw_med1@seqinfo@seqnames %<>% paste0('chr', .) +bw_med1@seqnames + +options(ucscChromosomeNames=F) +dTrack2 <- DataTrack(bw_med1, genome = genome, + chromosome = chromosome, + from = start, to = end) + +pdf('tmp.pdf', width = 7, height = 10) + plotTracks(list(dTrack2, ensGenes), from = start, to = end) +dev.off() + + + +# BiocManager::install("Gviz") +# BiocManager::install("org.Ce.eg.db") +library(ggbio) +library(org.Ce.eg.db) +orgdb = org.Ce.eg.db +p_txdb <- autoplot(orgdb, which = gr) + + +library(org.Ce.eg.db) + + region, + bigwig, + +BigwigTrack( + region, + bigwig, + + + +v_bw = list.files('../../docs/examples/bw', full.names = T) + +bigWigs = read_coldata(bws = v_bw, build = 'ce11') + + +# +v_files_2_DA_fig %<>% .[. != '../../docs/examples/png/hmg4_vs_ctl__ATAC_other_plots.png'] + #Path to bigWig files bigWigs = c("H1_Oct4.bw", "H1_Nanog.bw", "H1_k4me3.bw", "H1_k4me1.bw", "H1_k27ac.bw", "H1_H2az.bw", "H1_Ctcf.bw") #Make a table of bigWigs along with ref genome build bigWigs = read_coldata(bws = bigWigs, build = "hg19") + +inx3_loci = "chr10:5995156-5999243" +t = track_extract(colData = bigWigs, loci = inx3_loci) +p1 = track_plot(summary_list = t) + + + + + +library(ggbio) +library(org.Ce.eg.db) +v_bw = list.files('panels', pattern = '*.bw', full.names = T) %>% + setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bw', '', .)) + +gr <- GRanges(seqnames = 'chrX', + ranges = IRanges(start = 5995156, end = 5999243)) # inx3 +genome(gr) <- 'ce11' + +library(TxDb.Celegans.UCSC.ce11.ensGene) +txdb = TxDb.Celegans.UCSC.ce11.ensGene + +p1 = autoplot(txdb, which = gr) +p1 %<>% {. + theme_classic() } + +pdf('tmp.pdf', width = 7, height = 10) + print(p1) +dev.off() + + +install.packages("ggcoverage") + +library("rtracklayer") +library("graphics") +library("ggcoverage") +library("ggpattern") + +gffread -E \ + ../../references/v4/worm/genome/annotation/filtered/annotation.gff3 \ + -T -o panels/anno_worm.gtf + +dt_meta = data.table(Type = c(1:3, 1:3), + Group = c(rep('hmg4', 3), rep('ctl', 3))) +dt_meta[, SampleName := paste(Group, Type, sep = '_')] + +track.df = LoadTrackFile(track.folder = 'panels', format = "bw", + region = "X:5,995,156-5,999,243", extend = 2000, + meta.info = dt_meta) + +gtf_file = '../../references/v4/worm/genome/annotation/filtered/annotation.gff3' +gtf.gr = rtracklayer::import.gff(con = gtf_file, format = 'gff3') + +gtf_file = 'panels/anno_worm.gtf' +gtf.gr = rtracklayer::import.gff(con = gtf_file, format = 'gtf') + + + +basic.coverage = ggcoverage(data = track.df, color = "auto", plot.type = "joint",) + + +p1 = ggcoverage(data = track.df, color = "auto", + plot.type = "facet", range.position = "in", facet.y.scale = "fixed") + + geom_gene(gtf.gr=gtf.gr) + + + +ggcoverage(data = track.df, color = "auto", plot.type = "facet", + range.position = "in", facet.y.scale = "fixed") + + +ggcoverage(data = track.df, color = "auto", plot.type = "facet", + mark.region = mark.region, range.position = "in", + facet.y.scale = "fixed") + + +basic.coverage + + geom_gene(gtf.gr=gtf.gr) + +track.df = LoadTrackFile(track.folder = 'panels', format = "bw", + region = "chrX:5,995,156-5,999,243", extend = 2000, + meta.info = dt_meta) + + p1 = ggcoverage(data = track.df, color = "auto", ++ plot.type = "facet", range.position = "in", facet.y.scale = "fixed") + ++ geom_gene(gtf.gr=gtf.gr) +Error in ggplot_add.gene(object, p, objectname) : + gene_name, gene_type, gene_biotype is not in provided GTF file! +In addition: Warning message: +In geom_coverage(data = data, mapping = mapping, color = color, : + Fewer colors provided than there are groups in Group variable, falling back to default colors + + + p1 = ggcoverage(data = track.df, color = "auto", + plot.type = "facet", range.position = "in", facet.y.scale = "fixed") + + geom_gene(gtf.gr=gtf.gr) + +BiocManager::install("AnnotationHub") +library(AnnotationHub) +ah <- AnnotationHub() +query(ah, c('elegans', 'gtf', '109')) + # title + # AH110645 | Caenorhabditis_elegans.WBcel235.109.abinitio.gtf + # AH110646 | Caenorhabditis_elegans.WBcel235.109.gtf + +gtf <- ah[["AH110646"]] + +p1 = ggcoverage(data = track.df, color = "auto", + plot.type = "facet", range.position = "in", facet.y.scale = "fixed") + + geom_gene(gtf.gr=gtf) + +# p1 %<>% {. + theme_classic() } + +pdf('tmp.pdf', width = 7, height = 10) + print(p1) +dev.off() + + +p1 = ggcoverage(data = track.df, color = "auto", + plot.type = "facet", range.position = "in", facet.y.scale = "fixed") + + geom_gene(gtf.gr=gtf) + +# p1 %<>% {. + theme_classic() } + +# p1 = geom_gene(gtf.gr=gtf) +# geom_transcript(gtf.gr=gtf) + +p1 = ggcoverage(data = track.df, color = "auto", + plot.type = "facet", range.position = "in", facet.y.scale = "fixed") +p1 = p1 + geom_ideogram(genome = "ce11",plot.space = 0) + +pdf('tmp.pdf', width = 7, height = 10) + print(p1) +dev.off() + + +grtrack <- GeneRegionTrack(geneModels, genome = gen, + chromosome = chr, name = "Gene Model", + transcriptAnnotation = "symbol", + background.panel = "#FFFEDB", + background.title = "darkblue") + + + + + + + + + + +genome = 'ce11' +chromosome = 'chrX' +start = 5995156 +end = 5999243 + +ensGenes <- UcscTrack(genome = genome, chromosome = chromosome, + track="Ensembl Genes", table = "ensGene", + from = start, to = end, + trackType = "GeneRegionTrack", + rstarts = "exonStarts", rends = "exonEnds", + gene = "name", symbol = "name2", + transcript = "name", strand = "strand", + fill = "#960000", name = "Ensembl Genes") + +library(rtracklayer) + +bw_med1 <- import.bw(v_bw[1], as="GRanges") +bw_med1@seqnames@values %<>% paste0('chr', .) %>% as.factor +bw_med1@seqinfo@seqnames %<>% paste0('chr', .) +bw_med1@seqnames + +options(ucscChromosomeNames=F) +dTrack2 <- DataTrack(bw_med1, genome = genome, + chromosome = chromosome, + from = start, to = end, name = names(v_bw)[1], + type = 'l') + +pdf('tmp.pdf', width = 7, height = 10) + plotTracks(list(dTrack2, ensGenes), from = start, to = end) +dev.off() + + + + + + + + + + + + + + + + +# inx-3 +genome = 'ce11' +chromosome = 'chrX' +start = 5995156 +end = 5999243 + + + +# cav-1 +genome = 'ce11' +chromosome = 'chrIV' +start = 9772510 +end = 9773559 + + +# zip-2 +genome = 'ce11' +chromosome = 'chrIII' +start = 832982 +end = 835814 + +ow III:8238001..8239423 ( + +# tsp-1 +genome = 'ce11' +chromosome = 'chrIII' +start = 8238001 +end = 8239423 + + +# https://jnicolaus.com/tutorials-old/gviztutorial.html + +library(rtracklayer) +library(purrr) + +get_ensGenes <- function(genome, chromosome, start, end){ + ensGenes = UcscTrack(genome = genome, chromosome = chromosome, + track="Ensembl Genes", table = "ensGene", + from = start, to = end, + trackType = "GeneRegionTrack", + rstarts = "exonStarts", rends = "exonEnds", + gene = "name", symbol = "name2", + transcript = "name", strand = "strand", + fill = "#960000", name = "Ensembl Genes", + transcriptAnnotation="gene") + return(ensGenes) +} + +get_bigwig_plot <- function(file, name, genome, chromosome, start, end, + ylim = NULL){ + bw_med1 <- import.bw(file, as="GRanges") + bw_med1@seqnames@values %<>% paste0('chr', .) %>% as.factor + bw_med1@seqinfo@seqnames %<>% paste0('chr', .) + bw_med1@seqnames + + options(ucscChromosomeNames = F) + dTrack2 <- DataTrack(bw_med1, genome = genome, + chromosome = chromosome, + from = start, to = end, name = name, + type = 'l', ylim = ylim, + col.histogram = ifelse(grepl('ctl', name), '#FDE725FF', '#440154FF'), + fill.histogram = ifelse(grepl('ctl', name), '#FDE725FF', '#440154FF')) + return(dTrack2) +} + + +# l_bw = list.files('panels', full.names = T, pattern = '*.bw') %>% +# setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bw', '', .)) %>% as.list +# l_bw_p = imap(l_bw, ~get_bigwig_plot(.x, .y, genome, chromosome, start, end, +# ylim = NULL, +# col.histogram = ifelse(grepl('ctl', .y), '#FDE725FF', '#440154FF'), +# fill.histogram = ifelse(grepl('ctl', .y), '#FDE725FF', '#440154FF')))) + +# ensGenes = get_ensGenes(genome, chromosome, start, end) + +# pdf('tmp.pdf', width = 7, height = 10) +# plotTracks(c(l_bw_p, list(ensGenes)), from = start, to = end) +# dev.off() + +plot_samples_and_ref <- function(chromosome, start, end, title, ylim = NULL){ + + genome = 'ce11' + + # gtrack <- GenomeAxisTrack() + + l_bw_p = imap(l_bw, ~get_bigwig_plot(.x, .y, genome, chromosome, start, end, + ylim)) + + ensGenes = get_ensGenes(genome, chromosome, start, end) + + plotTracks(c(l_bw_p, list(ensGenes)), from = start, to = end, main = title) + +} + +pdf('tmp.pdf', width = 7, height = 10) + plot_samples_and_ref('chrII', 4170264, 4174498, title = 'R03H10.6', ylim = c(0, 500)) +dev.off() + + +pdf('tmp.pdf', width = 7, height = 10) + plot_samples_and_ref('chrII', 13833095, 13833631, title = 'F08G2.5') +dev.off() + + +w II:13833095..13833631 ( + +# tsp-1 +genome = 'ce11' +chromosome = 'chrIII' +start = 8237001 +end = 8239423 + + +# F08G2.5 +genome = 'ce11' +chromosome = 'chrIII' +start = 8237001 +end = 8239423 +dow II:.. (Le + + +# R03H10.6 +genome = 'ce11' +chromosome = 'chrII' +start = 4170264 +end = 4174498 + +l_bw_p = imap(l_bw, ~get_bigwig_plot(.x, .y, genome, chromosome, start, end, + ylim = NULL)) + +ensGenes = get_ensGenes(genome, chromosome, start, end) + +pdf('tmp.pdf', width = 7, height = 10) + plotTracks(c(l_bw_p, list(ensGenes)), from = start, to = end) +dev.off() + + diff --git a/docs/util/get_figure_examples.sh b/docs/util/get_figure_examples.sh index ff108c5..fd9710b 100644 --- a/docs/util/get_figure_examples.sh +++ b/docs/util/get_figure_examples.sh @@ -20,7 +20,7 @@ nextflow run jsalignon/cactus -r v0.8.6 -profile $tools_manager \ -params-file parameters/full_test.yml --split__threshold_values [1000] \ --res_dir 'results/v0.8.6' -nextflow run jsalignon/cactus -r origin/revisions -profile $tools_manager \ +nextflow run jsalignon/cactus -r revisions -profile $tools_manager \ --executor_local_cpus $cpu_nb --executor_local_memory $memory_size \ --references_dir $cactus_dir/references/$figshare_version \ -params-file parameters/full_test.yml --split__threshold_values [1000] \ @@ -58,7 +58,7 @@ res_worm_dir="$test_dir_2/worm/results/" res_fly_dir="$test_dir_2/fly/results/" # run_worm_dir="$res_worm_dir/almost_full_test" -run_worm_dir="$res_worm_dir/v0.8.6" +run_worm_dir="$res_worm_dir/v0.8.6_revisions" run_worm_figure_dir="$run_worm_dir/Figures_Individual" run_worm_tables_dir="$run_worm_dir/Tables_Merged" @@ -93,9 +93,6 @@ find $run_worm_figure_dir -name "pca_top5000_without_control_pca.pdf" -exec cp " find $run_worm_figure_dir -regex ".*\(ATAC\|mRNA\)__multiQC.html" -exec cp "{}" $examples_dir_html \; -find $run_worm_figure_dir -name "hmg4_*.bw" - -find $run_worm_figure_dir -name "ATAC__all__1000__all__*.pdf" -exec cp "{}" $examples_dir_pdf \; ## Making png images from PDF From 0289ad441c1fa1ed53589ce1c8ef15ff56adb431 Mon Sep 17 00:00:00 2001 From: Jerome Salignon Date: Wed, 10 Apr 2024 11:12:07 +0200 Subject: [PATCH 08/27] adding a tutorial --- case_study/4__making_figures.R | 593 +-------------------------------- docs/1_Intro/tutorial.md | 153 +++++++++ docs/1_Intro/tutorial.sh | 23 ++ 3 files changed, 194 insertions(+), 575 deletions(-) create mode 100644 docs/1_Intro/tutorial.md create mode 100644 docs/1_Intro/tutorial.sh diff --git a/case_study/4__making_figures.R b/case_study/4__making_figures.R index 999f76d..4322594 100644 --- a/case_study/4__making_figures.R +++ b/case_study/4__making_figures.R @@ -212,530 +212,16 @@ dev.off() # Fig S2: HA-HE gene tracks -# remotes::install_github(repo = "poisonalien/trackplot") -cd ~/install/R/github -git clone https://github.com/CRG-Barcelona/libbeato.git -git clone https://github.com/CRG-Barcelona/bwtool.git -cd libbeato/ -./configure -make -sudo make install -cd ../bwtool/ -./configure -make -sudo make install - -library(trackplot) - -install.packages('Signac') - - -library(Signac) -library(GenomicRanges) - -v_bw = list.files('panels', pattern = '*.bw', full.names = T) %>% - setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bw', '', .)) - -inx3_loci = "chr10:5995156-5999243" -OrganismDb - -BigwigTrack( - region, - bigwig, - - - -v_bw = R.utils::getAbsolutePath(list.files('../../docs/examples/bw', full.names = T)) %>% - setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bw', '', .)) - - -library(EnsDb.Hsapiens.v86) - - -library(BSgenome.Celegans.UCSC.ce11) - -l_bw = list.files('../../docs/examples/bw', full.names = T) %>% - setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bw', '', .)) %>% as.list - -gr <- GRanges(seqnames = 'chr10', - ranges = IRanges(start = 5995156, end = 5999243)) # inx3 -genome(gr) <- 'ce11' - - -p1 = BigwigTrack(gr, l_bw) -p2 = AnnotationPlot(atac_small, region = gr) -p3 = CombineTracks(plotlist = list(p1, p2), heights = c(1, 1)) - -pdf('tmp.pdf', width = 7, height = 10) - print(p3) -dev.off() - -library(Seurat) -set.seed(123) # For reproducibility -# Simulate expression data: 100 genes x 10 cells -data_matrix <- matrix(rpois(1000, lambda = 1), nrow = 100, ncol = 10) - -# Assign row and column names to simulate gene names and cell IDs -rownames(data_matrix) <- paste0("Gene", seq_len(nrow(data_matrix))) -colnames(data_matrix) <- paste0("Cell", seq_len(ncol(data_matrix))) -seurat_object <- CreateSeuratObject(counts = data_matrix) -seurat_object$genome <- "ce11" - -p2 = AnnotationPlot(seurat_object, region = gr) - -gr <- GRanges(seqnames = 'X', - ranges = IRanges(start = 5995156, end = 5999243)) - -p1 = BigwigTrack(gr, l_bw) - - -#genome : "hg19" -gen<-genome(cpgIslands) -#Chromosme name : "chr7" -chr <- as.character(unique(seqnames(cpgIslands))) -#Ideogram track -itrack <- IdeogramTrack(genome = gen, chromosome = chr) - -gtrack <- GenomeAxisTrack() - - -bmt <- BiomartGeneRegionTrack(genome = "hg19", chromosome = "chr12", - start = afrom, end = ato, filter = list(with_ox_refseq_mrna = TRUE), - stacking = "dense") - - -p1 = BigwigTrack(region = 'chr10:5995156-5999243', l_bw) - - - -gr_inx3 <- GRanges(seqnames = 'chrX', - ranges = IRanges(start = 5995156, end = 5999243)) - -p1 = BigwigTrack(region = 'chr10:5995156-5999243', l_bw) - - - -gr_inx3 <- GRanges(seqnames = 'chr10', - ranges = IRanges(start = 5995156, end = 5999243)) - -p1 = BigwigTrack(region = 'chr10:5995156-5999243', l_bw) - - - - -v_bw = list.files('panels', pattern = '*.bw', full.names = T) %>% - setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bw', '', .)) -gr <- GRanges(seqnames = 'chr10', - ranges = IRanges(start = 5995156, end = 5999243)) # inx3 -genome(gr) <- 'ce11' - - - - -dTrack2 <- DataTrack(range = v_bw[1], genome = "hg19", - type = "l", chromosome = "chr19", name = "bedGraph") -p1 = plotTracks(dTrack2) - -pdf('tmp.pdf', width = 7, height = 10) - print(p3) -dev.off() - - -# BiocManager::install("Gviz") - -library(Gviz) -library(TxDb.Celegans.UCSC.ce11.ensGene) -txdb = TxDb.Celegans.UCSC.ce11.ensGene -exons = exons(txdb) - -test = transcripts(txdb) -test = genes(txdb) - -grtrack <- GeneRegionTrack(exons, genome = 'ce11', - chromosome = 'chr10', name = "foo", - transcriptAnnotation = "symbol") - -grtrack <- GeneRegionTrack(exons, genome = 'ce11', - chromosome = 'chr10', name = "foo", - transcriptAnnotation = "symbol", - start = 5995156, end = 5999243) - -df_genes = readRDS('../../references/v4/worm/genome/annotation/R/df_genes_metadata.rds') -df_genes = readRDS('../../references/v4/worm/genome/annotation/R/df_genes_transcripts.rds') - - -library(Gviz) -library(TxDb.Celegans.UCSC.ce11.ensGene) -txdb = TxDb.Celegans.UCSC.ce11.ensGene -exons = exons(txdb) - -txTr <- GeneRegionTrack(exons, chromosome = 'chr10', start = 5995156, end = 5999243) -p1 = plotTracks(txTr) - -pdf('tmp.pdf', width = 7, height = 10) - print(grtrack) -dev.off() - -genome = 'ce11' -chromosome = 'chrX' -start = 5995156 -end = 5999243 - -ensGenes <- UcscTrack(genome = genome, chromosome = chromosome, - track="Ensembl Genes", table = "ensGene", - from = start, to = end, - trackType = "GeneRegionTrack", - rstarts = "exonStarts", rends = "exonEnds", - gene = "name", symbol = "name2", - transcript = "name", strand = "strand", - fill = "#960000", name = "Ensembl Genes") - -v_bw = list.files('panels', pattern = '*.bw', full.names = T) %>% - setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bw', '', .)) -gr <- GRanges(seqnames = chromosome, - ranges = IRanges(start = start, end = end)) # inx3 - -dTrack2 <- DataTrack(range = v_bw[1], genome = genome, - type = 'l', chromosome = chromosome, name = "bigwig", - from = start, to = end) - - -pdf('tmp.pdf', width = 7, height = 10) - plotTracks(list(dTrack2, ensGenes), from = start, to = end) -dev.off() - - - - -v_bw = list.files('panels', pattern = '*.bigWig', full.names = T) %>% - setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bigWig', '', .)) -gr <- GRanges(seqnames = chromosome, - ranges = IRanges(start = start, end = end)) # inx3 - -dTrack2 <- DataTrack(range = v_bw[1], genome = genome, - type = 'l', chromosome = chromosome, name = "bigwig", - from = start, to = end) - - -dTrack2 <- DataTrack(data = v_bw[1], genome = genome, - type = 'l', chromosome = chromosome, name = "bigWig", - from = start, to = end) - - -dTrack2 <- DataTrack(data = "panels/ctl_1.bigWig") -dTrack2@data - - -dTrack2 <- DataTrack(data = "panels/ctl_1.bw", range = gr) -dTrack2@data - - -dTrack2 <- DataTrack(data = "panels/ctl_1.bigWig", range = gr) -dTrack2@data - - - -dTrack2 <- DataTrack(range = "panels/ctl_1.bw", genome = genome, - chromosome = chromosome, - from = start, to = end) -dTrack2@data -Track2@range - - - -dTrack2 <- DataTrack(range = "panels/ctl_1.bigWig") -dTrack2@data - - -# set track for ChIP-seq coverage -chipseqFile=system.file("extdata", - "wgEncodeHaibTfbsA549.chr21.bw", - package="compGenomRData") - -cov.track=DataTrack(chipseqFile,type = "l", - name="coverage") - -library(rtracklayer) - -bw_med1 <- import.bw(v_bw[1], as="GRanges") -bw_med1@seqnames@values %<>% paste0('chr', .) %>% as.factor -bw_med1@seqinfo@seqnames %<>% paste0('chr', .) -bw_med1@seqnames - -options(ucscChromosomeNames=F) -dTrack2 <- DataTrack(bw_med1, genome = genome, - chromosome = chromosome, - from = start, to = end) - -pdf('tmp.pdf', width = 7, height = 10) - plotTracks(list(dTrack2, ensGenes), from = start, to = end) -dev.off() - - - -# BiocManager::install("Gviz") -# BiocManager::install("org.Ce.eg.db") -library(ggbio) -library(org.Ce.eg.db) -orgdb = org.Ce.eg.db -p_txdb <- autoplot(orgdb, which = gr) - - -library(org.Ce.eg.db) - - region, - bigwig, - -BigwigTrack( - region, - bigwig, - - - -v_bw = list.files('../../docs/examples/bw', full.names = T) - -bigWigs = read_coldata(bws = v_bw, build = 'ce11') - - -# -v_files_2_DA_fig %<>% .[. != '../../docs/examples/png/hmg4_vs_ctl__ATAC_other_plots.png'] - -#Path to bigWig files -bigWigs = c("H1_Oct4.bw", "H1_Nanog.bw", "H1_k4me3.bw", - "H1_k4me1.bw", "H1_k27ac.bw", "H1_H2az.bw", "H1_Ctcf.bw") - -#Make a table of bigWigs along with ref genome build -bigWigs = read_coldata(bws = bigWigs, build = "hg19") - -inx3_loci = "chr10:5995156-5999243" -t = track_extract(colData = bigWigs, loci = inx3_loci) -p1 = track_plot(summary_list = t) - - - - - -library(ggbio) -library(org.Ce.eg.db) -v_bw = list.files('panels', pattern = '*.bw', full.names = T) %>% - setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bw', '', .)) - -gr <- GRanges(seqnames = 'chrX', - ranges = IRanges(start = 5995156, end = 5999243)) # inx3 -genome(gr) <- 'ce11' - -library(TxDb.Celegans.UCSC.ce11.ensGene) -txdb = TxDb.Celegans.UCSC.ce11.ensGene - -p1 = autoplot(txdb, which = gr) -p1 %<>% {. + theme_classic() } - -pdf('tmp.pdf', width = 7, height = 10) - print(p1) -dev.off() - - -install.packages("ggcoverage") - -library("rtracklayer") -library("graphics") -library("ggcoverage") -library("ggpattern") - -gffread -E \ - ../../references/v4/worm/genome/annotation/filtered/annotation.gff3 \ - -T -o panels/anno_worm.gtf - -dt_meta = data.table(Type = c(1:3, 1:3), - Group = c(rep('hmg4', 3), rep('ctl', 3))) -dt_meta[, SampleName := paste(Group, Type, sep = '_')] - -track.df = LoadTrackFile(track.folder = 'panels', format = "bw", - region = "X:5,995,156-5,999,243", extend = 2000, - meta.info = dt_meta) - -gtf_file = '../../references/v4/worm/genome/annotation/filtered/annotation.gff3' -gtf.gr = rtracklayer::import.gff(con = gtf_file, format = 'gff3') - -gtf_file = 'panels/anno_worm.gtf' -gtf.gr = rtracklayer::import.gff(con = gtf_file, format = 'gtf') - - - -basic.coverage = ggcoverage(data = track.df, color = "auto", plot.type = "joint",) - - -p1 = ggcoverage(data = track.df, color = "auto", - plot.type = "facet", range.position = "in", facet.y.scale = "fixed") + - geom_gene(gtf.gr=gtf.gr) - - - -ggcoverage(data = track.df, color = "auto", plot.type = "facet", - range.position = "in", facet.y.scale = "fixed") - - -ggcoverage(data = track.df, color = "auto", plot.type = "facet", - mark.region = mark.region, range.position = "in", - facet.y.scale = "fixed") - - -basic.coverage + - geom_gene(gtf.gr=gtf.gr) - -track.df = LoadTrackFile(track.folder = 'panels', format = "bw", - region = "chrX:5,995,156-5,999,243", extend = 2000, - meta.info = dt_meta) - - p1 = ggcoverage(data = track.df, color = "auto", -+ plot.type = "facet", range.position = "in", facet.y.scale = "fixed") + -+ geom_gene(gtf.gr=gtf.gr) -Error in ggplot_add.gene(object, p, objectname) : - gene_name, gene_type, gene_biotype is not in provided GTF file! -In addition: Warning message: -In geom_coverage(data = data, mapping = mapping, color = color, : - Fewer colors provided than there are groups in Group variable, falling back to default colors - - - p1 = ggcoverage(data = track.df, color = "auto", - plot.type = "facet", range.position = "in", facet.y.scale = "fixed") + - geom_gene(gtf.gr=gtf.gr) - -BiocManager::install("AnnotationHub") -library(AnnotationHub) -ah <- AnnotationHub() -query(ah, c('elegans', 'gtf', '109')) - # title - # AH110645 | Caenorhabditis_elegans.WBcel235.109.abinitio.gtf - # AH110646 | Caenorhabditis_elegans.WBcel235.109.gtf - -gtf <- ah[["AH110646"]] - -p1 = ggcoverage(data = track.df, color = "auto", - plot.type = "facet", range.position = "in", facet.y.scale = "fixed") + - geom_gene(gtf.gr=gtf) - -# p1 %<>% {. + theme_classic() } - -pdf('tmp.pdf', width = 7, height = 10) - print(p1) -dev.off() - - -p1 = ggcoverage(data = track.df, color = "auto", - plot.type = "facet", range.position = "in", facet.y.scale = "fixed") + - geom_gene(gtf.gr=gtf) - -# p1 %<>% {. + theme_classic() } - -# p1 = geom_gene(gtf.gr=gtf) -# geom_transcript(gtf.gr=gtf) - -p1 = ggcoverage(data = track.df, color = "auto", - plot.type = "facet", range.position = "in", facet.y.scale = "fixed") -p1 = p1 + geom_ideogram(genome = "ce11",plot.space = 0) - -pdf('tmp.pdf', width = 7, height = 10) - print(p1) -dev.off() - - -grtrack <- GeneRegionTrack(geneModels, genome = gen, - chromosome = chr, name = "Gene Model", - transcriptAnnotation = "symbol", - background.panel = "#FFFEDB", - background.title = "darkblue") - - - - - - - - - - -genome = 'ce11' -chromosome = 'chrX' -start = 5995156 -end = 5999243 - -ensGenes <- UcscTrack(genome = genome, chromosome = chromosome, - track="Ensembl Genes", table = "ensGene", - from = start, to = end, - trackType = "GeneRegionTrack", - rstarts = "exonStarts", rends = "exonEnds", - gene = "name", symbol = "name2", - transcript = "name", strand = "strand", - fill = "#960000", name = "Ensembl Genes") - -library(rtracklayer) - -bw_med1 <- import.bw(v_bw[1], as="GRanges") -bw_med1@seqnames@values %<>% paste0('chr', .) %>% as.factor -bw_med1@seqinfo@seqnames %<>% paste0('chr', .) -bw_med1@seqnames - -options(ucscChromosomeNames=F) -dTrack2 <- DataTrack(bw_med1, genome = genome, - chromosome = chromosome, - from = start, to = end, name = names(v_bw)[1], - type = 'l') - -pdf('tmp.pdf', width = 7, height = 10) - plotTracks(list(dTrack2, ensGenes), from = start, to = end) -dev.off() - - - - - - - - - - - - - - - - -# inx-3 -genome = 'ce11' -chromosome = 'chrX' -start = 5995156 -end = 5999243 - - - -# cav-1 -genome = 'ce11' -chromosome = 'chrIV' -start = 9772510 -end = 9773559 - - -# zip-2 -genome = 'ce11' -chromosome = 'chrIII' -start = 832982 -end = 835814 - -ow III:8238001..8239423 ( - -# tsp-1 -genome = 'ce11' -chromosome = 'chrIII' -start = 8238001 -end = 8239423 - - # https://jnicolaus.com/tutorials-old/gviztutorial.html +# https://ivanek.github.io/Gviz/reference/plotTracks.html +library(Gviz) library(rtracklayer) library(purrr) +l_bw = list.files('panels', pattern = '*.bw', full.names = T) %>% + setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bw', '', .)) %>% as.list + get_ensGenes <- function(genome, chromosome, start, end){ ensGenes = UcscTrack(genome = genome, chromosome = chromosome, track="Ensembl Genes", table = "ensGene", @@ -758,28 +244,14 @@ get_bigwig_plot <- function(file, name, genome, chromosome, start, end, options(ucscChromosomeNames = F) dTrack2 <- DataTrack(bw_med1, genome = genome, - chromosome = chromosome, - from = start, to = end, name = name, - type = 'l', ylim = ylim, + chromosome = chromosome,from = start, to = end, name = name, type = 'l', + ylim = ylim, col.histogram = ifelse(grepl('ctl', name), '#FDE725FF', '#440154FF'), fill.histogram = ifelse(grepl('ctl', name), '#FDE725FF', '#440154FF')) return(dTrack2) } -# l_bw = list.files('panels', full.names = T, pattern = '*.bw') %>% -# setNames(., gsub('.*\\/', '', .) %>% gsub('\\.bw', '', .)) %>% as.list -# l_bw_p = imap(l_bw, ~get_bigwig_plot(.x, .y, genome, chromosome, start, end, -# ylim = NULL, -# col.histogram = ifelse(grepl('ctl', .y), '#FDE725FF', '#440154FF'), -# fill.histogram = ifelse(grepl('ctl', .y), '#FDE725FF', '#440154FF')))) - -# ensGenes = get_ensGenes(genome, chromosome, start, end) - -# pdf('tmp.pdf', width = 7, height = 10) -# plotTracks(c(l_bw_p, list(ensGenes)), from = start, to = end) -# dev.off() - plot_samples_and_ref <- function(chromosome, start, end, title, ylim = NULL){ genome = 'ce11' @@ -791,50 +263,21 @@ plot_samples_and_ref <- function(chromosome, start, end, title, ylim = NULL){ ensGenes = get_ensGenes(genome, chromosome, start, end) - plotTracks(c(l_bw_p, list(ensGenes)), from = start, to = end, main = title) + plotTracks(c(l_bw_p, list(ensGenes)), from = start, to = end, main = title, + type = 'histogram', background.title = 'darkgrey') } -pdf('tmp.pdf', width = 7, height = 10) - plot_samples_and_ref('chrII', 4170264, 4174498, title = 'R03H10.6', ylim = c(0, 500)) -dev.off() - - -pdf('tmp.pdf', width = 7, height = 10) - plot_samples_and_ref('chrII', 13833095, 13833631, title = 'F08G2.5') -dev.off() - - -w II:13833095..13833631 ( - -# tsp-1 -genome = 'ce11' -chromosome = 'chrIII' -start = 8237001 -end = 8239423 - - -# F08G2.5 -genome = 'ce11' -chromosome = 'chrIII' -start = 8237001 -end = 8239423 -dow II:.. (Le - - -# R03H10.6 -genome = 'ce11' -chromosome = 'chrII' -start = 4170264 -end = 4174498 - -l_bw_p = imap(l_bw, ~get_bigwig_plot(.x, .y, genome, chromosome, start, end, - ylim = NULL)) - -ensGenes = get_ensGenes(genome, chromosome, start, end) -pdf('tmp.pdf', width = 7, height = 10) - plotTracks(c(l_bw_p, list(ensGenes)), from = start, to = end) +pdf('tmp1.pdf', width = 7, height = 3.5) + plot_samples_and_ref('chrII', 4170264, 4175498, title = 'R03H10.6', ylim = c(0, 500)) + plot_samples_and_ref('chrII', 13832095, 13834431, title = 'F08G2.5', ylim = c(0, 500)) dev.off() +gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=output.pdf \ + -dPDFFitPage -dDEVICEWIDTHPOINTS=595 -dDEVICEHEIGHTPOINTS=842 \ + -c "<> setpagedevice" \ + -f input.pdf \ + -c "<> setpagedevice" \ + -f input.pdf diff --git a/docs/1_Intro/tutorial.md b/docs/1_Intro/tutorial.md new file mode 100644 index 0000000..4b01a90 --- /dev/null +++ b/docs/1_Intro/tutorial.md @@ -0,0 +1,153 @@ + + +# Menu +- [Configuration files](#Configuration-files) +- [Mandatory parameters](#Mandatory-parameters) + +# Introduction + +This tutorial will highlight some use case of Cactus using the worm test dataset. +The full script for this tutoral can be found here[TO DO]. +We will use Singularity for this tutorial (see the [dependencies section](/docs/2_Install/Dependencies.md) if needed). + +# Setting up global parameters, downloading references, and test datasets + +We should first create a Cactus configuration file. For instance, this can be done using this command (we disable [Nextflow Tower](https://cloud.tower.nf/) for this example): +```bash +cat >> ${HOME}/.cactus.config << EOL +params.references_dir = "${HOME}/workspace/cactus/references" +params.singularity_cache_dir = "${HOME}/workspace/singularity_containers" +params.tower_token = "*" +params.enable_tower = false +EOL +``` + +We can export the nextflow version to make sure we use the correct: +```bash +export NXF_VER=22.10.8 +``` + +For reproducibility purposes, it is useful to specify a version of Cactus whenever running an analysis. We will use the latest version (v0.9.0) for this tutorial. +```bash +cactus_version=0.9.0 +``` + +We can then download the references and test datasets using this command: +```bash +nextflow run jsalignon/cactus/scripts/download/download.nf -r $cactus_version --test_datasets --references -profile singularity --species worm +``` + +This command will download the references to the `params.references_dir` folder set up in the global Cactus configuration file, as well as the worm test dataset in the current folder. + +The worm test dataset comes from [TODO]. + +We can go to the worm test dataset folder and check the pre-made experimental design with these commands: +```bash +cd worm +printf "\n\nATAC-Seq fastq files\n" +cat design/atac_fastq.tsv +printf "\n\nmRNA-Seq fastq files\n" +cat design/mrna_fastq.tsv +printf "\n\nComparisons to be made\n" +cat design/comparisons.tsv +printf "\n\nGroups of comparisons to be plot together in heatmaps\n" +cat design/groups.tsv +``` + +Which gives: +``` +ATAC-Seq fastq files +input data/atac/sample_200K_reads_atac_SRX2333004_SRR5000684_R1.fastq.gz +ctl_1 data/atac/sample_200K_reads_atac_SRX3029124_SRR5860424_R1.fastq.gz +ctl_2 data/atac/sample_200K_reads_atac_SRX3029125_SRR5860425_R1.fastq.gz +ctl_3 data/atac/sample_200K_reads_atac_SRX3029126_SRR5860426_R1.fastq.gz +spt16_1 data/atac/sample_200K_reads_atac_SRX3029130_SRR5860430_R1.fastq.gz +spt16_2 data/atac/sample_200K_reads_atac_SRX3029131_SRR5860431_R1.fastq.gz +spt16_3 data/atac/sample_200K_reads_atac_SRX3029132_SRR5860432_R1.fastq.gz +hmg4_1 data/atac/sample_200K_reads_atac_SRX3029133_SRR5860433_R1.fastq.gz +hmg4_2 data/atac/sample_200K_reads_atac_SRX3029134_SRR5860434_R1.fastq.gz +hmg4_3 data/atac/sample_200K_reads_atac_SRX3029135_SRR5860435_R1.fastq.gz + +mRNA-Seq fastq files +ctl_1 data/mrna/sample_50K_reads_mrna_SRX3029112_SRR5860412.fastq.gz +ctl_2 data/mrna/sample_50K_reads_mrna_SRX3029113_SRR5860413.fastq.gz +ctl_3 data/mrna/sample_50K_reads_mrna_SRX3029114_SRR5860414.fastq.gz +hmg4_1 data/mrna/sample_50K_reads_mrna_SRX3029115_SRR5860415.fastq.gz +hmg4_2 data/mrna/sample_50K_reads_mrna_SRX3029116_SRR5860416.fastq.gz +hmg4_3 data/mrna/sample_50K_reads_mrna_SRX3029117_SRR5860417.fastq.gz +spt16_1 data/mrna/sample_50K_reads_mrna_SRX3029118_SRR5860418.fastq.gz +spt16_2 data/mrna/sample_50K_reads_mrna_SRX3029119_SRR5860419.fastq.gz +spt16_3 data/mrna/sample_50K_reads_mrna_SRX3029120_SRR5860420.fastq.gz + +Comparisons to be made +hmg4 ctl +spt16 ctl +hmg4 spt16 + +Groups of comparisons to be plot together in heatmaps +all hmg4_vs_ctl spt16_vs_ctl hmg4_vs_spt16 +ctl hmg4_vs_ctl spt16_vs_ctl +spt16 spt16_vs_ctl hmg4_vs_spt16 +``` + +We will not remove any genes and regions at first, and use the empty files `design/regions_to_remove_empty.tsv` and `design/genes_to_remove_empty.tsv`. + +We can now run Cactus. This can be done using the parameter file, such as the `parameters/full_test.yml` file, which contains: +``` +res_dir : 'results/full_test' +species : 'worm' +chromatin_state : 'iHMM.M1K16.worm_L3' +split__threshold_type : 'rank' +split__threshold_values : [ 200, 1000 ] +``` +However, for this tutorial, we will set up the parameters directly in the command line for better clarity. Nextflow parameters are set up with a single hyphen (i.e., "-profile"), while Cactus parameters are set up with double hyphens (i.e., "--res_dir"). + +It is a good idea to run Cactus sequentially, to make sure the different steps of analysis are correct, and to avoid the need to re-run the whole pipeline again. Since Cactus is built with the Nextflow language, caching is efficiently implemented. Therefore, changing one paramter or one sample will only affect the specific process or sample that was changed. + +We therefore run Cactus by using the `--params.disable_all_enrichments` parameter to stop the analysis after the second step (differential analysis) with the following command: +```bash +nextflow run jsalignon/cactus -profile singularity -r $cactus_version \ + --res_dir results/tutorial \ # the output folder + --species worms \ # species under study (mandatory) + --chromatin_state iHMM.M1K16.worm_L3 \ # chromatin state file to use (mandatory) + --split__threshold_type rank \ # using rank(-log10(FDR)) cuttoff + --split__threshold_values [ 200, 1000 ] \ # selecting the top 200 or 1000 most significant results + --disable_all_enrichments \ # disabling all enrichment analysis + +``` + +Note, that creation of bigWig files, as well as the saturation curve analysis can both be computationally intensive and therefore there are parameters to disable these steps if needed (`params.do_bigwig` and `params.do_saturation_curve`). + +After this step, we can look at the results from the preprocessing and quality control analyses to ensure all samples are of good enough quality. This can be assessed for both ATAC-Seq and mRNA-Seq samples by looking at the MultiQC report files, present in the folder `results/tutorial/Figures_Merged/1_Preprocessing`. Many additional quality control figures are available for ATAC-Seq in the same folder, including reads and peaks coverage, reads insert size, PCA and correlation matrix. The saturation curve analysis helps to determine if one should resequence or not. This can be assessed by looking at the shape of the curve. For instance, if the curve is still steeply increasing, then it might be needed to sequence the samples further. + + + + +-params-file parameters/full_test.yml -r main -latest + +res_dir : 'results/full_test' +species : 'worm' +chromatin_state : 'iHMM.M1K16.worm_L3' +split__threshold_type : 'rank' +split__threshold_values : [ 200, 1000 ] + + + +``` +cat design/regions_to_remove_empty.tsv +``` + +We will now run Cactus. We don't specify the peaks to remove at first. + + +# Setting up configuration files + +The previous + +# Running preprocessing and checking quality controls + +# Running differential analysis, filtering, and selecting PA filters + +# Running enrichment analysis between comparisons + +# Running the full analysis diff --git a/docs/1_Intro/tutorial.sh b/docs/1_Intro/tutorial.sh new file mode 100644 index 0000000..4b16184 --- /dev/null +++ b/docs/1_Intro/tutorial.sh @@ -0,0 +1,23 @@ + +# Creating the Cactus configuration file (if needed) +cat >> ${HOME}/.cactus.config << EOL +params.references_dir = "${HOME}/workspace/cactus/references" +params.singularity_cache_dir = "${HOME}/workspace/singularity_containers" +params.tower_token = "*" +params.enable_tower = false +EOL + +# Selecting the Nextflow version +export NXF_VER=22.10.8 + +# Selecting the Cactus version +cactus_version=0.9.0 + +# Downloading the worm references and test dataset +nextflow run jsalignon/cactus/scripts/download/download.nf -r $cactus_version \ + --test_datasets --references -profile singularity --species worm + +# change folder and check design +cd worm +cat design/*.yml + From 855063ab4024fe5b11f333f3d35252ade0a89a7c Mon Sep 17 00:00:00 2001 From: Jerome Salignon Date: Wed, 10 Apr 2024 14:33:16 +0200 Subject: [PATCH 09/27] updating the tutorial --- docs/1_Intro/tutorial.md | 56 ++++++++++++++++++++++++++++++++++------ 1 file changed, 48 insertions(+), 8 deletions(-) diff --git a/docs/1_Intro/tutorial.md b/docs/1_Intro/tutorial.md index 4b01a90..74f3bcd 100644 --- a/docs/1_Intro/tutorial.md +++ b/docs/1_Intro/tutorial.md @@ -107,20 +107,60 @@ It is a good idea to run Cactus sequentially, to make sure the different steps o We therefore run Cactus by using the `--params.disable_all_enrichments` parameter to stop the analysis after the second step (differential analysis) with the following command: ```bash nextflow run jsalignon/cactus -profile singularity -r $cactus_version \ - --res_dir results/tutorial \ # the output folder - --species worms \ # species under study (mandatory) - --chromatin_state iHMM.M1K16.worm_L3 \ # chromatin state file to use (mandatory) - --split__threshold_type rank \ # using rank(-log10(FDR)) cuttoff - --split__threshold_values [ 200, 1000 ] \ # selecting the top 200 or 1000 most significant results - --disable_all_enrichments \ # disabling all enrichment analysis - + --res_dir results/tutorial \ + --species worms \ + --chromatin_state iHMM.M1K16.worm_L3 \ + --split__threshold_type rank \ + --split__threshold_values [ 200, 1000 ] \ + --disable_all_enrichments \ + --design__regions_to_remove design/regions_to_remove_empty.tsv ``` +With: + - `--res_dir`: the output folder + - `--species`: pecies under study (mandatory) + - --chromatin_state: chromatin state file to use (mandatory) + - --split__threshold_type: using rank(-log10(FDR)) cutoff instead of the default -log10(FDR) cutoff + - --split__threshold_values: selecting the top 200 and 1000 most significant results + - `--disable_all_enrichments`: stopping analyses after step 2 (differential analysis) Note, that creation of bigWig files, as well as the saturation curve analysis can both be computationally intensive and therefore there are parameters to disable these steps if needed (`params.do_bigwig` and `params.do_saturation_curve`). -After this step, we can look at the results from the preprocessing and quality control analyses to ensure all samples are of good enough quality. This can be assessed for both ATAC-Seq and mRNA-Seq samples by looking at the MultiQC report files, present in the folder `results/tutorial/Figures_Merged/1_Preprocessing`. Many additional quality control figures are available for ATAC-Seq in the same folder, including reads and peaks coverage, reads insert size, PCA and correlation matrix. The saturation curve analysis helps to determine if one should resequence or not. This can be assessed by looking at the shape of the curve. For instance, if the curve is still steeply increasing, then it might be needed to sequence the samples further. +After this step, we can look at the results from the preprocessing and quality control analyses to ensure all samples are of good enough quality. This can be assessed for both ATAC-Seq and mRNA-Seq samples by looking at the MultiQC report files, present in the folder `results/tutorial/Figures_Merged/1_Preprocessing`. Many additional quality control figures are available for ATAC-Seq in the same folder, including reads and peaks coverage, reads insert size, PCA and correlation matrix. The saturation curve analysis helps to determine if one should resequence or not. This can be assessed by looking at the shape of the curve. For instance, if the curve is still steeply increasing, then it might be needed to sequence the samples further. Since this a test datasets with few randomly sampled reads, the saturation curve has a weird shape, and does not seem to have reached a clear plateau, indicating a need for more sequencing: + + +Looking at the ATAC-Seq volcano plot for the hgm-4 vs stp-16 comparison, we can notice large peaks for spt-16 and hmg-4: + +This is due to RNA interference which induce a very strong sequencing signal at the repressed locus. + +Therefore, we repeat our analysis by excluding the regions of the targeted gene for ATAC-Seq samples, using the file `design/regions_to_remove.tsv` which contains: +``` +hmg4 Hmg4->chrIII:7,379,143-7,381,596 +spt16 Spt16->chrI:10,789,130-10,793,152 +``` + +At this stage, we can also look carefully at which DAS (Differential Analysis Subset) filters could make sense to investigate. Here are the volcano +PA... + +After checking quality controls and excluding regions with artificial signal, we can launch a new analysis that includes enrichment analysis. This step can be done very quickly when excluding functional enrichment and motifs enrichment analysis. Indeed, enrichment of genomic regions, like ChIP-Seq, or comparisons between DASs can be done very rapidly as it is based on bed-files overlap using bedtools. We therefore now use this command to do a quick enrichment analysis: + +```bash +nextflow run jsalignon/cactus -profile singularity -r $cactus_version \ + --res_dir results/tutorial \ + --species worms \ + --chromatin_state iHMM.M1K16.worm_L3 \ + --split__threshold_type rank \ + --split__threshold_values [ 200, 1000 ] \ + --disable_all_enrichments \ + --design__regions_to_remove design/regions_to_remove_empty.tsv +``` + + +As gene enrichment, and m + +A quick analysis can be done by doing + -params-file parameters/full_test.yml -r main -latest From 65e542af53d3a5f1a45f6a66c0917937f52c6f85 Mon Sep 17 00:00:00 2001 From: Jerome Salignon Date: Wed, 10 Apr 2024 15:59:16 +0200 Subject: [PATCH 10/27] updating the tutorial --- docs/1_Intro/tutorial.md | 108 ++++++++++++------ ...C__all__1000__ctl__genes_self__heatmap.png | Bin 0 -> 132013 bytes ...h__all__1000__ctl__genes_self__heatmap.png | Bin 0 -> 112187 bytes ...__Null__1000__ctl__genes_self__heatmap.png | Bin 0 -> 127943 bytes docs/util/get_figure_examples.sh | 6 +- 5 files changed, 77 insertions(+), 37 deletions(-) create mode 100644 docs/examples/png/ATAC__all__1000__ctl__genes_self__heatmap.png create mode 100644 docs/examples/png/both__all__1000__ctl__genes_self__heatmap.png create mode 100644 docs/examples/png/mRNA__Null__1000__ctl__genes_self__heatmap.png diff --git a/docs/1_Intro/tutorial.md b/docs/1_Intro/tutorial.md index 74f3bcd..c5100f4 100644 --- a/docs/1_Intro/tutorial.md +++ b/docs/1_Intro/tutorial.md @@ -1,8 +1,26 @@ + + +* [Introduction](/README.md): [Quick Start](/docs/1_Intro/Quick_start.md), [Flowchart](/docs/1_Intro/Flowchart.md), [Outputs structure](/docs/1_Intro/Outputs_structure.md) +* [Install](/docs/2_Install/2_Install.md): [Dependencies](/docs/2_Install/Dependencies.md), [Containers](/docs/2_Install/Containers.md), [References](/docs/2_Install/References.md), [Test datasets](/docs/2_Install/Test_datasets.md) +* [Inputs](/docs/3_Inputs/3_Inputs.md): [Data](/docs/3_Inputs/Data.md), [Design](/docs/3_Inputs/Design.md), [Parameters](/docs/3_Inputs/Parameters.md) +* [1. Preprocessing](/docs/4_Prepro/4_Prepro.md): [ATAC reads](/docs/4_Prepro/ATAC_reads.md), [ATAC peaks](/docs/4_Prepro/ATAC_peaks.md), [mRNA](/docs/4_Prepro/mRNA.md) +* [2. Differential Analysis](/docs/5_DA/5_DA.md): [ATAC](/docs/5_DA/DA_ATAC.md), [mRNA](/docs/5_DA/DA_mRNA.md), [Split](/docs/5_DA/Split.md) +* [3. Enrichment Analysis](/docs/6_Enrich/6_Enrich.md): [Enrichment](/docs/6_Enrich/Enrichment.md), [Figures](/docs/6_Enrich/Figures.md), [Tables](/docs/6_Enrich/Tables.md) + +[](END_OF_MENU) + + # Menu -- [Configuration files](#Configuration-files) -- [Mandatory parameters](#Mandatory-parameters) +- [Introduction](#Introduction) +- [Setting up global parameters, downloading references, and test datasets](#Setting-up-global-parameters,-downloading-references,-and-test-datasets) +- [Running Cactus without enrichment analysis](#Running-Cactus-without-enrichment-analysis) +- [Checking quality controls and removing artifical signal](#Checking-quality-controls-and-removing-artifical-signal) +- [Selecting Differential Analysis Subset filters](#Selecting-Differential-Analysis-Subset-filters) +- [Looking at correlation between comparisons for different experiment types](#Looking-at-correlation-between-comparisons-for-different-experiment-types) +- [Running the full analysis](#Running-the-full-analysis) + # Introduction @@ -10,6 +28,7 @@ This tutorial will highlight some use case of Cactus using the worm test dataset The full script for this tutoral can be found here[TO DO]. We will use Singularity for this tutorial (see the [dependencies section](/docs/2_Install/Dependencies.md) if needed). + # Setting up global parameters, downloading references, and test datasets We should first create a Cactus configuration file. For instance, this can be done using this command (we disable [Nextflow Tower](https://cloud.tower.nf/) for this example): @@ -39,7 +58,7 @@ nextflow run jsalignon/cactus/scripts/download/download.nf -r $cactus_version -- This command will download the references to the `params.references_dir` folder set up in the global Cactus configuration file, as well as the worm test dataset in the current folder. -The worm test dataset comes from [TODO]. +The worm test dataset comes from the Koluntzic et al manuscript (see the [Test datasets](/docs/2_Install/Test_datasets.md) section), and contains ATAC-Seq and RNA-Seq samples of C. elegans worms exposed to RNA interference (RNAi) on two FACT subunits; hmg-4, spt-16, as well as Renilla luciferase (Rluc) which served as a control (abbreviated "ctl"). We can go to the worm test dataset folder and check the pre-made experimental design with these commands: ```bash @@ -90,6 +109,9 @@ ctl hmg4_vs_ctl spt16_vs_ctl spt16 spt16_vs_ctl hmg4_vs_spt16 ``` + +# Running Cactus without enrichment analysis + We will not remove any genes and regions at first, and use the empty files `design/regions_to_remove_empty.tsv` and `design/genes_to_remove_empty.tsv`. We can now run Cactus. This can be done using the parameter file, such as the `parameters/full_test.yml` file, which contains: @@ -110,8 +132,6 @@ nextflow run jsalignon/cactus -profile singularity -r $cactus_version \ --res_dir results/tutorial \ --species worms \ --chromatin_state iHMM.M1K16.worm_L3 \ - --split__threshold_type rank \ - --split__threshold_values [ 200, 1000 ] \ --disable_all_enrichments \ --design__regions_to_remove design/regions_to_remove_empty.tsv ``` @@ -125,6 +145,9 @@ With: Note, that creation of bigWig files, as well as the saturation curve analysis can both be computationally intensive and therefore there are parameters to disable these steps if needed (`params.do_bigwig` and `params.do_saturation_curve`). + +# Checking quality controls and removing artifical signal + After this step, we can look at the results from the preprocessing and quality control analyses to ensure all samples are of good enough quality. This can be assessed for both ATAC-Seq and mRNA-Seq samples by looking at the MultiQC report files, present in the folder `results/tutorial/Figures_Merged/1_Preprocessing`. Many additional quality control figures are available for ATAC-Seq in the same folder, including reads and peaks coverage, reads insert size, PCA and correlation matrix. The saturation curve analysis helps to determine if one should resequence or not. This can be assessed by looking at the shape of the curve. For instance, if the curve is still steeply increasing, then it might be needed to sequence the samples further. Since this a test datasets with few randomly sampled reads, the saturation curve has a weird shape, and does not seem to have reached a clear plateau, indicating a need for more sequencing: @@ -138,56 +161,73 @@ hmg4 Hmg4->chrIII:7,379,143-7,381,596 spt16 Spt16->chrI:10,789,130-10,793,152 ``` -At this stage, we can also look carefully at which DAS (Differential Analysis Subset) filters could make sense to investigate. Here are the volcano -PA... - -After checking quality controls and excluding regions with artificial signal, we can launch a new analysis that includes enrichment analysis. This step can be done very quickly when excluding functional enrichment and motifs enrichment analysis. Indeed, enrichment of genomic regions, like ChIP-Seq, or comparisons between DASs can be done very rapidly as it is based on bed-files overlap using bedtools. We therefore now use this command to do a quick enrichment analysis: - +The new commands is: ```bash nextflow run jsalignon/cactus -profile singularity -r $cactus_version \ --res_dir results/tutorial \ --species worms \ --chromatin_state iHMM.M1K16.worm_L3 \ - --split__threshold_type rank \ - --split__threshold_values [ 200, 1000 ] \ --disable_all_enrichments \ - --design__regions_to_remove design/regions_to_remove_empty.tsv + --design__regions_to_remove design/regions_to_remove.tsv ``` - -As gene enrichment, and m - -A quick analysis can be done by doing +Looking at the volcano plot, we can see that articial signals at the hmg-4 and spt-16 locuses have been removed: + - +# Selecting Differential Analysis Subset filters +At this stage, we can also look at which DAS (Differential Analysis Subset) filters could make sense to investigate. For instance, we can look at the volcano plots for ATAC-Seq and mRNA-Seq: + +We can see that the p-values are much smaller for mRNA-Seq than for ATAC-Seq, and only two peaks are significant opened while many genes are differentially expressed. +From these plots, one could run the analysis by using different -log10(FDR) cutoffs using these parameters: `--split__threshold_type FDR` and `--split__threshold_values [ 1.3, 3, 10 ]`. This would allow to dissect enrichment of differentially expressed genes at various significance cutoffs. +Alternatively, or complementarily, one could try to still check if there is consistency between the ATAC-Seq and mRNA-Seq data by selecting the top X most significant DAS. This can be done using these parameters: `--split__threshold_type rank` and `--split__threshold_values [ 200, 1000 ]`. --params-file parameters/full_test.yml -r main -latest +We can also check if certain Peak Annotation (PA) filters would be interesting to investigate by looking at the FDR by PA plot: + +In this case, no PA filter seem to be espcially enriched in significant peaks, therefore we can keep the default parameter: `--split__peak_assignment ['all']`. -res_dir : 'results/full_test' -species : 'worm' -chromatin_state : 'iHMM.M1K16.worm_L3' -split__threshold_type : 'rank' -split__threshold_values : [ 200, 1000 ] +After having identified the PA filters to use, we can launch a new analysis that includes enrichment analysis. This step can be done very quickly when excluding functional enrichment and motifs enrichment analysis, as these are more computationally intensive (by default, all enrichment analysis steps are conducted). Indeed, enrichment of genomic regions, like ChIP-Seq, or comparisons between DASs can be done very rapidly as it is based on bed-files overlap using bedtools. We can now use this command to do a quick enrichment analysis: +```bash +nextflow run jsalignon/cactus -profile singularity -r $cactus_version \ + --res_dir results/tutorial \ + --species worms \ + --chromatin_state iHMM.M1K16.worm_L3 \ + --design__regions_to_remove design/regions_to_remove.tsv \ + --split__threshold_type rank \ + --split__threshold_values [ 200, 1000 ] \ + --do_func_anno_enrichment false \ + --do_motif_enrichment false +``` +With: + - --split__threshold_type: using rank(-log10(FDR)) cutoff instead of the default -log10(FDR) cutoff + - --split__threshold_values: selecting the top 200 and 1000 most significant results + - --do_func_anno_enrichment: disabling functional annotation enrichment analysis. + - --do_motif_enrichment: disabling motifs enrichment analysis. +# Looking at correlation between comparisons for different experiment types -``` -cat design/regions_to_remove_empty.tsv -``` +A key result to look at this point is the `Heatmaps__genes_self.pdf` and `Heatmaps__peaks_self.pdf` figures in the `results/tutorial/Figures_Merged/3_Enrichment_Analysis` folder. These figures will give a concise overview of how the various samples and comparisons correlate with each other. Here are the gene self-overlap figures for the top 1000 most significant DA entries per comparison, with first the DEGs (Differentially Expressed Genes), then the genes associated with DARs (Differentially Accessible regions), and finally the HA-HE and LA-LE genes (DEGs with neighbouring DARs with expected chromatin accessibility changes): -We will now run Cactus. We don't specify the peaks to remove at first. + +These figures reveal clearly concordant changes between the hmg-4 and the spt-16 knockdown in both experiment type. The similar number of DA entries is expected as we selected the top 1000 most significant DA entries per comparisons. However, it is striking to observe the same number of shared repressed regions/genes between knockdown of the hmg-4 and spt-16 in the ATAC-Seq and mRNA-Seq analysis (~290 each), while the ATAC-Seq pvalues were much higher. This result support the idea that p-values can not always directly be compared between assays and experiment to infer true functional/biological relevance of the results. And therefore, it can make sense to focus on the top N most significant entries between the two omics experimental results to study consistent chromatin and gene expression changes. Interestingly, while only ~30 repressed genes had a nearby closing in chromatin for both factors, we can see that a fifth of those are overlaping. +Altogether, these results indicate that using the ranks can be a useful way to combine the two omics data type. However, sequencing deeper the ATAC-Seq data would obviously be another good strategy to have more robust ATAC-Seq results. -# Setting up configuration files -The previous +# Running the full analysis -# Running preprocessing and checking quality controls +Finally, we can run the full analysis: +```bash +nextflow run jsalignon/cactus -profile singularity -r $cactus_version \ + --res_dir results/tutorial \ + --species worms \ + --chromatin_state iHMM.M1K16.worm_L3 \ + --design__regions_to_remove design/regions_to_remove.tsv +``` -# Running differential analysis, filtering, and selecting PA filters +Please, note that the pipeline can currently break if the heatmap filtering parameters reduce certain DAS to 1 entry or less. If such crash occur, one can modify the `--heatmaps_filter__func_anno`, `--heatmaps_filter__CHIP`, and the `--heatmaps_filter__motifs` filters. -# Running enrichment analysis between comparisons +The `--barplots_ggplot__*`, `--heatmaps_params__*`, and `--heatmaps_ggplot__*` parameters can further be used to adjust the barplot and heatmap parameters. -# Running the full analysis diff --git a/docs/examples/png/ATAC__all__1000__ctl__genes_self__heatmap.png b/docs/examples/png/ATAC__all__1000__ctl__genes_self__heatmap.png new file mode 100644 index 0000000000000000000000000000000000000000..52263427b42994e3aff198d210e2ba6b4dc3c1f3 GIT binary patch literal 132013 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 literal 0 HcmV?d00001 diff --git a/docs/examples/png/both__all__1000__ctl__genes_self__heatmap.png b/docs/examples/png/both__all__1000__ctl__genes_self__heatmap.png new file mode 100644 index 0000000000000000000000000000000000000000..cfeb600c13f307f273f47e4b155a543459635695 GIT binary patch literal 112187 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