annotate roi_pca.Rscript @ 12:4cf71b199381 draft default tip

Uploaded
author holtgrewe
date Mon, 12 Aug 2013 10:44:25 -0400
parents 61d9bdb6d519
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
1 #!/usr/bin/env Rscript
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
2
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
3 # Compute PCA metric for ROI files.
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
4 #
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
5 # USAGE: roi_pca.Rscript -i IN.roi -o OUT.roi
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
6
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
7 # TODO(holtgrew): Bernd, can you give the English names of the metrics below in the comments?
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
8
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
9 # Author: Bernd Jagla <bernd.jagla@pasteur.fr>
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
10 # Author: Manuel Holtgrewe <manuel.holtgrewe@fu-berlin.de>
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
11
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
12 library('getopt') # parsing args
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
13 library('ngsroi') # ROI I/O
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
14 library('boot') # k3.linear()
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
15
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
16 # ----------------------------------------------------------------------------
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
17 # Command Line Parsing
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
18 # ----------------------------------------------------------------------------
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
19
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
20 # Parse command line options.
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
21 spec = matrix(c(
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
22 "help", "h", 0, "logical",
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
23 "infile", "i", 1, "character",
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
24 "outfile", "o", 1, "character"
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
25 ), byrow=TRUE, ncol=4);
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
26 opt = getopt(spec);
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
27
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
28 # If help was asked for print a friendly message and exit with a non-zero
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
29 # error code.
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
30 if (!is.null(opt$help) )
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
31 {
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
32 cat(getopt(spec, usage=TRUE));
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
33 q(status=1);
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
34 }
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
35
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
36 # Check arguments.
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
37 if (is.null(opt$infile))
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
38 {
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
39 write("-i/--infile missing.", stderr());
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
40 q(status=1)
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
41 }
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
42 if (is.null(opt$out))
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
43 {
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
44 write("-o/--outfile missing.", stderr());
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
45 q(status=1)
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
46 }
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
47
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
48 # ----------------------------------------------------------------------------
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
49 # Compute metrics.
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
50 # ----------------------------------------------------------------------------
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
51
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
52 # Read input files.x
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
53 roi = readROI(opt$infile)
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
54
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
55 # Compute PCA.
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
56 data=roi[,8:length(roi)-1]
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
57 pca=princomp(data, na.action=na.exclude)
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
58 prj=predict(pca, data)
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
59 roi$pca1=prj[,1]
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
60 roi$pca2=prj[,2]
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
61
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
62 # Write output.
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
63 writeROI(roi, opt$outfile)
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
64
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
65 # Quit with success code.
61d9bdb6d519 Uploaded
holtgrewe
parents:
diff changeset
66 q(status=0)