annotate QDNAseq.R @ 59:bfe9d9b7e261 draft

Uploaded
author stef
date Thu, 07 Aug 2014 11:02:25 -0400
parents c962b56a2dd8
children 2f0af8970aea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
1 #!/usr/bin/Rscript
336697c6f7fa Uploaded
stef
parents:
diff changeset
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
3 ## --------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
4 ## prints all arguments as msg
336697c6f7fa Uploaded
stef
parents:
diff changeset
5 ## --------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
6 catMsg <- function( msg=c() ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
7 cat( MAIN_NAME, paste( msg, collapse="" ), "\n", sep='')
336697c6f7fa Uploaded
stef
parents:
diff changeset
8 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
9 ## --------------------
28
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
10 ## return the location of this script
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
11 ## --------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
12 getScriptPath <- function(){
336697c6f7fa Uploaded
stef
parents:
diff changeset
13 cmd.args <- commandArgs()
336697c6f7fa Uploaded
stef
parents:
diff changeset
14 m <- regexpr("(?<=^--file=).+", cmd.args, perl=TRUE)
336697c6f7fa Uploaded
stef
parents:
diff changeset
15 script.dir <- dirname(regmatches(cmd.args, m))
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
16 if( length(script.dir) == 0 ) stop("[ERR] Can't determine script dir: please call the script with Rscript\n")
4351c7715275 Uploaded
stef
parents: 40
diff changeset
17 if( length(script.dir) > 1 ) stop("[ERR] Can't determine script dir: more than one '--file' argument detected\n")
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
18 return(script.dir)
336697c6f7fa Uploaded
stef
parents:
diff changeset
19 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
20 ## --------------------
28
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
21 ## Some html creation functions
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
22 ## --------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
23 htmlTableRow <- function( string_array=c() ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
24 td_cells <- ''
336697c6f7fa Uploaded
stef
parents:
diff changeset
25 for ( i in string_array ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
26 td_cells <- paste( td_cells, '<td>', i, '</td>', sep='' )
336697c6f7fa Uploaded
stef
parents:
diff changeset
27 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
28 return( paste( "<tr>", td_cells, "</tr>") )
336697c6f7fa Uploaded
stef
parents:
diff changeset
29 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
30 htmlLink <- function( path, desc="LINK" ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
31 return( paste( '<a href="', path, '">', desc, "</a>", sep='') )
336697c6f7fa Uploaded
stef
parents:
diff changeset
32 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
33 ## --------------------
28
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
34 ## constructs a list with input bam file info
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
35 ## --------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
36 makeBamFileList <- function( paths, names ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
37 tmp <- list()
336697c6f7fa Uploaded
stef
parents:
diff changeset
38 l1 <- length(paths)
336697c6f7fa Uploaded
stef
parents:
diff changeset
39 l2 <- length(names)
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
40 if ( l1 != l2 ) stop( "Unequal amount of bam-paths (", l1, ") and -names (", l2, ") in makeBamFileList!!!\n" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
41 for ( i in 1:length(paths) ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
42 path <- paths[i]
336697c6f7fa Uploaded
stef
parents:
diff changeset
43 name <- names[i]
336697c6f7fa Uploaded
stef
parents:
diff changeset
44 file <- basename(path)
336697c6f7fa Uploaded
stef
parents:
diff changeset
45
336697c6f7fa Uploaded
stef
parents:
diff changeset
46 tmp[[ file ]] <- name
336697c6f7fa Uploaded
stef
parents:
diff changeset
47 tmp[[ 'all_paths' ]] <- c( tmp[[ 'all_paths' ]], path )
336697c6f7fa Uploaded
stef
parents:
diff changeset
48 tmp[[ 'all_files' ]] <- c( tmp[[ 'all_files' ]], file )
336697c6f7fa Uploaded
stef
parents:
diff changeset
49 tmp[[ 'all_names' ]] <- c( tmp[[ 'all_names' ]], name )
336697c6f7fa Uploaded
stef
parents:
diff changeset
50 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
51 return( tmp )
336697c6f7fa Uploaded
stef
parents:
diff changeset
52 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
53
336697c6f7fa Uploaded
stef
parents:
diff changeset
54 ## --------------------
28
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
55 ## copied code for extracting the regions by segment call status
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
56 ## --------------------
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
57 fuseRegions <- function( cgh, onlyCalled=T ) {
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
58 if ( ncol(cgh) > 1 ) stop('Please specify which sample...')
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
59
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
60 data <- data.frame( cgh@featureData@data[,1:3], calls(cgh), copynumber(cgh), segmented(cgh), check.names=FALSE, stringsAsFactors=FALSE)
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
61 colnames( data ) <- c( "chr", "start", "end", "call", "log2", "segmentval" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
62
336697c6f7fa Uploaded
stef
parents:
diff changeset
63 fused.data <- data.frame()
336697c6f7fa Uploaded
stef
parents:
diff changeset
64 curr.bin <- 1
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
65 for ( chr in unique( data$chr ) ) {
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
66
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
67 chr.data <- data[ data$chr == chr, ]
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
68 prev.bin <- curr.bin
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
69 prev.call <- chr.data[ 1, 'call' ]
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) ) {
336697c6f7fa Uploaded
stef
parents:
diff changeset
76
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
77 curr.bin <- curr.bin + 1
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
78 curr.call <- chr.data[ i, 'call']
336697c6f7fa Uploaded
stef
parents:
diff changeset
79 curr.segm <- chr.data[ i, 'segmentval']
336697c6f7fa Uploaded
stef
parents:
diff changeset
80
336697c6f7fa Uploaded
stef
parents:
diff changeset
81 if ( curr.segm != prev.segm ) {
336697c6f7fa Uploaded
stef
parents:
diff changeset
82
336697c6f7fa Uploaded
stef
parents:
diff changeset
83 fused.data <- rbind( fused.data, data.frame( chr=chr, start=start, end=chr.data[ i-1, 'end'], call=prev.call, segmentval=round(prev.segm, digits=DECIMALS) ) )
336697c6f7fa Uploaded
stef
parents:
diff changeset
84 if ( prev.call != 0 ){
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
85 catMsg( c(" ...found called/segmented region (", chr, ':', start, ' call=', prev.call, ' segment=', prev.segm, ")" ) )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
86 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
87 prev.call <- curr.call
336697c6f7fa Uploaded
stef
parents:
diff changeset
88 prev.segm <- curr.segm
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
89 prev.bin <- curr.bin
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
90 start <- chr.data[ i, 'start']
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
91 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
92 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
93 fused.data <- rbind( fused.data, data.frame( chr=chr, start=start, end=chr.data[ i-1, 'end'], call=prev.call, segmentval=round(prev.segm, digits=DECIMALS) ) )
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
94 }else{
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
95 fused.data <- rbind( fused.data, data.frame( chr=chr, start=start, end=chr.data[ i-1, 'end'], call=prev.call, segmentval=round(prev.segm, digits=DECIMALS) ) )
336697c6f7fa Uploaded
stef
parents:
diff changeset
96 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
97 }
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
98 ## if requested remove the regions with call status 0 (= normal)
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
99 if ( onlyCalled == T ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
100 fused.data <- fused.data[ fused.data$call != 0, ]
336697c6f7fa Uploaded
stef
parents:
diff changeset
101 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
102 fused.data
336697c6f7fa Uploaded
stef
parents:
diff changeset
103 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
104
336697c6f7fa Uploaded
stef
parents:
diff changeset
105 ## DESC: takes the output of fuse.regions and outputs a txt file per sample
336697c6f7fa Uploaded
stef
parents:
diff changeset
106 outputRegionsFromList <- function ( regionsList, outputBasename, outputDir="./" ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
107 if ( missing(regionsList) ) stop( 'Please provide regionsList...' )
336697c6f7fa Uploaded
stef
parents:
diff changeset
108 if ( missing(outputBasename) ) stop( 'Please provide outputBasename...' )
336697c6f7fa Uploaded
stef
parents:
diff changeset
109 if ( !is.list(regionsList) ) stop( 'Input not a list...?' )
336697c6f7fa Uploaded
stef
parents:
diff changeset
110 if ( length(regionsList) < 1 ) stop( 'List seems empty...?' )
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
111 if ( file.exists( outputDir ) ) catMsg( c(" Using dir ", outputDir, " for output") )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
112 else dir.create( outputDir )
336697c6f7fa Uploaded
stef
parents:
diff changeset
113 outFiles <- list()
336697c6f7fa Uploaded
stef
parents:
diff changeset
114
336697c6f7fa Uploaded
stef
parents:
diff changeset
115 ## have to set R output options otherwise scientific method is used at some point
336697c6f7fa Uploaded
stef
parents:
diff changeset
116 options( "scipen"=100 )
336697c6f7fa Uploaded
stef
parents:
diff changeset
117
336697c6f7fa Uploaded
stef
parents:
diff changeset
118 sampleCount <- length( regionsList )
336697c6f7fa Uploaded
stef
parents:
diff changeset
119 sampleNames <- names( regionsList )
336697c6f7fa Uploaded
stef
parents:
diff changeset
120 bedgraphColumns <- c( 'chr', 'start', 'end', 'segmentval' )
30
647143d0c884 Uploaded
stef
parents: 29
diff changeset
121
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
122 catMsg( c( " There are ", sampleCount, " samples found in input list") )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
123
336697c6f7fa Uploaded
stef
parents:
diff changeset
124 for ( sample in sampleNames ){
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
125 catMsg( c(" Working on sample ", sample ) )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
126 regionCount <- nrow( regionsList[[sample]] )
336697c6f7fa Uploaded
stef
parents:
diff changeset
127
336697c6f7fa Uploaded
stef
parents:
diff changeset
128 outSampleBase <- paste( outputBasename, '_', sample, '_QDNAseqRegions', sep='')
336697c6f7fa Uploaded
stef
parents:
diff changeset
129 outBedgraphFile <- paste( outSampleBase, '.bedGraph', sep="" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
130 outBedgraphPath <- paste( outputDir, '/', outBedgraphFile, sep="" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
131
336697c6f7fa Uploaded
stef
parents:
diff changeset
132 ## ---------- BEDGRAPH ----------
336697c6f7fa Uploaded
stef
parents:
diff changeset
133 txt <- paste( "track type=bedGraph color=0,100,0 altColor=255,0,0 name=", sample,"_segmReg description=segmented_regions_from_QDNAseq\n", sep="")
336697c6f7fa Uploaded
stef
parents:
diff changeset
134 sink( outBedgraphPath )
336697c6f7fa Uploaded
stef
parents:
diff changeset
135 cat( txt )
336697c6f7fa Uploaded
stef
parents:
diff changeset
136 sink()
336697c6f7fa Uploaded
stef
parents:
diff changeset
137 write.table( regionsList[[sample]][,bedgraphColumns], outBedgraphPath, quote=F, sep="\t", row.names=F, append=T, col.names=F)
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
138 outFiles[[sample]] <- c( outBedgraphFile )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
139 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
140 outFiles
336697c6f7fa Uploaded
stef
parents:
diff changeset
141 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
142
336697c6f7fa Uploaded
stef
parents:
diff changeset
143 ## ==================================================
336697c6f7fa Uploaded
stef
parents:
diff changeset
144 ## Start of analysis
336697c6f7fa Uploaded
stef
parents:
diff changeset
145 ## ==================================================
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
146 MAIN_NAME <- '[INFO] '
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
147 TOOL_PATH <- getScriptPath()
336697c6f7fa Uploaded
stef
parents:
diff changeset
148 CSS_FILE <- paste( TOOL_PATH, '/QDNAseq.css', sep="" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
149 DECIMALS <- 3
336697c6f7fa Uploaded
stef
parents:
diff changeset
150 WEB_LINK <- 'http://www.bioconductor.org/packages/release/bioc/html/QDNAseq.html'
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
151 PURE_CSS <- 'http://yui.yahooapis.com/pure/0.5.0/pure-min.css'
54
4ea771d6aa74 Uploaded
stef
parents: 53
diff changeset
152 PAR_SET <- list( pch=22 )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
153
336697c6f7fa Uploaded
stef
parents:
diff changeset
154 catMsg( "Starting QDNAseq wrapper" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
155 catMsg( "Loading R libraries" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
156 suppressWarnings( suppressMessages( library( QDNAseq, quietly = TRUE ) ) )
336697c6f7fa Uploaded
stef
parents:
diff changeset
157 suppressWarnings( suppressMessages( library( CGHcall, quietly = TRUE ) ) )
25
8509c112abaa Uploaded
stef
parents: 2
diff changeset
158
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
159 ## only one param: the tmp config file
336697c6f7fa Uploaded
stef
parents:
diff changeset
160 cmdLineArgs <- commandArgs(TRUE)
336697c6f7fa Uploaded
stef
parents:
diff changeset
161 config <- cmdLineArgs[1]
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
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
167 PLOT_RES <- min( PLOT_WIDTH, PLOT_HEIGHT ) / 6.3 # desparate try to make png text scale well, damn you R...!
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
168 if ( doOutputCallsRds == TRUE ){ doCall <- TRUE }
336697c6f7fa Uploaded
stef
parents:
diff changeset
169
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
170 systemUser <- system("whoami",T)
4351c7715275 Uploaded
stef
parents: 40
diff changeset
171 qdnaseqVersion <- packageDescription( "QDNAseq" )$Version
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
172 rVersion <- R.version.string
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
173 catMsg( c("Analysis run with user: ", systemUser ) )
4351c7715275 Uploaded
stef
parents: 40
diff changeset
174 catMsg( c("QDNAseq version loaded: ", qdnaseqVersion) )
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
175 catMsg( c( rVersion ) )
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
176
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
177 ## get the comma separated list of chromosomes to exclude
336697c6f7fa Uploaded
stef
parents:
diff changeset
178 excludeChrs <- unlist( strsplit( excludeChrsString, ",") )
336697c6f7fa Uploaded
stef
parents:
diff changeset
179
336697c6f7fa Uploaded
stef
parents:
diff changeset
180 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
181 ## DEBUG
336697c6f7fa Uploaded
stef
parents:
diff changeset
182 #catMsg( "PARAM" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
183 #catMsg( galaxy_path )
336697c6f7fa Uploaded
stef
parents:
diff changeset
184 #catMsg( repos_path )
336697c6f7fa Uploaded
stef
parents:
diff changeset
185 #catMsg( instal_path )
336697c6f7fa Uploaded
stef
parents:
diff changeset
186 ## /DEBUG
336697c6f7fa Uploaded
stef
parents:
diff changeset
187 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
188
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
189 ## help msg for running script without wrapper still needs work!
28
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
190 #if ( length(cmdLineArgs) == 0 || cmdLineArgs[1] == "-h" || cmdLineArgs[1] == "--help"){
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
191 # catMsg( c( "Usage: ", paste(params_help,sep=",") ) )
28
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
192 # quit( save = 'no', status=0, runLast=F )
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
193 #}
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
194
336697c6f7fa Uploaded
stef
parents:
diff changeset
195 if ( !file.exists( outputPath) ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
196 dir.create( outputPath )
336697c6f7fa Uploaded
stef
parents:
diff changeset
197 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
198
336697c6f7fa Uploaded
stef
parents:
diff changeset
199 ## because we circumvent params that galaxy can save, we want to
336697c6f7fa Uploaded
stef
parents:
diff changeset
200 ## copy source config file to output dir to include it in output zip
336697c6f7fa Uploaded
stef
parents:
diff changeset
201 file.copy( config, paste(outputPath, 'qdnaseq_config_file.R', sep='/') )
336697c6f7fa Uploaded
stef
parents:
diff changeset
202
336697c6f7fa Uploaded
stef
parents:
diff changeset
203 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
204 ## construct output file-names and -paths
336697c6f7fa Uploaded
stef
parents:
diff changeset
205 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
206 htmlOutputName <- 'index.html'
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
207 gzipOutputName <- paste( 'QDNAseqResults_', binSize, 'kbp_', outputName, '.zip', sep='' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
208 robjReadCoName <- paste( binSize, 'kbp_QDNAseqReadCounts.rds', sep='')
336697c6f7fa Uploaded
stef
parents:
diff changeset
209 robjCopyNrName <- paste( binSize, 'kbp_QDNAseqCopyNumbers.rds', sep='')
336697c6f7fa Uploaded
stef
parents:
diff changeset
210 robjCalledName <- paste( binSize, 'kbp_QDNAseqCalledSegments.rds', sep='')
336697c6f7fa Uploaded
stef
parents:
diff changeset
211 regiOutputName <- paste( binSize, 'kbp_QDNAseqRegions.rds', sep='')
336697c6f7fa Uploaded
stef
parents:
diff changeset
212 igvCopyNrName <- paste( binSize, 'kbp_QDNAseq-normalized.igv', sep='')
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
213 noiseImgName <- paste( 'QDNAseqNoisePlot.png', sep='')
4351c7715275 Uploaded
stef
parents: 40
diff changeset
214 freqImgName <- paste( 'QDNAseqFrequencyPlot.png', sep='')
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
215
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
216 gzipOutputPath <- paste( outputPath, '/', gzipOutputName, sep='')
4351c7715275 Uploaded
stef
parents: 40
diff changeset
217 htmlOutputPath <- paste( outputPath, '/', htmlOutputName, sep='')
4351c7715275 Uploaded
stef
parents: 40
diff changeset
218 robjReadCoPath <- paste( outputPath, '/', robjReadCoName, sep='')
4351c7715275 Uploaded
stef
parents: 40
diff changeset
219 robjCopyNrPath <- paste( outputPath, '/', robjCopyNrName, sep='')
4351c7715275 Uploaded
stef
parents: 40
diff changeset
220 robjCalledPath <- paste( outputPath, '/', robjCalledName, sep='')
4351c7715275 Uploaded
stef
parents: 40
diff changeset
221 robjRegionPath <- paste( outputPath, '/', regiOutputName, sep='')
4351c7715275 Uploaded
stef
parents: 40
diff changeset
222 igvCopyNrPath <- paste( outputPath, '/', igvCopyNrName, sep='')
4351c7715275 Uploaded
stef
parents: 40
diff changeset
223 noiseImgPath <- paste( outputPath, '/', noiseImgName, sep='' )
4351c7715275 Uploaded
stef
parents: 40
diff changeset
224 freqImgPath <- paste( outputPath, '/', freqImgName, sep='' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
225
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
226 ## setup bam filelist for easy retrieval later
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
227 fileList <- makeBamFileList( bamsPaths, bamsNames )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
228 bamCount <- length( fileList[[ 'all_paths' ]] )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
229
336697c6f7fa Uploaded
stef
parents:
diff changeset
230 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
231 ## performing QDNAseq analysis steps
336697c6f7fa Uploaded
stef
parents:
diff changeset
232 ## ------------------------
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
233 if ( debug ){ ## in case of debug just use inbuilt LGG data for speedup
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
234 data(LGG150)
336697c6f7fa Uploaded
stef
parents:
diff changeset
235 readCounts <- LGG150
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
236 binSize <- 15
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
237 bamsPaths <- c( "BUILD_IN_DATA_LGG150")
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
238 bamsNames <- c( "LGG150")
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
239 fileList <- makeBamFileList( bamsPaths, bamsNames )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
240 bamCount <- length( fileList[[ 'all_paths' ]] )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
241 }else{
336697c6f7fa Uploaded
stef
parents:
diff changeset
242 if ( nchar(binAnnotations) == 0 ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
243 binAnnotations <- getBinAnnotations( binSize=binSize, type=experimentType )
336697c6f7fa Uploaded
stef
parents:
diff changeset
244 }else{
336697c6f7fa Uploaded
stef
parents:
diff changeset
245 ## if user provided file, check if correct class
336697c6f7fa Uploaded
stef
parents:
diff changeset
246 if ( class(binAnnotations)[1] != 'AnnotatedDataFrame' ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
247 stop( "Provided binAnnotations file is not of class 'AnnotatedDataFrame'\n" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
248 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
249 binAnnotations <- readRDS( binAnnotations )
336697c6f7fa Uploaded
stef
parents:
diff changeset
250 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
251 ## provide bamnames because in galaxy everyting is called "dataset_###"
336697c6f7fa Uploaded
stef
parents:
diff changeset
252 readCounts <- binReadCounts( binAnnotations, bamfiles=fileList[[ 'all_paths' ]], bamnames=bamsNames )
336697c6f7fa Uploaded
stef
parents:
diff changeset
253 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
254
336697c6f7fa Uploaded
stef
parents:
diff changeset
255 readCountsFiltered <- applyFilters( readCounts, residual=TRUE, blacklist=filterBlacklistedBins, mappability=mappabilityCutoff, chromosomes=excludeChrs )
336697c6f7fa Uploaded
stef
parents:
diff changeset
256 readCountsFiltered <- estimateCorrection( readCountsFiltered )
336697c6f7fa Uploaded
stef
parents:
diff changeset
257 copyNumbers <- correctBins( readCountsFiltered )
336697c6f7fa Uploaded
stef
parents:
diff changeset
258 copyNumbersNormalized <- normalizeBins( copyNumbers )
336697c6f7fa Uploaded
stef
parents:
diff changeset
259 copyNumbersSmooth <- smoothOutlierBins( copyNumbersNormalized )
28
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
260 sampleNames <- readCountsFiltered@phenoData@data$name
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
261
336697c6f7fa Uploaded
stef
parents:
diff changeset
262 ## save objects to output dir
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
263 saveRDS( readCountsFiltered, robjReadCoPath );
29
4c4e4d88779c Uploaded
stef
parents: 28
diff changeset
264 saveRDS( copyNumbersSmooth, robjCopyNrPath );
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
265 exportBins( copyNumbersSmooth, file=igvCopyNrPath, format="igv" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
266
336697c6f7fa Uploaded
stef
parents:
diff changeset
267 ## also save objects for galaxy history output if requested
336697c6f7fa Uploaded
stef
parents:
diff changeset
268 if ( doOutputReadcountsRds ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
269 saveRDS( readCountsFiltered, readCountsDatasetFile );
336697c6f7fa Uploaded
stef
parents:
diff changeset
270 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
271 if ( doOutputCopynumbersRds ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
272 saveRDS( copyNumbersSmooth, copyNumbersDatasetFile );
336697c6f7fa Uploaded
stef
parents:
diff changeset
273 }
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
274 if ( doOutputCopynumbersIgv ){
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
275 saveRDS( copyNumbersSmooth, copyNumbersIgvDatasetFile );
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
276 }
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
277
336697c6f7fa Uploaded
stef
parents:
diff changeset
278 ## proceed with calling if requested
336697c6f7fa Uploaded
stef
parents:
diff changeset
279 if ( doCall ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
280 copyNumbersSegmented <- segmentBins( copyNumbersSmooth, undo.splits=undoSplits, undo.SD=undoSD )
336697c6f7fa Uploaded
stef
parents:
diff changeset
281 copyNumbersSegmented <- normalizeSegmentedBins( copyNumbersSegmented )
336697c6f7fa Uploaded
stef
parents:
diff changeset
282 copyNumbersCalled <- callBins( copyNumbersSegmented )
336697c6f7fa Uploaded
stef
parents:
diff changeset
283 cgh <- makeCgh( copyNumbersCalled )
336697c6f7fa Uploaded
stef
parents:
diff changeset
284 saveRDS( copyNumbersCalled, robjCalledPath );
336697c6f7fa Uploaded
stef
parents:
diff changeset
285 if ( doOutputCallsRds ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
286 saveRDS( copyNumbersCalled, calledSegmentsDatasetFile );
336697c6f7fa Uploaded
stef
parents:
diff changeset
287 }
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
288 ## actual calls are not included in exportBins output, so not used now
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
289 #exportBins( copyNumbersCalled, file=igvCalledPath, format="igv")
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
290 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
291
28
40ae95ad9d8c Uploaded
stef
parents: 26
diff changeset
292
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
293
336697c6f7fa Uploaded
stef
parents:
diff changeset
294 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
295 ## create output files
336697c6f7fa Uploaded
stef
parents:
diff changeset
296 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
297 plotted_images <- list() # to keep track of images for later linking
336697c6f7fa Uploaded
stef
parents:
diff changeset
298 regions <- list() # will contain the (called) segments
336697c6f7fa Uploaded
stef
parents:
diff changeset
299
53
8434589e692c Uploaded
stef
parents: 45
diff changeset
300 png( noiseImgPath, width=PLOT_HEIGHT, height=PLOT_HEIGHT, res=PLOT_RES );
8434589e692c Uploaded
stef
parents: 45
diff changeset
301 par( PAR_SET )
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
302 noisePlot( readCountsFiltered, col="darkgreen" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
303 dev.off()
336697c6f7fa Uploaded
stef
parents:
diff changeset
304
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
305 if ( doCall ){
4351c7715275 Uploaded
stef
parents: 40
diff changeset
306 png( freqImgPath, width=PLOT_WIDTH, height=PLOT_HEIGHT, res=PLOT_RES );
53
8434589e692c Uploaded
stef
parents: 45
diff changeset
307 par( PAR_SET )
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
308 frequencyPlot( copyNumbersCalled )
4351c7715275 Uploaded
stef
parents: 40
diff changeset
309 dev.off()
4351c7715275 Uploaded
stef
parents: 40
diff changeset
310 }
4351c7715275 Uploaded
stef
parents: 40
diff changeset
311
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
312 for (i in 1:length(sampleNames) ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
313 sample <- sampleNames[i]
336697c6f7fa Uploaded
stef
parents:
diff changeset
314 usedReads <- readCountsFiltered@phenoData@data$used.reads[i]
336697c6f7fa Uploaded
stef
parents:
diff changeset
315 catMsg( c("Creating plots for sample: ", sample ) )
336697c6f7fa Uploaded
stef
parents:
diff changeset
316
336697c6f7fa Uploaded
stef
parents:
diff changeset
317 type <- 'CopyNumbers'
336697c6f7fa Uploaded
stef
parents:
diff changeset
318 img_file <- paste( sample, '_', binSize, 'kbp_QDNAseq', type, '.png', sep='')
336697c6f7fa Uploaded
stef
parents:
diff changeset
319 img_file_path <- paste( outputPath, '/', img_file, sep='' )
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
320 png( img_file_path, width=PLOT_WIDTH, height=PLOT_HEIGHT, res=PLOT_RES );
53
8434589e692c Uploaded
stef
parents: 45
diff changeset
321 par( PAR_SET )
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
322 plot( copyNumbersSmooth[ ,sample ] );
4351c7715275 Uploaded
stef
parents: 40
diff changeset
323 dev.off()
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
324 plotted_images[[ sample ]][[ type ]] <- img_file
336697c6f7fa Uploaded
stef
parents:
diff changeset
325
336697c6f7fa Uploaded
stef
parents:
diff changeset
326 if ( doCall ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
327 type <- 'Called'
336697c6f7fa Uploaded
stef
parents:
diff changeset
328 img_file <- paste( sample, '_', binSize, 'kbp_QDNAseq', type, '.png', sep='')
336697c6f7fa Uploaded
stef
parents:
diff changeset
329 img_file_path <- paste( outputPath, '/', img_file, sep='' )
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
330 png( img_file_path, width=PLOT_WIDTH, height=PLOT_HEIGHT, res=PLOT_RES );
53
8434589e692c Uploaded
stef
parents: 45
diff changeset
331 par( PAR_SET )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
332 plot( copyNumbersCalled[ ,sample ] );
336697c6f7fa Uploaded
stef
parents:
diff changeset
333 dev.off()
336697c6f7fa Uploaded
stef
parents:
diff changeset
334 plotted_images[[ sample ]][[ type ]] <- img_file
336697c6f7fa Uploaded
stef
parents:
diff changeset
335
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
336 catMsg( c(" Fusing regions of sample: ", sample) )
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
337 regions[[ sample ]] <- fuseRegions( cgh[, sample] )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
338 region_count <- nrow( data.frame( regions[[ sample ]] ) )
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
339 catMsg( c( ' sample "', sample, '" has ', region_count, " regions" ) )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
340 plotted_images[[ sample ]][[ 'region_count' ]] <- region_count
336697c6f7fa Uploaded
stef
parents:
diff changeset
341 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
342
30
647143d0c884 Uploaded
stef
parents: 29
diff changeset
343 ## add USED read counts
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
344 plotted_images[[ sample ]][[ 'usedReads' ]] <- usedReads
336697c6f7fa Uploaded
stef
parents:
diff changeset
345 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
346
336697c6f7fa Uploaded
stef
parents:
diff changeset
347 if ( doCall ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
348 saveRDS( regions, robjRegionPath )
336697c6f7fa Uploaded
stef
parents:
diff changeset
349 printedFiles <- outputRegionsFromList( regions, outputBasename=outputName, outputDir=outputPath )
336697c6f7fa Uploaded
stef
parents:
diff changeset
350 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
351
336697c6f7fa Uploaded
stef
parents:
diff changeset
352 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
353 ## prepare output
336697c6f7fa Uploaded
stef
parents:
diff changeset
354 ## ------------------------
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
355 catMsg( "...zipping output")
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
356 zip_cmd <- paste( "zip -j", gzipOutputPath, paste(outputPath,'/*',sep='') ) ## -j is for removing dirs from the tree
336697c6f7fa Uploaded
stef
parents:
diff changeset
357 system( zip_cmd )
336697c6f7fa Uploaded
stef
parents:
diff changeset
358
336697c6f7fa Uploaded
stef
parents:
diff changeset
359 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
360 ## get filesizes for report
336697c6f7fa Uploaded
stef
parents:
diff changeset
361 ## ------------------------
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
362 zippedSize <- paste( round( file.info( gzipOutputPath )[["size"]] / 1e+6, digits=2 ), 'MB' )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
363 readCoSize <- paste( round( file.info( robjReadCoPath )[["size"]] / 1e+6, digits=2 ), 'MB' )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
364 copyNrSize <- paste( round( file.info( robjCopyNrPath )[["size"]] / 1e+6, digits=2 ), 'MB' )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
365 calledSize <- paste( round( file.info( robjCalledPath )[["size"]] / 1e+6, digits=2 ), 'MB' )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
366 regionSize <- paste( round( file.info( robjRegionPath )[["size"]] / 1e+6, digits=2 ), 'MB' )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
367 igvCopyNrSize <- paste( round( file.info( igvCopyNrPath )[["size"]] / 1e+6, digits=2 ), 'MB' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
368
336697c6f7fa Uploaded
stef
parents:
diff changeset
369 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
370 ## creating html output to be linked to from the middle galaxy pane
336697c6f7fa Uploaded
stef
parents:
diff changeset
371 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
372
336697c6f7fa Uploaded
stef
parents:
diff changeset
373 #sink( file = outputHtml, type = "output" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
374 sink( file = htmlOutputPath, type = "output" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
375 cat( "<html>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
376 cat( "<head>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
377 #cat( '<link rel="stylesheet" type="text/css" href="test.css" media="screen" />', "\n" )
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
378 cat( "\t", '<title>QDNAseq Report | ', outputName,'</title>', "\n", sep='' )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
379 cat( "\t", '<link rel="stylesheet" href="', PURE_CSS, '">', "\n", sep='' )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
380 cat( "\t<style>\n", sep='')
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
381 ## include CSS into html file, makes it more portable
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
382 cat( paste( "\t\t", '/* the css here originates from ', CSS_FILE,' */', "\n"), sep='' )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
383 cat( "\t\t", readLines( CSS_FILE ), sep="\n\t\t" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
384 #cat( "\t\th1 {color:red;}", "\n")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
385 cat( "\n\t</style>\n" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
386
336697c6f7fa Uploaded
stef
parents:
diff changeset
387 cat( "\n</head>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
388 cat( "\n<body>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
389
336697c6f7fa Uploaded
stef
parents:
diff changeset
390 cat( "<h1>QDNAseq Report</h1>", "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
391
336697c6f7fa Uploaded
stef
parents:
diff changeset
392 cat( '<h3 class="qdnaseq">About this analysis</h3>', "\n")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
393 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
394
336697c6f7fa Uploaded
stef
parents:
diff changeset
395 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
396 ## table with general info
336697c6f7fa Uploaded
stef
parents:
diff changeset
397 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
398 cat( '<h3 class="qdnaseq">Settings</h3><p>', "\n")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
399 cat( '<table class="pure-table pure-table-striped"><tbody>' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
400 cat( htmlTableRow( c( "AnalysisName", outputName ) ) )
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
401 cat( htmlTableRow( c( "AnalysisDate", as.character(Sys.time()) ) ) )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
402 cat( htmlTableRow( c( "BinSize (kb)", binSize ) ) )
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
403 cat( htmlTableRow( c( "R info", rVersion ) ) )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
404 cat( htmlTableRow( c( "QDNAseq info", qdnaseqVersion ) ) )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
405
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
406 sampleStrings <- c()
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
407 for ( galaxyName in fileList[[ 'all_files' ]] ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
408 sampleName <- fileList[[ galaxyName ]]
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
409 sampleStrings <- c( sampleStrings, paste( galaxyName, ' (', sampleName, ')', sep='' ) )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
410 }
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
411 cat( htmlTableRow( c( "InputBams", paste( sampleStrings, collapse=", ") ) ) )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
412
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
413 cat( "</tbody></table></p>", "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
414
336697c6f7fa Uploaded
stef
parents:
diff changeset
415 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
416 ## list with links to all output files
336697c6f7fa Uploaded
stef
parents:
diff changeset
417 ## ------------------------
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
418
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
419
336697c6f7fa Uploaded
stef
parents:
diff changeset
420 cat( '<h3 class="qdnaseq">Output files</h3><p>', "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
421 cat( '<dl>', "\n" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
422 cat( '<dt>', htmlLink( path=robjReadCoName, robjReadCoName ), '</dt>', "\n" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
423 cat( '<dd>QDNAseq object with read counts per bin, ', readCoSize,'</dd>', "\n" )
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
424
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
425
336697c6f7fa Uploaded
stef
parents:
diff changeset
426 cat( '<dt>', htmlLink( path=robjCopyNrName, robjCopyNrName ), '</dt>', "\n" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
427 cat( '<dd>QDNAseq object with copy numbers per bin, ', copyNrSize,'</dd>', "\n" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
428
31
2517af3f3475 Uploaded
stef
parents: 30
diff changeset
429 cat( '<dt>', htmlLink( path=igvCopyNrName, igvCopyNrName ), '</dt>', "\n" )
2517af3f3475 Uploaded
stef
parents: 30
diff changeset
430 cat( '<dd>IGV formatted text file with copy numbers per bin, ', igvCopyNrSize,'</dd>', "\n" )
2517af3f3475 Uploaded
stef
parents: 30
diff changeset
431
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
432 if ( doCall ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
433 cat( '<dt>', htmlLink( path=robjCalledName, robjCalledName ), '</dt>', "\n" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
434 cat( '<dd>QDNAseq object with segment and call status per bin, ', calledSize,'</dd>', "\n" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
435
336697c6f7fa Uploaded
stef
parents:
diff changeset
436 cat( '<dt>', htmlLink( path=regiOutputName, regiOutputName ), '</dt>', "\n" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
437 cat( '<dd>list with segmented/called regions for each sample, ', regionSize, '</dd>', "\n" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
438 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
439 cat( '</dl></p>', "\n" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
440
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
441 r_code <- '## start own downstream analysis in R with:'
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
442 r_code <- c( r_code, 'library( QDNAseq )' )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
443 r_code <- c( r_code, paste( 'readRDS( ', robjReadCoName, ' ) -> readCounts', sep="") )
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
444
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
445 ## r_code shows example code on how to load output files
25
8509c112abaa Uploaded
stef
parents: 2
diff changeset
446 #cat( r_code, "</p>\n", sep="\n")
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
447 cat( '<p>See ', htmlLink( WEB_LINK, 'the bioconductor QDNAseq documentation' ), ' for more information on how to work with these files</p>', "\n", sep='' )
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
448 cat( '<pre>', paste( r_code, collapse="\n" ), '</pre>', "\n", sep='' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
449
336697c6f7fa Uploaded
stef
parents:
diff changeset
450 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
451 ## table with links to files
336697c6f7fa Uploaded
stef
parents:
diff changeset
452 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
453 cat( '<h3 class="qdnaseq">Results: overview</h3><p>', "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
454 plots_html <- ''
336697c6f7fa Uploaded
stef
parents:
diff changeset
455
40
8bc61837945e Uploaded
stef
parents: 34
diff changeset
456 cat( '<table class="pure-table pure-table-striped"><thead><tr><th>Sample / File</th><th>CopyNr</th><th>Calls</th><th>Reads</th><th>Regions</th><th>Files</th></tr></thead><tbody>' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
457
336697c6f7fa Uploaded
stef
parents:
diff changeset
458 for ( bam_file in sampleNames ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
459
336697c6f7fa Uploaded
stef
parents:
diff changeset
460 #width <- 600; height <- 240
336697c6f7fa Uploaded
stef
parents:
diff changeset
461 width <- PLOT_WIDTH; height <- PLOT_HEIGHT
336697c6f7fa Uploaded
stef
parents:
diff changeset
462 width_t <- 100; height_t <- 40
336697c6f7fa Uploaded
stef
parents:
diff changeset
463
336697c6f7fa Uploaded
stef
parents:
diff changeset
464 ## add thumbnails to table with links to anchors on html page
336697c6f7fa Uploaded
stef
parents:
diff changeset
465 copy_img <- plotted_images[[ bam_file ]][[ 'CopyNumbers' ]]
336697c6f7fa Uploaded
stef
parents:
diff changeset
466 usedReads <- plotted_images[[ bam_file ]][[ 'usedReads' ]]
336697c6f7fa Uploaded
stef
parents:
diff changeset
467 usedReads <- format( as.integer(usedReads), digits=4, decimal.mark=".", big.mark="," )
336697c6f7fa Uploaded
stef
parents:
diff changeset
468
336697c6f7fa Uploaded
stef
parents:
diff changeset
469 html_copy_thumb <- htmlLink( path=paste('#', copy_img, sep=''), paste('<img src="',copy_img,'" alt="', bam_file, '" width="', width_t, '" height="', height_t, '">', sep='') )
336697c6f7fa Uploaded
stef
parents:
diff changeset
470 html_copy_img <- htmlLink( path=copy_img, paste('<img id="', copy_img,'" src="',copy_img,'" alt="',bam_file, '" width="', width, '" height="', height, '">', sep='') )
336697c6f7fa Uploaded
stef
parents:
diff changeset
471 html_call_thumb <- 'NA'
336697c6f7fa Uploaded
stef
parents:
diff changeset
472 html_call_img <- ''
336697c6f7fa Uploaded
stef
parents:
diff changeset
473 html_bedGraph <- 'NA'
336697c6f7fa Uploaded
stef
parents:
diff changeset
474 region_count <- 'NA'
336697c6f7fa Uploaded
stef
parents:
diff changeset
475
336697c6f7fa Uploaded
stef
parents:
diff changeset
476 if ( doCall ){
336697c6f7fa Uploaded
stef
parents:
diff changeset
477 call_img <- plotted_images[[ bam_file ]][[ 'Called' ]]
336697c6f7fa Uploaded
stef
parents:
diff changeset
478 region_count <- plotted_images[[ bam_file ]][[ 'region_count' ]]
336697c6f7fa Uploaded
stef
parents:
diff changeset
479 html_call_thumb <- htmlLink( path=paste('#', call_img, sep=''), paste('<img src="', call_img, '" alt="', bam_file, '" width="', width_t,'" height="', height_t,'">', sep='') )
336697c6f7fa Uploaded
stef
parents:
diff changeset
480
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
481 ## list structure with output files just is an array per BAM
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
482 html_bedGraph <- htmlLink( path=printedFiles[[ bam_file ]][1], 'bedGraph' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
483 html_call_img <- htmlLink( path=call_img, paste('<img id="', call_img,'" src="', call_img,'" alt="', bam_file, '" width="', width, '" height="', height,'">', sep='') )
336697c6f7fa Uploaded
stef
parents:
diff changeset
484 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
485
336697c6f7fa Uploaded
stef
parents:
diff changeset
486 ## add info to overview table, including small thumbnails
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
487 cat( htmlTableRow( c(bam_file, html_copy_thumb, html_call_thumb, usedReads, region_count, paste( html_bedGraph, sep=", ")) ), "\n" )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
488 ## now include (large) images in html page
336697c6f7fa Uploaded
stef
parents:
diff changeset
489 plots_html <- paste( plots_html, html_copy_img, "\n", html_call_img, "\n<hr \\>\n", sep='' )
336697c6f7fa Uploaded
stef
parents:
diff changeset
490 }
336697c6f7fa Uploaded
stef
parents:
diff changeset
491 cat( "</tbody></table></p>", "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
492
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
493 ## ------------------------
4351c7715275 Uploaded
stef
parents: 40
diff changeset
494 ## create the noise and frequency plots
4351c7715275 Uploaded
stef
parents: 40
diff changeset
495 ## ------------------------
4351c7715275 Uploaded
stef
parents: 40
diff changeset
496 html_noise_img <- htmlLink(
4351c7715275 Uploaded
stef
parents: 40
diff changeset
497 path=noiseImgName,
55
b85c575ac1e3 Uploaded
stef
parents: 54
diff changeset
498 paste('<img id="', noiseImgName,'" src="', noiseImgName, '" width="', height/2, '" height="', height/2, '" alt="NoisePlot">', sep='')
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
499 )
4351c7715275 Uploaded
stef
parents: 40
diff changeset
500 html_freq_img <- htmlLink(
4351c7715275 Uploaded
stef
parents: 40
diff changeset
501 path=freqImgName,
55
b85c575ac1e3 Uploaded
stef
parents: 54
diff changeset
502 paste('<img id="', freqImgName,'" src="', freqImgName, '" width="', width/2, '" height="', height/2, ' alt="FrequenceyPlot">', sep='')
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
503 )
56
c962b56a2dd8 Uploaded
stef
parents: 55
diff changeset
504 ## there only is a frequency plot when data is called
c962b56a2dd8 Uploaded
stef
parents: 55
diff changeset
505 if ( !doCall ){ html_freq_img <- '' }
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
506
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
507 extra_plots_html <- paste( html_noise_img, " \n", html_freq_img, "\n", sep='' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
508
336697c6f7fa Uploaded
stef
parents:
diff changeset
509 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
510 ## section with various output shown
336697c6f7fa Uploaded
stef
parents:
diff changeset
511 ## ------------------------
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
512 cat( '<h3 class="qdnaseq">Results: Analysis plots</h3><p>', "\n")
4351c7715275 Uploaded
stef
parents: 40
diff changeset
513 cat( extra_plots_html, "\n")
4351c7715275 Uploaded
stef
parents: 40
diff changeset
514 cat( '<h3 class="qdnaseq">Results: Sample plots</h3><p>', "\n")
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
515 cat( plots_html, "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
516 cat( "\n</p></body>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
517 cat( "\n</html>\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
518 sink()
336697c6f7fa Uploaded
stef
parents:
diff changeset
519
336697c6f7fa Uploaded
stef
parents:
diff changeset
520 ## ------------------------
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
521 ## creating main html output for galaxy history
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
522 ## ------------------------
336697c6f7fa Uploaded
stef
parents:
diff changeset
523 sink( file = outputHtml, type = "output" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
524
336697c6f7fa Uploaded
stef
parents:
diff changeset
525 cat( "<head>", "\n")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
526 cat( "\t", '<link rel="stylesheet" href="', PURE_CSS, '">', "\n", sep='' )
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
527
336697c6f7fa Uploaded
stef
parents:
diff changeset
528 cat( "<style>", "\n")
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
529 ## include CSS directly into html file
2
336697c6f7fa Uploaded
stef
parents:
diff changeset
530 cat( paste( "\t", '/* the css here originates from ', CSS_FILE,' */', "\n") )
336697c6f7fa Uploaded
stef
parents:
diff changeset
531 cat( paste( "\t", readLines( CSS_FILE, n = -1)), sep="\n" )
336697c6f7fa Uploaded
stef
parents:
diff changeset
532 cat( "</style>", "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
533 cat( "</head>", "\n")
336697c6f7fa Uploaded
stef
parents:
diff changeset
534
336697c6f7fa Uploaded
stef
parents:
diff changeset
535 cat( '<h1>QDNAseq Results (', outputName,')</h1>', "\n", sep="")
59
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
536 cat( '<p>Explore <a href="', htmlOutputName, '" class="button">the results</a> directly within galaxy</p>', "\n", sep="")
bfe9d9b7e261 Uploaded
stef
parents: 56
diff changeset
537 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
538
336697c6f7fa Uploaded
stef
parents:
diff changeset
539 cat( '<p>The zip file contains all output files, including *.rds files allowing you to load the R copyNumber object(s) and perform further detailed analysis or create your own output for further processing. You can load the rds file with <code class="code">loadRDS(file.rds)</code></p>', "\n", sep="")
336697c6f7fa Uploaded
stef
parents:
diff changeset
540
336697c6f7fa Uploaded
stef
parents:
diff changeset
541 sink()
336697c6f7fa Uploaded
stef
parents:
diff changeset
542
42
4351c7715275 Uploaded
stef
parents: 40
diff changeset
543 ## ------------------------
4351c7715275 Uploaded
stef
parents: 40
diff changeset
544 ## create final zip and quit with status 0 to tell galaxy all was fine
4351c7715275 Uploaded
stef
parents: 40
diff changeset
545 ## ------------------------
4351c7715275 Uploaded
stef
parents: 40
diff changeset
546 catMsg( "zipping all output")
4351c7715275 Uploaded
stef
parents: 40
diff changeset
547 system( paste( "zip -j ", gzipOutputPath, paste(outputPath,'/', htmlOutputName, sep='') ) )
4351c7715275 Uploaded
stef
parents: 40
diff changeset
548 catMsg( "done" )
25
8509c112abaa Uploaded
stef
parents: 2
diff changeset
549 q(status=0)