annotate rglasso_cox.xml @ 4:fb4959ed5b2b draft

Fixes to paths in git for deps
author fubar
date Sat, 31 Oct 2015 02:26:24 -0400
parents cf295f36d606
children 31be675baa50
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
1 <tool id="rglasso_cox" name="Lasso" version="0.03">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
2 <description>and cox regression using elastic net</description>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
3 <requirements>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
4 <requirement type="package" version="3.2.2">R_3_2_2</requirement>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
5 <requirement type="package" version="1.3.18">graphicsmagick</requirement>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
6 <requirement type="package" version="9.10">ghostscript</requirement>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
7 <requirement type="package" version="3.2">glmnet_lars_3_2</requirement>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
8 </requirements>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
9 <command interpreter="python">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
10 rgToolFactory.py --script_path "$runme" --interpreter "Rscript" --tool_name "rglasso"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
11 --output_dir "$html_file.files_path" --output_html "$html_file" --make_HTML "yes"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
12 </command>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
13 <configfiles>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
14 <configfile name="runme">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
15 <![CDATA[
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
16 library('glmnet')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
17 library('lars')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
18 library('survival')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
19 library('pec')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
20
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
21
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
22 message=function(x) {print.noquote(paste(x,sep=''))}
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
23
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
24
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
25 ross.cv.glmnet = function (x, y, weights, offset = NULL, lambda = NULL, type.measure = c("mse",
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
26 "deviance", "class", "auc", "mae"), nfolds = 10, foldid,
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
27 grouped = TRUE, keep = FALSE, parallel = FALSE, ...)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
28 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
29 if (missing(type.measure))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
30 type.measure = "default"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
31 else type.measure = match.arg(type.measure)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
32 if (!is.null(lambda) && length(lambda) < 2)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
33 stop("Need more than one value of lambda for cv.glmnet")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
34 N = nrow(x)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
35 if (missing(weights))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
36 weights = rep(1, N)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
37 else weights = as.double(weights)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
38 y = drop(y)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
39 glmnet.call = match.call(expand.dots = TRUE)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
40 sel = match(c("type.measure", "nfolds", "foldid", "grouped",
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
41 "keep"), names(glmnet.call), F)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
42 if (any(sel))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
43 glmnet.call = glmnet.call[-sel]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
44 glmnet.call[[1]] = as.name("glmnet")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
45 glmnet.object = glmnet(x, y, weights = weights, offset = offset,
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
46 lambda = lambda, ...)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
47 glmnet.object\$call = glmnet.call
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
48 is.offset = glmnet.object\$offset
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
49 lambda = glmnet.object\$lambda
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
50 if (inherits(glmnet.object, "multnet")) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
51 nz = predict(glmnet.object, type = "nonzero")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
52 nz = sapply(nz, function(x) sapply(x, length))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
53 nz = ceiling(apply(nz, 1, median))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
54 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
55 else nz = sapply(predict(glmnet.object, type = "nonzero"),
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
56 length)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
57 if (missing(foldid))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
58 foldid = sample(rep(seq(nfolds), length = N))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
59 else nfolds = max(foldid)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
60 if (nfolds < 3)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
61 stop("nfolds must be bigger than 3; nfolds=10 recommended")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
62 outlist = as.list(seq(nfolds))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
63 if (parallel && require(foreach)) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
64 outlist = foreach(i = seq(nfolds), .packages = c("glmnet")) %dopar%
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
65 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
66 sel = foldid == i
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
67 if (is.matrix(y))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
68 y_sub = y[!sel, ]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
69 else y_sub = y[!sel]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
70 if (is.offset)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
71 offset_sub = as.matrix(offset)[!sel, ]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
72 else offset_sub = NULL
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
73 glmnet(x[!sel, , drop = FALSE], y_sub, lambda = lambda,
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
74 offset = offset_sub, weights = weights[!sel],
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
75 ...)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
76 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
77 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
78 else {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
79 for (i in seq(nfolds)) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
80 sel = foldid == i
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
81 if (is.matrix(y))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
82 y_sub = y[!sel, ]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
83 else y_sub = y[!sel]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
84 if (is.offset)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
85 offset_sub = as.matrix(offset)[!sel, ]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
86 else offset_sub = NULL
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
87 outlist[[i]] = glmnet(x[!sel, , drop = FALSE],
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
88 y_sub, lambda = lambda, offset = offset_sub,
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
89 weights = weights[!sel], ...)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
90 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
91 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
92 fun = paste("cv", class(glmnet.object)[[1]], sep = ".")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
93 cvstuff = do.call(fun, list(outlist, lambda, x, y, weights,
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
94 offset, foldid, type.measure, grouped, keep))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
95 cvm = cvstuff\$cvm
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
96 cvsd = cvstuff\$cvsd
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
97 cvname = cvstuff\$name
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
98
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
99 out = list(lambda = lambda, cvm = cvm, cvsd = cvsd, cvup = cvm +
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
100 cvsd, cvlo = cvm - cvsd, nzero = nz, name = cvname, glmnet.fit = glmnet.object)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
101 if (keep)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
102 out = c(out, list(fit.preval = cvstuff\$fit.preval, foldid = foldid))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
103
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
104 lamin = if (type.measure == "auc")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
105 getmin(lambda, -cvm, cvsd)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
106 else getmin(lambda, cvm, cvsd)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
107 out = c(out, as.list(lamin))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
108 hitsse = rep(0,ncol(x))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
109 hitsmin = rep(0,ncol(x))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
110 names(hitsse) = colnames(x)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
111 names(hitsmin) = colnames(x)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
112 olmin = lamin\$lambda.min
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
113 ol1sd = lamin\$lambda.1se
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
114 lambs = c(olmin,ol1sd)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
115 names(lambs) = c('olmin','ol1sd')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
116 for (cvfit in outlist) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
117 colmin = which(cvfit\$lambda == olmin)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
118 col1se = which(cvfit\$lambda == ol1sd)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
119 nzmin = which(cvfit\$beta[,colmin] != 0)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
120 nz1se = which(cvfit\$beta[,col1se] != 0)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
121 hitsse[nz1se] = hitsse[nz1se] + 1
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
122 hitsmin[nzmin] = hitsmin[nzmin] + 1
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
123 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
124 obj = c(out,list(cvhits.1se=hitsse,cvhits.min=hitsmin))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
125 class(obj) = "cv.glmnet"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
126 obj
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
127 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
128
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
129 mdsPlot = function(dm,myTitle,groups=NA,outpdfname,transpose=T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
130 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
131
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
132 samples = colnames(dm)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
133 mt = myTitle
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
134 pcols=c('maroon')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
135 if (! is.na(groups))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
136 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
137 gu = unique(groups)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
138 colours = rainbow(length(gu),start=0.1,end=0.9)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
139 pcols = colours[match(groups,gu)]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
140 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
141 mydata = dm
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
142 if (transpose==T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
143 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
144 mydata = t(dm)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
145 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
146 npred = ncol(mydata)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
147 d = dist(mydata)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
148 fit = cmdscale(d,eig=TRUE, k=min(10,npred-2))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
149 xmds = fit\$points[,1]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
150 ymds = fit\$points[,2]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
151 pdf(outpdfname)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
152 plot(xmds, ymds, xlab="Dimension 1", ylab="Dimension 2",
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
153 main=paste(mt,"MDS Plot"),type="n", col=pcols, cex=0.35)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
154 text(xmds, ymds, labels = row.names(mydata), cex=0.35, col=pcols)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
155 grid(col="lightgray",lty="dotted")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
156 dev.off()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
157 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
158
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
159
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
160 getpredp_logistic = function(x,yvec,yvarname,id)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
161 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
162 yvals = unique(yvec)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
163 if (length(yvals) != 2) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
164 message(c('ERROR: y does not have 2 values =',paste(yvals,collapse=',')))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
165 return(NA)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
166 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
167 cols = colnames(x)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
168 if (length(cols) == 0) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
169 message('ERROR: No columns in input x? Cannot predict!')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
170 return(NA)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
171 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
172 cn = paste(cols, collapse = ' + ')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
173
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
174 formstring=paste("y ~",cn)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
175 form = as.formula(formstring)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
176 ok = complete.cases(x)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
177
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
178 if (sum(ok) < length(ok)) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
179 x = x[ok,]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
180 yvec = yvec[ok]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
181 id = id[ok]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
182 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
183 nx = data.frame(id=id,x,y=yvec)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
184 print('nx,yvec:')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
185 print(head(nx,n=3))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
186 print(yvec)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
187 mdl = glm(form, data=nx, family="binomial", na.action=na.omit)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
188 message(c('Model format =',formstring))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
189 message(paste('Predictive model details used to generate logistic outcome probabilities for',yvarname,':'))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
190 print(summary(md1))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
191 print(anova(md1))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
192 predp = predict(md1,nx,type="response")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
193 p1 = data.frame(id=id,pred_response=predp,obs_response=yvec)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
194 return(p1)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
195 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
196
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
197 getpredp_cox = function(x,time,status,id,predict_at)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
198 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
199 cols = colnames(x)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
200 if (length(cols) == 0) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
201 message('ERROR: No columns in input x? Cannot predict!')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
202 return(NA)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
203 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
204 cn = paste(colnames(x), collapse = ' + ')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
205
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
206 formstring=paste("Surv(time, status) ~",cn)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
207
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
208 form = as.formula(formstring)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
209
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
210 ok = complete.cases(x)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
211
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
212 if (sum(ok) < length(ok)) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
213 x = x[ok,]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
214 time = time[ok]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
215 status = status[ok]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
216 id = id[ok]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
217 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
218 nx = data.frame(x,time=time,status=status)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
219 m1 = coxph(form, data=nx,singular.ok=TRUE)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
220 print.noquote('Predictive model details used to generate survival probabilities:')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
221 print.noquote(m1)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
222 predpq = predictSurvProb(object=m1, newdata=nx, times=predict_at)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
223 predpq = 1-predpq
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
224 colnames(predpq) = paste('p_surv_to',predict_at,sep='_')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
225 p1 = data.frame(id=id,predpq,time=time,status=status)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
226 return(p1)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
227 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
228
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
229
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
230 dolasso_cox = function(x,y,debugOn=F,maxsteps=10000,nfold=10,xcolnames,ycolnames,optLambda='lambda.1se',out_full=F,out_full_file=NA,
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
231 out_pred=F,out_pred_file=NA,cox_id=NA, descr='Cox test',do_standard=F,alpha=0.9,penalty,predict_at,mdsplots=F)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
232 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
233 logf = file("cox_rglasso.log", open = "a")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
234 sink(logf,type = c("output", "message"))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
235 res = NULL
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
236 if (mdsplots==T) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
237 outpdfname = 'cox_x_in_sample_space_MDS.pdf'
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
238 p = try({ mdsPlot(x,'measurements in sample space',groups=NA,outpdfname=outpdfname,transpose=T) },T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
239 if (class(p) == "try-error")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
240 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
241 print.noquote(paste('Unable to produce predictors in sample space mds plot',p))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
242 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
243 outpdfname = 'cox_samples_in_x_space_MDS.pdf'
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
244 p = try({mdsPlot(x,'samples in measurement space',groups=y,outpdfname=outpdfname,transpose=F) },T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
245 if (class(p) == "try-error")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
246 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
247 print.noquote(paste('Unable to produce samples in measurement space mds plots',p))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
248 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
249 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
250 if (is.na(predict_at)) { predict_at = quantile(y) }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
251 message(paste('@@@ Cox model will be predicted at times =',paste(predict_at,collapse=',')))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
252 do_standard = do_standard
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
253 standardize = do_standard
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
254 normalize = do_standard
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
255 p = try({larsres = glmnet(x,y,family='cox',standardize=standardize,alpha=alpha,penalty.factor=penalty )},T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
256 if (class(p) == "try-error")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
257 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
258 print.noquote('Unable to run cox glmnet on your data')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
259 print.noquote(p)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
260 sink()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
261 return(NA)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
262 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
263 if (out_full == T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
264 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
265 b = as.matrix(larsres\$beta)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
266 nb = length(colnames(b))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
267 bcoef = b[,nb]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
268 lastl = larsres\$lambda[length(larsres\$lambda)]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
269 allres = data.frame(x=rownames(b),beta=bcoef,lambda=lastl)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
270 write.table(format(allres,digits=5),out_full_file,quote=FALSE, sep="\t",row.names=F)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
271 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
272
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
273 outpdf = paste('cox',descr,'glmnetdev.pdf',sep='_')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
274 try(
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
275 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
276 pdf(outpdf)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
277 plot(larsres,main='cox glmnet',label=T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
278 grid()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
279 dev.off()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
280 },T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
281
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
282 larscv = NA
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
283
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
284 p = try({larscv=ross.cv.glmnet(x,y,family=fam,type.measure='deviance',penalty=penalty)},T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
285 if (class(p) == "try-error") {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
286 print.noquote(paste('Unable to cross validate your data',p))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
287 sink()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
288 return(NA)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
289 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
290 lse = larscv\$cvhits.1se
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
291 lmin = larscv\$cvhits.min
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
292 tot = lse + lmin
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
293 allhits = data.frame(hits_lambda_1se = lse,hits_lambda_min = lmin)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
294 nzhits = allhits[which(tot != 0),]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
295 message('Times each predictor was selected in CV models (excluding zero count predictors)')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
296 print.noquote(nzhits)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
297 out_nz_file = 'cox_cross_validation_model_counts.xls'
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
298 write.table(nzhits,out_nz_file,quote=FALSE, sep="\t",row.names=F)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
299
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
300 outpdf = paste('cox',descr,'glmnet_cvdeviance.pdf',sep='_')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
301
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
302 p = try(
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
303 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
304 pdf(outpdf)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
305 plot(larscv,main='Deviance',label=T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
306 grid()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
307 dev.off()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
308 },T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
309 if (optLambda == 'lambda.min') {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
310 best_lambda = larscv\$lambda.min
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
311 bestcoef = as.matrix(coef(larscv, s = "lambda.min"))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
312 } else {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
313 best_lambda = larscv\$lambda.1se
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
314 bestcoef = as.matrix(coef(larscv, s = "lambda.1se"))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
315 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
316 inmodel = which(bestcoef != 0)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
317 coefs = bestcoef[inmodel]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
318 preds = rownames(bestcoef)[inmodel]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
319
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
320 names(coefs) = preds
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
321 pen = as.logical( ! penalty[inmodel])
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
322 if (out_pred==T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
323 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
324 if (length(inmodel) > 0 ) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
325 predcols = inmodel
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
326 xmat = as.matrix(x[,predcols])
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
327 colnames(xmat) = preds
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
328 bestpred = getpredp_cox(x=xmat,time=y[,'time'],status=y[,'status'],id=cox_id, predict_at=predict_at)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
329 pred = data.frame(responsep=bestpred, best_lambda=best_lambda,lamchoice=optLambda,alpha=alpha)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
330 write.table(pred,out_pred_file,quote=FALSE, sep="\t",row.names=F)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
331 } else { print.noquote('WARNING: No coefficients in selected model to predict with - no predictions made') }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
332 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
333 if (debugOn) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
334 print.noquote(paste('best_lambda=',best_lambda,'saving cox respreds=',paste(names(coefs),collapse=','),'as predictors of survival. Coefs=',paste(coefs,collapse=',')))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
335 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
336 p = try({res = data.frame(regulator=names(coefs),partial_likelihood=coefs,forced_in=pen,glmnet_model='cox',best_lambda=best_lambda,
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
337 lambdaChoice=optLambda,alpha=alpha)},T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
338 if (class(p) == "try-error") {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
339 message(paste('@@@ unable to return a dataframe',p))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
340 sink()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
341 return(NA)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
342 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
343 print.noquote('@@@ Results preview:')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
344 print.noquote(res,digits=5)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
345 sink()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
346 return(res)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
347
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
348 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
349
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
350
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
351 do_lasso = function(x=NA,y=NA,do_standard=T,debugOn=T,defaultFam="gaussian",optLambda='minLambda',descr='description', indx=1,target='target',sane=F,
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
352 alpha=0.9,nfold=10,penalty=c(),out_pred=F,out_pred_file='outpred',yvarname='yvar',id=c(),mdsplots=F)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
353 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
354 logf = file(paste(target,"rglasso.log",sep='_'), open = "a")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
355 sink(logf,type = c("output", "message"))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
356 res = NA
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
357 phe_is_bin = (length(unique(y)) == 2)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
358 forcedin = paste(colnames(x)[which(penalty == 0)],collapse=',')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
359 fam = "gaussian"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
360 if (defaultFam %in% c("poisson","binomial","gaussian","multinomial")) fam=defaultFam
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
361 if (phe_is_bin == T) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
362 fam = "binomial"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
363 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
364 print.noquote(paste('target=',target,'is binary=',phe_is_bin,'dim(x)=',paste(dim(x),collapse=','),'length(y)=',length(y),'force=',forcedin,'fam=',fam))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
365 standardize = do_standard
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
366 p = try({larsres = glmnet(x,y,family=fam,standardize=standardize,maxit=10000,alpha=alpha,penalty.factor=penalty) },T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
367 if (class(p) == "try-error")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
368 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
369 print(paste('ERROR: unable to run glmnet for target',target,'error=',p))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
370 sink()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
371 return(NA)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
372 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
373
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
374 mt = paste('Glmnet fraction deviance for',target)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
375 outpdf = paste(target,'glmnetPath.pdf',sep='_')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
376 pdf(outpdf)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
377 plot(larsres,main=mt,label=T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
378 grid()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
379 dev.off()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
380
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
381 outpdf = paste(target,'glmnetDeviance.pdf',sep='_')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
382
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
383 mt2 = paste('Glmnet lambda for',target)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
384
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
385 pdf(outpdf)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
386 plot(larsres,xvar="lambda",main=mt2,label=T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
387 grid()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
388 dev.off()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
389
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
390 larscv = NA
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
391 if (fam=="binomial") {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
392 tmain = paste(target,'AUC')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
393 outpdf = paste(target,'glmnetCV_AUC.pdf',sep='_')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
394 p = try({larscv = ross.cv.glmnet(x=x,y=y,family=fam,type.measure='auc')},T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
395 } else {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
396 tmain = paste(target,'CV MSE')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
397 outpdf = paste(target,'glmnetCV_MSE.pdf',sep='_')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
398 p = try({larscv = ross.cv.glmnet(x=x,y=y,family=fam,type.measure='mse')},T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
399 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
400 if (class(p) == "try-error")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
401 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
402 print(paste('ERROR: unable to run cross validation for target',target,'error=',p))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
403 sink()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
404 return(NA)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
405 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
406
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
407 pdf(outpdf)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
408 plot(larscv,main=tmain)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
409 grid()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
410 dev.off()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
411
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
412 lse = larscv\$cvhits.1se
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
413 lmin = larscv\$cvhits.min
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
414 tot = lse + lmin
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
415 allhits = data.frame(pred=colnames(x),hits_lambda_1se = lse,hits_lambda_min = lmin)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
416 nzhits = allhits[which(tot != 0),]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
417 message('Total hit count for each predictor over all CV models (excluding zero count predictors)')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
418 print.noquote(nzhits)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
419 out_nz_file = paste(target,'cross_validation_model_counts.xls',sep='_')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
420 write.table(nzhits,out_nz_file,quote=FALSE, sep="\t",row.names=F)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
421
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
422 ipenalty = c(0,penalty)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
423 if (optLambda == 'lambda.min') {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
424 best_lambda = larscv\$lambda.min
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
425 bestpred = as.matrix(coef(larscv, s = "lambda.min"))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
426 } else {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
427 best_lambda = larscv\$lambda.1se
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
428 bestpred = as.matrix(coef(larscv, s = "lambda.1se"))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
429 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
430 inmodel = which(bestpred != 0)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
431 coefs = bestpred[inmodel,1]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
432 preds = rownames(bestpred)[inmodel]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
433 iforced = ipenalty[inmodel]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
434 forced = ! as.logical(iforced)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
435 names(coefs) = preds
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
436 ncoef = length(coefs) - 1
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
437 if (out_pred==T && fam=="binomial")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
438 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
439 print.noquote(paste('Predicting',target,'probabilities from binomial glmnet at alpha',alpha,'and lambda',best_lambda))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
440 bestpred = predict.glmnet(larsres,s=best_lambda,newx=x,type="response")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
441 bestpred = exp(bestpred)/(1+exp(bestpred))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
442 pred = data.frame(id=id,y=y,predp=as.vector(bestpred), best_lambda=best_lambda)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
443 write.table(pred,out_pred_file,quote=FALSE, sep="\t",row.names=F)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
444 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
445 if (debugOn) {cat(indx,'best_lambda=',best_lambda,'saving',fam,'respreds=',names(coefs),'as predictors of',target,'coefs=',coefs,'\n')}
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
446 res = try(data.frame(i=indx,pred=target,regulator=names(coefs),coef=coefs,forced_in=forced,glmnet_model=fam,ncoef=ncoef,
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
447 best_lambda=best_lambda,lambdaChoice=optLambda,alpha=alpha),T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
448 if (class(res) == "try-error") {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
449 sink()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
450 return(NA) }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
451 print.noquote(res)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
452 sink()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
453 return(res)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
454 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
455
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
456
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
457 dolasso_generic = function(predvars=NA,depvars=NA,debugOn=T,maxsteps=100, alpha=0.9,nfold=10,xcolnames=c(),ycolnames=c(),optLambda='minLambda', out_pred_file=NA,
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
458 descr="describe me",do_standard=F,defaultFam="gaussian",penalty=c(),out_pred=F,cox_id=c(),mdsplots=F,xfilt=0.95)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
459 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
460 logf = file("rglasso.log", open = "a")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
461 sink(logf,type = c("output", "message"))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
462 xdat = predvars
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
463 xm = data.matrix(xdat)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
464 res = NULL
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
465 id = cox_id
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
466 depnames = ycolnames
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
467 ndep = length(depnames)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
468 if (mdsplots==T) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
469 outpdfname = 'rglasso_x_in_sample_space_MDS.pdf'
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
470 p = try({ mdsPlot(xm,'measurements in sample space',groups=NA,outpdfname=outpdfname,transpose=T) },T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
471 if (class(p) == "try-error")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
472 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
473 print.noquote(paste('Unable to produce predictors in sample space mds plot. Error:',p))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
474 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
475 outpdfname = 'rglasso_samples_in_x_space_MDS.pdf'
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
476 p = try({mdsPlot(xm,'samples in measurement space',groups=NA,outpdfname=outpdfname,transpose=F) },T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
477 if (class(p) == "try-error")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
478 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
479 print.noquote(paste('Unable to produce samples in measurement space mds plot. Error:',p))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
480 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
481 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
482 ndat = nrow(xm)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
483 cfracs = colSums(! is.na(xm))/ndat
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
484 keepme = (cfracs >= xfilt)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
485 print.noquote(paste('Removing', sum(! keepme), 'xvars with more than',xfilt,'fraction missing'))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
486 vars = apply(xm,2,var,na.rm=T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
487 xm = xm[,keepme]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
488 for (i in c(1:max(1,ndep))) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
489 target = depnames[i]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
490 if (length(target) < 1) { target='y' }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
491 if (i %% 100 == 0) { cat(i,target,'\n') }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
492 if (ndep <= 1) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
493 y=depvars
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
494 } else {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
495 y = depvars[,i]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
496 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
497 if (fam == "binomial") {y = as.factor(y)}
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
498 x = xm
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
499 id = cox_id
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
500 if (fam != "cox") {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
501 ok = complete.cases(x,y)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
502 if (sum(! ok) > 0) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
503 message(paste('@@@ Removing',sum(! ok),'cases with missing y of',length(y),'@@@'))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
504 y = y[(ok)]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
505 x = x[(ok),]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
506 id = id[(ok)]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
507 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
508 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
509 ok = complete.cases(y)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
510 if (sum(ok) == 0 ) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
511 print(paste("No complete cases found for",target,"in input x dim =",paste(dim(xm),collapse=','),"length y=",length(y)))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
512 } else {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
513 if (i == 1) { outpred = out_pred_file
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
514 } else {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
515 outpred = paste(target,'predicted_output.xls')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
516 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
517 regres = do_lasso(x=x,y=y,do_standard=do_standard,debugOn=debugOn,defaultFam=defaultFam,optLambda=optLambda,out_pred_file=outpred,
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
518 descr=descr,indx=i,target=target,alpha=alpha,nfold=nfold,penalty=penalty,out_pred=out_pred,yvarname=target,id=id,mdsplots=mdsplots)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
519 if (! is.na(regres)) { res = rbind(res,regres) }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
520 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
521 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
522 print.noquote('@@@ Results preview:')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
523 print.noquote(res,digits=5)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
524 sink()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
525 return(res)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
526 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
527
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
528
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
529 corPlot=function(xdat=c(),main='main title',is_raw=T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
530 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
531 library(pheatmap)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
532 library(gplots)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
533 if (is_raw) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
534 cxdat = cor(xdat,method="spearman",use="pairwise.complete.obs")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
535 } else {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
536 cxdat=xdat
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
537 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
538 xro = nrow(cxdat)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
539 if (xro > 1000) stop("Too many rows for heatmap, who can read?!")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
540 fontsize_col = 5.0
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
541 pheatmap(cxdat, main=main, show_colnames = F, width=30, height=30,
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
542 fontsize_row=fontsize_col, border_color=NA)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
543 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
544
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
545
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
546 runTest = function(n=10)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
547 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
548 set.seed (NULL)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
549 Y = data.frame(y1=runif (n),y2=runif(n))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
550 Xv <- runif(n*n)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
551 X <- matrix(Xv, nrow = n, ncol = n)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
552
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
553 mydf <- data.frame(Y, X)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
554
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
555 regres_out = dolasso_generic(predvars=X,depvars=Y,debugOn=T,p.cutoff = 0.05,maxsteps=10000,nfold=10,
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
556 descr='randomdata',do_standard=do_standard,defaultFam="gaussian",alpha=0.05)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
557 return(regres_out)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
558 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
559 ]]>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
560 options(width=512)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
561 options(digits=5)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
562 alpha = $alpha
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
563 nfold = $nfold
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
564 optLambda = "$optLambda"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
565 Out_Dir = "$html_file.files_path"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
566 Input = "$input1"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
567 indat = read.table(Input,head=T,sep='\t')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
568 datcols = colnames(indat)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
569 myTitle = "$title"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
570 outtab = "$model_file"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
571 do_standard = as.logical("$do_standard")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
572 mdsplots = as.logical("$mdsplots")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
573 fam = "$model.fam"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
574 xvar_cols_in = "$xvar_cols"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
575 force_xvar_cols_in = "$force_xvar_cols"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
576 xvar_cols = as.numeric(strsplit(xvar_cols_in,",")[[1]])
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
577 force_xvar_cols = c()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
578 penalties = rep(1,length(datcols))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
579 forced_in = NA
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
580
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
581 logxform = "$logxform_cols"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
582 if (logxform != "None") {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
583 logxform_cols = as.numeric(strsplit(logxform,",")[[1]])
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
584 if (length(logxform_cols) > 0) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
585 small = 1e-10
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
586 sset = indat[,logxform_cols]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
587 zeros = which(sset==0,arr.ind=T)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
588 nz = nrow(zeros)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
589 if (nz &gt; 0) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
590 message(paste('Log transforming encountered',nz,'zeros - added 1e-10'))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
591 sset[zeros] = sset[zeros] + small
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
592 lset = log(sset)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
593 indat[,logxform_cols] = lset
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
594 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
595 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
596 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
597 if (force_xvar_cols_in != "None")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
598 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
599 force_xvar_cols = as.numeric(strsplit(force_xvar_cols_in,",")[[1]])
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
600 allx = c(xvar_cols,force_xvar_cols)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
601 xvar_cols = unique(allx)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
602 xvar_cols = xvar_cols[order(xvar_cols)]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
603 penalties[force_xvar_cols] = 0
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
604 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
605 penalty = penalties[xvar_cols]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
606 forcedin = paste(datcols[which(penalties == 0)],collapse=',')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
607 cox_id_col = NA
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
608 cox_id = NA
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
609
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
610 message(paste('@@@ Using alpha =',alpha,'for all models'))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
611 x = indat[,xvar_cols]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
612 nx = nrow(x)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
613 cx = ncol(x)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
614 message(paste('@@@@ Input has',nx,'samples and',cx,'predictors'))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
615 if (cx > nx) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
616 message('@@@ WARNING: Models will have more variables than cases so glmnet will likely return one of many possible solutions! Please DO NOT expect reliable results - glmnet is clever but not magical @@@')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
617 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
618
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
619 xcolnames = datcols[xvar_cols]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
620
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
621 if (file.exists(Out_Dir) == F) dir.create(Out_Dir)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
622 out_full = F
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
623 out_full_file = NA
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
624 out_pred_file = ""
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
625 out_pred = as.logical("$model.output_pred")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
626
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
627 #if $model.fam == "binomial" or $model.fam == "cox":
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
628 cox_id_col = $model.cox_id
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
629 cox_id = indat[,cox_id_col]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
630 if (out_pred == T) {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
631 out_pred_file="$output_pred_file"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
632 rownames(x) = cox_id
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
633 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
634 #end if
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
635 #if $model.fam == "cox":
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
636 cox_time = $model.cox_time
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
637 cox_status = $model.cox_status
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
638 out_full = as.logical("$model.output_full")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
639 if (out_full == T) { out_full_file="$output_full_file" }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
640 yvar_cols = c(cox_time,cox_status)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
641 ycolnames = c('time','status')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
642 istat = as.double(indat[,cox_status])
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
643 itime = as.double(indat[,cox_time])
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
644 predict_at = quantile(itime)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
645 if ("$model.predict_at" &gt; "")
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
646 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
647 pa = "$model.predict_at"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
648 predict_at = as.numeric(strsplit(pa,",")[[1]])
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
649 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
650 y = data.frame(time = itime, status = istat)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
651 ustat = unique(istat)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
652 if ((length(ustat) != 2) | (! 1 %in% ustat ) | (! 0 %in% ustat))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
653 {
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
654 print.noquote(paste('INPUT ERROR: status must have 0 (censored) or 1 (event) but found',paste(ustat,collapse=',') ))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
655 quit(save='no',status=1)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
656 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
657 y = as.matrix(y)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
658 x = as.matrix(x)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
659 print.noquote(paste('@@@ Cox model will predict yvar=',datcols[cox_status],'using cols=',paste(xcolnames,collapse=','),'n preds=',length(xcolnames),
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
660 'forced in=',forcedin))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
661 regres_out = dolasso_cox(x=x,y=y,debugOn=F,maxsteps=10000,nfold=nfold,xcolnames=xcolnames,ycolnames=ycolnames,optLambda=optLambda,out_full=out_full,out_full_file=out_full_file,
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
662 out_pred=out_pred,out_pred_file=out_pred_file,cox_id=cox_id,descr=myTitle,do_standard=do_standard,alpha=alpha,penalty=penalty,predict_at=predict_at,mdsplots=mdsplots)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
663 #else:
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
664 yvar_cols = "$model.yvar_cols"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
665 yvar_cols = as.numeric(strsplit(yvar_cols,",")[[1]])
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
666 ycolnames = datcols[yvar_cols]
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
667 print.noquote(paste('@@@',fam,'model will predict yvar=',paste(ycolnames,collapse=','),'using cols=',paste(xcolnames,collapse=','),'n preds=',length(xcolnames),
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
668 'forced in=',forcedin))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
669 y = data.matrix(indat[,yvar_cols])
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
670 print.noquote(paste('Model will use',fam,'link function to predict yvar=',paste(ycolnames,collapse=','),'n preds=',length(xcolnames),'forced in=',forcedin))
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
671 regres_out = dolasso_generic(predvars=x,depvars=y,debugOn=F, maxsteps=10000,nfold=nfold,xcolnames=xcolnames,ycolnames=ycolnames,optLambda=optLambda,out_pred_file=out_pred_file,
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
672 descr=myTitle,do_standard=do_standard,defaultFam=fam,alpha=alpha,penalty=penalty,out_pred=out_pred,cox_id=cox_id,mdsplots=mdsplots)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
673 #end if
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
674
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
675 write.table(format(regres_out,digits=5),outtab,quote=FALSE, sep="\t",row.names=F)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
676 print.noquote('@@@ SessionInfo for this R session:')
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
677 sessionInfo()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
678 warnings()
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
679
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
680 </configfile>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
681 </configfiles>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
682 <inputs>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
683 <param name="title" type="text" value="lasso test" label="Title for job outputs" help="Typing a short, meaningful text here will help remind you (and explain to others) what the outputs represent">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
684 <sanitizer invalid_char="">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
685 <valid initial="string.letters,string.digits"><add value="_" /> </valid>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
686 </sanitizer>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
687 </param>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
688 <param name="input1" type="data" format="tabular" label="Select an input tabular text file from your history. Rows represent samples; Columns are measured phenotypes"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
689 multiple='False' optional="False" help="Tabular text data with samples as rows, phenotypes as columns with a header row of column identifiers" />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
690 <param name="xvar_cols" label="Select columns containing numeric variables to use as predictor (x) variables" type="data_column" data_ref="input1" numerical="False"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
691 multiple="True" use_header_names="True" force_select="True" />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
692 <param name="force_xvar_cols" label="Select numeric columns containing variables ALWAYS included as predictors in cross validation" type="data_column" data_ref="input1" numerical="False"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
693 multiple="True" use_header_names="True" force_select="False"/>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
694 <conditional name="model">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
695 <param name="fam" type="select" label="GLM Link function for models"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
696 help="Binary dependant variables will automatically be set to Binomial no matter what this is set to">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
697 <option value="gaussian" selected="true">Gaussian - continuous dependent (y)</option>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
698 <option value="binomial">Binomial dependent variables</option>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
699 <option value="poisson">Poisson (eg counts)</option>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
700 <option value="cox">Cox models - require special setup for y variables - see below</option>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
701 </param>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
702 <when value="gaussian">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
703 <param name="yvar_cols" label="Select numeric columns containing variables to use as the dependent (y) in elasticnet" type="data_column" data_ref="input1" numerical="False"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
704 multiple="True" use_header_names="True" help = "If multiple, each will be modelled against all the x variables and reported separately." force_select="True"/>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
705 <param name="output_full" type="hidden" value='F' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
706 <param name="output_pred" type="hidden" value='F' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
707 <param name="cox_id" label="Select column containing a unique sample identifier"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
708 help = "Only really needed for output sample specific predicted values downstream."
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
709 type="data_column" data_ref="input1" numerical="False" force_select="True"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
710 multiple="False" use_header_names="True" />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
711 </when>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
712 <when value="binomial">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
713 <param name="yvar_cols" label="Select numeric columns containing variables to use as the dependent (y) in elasticnet" type="data_column" data_ref="input1" numerical="False"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
714 multiple="True" use_header_names="True" help = "If multiple, each will be modelled against all the x variables and reported separately." force_select="True"/>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
715 <param name="output_full" type="hidden" value='F' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
716 <param name="output_pred" type="select" label="Create a tabular output with predicted values for each subject from the optimal model for (eg) NRI estimates" >
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
717 <option value="F" selected="true">No predicted value output file</option>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
718 <option value="T">Create a predicted value output file</option>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
719 </param>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
720 <param name="cox_id" label="Select column containing a unique sample identifier"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
721 help = "Only really needed for output sample specific predicted values downstream."
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
722 type="data_column" data_ref="input1" numerical="False" force_select="True"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
723 multiple="False" use_header_names="True" />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
724 <param name="predict_at" type="hidden" value='' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
725
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
726 </when>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
727 <when value="poisson">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
728 <param name="yvar_cols" label="Select columns containing variables to use as the dependent (y) in elasticnet" type="data_column" data_ref="input1" numerical="True"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
729 multiple="True" use_header_names="True" help = "If multiple, each will be modelled against all the x variables and reported separately." force_select="True"/>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
730 <param name="output_full" type="hidden" value='F' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
731 <param name="output_pred" type="hidden" value='F' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
732 <param name="predict_at" type="hidden" value='' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
733 <param name="cox_id" label="Select column containing a unique sample identifier"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
734 help = "Optional. Only really needed for output sample specific predicted values downstream. Free - enjoy"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
735 type="data_column" data_ref="input1" numerical="True" force_select="False"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
736 multiple="False" use_header_names="True" />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
737 </when>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
738 <when value="cox">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
739 <param name="cox_time" label="Select column containing time under observation for Cox regression"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
740 type="data_column" data_ref="input1" numerical="True" force_select="True"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
741 multiple="False" use_header_names="True" help = "This MUST contain a time period - eg continuous years or days to failure or right censoring"/>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
742 <param name="cox_status" label="Select column containing status = 1 for outcome of interest at the end of the time under observation or 0 for right censoring"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
743 type="data_column" data_ref="input1" numerical="True" force_select="True"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
744 multiple="False" use_header_names="True" help = "This MUST contain 1 for subjects who had an event at that time or 0 for a right censored observation"/>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
745 <param name="cox_id" label="Select column containing a unique sample identifier"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
746 help = "Optional. Only really needed for output sample specific predicted values downstream. Free - enjoy"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
747 type="data_column" data_ref="input1" numerical="False" force_select="False"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
748 multiple="False" use_header_names="True" />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
749 <param name="output_full" type="select" label="Create a tabular output with coefficients for all predictors" >
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
750 <option value="F" selected="true">No full model output file</option>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
751 <option value="T">Create a full model output file</option>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
752 </param>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
753 <param name="output_pred" type="select" label="Create a tabular output with predicted values for each subject from the optimal model for (eg) NRI estimates" >
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
754 <option value="F" selected="true">No predicted value output file</option>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
755 <option value="T">Create a predicted value output file</option>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
756 </param>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
757 <param name="predict_at" type="text" value='' label="Provide a comma separated list of times to make a prediction for each subject"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
758 optional="True" help="Default (blank) will return predictions at 0%,25%,50%,75%,100% of the observed times which should be informative" />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
759
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
760 </when>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
761 </conditional>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
762 <param name="optLambda" type="select" label="Value to use when reporting optimal model and coefficients" help="minLambda will have more predictors - 1SDLambda will be more parsimonious">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
763 <option value="lambda.1se" selected="true">Lambda + 1 SE of min MSE or AUC (fewer coefficients - more false negatives)</option>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
764 <option value="lambda.min">Lambda at min MSE or max AUC (more coefficients - more false positives)</option>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
765 </param>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
766 <param name="logxform_cols" optional="True" label="Select numeric columns to be log transformed before use as predictors or dependent variables" type="data_column"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
767 data_ref="input1" numerical="True" multiple="True" use_header_names="True" help = "The wisdom of doing this depends entirely on your predictors - eg can help diminish long-tailed outlier influence"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
768 force_select="False"/>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
769 <param name="do_standard" type="select" label="Standardise x vars"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
770 help="If all measurements on same scale, may not be needed. Coefficients are always returned on the original scale.">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
771 <option value="False" selected="true">No standardisation of predictors</option>l
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
772 <option value="True">Standardise predictors before model</option>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
773 </param>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
774 <param name="mdsplots" type="select" label="Generate MDS plots of samples in measurement space and measurements in sample space" >
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
775 <option value="False" selected="true">No MDS plots</option>l
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
776 <option value="True">Yes create MDS plots</option>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
777 </param>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
778 <param name="alpha" type="float" value="0.95" min="0.01" max="1.0" label="Alpha - see glmnet docs. 1 for pure lasso. 0.0 for pure ridge regression"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
779 help="Default 0.95 allows lasso to cope better with expected predictor collinearity. Use (eg) 0.5 for hybrid regularised regression or (eg) 0.025 for ridge regression"/>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
780 <param name="nfold" type="integer" value="10" label="Number of folds for internal cross validation"
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
781 help="Default of 10 is usually ok"/>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
782 </inputs>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
783 <outputs>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
784 <data format="html" name="html_file" label="${title}.html"/>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
785 <data format="tabular" name="model_file" label="${title}_modelres.xls"/>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
786 <data format="tabular" name="output_full_file" label="${title}_full_cox_model.xls">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
787 <filter>model['output_full'] == 'T'</filter>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
788 </data>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
789 <data format="tabular" name="output_pred_file" label="${title}_predicted_from_model.xls">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
790 <filter>model['output_pred'] == 'T'</filter>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
791 </data>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
792 </outputs>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
793 <tests>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
794 <test>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
795 <param name='input1' value='cox_test.xls' ftype='tabular' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
796 <param name='treatment_name' value='case' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
797 <param name='title' value='Cox glmnet test' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
798 <param name='nfold' value='10' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
799 <param name='logxform_cols' value='' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
800 <param name='alpha' value='0.95' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
801 <param name='do_standard' value="True" />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
802 <param name='cox_time' value='1' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
803 <param name='cox_status' value='2' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
804 <param name='cox_id' value='1' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
805 <param name='predict_at' value='' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
806 <param name='fam' value='cox' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
807 <param name='yvar_cols' value='' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
808 <param name='xvar_cols' value='3,4,5' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
809 <param name='force_xvar_cols' value='3' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
810 <param name='output_full' value='F' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
811 <param name='output_pred' value='F' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
812 <output name='model_file' file='coxlassotest_modelres.xls'>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
813 <assert_contents>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
814 <has_text text="rhubarb" />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
815 <has_text text="TRUE" />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
816 <!-- &#009; is XML escape code for tab -->
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
817 <!-- has_line line="regulator&#009;partial_likelihood&#009;forced_in&#009;glmnet_model&#009;best_lambda" / -->
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
818 <has_line line="regulator&#009;partial_likelihood&#009;forced_in&#009;glmnet_model&#009;best_lambda&#009;lambdaChoice&#009;alpha" />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
819 <has_n_columns n="7" />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
820 </assert_contents>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
821 </output>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
822 <output name='html_file' file='coxlassotest.html' compare='diff' lines_diff='16' />
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
823 </test>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
824 </tests>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
825 <help>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
826
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
827 **Before you start**
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
828
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
829 Please read the glmnet documentation @ glmnet_
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
830
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
831 This Galaxy wrapper merely exposes that code and the glmnet_ documentation is essential reading
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
832 before getting useful results here.
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
833
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
834 **What it does**
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
835
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
836 From documentation at glmnet_ ::
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
837
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
838 Glmnet is a package that fits a generalized linear model via penalized maximum likelihood.
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
839 The regularization path is computed for the lasso or elasticnet penalty at a grid of values for the regularization parameter lambda.
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
840 The algorithm is extremely fast, and can exploit sparsity in the input matrix x.
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
841 It fits linear, logistic and multinomial, poisson, and Cox regression models.
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
842 A variety of predictions can be made from the fitted models.
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
843
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
844 Internal cross validation is used to optimise the choice of lambda based on CV AUC for logistic (binomial outcome) models, or CV mse for gaussian.
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
845
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
846 **Warning about the tyrany of dimensionality**
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
847
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
848 Yes, this package will select 'optimal' models even when you (optimistically) supply more predictors than you have cases.
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
849 The model returned is unlikely to represent the only informative regularisation path through your data - if you run repeatedly with
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
850 exactly the same settings, you will probably see many different models being selected.
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
851 This is not a software bug - the real problem is that you just don't have enough information in your data.
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
852
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
853 Sufficiently big jobs will take a while (eg each lasso regression with 20k features on 1k samples takes about 2-3 minutes on our aged cluster)
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
854
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
855 **Input**
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
856
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
857 Assuming you have more measurements than samples, you supply data as a tabular text file where each row is a sample and columns
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
858 are variables. You specify which columns are dependent (predictors) and which are observations for each sample. Each of multiple
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
859 dependent variable columns will be run and reported independently. Predictors can be forced in to the model.
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
860
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
861 **Output**
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
862
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
863 For each selected dependent regression variable, a brief report of the model coefficients predicted at the
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
864 'optimal' nfold CV value of lambda.
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
865
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
866 **Predicted event probabilities for Cox and Logistic models**
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
867
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
868 If you want to compare (eg) two competing clinical predictions, there's a companion generic NRI tool
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
869 for predicted event probabilities. Estimates dozens of measures of improvement in prediction. Currently only works for identical id subjects
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
870 but can probably be extended to independent sample predictions.
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
871
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
872 Given a model, we can generate a predicted p (for status 1) in binomial or cox frameworks so models can be evaluated in terms of NRI.
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
873 Of course, estimates are likely substantially inflated over 'real world' performance by being estimated from the same sample - but you probably
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
874 already knew that since you were smart enough to reach this far down into the on screen help. The author salutes you, intrepid reader!
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
875
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
876 It may seem an odd thing to do, but we can predict p for an event for each subject from our original data, given a parsimonious model. Doing
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
877 this for two separate models (eg, forcing in an additional known explanatory measurement to the new model) allows comparison of the two models
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
878 predicted status for each subject, or the same model in independent populations to see how badly it does
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
879
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
880 **Attributions**
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
881
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
882 glmnet_ is the R package exposed by this Galaxy tool.
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
883
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
884 Galaxy_ (that's what you are using right now!) for gluing everything together
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
885
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
886 Otherwise, all code and documentation comprising this tool was written by Ross Lazarus and is
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
887 licensed to you under the LGPL_ like other rgenetics artefacts
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
888
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
889 .. _LGPL: http://www.gnu.org/copyleft/lesser.html
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
890 .. _glmnet: http://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
891 .. _Galaxy: http://getgalaxy.org
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
892 </help>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
893
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
894 <citations>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
895 <citation type="bibtex">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
896 @Article{Friedman2010, title = {Regularization Paths for Generalized Linear Models via Coordinate Descent},
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
897 author = {Jerome Friedman and Trevor Hastie and Robert Tibshirani},
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
898 journal = {Journal of Statistical Software},
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
899 year = {2010},
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
900 volume = {33},
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
901 number = {1},
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
902 pages = {1--22},
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
903 url = {http://www.jstatsoft.org/v33/i01/}
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
904 }
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
905 </citation>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
906 <citation type="doi">
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
907 10.1093/bioinformatics/bts573
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
908 </citation>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
909 </citations>
cf295f36d606 Initial commit for iuc/test rglasso
fubar
parents:
diff changeset
910 </tool>