Diff of /CountDataSet.R [000000] .. [81de4e]

Switch to side-by-side view

--- a
+++ b/CountDataSet.R
@@ -0,0 +1,47 @@
+CountDataSet <- function(n,p,K,param,sdsignal){
+  if(n < 4*K) stop("We require n to be at least 4*K.")  
+  q0 <- rexp(p, rate = 1/25)
+  isDE <- runif(p) < 0.3
+  classk <- matrix(NA, nrow=K, ncol=p)
+  for(k in 1:K){
+    lfc <- rnorm(p, sd = sdsignal)
+    classk[k,] <- ifelse(isDE, q0*exp(lfc), q0)
+  }
+  truesf <- runif(n)*2+.2 #size factors for training observations
+  truesfte <- runif(n)*2+.2 #size factors for test observations
+  conds <- sample(c(rep(1:K, 4), sample(1:K, n-4*K, replace=TRUE))) # class labels for training observations
+  condste <- sample(c(rep(1:K, 4), sample(1:K, n-4*K, replace=TRUE))) # class labels for test observations
+  x <- xte <- matrix(NA, nrow=n, ncol=p)
+  for(i in 1:n){
+    for(k in 1:K){
+      if(conds[i]==k) x[i,] <- rnbinom(p, mu = truesf[i]*classk[k,], size=param)
+      if(condste[i]==k) xte[i,] <- rnbinom(p, mu = truesfte[i]*classk[k,], size=param)
+    }
+  }
+  rm <- apply(x,2,sum)==0
+  return(list(x=x[,!rm],xte=xte[,!rm],y=conds,yte=condste, truesf=truesf, truesfte=truesfte))
+}
+
+#CountDataSet <- function(n,p,K,param,sdsignal){
+#  if(n < 4*K) stop("We require n to be at least 4*K.")  
+#  q0 <- rexp(p, rate = 1/250)/10
+#  isDE <- runif(p) < 0.3
+#  classk <- matrix(NA, nrow=K, ncol=p)
+#  for(k in 1:K){
+#    lfc <- rnorm(p, sd = sdsignal)
+#    classk[k,] <- ifelse(isDE, q0*2^(lfc/2), q0)
+#  }
+#  truesf <- pmax(.6+.3*rnorm(n), .2) #size factors for training observations
+#  truesfte <- pmax(.6+.3*rnorm(n), .2)  #size factors for test observations
+#  conds <- sample(c(rep(1:K, 4), sample(1:K, n-4*K, rep=TRUE))) # class labels for training observations
+#  condste <- sample(c(rep(1:K, 4), sample(1:K, n-4*K, rep=TRUE))) # class labels for test observations
+#  x <- xte <- matrix(NA, nrow=n, ncol=p)
+#  for(i in 1:n){
+#    for(k in 1:K){
+#      if(conds[i]==k) x[i,] <- rnbinom(p, mu = truesf[i]*classk[k,], size=param)
+#      if(condste[i]==k) xte[i,] <- rnbinom(p, mu = truesfte[i]*classk[k,], size=param)
+#    }
+#  }
+#  rm <- apply(x,2,sum)==0
+#  return(list(x=x[,!rm],xte=xte[,!rm],y=conds,yte=condste, truesf=truesf, truesfte=truesfte))
+#}