annotate R/estimateSign_Galaxy.r @ 1:748b7a8b634c draft

Uploaded
author iarc
date Thu, 21 Apr 2016 09:36:32 -0400
parents 8c682b3a7c5b
children 46a10309dfe2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
1 #!/usr/bin/Rscript
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
2
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
3 #-----------------------------------#
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
4 # Author: Maude #
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
5 # Script: estimateSign_Galaxy.r #
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
6 # Last update: 22/07/15 #
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
7 #-----------------------------------#
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
8
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
9 #########################################################################################################################################
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
10 # Estimate the number of signatures for NMF #
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
11 #########################################################################################################################################
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
12
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
13 #-------------------------------------------------------------------------------
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
14 # Load library for recovering the arguments
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
15 #-------------------------------------------------------------------------------
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
16 suppressMessages(suppressWarnings(require("getopt")))
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
17
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
18
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
19 #-------------------------------------------------------------------------------
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
20 # Recover the arguments
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
21 #-------------------------------------------------------------------------------
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
22 spec = matrix(c(
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
23 "input" , "i", 1, "character",
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
24 "stop", "stop", 1, "numeric",
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
25 "cpu", "cpu", 1, "integer",
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
26 "output", "o", 1, "character",
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
27 "help", "h", 0, "logical"
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
28 ),
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
29 byrow=TRUE, ncol=4
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
30 )
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
31
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
32 opt = getopt(spec);
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
33
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
34 # No argument is pass to the command line
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
35 if(length(opt) == 1)
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
36 {
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
37 cat(paste("Usage:\n estimateSign_Galaxy.r --input <matrix> --stop <maxNbSign> --cpu <cpu> --output <output_filename.png>\n",sep=""))
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
38 q(status=1)
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
39 }
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
40
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
41 # Help was asked for.
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
42 if ( !is.null(opt$help) )
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
43 {
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
44 # print a friendly message and exit with a non-zero error code
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
45 cat(paste("Usage:\n estimateSign_Galaxy.r --input <matrix> --stop <maxNbSign> --cpu <cpu> --output <output_filename.png>\n",sep=""))
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
46 q(status=1)
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
47 }
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
48
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
49
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
50
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
51 #-------------------------------------------------------------------------------
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
52 # Load library
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
53 #-------------------------------------------------------------------------------
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
54 suppressMessages(suppressWarnings(library(NMF)))
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
55
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
56
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
57 ###############################################################################
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
58 # Load the functions #
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
59 ###############################################################################
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
60
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
61 #-------------------------------------------------------------------------------
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
62 # Check the file doesn't have lines equal to zero
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
63 #-------------------------------------------------------------------------------
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
64 CheckFile <- function(rowsum, dataFrame, x)
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
65 {
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
66 if(rowsum == 0)
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
67 {
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
68 write("\n\nERROR: There is not enough mutations for running NMF!!!", stderr())
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
69 write(paste0("Input matrix contains at least one null row ", rownames(dataFrame)[x], "\n\n"), stderr())
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
70 stop()
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
71 }
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
72 }
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
73
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
74
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
75 ###############################################################################
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
76 # Check file #
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
77 ###############################################################################
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
78
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
79 # The input musn't contains lines equal to zero !!!
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
80 matrixNMF <- read.table(opt$input, header=T)
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
81 # suppresses the return of sapply function
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
82 invisible( sapply(1:nrow(matrixNMF), function(x) { CheckFile(rowSums(matrixNMF)[x], matrixNMF, x) } ) )
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
83
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
84
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
85
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
86 ###############################################################################
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
87 # Estimate the number of signatures #
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
88 ###############################################################################
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
89 # Estimate the number of signatures with our data
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
90 nbCPU <- paste0("vP", opt$cpu)
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
91 nbSign <- 2:opt$stop # The minum number of signatures can't be lower than 2
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
92
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
93 estim_r <- nmf(matrixNMF, method="brunet", nbSign, nrun=50, .opt=nbCPU)
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
94
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
95 # Shuffle original data
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
96 v_random <- randomize(matrixNMF)
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
97 # Estimate quality measures from the shuffled data
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
98 estim_r_random <- nmf(v_random, method="brunet", nbSign, nrun=50, .opt=nbCPU)
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
99
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
100 # Plot the estimation for our data and the random ones
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
101 graphics.off()
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
102 options(bitmapType='cairo')
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
103 png(opt$output, width=3000, height=2000, res=300)
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
104 plot(estim_r, estim_r_random)
8c682b3a7c5b Uploaded
iarc
parents:
diff changeset
105 invisible( dev.off() )