annotate cluster.tools/extract.cons.cluster.from.result.R @ 2:b442996b66ae draft

Uploaded
author peter-waltman
date Wed, 27 Feb 2013 20:17:04 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
1 #!/usr/bin/env Rscript
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
2 # Extract k cluster assignment from consensus clustering result Script by Peter Waltman
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
3 # Nov. 12, 2012
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
4 # License under Creative Commons Attribution 3.0 Unported (CC BY 3.0)
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
5 #
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
6 ##usage, options and doc goes here
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
7 argspec <- c("galaxy.extract.cons.clustering.from.result.R extracts a cluster assignment for a specified
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
8 value of K from a specified consensus cluster result file.
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
9
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
10
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
11 Usage:
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
12 galaxy.extract.cons.cluster.from.result.R -r <results_file> -k <k_select>
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
13 Optional:
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
14 -o consensus class output file # tab-delimitted file format
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
15 \n\n")
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
16 args <- commandArgs(TRUE)
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
17 if ( length( args ) == 1 && args =="--help") {
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
18 write( argspec, stderr() )
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
19 q();
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
20 }
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
21
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
22 library(getopt)
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
23
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
24 spec <- matrix( c( "results.file", "r", 1, "character",
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
25 "k.select", "k", 1, "integer",
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
26 "cluster.class.out", "o", 2, "character",
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
27 "output.select.rdata", "d", 2, "character"
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
28 ),
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
29 nc=4,
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
30 byrow=T
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
31 )
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
32 opt <- getopt( spec=spec )
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
33 if ( is.null( opt$output.select.rdata ) ) { opt$output.select.rdata <- "select.RData" }
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
34 ##if ( is.null( opt$cluster.class.out) ) { opt$cluster.class.out <- "select.cls" }
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
35
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
36 load( opt$results.file )
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
37 cons.matrices <- lapply( results[ 2:length(results) ], '[[', 'consensusMatrix' )
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
38 cls <- lapply( results[ 2:length(results) ], '[[', 'consensusClass' )
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
39 names( cons.matrices ) <- names( cls ) <- 2:length( results )
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
40
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
41 ch.k.select <- as.character( opt$k.select )
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
42 if ( ch.k.select %in% names( cls ) ) {
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
43 ## get the consensusClass file that's associated with the k.select
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
44 cl <- cls[[ ch.k.select ]]
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
45
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
46 if ( ! is.null( opt$cluster.class.out ) ) {
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
47 cl <- cbind( names( cl ), as.integer(cl) )
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
48 colnames( cl ) <- c( "ID", "class" )
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
49 write.table( cl, opt$cluster.class.out, sep="\t", row.names=FALSE, quote=FALSE )
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
50 } else if ( ! is.null( opt$output.select.rdata ) ) {
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
51 ## re-order the samples to follow the cluster assignment
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
52 treecl.res <- results[[ opt$k.select ]]$consensusTree
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
53 select.result <- results[[ opt$k.select ]]
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
54 save( file=opt$output.select.rdata, treecl.res, cl, select.result, data )
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
55 } else {
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
56 stop( 'no valid output format specified\n' )
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
57 }
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
58 } else {
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
59 out.string <- paste( "choice of k =", ch.k.select, "not available in this result file. Max k = ", max( as.numeric( names(cls) ) ), "\n" )
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
60 cat( out.string, file=opt$cluster.class.out )
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
61 }
b442996b66ae Uploaded
peter-waltman
parents:
diff changeset
62