annotate QDNAseq.R @ 79:05e5358b8828 draft

Uploaded
author stef
date Thu, 05 Mar 2015 09:53:39 -0500
parents 81ba2f857fe2
children 67cbaa54fa03
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" )
72
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
41 if ( l1 == 0 ){ return(tmp) } # empty list in debug mode
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
42
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
43 for ( i in 1:length(paths) ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
44 path <- paths[i]
336697c6f7fa Uploaded
stef
parents:
diff changeset
45 name <- names[i]
336697c6f7fa Uploaded
stef
parents:
diff changeset
46 file <- basename(path)
336697c6f7fa Uploaded
stef
parents:
diff changeset
47
336697c6f7fa Uploaded
stef
parents:
diff changeset
48 tmp[[ file ]] <- name
336697c6f7fa Uploaded
stef
parents:
diff changeset
49 tmp[[ 'all_paths' ]] <- c( tmp[[ 'all_paths' ]], path )
336697c6f7fa Uploaded
stef
parents:
diff changeset
50 tmp[[ 'all_files' ]] <- c( tmp[[ 'all_files' ]], file )
336697c6f7fa Uploaded
stef
parents:
diff changeset
51 tmp[[ 'all_names' ]] <- c( tmp[[ 'all_names' ]], name )
336697c6f7fa Uploaded
stef
parents:
diff changeset
52 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
53 return( tmp )
336697c6f7fa Uploaded
stef
parents:
diff changeset
54 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
55
336697c6f7fa Uploaded
stef
parents:
diff changeset
56 ## --------------------
28
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
57 ## copied code for extracting the regions by segment call status
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
58 ## --------------------
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
59 fuseRegions <- function( obj, minRatio=0 ) {
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
60 if ( ncol(obj) > 1 ) stop('Please specify which sample...')
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
61
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
62 data <- data.frame( obj@featureData@data[,1:3], copynumber(obj), segmented(obj), check.names=FALSE, stringsAsFactors=FALSE)
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
63 colnames( data ) <- c( "chr", "start", "end", "log2", "segmentval" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
64
336697c6f7fa Uploaded
stef
parents:
diff changeset
65 fused.data <- data.frame()
336697c6f7fa Uploaded
stef
parents:
diff changeset
66 curr.bin <- 1
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
67 for ( chr in unique( data$chr ) ) {
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
68 chr.data <- data[ data$chr == chr, ]
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
69 prev.bin <- curr.bin
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
70 prev.log2 <- chr.data[ 1, 'log2' ]
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
71 prev.segm <- chr.data[ 1, 'segmentval' ]
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
72 start <- chr.data[ 1, 'start' ]
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
73
336697c6f7fa Uploaded
stef
parents:
diff changeset
74 if ( nrow(chr.data) > 1) {
336697c6f7fa Uploaded
stef
parents:
diff changeset
75 for ( i in 2:nrow(chr.data) ) {
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
76 curr.bin <- curr.bin + 1
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
77 curr.segm <- chr.data[ i, 'segmentval']
336697c6f7fa Uploaded
stef
parents:
diff changeset
78
336697c6f7fa Uploaded
stef
parents:
diff changeset
79 if ( curr.segm != prev.segm ) {
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
80 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
81 prev.segm <- curr.segm
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
82 prev.bin <- curr.bin
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
83 start <- chr.data[ i, 'start']
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
84 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
85 }
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) ) )
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
87 }else{
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
88 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
89 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
90 }
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
91 ## remove regions with low amplitude
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
92 fused.data <- fused.data[ abs(fused.data$segmentval) >= minRatio, ]
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
93 fused.data
336697c6f7fa Uploaded
stef
parents:
diff changeset
94 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
95
336697c6f7fa Uploaded
stef
parents:
diff changeset
96 ## DESC: takes the output of fuse.regions and outputs a txt file per sample
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
97 outputRegionsFromList <- function ( regionsList, outputBasename, outputDir="./", binSize, storeList ){
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
98 if ( missing(regionsList) ) stop( 'Please provide regionsList...' )
336697c6f7fa Uploaded
stef
parents:
diff changeset
99 if ( missing(outputBasename) ) stop( 'Please provide outputBasename...' )
336697c6f7fa Uploaded
stef
parents:
diff changeset
100 if ( !is.list(regionsList) ) stop( 'Input not a list...?' )
336697c6f7fa Uploaded
stef
parents:
diff changeset
101 if ( length(regionsList) < 1 ) stop( 'List seems empty...?' )
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
102 if ( file.exists( outputDir ) ) catMsg( c(" Using dir ", outputDir, " for output") )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
103 else dir.create( outputDir )
336697c6f7fa Uploaded
stef
parents:
diff changeset
104
336697c6f7fa Uploaded
stef
parents:
diff changeset
105 ## have to set R output options otherwise scientific method is used at some point
336697c6f7fa Uploaded
stef
parents:
diff changeset
106 options( "scipen"=100 )
336697c6f7fa Uploaded
stef
parents:
diff changeset
107
336697c6f7fa Uploaded
stef
parents:
diff changeset
108 sampleCount <- length( regionsList )
336697c6f7fa Uploaded
stef
parents:
diff changeset
109 sampleNames <- names( regionsList )
336697c6f7fa Uploaded
stef
parents:
diff changeset
110 bedgraphColumns <- c( 'chr', 'start', 'end', 'segmentval' )
30
647143d0c884 Uploaded
stef
parents: 29
diff changeset
111
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
112 catMsg( c( " There are ", sampleCount, " samples found in input list") )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
113
336697c6f7fa Uploaded
stef
parents:
diff changeset
114 for ( sample in sampleNames ){
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
115 catMsg( c(" Working on sample ", sample ) )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
116 regionCount <- nrow( regionsList[[sample]] )
336697c6f7fa Uploaded
stef
parents:
diff changeset
117
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
118 outSampleBase <- paste( outputBasename, '_', sample, '_', binSize, 'kbp', sep='')
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
119 outBedgraphFile <- paste( outSampleBase, '.bedGraph', sep="" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
120 outBedgraphPath <- paste( outputDir, '/', outBedgraphFile, sep="" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
121
336697c6f7fa Uploaded
stef
parents:
diff changeset
122 ## ---------- BEDGRAPH ----------
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
123 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
124 sink( outBedgraphPath )
336697c6f7fa Uploaded
stef
parents:
diff changeset
125 cat( txt )
336697c6f7fa Uploaded
stef
parents:
diff changeset
126 sink()
336697c6f7fa Uploaded
stef
parents:
diff changeset
127 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
128 #outFiles[[sample]] <- c( outBedgraphFile )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
129 storeList[[ paste( binSize, sample, 'bedgraph', sep="_")]] <- outBedgraphFile
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
130 }
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
131 return(storeList)
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
132 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
133
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
134 ## ==================================================
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
135 ## Unused but potential usefull code
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
136 ## ==================================================
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
137 #@ a bit hacky galaxy way to allow an unknown number of output files based on param selection
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
138 #@ see: https://wiki.galaxyproject.org/Admin/Tools/Multiple%20Output%20Files
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
139 #historyName <- paste(binSize, 'kbp-IGV', sep="")
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
140 #igvFile <- paste( newFilePath, "/primary_", outputId, "_", historyName, "_visible_txt", sep="" )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
141
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
142 ## ==================================================
336697c6f7fa Uploaded
stef
parents:
diff changeset
143 ## Start of analysis
336697c6f7fa Uploaded
stef
parents:
diff changeset
144 ## ==================================================
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
145 MAIN_NAME <- '[INFO] '
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
146 catMsg( "Starting QDNAseq wrapper" )
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
147 #catMsg( R.version.string )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
148 catMsg( "Loading R libraries" )
73
4db025c51b6e Uploaded
stef
parents: 72
diff changeset
149
74
0feb7fa37245 Uploaded
stef
parents: 73
diff changeset
150 ## supress msg to allow R to finish with non-error msg
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
151 suppressWarnings( suppressMessages( library( QDNAseq, quietly = TRUE ) ) )
336697c6f7fa Uploaded
stef
parents:
diff changeset
152 suppressWarnings( suppressMessages( library( CGHcall, quietly = TRUE ) ) )
25
8509c112abaa Uploaded
stef
parents: 2
diff changeset
153
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
154 ## only one param: the tmp config file
336697c6f7fa Uploaded
stef
parents:
diff changeset
155 cmdLineArgs <- commandArgs(TRUE)
336697c6f7fa Uploaded
stef
parents:
diff changeset
156 config <- cmdLineArgs[1]
74
0feb7fa37245 Uploaded
stef
parents: 73
diff changeset
157 TOOL_PATH <- cmdLineArgs[2]
0feb7fa37245 Uploaded
stef
parents: 73
diff changeset
158 CSS_FILE <- paste( TOOL_PATH, '/static/css/QDNAseq.css', sep="" )
0feb7fa37245 Uploaded
stef
parents: 73
diff changeset
159 DECIMALS <- 3
0feb7fa37245 Uploaded
stef
parents: 73
diff changeset
160 WEB_LINK <- 'http://www.bioconductor.org/packages/release/bioc/html/QDNAseq.html'
0feb7fa37245 Uploaded
stef
parents: 73
diff changeset
161 PURE_CSS <- 'http://yui.yahooapis.com/pure/0.5.0/pure-min.css'
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
162
336697c6f7fa Uploaded
stef
parents:
diff changeset
163 ## sourcing the config file will load all input params
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
164 ## many variables are imported via sourced "config"
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
165 source( config )
336697c6f7fa Uploaded
stef
parents:
diff changeset
166
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
167 ## if calling requested we always need segmenting first as well
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
168 if ( doCall ){ doSegment <- TRUE }
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
169
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
170 ## desparate tries to make png text scale well, damn you R...!
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
171 PLOT_RES <- min( PLOT_WIDTH, PLOT_HEIGHT ) / 6.3
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
172 PAR_SET <- list( pch=22 )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
173
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
174 systemUser <- system("whoami",T)
4351c7715275 Uploaded
stef
parents: 40
diff changeset
175 qdnaseqVersion <- packageDescription( "QDNAseq" )$Version
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
176 rVersion <- R.version.string
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
177 startTime <- Sys.time()
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
178 analysisStart <- as.character( startTime )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
179 catMsg( c("QDNAseq version: ", qdnaseqVersion) )
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
180 catMsg( c( rVersion ) )
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
181
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
182 ## get the comma separated list of chromosomes to exclude
336697c6f7fa Uploaded
stef
parents:
diff changeset
183 excludeChrs <- unlist( strsplit( excludeChrsString, ",") )
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
184
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
185 ## format binSizes back to integers because stupid galaxy doesn't do what I want
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
186 #print( binSizesString )
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
187 binSizes <- gsub( 'kb', '', binSizesString ) # remove the kb string to get integers
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
188 #print( binSizes )
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
189 binSizes <- gsub( 'bin', '', binSizes ) # remove the kb string to get integers
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
190 #print( binSizes )
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
191 binSizes <- as.numeric( unlist( strsplit( binSizes, ",") ) )
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
192 #print( binSizes )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
193
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
194
336697c6f7fa Uploaded
stef
parents:
diff changeset
195 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
196 ## DEBUG
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
197 if ( debug ){
72
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
198 catMsg( c("Analysis run by user: ", systemUser ) )
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
199 catMsg( c("DEBUG SessionInfo: " ) )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
200 print( sessionInfo() )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
201 }
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
202 ## /DEBUG
336697c6f7fa Uploaded
stef
parents:
diff changeset
203 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
204
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
205 ## prepare output dir
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
206 if ( !file.exists( outputPath) ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
207 dir.create( outputPath )
336697c6f7fa Uploaded
stef
parents:
diff changeset
208 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
209
336697c6f7fa Uploaded
stef
parents:
diff changeset
210 ## copy source config file to output dir to include it in output zip
72
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
211 if ( inGalaxy ){
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
212 file.copy( config, paste(outputPath, 'galaxyConfigFile.R', sep='/') )
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
213 }
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
214
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
215 ## setup bam filelist for easy retrieval later
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
216 fileList <- makeBamFileList( bamsPaths, bamsNames )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
217 bamCount <- length( fileList[[ 'all_paths' ]] )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
218
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
219 gzipOutputName <- paste( 'QDNAseqResults_', outputName, '.zip', sep='' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
220 gzipOutputPath <- paste( outputPath, '/', gzipOutputName, sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
221 htmlOutputName <- 'index.html'
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
222 htmlOutputPath <- paste( outputPath, '/', htmlOutputName, sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
223
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
224 plotted_images <- list() # to keep track of images for later linking
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
225 regions <- list() # will contain the segments
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
226
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
227 ## ------------------------
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
228 ## in case of debug just use inbuilt LGG data for speedup
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
229 if ( debug ){
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
230 catMsg( c("Built in data only contains binsize 15kb so overriding chosen binSizes to single 15kb") )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
231 binSizes <- c(15)
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
232 bamsPaths <- c( "BUILD_IN_DATA")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
233 bamsNames <- c( "LGG150")
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
234 fileList <- makeBamFileList( bamsPaths, bamsNames )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
235 bamCount <- length( fileList[[ 'all_paths' ]] )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
236 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
237
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
238 for ( binSize in binSizes ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
239
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
240 catMsg( c("Starting analysis for binSize: ", binSize) )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
241 ## ------------------------
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
242 ## construct output file-names and -paths
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
243 ## ------------------------
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
244 rdsReadName <- paste( binSize, 'kbp_QDNAseqReadCounts.rds', sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
245 rdsCopyName <- paste( binSize, 'kbp_QDNAseqCopyNumbers.rds', sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
246 rdsSegmName <- paste( binSize, 'kbp_QDNAseqCopyNumbersSegmented.rds', sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
247 rdsCallName <- paste( binSize, 'kbp_QDNAseqCopyNumbersCalled.rds', sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
248 igvCopyName <- paste( binSize, 'kbp_QDNAseqCopyNumbers.igv', sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
249 igvSegmName <- paste( binSize, 'kbp_QDNAseqCopyNumbersSegmented.igv', sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
250 igvCallName <- paste( binSize, 'kbp_QDNAseqCopyNumbersCalled.igv', sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
251
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
252 regiOutputName <- paste( binSize, 'kbp_QDNAseqRegions.rds', sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
253 noiseImgName <- paste( binSize, 'kbp_QDNAseqNoiseplot.png', sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
254
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
255 rdsRegiPath <- paste( outputPath, '/', regiOutputName, sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
256 noiseImgPath <- paste( outputPath, '/', noiseImgName, sep='')
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
257
72
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
258 binAnnFile <- paste( TOOL_PATH, '/static/binannotation/', binSize, 'kbp_binAnnotations.rds', sep="" )
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
259 if ( file.exists(binAnnFile) ){
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
260 binAnnotations <- readRDS( binAnnFile )
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
261 catMsg( c("Using local binAnnotations file" ) )
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
262 }else{
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
263 binAnnotations <- getBinAnnotations( binSize=binSize, type=experimentType )
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
264 }
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
265
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
266 ## in case of debug just use inbuilt LGG data for speedup
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
267 if ( debug ){
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
268 data( LGG150 )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
269 readCounts <- LGG150
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
270 }else{
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
271 ## provide bamnames because in galaxy everyting is called "dataset_###"
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
272 readCounts <- binReadCounts( binAnnotations, bamfiles=fileList[[ 'all_paths' ]], bamnames=fileList[[ 'all_names' ]] )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
273 }
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
274
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
275 readCountsFiltered <- applyFilters( readCounts, residual=TRUE, blacklist=filterBlacklistedBins, mappability=mappabilityCutoff, chromosomes=excludeChrs )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
276 readCountsFiltered <- estimateCorrection( readCountsFiltered )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
277 copyNumbers <- correctBins( readCountsFiltered )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
278 copyNumbersNormalized <- normalizeBins( copyNumbers )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
279 copyNumbersSmooth <- smoothOutlierBins( copyNumbersNormalized )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
280 sampleNames <- readCountsFiltered@phenoData@data$name
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
281
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
282 ## set file to output if output requested
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
283 outputData <- copyNumbersSmooth
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
284 outputType <- 'copynumber'
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
285 outputLogT <- TRUE
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
286 rdsReadPath <- paste( outputPath, '/', rdsReadName, sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
287 saveRDS( readCounts, rdsReadPath );
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
288 rdsPath <- paste( outputPath, '/', rdsCopyName, sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
289 igvPath <- paste( outputPath, '/', igvCopyName, sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
290
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
291 ## proceed with segmenting / calling if requested
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
292 if ( doSegment ){
79
05e5358b8828 Uploaded
stef
parents: 78
diff changeset
293 copyNumbersSegmented <- segmentBins( copyNumbersSmooth, undo.splits=undoSplits, undo.SD=undoSD, transformFun=c("sqrt") )
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
294 copyNumbersSegmented <- normalizeSegmentedBins( copyNumbersSegmented )
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
295 outputData <- copyNumbersSegmented
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
296 outputType <- 'segments'
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
297 igvPath <- paste( outputPath, '/', rdsSegmName, sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
298 rdsPath <- paste( outputPath, '/', igvSegmName, sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
299 }
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
300 if ( doCall ){
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
301 copyNumbersCalled <- callBins(copyNumbersSegmented)
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
302 outputData <- copyNumbersCalled
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
303 outputType <- 'calls'
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
304 outputLogT <- FALSE # call values should not be transformed at output
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
305 rdsPath <- paste( outputPath, '/', rdsCallName, sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
306 igvPath <- paste( outputPath, '/', igvCallName, sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
307 }
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
308
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
309 ## save the QDNAseq objects and tsv file of highest level (calls or segments)
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
310 saveRDS( outputData, rdsPath );
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
311 exportBins( outputData, file=igvPath, format="igv", type=outputType, logTransform=outputLogT )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
312
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
313 ## also save objects for galaxy history output if requested
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
314 if ( txt2history ){
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
315 fileId <- paste('txt_', binSize, sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
316 historyOutputPath <- historyOutputFiles[[ fileId ]]
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
317 catMsg( c("About to export igv/txt file to history for ", binSize, "kbp bin") )
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
318 exportBins( outputData, file=historyOutputPath, format="igv", type=outputType, logTransform=outputLogT )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
319 }
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
320 if ( rds2history ){
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
321 fileId <- paste('rds_', binSize, sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
322 rdsHistoryOutputPath <- historyOutputFiles[[ fileId ]]
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
323 catMsg( c("About to export rds file to history for ", binSize, "kbp bin") )
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
324 saveRDS( outputData, file=rdsHistoryOutputPath )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
325 }
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
326
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
327 ## ------------------------
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
328 ## create output files
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
329 ## ------------------------
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
330 png( noiseImgPath, width=PLOT_HEIGHT, height=PLOT_HEIGHT, res=PLOT_RES );
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
331 par( PAR_SET )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
332 noisePlot( readCountsFiltered, main=paste( "Noise Plot ", binSize, "kbp", sep=''), col="darkgreen" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
333 dev.off()
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
334
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
335 binSize <- as.character( binSize ) # to avoid R using it as array index... (*#$^@ you R!)
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
336 binSizeString <- paste( binSize, 'kbp', sep='')
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
337 cgh <- makeCgh( outputData ) # needed for fuseRegions function
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
338
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
339 for (i in 1:length(sampleNames) ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
340
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
341 sample <- sampleNames[i]
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
342 usedReads <- readCountsFiltered@phenoData@data$used.reads[i]
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
343 catMsg( c("Creating plots for sample: ", sample, " (", binSizeString, ")" ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
344
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
345 type <- 'CopyNumbers'
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
346 img_file <- paste( sample, '_', binSize, 'kbp_QDNAseq', type, '.png', sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
347 img_file_path <- paste( outputPath, '/', img_file, sep='' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
348
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
349 ## COPYNUMBER PLOT
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
350 png( img_file_path, width=PLOT_WIDTH, height=PLOT_HEIGHT, res=PLOT_RES );
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
351 par( PAR_SET )
68
68a090cffb6f Uploaded
stef
parents: 67
diff changeset
352 plot( copyNumbersSmooth[ ,sample ], main=paste(sample, ": CopyNumbers", sep="") )
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
353 mtext( paste( "(", binSizeString, " bins)", sep=""), 3 )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
354 abline( h=c(-2,-1,1,2,3,4), lty=1, lwd=0.5, col="grey" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
355 dev.off()
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
356
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
357 plotted_images[[ paste(binSize, sample, type, sep="_" ) ]] <- img_file
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
358
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
359 if ( doSegment ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
360 type <- 'Segmented'
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
361 img_file <- paste( sample, '_', binSize, 'kbp_QDNAseq', type, '.png', sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
362 img_file_path <- paste( outputPath, '/', img_file, sep='' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
363
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
364 ## COPYNUMBER + SEGMENTS PLOT
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
365 png( img_file_path, width=PLOT_WIDTH, height=PLOT_HEIGHT, res=PLOT_RES );
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
366 par( PAR_SET )
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
367 plot( copyNumbersSegmented[ ,sample ], main=paste(sample, ": CopyNumbers (Segmented)", sep="") )
69
b4477584bb03 Uploaded
stef
parents: 68
diff changeset
368 mtext( paste( "(", binSizeString, " bins)", sep=""), 3 )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
369 abline( h=c(-2,-1,1,2,3,4), lty=1, lwd=0.5, col="grey" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
370 dev.off()
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
371
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
372 plotted_images[[ paste(binSize, sample, type, sep="_" ) ]] <- img_file
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
373
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
374 ## if segmented we can also retrieve the segment locations
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
375 catMsg( c(" Fusing regions of sample: ", sample) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
376 regions[[ sample ]] <- fuseRegions( cgh[, sample] )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
377
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
378 region_count <- nrow( data.frame( regions[[ sample ]] ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
379 catMsg( c( ' sample "', sample, '" has ', region_count, " regions" ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
380 plotted_images[[ paste(binSize, sample, 'region_count', sep="_" ) ]] <- region_count
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
381 }
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
382
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
383 if ( doCall ){
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
384 type <- 'Called'
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
385 img_file <- paste( sample, '_', binSize, 'kbp_QDNAseq', type, '.png', sep='')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
386 img_file_path <- paste( outputPath, '/', img_file, sep='' )
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
387
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
388 ## COPYNUMBER + SEGMENTS + CALLS PLOT
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
389 png( img_file_path, width=PLOT_WIDTH, height=PLOT_HEIGHT, res=PLOT_RES );
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
390 par( PAR_SET )
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
391 plot( copyNumbersCalled[ ,sample ], main=paste(sample, ": CopyNumbers (Segmented and Called)", sep="") )
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
392 mtext( paste( "(", binSizeString, " bins)", sep=""), 3 )
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
393 abline( h=c(-2,-1,1,2,3,4), lty=1, lwd=0.5, col="grey" )
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
394 dev.off()
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
395
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
396 plotted_images[[ paste(binSize, sample, type, sep="_" ) ]] <- img_file
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
397 }
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
398
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
399 ## add USED read counts
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
400 plotted_images[[ paste(binSize, sample, 'usedReads', sep="_" ) ]] <- usedReads
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
401 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
402
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
403 if ( doSegment ){
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
404 saveRDS( regions, rdsRegiPath )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
405 plotted_images <- outputRegionsFromList( regions, outputBasename=outputName, outputDir=outputPath, binSize=binSize, storeList=plotted_images )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
406 }
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
407 }# end bin
28
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
408
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
409
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
410 ## ----- debug -----
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
411 #catMsg( "done" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
412 #q(status=0)
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
413 ## ---- /debug -----
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
414
336697c6f7fa Uploaded
stef
parents:
diff changeset
415
336697c6f7fa Uploaded
stef
parents:
diff changeset
416 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
417 ## prepare output
336697c6f7fa Uploaded
stef
parents:
diff changeset
418 ## ------------------------
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
419 catMsg( "...zipping output")
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
420 zip_cmd <- paste( "zip -j", gzipOutputPath, paste(outputPath,'/*',sep='') ) ## -j is for removing dirs from the tree
336697c6f7fa Uploaded
stef
parents:
diff changeset
421 system( zip_cmd )
336697c6f7fa Uploaded
stef
parents:
diff changeset
422
336697c6f7fa Uploaded
stef
parents:
diff changeset
423 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
424 ## get filesizes for report
336697c6f7fa Uploaded
stef
parents:
diff changeset
425 ## ------------------------
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
426 zippedSize <- paste( round( file.info( gzipOutputPath )[["size"]] / 1e+6, digits=2 ), 'MB' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
427 endTime <- Sys.time()
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
428 timeDiff <- format( round( endTime - startTime, 3 ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
429 analysisEnd <- as.character( endTime )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
430
336697c6f7fa Uploaded
stef
parents:
diff changeset
431 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
432 ## creating html output to be linked to from the middle galaxy pane
336697c6f7fa Uploaded
stef
parents:
diff changeset
433 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
434 sink( file = htmlOutputPath, type = "output" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
435 cat( "<html>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
436 cat( "<head>\n")
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
437
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
438 cat( "\t", '<title>QDNAseq Report | ', outputName,'</title>', "\n", sep='' )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
439 cat( "\t", '<link rel="stylesheet" href="', PURE_CSS, '">', "\n", sep='' )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
440 cat( "\t<style>\n", sep='')
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
441 ## include CSS into html file, makes it more portable
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
442 cat( "\t\t", readLines( CSS_FILE ), sep="\n\t\t" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
443 #cat( "\t\th1 {color:red;}", "\n")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
444 cat( "\n\t</style>\n" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
445
336697c6f7fa Uploaded
stef
parents:
diff changeset
446 cat( "\n</head>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
447 cat( "\n<body>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
448
336697c6f7fa Uploaded
stef
parents:
diff changeset
449 cat( "<h1>QDNAseq Report</h1>", "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
450
336697c6f7fa Uploaded
stef
parents:
diff changeset
451 cat( '<h3 class="qdnaseq">About this analysis</h3>', "\n")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
452 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
453
336697c6f7fa Uploaded
stef
parents:
diff changeset
454 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
455 ## table with general info
336697c6f7fa Uploaded
stef
parents:
diff changeset
456 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
457 cat( '<h3 class="qdnaseq">Settings</h3><p>', "\n")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
458 cat( '<table class="pure-table pure-table-striped"><tbody>' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
459 cat( htmlTableRow( c( "AnalysisName", outputName ) ) )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
460 cat( htmlTableRow( c( "AnalysisStart", analysisStart ) ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
461 cat( htmlTableRow( c( "AnalysisEnd", analysisEnd ) ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
462 cat( htmlTableRow( c( "AnalysisTime", timeDiff ) ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
463 cat( htmlTableRow( c( "BinSizes (kbp)", paste(binSizes,collapse=", ") ) ) )
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
464 cat( htmlTableRow( c( "R info", rVersion ) ) )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
465 cat( htmlTableRow( c( "QDNAseq info", qdnaseqVersion ) ) )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
466
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
467 sampleStrings <- c()
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
468 for ( galaxyName in fileList[[ 'all_files' ]] ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
469 sampleName <- fileList[[ galaxyName ]]
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
470 sampleStrings <- c( sampleStrings, paste( galaxyName, ' (', sampleName, ')', sep='' ) )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
471 }
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
472 cat( htmlTableRow( c( "InputBams", paste( sampleStrings, collapse=", ") ) ) )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
473
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
474 cat( "</tbody></table></p>", "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
475
336697c6f7fa Uploaded
stef
parents:
diff changeset
476 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
477 ## list with links to all output files
336697c6f7fa Uploaded
stef
parents:
diff changeset
478 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
479 cat( '<h3 class="qdnaseq">Output files</h3><p>', "\n")
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
480 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='')
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
481 cat( '<table class="pure-table pure-table-striped">', "\n" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
482 cat( '<thead><th>Type</th>', as.vector( mapply( paste, "<th>", binSizes, "kbp</th>", sep="" ) ),'</thead>', "\n" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
483 cat( "<tbody>", "\n")
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
484 files <- list()
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
485 #fileTypes <- c( 'ReadCounts.rds', 'CopyNumbers.rds' )
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
486 fileTypes <- c( 'ReadCounts.rds' )
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
487 if ( doCall ){
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
488 fileTypes <- c( fileTypes, 'CopyNumbersCalled.rds')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
489 }else if ( doSegment ){
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
490 fileTypes <- c( fileTypes, 'CopyNumbersSegmented.rds')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
491 }else {
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
492 fileTypes <- c( fileTypes, 'CopyNumbers.rds')
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
493 }
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
494
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
495 for ( fileType in fileTypes ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
496 fileNames <- mapply( paste, binSizes, paste( 'kbp_QDNAseq', fileType, sep=''), sep='')
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
497 fileLinks <- mapply( htmlLink, fileNames, paste( binSizes, "kbp", sep="" ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
498 cat( htmlTableRow( c( fileType, fileLinks ) ) )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
499 }
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
500 cat( "\n</tbody></table></p>", "\n")
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
501
336697c6f7fa Uploaded
stef
parents:
diff changeset
502 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
503 ## table with links to files
336697c6f7fa Uploaded
stef
parents:
diff changeset
504 ## ------------------------
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
505 ratio <- PLOT_WIDTH / PLOT_HEIGHT
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
506 width <- 960; height <- width / ratio ## bigger img
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
507 width_t <- 100; height_t <- 40 ## thumb img
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
508
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
509 cat( '<h3 class="qdnaseq">Results: overview</h3><p>', "\n")
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
510 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, together with optional calling afterwards, a more experimental type of analysis).</p>', "\n", sep='')
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
511 plots_html <- ''
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
512
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
513 colspan <- 1
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
514 binHeader <- "<th>Image</th>"
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
515 if ( doSegment ){ # extra column with segment info
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
516 colspan <- 2
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
517 binHeader <- "<th>Image</th><th>Segments</th>"
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
518 }
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
519 cat( '<table class="pure-table pure-table-striped">', "\n" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
520 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
521 cat( '<thead><tr><th>Sample / File</th><th>Reads</th>', rep( binHeader, length(binSizes) ), '</tr></thead>' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
522 cat( '<tbody>' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
523
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
524 for ( bam_file in bamsNames ){
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
525
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
526 usedReads <- plotted_images[[ paste(binSize, bam_file, 'usedReads', sep="_" ) ]]
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
527 usedReads <- format( as.integer(usedReads), digits=4, decimal.mark=".", big.mark="," )
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
528 htmlRow <- paste( '<tr><td>', bam_file, '</td><td>', usedReads, '</td>', sep='' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
529
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
530 for ( binSize in binSizes ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
531
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
532 ## add thumbnails to table with links to anchors on html page
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
533 copy_img <- plotted_images[[ paste(binSize, bam_file, 'CopyNumbers', sep="_" ) ]]
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
534 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
535 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
536 html_segm_img <- ''
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
537 html_call_img <- ''
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
538 html_bedGraph <- ''
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
539 region_count <- ''
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
540 htmlRow <- paste( htmlRow, '<td>', html_copy_thumb, '</td>' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
541
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
542 if ( doSegment ){
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
543 segm_img <- plotted_images[[ paste(binSize, bam_file, 'Segmented', sep="_" ) ]]
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
544 region_count <- plotted_images[[ paste(binSize, bam_file, 'region_count', sep="_" ) ]]
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
545
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
546 html_bedGraph <- htmlLink( path=plotted_images[[ paste(binSize, bam_file, 'bedgraph', sep="_" ) ]], 'bedGraph' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
547 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
548 htmlRow <- paste( htmlRow, '<td>', region_count, ' (', html_bedGraph, ')</td>', sep="" )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
549 }
78
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
550 if ( doCall ){
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
551 call_img <- plotted_images[[ paste(binSize, bam_file, 'Called', sep="_" ) ]]
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
552 html_call_img <- htmlLink( path=call_img, paste('<img id="', call_img,'" src="', call_img,'" alt="', bam_file, '" width="', width, '" height="', height,'">', sep='') )
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
553 }
81ba2f857fe2 Uploaded
stef
parents: 76
diff changeset
554 plots_html <- paste( plots_html, html_copy_img, "\n", html_segm_img, "\n", html_call_img, "\n<br \\>\n", sep='' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
555 }
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
556 plots_html <- paste( plots_html, "\n<hr \\>\n", sep='' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
557 ## add info to overview table, including small thumbnails
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
558 htmlRow <- paste( htmlRow, '</tr>', sep='' )
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
559 cat( htmlRow, "\n" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
560 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
561 cat( "</tbody></table></p>", "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
562
336697c6f7fa Uploaded
stef
parents:
diff changeset
563 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
564 ## section with various output shown
336697c6f7fa Uploaded
stef
parents:
diff changeset
565 ## ------------------------
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
566 cat( '<h3 class="qdnaseq">Results: Sample plots</h3><p>', "\n")
64
2f0af8970aea Uploaded
stef
parents: 59
diff changeset
567 ## now include (large) images in html page
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
568 cat( plots_html, "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
569 cat( "\n</p></body>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
570 cat( "\n</html>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
571 sink()
336697c6f7fa Uploaded
stef
parents:
diff changeset
572
336697c6f7fa Uploaded
stef
parents:
diff changeset
573 ## ------------------------
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
574 ## creating main html output for galaxy history
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
575 ## ------------------------
72
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
576 if ( inGalaxy ){ # dont create when running outside Galaxy
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
577 sink( file = outputHtml, type = "output" )
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
578
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
579 cat( "<head>", "\n")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
580 cat( "\t", '<link rel="stylesheet" href="', PURE_CSS, '">', "\n", sep='' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
581
336697c6f7fa Uploaded
stef
parents:
diff changeset
582 cat( "<style>", "\n")
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
583 ## include CSS directly into html file
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
584 cat( paste( "\t", '/* the css here originates from ', CSS_FILE,' */', "\n") )
336697c6f7fa Uploaded
stef
parents:
diff changeset
585 cat( paste( "\t", readLines( CSS_FILE, n = -1)), sep="\n" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
586 cat( "</style>", "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
587 cat( "</head>", "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
588
336697c6f7fa Uploaded
stef
parents:
diff changeset
589 cat( '<h1>QDNAseq Results (', outputName,')</h1>', "\n", sep="")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
590 cat( '<p>Explore <a href="', htmlOutputName, '" class="button">the results</a> directly within galaxy</p>', "\n", sep="")
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
591 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
592
72
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
593 sink()
fb2dfd8ba417 Uploaded
stef
parents: 69
diff changeset
594 }
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
595
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
596 ## ------------------------
4351c7715275 Uploaded
stef
parents: 40
diff changeset
597 ## create final zip and quit with status 0 to tell galaxy all was fine
4351c7715275 Uploaded
stef
parents: 40
diff changeset
598 ## ------------------------
4351c7715275 Uploaded
stef
parents: 40
diff changeset
599 catMsg( "zipping all output")
4351c7715275 Uploaded
stef
parents: 40
diff changeset
600 system( paste( "zip -j ", gzipOutputPath, paste(outputPath,'/', htmlOutputName, sep='') ) )
4351c7715275 Uploaded
stef
parents: 40
diff changeset
601 catMsg( "done" )
25
8509c112abaa Uploaded
stef
parents: 2
diff changeset
602 q(status=0)