annotate ideas.R @ 166:7d33a8157c6b draft

Uploaded
author greg
date Thu, 18 Jan 2018 13:47:50 -0500
parents b140097a984e
children c5b77e9b36f1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
3762c27d820a Uploaded
greg
parents:
diff changeset
1 #!/usr/bin/env Rscript
3762c27d820a Uploaded
greg
parents:
diff changeset
2
3762c27d820a Uploaded
greg
parents:
diff changeset
3 suppressPackageStartupMessages(library("data.table"))
3762c27d820a Uploaded
greg
parents:
diff changeset
4 suppressPackageStartupMessages(library("optparse"))
3762c27d820a Uploaded
greg
parents:
diff changeset
5
3762c27d820a Uploaded
greg
parents:
diff changeset
6 option_list <- list(
3762c27d820a Uploaded
greg
parents:
diff changeset
7 make_option(c("--burnin_num"), action="store", dest="burnin_num", type="integer", help="Number of burnin steps"),
3762c27d820a Uploaded
greg
parents:
diff changeset
8 make_option(c("--bychr"), action="store_true", dest="bychr", default=FALSE, help="Output chromosomes in separate files"),
3762c27d820a Uploaded
greg
parents:
diff changeset
9 make_option(c("--hp"), action="store_true", dest="hp", default=FALSE, help="Discourage state transition across chromosomes"),
3762c27d820a Uploaded
greg
parents:
diff changeset
10 make_option(c("--initial_states"), action="store", dest="initial_states", type="integer", default=NULL, help="Initial number of states"),
3762c27d820a Uploaded
greg
parents:
diff changeset
11 make_option(c("--log2"), action="store", dest="log2", type="double", default=NULL, help="log2 transformation"),
3762c27d820a Uploaded
greg
parents:
diff changeset
12 make_option(c("--maxerr"), action="store", dest="maxerr", type="double", default=NULL, help="Maximum standard deviation for the emission Gaussian distribution"),
3762c27d820a Uploaded
greg
parents:
diff changeset
13 make_option(c("--max_cell_type_clusters"), action="store", dest="max_cell_type_clusters", type="integer", default=NULL, help="Maximum number of cell type clusters allowed"),
3762c27d820a Uploaded
greg
parents:
diff changeset
14 make_option(c("--max_position_classes"), action="store", dest="max_position_classes", type="integer", default=NULL, help="Maximum number of position classes to be inferred"),
3762c27d820a Uploaded
greg
parents:
diff changeset
15 make_option(c("--max_states"), action="store", dest="max_states", type="double", default=NULL, help="Maximum number of states to be inferred"),
3762c27d820a Uploaded
greg
parents:
diff changeset
16 make_option(c("--mcmc_num"), action="store", dest="mcmc_num", type="integer", help="Number of maximization steps"),
3762c27d820a Uploaded
greg
parents:
diff changeset
17 make_option(c("--minerr"), action="store", dest="minerr", type="double", default=NULL, help="Minimum standard deviation for the emission Gaussian distribution"),
3762c27d820a Uploaded
greg
parents:
diff changeset
18 make_option(c("--norm"), action="store_true", dest="norm", default=FALSE, help="Standardize all datasets"),
3762c27d820a Uploaded
greg
parents:
diff changeset
19 make_option(c("--output_log"), action="store", dest="output_log", default=NULL, help="Output log file path"),
3762c27d820a Uploaded
greg
parents:
diff changeset
20 make_option(c("--prep_output_config"), action="store", dest="prep_output_config", help="prepMat output config file"),
3762c27d820a Uploaded
greg
parents:
diff changeset
21 make_option(c("--prior_concentration"), action="store", dest="prior_concentration", type="double", default=NULL, help="Prior concentration"),
3762c27d820a Uploaded
greg
parents:
diff changeset
22 make_option(c("--project_name"), action="store", dest="project_name", help="Outputs will have this base name"),
3762c27d820a Uploaded
greg
parents:
diff changeset
23 make_option(c("--rseed"), action="store", dest="rseed", type="integer", help="Seed for IDEAS model initialization"),
3762c27d820a Uploaded
greg
parents:
diff changeset
24 make_option(c("--save_ideas_log"), action="store", dest="save_ideas_log", default=NULL, help="Flag to save IDEAS process log"),
3762c27d820a Uploaded
greg
parents:
diff changeset
25 make_option(c("--script_dir"), action="store", dest="script_dir", help="R script source directory"),
3762c27d820a Uploaded
greg
parents:
diff changeset
26 make_option(c("--thread"), action="store", dest="thread", type="integer", help="Process threads"),
3762c27d820a Uploaded
greg
parents:
diff changeset
27 make_option(c("--tmp_dir"), action="store", dest="tmp_dir", help="Directory of bed files"),
3762c27d820a Uploaded
greg
parents:
diff changeset
28 make_option(c("--training_iterations"), action="store", dest="training_iterations", type="integer", default=NULL, help="Number of training iterations"),
3762c27d820a Uploaded
greg
parents:
diff changeset
29 make_option(c("--training_windows"), action="store", dest="training_windows", type="integer", default=NULL, help="Number of training iterations"),
3762c27d820a Uploaded
greg
parents:
diff changeset
30 make_option(c("--windows_bed"), action="store", dest="windows_bed", default=NULL, help="Bed file containing bed windows"),
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
31 make_option(c("--windows_config"), action="store", dest="windows_config", default=NULL, help="Windows positions by chroms config")
150
3762c27d820a Uploaded
greg
parents:
diff changeset
32 )
3762c27d820a Uploaded
greg
parents:
diff changeset
33
3762c27d820a Uploaded
greg
parents:
diff changeset
34 parser <- OptionParser(usage="%prog [options] file", option_list=option_list)
3762c27d820a Uploaded
greg
parents:
diff changeset
35 args <- parse_args(parser, positional_arguments=TRUE)
3762c27d820a Uploaded
greg
parents:
diff changeset
36 opt <- args$options
3762c27d820a Uploaded
greg
parents:
diff changeset
37
3762c27d820a Uploaded
greg
parents:
diff changeset
38 add_output_redirect <- function(cmd, save_ideas_log, output_log, default_log_name) {
3762c27d820a Uploaded
greg
parents:
diff changeset
39 if (is.null(save_ideas_log)) {
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
40 new_cmd = c(cmd, "&>>", default_log_name);
150
3762c27d820a Uploaded
greg
parents:
diff changeset
41 }else {
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
42 new_cmd = c(cmd, "&>>", output_log);
150
3762c27d820a Uploaded
greg
parents:
diff changeset
43 }
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
44 return(paste(new_cmd, collapse=" "));
150
3762c27d820a Uploaded
greg
parents:
diff changeset
45 }
3762c27d820a Uploaded
greg
parents:
diff changeset
46
3762c27d820a Uploaded
greg
parents:
diff changeset
47 combine_state <- function(parafiles, method="ward.D", mycut=0.9, pcut=1.0) {
3762c27d820a Uploaded
greg
parents:
diff changeset
48 X = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
49 K = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
50 I = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
51 myheader = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
52 p = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
53 for(i in 1:length(parafiles)) {
3762c27d820a Uploaded
greg
parents:
diff changeset
54 x = fread(parafiles[i]);
3762c27d820a Uploaded
greg
parents:
diff changeset
55 t = max(which(is.na(x[1,])==F));
3762c27d820a Uploaded
greg
parents:
diff changeset
56 x = as.matrix(x[,1:t]);
3762c27d820a Uploaded
greg
parents:
diff changeset
57 if(i==1) {
3762c27d820a Uploaded
greg
parents:
diff changeset
58 myheader = colnames(x);
3762c27d820a Uploaded
greg
parents:
diff changeset
59 p = sqrt(9/4-2*(1-length(myheader))) - 3 / 2;
3762c27d820a Uploaded
greg
parents:
diff changeset
60 }
3762c27d820a Uploaded
greg
parents:
diff changeset
61 m = match(myheader[1:p+1], colnames(x)[1:p+1]);
3762c27d820a Uploaded
greg
parents:
diff changeset
62 v = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
63 for(ii in 1:p) {
3762c27d820a Uploaded
greg
parents:
diff changeset
64 for(jj in 1:ii) {
3762c27d820a Uploaded
greg
parents:
diff changeset
65 a = max(m[ii],m[jj]);
3762c27d820a Uploaded
greg
parents:
diff changeset
66 b = min(m[ii],m[jj]);
3762c27d820a Uploaded
greg
parents:
diff changeset
67 v = c(v, a*(a+1)/2+b-a);
3762c27d820a Uploaded
greg
parents:
diff changeset
68 }
3762c27d820a Uploaded
greg
parents:
diff changeset
69 }
3762c27d820a Uploaded
greg
parents:
diff changeset
70 X = rbind(X, array(as.matrix(x[, c(1, 1+m, 1+p+v)]), dim=c(length(x) / (1+p+length(v)), 1 + p + length(v))));
3762c27d820a Uploaded
greg
parents:
diff changeset
71 K = c(K, dim(x)[1]);
3762c27d820a Uploaded
greg
parents:
diff changeset
72 I = c(I, rep(i, dim(x)[1]));
3762c27d820a Uploaded
greg
parents:
diff changeset
73 }
3762c27d820a Uploaded
greg
parents:
diff changeset
74 N = length(parafiles);
3762c27d820a Uploaded
greg
parents:
diff changeset
75 p = (sqrt(1 + dim(X)[2] * 8) - 3) / 2;
3762c27d820a Uploaded
greg
parents:
diff changeset
76 omycut = mycut;
3762c27d820a Uploaded
greg
parents:
diff changeset
77 mycut = round(length(parafiles) * mycut);
3762c27d820a Uploaded
greg
parents:
diff changeset
78 M = array(X[,1:p+1] / X[,1], dim=c(dim(X)[1], p));
3762c27d820a Uploaded
greg
parents:
diff changeset
79 V = array(0, dim=c(dim(X)[1] * p, p));
3762c27d820a Uploaded
greg
parents:
diff changeset
80 for(i in 1:dim(X)[1]) {
3762c27d820a Uploaded
greg
parents:
diff changeset
81 t = (i - 1) * p;
3762c27d820a Uploaded
greg
parents:
diff changeset
82 l = 1;
3762c27d820a Uploaded
greg
parents:
diff changeset
83 for(j in 1:p) {
3762c27d820a Uploaded
greg
parents:
diff changeset
84 for(k in 1:j) {
3762c27d820a Uploaded
greg
parents:
diff changeset
85 V[t+j, k] = V[t+k, j] = X[i,1+p+l] / X[i,1] - M[i,j] * M[i,k];
3762c27d820a Uploaded
greg
parents:
diff changeset
86 l = l + 1;
3762c27d820a Uploaded
greg
parents:
diff changeset
87 }
3762c27d820a Uploaded
greg
parents:
diff changeset
88 }
3762c27d820a Uploaded
greg
parents:
diff changeset
89 V[t+1:p,] = t(solve(chol(V[t+1:p,] + diag(1e-1,p))));
3762c27d820a Uploaded
greg
parents:
diff changeset
90 }
3762c27d820a Uploaded
greg
parents:
diff changeset
91 D = array(0, dim=rep(dim(X)[1],2));
3762c27d820a Uploaded
greg
parents:
diff changeset
92 for(i in 2:dim(X)[1]) {
3762c27d820a Uploaded
greg
parents:
diff changeset
93 for(j in 1:(i-1)) {
3762c27d820a Uploaded
greg
parents:
diff changeset
94 D[i,j] = D[j,i] = sqrt((sum((V[(i-1)*p+1:p,]%*%(M[i,]-M[j,]))^2) + sum((V[(j-1)*p+1:p,]%*%(M[i,]-M[j,]))^2)));
3762c27d820a Uploaded
greg
parents:
diff changeset
95 }
3762c27d820a Uploaded
greg
parents:
diff changeset
96 }
3762c27d820a Uploaded
greg
parents:
diff changeset
97 MM = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
98 kk = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
99 for(i in 1:N) {
3762c27d820a Uploaded
greg
parents:
diff changeset
100 t = 1:K[i];
3762c27d820a Uploaded
greg
parents:
diff changeset
101 if(i > 1) {
3762c27d820a Uploaded
greg
parents:
diff changeset
102 t = t + sum(K[1:(i-1)]);
3762c27d820a Uploaded
greg
parents:
diff changeset
103 }
3762c27d820a Uploaded
greg
parents:
diff changeset
104 t = (1:dim(D)[1])[-t];
3762c27d820a Uploaded
greg
parents:
diff changeset
105 h = hclust(as.dist(D[t,t]), method=method);
3762c27d820a Uploaded
greg
parents:
diff changeset
106 k = -1;
3762c27d820a Uploaded
greg
parents:
diff changeset
107 tM = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
108 for(j in min(K):(min(length(t), max(K)*2))) {
3762c27d820a Uploaded
greg
parents:
diff changeset
109 m = cutree(h,k=j);
3762c27d820a Uploaded
greg
parents:
diff changeset
110 tt = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
111 for(l in 1:j) {
3762c27d820a Uploaded
greg
parents:
diff changeset
112 tt[l] = length(unique(I[t[which(m==l)]]));
3762c27d820a Uploaded
greg
parents:
diff changeset
113 }
3762c27d820a Uploaded
greg
parents:
diff changeset
114 tk = length(which(tt>=mycut));
3762c27d820a Uploaded
greg
parents:
diff changeset
115 if(tk > k) {
3762c27d820a Uploaded
greg
parents:
diff changeset
116 k = tk;
3762c27d820a Uploaded
greg
parents:
diff changeset
117 tM = make_parameter(1:j, I[t], m, mycut, X[t,]);
3762c27d820a Uploaded
greg
parents:
diff changeset
118 } else if(tk < k) {
3762c27d820a Uploaded
greg
parents:
diff changeset
119 break;
3762c27d820a Uploaded
greg
parents:
diff changeset
120 }
3762c27d820a Uploaded
greg
parents:
diff changeset
121 }
3762c27d820a Uploaded
greg
parents:
diff changeset
122 kk[i] = k;
3762c27d820a Uploaded
greg
parents:
diff changeset
123 MM = rbind(MM, cbind(i, tM));
3762c27d820a Uploaded
greg
parents:
diff changeset
124 }
3762c27d820a Uploaded
greg
parents:
diff changeset
125 mysel = median(kk);
3762c27d820a Uploaded
greg
parents:
diff changeset
126 h = hclust(as.dist(D), method=method);
3762c27d820a Uploaded
greg
parents:
diff changeset
127 rt = rep(0, max(K)*2);
3762c27d820a Uploaded
greg
parents:
diff changeset
128 k = -1;
3762c27d820a Uploaded
greg
parents:
diff changeset
129 for(i in min(K):min(dim(D)[1], max(K)*2)) {
3762c27d820a Uploaded
greg
parents:
diff changeset
130 m = cutree(h,k=i);
3762c27d820a Uploaded
greg
parents:
diff changeset
131 tt = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
132 for(j in 1:i) {
3762c27d820a Uploaded
greg
parents:
diff changeset
133 tt[j] = length(unique(I[which(m==j)]));
3762c27d820a Uploaded
greg
parents:
diff changeset
134 }
3762c27d820a Uploaded
greg
parents:
diff changeset
135 tk = length(which(tt>=mycut));
3762c27d820a Uploaded
greg
parents:
diff changeset
136 if(tk==mysel | tk<k) {
3762c27d820a Uploaded
greg
parents:
diff changeset
137 break;
3762c27d820a Uploaded
greg
parents:
diff changeset
138 }
3762c27d820a Uploaded
greg
parents:
diff changeset
139 k = tk;
3762c27d820a Uploaded
greg
parents:
diff changeset
140 rt[i] = length(which(tt>=mycut));
3762c27d820a Uploaded
greg
parents:
diff changeset
141 }
3762c27d820a Uploaded
greg
parents:
diff changeset
142 mysel = max(k,tk);
3762c27d820a Uploaded
greg
parents:
diff changeset
143 m = cutree(h, k=mysel);
3762c27d820a Uploaded
greg
parents:
diff changeset
144 nn = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
145 for(i in 1:mysel) {
3762c27d820a Uploaded
greg
parents:
diff changeset
146 t = which(m==i);
3762c27d820a Uploaded
greg
parents:
diff changeset
147 nn[i] = sum(X[t,1]);
3762c27d820a Uploaded
greg
parents:
diff changeset
148 }
3762c27d820a Uploaded
greg
parents:
diff changeset
149 oo = order(nn, decreasing=T);
3762c27d820a Uploaded
greg
parents:
diff changeset
150 rt = make_parameter(oo, I, m, mycut, X);
3762c27d820a Uploaded
greg
parents:
diff changeset
151 onstate = max(rt[,1]) + 1;
3762c27d820a Uploaded
greg
parents:
diff changeset
152 ooo = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
153 for(i in oo) {
3762c27d820a Uploaded
greg
parents:
diff changeset
154 t = which(m==i);
3762c27d820a Uploaded
greg
parents:
diff changeset
155 if(length(unique(I[t])) >= mycut) {
3762c27d820a Uploaded
greg
parents:
diff changeset
156 ooo = c(ooo, i);
3762c27d820a Uploaded
greg
parents:
diff changeset
157 }
3762c27d820a Uploaded
greg
parents:
diff changeset
158 }
3762c27d820a Uploaded
greg
parents:
diff changeset
159 d = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
160 for(i in 1:N) {
3762c27d820a Uploaded
greg
parents:
diff changeset
161 d = rbind(d, compare_two(rt, MM[MM[,1]==i,-1])[1:onstate]);
3762c27d820a Uploaded
greg
parents:
diff changeset
162 }
3762c27d820a Uploaded
greg
parents:
diff changeset
163 dd = array(cutree(hclust(dist(c(d))), k=2), dim=dim(d));
3762c27d820a Uploaded
greg
parents:
diff changeset
164 kk = table(c(dd));
3762c27d820a Uploaded
greg
parents:
diff changeset
165 kk = which(as.integer(kk)==max(as.integer(kk)))[1];
3762c27d820a Uploaded
greg
parents:
diff changeset
166 pp = apply(dd, 2, function(x){length(which(x!=kk))/length(x)});
3762c27d820a Uploaded
greg
parents:
diff changeset
167 pp0 = apply(d, 2, function(x){length(which(x>0.5))/length(x)});
3762c27d820a Uploaded
greg
parents:
diff changeset
168 pp[pp0<pp] = pp0[pp0<pp];
3762c27d820a Uploaded
greg
parents:
diff changeset
169 t = which(pp > pcut);
3762c27d820a Uploaded
greg
parents:
diff changeset
170 if(length(t) > 0) {
3762c27d820a Uploaded
greg
parents:
diff changeset
171 j = 0;
3762c27d820a Uploaded
greg
parents:
diff changeset
172 nrt = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
173 for(i in (1:onstate-1)[-t]) {
3762c27d820a Uploaded
greg
parents:
diff changeset
174 nrt = rbind(nrt, cbind(j, rt[rt[,1]==i,-1]));
3762c27d820a Uploaded
greg
parents:
diff changeset
175 j = j + 1;
3762c27d820a Uploaded
greg
parents:
diff changeset
176 }
3762c27d820a Uploaded
greg
parents:
diff changeset
177 rt = nrt;
3762c27d820a Uploaded
greg
parents:
diff changeset
178 ooo = ooo[-t];
3762c27d820a Uploaded
greg
parents:
diff changeset
179 }
3762c27d820a Uploaded
greg
parents:
diff changeset
180 nrt = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
181 for(i in 0:max(rt[,1])) {
3762c27d820a Uploaded
greg
parents:
diff changeset
182 t = which(rt[,1]==i);
3762c27d820a Uploaded
greg
parents:
diff changeset
183 nrt = rbind(nrt, apply(array(rt[t,], dim=c(length(t), dim(rt)[2])), 2, sum)[-1]);
3762c27d820a Uploaded
greg
parents:
diff changeset
184 }
3762c27d820a Uploaded
greg
parents:
diff changeset
185 rt = nrt;
3762c27d820a Uploaded
greg
parents:
diff changeset
186 colnames(rt) = myheader;
3762c27d820a Uploaded
greg
parents:
diff changeset
187 O = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
188 Ip = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
189 Xp = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
190 k = 0;
3762c27d820a Uploaded
greg
parents:
diff changeset
191 for(i in 1:length(parafiles)) {
3762c27d820a Uploaded
greg
parents:
diff changeset
192 str = gsub(".para", ".profile", parafiles[i]);
3762c27d820a Uploaded
greg
parents:
diff changeset
193 p = as.matrix(read.table(str));
3762c27d820a Uploaded
greg
parents:
diff changeset
194 u = array(0, dim=c(dim(p)[1], length(ooo)));
3762c27d820a Uploaded
greg
parents:
diff changeset
195 for(j in 1:length(ooo)) {
3762c27d820a Uploaded
greg
parents:
diff changeset
196 t = which(m[k+1:K[i]] == ooo[j]);
3762c27d820a Uploaded
greg
parents:
diff changeset
197 u[,j] = apply(array(p[,1+t], dim=c(dim(p)[1], length(t))), 1, sum);
3762c27d820a Uploaded
greg
parents:
diff changeset
198 }
3762c27d820a Uploaded
greg
parents:
diff changeset
199 k = k + K[i];
3762c27d820a Uploaded
greg
parents:
diff changeset
200 u = u / (apply(u, 1, sum) + 1e-10);
3762c27d820a Uploaded
greg
parents:
diff changeset
201 Xp = rbind(Xp, cbind(p[,1], u));
3762c27d820a Uploaded
greg
parents:
diff changeset
202 Ip = c(Ip, rep(i,dim(u)[1]));
3762c27d820a Uploaded
greg
parents:
diff changeset
203 }
3762c27d820a Uploaded
greg
parents:
diff changeset
204 hp = hclust(dist(((Xp[,-1]+min(1e-3, min(Xp[,-1][Xp[,-1]>0]))))), method=method);
3762c27d820a Uploaded
greg
parents:
diff changeset
205 ocut = min(mycut/2, length(parafiles)/2);
3762c27d820a Uploaded
greg
parents:
diff changeset
206 t = range(as.integer(table(Ip)));
3762c27d820a Uploaded
greg
parents:
diff changeset
207 Kp = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
208 for(i in t[1]:(t[2]*2)) {
3762c27d820a Uploaded
greg
parents:
diff changeset
209 m = cutree(hp, k=i);
3762c27d820a Uploaded
greg
parents:
diff changeset
210 tt = table(Ip,m);
3762c27d820a Uploaded
greg
parents:
diff changeset
211 ll = apply(tt, 2, function(x){length(which(x>0))});
3762c27d820a Uploaded
greg
parents:
diff changeset
212 Kp = c(Kp, length(which(ll>=ocut)));
3762c27d820a Uploaded
greg
parents:
diff changeset
213 }
3762c27d820a Uploaded
greg
parents:
diff changeset
214 oN = (t[1]:(t[2]*2))[which(Kp==max(Kp))[1]];
3762c27d820a Uploaded
greg
parents:
diff changeset
215 m = cutree(hp, k=oN);
3762c27d820a Uploaded
greg
parents:
diff changeset
216 tt = table(Ip,m);
3762c27d820a Uploaded
greg
parents:
diff changeset
217 ll = apply(tt, 2, function(x){length(which(x>0))});
3762c27d820a Uploaded
greg
parents:
diff changeset
218 tt = which(ll>=ocut);
3762c27d820a Uploaded
greg
parents:
diff changeset
219 for(i in tt) {
3762c27d820a Uploaded
greg
parents:
diff changeset
220 t = which(m==i);
3762c27d820a Uploaded
greg
parents:
diff changeset
221 O = rbind(O, c(sum(Xp[t, 1]), apply(array(Xp[t,-1]*Xp[t,1], dim=c(length(t), dim(Xp)[2]-1)), 2, sum)/sum(Xp[t, 1])));
3762c27d820a Uploaded
greg
parents:
diff changeset
222 }
3762c27d820a Uploaded
greg
parents:
diff changeset
223 nrt = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
224 nrt$para = rt;
3762c27d820a Uploaded
greg
parents:
diff changeset
225 nrt$profile = O;
3762c27d820a Uploaded
greg
parents:
diff changeset
226 return(nrt);
3762c27d820a Uploaded
greg
parents:
diff changeset
227 }
3762c27d820a Uploaded
greg
parents:
diff changeset
228
3762c27d820a Uploaded
greg
parents:
diff changeset
229 compare_two <- function(n, m) {
3762c27d820a Uploaded
greg
parents:
diff changeset
230 NN = get_mean(n);
3762c27d820a Uploaded
greg
parents:
diff changeset
231 MM = get_mean(m);
3762c27d820a Uploaded
greg
parents:
diff changeset
232 p = (-3 + sqrt(9 + 8 * (dim(n)[2] - 2))) / 2;
3762c27d820a Uploaded
greg
parents:
diff changeset
233 dd = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
234 for (i in 1:dim(NN)[1]) {
3762c27d820a Uploaded
greg
parents:
diff changeset
235 dd[i] = min(apply(array(MM[,1:p], dim=c(dim(MM)[1],p)), 1, function(x){sqrt(sum((x-NN[i,1:p])^2))}));
3762c27d820a Uploaded
greg
parents:
diff changeset
236 }
3762c27d820a Uploaded
greg
parents:
diff changeset
237 for (i in 1:dim(MM)[1]) {
3762c27d820a Uploaded
greg
parents:
diff changeset
238 dd[i+dim(NN)[1]] = min(apply(array(NN[,1:p], dim=c(dim(NN)[1],p)), 1, function(x){sqrt(sum((x-MM[i,1:p])^2))}));
3762c27d820a Uploaded
greg
parents:
diff changeset
239 }
3762c27d820a Uploaded
greg
parents:
diff changeset
240 return(dd);
3762c27d820a Uploaded
greg
parents:
diff changeset
241 }
3762c27d820a Uploaded
greg
parents:
diff changeset
242
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
243 get_base_cmd <- function(prep_output_config, windows_bed, training_iterations, bychr, hp, norm, log2,
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
244 max_states, initial_states, max_position_classes, max_cell_type_clusters, prior_concentration,
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
245 burnin_num, mcmc_num, minerr, maxerr, rseed, thread) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
246 base_cmd = paste("ideas", prep_output_config, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
247 if (!is.null(windows_bed)) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
248 base_cmd = paste(base_cmd, windows_bed, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
249 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
250 if (!is.null(training_iterations)) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
251 base_cmd = paste(base_cmd, "-impute none", sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
252 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
253 if (bychr) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
254 base_cmd = paste(base_cmd, "-bychr", sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
255 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
256 if (hp) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
257 base_cmd = paste(base_cmd, "-hp", sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
258 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
259 if (norm) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
260 base_cmd = paste(base_cmd, "-norm", sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
261 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
262 if (!is.null(log2)) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
263 base_cmd = paste(base_cmd, "-log2", log2, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
264 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
265 if (!is.null(max_states)) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
266 base_cmd = paste(base_cmd, "-G", max_states, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
267 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
268 if (!is.null(initial_states)) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
269 base_cmd = paste(base_cmd, "-C", initial_states, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
270 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
271 if (!is.null(max_position_classes)) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
272 base_cmd = paste(base_cmd, "-P", max_position_classes, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
273 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
274 if (!is.null(max_cell_type_clusters)) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
275 base_cmd = paste(base_cmd, "-K", max_cell_type_clusters, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
276 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
277 if (!is.null(prior_concentration)) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
278 base_cmd = paste(base_cmd, "-A", prior_concentration, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
279 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
280 base_cmd = paste(base_cmd, "-sample", burnin_num, mcmc_num, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
281 if (!is.null(minerr)) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
282 base_cmd = paste(base_cmd, "-minerr", minerr, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
283 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
284 if (!is.null(maxerr)) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
285 base_cmd = paste(base_cmd, "-maxerr", maxerr, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
286 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
287 base_cmd = paste(base_cmd, "-rseed", rseed, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
288 base_cmd = paste(base_cmd, "-thread", thread, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
289 return(base_cmd);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
290 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
291
150
3762c27d820a Uploaded
greg
parents:
diff changeset
292 get_mean <- function(n) {
3762c27d820a Uploaded
greg
parents:
diff changeset
293 N = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
294 for(i in sort(unique(n[,1]))) {
3762c27d820a Uploaded
greg
parents:
diff changeset
295 t = which(n[,1]==i);
3762c27d820a Uploaded
greg
parents:
diff changeset
296 N = rbind(N, apply(array(n[t,], dim=c(length(t), dim(n)[2])), 2, sum)[-1]);
3762c27d820a Uploaded
greg
parents:
diff changeset
297 }
3762c27d820a Uploaded
greg
parents:
diff changeset
298 NN = N[,-1] / N[,1];
3762c27d820a Uploaded
greg
parents:
diff changeset
299 return(array(NN, dim=c(length(NN)/(dim(n)[2]-2), dim(n)[2]-2)));
3762c27d820a Uploaded
greg
parents:
diff changeset
300 }
3762c27d820a Uploaded
greg
parents:
diff changeset
301
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
302 get_post_training_base_cmd <- function(base_cmd, para) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
303 # Change base_cmd due to training mode.
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
304 base_cmd_items = as.list(strsplit(base_cmd[1], split=" ", fixed=TRUE))[[1]];
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
305 if (length(which(base_cmd_items == "-G")) == 0) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
306 base_cmd_items = c(base_cmd_items, "-G", length(para)-1);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
307 } else {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
308 tt = which(base_cmd_items == "-G");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
309 base_cmd_items[tt + 1] = length(para)-1;
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
310 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
311 tt = which(base_cmd_items == '-C');
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
312 if(length(tt) > 0) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
313 base_cmd_items = base_cmd_items[-c(tt, tt+1)];
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
314 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
315 base_cmd = paste(base_cmd_items, collapse=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
316 return(base_cmd);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
317 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
318
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
319 get_windows_by_chrom <- function(windows_config) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
320 if (is.null(windows_config)) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
321 windows_by_chrom = NULL;
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
322 } else {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
323 fh = file(windows_config, "r");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
324 windows_by_chrom = readLines(fh);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
325 close(fh);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
326 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
327 return(windows_by_chrom);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
328 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
329
150
3762c27d820a Uploaded
greg
parents:
diff changeset
330 make_parameter <- function(myorder, id, mem, mycut, para) {
3762c27d820a Uploaded
greg
parents:
diff changeset
331 rt = NULL;
3762c27d820a Uploaded
greg
parents:
diff changeset
332 j = 0;
3762c27d820a Uploaded
greg
parents:
diff changeset
333 for(i in myorder) {
3762c27d820a Uploaded
greg
parents:
diff changeset
334 t = which(mem==i);
3762c27d820a Uploaded
greg
parents:
diff changeset
335 if (length(unique(id[t])) >= mycut) {
3762c27d820a Uploaded
greg
parents:
diff changeset
336 rt = rbind(rt, cbind(j, array(para[t,], dim=c(length(t), dim(para)[2]))));
3762c27d820a Uploaded
greg
parents:
diff changeset
337 j = j + 1;
3762c27d820a Uploaded
greg
parents:
diff changeset
338 }
3762c27d820a Uploaded
greg
parents:
diff changeset
339 }
3762c27d820a Uploaded
greg
parents:
diff changeset
340 return(rt);
3762c27d820a Uploaded
greg
parents:
diff changeset
341 }
3762c27d820a Uploaded
greg
parents:
diff changeset
342
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
343 remove_files <- function(path, pattern) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
344 files = list.files(path=path, pattern=pattern);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
345 for (f in files) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
346 unlink(f);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
347 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
348 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
349
150
3762c27d820a Uploaded
greg
parents:
diff changeset
350 run_cmd <- function(cmd, save_ideas_log, output_log, default_log_name) {
3762c27d820a Uploaded
greg
parents:
diff changeset
351 rc = system(cmd);
3762c27d820a Uploaded
greg
parents:
diff changeset
352 if (rc != 0) {
3762c27d820a Uploaded
greg
parents:
diff changeset
353 if (is.null(save_ideas_log)) {
3762c27d820a Uploaded
greg
parents:
diff changeset
354 file.rename(default_log_name, output_log);
3762c27d820a Uploaded
greg
parents:
diff changeset
355 }
3762c27d820a Uploaded
greg
parents:
diff changeset
356 quit(rc);
3762c27d820a Uploaded
greg
parents:
diff changeset
357 }
3762c27d820a Uploaded
greg
parents:
diff changeset
358 }
3762c27d820a Uploaded
greg
parents:
diff changeset
359
3762c27d820a Uploaded
greg
parents:
diff changeset
360 default_log_name = "ideas_log.txt";
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
361 windows_by_chrom = get_windows_by_chrom(opt$windows_config);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
362 base_cmd = get_base_cmd(opt$prep_output_config, opt$windows_bed, opt$training_iterations, opt$bychr,
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
363 opt$hp, opt$norm, opt$log2, opt$max_states, opt$initial_states, opt$max_position_classes,
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
364 opt$max_cell_type_clusters, opt$prior_concentration, opt$burnin_num, opt$mcmc_num, opt$minerr,
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
365 opt$maxerr, opt$rseed, opt$thread);
150
3762c27d820a Uploaded
greg
parents:
diff changeset
366 output_base_name = opt$project_name;
3762c27d820a Uploaded
greg
parents:
diff changeset
367
3762c27d820a Uploaded
greg
parents:
diff changeset
368 if (is.null(opt$training_iterations)) {
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
369 # Not performing training.
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
370 if (is.null(windows_by_chrom)) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
371 # Not performing windows by chromosome.
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
372 output_name = output_base_name;
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
373 cmd = paste(base_cmd, "-o", output_name, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
374 cmd = add_output_redirect(cmd, opt$save_ideas_log, opt$output_log, default_log_name);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
375 run_cmd(cmd, opt$save_ideas_log, opt$output_log, default_log_name);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
376 } else {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
377 # Performing windows by chromosome.
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
378 for (i in 1:length(windows_by_chrom)) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
379 line = windows_by_chrom[i];
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
380 items = strsplit(line, " ")[[1]];
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
381 chrom = items[1];
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
382 window_start = items[2];
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
383 window_end = items[3];
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
384 output_name = paste(output_base_name,, chrom, sep=".");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
385 cmd = paste(base_cmd, "-inv", window_start, window_end, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
386 cmd = paste(cmd, "-o", output_name, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
387 cmd = add_output_redirect(cmd, opt$save_ideas_log, opt$output_log, default_log_name);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
388 run_cmd(cmd, opt$save_ideas_log, opt$output_log, default_log_name);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
389 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
390 }
150
3762c27d820a Uploaded
greg
parents:
diff changeset
391 } else {
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
392 # performing training.
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
393 output_para0 = paste(output_base_name, "para0", sep=".");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
394 output_profile0 = paste(output_base_name, "profile0", sep=".");
150
3762c27d820a Uploaded
greg
parents:
diff changeset
395 for (i in 1:opt$training_iterations) {
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
396 cmd = paste(base_cmd, "-o", paste(output_base_name, ".tmp.", i, sep=""), sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
397 cmd = add_output_redirect(cmd, opt$save_ideas_log, opt$output_log, default_log_name);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
398 run_cmd(cmd, opt$save_ideas_log, opt$output_log, default_log_name);
150
3762c27d820a Uploaded
greg
parents:
diff changeset
399 }
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
400 tpara = combine_state(paste(output_base_name, "tmp", (1:opt$training_iterations), "para", sep="."), mycut=0.5);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
401 write.table(tpara$profile, output_profile0, quote=F, row.names=F, col.names=F);
150
3762c27d820a Uploaded
greg
parents:
diff changeset
402 para = tpara$para;
3762c27d820a Uploaded
greg
parents:
diff changeset
403 para = apply(para, 1, function(x){paste(x, collapse=" ")});
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
404 para = c(readLines(paste(output_base_name, "tmp", "1", "para", sep="."), n=1), para);
150
3762c27d820a Uploaded
greg
parents:
diff changeset
405 writeLines(para, output_para0);
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
406 # Now run IDEAS based on the files produced during training.
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
407 base_cmd = get_post_training_base_cmd(base_cmd, para);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
408 base_cmd = paste(base_cmd, "-otherpara", output_para0[[1]], output_profile0[[1]], sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
409 if (is.null(windows_by_chrom)) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
410 cmd = c(base_cmd, "-o", output_base_name);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
411 cmd = add_output_redirect(cmd, opt$save_ideas_log, opt$output_log, default_log_name);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
412 run_cmd(cmd, opt$save_ideas_log, opt$output_log, default_log_name);
152
26c26cb32137 Uploaded
greg
parents: 150
diff changeset
413 } else {
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
414 # Performing windows by chromosome.
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
415 if (length(windows_by_chrom) == 1) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
416 output_name = paste(output_base_name, i, sep=".");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
417 cmd = c(base_cmd, "-o", output_name);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
418 cmd = add_output_redirect(cmd, opt$save_ideas_log, opt$output_log, default_log_name);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
419 run_cmd(cmd, opt$save_ideas_log, opt$output_log, default_log_name);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
420 } else {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
421 for (i in 1:length(windows_by_chrom)) {
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
422 line = windows_by_chrom[i];
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
423 items = strsplit(line, " ")[[1]];
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
424 chrom = items[[1]];
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
425 window_start = items[[2]];
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
426 window_end = items[[3]];
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
427 cmd = paste(base_cmd, "-inv", window_start, window_end, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
428 output_name = paste(output_base_name, chrom, sep=".");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
429 cmd = paste(cmd, "-o", output_name, sep=" ");
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
430 cmd = add_output_redirect(cmd, opt$save_ideas_log, opt$output_log, default_log_name);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
431 run_cmd(cmd, opt$save_ideas_log, opt$output_log, default_log_name);
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
432 }
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
433 }
152
26c26cb32137 Uploaded
greg
parents: 150
diff changeset
434 }
166
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
435 # Remove temporary outputs.
7d33a8157c6b Uploaded
greg
parents: 154
diff changeset
436 remove_files(path=".", pattern="tmp");
150
3762c27d820a Uploaded
greg
parents:
diff changeset
437 }