7
|
1 #!/usr/bin/Rscript
|
|
2
|
|
3 #-----------------------------------#
|
|
4 # Author: Maude #
|
|
5 # Script: figs_MutSpecStat_Galaxy.r #
|
|
6 # Last update: 18/10/16 #
|
|
7 #-----------------------------------#
|
|
8
|
|
9
|
|
10 #########################################################################################################################################
|
|
11 # Create the figures for the report and the HTML page #
|
|
12 #########################################################################################################################################
|
|
13
|
|
14
|
|
15 #-------------------------------------------------------------------------------
|
|
16 # Load library for recovering the arguments
|
|
17 #-------------------------------------------------------------------------------
|
|
18 suppressMessages(suppressWarnings(require("getopt")))
|
|
19
|
|
20
|
|
21
|
|
22 #-------------------------------------------------------------------------------
|
|
23 # Recover the arguments
|
|
24 #-------------------------------------------------------------------------------
|
|
25 spec = matrix(c(
|
|
26 "folderFigure", "folderFigure", 1, "character",
|
|
27 "folderTemp", "folderTemp", 1, "character",
|
|
28 "filename", "filename", 1, "character",
|
|
29 "help", "h", 0, "logical"
|
|
30 ),
|
|
31 byrow=TRUE, ncol=4
|
|
32 )
|
|
33
|
|
34 opt = getopt(spec)
|
|
35
|
|
36 # No argument is pass to the command line
|
|
37 if(length(opt) == 1)
|
|
38 {
|
|
39 cat(paste("Usage:\n figs_MutSpecStat_Galaxy.r --folderFigure <path_to_folder> --folderTemp <path_to_tempFolder> --filename <filename> \n",sep=""))
|
|
40 q(status=1)
|
|
41 }
|
|
42
|
|
43 # Help was asked for.
|
|
44 if ( !is.null(opt$help) )
|
|
45 {
|
|
46 # print a friendly message and exit with a non-zero error code
|
|
47 cat(paste("Usage:\n figs_MutSpecStat_Galaxy.r --folderFigure <path_to_folder> --filename <filename> \n",sep=""))
|
|
48 q(status=1)
|
|
49 }
|
|
50
|
|
51
|
|
52
|
|
53 #-------------------------------------------------------------------------------
|
|
54 # Load library
|
|
55 #-------------------------------------------------------------------------------
|
|
56 suppressMessages(suppressWarnings(library(ggplot2)))
|
|
57 suppressMessages(suppressWarnings(library(gplots)))
|
|
58 suppressMessages(suppressWarnings(library(gtable)))
|
|
59 suppressMessages(suppressWarnings(library(grid)))
|
|
60
|
|
61
|
|
62
|
|
63
|
|
64 #-------------------------------------------------------------------------------
|
|
65 # OVERALL MUTATION DISTRIBUTION
|
|
66 #-------------------------------------------------------------------------------
|
|
67 inputDistrMut <- paste0(opt$folderFigure, "/Overall_mutation_distribution/", opt$filename, "/", opt$filename, "-OverallMutationDistribution.txt")
|
|
68 outputDistrMut <- paste0(opt$folderFigure, "/Overall_mutation_distribution/", opt$filename, "/", opt$filename, "-OverallMutationDistribution.png")
|
|
69
|
|
70 # Load the input file
|
|
71 distrMut <- read.table(inputDistrMut, header=T)
|
|
72
|
|
73 # Add the count of each category in the legend
|
|
74 distrMut$Legend[[1]] <- paste0(distrMut$Variant_type[[1]], " (", distrMut$Count[[1]], ")")
|
|
75 distrMut$Legend[[2]] <- paste0(distrMut$Variant_type[[2]], " (", distrMut$Count[[2]], ")")
|
|
76 distrMut$Legend[[3]] <- paste0(distrMut$Variant_type[[3]], " (", distrMut$Count[[3]], ")")
|
|
77
|
|
78 # Base plot
|
|
79 pie <- ggplot(distrMut, aes(x=factor(""), fill=Legend, weight=Count)) + geom_bar(width=1) + coord_polar(theta="y") + scale_x_discrete("", breaks=NULL) + scale_y_continuous("", breaks=NULL) + labs(fill="")
|
|
80 # Background of the plot entire white
|
|
81 pie <- pie + theme(panel.grid.major = element_line(colour="white"), panel.grid.minor = element_line(colour="white"), panel.background = element_rect(fill="white"))
|
|
82 # Legend on right in 3 rows
|
|
83 pie <- pie + theme(legend.position="bottom") + guides(fill=guide_legend(nrow=3))
|
|
84 # Change the color and the title of the legend
|
|
85 pie <- pie + scale_fill_brewer("Variant type", palette="Set1")
|
|
86 # Remove all the margins
|
|
87 pie <- pie + theme(plot.margin=unit(c(-1, 0, -1.5, 0), "cm"))
|
|
88 # Save the pie chart for the HTML page (higher resolution)
|
|
89 options(bitmapType='cairo') # Use cairo device as isn't possible to install X11 on the server...
|
|
90 png(outputDistrMut, width=700, height=1100, res=300)
|
|
91 print(pie)
|
|
92 dev.off()
|
|
93
|
|
94
|
|
95
|
|
96 #-------------------------------------------------------------------------------
|
|
97 # SBS MUTATION DISTRIBUTION
|
|
98 #-------------------------------------------------------------------------------
|
|
99 inputDistrSBS <- paste0(opt$folderFigure, "/SBS_distribution/", opt$filename, "/", opt$filename, "-SBS_distribution.txt")
|
|
100 outputDistrSBS <- paste0(opt$folderFigure, "/SBS_distribution/", opt$filename, "/", opt$filename, "-SBS_distribution.png")
|
|
101 outputDistrSBSReport <- paste0(opt$folderTemp, "/", opt$filename, "-SBS_distribution-Report.png")
|
|
102
|
|
103
|
|
104 # Load the input file
|
|
105 distrSBS <- read.delim(inputDistrSBS)
|
|
106 distrSBS <- data.frame(distrSBS)
|
|
107 bar <- ggplot(distrSBS, aes(x=Mutation_Type, y=Percentage, fill=Mutation_Type))
|
|
108 bar <- bar + geom_bar(stat="identity", width=0.5)
|
|
109 # Theme classic
|
|
110 bar <- bar + theme_classic()
|
|
111 # Remove the axis legend
|
|
112 bar <- bar + xlab("")
|
|
113 # Set the color of the bars and Changing the labels in the legend
|
|
114 bar <- bar + scale_fill_manual(values=c("blue", "black", "red", "gray", "#00CC33", "pink"),
|
|
115 labels=c("C:G>A:T", "C:G>G:C", "C:G>T:A", "T:A>A:T", "T:A>C:G", "T:A>G:C")
|
|
116 )
|
|
117 # Remove the label in x axis
|
|
118 bar <- bar + theme(axis.text.x = element_blank())
|
|
119 # Change the name of the y label
|
|
120 bar <- bar + ylab("Percent")
|
|
121 # Save the plot for the HTML page (higher resolution)
|
|
122 png(outputDistrSBS, width=1800, height=1500, res=300)
|
|
123 print(bar)
|
|
124 dev.off()
|
|
125 # Save the plot for the report
|
|
126 bar
|
|
127 ggsave(outputDistrSBSReport)
|
|
128
|
|
129
|
|
130
|
|
131 #-------------------------------------------------------------------------------
|
|
132 # IMPACT ON PROTEIN
|
|
133 #-------------------------------------------------------------------------------
|
|
134 inputImpactProt <- paste0(opt$folderFigure, "/Impact_protein_sequence/", opt$filename, "/", opt$filename, "-DistributionExoFunc.txt")
|
|
135 outputImpactProt <- paste0(opt$folderFigure, "/Impact_protein_sequence/", opt$filename, "/", opt$filename, "-DistributionExoFunc.png")
|
|
136 outputImpactProtReport <- paste0(opt$folderTemp, "/", opt$filename, "-DistributionExoFunc-Report.png")
|
|
137
|
|
138 # Load the input file
|
|
139 impactProt <- read.table(inputImpactProt, header=T)
|
|
140 # Custom palette: black, orange, dark green, yellow, light blue, dark blue, darkslateblue, red, purple, pink, light green, turquoise, gray
|
|
141 cb_palette <- c("#000000", "#E69F00", "#006600", "#660000", "#F0E442", "#56B4E9", "#3300FF", "#483D8B", "#FF0000", "#9900CC", "#FF66CC", "#00CC00", "#66FFFF", "#C0C0C0")
|
|
142 pie <- ggplot(impactProt, aes(x=factor(""), fill=AA_Change, weight=Count)) + geom_bar(width=1) + coord_polar(theta="y") + scale_x_discrete("", breaks=NULL)+ scale_y_continuous("", breaks=NULL) + scale_fill_manual(values=cb_palette)
|
|
143 # Background of the plot entire white
|
|
144 pie <- pie + theme(panel.grid.major = element_line(colour="white"), panel.grid.minor = element_line(colour="white"), panel.background = element_rect(fill="white"))
|
|
145 # Legend in two column
|
|
146 pie <- pie + guides(fill=guide_legend(ncol=2)) + theme(legend.position="bottom")
|
|
147 # Remove the legend title
|
|
148 pie <- pie + labs(fill="")
|
|
149 # Save the plot for the HTML page (higher resolution)
|
|
150 png(outputImpactProt, width=1600, height=1800, res=300)
|
|
151 print(pie)
|
|
152 dev.off()
|
|
153 # Save the plot for the report
|
|
154 pie
|
|
155 ggsave(outputImpactProtReport)
|
|
156
|
|
157
|
|
158
|
|
159
|
|
160 #-------------------------------------------------------------------------------
|
|
161 # STRAND BIAS
|
|
162 #-------------------------------------------------------------------------------
|
|
163 inputSB <- paste0(opt$folderFigure, "/Stranded_Analysis/", opt$filename, "/", opt$filename, "-StrandBias.txt")
|
|
164 outputSB <- paste0(opt$folderFigure, "/Stranded_Analysis/", opt$filename, "/", opt$filename, "-StrandBias.png")
|
|
165 outputSBReport <- paste0(opt$folderTemp, "/", opt$filename, "-StrandBias-Report.png")
|
|
166
|
|
167 # Load the input file
|
|
168 file_sb <- read.table(inputSB, header=T)
|
|
169 # Custom palette (blue, red)
|
|
170 cb_palette_SB <- c("#0072B2", "#CC0000")
|
|
171 # Base plot
|
|
172 p_sb <- ggplot(file_sb, aes(x=Alteration, y=Count, fill=Strand)) + theme_classic() + geom_bar(stat="identity", position="dodge") + scale_fill_manual(values=cb_palette_SB) + theme(axis.text.x = element_text(angle=60, hjust=1)) + xlab("") + theme(legend.position="bottom")
|
|
173 # Save the plot for the HTML page (higher resolution)
|
|
174 png(outputSB, width=1000, height=1200, res=300)
|
|
175 print(p_sb)
|
|
176 dev.off()
|
|
177 # Save the plot for the report
|
|
178 p_sb
|
|
179 ggsave(outputSBReport)
|
|
180
|
|
181
|
|
182
|
|
183
|
|
184 #-------------------------------------------------------------------------------
|
|
185 # HEATMAP SEQUENCE CONTEXT - GENOMIC STRAND
|
|
186 #-------------------------------------------------------------------------------
|
|
187 inputHeatmapGenomic <- paste0(opt$folderFigure, "/Trinucleotide_Sequence_Context/", opt$filename, "/", opt$filename, "-HeatmapCount-Genomic.txt")
|
|
188 outputHeatmapGenomic <- paste0(opt$folderFigure, "/Trinucleotide_Sequence_Context/", opt$filename, "/", opt$filename, "-HeatmapCount-Genomic.png")
|
|
189 outputHeatmapGenomicReport <- paste0(opt$folderTemp, "/", opt$filename, "-HeatmapCount-Genomic-Report.png")
|
|
190
|
|
191 inputHeatmapGenomicPercent <- paste0(opt$folderFigure, "/Trinucleotide_Sequence_Context/", opt$filename, "/", opt$filename, "-HeatmapPercent-Genomic.txt")
|
|
192 outputHeatmapGenomicPercent <- paste0(opt$folderFigure, "/Trinucleotide_Sequence_Context/", opt$filename, "/", opt$filename, "-HeatmapPercent-Genomic.png")
|
|
193 outputHeatmapGenomicPercentReport <- paste0(opt$folderTemp, "/", opt$filename, "-HeatmapPercent-Genomic-Report.png")
|
|
194
|
|
195
|
|
196 ## COUNT
|
|
197 heatmap_C <- read.table(inputHeatmapGenomic, header=T)
|
|
198 # Save the plot for the report
|
|
199 png(filename=outputHeatmapGenomicReport, bg="transparent", width=240, height=360)
|
|
200 # Heatmap with an absolute scale
|
|
201 heatmap.2(as.matrix(heatmap_C),Rowv=F,Colv=F,col=colorpanel(384,low="yellow",high="red"),dendrogram="none",scale="none",trace="none",key=F,labRow=rownames(as.matrix(heatmap_C)),labCol=colnames(as.matrix(heatmap_C)),lmat=rbind(c(5,1,4),c(3,1,2)), lhei=c(0.75,0.75),lwid=c(0.5,1.5,0.5))
|
|
202 dev.off()
|
|
203 # Save the plot for the HTML page (higher resolution)
|
|
204 png(filename=outputHeatmapGenomic, width=1100, height=1600, res=300)
|
|
205 heatmap.2(as.matrix(heatmap_C),Rowv=F,Colv=F,col=colorpanel(384,low="yellow",high="red"),dendrogram="none",scale="none",trace="none",key=F,labRow=rownames(as.matrix(heatmap_C)),labCol=colnames(as.matrix(heatmap_C)),lmat=rbind(c(5,1,4),c(3,1,2)), lhei=c(0.75,0.75),lwid=c(0.5,1.5,0.5))
|
|
206 dev.off()
|
|
207
|
|
208 ## PERCENT
|
|
209 heatmap_P <- read.table(inputHeatmapGenomicPercent, header=T)
|
|
210 # Save the plot for the report
|
|
211 png(filename=outputHeatmapGenomicPercentReport,bg="transparent", width=240, height=360)
|
|
212 # Heatmap with an absolute scale
|
|
213 heatmap.2(as.matrix(heatmap_P),Rowv=F,Colv=F,col=colorpanel(384,low="yellow",high="red"),dendrogram="none",scale="none",trace="none",key=F,labRow=rownames(as.matrix(heatmap_P)),labCol=colnames(as.matrix(heatmap_P)),lmat=rbind(c(5,1,4),c(3,1,2)), lhei=c(0.75,0.75),lwid=c(0.5,1.5,0.5))
|
|
214 dev.off()
|
|
215 # Save the plot for the HTML page (higher resolution)
|
|
216 png(filename=outputHeatmapGenomicPercent, width=1100, height=1600, res=300)
|
|
217 heatmap.2(as.matrix(heatmap_P),Rowv=F,Colv=F,col=colorpanel(384,low="yellow",high="red"),dendrogram="none",scale="none",trace="none",key=F,labRow=rownames(as.matrix(heatmap_P)),labCol=colnames(as.matrix(heatmap_P)),lmat=rbind(c(5,1,4),c(3,1,2)), lhei=c(0.75,0.75),lwid=c(0.5,1.5,0.5))
|
|
218 dev.off()
|