annotate fcs_scatterplot/getDensityPlots.R @ 0:164cd5384f1d draft

Uploaded
author immport-devteam
date Mon, 27 Feb 2017 12:52:20 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
1 # Density Plot Module for Galaxy
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
2 # FlowDensity
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
3 ######################################################################
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
4 # Copyright (c) 2016 Northrop Grumman.
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
5 # All rights reserved.
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
6 ######################################################################
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
7 #
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
8 # Version 1
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
9 # Cristel Thomas
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
10 #
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
11 #
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
12
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
13 library(flowCore)
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
14 library(flowDensity)
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
15
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
16 generateGraph <- function(input, channels, output, plot_default, flag_pdf, pdf_out) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
17 fcs <- read.FCS(input, transformation=F)
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
18 ## marker names
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
19 markers <- colnames(fcs)
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
20 print_markers <- as.vector(pData(parameters(fcs))$desc)
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
21 # Update print_markers if the $P?S not in the FCS file
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
22 for (i in 1:length(print_markers)) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
23 if (is.na(print_markers[i])) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
24 print_markers[i] <- markers[i]
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
25 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
26 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
27
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
28 if (plot_default) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
29 channels <- c(grep(colnames(fcs), pattern="Forward scatter", ignore.case=TRUE),
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
30 grep(colnames(fcs), pattern="Side scatter", ignore.case=TRUE))
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
31 if (length(channels) == 0){
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
32 channels <- c(grep(colnames(fcs), pattern="FSC"),
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
33 grep(colnames(fcs), pattern="SSC"))
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
34 if (length(channels) > 2) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
35 #get first FSC and corresponding SSC
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
36 channels <- c(grep(colnames(fcs), pattern="FSC-A"),
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
37 grep(colnames(fcs), pattern="SSC-A"))
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
38 if (length(channels) == 0) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
39 channels <- c(grep(colnames(fcs), pattern="FSC-H"),
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
40 grep(colnames(fcs), pattern="SSC-H"))
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
41 if (length(channels) == 0) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
42 channels <- c(grep(colnames(fcs), pattern="FSC-W"),
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
43 grep(colnames(fcs), pattern="SSC-W"))
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
44 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
45 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
46 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
47 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
48 if (length(channels) == 0) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
49 warning('No forward/side scatter channels found, no plots will be generated.')
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
50 quit(save = "no", status = 10, runLast = FALSE)
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
51 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
52 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
53
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
54 nb_markers <- length(channels)
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
55 for (j in nb_markers) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
56 if (channels[j] > length(markers)){
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
57 warning('Please indicate markers between 1 and ', length(markers))
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
58 quit(save = "no", status = 10, runLast = FALSE)
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
59 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
60 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
61 png(output, type="cairo", height=600, width=600)
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
62 par(mfrow=c(2,2))
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
63 for (m in 1:(nb_markers - 1)) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
64 for (n in (m+1):nb_markers) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
65 plotDens(fcs, c(channels[m],channels[n]), xlab = print_markers[channels[m]], ylab = print_markers[channels[n]])
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
66 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
67 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
68 dev.off()
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
69
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
70 if (flag_pdf) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
71 pdf(pdf_out, useDingbats=FALSE, onefile=TRUE)
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
72 par(mfrow=c(2,2))
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
73 for (m in 1:(nb_markers - 1)) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
74 for (n in (m+1):nb_markers) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
75 plotDens(fcs, c(channels[m],channels[n]), xlab = print_markers[channels[m]], ylab = print_markers[channels[n]])
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
76 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
77 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
78 dev.off()
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
79 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
80 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
81
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
82 checkFCS <- function(input_file, channels, output_file, plot_default, flag_pdf, pdf_out) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
83 isValid <- F
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
84 # Check file beginning matches FCS standard
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
85 tryCatch({
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
86 isValid = isFCSfile(input_file)
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
87 }, error = function(ex) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
88 print (paste(" ! Error in isFCSfile", ex))
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
89 })
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
90
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
91 if (isValid) {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
92 generateGraph(input_file, channels, output_file, plot_default, flag_pdf, pdf_out)
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
93 } else {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
94 print (paste(input_file, "does not meet FCS standard"))
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
95 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
96 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
97
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
98 args <- commandArgs(trailingOnly = TRUE)
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
99 channels <- ""
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
100 flag_default <- FALSE
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
101 flag_pdf <- FALSE
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
102 pdf_output <- ""
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
103
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
104 if (args[3]=="None") {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
105 flag_default <- TRUE
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
106 } else {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
107 if (args[3] == "i.e.:1,3,4"){
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
108 flag_default <- TRUE
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
109 } else {
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
110 channels <- as.numeric(strsplit(args[3], ",")[[1]])
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
111 for (channel in channels){
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
112 if (is.na(channel)){
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
113 quit(save = "no", status = 11, runLast = FALSE)
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
114 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
115 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
116 if (length(channels) == 1){
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
117 warning('Please indicate more than one marker to plot.')
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
118 quit(save = "no", status = 10, runLast = FALSE)
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
119 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
120 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
121 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
122
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
123 if (args[5] == "TRUE"){
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
124 pdf_output <- args[6]
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
125 flag_pdf <- TRUE
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
126 }
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
127
164cd5384f1d Uploaded
immport-devteam
parents:
diff changeset
128 checkFCS(args[2], channels, args[4], flag_default, flag_pdf, pdf_output)