annotate QDNAseq.R @ 68:68a090cffb6f draft

Uploaded
author stef
date Tue, 26 Aug 2014 07:49:13 -0400
parents 2d939f4c23fe
children b4477584bb03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
1 #!/usr/bin/Rscript
336697c6f7fa Uploaded
stef
parents:
diff changeset
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
3 ## --------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
4 ## prints all arguments as msg
336697c6f7fa Uploaded
stef
parents:
diff changeset
5 ## --------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
6 catMsg <- function( msg=c() ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
7 cat( MAIN_NAME, paste( msg, collapse="" ), "\n", sep='')
336697c6f7fa Uploaded
stef
parents:
diff changeset
8 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
9 ## --------------------
28
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
10 ## return the location of this script
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
11 ## --------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
12 getScriptPath <- function(){
336697c6f7fa Uploaded
stef
parents:
diff changeset
13 cmd.args <- commandArgs()
336697c6f7fa Uploaded
stef
parents:
diff changeset
14 m <- regexpr("(?<=^--file=).+", cmd.args, perl=TRUE)
336697c6f7fa Uploaded
stef
parents:
diff changeset
15 script.dir <- dirname(regmatches(cmd.args, m))
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
16 if( length(script.dir) == 0 ) stop("[ERR] Can't determine script dir: please call the script with Rscript\n")
4351c7715275 Uploaded
stef
parents: 40
diff changeset
17 if( length(script.dir) > 1 ) stop("[ERR] Can't determine script dir: more than one '--file' argument detected\n")
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
18 return(script.dir)
336697c6f7fa Uploaded
stef
parents:
diff changeset
19 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
20 ## --------------------
28
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
21 ## Some html creation functions
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
22 ## --------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
23 htmlTableRow <- function( string_array=c() ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
24 td_cells <- ''
336697c6f7fa Uploaded
stef
parents:
diff changeset
25 for ( i in string_array ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
26 td_cells <- paste( td_cells, '<td>', i, '</td>', sep='' )
336697c6f7fa Uploaded
stef
parents:
diff changeset
27 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
28 return( paste( "<tr>", td_cells, "</tr>") )
336697c6f7fa Uploaded
stef
parents:
diff changeset
29 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
30 htmlLink <- function( path, desc="LINK" ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
31 return( paste( '<a href="', path, '">', desc, "</a>", sep='') )
336697c6f7fa Uploaded
stef
parents:
diff changeset
32 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
33 ## --------------------
28
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
34 ## constructs a list with input bam file info
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
35 ## --------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
36 makeBamFileList <- function( paths, names ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
37 tmp <- list()
336697c6f7fa Uploaded
stef
parents:
diff changeset
38 l1 <- length(paths)
336697c6f7fa Uploaded
stef
parents:
diff changeset
39 l2 <- length(names)
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
40 if ( l1 != l2 ) stop( "Unequal amount of bam-paths (", l1, ") and -names (", l2, ") in makeBamFileList!!!\n" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
41 for ( i in 1:length(paths) ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
42 path <- paths[i]
336697c6f7fa Uploaded
stef
parents:
diff changeset
43 name <- names[i]
336697c6f7fa Uploaded
stef
parents:
diff changeset
44 file <- basename(path)
336697c6f7fa Uploaded
stef
parents:
diff changeset
45
336697c6f7fa Uploaded
stef
parents:
diff changeset
46 tmp[[ file ]] <- name
336697c6f7fa Uploaded
stef
parents:
diff changeset
47 tmp[[ 'all_paths' ]] <- c( tmp[[ 'all_paths' ]], path )
336697c6f7fa Uploaded
stef
parents:
diff changeset
48 tmp[[ 'all_files' ]] <- c( tmp[[ 'all_files' ]], file )
336697c6f7fa Uploaded
stef
parents:
diff changeset
49 tmp[[ 'all_names' ]] <- c( tmp[[ 'all_names' ]], name )
336697c6f7fa Uploaded
stef
parents:
diff changeset
50 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
51 return( tmp )
336697c6f7fa Uploaded
stef
parents:
diff changeset
52 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
53
336697c6f7fa Uploaded
stef
parents:
diff changeset
54 ## --------------------
28
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
55 ## copied code for extracting the regions by segment call status
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
56 ## --------------------
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
57 fuseRegions <- function( obj, minRatio=0 ) {
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
58 if ( ncol(obj) > 1 ) stop('Please specify which sample...')
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
59
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
60 data <- data.frame( obj@featureData@data[,1:3], copynumber(obj), segmented(obj), check.names=FALSE, stringsAsFactors=FALSE)
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
61 colnames( data ) <- c( "chr", "start", "end", "log2", "segmentval" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
62
336697c6f7fa Uploaded
stef
parents:
diff changeset
63 fused.data <- data.frame()
336697c6f7fa Uploaded
stef
parents:
diff changeset
64 curr.bin <- 1
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
65 for ( chr in unique( data$chr ) ) {
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
66 chr.data <- data[ data$chr == chr, ]
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
67 prev.bin <- curr.bin
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
68 prev.log2 <- chr.data[ 1, 'log2' ]
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
69 prev.segm <- chr.data[ 1, 'segmentval' ]
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
70 start <- chr.data[ 1, 'start' ]
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
71
336697c6f7fa Uploaded
stef
parents:
diff changeset
72 if ( nrow(chr.data) > 1) {
336697c6f7fa Uploaded
stef
parents:
diff changeset
73 for ( i in 2:nrow(chr.data) ) {
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
74 curr.bin <- curr.bin + 1
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
75 curr.segm <- chr.data[ i, 'segmentval']
336697c6f7fa Uploaded
stef
parents:
diff changeset
76
336697c6f7fa Uploaded
stef
parents:
diff changeset
77 if ( curr.segm != prev.segm ) {
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
78 fused.data <- rbind( fused.data, data.frame( chr=chr, start=start, end=chr.data[ i-1, 'end'], segmentval=round(prev.segm, digits=DECIMALS) ) )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
79 prev.segm <- curr.segm
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
80 prev.bin <- curr.bin
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
81 start <- chr.data[ i, 'start']
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
82 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
83 }
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
84 fused.data <- rbind( fused.data, data.frame( chr=chr, start=start, end=chr.data[ i-1, 'end'], segmentval=round(prev.segm, digits=DECIMALS) ) )
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
85 }else{
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
86 fused.data <- rbind( fused.data, data.frame( chr=chr, start=start, end=chr.data[ i-1, 'end'], segmentval=round(prev.segm, digits=DECIMALS) ) )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
87 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
88 }
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
89 ## remove regions with low amplitude
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
90 fused.data <- fused.data[ abs(fused.data$segmentval) >= minRatio, ]
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
91 fused.data
336697c6f7fa Uploaded
stef
parents:
diff changeset
92 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
93
336697c6f7fa Uploaded
stef
parents:
diff changeset
94 ## DESC: takes the output of fuse.regions and outputs a txt file per sample
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
95 outputRegionsFromList <- function ( regionsList, outputBasename, outputDir="./", binSize, storeList ){
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
96 if ( missing(regionsList) ) stop( 'Please provide regionsList...' )
336697c6f7fa Uploaded
stef
parents:
diff changeset
97 if ( missing(outputBasename) ) stop( 'Please provide outputBasename...' )
336697c6f7fa Uploaded
stef
parents:
diff changeset
98 if ( !is.list(regionsList) ) stop( 'Input not a list...?' )
336697c6f7fa Uploaded
stef
parents:
diff changeset
99 if ( length(regionsList) < 1 ) stop( 'List seems empty...?' )
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
100 if ( file.exists( outputDir ) ) catMsg( c(" Using dir ", outputDir, " for output") )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
101 else dir.create( outputDir )
336697c6f7fa Uploaded
stef
parents:
diff changeset
102
336697c6f7fa Uploaded
stef
parents:
diff changeset
103 ## have to set R output options otherwise scientific method is used at some point
336697c6f7fa Uploaded
stef
parents:
diff changeset
104 options( "scipen"=100 )
336697c6f7fa Uploaded
stef
parents:
diff changeset
105
336697c6f7fa Uploaded
stef
parents:
diff changeset
106 sampleCount <- length( regionsList )
336697c6f7fa Uploaded
stef
parents:
diff changeset
107 sampleNames <- names( regionsList )
336697c6f7fa Uploaded
stef
parents:
diff changeset
108 bedgraphColumns <- c( 'chr', 'start', 'end', 'segmentval' )
30
647143d0c884 Uploaded
stef
parents: 29
diff changeset
109
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
110 catMsg( c( " There are ", sampleCount, " samples found in input list") )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
111
336697c6f7fa Uploaded
stef
parents:
diff changeset
112 for ( sample in sampleNames ){
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
113 catMsg( c(" Working on sample ", sample ) )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
114 regionCount <- nrow( regionsList[[sample]] )
336697c6f7fa Uploaded
stef
parents:
diff changeset
115
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
116 outSampleBase <- paste( outputBasename, '_', sample, '_', binSize, 'kbp', sep='')
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
117 outBedgraphFile <- paste( outSampleBase, '.bedGraph', sep="" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
118 outBedgraphPath <- paste( outputDir, '/', outBedgraphFile, sep="" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
119
336697c6f7fa Uploaded
stef
parents:
diff changeset
120 ## ---------- BEDGRAPH ----------
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
121 txt <- paste( "track type=bedGraph color=0,100,0 altColor=255,0,0 name=", sample," description=segmented_regions_from_QDNAseq_",binSize,"kbp\n", sep="")
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
122 sink( outBedgraphPath )
336697c6f7fa Uploaded
stef
parents:
diff changeset
123 cat( txt )
336697c6f7fa Uploaded
stef
parents:
diff changeset
124 sink()
336697c6f7fa Uploaded
stef
parents:
diff changeset
125 write.table( regionsList[[sample]][,bedgraphColumns], outBedgraphPath, quote=F, sep="\t", row.names=F, append=T, col.names=F)
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
126 #outFiles[[sample]] <- c( outBedgraphFile )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
127 storeList[[ paste( binSize, sample, 'bedgraph', sep="_")]] <- outBedgraphFile
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
128 }
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
129 return(storeList)
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
130 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
131
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
132
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
133 ## ==================================================
336697c6f7fa Uploaded
stef
parents:
diff changeset
134 ## Start of analysis
336697c6f7fa Uploaded
stef
parents:
diff changeset
135 ## ==================================================
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
136 MAIN_NAME <- '[INFO] '
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
137 TOOL_PATH <- getScriptPath()
67
2d939f4c23fe Uploaded
stef
parents: 66
diff changeset
138 CSS_FILE <- paste( TOOL_PATH, '/static/css/QDNAseq.css', sep="" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
139 DECIMALS <- 3
336697c6f7fa Uploaded
stef
parents:
diff changeset
140 WEB_LINK <- 'http://www.bioconductor.org/packages/release/bioc/html/QDNAseq.html'
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
141 PURE_CSS <- 'http://yui.yahooapis.com/pure/0.5.0/pure-min.css'
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
142
336697c6f7fa Uploaded
stef
parents:
diff changeset
143 catMsg( "Starting QDNAseq wrapper" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
144 catMsg( "Loading R libraries" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
145 suppressWarnings( suppressMessages( library( QDNAseq, quietly = TRUE ) ) )
336697c6f7fa Uploaded
stef
parents:
diff changeset
146 suppressWarnings( suppressMessages( library( CGHcall, quietly = TRUE ) ) )
25
8509c112abaa Uploaded
stef
parents: 2
diff changeset
147
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
148 ## only one param: the tmp config file
336697c6f7fa Uploaded
stef
parents:
diff changeset
149 cmdLineArgs <- commandArgs(TRUE)
336697c6f7fa Uploaded
stef
parents:
diff changeset
150 config <- cmdLineArgs[1]
336697c6f7fa Uploaded
stef
parents:
diff changeset
151
336697c6f7fa Uploaded
stef
parents:
diff changeset
152 ## sourcing the config file will load all input params
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
153 ## many variables are imported via sourced "config"
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
154 source( config )
336697c6f7fa Uploaded
stef
parents:
diff changeset
155
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
156 ## desparate tries to make png text scale well, damn you R...!
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
157 PLOT_RES <- min( PLOT_WIDTH, PLOT_HEIGHT ) / 6.3
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
158 #PLOT_PS <- min( PLOT_WIDTH, PLOT_HEIGHT ) / 40
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
159 #TXT_FACTOR <- PLOT_WIDTH/480
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
160 #PAR_SET <- list( pch=22, cex.lab=TXT_FACTOR, cex.main=TXT_FACTOR )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
161 PAR_SET <- list( pch=22 )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
162
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
163 systemUser <- system("whoami",T)
4351c7715275 Uploaded
stef
parents: 40
diff changeset
164 qdnaseqVersion <- packageDescription( "QDNAseq" )$Version
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
165 rVersion <- R.version.string
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
166 startTime <- Sys.time()
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
167 analysisStart <- as.character( startTime )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
168 catMsg( c("QDNAseq version: ", qdnaseqVersion) )
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
169 catMsg( c( rVersion ) )
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
170
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
171 ## get the comma separated list of chromosomes to exclude
336697c6f7fa Uploaded
stef
parents:
diff changeset
172 excludeChrs <- unlist( strsplit( excludeChrsString, ",") )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
173 binSizes <- as.numeric( unlist( strsplit( binSizesString, ",") ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
174
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
175
336697c6f7fa Uploaded
stef
parents:
diff changeset
176 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
177 ## DEBUG
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
178 if ( debug ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
179 catMsg( c("Analysis run under user: ", systemUser ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
180 catMsg( c("Here comes sessionInfo: " ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
181 print( sessionInfo() )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
182 }
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
183 ## /DEBUG
336697c6f7fa Uploaded
stef
parents:
diff changeset
184 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
185
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
186 ## prepare output dir
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
187 if ( !file.exists( outputPath) ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
188 dir.create( outputPath )
336697c6f7fa Uploaded
stef
parents:
diff changeset
189 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
190
336697c6f7fa Uploaded
stef
parents:
diff changeset
191 ## copy source config file to output dir to include it in output zip
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
192 file.copy( config, paste(outputPath, 'galaxyConfigFile.R', sep='/') )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
193
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
194 ## setup bam filelist for easy retrieval later
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
195 fileList <- makeBamFileList( bamsPaths, bamsNames )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
196 bamCount <- length( fileList[[ 'all_paths' ]] )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
197
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
198 gzipOutputName <- paste( 'QDNAseqResults_', outputName, '.zip', sep='' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
199 gzipOutputPath <- paste( outputPath, '/', gzipOutputName, sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
200 htmlOutputName <- 'index.html'
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
201 htmlOutputPath <- paste( outputPath, '/', htmlOutputName, sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
202
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
203 plotted_images <- list() # to keep track of images for later linking
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
204 regions <- list() # will contain the segments
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
205 outputFiles <- list()
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
206
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
207 ## ------------------------
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
208 ## in case of debug just use inbuilt LGG data for speedup
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
209 if ( debug ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
210 binSizes <- c(15)
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
211 bamsPaths <- c( "BUILD_IN_DATA")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
212 bamsNames <- c( "LGG150")
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
213 fileList <- makeBamFileList( bamsPaths, bamsNames )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
214 bamCount <- length( fileList[[ 'all_paths' ]] )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
215 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
216
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
217 for ( binSize in binSizes ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
218
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
219 ## ------------------------
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
220 ## construct output file-names and -paths
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
221 ## ------------------------
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
222 robjReadCoName <- paste( binSize, 'kbp_QDNAseqReadCounts.rds', sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
223 robjCopyNrName <- paste( binSize, 'kbp_QDNAseqCopyNumbers.rds', sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
224 igvCopyNrName <- paste( binSize, 'kbp_QDNAseqCopyNumbers.igv', sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
225 robjSegmntName <- paste( binSize, 'kbp_QDNAseqCopyNumbersSegmented.rds', sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
226 regiOutputName <- paste( binSize, 'kbp_QDNAseqRegions.rds', sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
227 noiseImgName <- paste( binSize, 'kbp_QDNAseqNoiseplot.png', sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
228
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
229 robjReadCoPath <- paste( outputPath, '/', robjReadCoName, sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
230 robjCopyNrPath <- paste( outputPath, '/', robjCopyNrName, sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
231 robjSegmntPath <- paste( outputPath, '/', robjSegmntName, sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
232 robjRegionPath <- paste( outputPath, '/', regiOutputName, sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
233 igvCopyNrPath <- paste( outputPath, '/', igvCopyNrName, sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
234 noiseImgPath <- paste( outputPath, '/', noiseImgName, sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
235
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
236 binAnnotations <- getBinAnnotations( binSize=binSize, type=experimentType )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
237
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
238 ## in case of debug just use inbuilt LGG data for speedup
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
239 if ( debug ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
240 data(LGG150)
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
241 readCounts <- LGG150
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
242 }else{
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
243 ## provide bamnames because in galaxy everyting is called "dataset_###"
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
244 readCounts <- binReadCounts( binAnnotations, bamfiles=fileList[[ 'all_paths' ]], bamnames=fileList[[ 'all_names' ]] )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
245 }
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
246
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
247 readCountsFiltered <- applyFilters( readCounts, residual=TRUE, blacklist=filterBlacklistedBins, mappability=mappabilityCutoff, chromosomes=excludeChrs )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
248 readCountsFiltered <- estimateCorrection( readCountsFiltered )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
249 copyNumbers <- correctBins( readCountsFiltered )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
250 copyNumbersNormalized <- normalizeBins( copyNumbers )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
251 copyNumbersSmooth <- smoothOutlierBins( copyNumbersNormalized )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
252 sampleNames <- readCountsFiltered@phenoData@data$name
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
253
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
254 ## save objects to output dir
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
255 saveRDS( readCountsFiltered, robjReadCoPath );
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
256 saveRDS( copyNumbersSmooth, robjCopyNrPath );
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
257 exportBins( copyNumbersSmooth, file=igvCopyNrPath, format="igv" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
258
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
259 ## also save objects for galaxy history output if requested
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
260 if ( doOutputCopynumbersIgv ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
261 #@ a bit hacky galaxy way to allow an unknown number of output files based on param selection
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
262 #@ see: https://wiki.galaxyproject.org/Admin/Tools/Multiple%20Output%20Files
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
263 historyName <- paste(binSize, 'kbp-IGV', sep="")
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
264 igvFile <- paste( newFilePath, "/primary_", outputId, "_", historyName, "_visible_txt", sep="" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
265 exportBins( copyNumbersSmooth, file=igvFile, format="igv" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
266 catMsg( c("Exported igv file to history for ", binSize, "kbp bin") )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
267 }
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
268
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
269 ## proceed with calling if requested
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
270 if ( doSegment ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
271 copyNumbersSegmented <- segmentBins( copyNumbersSmooth, undo.splits=undoSplits, undo.SD=undoSD )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
272 copyNumbersSegmented <- normalizeSegmentedBins( copyNumbersSegmented )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
273 cgh <- makeCgh( copyNumbersSegmented )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
274 saveRDS( copyNumbersSegmented, robjSegmntPath );
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
275 }
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
276
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
277 ## ------------------------
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
278 ## create output files
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
279 ## ------------------------
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
280 png( noiseImgPath, width=PLOT_HEIGHT, height=PLOT_HEIGHT, res=PLOT_RES );
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
281 par( PAR_SET )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
282 noisePlot( readCountsFiltered, main=paste( "Noise Plot ", binSize, "kbp", sep=''), col="darkgreen" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
283 dev.off()
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
284
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
285 binSize <- as.character( binSize ) # to avoid R using it as array index... (*#$^@ you R!)
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
286 binSizeString <- paste( binSize, 'kbp', sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
287
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
288 for (i in 1:length(sampleNames) ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
289
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
290 sample <- sampleNames[i]
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
291 usedReads <- readCountsFiltered@phenoData@data$used.reads[i]
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
292 catMsg( c("Creating plots for sample: ", sample, " (", binSizeString, ")" ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
293
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
294 type <- 'CopyNumbers'
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
295 img_file <- paste( sample, '_', binSize, 'kbp_QDNAseq', type, '.png', sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
296 img_file_path <- paste( outputPath, '/', img_file, sep='' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
297
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
298 ## COPYNUMBER PLOT
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
299 png( img_file_path, width=PLOT_WIDTH, height=PLOT_HEIGHT, res=PLOT_RES );
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
300 par( PAR_SET )
68
68a090cffb6f Uploaded
stef
parents: 67
diff changeset
301 plot( copyNumbersSmooth[ ,sample ], main=paste(sample, ": CopyNumbers", sep="") )
68a090cffb6f Uploaded
stef
parents: 67
diff changeset
302 mtext( paste( binSizeString, " bins" sep=""), 3 )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
303 abline( h=c(-2,-1,1,2,3,4), lty=1, lwd=0.5, col="grey" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
304 dev.off()
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
305
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
306 plotted_images[[ paste(binSize, sample, type, sep="_" ) ]] <- img_file
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
307
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
308 if ( doSegment ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
309 type <- 'Segmented'
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
310 img_file <- paste( sample, '_', binSize, 'kbp_QDNAseq', type, '.png', sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
311 img_file_path <- paste( outputPath, '/', img_file, sep='' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
312
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
313 ## COPYNUMBER PLOT
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
314 png( img_file_path, width=PLOT_WIDTH, height=PLOT_HEIGHT, res=PLOT_RES );
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
315 par( PAR_SET )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
316 plot( copyNumbersSegmented[ ,sample ], main=paste(sample, ": CopyNumbers and Segments", sep="") );
67
2d939f4c23fe Uploaded
stef
parents: 66
diff changeset
317 mtext( paste( "(", binSizeString, " bins)" sep=""), 3 )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
318 abline( h=c(-2,-1,1,2,3,4), lty=1, lwd=0.5, col="grey" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
319 dev.off()
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
320
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
321 plotted_images[[ paste(binSize, sample, type, sep="_" ) ]] <- img_file
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
322
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
323 catMsg( c(" Fusing regions of sample: ", sample) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
324 regions[[ sample ]] <- fuseRegions( cgh[, sample] )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
325
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
326 region_count <- nrow( data.frame( regions[[ sample ]] ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
327 catMsg( c( ' sample "', sample, '" has ', region_count, " regions" ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
328 plotted_images[[ paste(binSize, sample, 'region_count', sep="_" ) ]] <- region_count
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
329 }
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
330
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
331 ## add USED read counts
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
332 plotted_images[[ paste(binSize, sample, 'usedReads', sep="_" ) ]] <- usedReads
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
333 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
334
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
335 if ( doSegment ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
336 saveRDS( regions, robjRegionPath )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
337 plotted_images <- outputRegionsFromList( regions, outputBasename=outputName, outputDir=outputPath, binSize=binSize, storeList=plotted_images )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
338 }
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
339 }# end bin
28
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
340
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
341
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
342 ## ----- debug -----
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
343 #catMsg( "done" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
344 #q(status=0)
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
345 ## ---- /debug -----
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
346
336697c6f7fa Uploaded
stef
parents:
diff changeset
347
336697c6f7fa Uploaded
stef
parents:
diff changeset
348 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
349 ## prepare output
336697c6f7fa Uploaded
stef
parents:
diff changeset
350 ## ------------------------
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
351 catMsg( "...zipping output")
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
352 zip_cmd <- paste( "zip -j", gzipOutputPath, paste(outputPath,'/*',sep='') ) ## -j is for removing dirs from the tree
336697c6f7fa Uploaded
stef
parents:
diff changeset
353 system( zip_cmd )
336697c6f7fa Uploaded
stef
parents:
diff changeset
354
336697c6f7fa Uploaded
stef
parents:
diff changeset
355 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
356 ## get filesizes for report
336697c6f7fa Uploaded
stef
parents:
diff changeset
357 ## ------------------------
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
358 zippedSize <- paste( round( file.info( gzipOutputPath )[["size"]] / 1e+6, digits=2 ), 'MB' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
359 endTime <- Sys.time()
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
360 timeDiff <- format( round( endTime - startTime, 3 ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
361 analysisEnd <- as.character( endTime )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
362
336697c6f7fa Uploaded
stef
parents:
diff changeset
363 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
364 ## creating html output to be linked to from the middle galaxy pane
336697c6f7fa Uploaded
stef
parents:
diff changeset
365 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
366 sink( file = htmlOutputPath, type = "output" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
367 cat( "<html>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
368 cat( "<head>\n")
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
369
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
370 cat( "\t", '<title>QDNAseq Report | ', outputName,'</title>', "\n", sep='' )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
371 cat( "\t", '<link rel="stylesheet" href="', PURE_CSS, '">', "\n", sep='' )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
372 cat( "\t<style>\n", sep='')
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
373 ## include CSS into html file, makes it more portable
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
374 cat( "\t\t", readLines( CSS_FILE ), sep="\n\t\t" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
375 #cat( "\t\th1 {color:red;}", "\n")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
376 cat( "\n\t</style>\n" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
377
336697c6f7fa Uploaded
stef
parents:
diff changeset
378 cat( "\n</head>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
379 cat( "\n<body>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
380
336697c6f7fa Uploaded
stef
parents:
diff changeset
381 cat( "<h1>QDNAseq Report</h1>", "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
382
336697c6f7fa Uploaded
stef
parents:
diff changeset
383 cat( '<h3 class="qdnaseq">About this analysis</h3>', "\n")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
384 cat( '<p>This page provides access to all results. To have a local copy of this report just download the <a href="', gzipOutputName, '" class="button">zipfile</a> with all output (', zippedSize, ')</p>', "\n", sep='')
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
385
336697c6f7fa Uploaded
stef
parents:
diff changeset
386 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
387 ## table with general info
336697c6f7fa Uploaded
stef
parents:
diff changeset
388 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
389 cat( '<h3 class="qdnaseq">Settings</h3><p>', "\n")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
390 cat( '<table class="pure-table pure-table-striped"><tbody>' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
391 cat( htmlTableRow( c( "AnalysisName", outputName ) ) )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
392 cat( htmlTableRow( c( "AnalysisStart", analysisStart ) ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
393 cat( htmlTableRow( c( "AnalysisEnd", analysisEnd ) ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
394 cat( htmlTableRow( c( "AnalysisTime", timeDiff ) ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
395 cat( htmlTableRow( c( "BinSizes (kbp)", paste(binSizes,collapse=", ") ) ) )
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
396 cat( htmlTableRow( c( "R info", rVersion ) ) )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
397 cat( htmlTableRow( c( "QDNAseq info", qdnaseqVersion ) ) )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
398
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
399 sampleStrings <- c()
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
400 for ( galaxyName in fileList[[ 'all_files' ]] ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
401 sampleName <- fileList[[ galaxyName ]]
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
402 sampleStrings <- c( sampleStrings, paste( galaxyName, ' (', sampleName, ')', sep='' ) )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
403 }
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
404 cat( htmlTableRow( c( "InputBams", paste( sampleStrings, collapse=", ") ) ) )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
405
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
406 cat( "</tbody></table></p>", "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
407
336697c6f7fa Uploaded
stef
parents:
diff changeset
408 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
409 ## list with links to all output files
336697c6f7fa Uploaded
stef
parents:
diff changeset
410 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
411 cat( '<h3 class="qdnaseq">Output files</h3><p>', "\n")
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
412 cat( '<p>This table contains output files that can be used for local downstream analysis with the bioconductor QDNAseq package. For each bin-size / data-level there is a R data structure file with data of all samples. See ', htmlLink( WEB_LINK, 'the bioconductor QDNAseq documentation' ), ' for more information on how to work with these files</p>', "\n", sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
413 cat( '<table class="pure-table pure-table-striped">', "\n" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
414 cat( '<thead><th>Type</th>', as.vector( mapply( paste, "<th>", binSizes, "kbp</th>", sep="" ) ),'</thead>', "\n" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
415 cat( "<tbody>", "\n")
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
416 files <- list()
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
417 fileTypes <- c( 'ReadCounts.rds', 'CopyNumbers.rds' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
418 if ( doSegment ){ fileTypes <- c( fileTypes, 'CopyNumbersSegmented.rds') }
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
419
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
420 for ( fileType in fileTypes ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
421 fileNames <- mapply( paste, binSizes, paste( 'kbp_QDNAseq', fileType, sep=''), sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
422 fileLinks <- mapply( htmlLink, fileNames, paste( binSizes, "kbp", sep="" ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
423 cat( htmlTableRow( c( fileType, fileLinks ) ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
424 }
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
425 cat( "\n</tbody></table></p>", "\n")
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
426
336697c6f7fa Uploaded
stef
parents:
diff changeset
427 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
428 ## table with links to files
336697c6f7fa Uploaded
stef
parents:
diff changeset
429 ## ------------------------
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
430 ratio <- PLOT_WIDTH / PLOT_HEIGHT
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
431 width <- 960; height <- width / ratio ## bigger img
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
432 width_t <- 100; height_t <- 40 ## thumb img
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
433
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
434 cat( '<h3 class="qdnaseq">Results: overview</h3><p>', "\n")
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
435 cat( '<p>This table contains the visual results of the copy number aberration analysis. You can click on an image to jump to the larger version. If segmentation was performed as well the number of segments is shown and a file with genomic regions can be downloaded (just remember to inspect the results carefully as this is a more exprimental step).</p>', "\n", sep='')
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
436 plots_html <- ''
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
437
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
438 colspan <- 1
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
439 binHeader <- "<th>Image</th>"
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
440 if ( doSegment ){ # extra column with segment info
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
441 colspan <- 2
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
442 binHeader <- "<th>Image</th><th>Segments</th>"
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
443 }
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
444 cat( '<table class="pure-table pure-table-striped">', "\n" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
445 cat( '<thead><tr><th></th><th></th>', as.vector( mapply( paste, "<th colspan=\"", colspan,"\">", binSizes, "kbp</th>", sep="" ) ), '</tr></thead>' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
446 cat( '<thead><tr><th>Sample / File</th><th>Reads</th>', rep( binHeader, length(binSizes) ), '</tr></thead>' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
447 cat( '<tbody>' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
448
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
449 for ( bam_file in bamsNames ){
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
450
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
451 usedReads <- plotted_images[[ paste(binSize, bam_file, 'usedReads', sep="_" ) ]]
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
452 usedReads <- format( as.integer(usedReads), digits=4, decimal.mark=".", big.mark="," )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
453 htmlRow <- paste( '<tr><td>', bam_file, '</td><td>', usedReads, '</td>', sep='' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
454
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
455 for ( binSize in binSizes ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
456
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
457 ## add thumbnails to table with links to anchors on html page
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
458 copy_img <- plotted_images[[ paste(binSize, bam_file, 'CopyNumbers', sep="_" ) ]]
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
459 html_copy_thumb <- htmlLink( path=paste('#', copy_img, sep=''), paste('<img src="',copy_img,'" alt="', bam_file, '" width="', width_t, '" height="', height_t, '">', sep='') )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
460 html_copy_img <- htmlLink( path=copy_img, paste('<img id="', copy_img,'" src="',copy_img,'" alt="',bam_file, '" width="', width, '" height="', height, '">', sep='') )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
461 html_segm_img <- ''
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
462 html_bedGraph <- ''
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
463 region_count <- ''
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
464 htmlRow <- paste( htmlRow, '<td>', html_copy_thumb, '</td>' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
465
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
466 if ( doSegment ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
467 segm_img <- plotted_images[[ paste(binSize, bam_file, 'Segmented', sep="_" ) ]]
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
468 region_count <- plotted_images[[ paste(binSize, bam_file, 'region_count', sep="_" ) ]]
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
469
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
470 html_bedGraph <- htmlLink( path=plotted_images[[ paste(binSize, bam_file, 'bedgraph', sep="_" ) ]], 'bedGraph' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
471 html_segm_img <- htmlLink( path=segm_img, paste('<img id="', segm_img,'" src="', segm_img,'" alt="', bam_file, '" width="', width, '" height="', height,'">', sep='') )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
472 htmlRow <- paste( htmlRow, '<td>', region_count, ' (', html_bedGraph, ')</td>', sep="" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
473 }
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
474 plots_html <- paste( plots_html, html_copy_img, "\n", html_segm_img, "\n<br \\>\n", sep='' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
475 }
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
476 plots_html <- paste( plots_html, "\n<hr \\>\n", sep='' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
477 ## add info to overview table, including small thumbnails
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
478 htmlRow <- paste( htmlRow, '</tr>', sep='' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
479 cat( htmlRow, "\n" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
480 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
481 cat( "</tbody></table></p>", "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
482
336697c6f7fa Uploaded
stef
parents:
diff changeset
483 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
484 ## section with various output shown
336697c6f7fa Uploaded
stef
parents:
diff changeset
485 ## ------------------------
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
486 cat( '<h3 class="qdnaseq">Results: Sample plots</h3><p>', "\n")
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
487 ## now include (large) images in html page
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
488 cat( plots_html, "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
489 cat( "\n</p></body>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
490 cat( "\n</html>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
491 sink()
336697c6f7fa Uploaded
stef
parents:
diff changeset
492
336697c6f7fa Uploaded
stef
parents:
diff changeset
493 ## ------------------------
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
494 ## creating main html output for galaxy history
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
495 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
496 sink( file = outputHtml, type = "output" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
497
336697c6f7fa Uploaded
stef
parents:
diff changeset
498 cat( "<head>", "\n")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
499 cat( "\t", '<link rel="stylesheet" href="', PURE_CSS, '">', "\n", sep='' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
500
336697c6f7fa Uploaded
stef
parents:
diff changeset
501 cat( "<style>", "\n")
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
502 ## include CSS directly into html file
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
503 cat( paste( "\t", '/* the css here originates from ', CSS_FILE,' */', "\n") )
336697c6f7fa Uploaded
stef
parents:
diff changeset
504 cat( paste( "\t", readLines( CSS_FILE, n = -1)), sep="\n" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
505 cat( "</style>", "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
506 cat( "</head>", "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
507
336697c6f7fa Uploaded
stef
parents:
diff changeset
508 cat( '<h1>QDNAseq Results (', outputName,')</h1>', "\n", sep="")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
509 cat( '<p>Explore <a href="', htmlOutputName, '" class="button">the results</a> directly within galaxy</p>', "\n", sep="")
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
510 cat( '<p>Or download a <a href="', gzipOutputName, '" class="button">zipfile</a> with all output (', zippedSize, ')</p>', "\n", sep="" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
511
336697c6f7fa Uploaded
stef
parents:
diff changeset
512 sink()
336697c6f7fa Uploaded
stef
parents:
diff changeset
513
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
514 ## ------------------------
4351c7715275 Uploaded
stef
parents: 40
diff changeset
515 ## create final zip and quit with status 0 to tell galaxy all was fine
4351c7715275 Uploaded
stef
parents: 40
diff changeset
516 ## ------------------------
4351c7715275 Uploaded
stef
parents: 40
diff changeset
517 catMsg( "zipping all output")
4351c7715275 Uploaded
stef
parents: 40
diff changeset
518 system( paste( "zip -j ", gzipOutputPath, paste(outputPath,'/', htmlOutputName, sep='') ) )
4351c7715275 Uploaded
stef
parents: 40
diff changeset
519 catMsg( "done" )
25
8509c112abaa Uploaded
stef
parents: 2
diff changeset
520 q(status=0)