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

Switch to unified view

a b/CountDataSet.R
1
CountDataSet <- function(n,p,K,param,sdsignal){
2
  if(n < 4*K) stop("We require n to be at least 4*K.")  
3
  q0 <- rexp(p, rate = 1/25)
4
  isDE <- runif(p) < 0.3
5
  classk <- matrix(NA, nrow=K, ncol=p)
6
  for(k in 1:K){
7
    lfc <- rnorm(p, sd = sdsignal)
8
    classk[k,] <- ifelse(isDE, q0*exp(lfc), q0)
9
  }
10
  truesf <- runif(n)*2+.2 #size factors for training observations
11
  truesfte <- runif(n)*2+.2 #size factors for test observations
12
  conds <- sample(c(rep(1:K, 4), sample(1:K, n-4*K, replace=TRUE))) # class labels for training observations
13
  condste <- sample(c(rep(1:K, 4), sample(1:K, n-4*K, replace=TRUE))) # class labels for test observations
14
  x <- xte <- matrix(NA, nrow=n, ncol=p)
15
  for(i in 1:n){
16
    for(k in 1:K){
17
      if(conds[i]==k) x[i,] <- rnbinom(p, mu = truesf[i]*classk[k,], size=param)
18
      if(condste[i]==k) xte[i,] <- rnbinom(p, mu = truesfte[i]*classk[k,], size=param)
19
    }
20
  }
21
  rm <- apply(x,2,sum)==0
22
  return(list(x=x[,!rm],xte=xte[,!rm],y=conds,yte=condste, truesf=truesf, truesfte=truesfte))
23
}
24
25
#CountDataSet <- function(n,p,K,param,sdsignal){
26
#  if(n < 4*K) stop("We require n to be at least 4*K.")  
27
#  q0 <- rexp(p, rate = 1/250)/10
28
#  isDE <- runif(p) < 0.3
29
#  classk <- matrix(NA, nrow=K, ncol=p)
30
#  for(k in 1:K){
31
#    lfc <- rnorm(p, sd = sdsignal)
32
#    classk[k,] <- ifelse(isDE, q0*2^(lfc/2), q0)
33
#  }
34
#  truesf <- pmax(.6+.3*rnorm(n), .2) #size factors for training observations
35
#  truesfte <- pmax(.6+.3*rnorm(n), .2)  #size factors for test observations
36
#  conds <- sample(c(rep(1:K, 4), sample(1:K, n-4*K, rep=TRUE))) # class labels for training observations
37
#  condste <- sample(c(rep(1:K, 4), sample(1:K, n-4*K, rep=TRUE))) # class labels for test observations
38
#  x <- xte <- matrix(NA, nrow=n, ncol=p)
39
#  for(i in 1:n){
40
#    for(k in 1:K){
41
#      if(conds[i]==k) x[i,] <- rnbinom(p, mu = truesf[i]*classk[k,], size=param)
42
#      if(condste[i]==k) xte[i,] <- rnbinom(p, mu = truesfte[i]*classk[k,], size=param)
43
#    }
44
#  }
45
#  rm <- apply(x,2,sum)==0
46
#  return(list(x=x[,!rm],xte=xte[,!rm],y=conds,yte=condste, truesf=truesf, truesfte=truesfte))
47
#}