annotate QDNAseq.R @ 4:4f5fd8b917eb draft

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