Last updated: 2025-04-14

Checks: 7 0

Knit directory: CX5461_Project/

This reproducible R Markdown analysis was created with workflowr (version 1.7.1). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.


Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.

Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.

The command set.seed(20250129) was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.

Great job! Recording the operating system, R version, and package versions is critical for reproducibility.

Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.

Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.

Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.

The results in this page were generated with repository version 1433d37. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.

Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish or wflow_git_commit). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:


Ignored files:
    Ignored:    .RData
    Ignored:    .Rhistory
    Ignored:    .Rproj.user/
    Ignored:    0.1 box.svg
    Ignored:    Rplot04.svg

Untracked files:
    Untracked:  0.1 density.svg
    Untracked:  0.1.emf
    Untracked:  0.1.svg
    Untracked:  0.5 box.svg
    Untracked:  0.5 density.svg
    Untracked:  0.5.svg
    Untracked:  CX_5461_Pattern_Genes_24hr.csv
    Untracked:  CX_5461_Pattern_Genes_3hr.csv
    Untracked:  DRC1.svg
    Untracked:  Figure 1.jpeg
    Untracked:  Figure 1.pdf
    Untracked:  Rplot.svg
    Untracked:  Rplot01.svg
    Untracked:  Rplot02.svg
    Untracked:  Rplot03.svg
    Untracked:  Rplot05.svg
    Untracked:  Rplot06.svg
    Untracked:  Rplot07.svg
    Untracked:  Rplot08.jpeg
    Untracked:  Rplot08.svg
    Untracked:  Rplot09.svg
    Untracked:  Rplot10.svg

Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.


These are the previous versions of the repository in which changes were made to the R Markdown (analysis/Corrmotif_Conc.Rmd) and HTML (docs/Corrmotif_Conc.html) files. If you’ve configured a remote Git repository (see ?wflow_git_remote), click on the hyperlinks in the table below to view the files as they were in that past version.

File Version Author Date Message
html 1433d37 sayanpaul01 2025-04-14 Commit
Rmd 4bad905 sayanpaul01 2025-04-14 Commit
html 4bad905 sayanpaul01 2025-04-14 Commit
Rmd 6ef5f61 sayanpaul01 2025-04-14 Commit
html 6ef5f61 sayanpaul01 2025-04-14 Commit
Rmd d8a2f25 sayanpaul01 2025-04-14 Commit
html d8a2f25 sayanpaul01 2025-04-14 Commit
Rmd a568872 sayanpaul01 2025-04-10 Commit
html a568872 sayanpaul01 2025-04-10 Commit
Rmd 4e40091 sayanpaul01 2025-04-07 Commit
html 4e40091 sayanpaul01 2025-04-07 Commit
Rmd aab6b9f sayanpaul01 2025-04-07 Commit
html aab6b9f sayanpaul01 2025-04-07 Commit
Rmd 2990b21 sayanpaul01 2025-03-10 Commit
html 2990b21 sayanpaul01 2025-03-10 Commit
Rmd ef3a951 sayanpaul01 2025-03-09 Commit
html ef3a951 sayanpaul01 2025-03-09 Commit
Rmd 81247f6 sayanpaul01 2025-03-06 Commit
html 81247f6 sayanpaul01 2025-03-06 Commit
Rmd 96d0db1 sayanpaul01 2025-03-05 Commit
html 96d0db1 sayanpaul01 2025-03-05 Commit
Rmd 91a7ce4 sayanpaul01 2025-03-03 Commit
html 91a7ce4 sayanpaul01 2025-03-03 Commit
Rmd d9ff853 sayanpaul01 2025-03-03 Commit
html d9ff853 sayanpaul01 2025-03-03 Commit
Rmd 2de67e6 sayanpaul01 2025-02-27 Commit
html 2de67e6 sayanpaul01 2025-02-27 Commit
Rmd 41cd1be sayanpaul01 2025-02-27 Commit
html 41cd1be sayanpaul01 2025-02-27 Commit
Rmd f84821f sayanpaul01 2025-02-26 Commit
Rmd b6e38a1 sayanpaul01 2025-02-25 Commit
html b6e38a1 sayanpaul01 2025-02-25 Commit
Rmd ce4b325 sayanpaul01 2025-02-25 Commit
html ce4b325 sayanpaul01 2025-02-25 Commit

📌 0.1 Micromolar

📌 Fit Limma Model Functions

## Fit limma model using code as it is found in the original cormotif code. It has
## only been modified to add names to the matrix of t values, as well as the
## limma fits

limmafit.default <- function(exprs,groupid,compid) {
  limmafits  <- list()
  compnum    <- nrow(compid)
  genenum    <- nrow(exprs)
  limmat     <- matrix(0,genenum,compnum)
  limmas2    <- rep(0,compnum)
  limmadf    <- rep(0,compnum)
  limmav0    <- rep(0,compnum)
  limmag1num <- rep(0,compnum)
  limmag2num <- rep(0,compnum)

  rownames(limmat)  <- rownames(exprs)
  colnames(limmat)  <- rownames(compid)
  names(limmas2)    <- rownames(compid)
  names(limmadf)    <- rownames(compid)
  names(limmav0)    <- rownames(compid)
  names(limmag1num) <- rownames(compid)
  names(limmag2num) <- rownames(compid)

  for(i in 1:compnum) {
    selid1 <- which(groupid == compid[i,1])
    selid2 <- which(groupid == compid[i,2])
    eset   <- new("ExpressionSet", exprs=cbind(exprs[,selid1],exprs[,selid2]))
    g1num  <- length(selid1)
    g2num  <- length(selid2)
    designmat <- cbind(base=rep(1,(g1num+g2num)), delta=c(rep(0,g1num),rep(1,g2num)))
    fit <- lmFit(eset,designmat)
    fit <- eBayes(fit)
    limmat[,i] <- fit$t[,2]
    limmas2[i] <- fit$s2.prior
    limmadf[i] <- fit$df.prior
    limmav0[i] <- fit$var.prior[2]
    limmag1num[i] <- g1num
    limmag2num[i] <- g2num
    limmafits[[i]] <- fit

    # log odds
    # w<-sqrt(1+fit$var.prior[2]/(1/g1num+1/g2num))
    # log(0.99)+dt(fit$t[1,2],g1num+g2num-2+fit$df.prior,log=TRUE)-log(0.01)-dt(fit$t[1,2]/w, g1num+g2num-2+fit$df.prior, log=TRUE)+log(w)
  }
  names(limmafits) <- rownames(compid)
  limmacompnum<-nrow(compid)
  result<-list(t       = limmat,
               v0      = limmav0,
               df0     = limmadf,
               s20     = limmas2,
               g1num   = limmag1num,
               g2num   = limmag2num,
               compnum = limmacompnum,
               fits    = limmafits)
}

limmafit.counts <-
  function (exprs, groupid, compid, norm.factor.method = "TMM", voom.normalize.method = "none")
  {
    limmafits  <- list()
    compnum    <- nrow(compid)
    genenum    <- nrow(exprs)
    limmat     <- matrix(NA,genenum,compnum)
    limmas2    <- rep(0,compnum)
    limmadf    <- rep(0,compnum)
    limmav0    <- rep(0,compnum)
    limmag1num <- rep(0,compnum)
    limmag2num <- rep(0,compnum)

    rownames(limmat)  <- rownames(exprs)
    colnames(limmat)  <- rownames(compid)
    names(limmas2)    <- rownames(compid)
    names(limmadf)    <- rownames(compid)
    names(limmav0)    <- rownames(compid)
    names(limmag1num) <- rownames(compid)
    names(limmag2num) <- rownames(compid)

    for (i in 1:compnum) {
      message(paste("Running limma for comparision",i,"/",compnum))
      selid1 <- which(groupid == compid[i, 1])
      selid2 <- which(groupid == compid[i, 2])
      # make a new count data frame
      counts <- cbind(exprs[, selid1], exprs[, selid2])

      # remove NAs
      not.nas <- which(apply(counts, 1, function(x) !any(is.na(x))) == TRUE)

      # runn voom/limma
      d <- DGEList(counts[not.nas,])
      d <- calcNormFactors(d, method = norm.factor.method)
      g1num <- length(selid1)
      g2num <- length(selid2)
      designmat <- cbind(base = rep(1, (g1num + g2num)), delta = c(rep(0,
                                                                       g1num), rep(1, g2num)))

      y <- voom(d, designmat, normalize.method = voom.normalize.method)
      fit <- lmFit(y, designmat)
      fit <- eBayes(fit)

      limmafits[[i]] <- fit
      limmat[not.nas, i] <- fit$t[, 2]
      limmas2[i] <- fit$s2.prior
      limmadf[i] <- fit$df.prior
      limmav0[i] <- fit$var.prior[2]
      limmag1num[i] <- g1num
      limmag2num[i] <- g2num
    }
    limmacompnum <- nrow(compid)
    names(limmafits) <- rownames(compid)
    result <- list(t       = limmat,
                   v0      = limmav0,
                   df0     = limmadf,
                   s20     = limmas2,
                   g1num   = limmag1num,
                   g2num   = limmag2num,
                   compnum = limmacompnum,
                   fits    = limmafits)
  }

limmafit.list <-
  function (fitlist, cmp.idx=2)
  {
    compnum    <- length(fitlist)

    genes <- c()
    for (i in 1:compnum) genes <- unique(c(genes, rownames(fitlist[[i]])))

    genenum    <- length(genes)
    limmat     <- matrix(NA,genenum,compnum)
    limmas2    <- rep(0,compnum)
    limmadf    <- rep(0,compnum)
    limmav0    <- rep(0,compnum)
    limmag1num <- rep(0,compnum)
    limmag2num <- rep(0,compnum)

    rownames(limmat)  <- genes
    colnames(limmat)  <- names(fitlist)
    names(limmas2)    <- names(fitlist)
    names(limmadf)    <- names(fitlist)
    names(limmav0)    <- names(fitlist)
    names(limmag1num) <- names(fitlist)
    names(limmag2num) <- names(fitlist)

    for (i in 1:compnum) {
      this.t <- fitlist[[i]]$t[,cmp.idx]
      limmat[names(this.t),i] <- this.t

      limmas2[i]    <- fitlist[[i]]$s2.prior
      limmadf[i]    <- fitlist[[i]]$df.prior
      limmav0[i]    <- fitlist[[i]]$var.prior[cmp.idx]
      limmag1num[i] <- sum(fitlist[[i]]$design[,cmp.idx]==0)
      limmag2num[i] <- sum(fitlist[[i]]$design[,cmp.idx]==1)
    }

    limmacompnum <- compnum
    result <- list(t       = limmat,
                   v0      = limmav0,
                   df0     = limmadf,
                   s20     = limmas2,
                   g1num   = limmag1num,
                   g2num   = limmag2num,
                   compnum = limmacompnum,
                   fits    = limmafits)

  }

## Rank genes based on statistics
generank<-function(x) {
  xcol<-ncol(x)
  xrow<-nrow(x)
  result<-matrix(0,xrow,xcol)
  z<-(1:1:xrow)
  for(i in 1:xcol) {
    y<-sort(x[,i],decreasing=TRUE,na.last=TRUE)
    result[,i]<-match(x[,i],y)
    result[,i]<-order(result[,i])
  }
  result
}

## Log-likelihood for moderated t under H0
modt.f0.loglike<-function(x,df) {
  a<-dt(x, df, log=TRUE)
  result<-as.vector(a)
  flag<-which(is.na(result)==TRUE)
  result[flag]<-0
  result
}

## Log-likelihood for moderated t under H1
## param=c(df,g1num,g2num,v0)
modt.f1.loglike<-function(x,param) {
  df<-param[1]
  g1num<-param[2]
  g2num<-param[3]
  v0<-param[4]
  w<-sqrt(1+v0/(1/g1num+1/g2num))
  dt(x/w, df, log=TRUE)-log(w)
  a<-dt(x/w, df, log=TRUE)-log(w)
  result<-as.vector(a)
  flag<-which(is.na(result)==TRUE)
  result[flag]<-0
  result
}

## Correlation Motif Fit
cmfit.X<-function(x, type, K=1, tol=1e-3, max.iter=100) {
  ## initialize
  xrow <- nrow(x)
  xcol <- ncol(x)
  loglike0 <- list()
  loglike1 <- list()
  p <- rep(1, K)/K
  q <- matrix(runif(K * xcol), K, xcol)
  q[1, ] <- rep(0.01, xcol)
  for (i in 1:xcol) {
    f0 <- type[[i]][[1]]
    f0param <- type[[i]][[2]]
    f1 <- type[[i]][[3]]
    f1param <- type[[i]][[4]]
    loglike0[[i]] <- f0(x[, i], f0param)
    loglike1[[i]] <- f1(x[, i], f1param)
  }
  condlike <- list()
  for (i in 1:xcol) {
    condlike[[i]] <- matrix(0, xrow, K)
  }
  loglike.old <- -1e+10
  for (i.iter in 1:max.iter) {
    if ((i.iter%%50) == 0) {
      print(paste("We have run the first ", i.iter, " iterations for K=",
                  K, sep = ""))
    }
    err <- tol + 1
    clustlike <- matrix(0, xrow, K)
    #templike <- matrix(0, xrow, 2)
    templike1 <- rep(0, xrow)
    templike2 <- rep(0, xrow)
    for (j in 1:K) {
      for (i in 1:xcol) {
        templike1 <- log(q[j, i]) + loglike1[[i]]
        templike2 <- log(1 - q[j, i]) + loglike0[[i]]
        tempmax <- Rfast::Pmax(templike1, templike2)

        templike1 <- exp(templike1 - tempmax)
        templike2 <- exp(templike2 - tempmax)

        tempsum <- templike1 + templike2
        clustlike[, j] <- clustlike[, j] + tempmax +
          log(tempsum)
        condlike[[i]][, j] <- templike1/tempsum
      }
      clustlike[, j] <- clustlike[, j] + log(p[j])
    }
    #tempmax <- apply(clustlike, 1, max)
    tempmax <- Rfast::rowMaxs(clustlike, value=TRUE)
    for (j in 1:K) {
      clustlike[, j] <- exp(clustlike[, j] - tempmax)
    }
    #tempsum <- apply(clustlike, 1, sum)
    tempsum <- Rfast::rowsums(clustlike)
    for (j in 1:K) {
      clustlike[, j] <- clustlike[, j]/tempsum
    }
    #p.new <- (apply(clustlike, 2, sum) + 1)/(xrow + K)
    p.new <- (Rfast::colsums(clustlike) + 1)/(xrow + K)
    q.new <- matrix(0, K, xcol)
    for (j in 1:K) {
      clustpsum <- sum(clustlike[, j])
      for (i in 1:xcol) {
        q.new[j, i] <- (sum(clustlike[, j] * condlike[[i]][,
                                                           j]) + 1)/(clustpsum + 2)
      }
    }
    err.p <- max(abs(p.new - p)/p)
    err.q <- max(abs(q.new - q)/q)
    err <- max(err.p, err.q)
    loglike.new <- (sum(tempmax + log(tempsum)) + sum(log(p.new)) +
                      sum(log(q.new) + log(1 - q.new)))/xrow
    p <- p.new
    q <- q.new
    loglike.old <- loglike.new
    if (err < tol) {
      break
    }
  }
  clustlike <- matrix(0, xrow, K)
  for (j in 1:K) {
    for (i in 1:xcol) {
      templike1 <- log(q[j, i]) + loglike1[[i]]
      templike2 <- log(1 - q[j, i]) + loglike0[[i]]
      tempmax <- Rfast::Pmax(templike1, templike2)

      templike1 <- exp(templike1 - tempmax)
      templike2 <- exp(templike2 - tempmax)

      tempsum <- templike1 + templike2
      clustlike[, j] <- clustlike[, j] + tempmax + log(tempsum)
      condlike[[i]][, j] <- templike1/tempsum
    }
    clustlike[, j] <- clustlike[, j] + log(p[j])
  }
  #tempmax <- apply(clustlike, 1, max)
  tempmax <- Rfast::rowMaxs(clustlike, value=TRUE)
  for (j in 1:K) {
    clustlike[, j] <- exp(clustlike[, j] - tempmax)
  }
  #tempsum <- apply(clustlike, 1, sum)
  tempsum <- Rfast::rowsums(clustlike)
  for (j in 1:K) {
    clustlike[, j] <- clustlike[, j]/tempsum
  }
  p.post <- matrix(0, xrow, xcol)
  for (j in 1:K) {
    for (i in 1:xcol) {
      p.post[, i] <- p.post[, i] + clustlike[, j] * condlike[[i]][,
                                                                  j]
    }
  }
  loglike.old <- loglike.old - (sum(log(p)) + sum(log(q) +
                                                    log(1 - q)))/xrow
  loglike.old <- loglike.old * xrow
  result <- list(p.post = p.post, motif.prior = p, motif.q = q,
                 loglike = loglike.old, clustlike=clustlike, condlike=condlike)
}

## Fit using (0,0,...,0) and (1,1,...,1)
cmfitall<-function(x, type, tol=1e-3, max.iter=100) {
  ## initialize
  xrow<-nrow(x)
  xcol<-ncol(x)
  loglike0<-list()
  loglike1<-list()
  p<-0.01

  ## compute loglikelihood
  L0<-matrix(0,xrow,1)
  L1<-matrix(0,xrow,1)
  for(i in 1:xcol) {
    f0<-type[[i]][[1]]
    f0param<-type[[i]][[2]]
    f1<-type[[i]][[3]]
    f1param<-type[[i]][[4]]
    loglike0[[i]]<-f0(x[,i],f0param)
    loglike1[[i]]<-f1(x[,i],f1param)
    L0<-L0+loglike0[[i]]
    L1<-L1+loglike1[[i]]
  }


  ## EM algorithm to get MLE of p and q
  loglike.old <- -1e10
  for(i.iter in 1:max.iter) {
    if((i.iter%%50) == 0) {
      print(paste("We have run the first ", i.iter, " iterations",sep=""))
    }
    err<-tol+1

    ## compute posterior cluster membership
    clustlike<-matrix(0,xrow,2)
    clustlike[,1]<-log(1-p)+L0
    clustlike[,2]<-log(p)+L1

    tempmax<-apply(clustlike,1,max)
    for(j in 1:2) {
      clustlike[,j]<-exp(clustlike[,j]-tempmax)
    }
    tempsum<-apply(clustlike,1,sum)

    ## update motif occurrence rate
    for(j in 1:2) {
      clustlike[,j]<-clustlike[,j]/tempsum
    }

    p.new<-(sum(clustlike[,2])+1)/(xrow+2)

    ## evaluate convergence
    err<-abs(p.new-p)/p

    ## evaluate whether the log.likelihood increases
    loglike.new<-(sum(tempmax+log(tempsum))+log(p.new)+log(1-p.new))/xrow

    loglike.old<-loglike.new
    p<-p.new

    if(err<tol) {
      break;
    }
  }

  ## compute posterior p
  clustlike<-matrix(0,xrow,2)
  clustlike[,1]<-log(1-p)+L0
  clustlike[,2]<-log(p)+L1

  tempmax<-apply(clustlike,1,max)
  for(j in 1:2) {
    clustlike[,j]<-exp(clustlike[,j]-tempmax)
  }
  tempsum<-apply(clustlike,1,sum)

  for(j in 1:2) {
    clustlike[,j]<-clustlike[,j]/tempsum
  }

  p.post<-matrix(0,xrow,xcol)
  for(i in 1:xcol) {
    p.post[,i]<-clustlike[,2]
  }

  ## return

  #calculate back loglikelihood
  loglike.old<-loglike.old-(log(p)+log(1-p))/xrow
  loglike.old<-loglike.old*xrow
  result<-list(p.post=p.post, motif.prior=p, loglike=loglike.old)
}

## Fit each dataset separately
cmfitsep<-function(x, type, tol=1e-3, max.iter=100) {
  ## initialize
  xrow<-nrow(x)
  xcol<-ncol(x)
  loglike0<-list()
  loglike1<-list()
  p<-0.01*rep(1,xcol)
  loglike.final<-rep(0,xcol)

  ## compute loglikelihood
  for(i in 1:xcol) {
    f0<-type[[i]][[1]]
    f0param<-type[[i]][[2]]
    f1<-type[[i]][[3]]
    f1param<-type[[i]][[4]]
    loglike0[[i]]<-f0(x[,i],f0param)
    loglike1[[i]]<-f1(x[,i],f1param)
  }

  p.post<-matrix(0,xrow,xcol)

  ## EM algorithm to get MLE of p
  for(coli in 1:xcol) {
    loglike.old <- -1e10
    for(i.iter in 1:max.iter) {
      if((i.iter%%50) == 0) {
        print(paste("We have run the first ", i.iter, " iterations",sep=""))
      }
      err<-tol+1

      ## compute posterior cluster membership
      clustlike<-matrix(0,xrow,2)
      clustlike[,1]<-log(1-p[coli])+loglike0[[coli]]
      clustlike[,2]<-log(p[coli])+loglike1[[coli]]

      tempmax<-apply(clustlike,1,max)
      for(j in 1:2) {
        clustlike[,j]<-exp(clustlike[,j]-tempmax)
      }
      tempsum<-apply(clustlike,1,sum)

      ## evaluate whether the log.likelihood increases
      loglike.new<-sum(tempmax+log(tempsum))/xrow

      ## update motif occurrence rate
      for(j in 1:2) {
        clustlike[,j]<-clustlike[,j]/tempsum
      }

      p.new<-(sum(clustlike[,2]))/(xrow)

      ## evaluate convergence
      err<-abs(p.new-p[coli])/p[coli]
      loglike.old<-loglike.new
      p[coli]<-p.new

      if(err<tol) {
        break;
      }
    }

    ## compute posterior p
    clustlike<-matrix(0,xrow,2)
    clustlike[,1]<-log(1-p[coli])+loglike0[[coli]]
    clustlike[,2]<-log(p[coli])+loglike1[[coli]]

    tempmax<-apply(clustlike,1,max)
    for(j in 1:2) {
      clustlike[,j]<-exp(clustlike[,j]-tempmax)
    }
    tempsum<-apply(clustlike,1,sum)

    for(j in 1:2) {
      clustlike[,j]<-clustlike[,j]/tempsum
    }

    p.post[,coli]<-clustlike[,2]
    loglike.final[coli]<-loglike.old
  }


  ## return
  loglike.final<-loglike.final*xrow
  result<-list(p.post=p.post, motif.prior=p, loglike=loglike.final)
}

## Fit the full model
cmfitfull<-function(x, type, tol=1e-3, max.iter=100) {
  ## initialize
  xrow<-nrow(x)
  xcol<-ncol(x)
  loglike0<-list()
  loglike1<-list()
  K<-2^xcol
  p<-rep(1,K)/K
  pattern<-rep(0,xcol)
  patid<-matrix(0,K,xcol)

  ## compute loglikelihood
  for(i in 1:xcol) {
    f0<-type[[i]][[1]]
    f0param<-type[[i]][[2]]
    f1<-type[[i]][[3]]
    f1param<-type[[i]][[4]]
    loglike0[[i]]<-f0(x[,i],f0param)
    loglike1[[i]]<-f1(x[,i],f1param)
  }
  L<-matrix(0,xrow,K)
  for(i in 1:K)
  {
    patid[i,]<-pattern
    for(j in 1:xcol) {
      if(pattern[j] < 0.5) {
        L[,i]<-L[,i]+loglike0[[j]]
      } else {
        L[,i]<-L[,i]+loglike1[[j]]
      }
    }

    if(i < K) {
      pattern[xcol]<-pattern[xcol]+1
      j<-xcol
      while(pattern[j] > 1) {
        pattern[j]<-0
        j<-j-1
        pattern[j]<-pattern[j]+1
      }
    }
  }

  ## EM algorithm to get MLE of p and q
  loglike.old <- -1e10
  for(i.iter in 1:max.iter) {
    if((i.iter%%50) == 0) {
      print(paste("We have run the first ", i.iter, " iterations",sep=""))
    }
    err<-tol+1

    ## compute posterior cluster membership
    clustlike<-matrix(0,xrow,K)
    for(j in 1:K) {
      clustlike[,j]<-log(p[j])+L[,j]
    }

    tempmax<-apply(clustlike,1,max)
    for(j in 1:K) {
      clustlike[,j]<-exp(clustlike[,j]-tempmax)
    }
    tempsum<-apply(clustlike,1,sum)

    ## update motif occurrence rate
    for(j in 1:K) {
      clustlike[,j]<-clustlike[,j]/tempsum
    }

    p.new<-(apply(clustlike,2,sum)+1)/(xrow+K)

    ## evaluate convergence
    err<-max(abs(p.new-p)/p)

    ## evaluate whether the log.likelihood increases
    loglike.new<-(sum(tempmax+log(tempsum))+sum(log(p.new)))/xrow

    loglike.old<-loglike.new
    p<-p.new

    if(err<tol) {
      break;
    }
  }

  ## compute posterior p
  clustlike<-matrix(0,xrow,K)
  for(j in 1:K) {
    clustlike[,j]<-log(p[j])+L[,j]
  }

  tempmax<-apply(clustlike,1,max)
  for(j in 1:K) {
    clustlike[,j]<-exp(clustlike[,j]-tempmax)
  }
  tempsum<-apply(clustlike,1,sum)

  for(j in 1:K) {
    clustlike[,j]<-clustlike[,j]/tempsum
  }

  p.post<-matrix(0,xrow,xcol)
  for(j in 1:K) {
    for(i in 1:xcol) {
      if(patid[j,i] > 0.5) {
        p.post[,i]<-p.post[,i]+clustlike[,j]
      }
    }
  }

  ## return
  #calculate back loglikelihood
  loglike.old<-loglike.old-sum(log(p))/xrow
  loglike.old<-loglike.old*xrow
  result<-list(p.post=p.post, motif.prior=p, loglike=loglike.old)
}

generatetype<-function(limfitted)
{
  jtype<-list()
  df<-limfitted$g1num+limfitted$g2num-2+limfitted$df0
  for(j in 1:limfitted$compnum)
  {
    jtype[[j]]<-list(f0=modt.f0.loglike, f0.param=df[j], f1=modt.f1.loglike, f1.param=c(df[j],limfitted$g1num[j],limfitted$g2num[j],limfitted$v0[j]))
  }
  jtype
}

cormotiffit <- function(exprs, groupid=NULL, compid=NULL, K=1, tol=1e-3,
                        max.iter=100, BIC=TRUE, norm.factor.method="TMM",
                        voom.normalize.method = "none", runtype=c("logCPM","counts","limmafits"), each=3)
{
  # first I want to do some typechecking. Input can be either a normalized
  # matrix, a count matrix, or a list of limma fits. Dispatch the correct
  # limmafit accordingly.
  # todo: add some typechecking here
  limfitted <- list()
  if (runtype=="counts") {
    limfitted <- limmafit.counts(exprs,groupid,compid, norm.factor.method, voom.normalize.method)
  } else if (runtype=="logCPM") {
    limfitted <- limmafit.default(exprs,groupid,compid)
  } else if (runtype=="limmafits") {
    limfitted <- limmafit.list(exprs)
  } else {
    stop("runtype must be one of 'logCPM', 'counts', or 'limmafits'")
  }


  jtype<-generatetype(limfitted)
  fitresult<-list()
  ks <- rep(K, each = each)
  fitresult <- bplapply(1:length(ks), function(i, x, type, ks, tol, max.iter) {
    cmfit.X(x, type, K = ks[i], tol = tol, max.iter = max.iter)
  }, x=limfitted$t, type=jtype, ks=ks, tol=tol, max.iter=max.iter)

  best.fitresults <- list()
  for (i in 1:length(K)) {
    w.k <- which(ks==K[i])
    this.bic <- c()
    for (j in w.k) this.bic[j] <- -2 * fitresult[[j]]$loglike + (K[i] - 1 + K[i] * limfitted$compnum) * log(dim(limfitted$t)[1])
    w.min <- which(this.bic == min(this.bic, na.rm = TRUE))[1]
    best.fitresults[[i]] <- fitresult[[w.min]]
  }
  fitresult <- best.fitresults

  bic <- rep(0, length(K))
  aic <- rep(0, length(K))
  loglike <- rep(0, length(K))
  for (i in 1:length(K)) loglike[i] <- fitresult[[i]]$loglike
  for (i in 1:length(K)) bic[i] <- -2 * fitresult[[i]]$loglike + (K[i] - 1 + K[i] * limfitted$compnum) * log(dim(limfitted$t)[1])
  for (i in 1:length(K)) aic[i] <- -2 * fitresult[[i]]$loglike + 2 * (K[i] - 1 + K[i] * limfitted$compnum)
  if(BIC==TRUE) {
    bestflag=which(bic==min(bic))
  }
  else {
    bestflag=which(aic==min(aic))
  }
  result<-list(bestmotif=fitresult[[bestflag]],bic=cbind(K,bic),
               aic=cbind(K,aic),loglike=cbind(K,loglike), allmotifs=fitresult)

}

cormotiffitall<-function(exprs,groupid,compid, tol=1e-3, max.iter=100)
{
  limfitted<-limmafit(exprs,groupid,compid)
  jtype<-generatetype(limfitted)
  fitresult<-cmfitall(limfitted$t,type=jtype,tol=1e-3,max.iter=max.iter)
}

cormotiffitsep<-function(exprs,groupid,compid, tol=1e-3, max.iter=100)
{
  limfitted<-limmafit(exprs,groupid,compid)
  jtype<-generatetype(limfitted)
  fitresult<-cmfitsep(limfitted$t,type=jtype,tol=1e-3,max.iter=max.iter)
}

cormotiffitfull<-function(exprs,groupid,compid, tol=1e-3, max.iter=100)
{
  limfitted<-limmafit(exprs,groupid,compid)
  jtype<-generatetype(limfitted)
  fitresult<-cmfitfull(limfitted$t,type=jtype,tol=1e-3,max.iter=max.iter)
}

plotIC<-function(fitted_cormotif)
{
  oldpar<-par(mfrow=c(1,2))
  plot(fitted_cormotif$bic[,1], fitted_cormotif$bic[,2], type="b",xlab="Motif Number", ylab="BIC", main="BIC")
  plot(fitted_cormotif$aic[,1], fitted_cormotif$aic[,2], type="b",xlab="Motif Number", ylab="AIC", main="AIC")
}

plotMotif<-function(fitted_cormotif,title="")
{
  layout(matrix(1:2,ncol=2))
  u<-1:dim(fitted_cormotif$bestmotif$motif.q)[2]
  v<-1:dim(fitted_cormotif$bestmotif$motif.q)[1]
  image(u,v,t(fitted_cormotif$bestmotif$motif.q),
        col=gray(seq(from=1,to=0,by=-0.1)),xlab="Study",yaxt = "n",
        ylab="Corr. Motifs",main=paste(title,"pattern",sep=" "))
  axis(2,at=1:length(v))
  for(i in 1:(length(u)+1))
  {
    abline(v=(i-0.5))
  }
  for(i in 1:(length(v)+1))
  {
    abline(h=(i-0.5))
  }
  Ng=10000
  if(is.null(fitted_cormotif$bestmotif$p.post)!=TRUE)
    Ng=nrow(fitted_cormotif$bestmotif$p.post)
  genecount=floor(fitted_cormotif$bestmotif$motif.p*Ng)
  NK=nrow(fitted_cormotif$bestmotif$motif.q)
  plot(0,0.7,pch=".",xlim=c(0,1.2),ylim=c(0.75,NK+0.25),
       frame.plot=FALSE,axes=FALSE,xlab="No. of genes",ylab="", main=paste(title,"frequency",sep=" "))
  segments(0,0.7,fitted_cormotif$bestmotif$motif.p[1],0.7)
  rect(0,1:NK-0.3,fitted_cormotif$bestmotif$motif.p,1:NK+0.3,
       col="dark grey")
  mtext(1:NK,at=1:NK,side=2,cex=0.8)
  text(fitted_cormotif$bestmotif$motif.p+0.15,1:NK,
       labels=floor(fitted_cormotif$bestmotif$motif.p*Ng))
}

📌 Load Required Libraries

library(Cormotif)
library(Rfast)
library(dplyr)
library(BiocParallel)
library(gprofiler2)
library(ggplot2)

📌 Corrmotif Model 0.1 Micromolar

📌 Load Corrmotif Data

# Read the Corrmotif Results
Corrmotif <- read.csv("data/Corrmotif/CX5461.csv")
Corrmotif_df <- data.frame(Corrmotif)
rownames(Corrmotif_df) <- Corrmotif_df$Gene

# Filter for 0.1 Concentration Only
exprs.corrmotif <- as.matrix(Corrmotif_df[, grep("0.1", colnames(Corrmotif_df))])


# Read group and comparison IDs
groupid <- read.csv("data/Corrmotif/groupid.csv")
groupid_df <- data.frame(groupid[, grep("0.1", colnames(groupid))])


compid <- read.csv("data/Corrmotif/Compid.csv")
compid_df <- compid[compid$Cond1 %in% unique(as.numeric(groupid_df)) & compid$Cond2 %in% unique(as.numeric(groupid_df)), ]

📌 Corrmotif Model 0.1 Micromolar (K=1:8)

📌 Fit Corrmotif Model (K=1:8) (0.1 Micromolar)

set.seed(11111)
# Fit Corrmotif Model (K = 1 to 8)
set.seed(11111)
motif.fitted_0.1 <- cormotiffit(
  exprs = exprs.corrmotif,
  groupid = groupid_df,
  compid = compid_df,
  K = 1:8,
  max.iter = 1000,
  BIC = TRUE,
  runtype = "logCPM"
)

gene_prob_0.1 <- motif.fitted_0.1$bestmotif$p.post
rownames(gene_prob_0.1) <- rownames(Corrmotif_df)
motif_prob_0.1 <- motif.fitted_0.1$bestmotif$clustlike
rownames(motif_prob_0.1) <- rownames(gene_prob_0.1)
write.csv(motif_prob_0.1,"data/cormotif_probability_genelist_0.1.csv")

📌 Plot motif (0.1 Micromolar)

cormotif_0.1 <- readRDS("data/Corrmotif/cormotif_0.1.RDS")

cormotif_0.1$bic
     K      bic
[1,] 1 291696.5
[2,] 2 284585.3
[3,] 3 283482.9
[4,] 4 283551.8
[5,] 5 283620.7
[6,] 6 283689.6
[7,] 7 283758.5
[8,] 8 283827.4
plotIC(cormotif_0.1)

Version Author Date
aab6b9f sayanpaul01 2025-04-07
41cd1be sayanpaul01 2025-02-27
ce4b325 sayanpaul01 2025-02-25
plotMotif(cormotif_0.1)

Version Author Date
aab6b9f sayanpaul01 2025-04-07
41cd1be sayanpaul01 2025-02-27
ce4b325 sayanpaul01 2025-02-25

📌 Extract Gene Probabilities (0.1 Micromolar)

# Extract posterior probabilities for genes
gene_prob_tran_0.1 <- cormotif_0.1$bestmotif$p.post

rownames(gene_prob_tran_0.1) <- rownames(Corrmotif_df)

# Define gene probability groups
prob_1_0.1  <- rownames(gene_prob_tran_0.1[(gene_prob_tran_0.1[,1] <0.5 & gene_prob_tran_0.1[,2] <0.5 & gene_prob_tran_0.1[,3] <0.5 & gene_prob_tran_0.1[,4] <0.5 & gene_prob_tran_0.1[,5] < 0.5 & gene_prob_tran_0.1[,6]<0.5),])
length(prob_1_0.1)
[1] 12308
prob_2_0.1  <- rownames(gene_prob_tran_0.1[(gene_prob_tran_0.1[,1] <0.5 & gene_prob_tran_0.1[,2] >0.5 & gene_prob_tran_0.1[,3] >0.5 & gene_prob_tran_0.1[,4] <0.5 & gene_prob_tran_0.1[,5] > 0.5 & gene_prob_tran_0.1[,6]>0.5),])
length(prob_2_0.1)
[1] 415
prob_3_0.1  <- rownames(gene_prob_tran_0.1[(gene_prob_tran_0.1[,1] <0.5 & gene_prob_tran_0.1[,2] <0.5 & gene_prob_tran_0.1[,3] <0.5 & gene_prob_tran_0.1[,4] <0.5 & gene_prob_tran_0.1[,5] > 0.5 & gene_prob_tran_0.1[,6]>0.5),])
length(prob_3_0.1)
[1] 1551

📌 Distribution of Gene Clusters Identified by Corrmotif (0.1 micromolar)

# Load necessary library
library(ggplot2)

# Data
data <- data.frame(
  Category = c("Non response (0.1 µM)", "CX-DOX mid-late response (0.1 µM)", "DOX only mid-late (0.1 µM)"),
  Value = c(12308, 415, 1551)
)

# Define custom colors
custom_colors <- c("Non response (0.1 µM)" = "#FF9999",
                   "CX-DOX mid-late response (0.1 µM)" = "#66B2FF",
                   "DOX only mid-late (0.1 µM)" = "#99FF99")

# Create pie chart
ggplot(data, aes(x = "", y = Value, fill = Category)) +
  geom_bar(width = 1, stat = "identity") +
  coord_polar("y", start = 0) +
  geom_text(aes(label = Value),
            position = position_stack(vjust = 0.5),
            size = 4, color = "black") +
  labs(title = "Pie Chart (0.1 micromolar Corrmotif)", x = NULL, y = NULL) +
  theme_void() +
  scale_fill_manual(values = custom_colors)

Version Author Date
aab6b9f sayanpaul01 2025-04-07
2de67e6 sayanpaul01 2025-02-27

📌 Save Corr-motif datasets for Gene Ontology analysis (0.1 Micromolar)

write.csv(data.frame(Entrez_ID = prob_1_0.1), "data/prob_1_0.1.csv", row.names = FALSE)
write.csv(data.frame(Entrez_ID = prob_2_0.1), "data/prob_2_0.1.csv", row.names = FALSE)
write.csv(data.frame(Entrez_ID = prob_3_0.1), "data/prob_3_0.1.csv", row.names = FALSE)

📌 0.1 Micromolar abs logFC

# Load Required Libraries
library(dplyr)
library(ggplot2)

# Load Response Groups from CSV Files
prob_1_0.1 <- as.character(read.csv("data/prob_1_0.1.csv")$Entrez_ID)
prob_2_0.1 <- as.character(read.csv("data/prob_2_0.1.csv")$Entrez_ID)
prob_3_0.1 <- as.character(read.csv("data/prob_3_0.1.csv")$Entrez_ID)

# Load Datasets (Only 0.1 Micromolar)
CX_0.1_3  <- read.csv("data/DEGs/Toptable_CX_0.1_3.csv")
CX_0.1_24 <- read.csv("data/DEGs/Toptable_CX_0.1_24.csv")
CX_0.1_48 <- read.csv("data/DEGs/Toptable_CX_0.1_48.csv")

DOX_0.1_3  <- read.csv("data/DEGs/Toptable_DOX_0.1_3.csv")
DOX_0.1_24 <- read.csv("data/DEGs/Toptable_DOX_0.1_24.csv")
DOX_0.1_48 <- read.csv("data/DEGs/Toptable_DOX_0.1_48.csv")

# Combine All 0.1 Micromolar Datasets into a Single Dataframe
all_toptables_0.1 <- bind_rows(
  CX_0.1_3  %>% mutate(Drug = "CX.5461", Timepoint = "Timepoint: 3 hours"),
  CX_0.1_24 %>% mutate(Drug = "CX.5461", Timepoint = "Timepoint: 24 hours"),
  CX_0.1_48 %>% mutate(Drug = "CX.5461", Timepoint = "Timepoint: 48 hours"),
  DOX_0.1_3  %>% mutate(Drug = "DOX", Timepoint = "Timepoint: 3 hours"),
  DOX_0.1_24 %>% mutate(Drug = "DOX", Timepoint = "Timepoint: 24 hours"),
  DOX_0.1_48 %>% mutate(Drug = "DOX", Timepoint = "Timepoint: 48 hours")
)

# Convert `Entrez_ID` to Character to Avoid `%in%` Issues
all_toptables_0.1$Entrez_ID <- as.character(all_toptables_0.1$Entrez_ID)

# Assign Response Groups with Line Breaks for Better Plotting
all_toptables_0.1 <- all_toptables_0.1 %>%
  mutate(
    Response_Group = case_when(
      Entrez_ID %in% prob_1_0.1 ~ "Non response\n(0.1 micromolar)",
      Entrez_ID %in% prob_2_0.1 ~ "CX-DOX mid-late response\n(0.1 micromolar)",
      Entrez_ID %in% prob_3_0.1 ~ "DOX only mid-late response\n(0.1 micromolar)",
      TRUE ~ NA_character_
    )
  ) %>%
  filter(!is.na(Response_Group))

# Compute Absolute logFC
all_toptables_0.1 <- all_toptables_0.1 %>%
  mutate(absFC = abs(logFC))

# Convert Factors for Proper Ordering (Reversed Order for Response Groups)
all_toptables_0.1 <- all_toptables_0.1 %>%
  mutate(
    Drug = factor(Drug, levels = c("CX.5461", "DOX")),
    Timepoint = factor(Timepoint, levels = c("Timepoint: 3 hours", "Timepoint: 24 hours", "Timepoint: 48 hours")),
    Response_Group = factor(Response_Group,
                            levels = c(
                              "DOX only mid-late response\n(0.1 micromolar)",
                              "CX-DOX mid-late response\n(0.1 micromolar)",
                              "Non response\n(0.1 micromolar)"  # Reversed Order
                            ))
  )

# **Plot the Boxplot with Faceted Labels Wrapping Correctly**
ggplot(all_toptables_0.1, aes(x = Drug, y = absFC, fill = Drug)) +
  geom_boxplot() +
  scale_fill_manual(values = c("CX.5461" = "blue", "DOX" = "red")) +  # Custom color palette
  facet_grid(Response_Group ~ Timepoint, labeller = label_wrap_gen(width = 20)) +  # Ensure Proper Wrapping
  theme_bw() +
  labs(
    x = "Drugs",
    y = "|Log Fold Change|",
    title = "|Log Fold| for 0.1 micromolar"
  ) +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.line = element_line(linewidth = 1.5),
    strip.background = element_rect(fill = "gray"),  # Gray background for facet labels
    strip.text = element_text(size = 12, color = "black", face = "bold"),  # Bold styling for facet labels
    axis.text.x = element_text(size = 10, color = "black", angle = 15)
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07
2990b21 sayanpaul01 2025-03-10
91a7ce4 sayanpaul01 2025-03-03
d9ff853 sayanpaul01 2025-03-03

📌 0.1 Micromolar mean (Abs logFC) across timepoints

# Load Required Libraries
library(dplyr)
library(ggplot2)

# Load Response Groups from CSV Files
prob_1_0.1 <- as.character(read.csv("data/prob_1_0.1.csv")$Entrez_ID)
prob_2_0.1 <- as.character(read.csv("data/prob_2_0.1.csv")$Entrez_ID)
prob_3_0.1 <- as.character(read.csv("data/prob_3_0.1.csv")$Entrez_ID)

# Load Datasets (Only 0.1 Micromolar)
CX_0.1_3  <- read.csv("data/DEGs/Toptable_CX_0.1_3.csv")
CX_0.1_24 <- read.csv("data/DEGs/Toptable_CX_0.1_24.csv")
CX_0.1_48 <- read.csv("data/DEGs/Toptable_CX_0.1_48.csv")

DOX_0.1_3  <- read.csv("data/DEGs/Toptable_DOX_0.1_3.csv")
DOX_0.1_24 <- read.csv("data/DEGs/Toptable_DOX_0.1_24.csv")
DOX_0.1_48 <- read.csv("data/DEGs/Toptable_DOX_0.1_48.csv")

# Combine All 0.1 Micromolar Datasets into a Single Dataframe
all_toptables_0.1 <- bind_rows(
  CX_0.1_3  %>% mutate(Drug = "CX.5461", Timepoint = "3"),
  CX_0.1_24 %>% mutate(Drug = "CX.5461", Timepoint = "24"),
  CX_0.1_48 %>% mutate(Drug = "CX.5461", Timepoint = "48"),
  DOX_0.1_3  %>% mutate(Drug = "DOX", Timepoint = "3"),
  DOX_0.1_24 %>% mutate(Drug = "DOX", Timepoint = "24"),
  DOX_0.1_48 %>% mutate(Drug = "DOX", Timepoint = "48")
)

# Convert `Entrez_ID` to Character to Avoid `%in%` Issues
all_toptables_0.1$Entrez_ID <- as.character(all_toptables_0.1$Entrez_ID)

# Assign Response Groups with Line Breaks for Better Plotting
all_toptables_0.1 <- all_toptables_0.1 %>%
  mutate(
    Response_Group = case_when(
      Entrez_ID %in% prob_1_0.1 ~ "Non response\n(0.1 micromolar)",
      Entrez_ID %in% prob_2_0.1 ~ "CX-DOX mid-late response\n(0.1 micromolar)",
      Entrez_ID %in% prob_3_0.1 ~ "DOX only mid-late response\n(0.1 micromolar)",
      TRUE ~ NA_character_
    )
  ) %>%
  filter(!is.na(Response_Group))

# Compute Mean Absolute logFC for Line Plot
data_summary <- all_toptables_0.1 %>%
  mutate(abs_logFC = abs(logFC)) %>%  # Take absolute log fold change
  group_by(Response_Group, Drug, Timepoint) %>%
  dplyr::summarize(mean_abs_logFC = mean(abs_logFC, na.rm = TRUE), .groups = "drop") %>%
  as.data.frame()

# **Ensure all timepoints exist in the summary**
timepoints_full <- expand.grid(
  Response_Group = unique(all_toptables_0.1$Response_Group),
  Drug = unique(all_toptables_0.1$Drug),
  Timepoint = c("3", "24", "48")
)

# **Merge to keep missing timepoints**
data_summary <- full_join(timepoints_full, data_summary, by = c("Response_Group", "Drug", "Timepoint"))

# **Replace NA mean_abs_logFC with 0 if no genes were present**
data_summary$mean_abs_logFC[is.na(data_summary$mean_abs_logFC)] <- 0

# Convert Factors for Proper Ordering (Reversed Order for Response Groups)
data_summary <- data_summary %>%
  mutate(
    Timepoint = factor(Timepoint, levels = c("3", "24", "48"), labels = c("3 hours", "24 hours", "48 hours")),
    Response_Group = factor(Response_Group, levels = c(
      "DOX only mid-late response\n(0.1 micromolar)",
      "CX-DOX mid-late response\n(0.1 micromolar)",
      "Non response\n(0.1 micromolar)"  # Reversed Order
    ))
  )

# Define custom drug palette
drug_palette <- c("CX.5461" = "blue", "DOX" = "red")

# **Plot the Line Plot for Absolute logFC**
ggplot(data_summary, aes(x = Timepoint, y = mean_abs_logFC, group = Drug, color = Drug)) +
  geom_point(size = 3) +
  geom_line(size = 1.2) +
  scale_color_manual(values = drug_palette) +
  ylim(0, 2.5) +  # Adjust the Y-axis for better visualization
  facet_wrap(~ Response_Group, ncol = 1) +  # Facet by Response Group (Reversed Order)
  theme_bw() +
  labs(
    x = "Timepoints",
    y = "Mean |Log Fold Change|",
    title = "Mean |Log Fold Change| Across Response Groups (0.1 micromolar)",
    color = "Drug"
  ) +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.text = element_text(size = 12, color = "black"),
    strip.text = element_text(size = 12, color = "black", face = "bold"),
    legend.title = element_text(size = 14),
    legend.text = element_text(size = 12)
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07
2990b21 sayanpaul01 2025-03-10
91a7ce4 sayanpaul01 2025-03-03
d9ff853 sayanpaul01 2025-03-03

📌 0.1 Micromolar logFC

# Load required libraries
library(dplyr)
library(ggplot2)

# Load Response Groups from CSV Files
prob_1_0.1 <- as.character(read.csv("data/prob_1_0.1.csv")$Entrez_ID)
prob_2_0.1 <- as.character(read.csv("data/prob_2_0.1.csv")$Entrez_ID)
prob_3_0.1 <- as.character(read.csv("data/prob_3_0.1.csv")$Entrez_ID)

# Load Datasets (Only 0.1 Micromolar)
CX_0.1_3  <- read.csv("data/DEGs/Toptable_CX_0.1_3.csv")
CX_0.1_24 <- read.csv("data/DEGs/Toptable_CX_0.1_24.csv")
CX_0.1_48 <- read.csv("data/DEGs/Toptable_CX_0.1_48.csv")

DOX_0.1_3  <- read.csv("data/DEGs/Toptable_DOX_0.1_3.csv")
DOX_0.1_24 <- read.csv("data/DEGs/Toptable_DOX_0.1_24.csv")
DOX_0.1_48 <- read.csv("data/DEGs/Toptable_DOX_0.1_48.csv")

# Combine All 0.1 Micromolar Datasets into a Single Dataframe
all_toptables_0.1 <- bind_rows(
  CX_0.1_3  %>% mutate(Drug = "CX.5461", Timepoint = "Timepoint: 3 hours"),
  CX_0.1_24 %>% mutate(Drug = "CX.5461", Timepoint = "Timepoint: 24 hours"),
  CX_0.1_48 %>% mutate(Drug = "CX.5461", Timepoint = "Timepoint: 48 hours"),
  DOX_0.1_3  %>% mutate(Drug = "DOX", Timepoint = "Timepoint: 3 hours"),
  DOX_0.1_24 %>% mutate(Drug = "DOX", Timepoint = "Timepoint: 24 hours"),
  DOX_0.1_48 %>% mutate(Drug = "DOX", Timepoint = "Timepoint: 48 hours")
)

# Convert `Entrez_ID` to Character to Avoid `%in%` Issues
all_toptables_0.1$Entrez_ID <- as.character(all_toptables_0.1$Entrez_ID)

# Assign Response Groups with Line Breaks for Better Plotting
all_toptables_0.1 <- all_toptables_0.1 %>%
  mutate(
    Response_Group = case_when(
      Entrez_ID %in% prob_1_0.1 ~ "Non response\n(0.1 micromolar)",
      Entrez_ID %in% prob_2_0.1 ~ "CX-DOX mid-late response\n(0.1 micromolar)",
      Entrez_ID %in% prob_3_0.1 ~ "DOX only mid-late response\n(0.1 micromolar)",
      TRUE ~ NA_character_
    )
  ) %>%
  filter(!is.na(Response_Group))

# Convert factors to ensure correct ordering (Reversed Order for Response Groups)
all_toptables_0.1 <- all_toptables_0.1 %>%
  mutate(
    Timepoint = factor(Timepoint, levels = c("Timepoint: 3 hours", "Timepoint: 24 hours", "Timepoint: 48 hours")),
    Response_Group = factor(Response_Group, levels = c(
      "DOX only mid-late response\n(0.1 micromolar)",
      "CX-DOX mid-late response\n(0.1 micromolar)",
      "Non response\n(0.1 micromolar)"  # Reversed Order
    ))
  )

# **Plot the Boxplot**
ggplot(all_toptables_0.1, aes(x = Drug, y = logFC, fill = Drug)) +
  geom_boxplot() +
  scale_fill_manual(values = c("CX.5461" = "blue", "DOX" = "red")) +
  facet_grid(Response_Group ~ Timepoint) +
  theme_bw() +
  labs(x = "Drugs", y = "Log Fold Change", title = "Log Fold Change for 0.1 Micromolar") +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    strip.text = element_text(size = 12, face = "bold")
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07
2990b21 sayanpaul01 2025-03-10
91a7ce4 sayanpaul01 2025-03-03
d9ff853 sayanpaul01 2025-03-03

📌 0.1 Micromolar mean logFC across timepoints

# Compute Mean logFC for Line Plot
data_summary <- all_toptables_0.1 %>%
  group_by(Response_Group, Drug, Timepoint) %>%
  dplyr::summarize(mean_logFC = mean(logFC, na.rm = TRUE), .groups = "drop") %>%
  as.data.frame()

# Convert factors to ensure correct ordering (Reversed Order for Response Groups)
data_summary <- data_summary %>%
  mutate(
    Timepoint = factor(Timepoint, levels = c("Timepoint: 3 hours", "Timepoint: 24 hours", "Timepoint: 48 hours")),
    Response_Group = factor(Response_Group, levels = c(
      "DOX only mid-late response\n(0.1 micromolar)",
      "CX-DOX mid-late response\n(0.1 micromolar)",
      "Non response\n(0.1 micromolar)"  # Reversed Order
    ))
  )

# **Plot the Line Plot**
ggplot(data_summary, aes(x = Timepoint, y = mean_logFC, group = Drug, color = Drug)) +
  geom_point(size = 3) +
  geom_line(size = 1.2) +
  scale_color_manual(values = c("CX.5461" = "blue", "DOX" = "red")) +
  ylim(-2, 1.5) +  # Adjust the Y-axis for better visualization
  facet_wrap(~ Response_Group, ncol = 1) +  # Facet by Response Group (Reversed Order)
  theme_bw() +
  labs(
    x = "Timepoints",
    y = "Mean Log Fold Change",
    title = "Mean Log Fold Change Across Response Groups (0.1 micromolar)",
    color = "Drug"
  ) +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.text = element_text(size = 12, color = "black"),
    strip.text = element_text(size = 12, color = "black", face = "bold"),
    legend.title = element_text(size = 14),
    legend.text = element_text(size = 12)
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07
2990b21 sayanpaul01 2025-03-10
91a7ce4 sayanpaul01 2025-03-03
d9ff853 sayanpaul01 2025-03-03

📌 Corrmotif Model 0.5 Micromolar

📌 Load Corrmotif Data

# Read the Corrmotif Results
Corrmotif <- read.csv("data/Corrmotif/CX5461.csv")
Corrmotif_df <- data.frame(Corrmotif)
rownames(Corrmotif_df) <- Corrmotif_df$Gene

# Filter for 0.5 Concentration Only
exprs.corrmotif <- as.matrix(Corrmotif_df[, grep("0.5", colnames(Corrmotif_df))])


# Read group and comparison IDs
groupid <- read.csv("data/Corrmotif/groupid.csv")
groupid_df <- data.frame(groupid[, grep("0.5", colnames(groupid))])


compid <- read.csv("data/Corrmotif/Compid.csv")
compid_df <- compid[compid$Cond1 %in% unique(as.numeric(groupid_df)) & compid$Cond2 %in% unique(as.numeric(groupid_df)), ]

📌 Corrmotif Model 0.5 Micromolar (K=1:8)

📌 Fit Corrmotif Model (K=1:8) (0.5 Micromolar)

# Fit Corrmotif Model (K = 1 to 8)
set.seed(11111)
motif.fitted_0.5 <- cormotiffit(
  exprs = exprs.corrmotif,
  groupid = groupid_df,
  compid = compid_df,
  K = 1:8,
  max.iter = 1000,
  BIC = TRUE,
  runtype = "logCPM"
)

gene_prob_0.5 <- motif.fitted_0.5$bestmotif$p.post
rownames(gene_prob_0.5) <- rownames(Corrmotif_df)
motif_prob_0.5 <- motif.fitted_0.5$bestmotif$clustlike
rownames(motif_prob_0.5) <- rownames(gene_prob_0.5)
write.csv(motif_prob_0.5,"data/cormotif_probability_genelist_0.5.csv")

📌 Plot motif (0.5 Micromolar)

cormotif_0.5 <- readRDS("data/Corrmotif/cormotif_0.5.RDS")

cormotif_0.5$bic
     K      bic
[1,] 1 352140.7
[2,] 2 346785.8
[3,] 3 344812.9
[4,] 4 344860.1
[5,] 5 344751.9
[6,] 6 344820.8
[7,] 7 344889.7
[8,] 8 344966.6
plotIC(cormotif_0.5)

Version Author Date
aab6b9f sayanpaul01 2025-04-07
41cd1be sayanpaul01 2025-02-27
plotMotif(cormotif_0.5)

Version Author Date
aab6b9f sayanpaul01 2025-04-07
41cd1be sayanpaul01 2025-02-27

📌 Extract Gene Probabilities (0.5 Micromolar)

# Extract posterior probabilities for genes
gene_prob_tran_0.5 <- cormotif_0.5$bestmotif$p.post

rownames(gene_prob_tran_0.5) <- rownames(Corrmotif_df)

# Define gene probability groups
prob_1_0.5  <- rownames(gene_prob_tran_0.5[(gene_prob_tran_0.5[,1] <0.5 & gene_prob_tran_0.5[,2] <0.5 & gene_prob_tran_0.5[,3] <0.5 & gene_prob_tran_0.5[,4] <0.5 & gene_prob_tran_0.5[,5] < 0.5 & gene_prob_tran_0.5[,6]<0.5),])
length(prob_1_0.5)
[1] 7134
prob_2_0.5  <- rownames(gene_prob_tran_0.5[(gene_prob_tran_0.5[,1] <0.5 & gene_prob_tran_0.5[,2] <0.5 & gene_prob_tran_0.5[,3] <0.5 & gene_prob_tran_0.5[,4] >0.5 & gene_prob_tran_0.5[,5] > 0.5 & gene_prob_tran_0.5[,6]>=0.02),])
length(prob_2_0.5)
[1] 179
prob_3_0.5  <- rownames(gene_prob_tran_0.5[(gene_prob_tran_0.5[,1] <0.5 & gene_prob_tran_0.5[,2] <0.5 & gene_prob_tran_0.5[,3] <0.5 & gene_prob_tran_0.5[,4] <0.5 & gene_prob_tran_0.5[,5] > 0.5 & gene_prob_tran_0.5[,6]>0.5),])
length(prob_3_0.5)
[1] 6450
prob_4_0.5  <- rownames(gene_prob_tran_0.5[(gene_prob_tran_0.5[,1] >= 0.1 & gene_prob_tran_0.5[,2] > 0.5 & gene_prob_tran_0.5[,3] > 0.5 & gene_prob_tran_0.5[,4] >= 0.02 & gene_prob_tran_0.5[,5] < 0.5 & gene_prob_tran_0.5[,6] < 0.5),]) 

length(prob_4_0.5)
[1] 142
prob_5_0.5  <- rownames(gene_prob_tran_0.5[(gene_prob_tran_0.5[,1] <0.5 & gene_prob_tran_0.5[,2] >0.5 & gene_prob_tran_0.5[,3] >0.5 & gene_prob_tran_0.5[,4] >=0.02 & gene_prob_tran_0.5[,4] <0.5 & gene_prob_tran_0.5[,5] > 0.5 & gene_prob_tran_0.5[,6]>0.5),])
length(prob_5_0.5)
[1] 221

📌 Distribution of Gene Clusters Identified by Corrmotif (0.5 micromolar)

# Load necessary library
library(ggplot2)

# Data
data <- data.frame(
  Category = c("Non response (0.5)", "DOX-specific response (0.5 µM)", "DOX only mid-late response (0.5 µM)", "CX + DOX (early) response (0.5 µM)", "DOX + CX (mid-late) response (0.5 µM)"),
  Value = c(7134,179,6450,142,221)
)

# Add values to category names (to be displayed in the legend)
data$Category <- paste0(data$Category, " (", data$Value, ")")

# Define custom colors with updated category names
custom_colors <- setNames(
  c("#FF9999", "#FF66CC", "#66B2FF", "#99FF99", "#FFD700"),
  data$Category  # Ensures color names match updated categories
)

# Create pie chart without number labels inside
ggplot(data, aes(x = "", y = Value, fill = Category)) +
  geom_bar(width = 1, stat = "identity") +
  coord_polar("y", start = 0) +
  labs(title = "Pie Chart (0.5 micromolar Corrmotif)", x = NULL, y = NULL) +
  theme_void() +
  scale_fill_manual(values = custom_colors)

Version Author Date
aab6b9f sayanpaul01 2025-04-07
2990b21 sayanpaul01 2025-03-10
d9ff853 sayanpaul01 2025-03-03
2de67e6 sayanpaul01 2025-02-27

📌 Combined pie charts for concentrations

# Load necessary libraries
library(ggplot2)
library(dplyr)

# Data for 0.1 µM
data_0.1 <- data.frame(
  Category = c("Non response", "CX-DOX mid-late response", "DOX only mid-late"),
  Value = c(12308, 415, 1551),
  Concentration = "0.1 µM"
)

# Data for 0.5 µM
data_0.5 <- data.frame(
  Category = c("Non response", "DOX specific response", "DOX only mid-late response", 
               "CX + DOX (early) response", "DOX + CX (mid-late) response"),
  Value = c(7134, 179, 6450, 142, 221),
  Concentration = "0.5 µM"
)

# Combine both datasets
combined_data <- bind_rows(data_0.1, data_0.5)

# Add values to category names (for legend only)
combined_data$Category_Legend <- paste0(combined_data$Category, " (", combined_data$Value, ")")

# Define custom colors for updated categories
custom_colors <- c(
  "Non response (12308)" = "#FF9999",
  "CX-DOX mid-late response (415)" = "#66B2FF",
  "DOX only mid-late (1551)" = "#99FF99",
  "Non response (7134)" = "#FF9999",
  "DOX specific response (179)" = "#FF66CC",
  "DOX only mid-late response (6450)" = "#99FF99",
  "CX + DOX (early) response (142)" = "#FFD700",
  "DOX + CX (mid-late) response (221)" = "#8A2BE2"
)

# Ensure categories appear in a specific order
combined_data$Category_Legend <- factor(combined_data$Category_Legend, levels = names(custom_colors))

# Create faceted pie charts without numbers inside the slices
pie_chart <- ggplot(combined_data, aes(x = "", y = Value, fill = Category_Legend)) +
  geom_bar(width = 1, stat = "identity") +
  coord_polar("y", start = 0) +
  facet_wrap(~ Concentration) +  # Facet by concentration (side-by-side)
  labs(title = "Corrmotif Pie Charts for 0.1 µM and 0.5 µM", x = NULL, y = NULL, fill = "Category") +
  theme_void() +
  theme(
    panel.border = element_rect(color = "black", fill = NA, linewidth = 1.5),  # Adds box around facets
    strip.background = element_rect(fill = "white", color = "black", linewidth = 1),  # Box for facet titles
    strip.text = element_text(size = 12, face = "bold", color = "black"),
    legend.title = element_text(size = 12, face = "bold"),  # Bold legend title
    legend.text = element_text(size = 10)  # Adjust legend text size
  ) +
  scale_fill_manual(values = custom_colors)

# Display the plot
print(pie_chart)

Version Author Date
aab6b9f sayanpaul01 2025-04-07
ef3a951 sayanpaul01 2025-03-09

📌 Save Corr-motif datasets for Gene Ontology analysis (0.5 Micromolar)

write.csv(data.frame(Entrez_ID = prob_1_0.5), "data/prob_1_0.5.csv", row.names = FALSE)
write.csv(data.frame(Entrez_ID = prob_2_0.5), "data/prob_2_0.5.csv", row.names = FALSE)
write.csv(data.frame(Entrez_ID = prob_3_0.5), "data/prob_3_0.5.csv", row.names = FALSE)
write.csv(data.frame(Entrez_ID = prob_4_0.5), "data/prob_4_0.5.csv", row.names = FALSE)
write.csv(data.frame(Entrez_ID = prob_5_0.5), "data/prob_5_0.5.csv", row.names = FALSE)

📌 0.5 Micromolar abs logFC

# Load Response Groups from CSV Files
prob_1_0.5 <- as.character(read.csv("data/prob_1_0.5.csv")$Entrez_ID)
prob_2_0.5 <- as.character(read.csv("data/prob_2_0.5.csv")$Entrez_ID)
prob_3_0.5 <- as.character(read.csv("data/prob_3_0.5.csv")$Entrez_ID)
prob_4_0.5 <- as.character(read.csv("data/prob_4_0.5.csv")$Entrez_ID)
prob_5_0.5 <- as.character(read.csv("data/prob_5_0.5.csv")$Entrez_ID)

# Load Datasets (Only 0.5 Micromolar)
CX_0.5_3  <- read.csv("data/DEGs/Toptable_CX_0.5_3.csv")
CX_0.5_24 <- read.csv("data/DEGs/Toptable_CX_0.5_24.csv")
CX_0.5_48 <- read.csv("data/DEGs/Toptable_CX_0.5_48.csv")

DOX_0.5_3  <- read.csv("data/DEGs/Toptable_DOX_0.5_3.csv")
DOX_0.5_24 <- read.csv("data/DEGs/Toptable_DOX_0.5_24.csv")
DOX_0.5_48 <- read.csv("data/DEGs/Toptable_DOX_0.5_48.csv")

# Convert datasets to DataFrames
Toptable_CX_0.5_3_df  <- data.frame(CX_0.5_3)
Toptable_CX_0.5_24_df <- data.frame(CX_0.5_24)
Toptable_CX_0.5_48_df <- data.frame(CX_0.5_48)

Toptable_DOX_0.5_3_df  <- data.frame(DOX_0.5_3)
Toptable_DOX_0.5_24_df <- data.frame(DOX_0.5_24)
Toptable_DOX_0.5_48_df <- data.frame(DOX_0.5_48)

# Combine All 0.5 Micromolar Datasets into a Single Dataframe
all_toptables_0.5 <- bind_rows(
  Toptable_CX_0.5_3_df  %>% mutate(Drug = "CX.5461", Timepoint = "3"),
  Toptable_CX_0.5_24_df %>% mutate(Drug = "CX.5461", Timepoint = "24"),
  Toptable_CX_0.5_48_df %>% mutate(Drug = "CX.5461", Timepoint = "48"),
  Toptable_DOX_0.5_3_df  %>% mutate(Drug = "DOX", Timepoint = "3"),
  Toptable_DOX_0.5_24_df %>% mutate(Drug = "DOX", Timepoint = "24"),
  Toptable_DOX_0.5_48_df %>% mutate(Drug = "DOX", Timepoint = "48")
)

# Convert `Entrez_ID` to Character to Avoid `%in%` Issues
all_toptables_0.5$Entrez_ID <- as.character(all_toptables_0.5$Entrez_ID)

# Assign Response Groups with Line Breaks for Better Plotting
all_toptables_0.5 <- all_toptables_0.5 %>%
  mutate(
    Response_Group = case_when(
      Entrez_ID %in% prob_1_0.5 ~ "Non response\n(0.5 micromolar)",
      Entrez_ID %in% prob_2_0.5 ~ "DOX-specific response\n(0.5 micromolar)",
      Entrez_ID %in% prob_3_0.5 ~ "DOX only mid-late response\n(0.5 micromolar)",
      Entrez_ID %in% prob_4_0.5 ~ "CX + DOX (early) response\n(0.5 micromolar)",
      Entrez_ID %in% prob_5_0.5 ~ "DOX + CX (mid-late) response\n(0.5 micromolar)",
      TRUE ~ NA_character_
    )
  )

# Remove NA Values (Genes Not in Response Groups)
all_toptables_0.5 <- all_toptables_0.5 %>% filter(!is.na(Response_Group))

# Compute Absolute logFC
all_toptables_0.5 <- all_toptables_0.5 %>%
  mutate(absFC = abs(logFC))

# Convert Factors for Proper Ordering (Reversed Order for Response Groups)
all_toptables_0.5 <- all_toptables_0.5 %>%
  mutate(
    Drug = factor(Drug, levels = c("CX.5461", "DOX")),
    Timepoint = factor(Timepoint, levels = c("3", "24", "48"),
                       labels = c("Timepoint: 3 hours", "Timepoint: 24 hours", "Timepoint: 48 hours")),
    Response_Group = factor(Response_Group,
                            levels = c("DOX + CX (mid-late) response\n(0.5 micromolar)",
                                       "CX + DOX (early) response\n(0.5 micromolar)",
                                       "DOX only mid-late response\n(0.5 micromolar)",
                                       "DOX-specific response\n(0.5 micromolar)",
                                       "Non response\n(0.5 micromolar)")) # Reversed Order
  )

# **Plot the Boxplot with Faceted Labels Wrapping Correctly**
ggplot(all_toptables_0.5, aes(x = Drug, y = absFC, fill = Drug)) +
  geom_boxplot() +
  scale_fill_manual(values = c("CX.5461" = "blue", "DOX" = "red")) +  # Custom color palette
  facet_grid(Response_Group ~ Timepoint, labeller = label_wrap_gen(width = 20)) +  # Ensure Proper Wrapping
  theme_bw() +
  labs(
    x = "Drugs",
    y = "|Log Fold Change|",
    title = "|Log Fold| for 0.5 micromolar"
  ) +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.line = element_line(linewidth = 1.5),
    strip.background = element_rect(fill = "gray"),  # Gray background for facet labels
    strip.text = element_text(size = 12, color = "black", face = "bold"),  # Bold styling for facet labels
    axis.text.x = element_text(size = 10, color = "black", angle = 15)
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07
2990b21 sayanpaul01 2025-03-10
91a7ce4 sayanpaul01 2025-03-03
d9ff853 sayanpaul01 2025-03-03

📌 0.5 Micromolar mean (Abs logFC) across timepoints

# Load required libraries
library(dplyr)
library(ggplot2)

# Load Response Groups from CSV Files
prob_1_0.5 <- as.character(read.csv("data/prob_1_0.5.csv")$Entrez_ID)
prob_2_0.5 <- as.character(read.csv("data/prob_2_0.5.csv")$Entrez_ID)
prob_3_0.5 <- as.character(read.csv("data/prob_3_0.5.csv")$Entrez_ID)
prob_4_0.5 <- as.character(read.csv("data/prob_4_0.5.csv")$Entrez_ID)
prob_5_0.5 <- as.character(read.csv("data/prob_5_0.5.csv")$Entrez_ID)

# Load Datasets (Only 0.5 Micromolar)
CX_0.5_3  <- read.csv("data/DEGs/Toptable_CX_0.5_3.csv")
CX_0.5_24 <- read.csv("data/DEGs/Toptable_CX_0.5_24.csv")
CX_0.5_48 <- read.csv("data/DEGs/Toptable_CX_0.5_48.csv")

DOX_0.5_3  <- read.csv("data/DEGs/Toptable_DOX_0.5_3.csv")
DOX_0.5_24 <- read.csv("data/DEGs/Toptable_DOX_0.5_24.csv")
DOX_0.5_48 <- read.csv("data/DEGs/Toptable_DOX_0.5_48.csv")

# Combine All 0.5 Micromolar Datasets into a Single Dataframe
all_toptables_0.5 <- bind_rows(
  CX_0.5_3  %>% mutate(Drug = "CX.5461", Timepoint = "3"),
  CX_0.5_24 %>% mutate(Drug = "CX.5461", Timepoint = "24"),
  CX_0.5_48 %>% mutate(Drug = "CX.5461", Timepoint = "48"),
  DOX_0.5_3  %>% mutate(Drug = "DOX", Timepoint = "3"),
  DOX_0.5_24 %>% mutate(Drug = "DOX", Timepoint = "24"),
  DOX_0.5_48 %>% mutate(Drug = "DOX", Timepoint = "48")
)

# Convert `Entrez_ID` to Character to Avoid `%in%` Issues
all_toptables_0.5$Entrez_ID <- as.character(all_toptables_0.5$Entrez_ID)

# Assign Response Groups with Line Breaks for Better Plotting
all_toptables_0.5 <- all_toptables_0.5 %>%
  mutate(
    Response_Group = case_when(
      Entrez_ID %in% prob_1_0.5 ~ "Non response\n(0.5 micromolar)",
      Entrez_ID %in% prob_2_0.5 ~ "DOX-specific response\n(0.5 micromolar)",
      Entrez_ID %in% prob_3_0.5 ~ "DOX only mid-late response\n(0.5 micromolar)",
      Entrez_ID %in% prob_4_0.5 ~ "CX + DOX (early) response\n(0.5 micromolar)",
      Entrez_ID %in% prob_5_0.5 ~ "DOX + CX (mid-late) response\n(0.5 micromolar)",
      TRUE ~ NA_character_
    )
  ) %>%
  filter(!is.na(Response_Group))  # Remove NA values

# Compute Mean Absolute logFC for Line Plot
data_summary <- all_toptables_0.5 %>%
  mutate(abs_logFC = abs(logFC)) %>%
  group_by(Response_Group, Drug, Timepoint) %>%
  dplyr::summarize(mean_abs_logFC = mean(abs_logFC, na.rm = TRUE), .groups = "drop") %>%
  as.data.frame()

# **Ensure all timepoints exist in the summary**
timepoints_full <- expand.grid(
  Response_Group = unique(all_toptables_0.5$Response_Group),
  Drug = unique(all_toptables_0.5$Drug),
  Timepoint = c("3", "24", "48")
)

# **Merge to keep missing timepoints**
data_summary <- full_join(timepoints_full, data_summary, by = c("Response_Group", "Drug", "Timepoint"))

# **Replace NA mean_abs_logFC with 0 if no genes were present**
data_summary$mean_abs_logFC[is.na(data_summary$mean_abs_logFC)] <- 0

# Convert Factors for Proper Ordering (Reversed Order for Response Groups)
data_summary <- data_summary %>%
  mutate(
    Timepoint = factor(Timepoint, levels = c("3", "24", "48"), labels = c("3 hours", "24 hours", "48 hours")),
    Response_Group = factor(Response_Group, levels = c(
      "DOX + CX (mid-late) response\n(0.5 micromolar)",
                                       "CX + DOX (early) response\n(0.5 micromolar)",
                                       "DOX only mid-late response\n(0.5 micromolar)",
                                       "DOX-specific response\n(0.5 micromolar)",
                                       "Non response\n(0.5 micromolar)"  # Reversed order
    ))
  )

# Define custom drug palette
drug_palette <- c("CX.5461" = "blue", "DOX" = "red")

# **Plot the Line Plot for Mean Absolute logFC**
ggplot(data_summary, aes(x = Timepoint, y = mean_abs_logFC, group = Drug, color = Drug)) +
  geom_point(size = 3) +
  geom_line(size = 1.2) +
  scale_color_manual(values = drug_palette) +
  ylim(0, 2.5) +  # Adjust the Y-axis for better visualization
  facet_wrap(~ Response_Group, ncol = 1) +  # Facet by Response Group (Reversed Order)
  theme_bw() +
  labs(
    x = "Timepoints",
    y = "Mean |Log Fold Change|",
    title = "Mean |Log Fold Change| Across Response Groups (0.5 micromolar)",
    color = "Drug"
  ) +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.text = element_text(size = 12, color = "black"),
    strip.text = element_text(size = 12, color = "black", face = "bold"),
    legend.title = element_text(size = 14),
    legend.text = element_text(size = 12)
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07
2990b21 sayanpaul01 2025-03-10
91a7ce4 sayanpaul01 2025-03-03
d9ff853 sayanpaul01 2025-03-03

📌 0.5 Micromolar logFC

# Load required libraries
library(dplyr)
library(ggplot2)

# Load Response Groups from CSV Files
prob_1_0.5 <- as.character(read.csv("data/prob_1_0.5.csv")$Entrez_ID)
prob_2_0.5 <- as.character(read.csv("data/prob_2_0.5.csv")$Entrez_ID)
prob_3_0.5 <- as.character(read.csv("data/prob_3_0.5.csv")$Entrez_ID)
prob_4_0.5 <- as.character(read.csv("data/prob_4_0.5.csv")$Entrez_ID)
prob_5_0.5 <- as.character(read.csv("data/prob_5_0.5.csv")$Entrez_ID)

# Load Datasets (Only 0.5 Micromolar)
CX_0.5_3  <- read.csv("data/DEGs/Toptable_CX_0.5_3.csv")
CX_0.5_24 <- read.csv("data/DEGs/Toptable_CX_0.5_24.csv")
CX_0.5_48 <- read.csv("data/DEGs/Toptable_CX_0.5_48.csv")

DOX_0.5_3  <- read.csv("data/DEGs/Toptable_DOX_0.5_3.csv")
DOX_0.5_24 <- read.csv("data/DEGs/Toptable_DOX_0.5_24.csv")
DOX_0.5_48 <- read.csv("data/DEGs/Toptable_DOX_0.5_48.csv")

# Combine All 0.5 Micromolar Datasets into a Single Dataframe
all_toptables_0.5 <- bind_rows(
  CX_0.5_3  %>% mutate(Drug = "CX.5461", Timepoint = "Timepoint: 3 hours"),
  CX_0.5_24 %>% mutate(Drug = "CX.5461", Timepoint = "Timepoint: 24 hours"),
  CX_0.5_48 %>% mutate(Drug = "CX.5461", Timepoint = "Timepoint: 48 hours"),
  DOX_0.5_3  %>% mutate(Drug = "DOX", Timepoint = "Timepoint: 3 hours"),
  DOX_0.5_24 %>% mutate(Drug = "DOX", Timepoint = "Timepoint: 24 hours"),
  DOX_0.5_48 %>% mutate(Drug = "DOX", Timepoint = "Timepoint: 48 hours")
)

# Convert `Entrez_ID` to Character to Avoid `%in%` Issues
all_toptables_0.5$Entrez_ID <- as.character(all_toptables_0.5$Entrez_ID)

# Assign Response Groups
all_toptables_0.5 <- all_toptables_0.5 %>%
  mutate(
    Response_Group = case_when(
      Entrez_ID %in% prob_1_0.5 ~ "Non response\n(0.5 micromolar)",
      Entrez_ID %in% prob_2_0.5 ~ "DOX-specific response\n(0.5 micromolar)",
      Entrez_ID %in% prob_3_0.5 ~ "DOX only mid-late response\n(0.5 micromolar)",
      Entrez_ID %in% prob_4_0.5 ~ "CX + DOX (early) response\n(0.5 micromolar)",
      Entrez_ID %in% prob_5_0.5 ~ "DOX + CX (mid-late) response\n(0.5 micromolar)",
      TRUE ~ NA_character_
    )
  ) %>%
  filter(!is.na(Response_Group))

# Convert factors to ensure correct ordering (Reversed Order for Response Groups)
all_toptables_0.5 <- all_toptables_0.5 %>%
  mutate(
    Timepoint = factor(Timepoint, levels = c("Timepoint: 3 hours", "Timepoint: 24 hours", "Timepoint: 48 hours")),
    Response_Group = factor(Response_Group, levels = c(
      "DOX + CX (mid-late) response\n(0.5 micromolar)",
                                       "CX + DOX (early) response\n(0.5 micromolar)",
                                       "DOX only mid-late response\n(0.5 micromolar)",
                                       "DOX-specific response\n(0.5 micromolar)",
                                       "Non response\n(0.5 micromolar)"  # Reversed Order
    ))
  )

# **Plot the Boxplot**
ggplot(all_toptables_0.5, aes(x = Drug, y = logFC, fill = Drug)) +
  geom_boxplot() +
  scale_fill_manual(values = c("CX.5461" = "blue", "DOX" = "red")) +
  facet_grid(Response_Group ~ Timepoint) +
  theme_bw() +
  labs(x = "Drugs", y = "Log Fold Change", title = "Log Fold Change for 0.5 Micromolar") +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    strip.text = element_text(size = 12, face = "bold")
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07
2990b21 sayanpaul01 2025-03-10
91a7ce4 sayanpaul01 2025-03-03
d9ff853 sayanpaul01 2025-03-03

📌 0.5 Micromolar mean logFC across timepoints

# Load Required Libraries
library(dplyr)
library(ggplot2)

# Load Response Groups from CSV Files
prob_1_0.5 <- as.character(read.csv("data/prob_1_0.5.csv")$Entrez_ID)
prob_2_0.5 <- as.character(read.csv("data/prob_2_0.5.csv")$Entrez_ID)
prob_3_0.5 <- as.character(read.csv("data/prob_3_0.5.csv")$Entrez_ID)
prob_4_0.5 <- as.character(read.csv("data/prob_4_0.5.csv")$Entrez_ID)
prob_5_0.5 <- as.character(read.csv("data/prob_5_0.5.csv")$Entrez_ID)

# Load Datasets (Only 0.5 Micromolar)
CX_0.5_3  <- read.csv("data/DEGs/Toptable_CX_0.5_3.csv")
CX_0.5_24 <- read.csv("data/DEGs/Toptable_CX_0.5_24.csv")
CX_0.5_48 <- read.csv("data/DEGs/Toptable_CX_0.5_48.csv")

DOX_0.5_3  <- read.csv("data/DEGs/Toptable_DOX_0.5_3.csv")
DOX_0.5_24 <- read.csv("data/DEGs/Toptable_DOX_0.5_24.csv")
DOX_0.5_48 <- read.csv("data/DEGs/Toptable_DOX_0.5_48.csv")

# Combine All 0.5 Micromolar Datasets into a Single Dataframe
all_toptables_0.5 <- bind_rows(
  CX_0.5_3  %>% mutate(Drug = "CX.5461", Timepoint = "Timepoint: 3 hours"),
  CX_0.5_24 %>% mutate(Drug = "CX.5461", Timepoint = "Timepoint: 24 hours"),
  CX_0.5_48 %>% mutate(Drug = "CX.5461", Timepoint = "Timepoint: 48 hours"),
  DOX_0.5_3  %>% mutate(Drug = "DOX", Timepoint = "Timepoint: 3 hours"),
  DOX_0.5_24 %>% mutate(Drug = "DOX", Timepoint = "Timepoint: 24 hours"),
  DOX_0.5_48 %>% mutate(Drug = "DOX", Timepoint = "Timepoint: 48 hours")
)

# Convert `Entrez_ID` to Character to Avoid `%in%` Issues
all_toptables_0.5$Entrez_ID <- as.character(all_toptables_0.5$Entrez_ID)

# Assign Response Groups with Line Breaks for Better Plotting
all_toptables_0.5 <- all_toptables_0.5 %>%
  mutate(
    Response_Group = case_when(
      Entrez_ID %in% prob_1_0.5 ~ "Non response\n(0.5 micromolar)",
      Entrez_ID %in% prob_2_0.5 ~ "DOX-specific response\n(0.5 micromolar)",
      Entrez_ID %in% prob_3_0.5 ~ "DOX only mid-late response\n(0.5 micromolar)",
      Entrez_ID %in% prob_4_0.5 ~ "CX + DOX (early) response\n(0.5 micromolar)",
      Entrez_ID %in% prob_5_0.5 ~ "DOX + CX (mid-late) response\n(0.5 micromolar)",
      TRUE ~ NA_character_
    )
  ) %>%
  filter(!is.na(Response_Group))

# Compute Mean logFC for Line Plot
data_summary_0.5 <- all_toptables_0.5 %>%
  group_by(Response_Group, Drug, Timepoint) %>%
  dplyr::summarize(mean_logFC = mean(logFC, na.rm = TRUE), .groups = "drop") %>%
  as.data.frame()

# **Ensure all timepoints exist in the summary**
timepoints_full <- expand.grid(
  Response_Group = unique(all_toptables_0.5$Response_Group),
  Drug = unique(all_toptables_0.5$Drug),
  Timepoint = c("Timepoint: 3 hours", "Timepoint: 24 hours", "Timepoint: 48 hours")
)

# **Merge to keep missing timepoints**
data_summary_0.5 <- full_join(timepoints_full, data_summary_0.5, by = c("Response_Group", "Drug", "Timepoint"))

# **Replace NA mean_logFC with 0 if no genes were present**
data_summary_0.5$mean_logFC[is.na(data_summary_0.5$mean_logFC)] <- 0

# Convert Factors for Proper Ordering (Reversed Order for Response Groups)
data_summary_0.5 <- data_summary_0.5 %>%
  mutate(
    Timepoint = factor(Timepoint, levels = c("Timepoint: 3 hours", "Timepoint: 24 hours", "Timepoint: 48 hours")),
    Response_Group = factor(Response_Group, levels = c(
      "DOX + CX (mid-late) response\n(0.5 micromolar)",
                                       "CX + DOX (early) response\n(0.5 micromolar)",
                                       "DOX only mid-late response\n(0.5 micromolar)",
                                       "DOX-specific response\n(0.5 micromolar)",
                                       "Non response\n(0.5 micromolar)"  # Reversed Order
    ))
  )

# Define custom drug palette
drug_palette <- c("CX.5461" = "blue", "DOX" = "red")

# **Plot the Line Plot for Mean logFC**
ggplot(data_summary_0.5, aes(x = Timepoint, y = mean_logFC, group = Drug, color = Drug)) +
  geom_point(size = 3) +
  geom_line(size = 1.2) +
  scale_color_manual(values = drug_palette) +
  ylim(-2, 1.5) +  # Adjust the Y-axis for better visualization
  facet_wrap(~ Response_Group, ncol = 1) +  # Facet by Response Group (Reversed Order)
  theme_bw() +
  labs(
    x = "Timepoints",
    y = "Mean Log Fold Change",
    title = "Mean Log Fold Change Across Response Groups (0.5 micromolar)",
    color = "Drug"
  ) +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.text = element_text(size = 12, color = "black"),
    strip.text = element_text(size = 12, color = "black", face = "bold"),
    legend.title = element_text(size = 14),
    legend.text = element_text(size = 12)
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07
2990b21 sayanpaul01 2025-03-10
91a7ce4 sayanpaul01 2025-03-03
d9ff853 sayanpaul01 2025-03-03

📌 Proportion of DNA Damage Repair Genes (0.1 micromolar)

# Load necessary libraries
library(dplyr)
library(ggplot2)
library(tidyr)
Warning: package 'tidyr' was built under R version 4.3.3
library(org.Hs.eg.db)
Warning: package 'AnnotationDbi' was built under R version 4.3.2
Warning: package 'IRanges' was built under R version 4.3.1
Warning: package 'S4Vectors' was built under R version 4.3.1
# **🔹 Read DNA Damage Repair Gene List**
DNA_damage <- read.csv("data/DNA_Damage.csv", stringsAsFactors = FALSE)

# Convert gene symbols to Entrez IDs
DNA_damage <- DNA_damage %>%
  mutate(Entrez_ID = mapIds(org.Hs.eg.db,
                            keys = DNA_damage$Symbol,
                            column = "ENTREZID",
                            keytype = "SYMBOL",
                            multiVals = "first"))

DNA_damage_genes <- na.omit(DNA_damage$Entrez_ID)

# **🔹 Load Corrmotif Groups for 0.1 Concentration**
prob_groups_0.1 <- list(
  "Non Response (0.1)" = read.csv("data/prob_1_0.1.csv")$Entrez_ID,
   "CX_DOX mid-late (0.1)" = read.csv("data/prob_2_0.1.csv")$Entrez_ID,
  "DOX only mid-late (0.1)"= read.csv("data/prob_3_0.1.csv")$Entrez_ID
)

# **🔹 Create Dataframe for Corrmotif Groups**
corrmotif_df_0.1 <- bind_rows(
  lapply(prob_groups_0.1, function(ids) {
    data.frame(Entrez_ID = ids)
  }),
  .id = "Response_Group"
)

# **🔹 Match Entrez_IDs with DNA Damage Repair Genes**
corrmotif_df_0.1 <- corrmotif_df_0.1 %>%
  mutate(DNA_Damage = ifelse(Entrez_ID %in% DNA_damage_genes, "Yes", "No"))

# **🔹 Count DNA Damage Repair Genes in Each Response Group**
proportion_data <- corrmotif_df_0.1 %>%
  group_by(Response_Group, DNA_Damage) %>%
  summarise(Count = n(), .groups = "drop") %>%
  group_by(Response_Group) %>%
  mutate(Percentage = (Count / sum(Count)) * 100)

# **🔹 Ensure "Yes" is at the Bottom and "No" at the Top**
proportion_data$DNA_Damage <- factor(proportion_data$DNA_Damage, levels = c("Yes", "No"))

# **🔹 Set Order of Response Groups for X-axis**
response_order <- c("Non Response (0.1)", "CX_DOX mid-late (0.1)","DOX only mid-late (0.1)")
proportion_data$Response_Group <- factor(proportion_data$Response_Group, levels = response_order)

# **🔹 Perform Chi-Square Tests for "DOX only mid-late (0.1)" and "CX_DOX mid-late (0.1)" vs "Non Response (0.1)"**
non_response_counts <- proportion_data %>%
  filter(Response_Group == "Non Response (0.1)") %>%
  dplyr::select(DNA_Damage, Count) %>%
  {setNames(.$Count, .$DNA_Damage)}  # Convert to named vector

chi_results <- proportion_data %>%
  filter(Response_Group %in% c("CX_DOX mid-late (0.1)","DOX only mid-late (0.1)")) %>%
  group_by(Response_Group) %>%
  summarise(
    p_value = {
      group_counts <- Count[DNA_Damage %in% c("Yes", "No")]
      if (!"Yes" %in% DNA_Damage) group_counts <- c(group_counts, 0)
      if (!"No" %in% DNA_Damage) group_counts <- c(0, group_counts)

      contingency_table <- matrix(c(
        group_counts[1], group_counts[2],
        non_response_counts["Yes"], non_response_counts["No"]
      ), nrow = 2, byrow = TRUE)

      # Perform chi-square test if all values are valid
      if (all(contingency_table >= 0 & is.finite(contingency_table))) {
        chisq.test(contingency_table)$p.value
      } else {
        NA
      }
    },
    .groups = "drop"
  ) %>%
  mutate(Significance = ifelse(!is.na(p_value) & p_value < 0.05, "*", ""))

# **🔹 Merge Chi-Square Results into Proportion Data**
proportion_data <- proportion_data %>%
  left_join(chi_results %>% dplyr::select(Response_Group, Significance), by = "Response_Group")

# **🔹 Set Star Position Uniform Across Groups at 105%**
star_positions <- data.frame(
  Response_Group = c("CX_DOX mid-late (0.1)", "DOX only mid-late (0.1)"),
  y_pos = 105,  # Fixed at 105% of Y-axis
  Significance = chi_results$Significance
)

# **🔹 Generate Proportion Plot with Chi-Square Stars**
ggplot(proportion_data, aes(x = Response_Group, y = Percentage, fill = DNA_Damage)) +
  geom_bar(stat = "identity", position = "stack") +  # Stacked bars
  geom_text(
    data = star_positions,
    aes(x = Response_Group, y = y_pos, label = Significance),  # Place stars at fixed 105%
    inherit.aes = FALSE,
    size = 6, color = "black", fontface = "bold", vjust = 0  # Keeps stars aligned
  ) +
  scale_y_continuous(labels = scales::percent_format(scale = 1), limits = c(0, 110)) +  # Fixed Y-axis to 100%
  scale_fill_manual(values = c("Yes" = "#e41a1c", "No" = "#377eb8")) +  # Yes (Red), No (Blue)
  labs(
    title = "Proportion of DNA Damage Repair Genes in\n0.1 Corrmotif Response Groups",
    x = "Response Groups (0.1 Concentration)",
    y = "Percentage",
    fill = "DNA Damage Repair"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.text.x = element_text(size = 10, angle = 45, hjust = 1),
    legend.title = element_blank(),
    panel.border = element_rect(color = "black", fill = NA, linewidth = 1.2),
    strip.background = element_blank(),
    strip.text = element_text(size = 12, face = "bold")
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07
81247f6 sayanpaul01 2025-03-06
96d0db1 sayanpaul01 2025-03-05

📌 Proportion of DNA Damage Repair Genes (0.5 micromolar)

# Load necessary libraries
library(dplyr)
library(ggplot2)
library(tidyr)
library(org.Hs.eg.db)

# **🔹 Read DNA Damage Repair Gene List**
DNA_damage <- read.csv("data/DNA_Damage.csv", stringsAsFactors = FALSE)

# Convert gene symbols to Entrez IDs
DNA_damage <- DNA_damage %>%
  mutate(Entrez_ID = mapIds(org.Hs.eg.db,
                            keys = DNA_damage$Symbol,
                            column = "ENTREZID",
                            keytype = "SYMBOL",
                            multiVals = "first"))

DNA_damage_genes <- na.omit(DNA_damage$Entrez_ID)

# **🔹 Load Corrmotif Groups for 0.5 Concentration**
prob_groups_0.5 <- list(
  "Non Response (0.5)" = read.csv("data/prob_1_0.5.csv")$Entrez_ID,
  "DOX-specific response (0.5)" = read.csv("data/prob_2_0.5.csv")$Entrez_ID,
  "DOX only mid-late response (0.5)" = read.csv("data/prob_3_0.5.csv")$Entrez_ID,
  "CX DOX (early) response (0.5)" = read.csv("data/prob_4_0.5.csv")$Entrez_ID,
  "DOX + CX (mid-late) response (0.5)" = read.csv("data/prob_5_0.5.csv")$Entrez_ID
)

# **🔹 Create Dataframe for Corrmotif Groups**
corrmotif_df_0.5 <- bind_rows(
  lapply(prob_groups_0.5, function(ids) {
    data.frame(Entrez_ID = ids)
  }),
  .id = "Response_Group"
)

# **🔹 Match Entrez_IDs with DNA Damage Repair Genes**
corrmotif_df_0.5 <- corrmotif_df_0.5 %>%
  mutate(DNA_Damage = ifelse(Entrez_ID %in% DNA_damage_genes, "Yes", "No"))

# **🔹 Count DNA Damage Repair Genes in Each Response Group**
proportion_data <- corrmotif_df_0.5 %>%
  group_by(Response_Group, DNA_Damage) %>%
  summarise(Count = n(), .groups = "drop") %>%
  group_by(Response_Group) %>%
  mutate(Percentage = (Count / sum(Count)) * 100)

# **🔹 Ensure "Yes" is at the Bottom and "No" at the Top**
proportion_data$DNA_Damage <- factor(proportion_data$DNA_Damage, levels = c("Yes", "No"))

# **🔹 Set Order of Response Groups for X-axis**
response_order <- c("Non Response (0.5)", "DOX-specific response (0.5)", "DOX only mid-late response (0.5)", 
                    "CX DOX (early) response (0.5)", "DOX + CX (mid-late) response (0.5)")
proportion_data$Response_Group <- factor(proportion_data$Response_Group, levels = response_order)

# **🔹 Perform Chi-Square Tests for Each Response Group vs Non-Response**
non_response_counts <- proportion_data %>%
  filter(Response_Group == "Non Response (0.5)") %>%
  dplyr::select(DNA_Damage, Count) %>%
  {setNames(.$Count, .$DNA_Damage)}  # Convert to named vector

# **Comparing Each Group Against "Non Response (0.5)"**
chi_results <- proportion_data %>%
  filter(Response_Group %in% c("DOX-specific response (0.5)", "DOX only mid-late response (0.5)", 
                               "CX DOX (early) response (0.5)", "DOX + CX (mid-late) response (0.5)")) %>%
  group_by(Response_Group) %>%
  summarise(
    p_value = {
      group_counts <- Count[DNA_Damage %in% c("Yes", "No")]
      if (!"Yes" %in% DNA_Damage) group_counts <- c(group_counts, 0)
      if (!"No" %in% DNA_Damage) group_counts <- c(0, group_counts)

      contingency_table <- matrix(c(
        group_counts[1], group_counts[2],  # Response group counts
        non_response_counts["Yes"], non_response_counts["No"]  # Non-response counts
      ), nrow = 2, byrow = TRUE)

      # Perform chi-square test if all values are valid
      if (all(contingency_table >= 0 & is.finite(contingency_table))) {
        chisq.test(contingency_table)$p.value
      } else {
        NA
      }
    },
    .groups = "drop"
  ) %>%
  mutate(Significance = ifelse(!is.na(p_value) & p_value < 0.05, "*", ""))

# **🔹 Merge Chi-Square Results into Proportion Data**
proportion_data <- proportion_data %>%
  left_join(chi_results %>% dplyr::select(Response_Group, Significance), by = "Response_Group")

# **🔹 Set Star Position Uniform Across Groups at 105%**
star_positions <- data.frame(
  Response_Group = c("DOX-specific response (0.5)", "DOX only mid-late response (0.5)", 
                     "CX DOX (early) response (0.5)", "DOX + CX (mid-late) response (0.5)"),
  y_pos = 105,  # Fixed at 105% of Y-axis
  Significance = chi_results$Significance
)

# **🔹 Generate Proportion Plot with Chi-Square Stars**
ggplot(proportion_data, aes(x = Response_Group, y = Percentage, fill = DNA_Damage)) +
  geom_bar(stat = "identity", position = "stack") +  # Stacked bars
  geom_text(
    data = star_positions,
    aes(x = Response_Group, y = y_pos, label = Significance),  # Place stars at fixed 105%
    inherit.aes = FALSE,
    size = 6, color = "black", fontface = "bold", vjust = 0  # Keeps stars aligned
  ) +
  scale_y_continuous(labels = scales::percent_format(scale = 1), limits = c(0, 110)) +  # **Y-axis now limited to 110% for visibility**
  scale_fill_manual(values = c("Yes" = "#e41a1c", "No" = "#377eb8")) +  # Yes (Red), No (Blue)
  labs(
    title = "Proportion of DNA Damage Repair Genes in\n0.5 Corrmotif Response Groups",
    x = "Response Groups (0.5 Concentration)",
    y = "Percentage",
    fill = "DNA Damage Repair Genes"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.text.x = element_text(size = 10, angle = 45, hjust = 1),
    legend.title = element_blank(),
    panel.border = element_rect(color = "black", fill = NA, linewidth = 1.2),
    strip.background = element_blank(),
    strip.text = element_text(size = 12, face = "bold")
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07
96d0db1 sayanpaul01 2025-03-05

📌 Proportion of P53 target Genes Genes (0.1 micromolar)

# Load necessary libraries
library(dplyr)
library(ggplot2)
library(tidyr)
library(org.Hs.eg.db)

# **🔹 Read P53 Target Gene List**
P53_Target <- read.csv("data/P53_Target.csv", stringsAsFactors = FALSE)

# Convert gene symbols to Entrez IDs
P53_Target <- P53_Target %>%
  mutate(Entrez_ID = mapIds(org.Hs.eg.db,
                            keys = P53_Target$Symbol,
                            column = "ENTREZID",
                            keytype = "SYMBOL",
                            multiVals = "first"))

P53_Target_genes <- na.omit(P53_Target$Entrez_ID)

# **🔹 Load Corrmotif Groups for 0.1 Concentration**
prob_groups_0.1 <- list(
  "Non Response (0.1)" = read.csv("data/prob_1_0.1.csv")$Entrez_ID,
  "CX_DOX mid-late (0.1)" = read.csv("data/prob_2_0.1.csv")$Entrez_ID,
 "DOX only mid-late (0.1)"= read.csv("data/prob_3_0.1.csv")$Entrez_ID
)

# **🔹 Create Dataframe for Corrmotif Groups**
corrmotif_df_0.1 <- bind_rows(
  lapply(prob_groups_0.1, function(ids) {
    data.frame(Entrez_ID = ids)
  }),
  .id = "Response_Group"
)

# **🔹 Match Entrez_IDs with P53 Target Genes**
corrmotif_df_0.1 <- corrmotif_df_0.1 %>%
  mutate(P53_Target = ifelse(Entrez_ID %in% P53_Target_genes, "Yes", "No"))

# **🔹 Count P53 Target Genes in Each Response Group**
proportion_data <- corrmotif_df_0.1 %>%
  group_by(Response_Group, P53_Target) %>%
  summarise(Count = n(), .groups = "drop") %>%
  group_by(Response_Group) %>%
  mutate(Percentage = (Count / sum(Count)) * 100)

# **🔹 Ensure "Yes" is at the Bottom and "No" at the Top**
proportion_data$P53_Target <- factor(proportion_data$P53_Target, levels = c("Yes", "No"))

# **🔹 Set Order of Response Groups for X-axis**
response_order <- c("Non Response (0.1)", "CX_DOX mid-late (0.1)", "DOX only mid-late (0.1)")
proportion_data$Response_Group <- factor(proportion_data$Response_Group, levels = response_order)

# **🔹 Perform Chi-Square Tests for "DOX only mid-late (0.1)" and "CX_DOX mid-late (0.1)" vs "Non Response (0.1)"**
non_response_counts <- proportion_data %>%
  filter(Response_Group == "Non Response (0.1)") %>%
  dplyr::select(P53_Target, Count) %>%
  {setNames(.$Count, .$P53_Target)}  # Convert to named vector

chi_results <- proportion_data %>%
  filter(Response_Group %in% c("CX_DOX mid-late (0.1)","DOX only mid-late (0.1)")) %>%
  group_by(Response_Group) %>%
  summarise(
    p_value = {
      group_counts <- Count[P53_Target %in% c("Yes", "No")]
      if (!"Yes" %in% P53_Target) group_counts <- c(group_counts, 0)
      if (!"No" %in% P53_Target) group_counts <- c(0, group_counts)

      contingency_table <- matrix(c(
        group_counts[1], group_counts[2],
        non_response_counts["Yes"], non_response_counts["No"]
      ), nrow = 2, byrow = TRUE)

      # Perform chi-square test if all values are valid
      if (all(contingency_table >= 0 & is.finite(contingency_table))) {
        chisq.test(contingency_table)$p.value
      } else {
        NA
      }
    },
    .groups = "drop"
  ) %>%
  mutate(Significance = ifelse(!is.na(p_value) & p_value < 0.05, "*", ""))

# **🔹 Merge Chi-Square Results into Proportion Data**
proportion_data <- proportion_data %>%
  left_join(chi_results %>% dplyr::select(Response_Group, Significance), by = "Response_Group")

# **🔹 Set Star Position Uniform Across Groups at 105%**
star_positions <- data.frame(
  Response_Group = c("CX_DOX mid-late (0.1)","DOX only mid-late (0.1)"),
  y_pos = 105,  # Fixed at 105% of Y-axis
  Significance = chi_results$Significance
)

# **🔹 Generate Proportion Plot with Chi-Square Stars**
ggplot(proportion_data, aes(x = Response_Group, y = Percentage, fill = P53_Target)) +
  geom_bar(stat = "identity", position = "stack") +  # Stacked bars
  geom_text(
    data = star_positions,
    aes(x = Response_Group, y = y_pos, label = Significance),  # Place stars at fixed 105%
    inherit.aes = FALSE,
    size = 6, color = "black", fontface = "bold", vjust = 0  # Keeps stars aligned
  ) +
  scale_y_continuous(labels = scales::percent_format(scale = 1), limits = c(0, 110)) +  # Fixed Y-axis to 100%
  scale_fill_manual(values = c("Yes" = "#e41a1c", "No" = "#377eb8")) +  # Yes (Red), No (Blue)
  labs(
    title = "Proportion of P53 Target Genes in\n0.1 Corrmotif Response Groups",
    x = "Response Groups (0.1 Concentration)",
    y = "Percentage",
    fill = "P53 Target Genes"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.text.x = element_text(size = 10, angle = 45, hjust = 1),
    legend.title = element_blank(),
    panel.border = element_rect(color = "black", fill = NA, linewidth = 1.2),
    strip.background = element_blank(),
    strip.text = element_text(size = 12, face = "bold")
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07
81247f6 sayanpaul01 2025-03-06
96d0db1 sayanpaul01 2025-03-05

📌 Proportion of P53 target Genes (0.5 micromolar)

# Load necessary libraries
library(dplyr)
library(ggplot2)
library(tidyr)
library(org.Hs.eg.db)

# **🔹 Read P53 Target Gene List**
P53_Target <- read.csv("data/P53_Target.csv", stringsAsFactors = FALSE)

# Convert gene symbols to Entrez IDs
P53_Target <- P53_Target %>%
  mutate(Entrez_ID = mapIds(org.Hs.eg.db,
                            keys = P53_Target$Symbol,
                            column = "ENTREZID",
                            keytype = "SYMBOL",
                            multiVals = "first"))

P53_Target_genes <- na.omit(P53_Target$Entrez_ID)

# **🔹 Load Corrmotif Groups for 0.5 Concentration**
prob_groups_0.5 <- list(
  "Non Response (0.5)" = read.csv("data/prob_1_0.5.csv")$Entrez_ID,
  "DOX-specific response (0.5)" = read.csv("data/prob_2_0.5.csv")$Entrez_ID,
  "DOX only mid-late response (0.5)" = read.csv("data/prob_3_0.5.csv")$Entrez_ID,
  "CX DOX (early) response (0.5)" = read.csv("data/prob_4_0.5.csv")$Entrez_ID,
  "DOX + CX (mid-late) response (0.5)" = read.csv("data/prob_5_0.5.csv")$Entrez_ID
)

# **🔹 Create Dataframe for Corrmotif Groups**
corrmotif_df_0.5 <- bind_rows(
  lapply(prob_groups_0.5, function(ids) {
    data.frame(Entrez_ID = ids)
  }),
  .id = "Response_Group"
)

# **🔹 Match Entrez_IDs with P53 Target Genes**
corrmotif_df_0.5 <- corrmotif_df_0.5 %>%
  mutate(P53_Target = ifelse(Entrez_ID %in% P53_Target_genes, "Yes", "No"))

# **🔹 Count P53 Target Genes in Each Response Group**
proportion_data <- corrmotif_df_0.5 %>%
  group_by(Response_Group, P53_Target) %>%
  summarise(Count = n(), .groups = "drop") %>%
  group_by(Response_Group) %>%
  mutate(Percentage = (Count / sum(Count)) * 100)

# **🔹 Ensure "Yes" is at the Bottom and "No" at the Top**
proportion_data$P53_Target <- factor(proportion_data$P53_Target, levels = c("Yes", "No"))

# **🔹 Set Order of Response Groups for X-axis**
response_order <- c("Non Response (0.5)", "DOX-specific response (0.5)", "DOX only mid-late response (0.5)", 
                    "CX DOX (early) response (0.5)", "DOX + CX (mid-late) response (0.5)")
proportion_data$Response_Group <- factor(proportion_data$Response_Group, levels = response_order)

# **🔹 Perform Chi-Square Tests for Each Response Group vs Non-Response**
non_response_counts <- proportion_data %>%
  filter(Response_Group == "Non Response (0.5)") %>%
  dplyr::select(P53_Target, Count) %>%
  {setNames(.$Count, .$P53_Target)}  # Convert to named vector

# **Comparing Each Group Against "Non Response (0.5)"**
chi_results <- proportion_data %>%
  filter(Response_Group %in% c("DOX-specific response (0.5)", "DOX only mid-late response (0.5)", 
                               "CX DOX (early) response (0.5)", "DOX + CX (mid-late) response (0.5)")) %>%
  group_by(Response_Group) %>%
  summarise(
    p_value = {
      group_counts <- Count[P53_Target %in% c("Yes", "No")]
      if (!"Yes" %in% P53_Target) group_counts <- c(group_counts, 0)
      if (!"No" %in% P53_Target) group_counts <- c(0, group_counts)

      contingency_table <- matrix(c(
        group_counts[1], group_counts[2],  # Response group counts
        non_response_counts["Yes"], non_response_counts["No"]  # Non-response counts
      ), nrow = 2, byrow = TRUE)

      # Perform chi-square test if all values are valid
      if (all(contingency_table >= 0 & is.finite(contingency_table))) {
        chisq.test(contingency_table)$p.value
      } else {
        NA
      }
    },
    .groups = "drop"
  ) %>%
  mutate(Significance = ifelse(!is.na(p_value) & p_value < 0.05, "*", ""))
Warning: There was 1 warning in `summarise()`.
ℹ In argument: `p_value = { ... }`.
ℹ In group 3: `Response_Group = CX DOX (early) response (0.5)`.
Caused by warning in `chisq.test()`:
! Chi-squared approximation may be incorrect
# **🔹 Merge Chi-Square Results into Proportion Data**
proportion_data <- proportion_data %>%
  left_join(chi_results %>% dplyr::select(Response_Group, Significance), by = "Response_Group")

# **🔹 Set Star Position Uniform Across Groups at 105%**
star_positions <- data.frame(
  Response_Group = c("DOX-specific response (0.5)", "DOX only mid-late response (0.5)", 
                     "CX DOX (early) response (0.5)", "DOX + CX (mid-late) response (0.5)"),
  y_pos = 105,  # Fixed at 105% of Y-axis
  Significance = chi_results$Significance
)

# **🔹 Generate Proportion Plot with Chi-Square Stars**
ggplot(proportion_data, aes(x = Response_Group, y = Percentage, fill = P53_Target)) +
  geom_bar(stat = "identity", position = "stack") +  # Stacked bars
  geom_text(
    data = star_positions,
    aes(x = Response_Group, y = y_pos, label = Significance),  # Place stars at fixed 105%
    inherit.aes = FALSE,
    size = 6, color = "black", fontface = "bold", vjust = 0  # Keeps stars aligned
  ) +
  scale_y_continuous(labels = scales::percent_format(scale = 1), limits = c(0, 110)) +  # **Y-axis now limited to 110% for visibility**
  scale_fill_manual(values = c("Yes" = "#e41a1c", "No" = "#377eb8")) +  # Yes (Red), No (Blue)
  labs(
    title = "Proportion of P53 Target Genes in\n0.5 Corrmotif Response Groups",
    x = "Response Groups (0.5 Concentration)",
    y = "Percentage",
    fill = "P53 Target Genes"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.text.x = element_text(size = 10, angle = 45, hjust = 1),
    legend.title = element_blank(),
    panel.border = element_rect(color = "black", fill = NA, linewidth = 1.2),
    strip.background = element_blank(),
    strip.text = element_text(size = 12, face = "bold")
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07
96d0db1 sayanpaul01 2025-03-05

📌 Proportion of Heart Specific Genes Genes (0.1 micromolar)

# Load Required Libraries
library(dplyr)
library(ggplot2)
library(org.Hs.eg.db)
library(AnnotationDbi)

# ----------------- Load Heart-Specific Genes -----------------
heart_genes <- read.csv("data/Human_Heart_Genes.csv", stringsAsFactors = FALSE)

# Convert SYMBOL to Entrez ID
heart_genes$Entrez_ID <- mapIds(
  org.Hs.eg.db,
  keys = heart_genes$Gene,
  column = "ENTREZID",
  keytype = "SYMBOL",
  multiVals = "first"
)
heart_entrez_ids <- na.omit(heart_genes$Entrez_ID)

# ----------------- Load CorrMotif Groups for 0.1 µM -----------------
prob_1_0.1 <- as.character(read.csv("data/prob_1_0.1.csv")$Entrez_ID)
prob_2_0.1 <- as.character(read.csv("data/prob_2_0.1.csv")$Entrez_ID)
prob_3_0.1 <- as.character(read.csv("data/prob_3_0.1.csv")$Entrez_ID)

# Combine into one dataframe
all_ids_0.1 <- unique(c(prob_1_0.1, prob_2_0.1, prob_3_0.1))
df_0.1 <- data.frame(Entrez_ID = all_ids_0.1, stringsAsFactors = FALSE)

# ----------------- Annotate Response Group -----------------
df_0.1 <- df_0.1 %>%
  mutate(
    Response_Group = case_when(
      Entrez_ID %in% prob_1_0.1 ~ "Non response\n(0.1 µM)",
      Entrez_ID %in% prob_2_0.1 ~ "CX-DOX mid-late response\n(0.1 µM)",
      Entrez_ID %in% prob_3_0.1 ~ "DOX only mid-late response\n(0.1 µM)"
    ),
    Category = ifelse(Entrez_ID %in% heart_entrez_ids, "Heart-specific Genes", "Non-Heart-specific Genes")
  )

# ----------------- Proportion Calculation -----------------
proportion_0.1 <- df_0.1 %>%
  group_by(Response_Group, Category) %>%
  summarise(Count = n(), .groups = "drop") %>%
  group_by(Response_Group) %>%
  mutate(Percentage = Count / sum(Count) * 100)

# ----------------- Chi-square Test (Optional) -----------------
ref_counts_0.1 <- proportion_0.1 %>%
  dplyr::ungroup() %>%
  dplyr::filter(Response_Group == "Non response\n(0.1 µM)") %>%
  dplyr::select(Category, Count) %>%
  {setNames(.$Count, .$Category)}

chi_0.1 <- proportion_0.1 %>%
  filter(Response_Group != "Non response\n(0.1 µM)") %>%
  group_by(Response_Group) %>%
  summarise(
    p_value = {
      group_counts <- Count[Category %in% c("Heart-specific Genes", "Non-Heart-specific Genes")]
      if (length(group_counts) < 2) group_counts <- c(group_counts, 0)
      contingency_table <- matrix(c(
        group_counts[1], group_counts[2],
        ref_counts_0.1["Heart-specific Genes"], ref_counts_0.1["Non-Heart-specific Genes"]
      ), nrow = 2)
      print(paste("Set:", unique(Response_Group)))
      print("Contingency Table:")
      print(contingency_table)
      if (all(contingency_table >= 0 & is.finite(contingency_table))) {
        chisq.test(contingency_table)$p.value
      } else {
        NA
      }
    },
    .groups = "drop"
  ) %>%
  mutate(Significance = ifelse(!is.na(p_value) & p_value < 0.05, "*", ""))
[1] "Set: CX-DOX mid-late response\n(0.1 µM)"
[1] "Contingency Table:"
     [,1]  [,2]
[1,]    1   297
[2,]  414 12011
[1] "Set: DOX only mid-late response\n(0.1 µM)"
[1] "Contingency Table:"
     [,1]  [,2]
[1,]   54   297
[2,] 1497 12011
# Merge with proportion data
proportion_0.1 <- proportion_0.1 %>%
  left_join(chi_0.1, by = "Response_Group")

# ----------------- Plot -----------------
proportion_0.1$Response_Group <- factor(
  proportion_0.1$Response_Group,
  levels = c(
    "Non response\n(0.1 µM)",
    "CX-DOX mid-late response\n(0.1 µM)",
    "DOX only mid-late response\n(0.1 µM)"
  )
)

ggplot(proportion_0.1, aes(x = Response_Group, y = Percentage, fill = Category)) +
  geom_bar(stat = "identity", position = "stack") +
  geom_text(
    data = proportion_0.1 %>% distinct(Response_Group, Significance),
    aes(x = Response_Group, y = 105, label = Significance),
    inherit.aes = FALSE,
    size = 6,
    color = "black"
  ) +
  scale_fill_manual(values = c(
    "Heart-specific Genes" = "#4daf4a",
    "Non-Heart-specific Genes" = "#377eb8"
  )) +
  labs(
    title = "Heart-Specific Gene Proportions\nAcross 0.1 µM Cormotif Clusters",
    x = "Response Groups",
    y = "Percentage of Genes",
    fill = "Gene Category"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(size = rel(1.4), hjust = 0.5),
    axis.title = element_text(size = 14),
    axis.text.x = element_text(size = 12, angle = 45, hjust = 1),
    panel.border = element_rect(color = "black", fill = NA, linewidth = 1.2)
  )
Warning: Removed 1 row containing missing values or values outside the scale range
(`geom_text()`).

Version Author Date
d8a2f25 sayanpaul01 2025-04-14

📌 Proportion of Heart Specific Genes Genes (0.5 micromolar)

# ----------------- Load CorrMotif Groups for 0.5 µM -----------------
prob_1_0.5 <- as.character(read.csv("data/prob_1_0.5.csv")$Entrez_ID)
prob_2_0.5 <- as.character(read.csv("data/prob_2_0.5.csv")$Entrez_ID)
prob_3_0.5 <- as.character(read.csv("data/prob_3_0.5.csv")$Entrez_ID)
prob_4_0.5 <- as.character(read.csv("data/prob_4_0.5.csv")$Entrez_ID)
prob_5_0.5 <- as.character(read.csv("data/prob_5_0.5.csv")$Entrez_ID)

# Combine into one dataframe
all_ids_0.5 <- unique(c(prob_1_0.5, prob_2_0.5, prob_3_0.5, prob_4_0.5, prob_5_0.5))
df_0.5 <- data.frame(Entrez_ID = all_ids_0.5, stringsAsFactors = FALSE)

# ----------------- Annotate Response Group -----------------
df_0.5 <- df_0.5 %>%
  mutate(
    Response_Group = case_when(
      Entrez_ID %in% prob_1_0.5 ~ "Non response\n(0.5 µM)",
      Entrez_ID %in% prob_2_0.5 ~ "DOX-specific\nresponse (0.5 µM)",
      Entrez_ID %in% prob_3_0.5 ~ "DOX only mid-late\nresponse (0.5 µM)",
      Entrez_ID %in% prob_4_0.5 ~ "CX total + DOX early\nresponse (0.5 µM)",
      Entrez_ID %in% prob_5_0.5 ~ "DOX early + CX-DOX mid-late\nresponse (0.5 µM)"
    ),
    Category = ifelse(Entrez_ID %in% heart_entrez_ids, "Heart-specific Genes", "Non-Heart-specific Genes")
  )

# ----------------- Proportion Calculation -----------------
proportion_0.5 <- df_0.5 %>%
  group_by(Response_Group, Category) %>%
  summarise(Count = n(), .groups = "drop") %>%
  group_by(Response_Group) %>%
  mutate(Percentage = Count / sum(Count) * 100)

# ----------------- Chi-square Test (vs Non-response) -----------------
ref_counts_0.5 <- proportion_0.5 %>%
  dplyr::ungroup() %>%
  dplyr::filter(Response_Group == "Non response\n(0.5 µM)") %>%
  dplyr::select(Category, Count) %>%
  {setNames(.$Count, .$Category)}

chi_0.5 <- proportion_0.5 %>%
  filter(Response_Group != "Non response\n(0.5 µM)") %>%
  group_by(Response_Group) %>%
  summarise(
    p_value = {
      group_counts <- Count[Category %in% c("Heart-specific Genes", "Non-Heart-specific Genes")]
      if (length(group_counts) < 2) group_counts <- c(group_counts, 0)
      contingency_table <- matrix(c(
        group_counts[1], group_counts[2],
        ref_counts_0.5["Heart-specific Genes"], ref_counts_0.5["Non-Heart-specific Genes"]
      ), nrow = 2)
      print(paste("Set:", unique(Response_Group)))
      print("Contingency Table:")
      print(contingency_table)
      if (all(contingency_table >= 0 & is.finite(contingency_table))) {
        chisq.test(contingency_table)$p.value
      } else {
        NA
      }
    },
    .groups = "drop"
  ) %>%
  mutate(Significance = ifelse(!is.na(p_value) & p_value < 0.05, "*", ""))
[1] "Set: CX total + DOX early\nresponse (0.5 µM)"
[1] "Contingency Table:"
     [,1] [,2]
[1,]  142  123
[2,]    0 7011
[1] "Set: DOX early + CX-DOX mid-late\nresponse (0.5 µM)"
[1] "Contingency Table:"
     [,1] [,2]
[1,]    1  123
[2,]  220 7011
[1] "Set: DOX only mid-late\nresponse (0.5 µM)"
[1] "Contingency Table:"
     [,1] [,2]
[1,]  221  123
[2,] 6229 7011
[1] "Set: DOX-specific\nresponse (0.5 µM)"
[1] "Contingency Table:"
     [,1] [,2]
[1,]    4  123
[2,]  175 7011
Warning: There were 2 warnings in `summarise()`.
The first warning was:
ℹ In argument: `p_value = { ... }`.
ℹ In group 2: `Response_Group = "DOX early + CX-DOX mid-late\nresponse (0.5
  µM)"`.
Caused by warning in `chisq.test()`:
! Chi-squared approximation may be incorrect
ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
# Merge with proportion data
proportion_0.5 <- proportion_0.5 %>%
  left_join(chi_0.5, by = "Response_Group")

# ----------------- Plot -----------------
proportion_0.5$Response_Group <- factor(
  proportion_0.5$Response_Group,
  levels = c(
    "Non response\n(0.5 µM)",
    "DOX-specific\nresponse (0.5 µM)",
    "DOX only mid-late\nresponse (0.5 µM)",
    "CX total + DOX early\nresponse (0.5 µM)",
    "DOX early + CX-DOX mid-late\nresponse (0.5 µM)"
  )
)

ggplot(proportion_0.5, aes(x = Response_Group, y = Percentage, fill = Category)) +
  geom_bar(stat = "identity", position = "stack") +
  geom_text(
    data = proportion_0.5 %>% distinct(Response_Group, Significance),
    aes(x = Response_Group, y = 105, label = Significance),
    inherit.aes = FALSE,
    size = 6,
    color = "black"
  ) +
  scale_fill_manual(values = c(
    "Heart-specific Genes" = "#4daf4a",
    "Non-Heart-specific Genes" = "#377eb8"
  )) +
  labs(
    title = "Heart-Specific Gene Proportions\nAcross 0.5 µM Cormotif Clusters",
    x = "Response Groups",
    y = "Percentage of Genes",
    fill = "Gene Category"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(size = rel(1.4), hjust = 0.5),
    axis.title = element_text(size = 14),
    axis.text.x = element_text(size = 12, angle = 45, hjust = 1),
    panel.border = element_rect(color = "black", fill = NA, linewidth = 1.2)
  )
Warning: Removed 1 row containing missing values or values outside the scale range
(`geom_text()`).

Version Author Date
d8a2f25 sayanpaul01 2025-04-14

📌 Proportion of Heart Specific Genes Genes (Combined)

# Load Required Libraries
library(dplyr)
library(ggplot2)
library(org.Hs.eg.db)
library(AnnotationDbi)

# ----------------- Load Heart-Specific Genes -----------------
heart_genes <- read.csv("data/Human_Heart_Genes.csv", stringsAsFactors = FALSE)
heart_genes$Entrez_ID <- mapIds(
  org.Hs.eg.db,
  keys = heart_genes$Gene,
  column = "ENTREZID",
  keytype = "SYMBOL",
  multiVals = "first"
)
heart_entrez_ids <- na.omit(heart_genes$Entrez_ID)

# ----------------- Load CorrMotif Groups -----------------
# 0.1 µM
prob_1_0.1 <- as.character(read.csv("data/prob_1_0.1.csv")$Entrez_ID)
prob_2_0.1 <- as.character(read.csv("data/prob_2_0.1.csv")$Entrez_ID)
prob_3_0.1 <- as.character(read.csv("data/prob_3_0.1.csv")$Entrez_ID)

# 0.5 µM
prob_1_0.5 <- as.character(read.csv("data/prob_1_0.5.csv")$Entrez_ID)
prob_2_0.5 <- as.character(read.csv("data/prob_2_0.5.csv")$Entrez_ID)
prob_3_0.5 <- as.character(read.csv("data/prob_3_0.5.csv")$Entrez_ID)
prob_4_0.5 <- as.character(read.csv("data/prob_4_0.5.csv")$Entrez_ID)
prob_5_0.5 <- as.character(read.csv("data/prob_5_0.5.csv")$Entrez_ID)

# ----------------- Annotate CorrMotif Groups -----------------
df_0.1 <- data.frame(Entrez_ID = unique(c(prob_1_0.1, prob_2_0.1, prob_3_0.1))) %>%
  mutate(
    Response_Group = case_when(
      Entrez_ID %in% prob_1_0.1 ~ "Non response",
      Entrez_ID %in% prob_2_0.1 ~ "CX-DOX mid-late response",
      Entrez_ID %in% prob_3_0.1 ~ "DOX only mid-late response"
    ),
    Category = ifelse(Entrez_ID %in% heart_entrez_ids, "Heart-specific Genes", "Non-Heart-specific Genes"),
    Concentration = "0.1 µM"
  )

df_0.5 <- data.frame(Entrez_ID = unique(c(prob_1_0.5, prob_2_0.5, prob_3_0.5, prob_4_0.5, prob_5_0.5))) %>%
  mutate(
    Response_Group = case_when(
      Entrez_ID %in% prob_1_0.5 ~ "Non response",
      Entrez_ID %in% prob_2_0.5 ~ "DOX-specific response",
      Entrez_ID %in% prob_3_0.5 ~ "DOX only mid-late response",
      Entrez_ID %in% prob_4_0.5 ~ "CX total + DOX early response",
      Entrez_ID %in% prob_5_0.5 ~ "DOX early + CX-DOX mid-late response"
    ),
    Category = ifelse(Entrez_ID %in% heart_entrez_ids, "Heart-specific Genes", "Non-Heart-specific Genes"),
    Concentration = "0.5 µM"
  )

# ----------------- Combine Data -----------------
df_combined <- bind_rows(df_0.1, df_0.5)

# ----------------- Calculate Proportions -----------------
proportion_data <- df_combined %>%
  dplyr::group_by(Concentration, Response_Group, Category) %>%
  dplyr::summarise(Count = n(), .groups = "drop") %>%
  dplyr::group_by(Concentration, Response_Group) %>%
  dplyr::mutate(Percentage = Count / sum(Count) * 100)

# ----------------- Chi-square or Fisher's Test -----------------
get_chi_or_fisher <- function(df, ref_group) {
  ref_counts <- df %>%
    dplyr::ungroup() %>%
    dplyr::filter(Response_Group == ref_group) %>%
    dplyr::select(Category, Count) %>%
    {setNames(.$Count, .$Category)}
  
  df %>%
    dplyr::filter(Response_Group != ref_group) %>%
    dplyr::group_by(Response_Group) %>%
    dplyr::summarise(
      p_value = {
        group_counts <- Count[Category %in% c("Heart-specific Genes", "Non-Heart-specific Genes")]
        if (length(group_counts) < 2) group_counts <- c(group_counts, 0)
        contingency_table <- matrix(c(
          group_counts[1], group_counts[2],
          ref_counts["Heart-specific Genes"], ref_counts["Non-Heart-specific Genes"]
        ), nrow = 2)
        if (any(contingency_table < 5)) {
          fisher.test(contingency_table)$p.value
        } else {
          chisq.test(contingency_table)$p.value
        }
      },
      .groups = "drop"
    ) %>%
    dplyr::mutate(Significance = ifelse(!is.na(p_value) & p_value < 0.05, "*", ""))
}

# Run test for each concentration
chi_0.1 <- get_chi_or_fisher(proportion_data %>% dplyr::filter(Concentration == "0.1 µM"), "Non response")
chi_0.5 <- get_chi_or_fisher(proportion_data %>% dplyr::filter(Concentration == "0.5 µM"), "Non response")

chi_all <- dplyr::bind_rows(
  chi_0.1 %>% dplyr::mutate(Concentration = "0.1 µM"),
  chi_0.5 %>% dplyr::mutate(Concentration = "0.5 µM")
)

# Merge test results into proportions
proportion_data <- proportion_data %>%
  dplyr::left_join(chi_all, by = c("Concentration", "Response_Group"))

# ----------------- Reorder Factor Levels -----------------
proportion_data$Concentration <- factor(proportion_data$Concentration, levels = c("0.1 µM", "0.5 µM"))
proportion_data$Response_Group <- factor(proportion_data$Response_Group, levels = c(
  "Non response",
  "CX-DOX mid-late response",
  "DOX-specific response",
  "DOX only mid-late response",
  "CX total + DOX early response",
  "DOX early + CX-DOX mid-late response"
))

# ----------------- Compute Y-position for Significance Labels -----------------
label_data <- proportion_data %>%
  dplyr::group_by(Concentration, Response_Group) %>%
  dplyr::summarise(Significance = dplyr::first(Significance),
                   ymax = sum(Percentage), .groups = "drop") %>%
  dplyr::filter(!is.na(Significance)) %>%
  dplyr::mutate(y_pos = ymax + 3)

# ----------------- Final Plot -----------------
# --- Position stars above 100
label_data <- proportion_data %>%
  dplyr::group_by(Concentration, Response_Group) %>%
  dplyr::summarise(Significance = dplyr::first(Significance), .groups = "drop") %>%
  dplyr::filter(!is.na(Significance)) %>%
  dplyr::mutate(y_pos = 105)  # stars go at 105

# --- Plot
ggplot(proportion_data, aes(x = Response_Group, y = Percentage, fill = Category)) +
  geom_bar(stat = "identity", position = "stack") +
  geom_text(
    data = label_data,
    aes(x = Response_Group, y = y_pos, label = Significance),
    inherit.aes = FALSE,
    size = 5,
    color = "black"
  ) +
  facet_wrap(~ Concentration, scales = "free_x") +
  scale_fill_manual(values = c(
    "Heart-specific Genes" = "#4daf4a",
    "Non-Heart-specific Genes" = "#377eb8"
  )) +
  scale_y_continuous(limits = c(0, 110), expand = c(0, 0)) +  # allow space for stars and border
  labs(
    title = "Heart-Specific Gene Proportions Across\nCormotif Clusters (0.1 and 0.5)",
    x = "Response Groups",
    y = "Percentage of Genes",
    fill = "Gene Category"
  ) +
  theme_minimal(base_size = 14) +
  theme(
    plot.title = element_text(size = 16, hjust = 0.5, face = "bold"),
    axis.title.x = element_text(size = 14, face = "bold"),
    axis.title.y = element_text(size = 14, face = "bold"),
    axis.text.x = element_text(size = 11, angle = 45, hjust = 1),
    axis.text.y = element_text(size = 12),
    legend.title = element_text(size = 13),
    legend.text = element_text(size = 12),
    strip.text = element_text(size = 14, face = "bold"),
    panel.border = element_rect(color = "black", fill = NA, linewidth = 1.2),  # draws full box
    panel.spacing = unit(1.2, "lines")  # adds vertical spacing to avoid cramped look
  )

Version Author Date
4bad905 sayanpaul01 2025-04-14
6ef5f61 sayanpaul01 2025-04-14

📌 Corr-motif Boxplots

📌 Non response (0.1 micromolar)

# Load libraries
library(dplyr)
library(ggplot2)
library(reshape2)

# Load response group files
prob_1_0.1 <- as.character(read.csv("data/prob_1_0.1.csv")$Entrez_ID)

# Load expression dataset
boxplot1 <- read.csv("data/boxplot1.csv", check.names = FALSE)
boxplot1 <- as.data.frame(boxplot1)

# Choose a gene from the non-response group
target_entrez <- 92342  # Ensure this is from prob_1_0.1

# Stop if the gene is not in the non-response group
if (!(target_entrez %in% prob_1_0.1)) {
  stop("Selected gene is not in the non-response group for 0.1 micromolar.")
}

# Filter for selected gene
gene_data <- boxplot1[boxplot1$ENTREZID == target_entrez, ]
if(nrow(gene_data) == 0) stop("No data found for selected ENTIREZID.")

# Reshape to long format
gene_data_long <- melt(gene_data,
                       id.vars = c("ENTREZID", "SYMBOL", "GENENAME"),
                       variable.name = "Sample",
                       value.name = "log2CPM")

# Extract metadata from sample names
gene_data_long <- gene_data_long %>%
  mutate(
    Time = sub(".*_(\\d+)$", "\\1", Sample),
    Concentration = sub(".*_(0\\.\\d)_\\d+$", "\\1", Sample),
    Drug = sub(".*_(CX\\.5461|DOX|VEH)_.*", "\\1", Sample),
    Indv = sub("^([0-9]+\\.[0-9]+)_.*", "\\1", Sample)
  )

# Filter for 0.1 micromolar only
gene_data_long <- gene_data_long %>% filter(Concentration == "0.1")

# Convert to factors
gene_data_long$Time <- factor(gene_data_long$Time, levels = c("3", "24", "48"))
gene_data_long$Concentration <- factor(gene_data_long$Concentration, levels = "0.1")

# Map individual IDs
indv_mapping <- c("75.1" = "1", "78.1" = "2", "87.1" = "3", 
                  "17.3" = "4", "84.1" = "5", "90.1" = "6")

gene_data_long <- gene_data_long %>%
  mutate(Indv = ifelse(Indv %in% names(indv_mapping), indv_mapping[Indv], "Unknown"))

# Define color palette for drugs
drug_palette <- c("CX.5461" = "#08306B", "DOX" = "#E7298A", "VEH" = "green")

# Extract gene symbol for labeling
gene_symbol <- unique(gene_data_long$SYMBOL)[1]

# Create the boxplot
ggplot(gene_data_long, aes(x = Drug, y = log2CPM, fill = Drug)) +
  geom_boxplot(outlier.shape = NA) +
  scale_fill_manual(values = drug_palette) +
  facet_grid(. ~ Time, labeller = label_both) +  # Only facets by Time now
  geom_point(aes(color = Indv), size = 2, alpha = 0.5,
             position = position_jitter(width = -0.3, height = 0)) +
  ggtitle("Non response (0.1 micromolar)") +
  labs(
    x = "Drugs",
    y = paste(gene_symbol, " log2CPM")
  ) +
  ylim(0, NA) +
  theme_bw() +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.ticks = element_line(linewidth = 1.5),
    axis.line = element_line(linewidth = 1.5),
    axis.text.y = element_text(size = 10, color = "black"),
    axis.text.x = element_text(size = 10, color = "black", angle = 45, hjust = 1),
    strip.text = element_text(size = 12, face = "bold")
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07

📌 CX-DOX Mid-Late Response (0.1 micromolar)

# Load libraries
library(dplyr)
library(ggplot2)
library(reshape2)

# Load response group files
prob_2_0.1 <- as.character(read.csv("data/prob_2_0.1.csv")$Entrez_ID)

prob_2_0.1
  [1] "1870"      "79000"     "3925"      "83667"     "63967"     "55143"    
  [7] "991"       "11004"     "4678"      "8438"      "6491"      "1031"     
 [13] "4998"      "55706"     "51668"     "7398"      "55635"     "8317"     
 [19] "343099"    "163786"    "29899"     "57535"     "84722"     "64858"    
 [25] "653820"    "554282"    "728833"    "8370"      "23632"     "54964"    
 [31] "1163"      "128239"    "3068"      "83540"     "55732"     "91687"    
 [37] "259266"    "9928"      "29089"     "729533"    "4751"      "51514"    
 [43] "1063"      "3930"      "9156"      "10276"     "55388"     "79723"    
 [49] "414149"    "84930"     "11130"     "983"       "219790"    "1763"     
 [55] "79933"     "9585"      "3832"      "55165"     "3070"      "84986"    
 [61] "10613"     "4288"      "6240"      "10346"     "113174"    "258010"   
 [67] "81930"     "1643"      "374393"    "2237"      "3619"      "113130"   
 [73] "23649"     "283131"    "9633"      "10714"     "220042"    "143888"   
 [79] "3014"      "53340"     "1111"      "23310"     "2305"      "10635"    
 [85] "9918"      "83461"     "440081"    "441631"    "79022"     "10376"    
 [91] "84790"     "10024"     "29127"     "9700"      "23468"     "1017"     
 [97] "8914"      "5557"      "23306"     "57122"     "4193"      "8089"     
[103] "6636"      "100128191" "7112"      "283431"    "55010"     "7374"     
[109] "5985"      "11113"     "9735"      "387893"    "140707"    "102659353"
[115] "5426"      "221150"    "55835"     "3146"      "675"       "5983"     
[121] "11340"     "10301"     "440145"    "79866"     "10426"     "7027"     
[127] "650669"    "55632"     "55320"     "5427"      "64841"     "1033"     
[133] "11169"     "9787"      "4522"      "161145"    "122953"    "145508"   
[139] "90141"     "7443"      "89839"     "100288637" "9824"      "701"      
[145] "90417"     "57082"     "5888"      "11339"     "51203"     "79968"    
[151] "1854"      "22995"     "55329"     "9133"      "9768"      "80119"    
[157] "54962"     "55055"     "9493"      "64782"     "55215"     "90381"    
[163] "641"       "9055"      "1106"      "63922"     "899"       "124222"   
[169] "9088"      "23589"     "116028"    "54820"     "23204"     "5347"     
[175] "3835"      "8479"      "79801"     "23594"     "64785"     "6560"     
[181] "55159"     "55839"     "51659"     "81620"     "2175"      "359845"   
[187] "727910"    "83903"     "54478"     "116840"    "9212"      "6470"     
[193] "27346"     "10615"     "79915"     "990"       "7153"      "29893"    
[199] "672"       "78995"     "146909"    "10951"     "146956"    "348235"   
[205] "55771"     "83990"     "3838"      "9382"      "2232"      "7083"     
[211] "332"       "10403"     "162655"    "6632"      "220134"    "162681"   
[217] "148229"    "84823"     "10036"     "126282"    "29128"     "162993"   
[223] "1786"      "147841"    "10535"     "55723"     "93323"     "54858"    
[229] "81931"     "284403"    "8193"      "7733"      "27113"     "3978"     
[235] "5424"      "84798"     "27338"     "6241"      "348654"    "79172"    
[241] "1058"      "4436"      "6637"      "23397"     "699"       "150468"   
[247] "4175"      "57405"     "83879"     "129401"    "284992"    "151246"   
[253] "79411"     "55355"     "23178"     "1841"      "994"       "5111"     
[259] "84515"     "140733"    "9837"      "22974"     "1869"      "79980"    
[265] "5933"      "81610"     "4605"      "11065"     "6790"      "54069"    
[271] "8208"      "54058"     "8318"      "421"       "5902"      "11200"    
[277] "4174"      "8398"      "5905"      "79019"     "51512"     "2177"     
[283] "27258"     "151648"    "56992"     "993"       "10293"     "11186"    
[289] "25886"     "57650"     "10721"     "4171"      "8930"      "11073"    
[295] "10051"     "286827"    "1894"      "254827"    "5984"      "116832"   
[301] "7884"      "10460"     "7468"      "64151"     "132671"    "9662"     
[307] "1633"      "3015"      "1062"      "55345"     "4085"      "890"      
[313] "10733"     "132320"    "84057"     "201725"    "3148"      "55247"    
[319] "79682"     "55722"     "9319"      "375444"    "55789"     "64105"    
[325] "891"       "64946"     "100129716" "100996485" "10112"     "995"      
[331] "9232"      "134492"    "3161"      "54908"     "375484"    "83463"    
[337] "7913"      "51053"     "8339"      "7738"      "11270"     "9656"     
[343] "203068"    "6941"      "3833"      "1026"      "55166"     "4172"     
[349] "5558"      "7272"      "9994"      "253714"    "387103"    "2037"     
[355] "113115"    "26271"     "4521"      "29887"     "23658"     "54443"    
[361] "7378"      "10793"     "5982"      "55972"     "10926"     "4176"     
[367] "23165"     "2146"      "7516"      "54892"     "389610"    "8795"     
[373] "8794"      "157313"    "1808"      "157570"    "55872"     "84296"    
[379] "4173"      "8836"      "4603"      "1875"      "25788"     "9134"     
[385] "50484"     "79075"     "27085"     "29028"     "9401"      "347240"   
[391] "2189"      "84904"     "9833"      "100289137" "80010"     "1164"     
[397] "2176"      "195828"    "10541"     "10592"     "26147"     "11064"    
[403] "7633"      "29941"     "89958"     "10383"     "441478"    "6839"     
[409] "60401"     "24137"     "54821"     "79366"     "2491"      "11013"    
[415] "3149"     
# Load expression dataset
boxplot1 <- read.csv("data/boxplot1.csv", check.names = FALSE)
boxplot1 <- as.data.frame(boxplot1)

# Choose a gene from the CX-DOX mid-late response group
target_entrez <- 4521  # Replace with your desired Entrez ID from prob_2_0.1

# Stop if the gene is not in the CX-DOX mid-late response group
if (!(target_entrez %in% prob_2_0.1)) {
  stop("Selected gene is not in the CX-DOX mid-late response group for 0.1 micromolar.")
}

# Filter for selected gene
gene_data <- boxplot1[boxplot1$ENTREZID == target_entrez, ]
if(nrow(gene_data) == 0) stop("No data found for selected ENTREZID.")

# Reshape to long format
gene_data_long <- melt(gene_data,
                       id.vars = c("ENTREZID", "SYMBOL", "GENENAME"),
                       variable.name = "Sample",
                       value.name = "log2CPM")

# Extract metadata from sample names
gene_data_long <- gene_data_long %>%
  mutate(
    Time = sub(".*_(\\d+)$", "\\1", Sample),
    Concentration = sub(".*_(0\\.\\d)_\\d+$", "\\1", Sample),
    Drug = sub(".*_(CX\\.5461|DOX|VEH)_.*", "\\1", Sample),
    Indv = sub("^([0-9]+\\.[0-9]+)_.*", "\\1", Sample)
  )

# Filter for 0.1 micromolar only
gene_data_long <- gene_data_long %>% filter(Concentration == "0.1")

# Convert to factors
gene_data_long$Time <- factor(gene_data_long$Time, levels = c("3", "24", "48"))
gene_data_long$Concentration <- factor(gene_data_long$Concentration, levels = "0.1")

# Map individual IDs
indv_mapping <- c("75.1" = "1", "78.1" = "2", "87.1" = "3", 
                  "17.3" = "4", "84.1" = "5", "90.1" = "6")

gene_data_long <- gene_data_long %>%
  mutate(Indv = ifelse(Indv %in% names(indv_mapping), indv_mapping[Indv], "Unknown"))

# Define color palette for drugs
drug_palette <- c("CX.5461" = "#08306B", "DOX" = "#E7298A", "VEH" = "green")

# Extract gene symbol for labeling
gene_symbol <- unique(gene_data_long$SYMBOL)[1]

# Create the boxplot
ggplot(gene_data_long, aes(x = Drug, y = log2CPM, fill = Drug)) +
  geom_boxplot(outlier.shape = NA) +
  scale_fill_manual(values = drug_palette) +
  facet_grid(. ~ Time, labeller = label_both) +  # Only facets by Time
  geom_point(aes(color = Indv), size = 2, alpha = 0.5,
             position = position_jitter(width = -0.3, height = 0)) +
  ggtitle("CX-DOX mid-late\nresponse (0.1 micromolar)") +
  labs(
    x = "Drugs",
    y = paste(gene_symbol, " log2CPM")
  ) +
  ylim(0, NA) +
  theme_bw() +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.ticks = element_line(linewidth = 1.5),
    axis.line = element_line(linewidth = 1.5),
    axis.text.y = element_text(size = 10, color = "black"),
    axis.text.x = element_text(size = 10, color = "black", angle = 45, hjust = 1),
    strip.text = element_text(size = 12, face = "bold")
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07

📌 DOX-only mid-late response (0.1 micromolar)

# Load libraries
library(dplyr)
library(ggplot2)
library(reshape2)

# Load response group files
prob_3_0.1 <- as.character(read.csv("data/prob_3_0.1.csv")$Entrez_ID)

# Print gene list if needed
prob_3_0.1
   [1] "643837"    "5192"      "63976"     "83715"     "8863"      "50651"    
   [7] "80045"     "5293"      "64802"     "10277"     "26232"     "729614"   
  [13] "1188"      "1969"      "11240"     "100861548" "57576"     "400745"   
  [19] "84224"     "5909"      "10236"     "3399"      "11313"     "2582"     
  [25] "3155"      "57822"     "57185"     "164091"    "149420"    "64793"    
  [31] "6195"      "55650"     "84065"     "84958"     "9064"      "2537"     
  [37] "6118"      "8420"      "9672"      "9410"      "79140"     "339483"   
  [43] "3065"      "81493"     "8565"      "252995"    "127544"    "6421"     
  [49] "5453"      "353500"    "10465"     "149465"    "55929"     "1263"     
  [55] "343521"    "149478"    "8643"      "10327"     "51249"     "10103"    
  [61] "55624"     "22996"     "5865"      "9372"      "200014"    "1376"     
  [67] "606495"    "23648"     "100507634" "163782"    "23421"     "84455"    
  [73] "1647"      "100526835" "8790"      "10026"     "55283"     "126820"   
  [79] "105378828" "7049"      "253152"    "11146"     "50999"     "100131564"
  [85] "178"       "7412"      "2135"      "101928370" "1435"      "10390"    
  [91] "100129269" "11218"     "389"       "333926"    "4803"      "84852"    
  [97] "9398"      "54855"     "26227"     "5565"      "440689"    "2209"     
 [103] "105371405" "8337"      "337873"    "723790"    "554313"    "8349"     
 [109] "9900"      "1893"      "56882"     "117145"    "148327"    "3782"     
 [115] "55974"     "23623"     "7818"      "4000"      "64218"     "79957"    
 [121] "63827"     "51093"     "57549"     "23385"     "50848"     "400793"   
 [127] "5087"      "92241"     "92346"     "100302401" "26092"     "148756"   
 [133] "10228"     "51278"     "23127"     "779"       "23612"     "6051"     
 [139] "4660"      "59349"     "7832"      "6635"      "55224"     "9911"     
 [145] "81788"     "5129"      "85414"     "1604"      "27042"     "574036"   
 [151] "55733"     "25896"     "5525"      "467"       "56950"     "7042"     
 [157] "54996"     "11221"     "10637"     "7044"      "286826"    "142"      
 [163] "339500"    "7483"      "126731"    "57568"     "80003"     "359948"   
 [169] "7107"      "6262"      "55083"     "84838"     "79754"     "80760"    
 [175] "254427"    "11164"     "83643"     "22929"     "338596"    "387640"   
 [181] "643236"    "9721"      "143162"    "259230"    "8030"      "9886"     
 [187] "1959"      "84989"     "29119"     "219743"    "27143"     "5092"     
 [193] "5532"      "58529"     "8509"      "5328"      "219654"    "9060"     
 [199] "100144748" "355"       "3434"      "51196"     "953"       "10023"    
 [205] "80019"     "6425"      "55118"     "84171"     "282991"    "81621"    
 [211] "27343"     "9221"      "84108"     "9446"      "120"       "9126"     
 [217] "9937"      "259217"    "196051"    "54780"     "80007"     "9679"     
 [223] "399818"    "642938"    "80313"     "196743"    "60626"     "3265"     
 [229] "64787"     "55367"     "402778"    "3481"      "3784"      "4928"     
 [235] "6786"      "10612"     "6881"      "1200"      "143425"    "56672"    
 [241] "56675"     "23258"     "81846"     "406"       "84280"     "84188"    
 [247] "8048"      "100126784" "10553"     "55366"     "196294"    "966"      
 [253] "6506"      "9537"      "56981"     "9409"      "85456"     "6749"     
 [259] "219539"    "25921"     "9404"      "79073"     "220001"    "9066"     
 [265] "6094"      "374395"    "283248"    "79829"     "83707"     "7536"     
 [271] "55561"     "29901"     "7108"      "741"       "823"       "83786"    
 [277] "101927789" "91056"     "11007"     "8061"      "83638"     "55690"    
 [283] "64837"     "9973"      "57804"     "57571"     "5790"      "80194"    
 [289] "9600"      "10263"     "2950"      "55191"     "3636"      "10809"    
 [295] "58473"     "100287896" "100507050" "408"       "5612"      "100506127"
 [301] "25987"     "60492"     "10873"     "11098"     "1075"      "85459"    
 [307] "4361"      "53942"     "114908"    "2977"      "1662"      "23235"    
 [313] "54970"     "57646"     "25996"     "51092"     "100652768" "23621"    
 [319] "22897"     "53826"     "6330"      "55823"     "64137"     "79671"    
 [325] "4162"      "9638"      "9538"      "219844"    "50937"     "283174"   
 [331] "196513"    "57103"     "1108"      "9746"      "374443"    "4973"     
 [337] "8531"      "55766"     "51768"     "65981"     "1663"      "84920"    
 [343] "55605"     "283463"    "196528"    "54407"     "100288798" "41"       
 [349] "81566"     "23371"     "84926"     "7786"      "57658"     "25946"    
 [355] "5502"      "29095"     "1606"      "64375"     "2065"      "10193"    
 [361] "27165"     "9880"      "79837"     "10956"     "1019"      "9194"     
 [367] "29110"     "1368"      "144453"    "27345"     "5787"      "8549"     
 [373] "22822"     "79738"     "144455"    "160335"    "25834"     "4254"     
 [379] "1848"      "694"       "51134"     "121457"    "121601"    "55332"    
 [385] "51559"     "121053"    "121551"    "23479"     "121642"    "89910"    
 [391] "4598"      "51228"     "84260"     "400073"    "28981"     "5501"     
 [397] "113675"    "160777"    "5564"      "51499"     "5025"      "144404"   
 [403] "144406"    "10198"     "5901"      "283383"    "100996573" "5827"     
 [409] "7637"      "51761"     "387496"    "432369"    "23281"     "9201"     
 [415] "5994"      "55068"     "81617"     "79621"     "220108"    "100507398"
 [421] "341676"    "55901"     "26586"     "5100"      "688"       "79596"    
 [427] "10082"     "160897"    "100861541" "100289373" "8660"      "283487"   
 [433] "23250"     "3916"      "113622"    "2621"      "10038"     "7011"     
 [439] "63874"     "26020"     "54930"     "4625"      "161247"    "5720"     
 [445] "51292"     "5875"      "4857"      "11154"     "9472"      "64067"    
 [451] "8487"      "122525"    "57697"     "122769"    "79944"     "5836"     
 [457] "114088"    "6815"      "9786"      "6252"      "23224"     "7597"     
 [463] "57452"     "2079"      "6547"      "26037"     "53349"     "91748"    
 [469] "23093"     "7043"      "2954"      "85439"     "55812"     "11099"    
 [475] "79882"     "400236"    "78990"     "122509"    "5891"      "7517"     
 [481] "388021"    "283638"    "647310"    "283643"    "7082"      "342184"   
 [487] "254531"    "23015"     "440270"    "5330"      "729082"    "80237"    
 [493] "50506"     "80031"     "399694"    "23312"     "145788"    "64864"    
 [499] "54629"     "83660"     "51065"     "83464"     "53944"     "54956"    
 [505] "51495"     "22801"     "8125"      "7090"      "60677"     "3073"     
 [511] "5371"      "440288"    "1464"      "26263"     "10099"     "55466"    
 [517] "11173"     "5923"      "283687"    "57214"     "53346"     "6457"     
 [523] "9154"      "5151"      "11214"     "3669"      "145864"    "4240"     
 [529] "342132"    "64784"     "26276"     "28232"     "56963"     "23336"    
 [535] "170691"    "22856"     "6627"      "51728"     "79622"     "64285"    
 [541] "4833"      "84572"     "283871"    "80178"     "83886"     "84256"    
 [547] "54985"     "84464"     "10131"     "79585"     "29965"     "23295"    
 [553] "79641"     "2013"      "8651"      "9516"      "729993"    "89927"    
 [559] "368"       "64131"     "653190"    "79905"     "51760"     "123879"   
 [565] "57149"     "3566"      "728734"    "100507607" "6693"      "4150"     
 [571] "253980"    "83719"     "79077"     "283932"    "93129"     "2521"     
 [577] "440359"    "23090"     "23322"     "4502"      "4493"      "9688"     
 [583] "23568"     "1006"      "51192"     "8883"      "8824"      "23491"    
 [589] "283849"    "29800"     "1506"      "3931"      "146198"    "3038"     
 [595] "16"        "23450"     "794"       "55565"     "79583"     "100130958"
 [601] "51741"     "4094"      "123775"    "9100"      "23199"     "2300"     
 [607] "333929"    "124045"    "4157"      "79007"     "51763"     "23293"    
 [613] "23108"     "162514"    "7442"      "23729"     "3682"      "101928000"
 [619] "708"       "728392"    "432"       "57659"     "5430"      "968"      
 [625] "6462"      "482"       "55135"     "1949"      "92162"     "5198"     
 [631] "388335"    "201164"    "201163"    "91647"     "7156"      "5636"     
 [637] "125206"    "644815"    "4239"      "26118"     "8844"      "7126"     
 [643] "147007"    "116238"    "284086"    "9618"      "147015"    "116236"   
 [649] "84940"     "374786"    "105371730" "5892"      "31"        "57636"    
 [655] "2064"      "84299"     "7067"      "125111"    "3880"      "9001"     
 [661] "535"       "79990"     "84313"     "339201"    "2896"      "284071"   
 [667] "124790"    "9842"      "4137"      "996"       "3837"      "80279"    
 [673] "10241"     "65264"     "10642"     "81558"     "11143"     "284080"   
 [679] "3675"      "4831"      "8165"      "6426"      "54894"     "56155"    
 [685] "5889"      "81671"     "8493"      "388407"    "64750"     "146880"   
 [691] "440456"    "201283"    "201134"    "23461"     "5608"      "400617"   
 [697] "6662"      "94015"     "9121"      "100287042" "3021"      "8811"     
 [703] "23265"     "114804"    "8877"      "100507246" "6427"      "2548"     
 [709] "79092"     "284129"    "440465"    "284184"    "25794"     "1468"     
 [715] "4097"      "92659"     "255275"    "201254"    "201255"    "23347"    
 [721] "103910"    "649446"    "84777"     "84617"     "10939"     "55125"    
 [727] "753"       "26256"     "25925"     "284252"    "51444"     "80206"    
 [733] "57536"     "9050"      "201501"    "4645"      "80323"     "5366"     
 [739] "8710"      "5271"      "92126"     "25914"     "101927989" "440498"   
 [745] "84552"     "610"       "22904"     "4946"      "7064"      "4782"     
 [751] "729359"    "4902"      "6813"      "388499"    "4701"      "256949"   
 [757] "4670"      "374879"    "93134"     "93145"     "3383"      "3386"     
 [763] "5141"      "3609"      "126075"    "57139"     "147837"    "4125"     
 [769] "199699"    "9592"      "65249"     "9524"      "84449"     "376497"   
 [775] "5296"      "5143"      "9518"      "51477"     "10715"     "729991"   
 [781] "284440"    "7639"      "171392"    "79156"     "898"       "5348"     
 [787] "100128682" "115703"    "333"       "84911"     "374899"    "101927720"
 [793] "22835"     "57828"     "399473"    "147965"    "126432"    "115290"   
 [799] "57622"     "4294"      "126526"    "29950"     "645"       "57731"    
 [805] "80271"     "6626"      "7040"      "641649"    "6223"      "10567"    
 [811] "478"       "5452"      "3991"      "653583"    "56006"     "7596"     
 [817] "56971"     "79090"     "8189"      "808"       "147906"    "100506068"
 [823] "29888"     "10055"     "22900"     "9266"      "770"       "23645"    
 [829] "581"       "10856"     "8463"      "83596"     "23636"     "25888"    
 [835] "94030"     "79986"     "126017"    "55422"     "147807"    "284307"   
 [841] "348327"    "284309"    "10782"     "100131691" "7593"      "9687"     
 [847] "6382"      "64342"     "9540"      "391356"    "10890"     "60509"    
 [853] "3795"      "7349"      "4358"      "9913"      "2355"      "253558"   
 [859] "440854"    "130589"    "728730"    "6546"      "79823"     "2956"     
 [865] "129285"    "98"        "100129434" "53335"     "23301"     "119"      
 [871] "94097"     "150726"    "7840"      "51002"     "116540"    "84695"    
 [877] "10618"     "54884"     "112597"    "150572"    "30818"     "56910"    
 [883] "55654"     "10865"     "10120"     "2274"      "165055"    "96626"    
 [889] "64682"     "10461"     "84910"     "79134"     "91409"     "90557"    
 [895] "116372"    "4249"      "100129961" "84083"     "23518"     "11249"    
 [901] "390"       "55183"     "114793"    "11227"     "22925"     "55137"    
 [907] "22837"     "6326"      "2571"      "9874"      "8520"      "29789"    
 [913] "1123"      "51661"     "64172"     "5378"      "3628"      "54842"    
 [919] "4430"      "64859"     "91526"     "3329"      "3336"      "23314"    
 [925] "60491"     "7855"      "3417"      "4133"      "33"        "1373"     
 [931] "2066"      "580"       "26154"     "55825"     "64114"     "64320"    
 [937] "10058"     "1674"      "79586"     "130367"    "130340"    "57590"    
 [943] "5270"      "80309"     "80210"     "10123"     "64284"     "51665"    
 [949] "2859"      "140809"    "64773"     "3704"      "83959"     "146"      
 [955] "149840"    "63926"     "6616"      "182"       "55304"     "1471"     
 [961] "26152"     "11264"     "2937"      "25939"     "10904"     "9935"     
 [967] "128486"    "11142"     "10953"     "27296"     "51604"     "8202"     
 [973] "55959"     "23394"     "8675"      "2778"      "1522"      "81928"    
 [979] "55738"     "102723996" "10950"     "54149"     "29104"     "30811"    
 [985] "2618"      "29980"     "1827"      "861"       "9980"      "6450"     
 [991] "54020"     "5316"      "23308"     "54082"     "728039"    "5116"     
 [997] "83733"     "529"       "5625"      "25786"     "439931"    "23331"    
[1003] "25807"     "3976"      "6948"      "23762"     "3985"      "6523"     
[1009] "10042"     "23780"     "80020"     "7263"      "29775"     "85377"    
[1015] "84645"     "23764"     "102800317" "11144"     "27350"     "5155"     
[1021] "79640"     "10762"     "5465"      "55020"     "5600"      "23654"    
[1027] "410"       "284942"    "11158"     "859"       "9901"      "55209"    
[1033] "80746"     "55287"     "9922"      "7476"      "7508"      "6533"     
[1039] "80852"     "7155"      "10217"     "5333"      "9942"      "9941"     
[1045] "6331"      "199223"    "64651"     "25907"     "79442"     "4634"     
[1051] "5745"      "54859"     "11277"     "54681"     "2876"      "1605"     
[1057] "8927"      "7318"      "10991"     "7866"      "1795"      "57060"    
[1063] "5580"      "7086"      "8309"      "56999"     "9223"      "84541"    
[1069] "27086"     "1371"      "84319"     "344595"    "90102"     "79691"    
[1075] "116064"    "3836"      "64770"     "84303"     "57501"     "339942"   
[1081] "100507032" "729375"    "339855"    "10274"     "92369"     "9435"     
[1087] "6596"      "53836"     "5912"      "79674"     "51319"     "79740"    
[1093] "5274"      "5584"      "200916"    "23043"     "5337"      "64393"    
[1099] "51193"     "59345"     "5437"      "6434"      "2119"      "9076"     
[1105] "2257"      "401106"    "93109"     "131583"    "152687"    "54872"    
[1111] "4636"      "84179"     "317648"    "285489"    "4043"      "5522"     
[1117] "23324"     "768239"    "56606"     "5860"      "23231"     "5981"     
[1123] "23244"     "386617"    "10699"     "3815"      "5471"      "10606"    
[1129] "23284"     "1060"      "8671"      "374"       "3184"      "22872"    
[1135] "51191"     "10144"     "285513"    "23173"     "100507053" "285556"   
[1141] "115265"    "90024"     "79807"     "79071"     "92610"     "287"      
[1147] "8492"      "79625"     "5393"      "166378"    "22824"     "25819"    
[1153] "84709"     "166785"    "1909"      "987"       "4886"      "1363"     
[1159] "23022"     "57630"     "116966"    "201973"    "256309"    "27295"    
[1165] "10016"     "11076"     "85409"     "134147"    "1767"      "643401"   
[1171] "23037"     "81792"     "51151"     "79925"     "2668"      "345557"   
[1177] "6414"      "23530"     "53918"     "4338"      "112574"    "493869"   
[1183] "345651"    "10769"     "285671"    "11174"     "64087"     "84327"    
[1189] "345778"    "100505994" "84250"     "83890"     "22836"     "90355"    
[1195] "64839"     "9315"      "28966"     "57507"     "501"       "115123"   
[1201] "84466"     "2201"      "51015"     "3094"      "51735"     "6583"     
[1207] "23176"     "134549"    "51780"     "51308"     "202051"    "202052"   
[1213] "340061"    "51523"     "404734"    "10011"     "285613"    "10007"    
[1219] "81848"     "2246"      "10915"     "389336"    "79628"     "78991"    
[1225] "22993"     "6949"      "26112"     "206358"    "2890"      "134353"   
[1231] "6586"      "64901"     "100268168" "4488"      "3274"      "2870"     
[1237] "11285"     "85007"     "8878"      "94234"     "2296"      "648791"   
[1243] "2651"      "51522"     "221687"    "6310"      "401236"    "10486"    
[1249] "57380"     "81688"     "3006"      "8347"      "8334"      "3017"     
[1255] "8367"      "3012"      "8365"      "493812"    "8970"      "85236"    
[1261] "64288"     "114821"    "3133"      "8870"      "780"       "1460"     
[1267] "57819"     "4758"      "221527"    "6890"      "1616"      "578"      
[1273] "221491"    "5603"      "27154"     "6428"      "105375039" "5292"     
[1279] "221468"    "9025"      "55809"     "441150"    "116138"    "65989"    
[1285] "57510"     "5429"      "55362"     "2030"      "4794"      "202500"   
[1291] "10231"     "51302"     "27242"     "442213"    "85315"     "90523"    
[1297] "51557"     "7803"      "26503"     "135228"    "27145"     "4646"     
[1303] "55023"     "9324"      "7162"      "22832"     "2570"      "58528"    
[1309] "79694"     "10973"     "64208"     "57673"     "55084"     "11231"    
[1315] "27244"     "285753"    "9896"      "101927768" "222537"    "23493"    
[1321] "81847"     "5796"      "116843"    "4217"      "57224"     "441172"   
[1327] "51390"     "348995"    "80329"     "9590"      "26034"     "8871"     
[1333] "39"        "5071"      "9444"      "2852"      "79778"     "114796"   
[1339] "29886"     "23288"     "55698"     "80028"     "221955"    "54753"    
[1345] "6119"      "9678"      "55536"     "10457"     "1687"      "26031"    
[1351] "3181"      "11335"     "221895"    "79017"     "5137"      "51251"    
[1357] "57057"     "9844"      "349114"    "136647"    "79783"     "285954"   
[1363] "9263"      "58498"     "94239"     "1956"      "81552"     "51427"    
[1369] "168374"    "154881"    "378108"    "100101148" "9031"      "541473"   
[1375] "375593"    "3092"      "222183"    "5218"      "1595"      "64921"    
[1381] "55971"     "10898"     "255374"    "55262"     "79690"     "402682"   
[1387] "43"        "1174"      "8985"      "222236"    "55973"     "4897"     
[1393] "858"       "93653"     "7982"      "401399"    "4899"      "51200"    
[1399] "91584"     "29062"     "100507421" "9715"      "285966"    "84626"    
[1405] "155066"    "9311"      "10049"     "55112"     "101927595" "2055"     
[1411] "157285"    "640"       "101929490" "10395"     "51201"     "23362"    
[1417] "55790"     "55806"     "80346"     "9796"      "23516"     "8793"     
[1423] "8797"      "4741"      "23087"     "51435"     "79618"     "1846"     
[1429] "7486"      "3084"      "286"       "5327"      "137695"    "55636"    
[1435] "5150"      "79776"     "5828"      "619279"    "85444"     "4683"     
[1441] "862"       "137392"    "54704"     "94241"     "51001"     "9791"     
[1447] "83988"     "23414"     "137735"    "114788"    "5885"      "90390"    
[1453] "4982"      "4856"      "114907"    "5820"      "114"       "286077"   
[1459] "100128338" "83481"     "84875"     "8733"      "81704"     "5991"     
[1465] "403313"    "4781"      "203238"    "6456"      "54801"     "340485"   
[1471] "4300"      "360"       "441459"    "9853"      "51754"     "64425"    
[1477] "219"       "347252"    "687"       "7091"      "7088"      "80318"    
[1483] "2619"      "79048"     "54769"     "4920"      "4814"      "445577"   
[1489] "23196"     "55357"     "54566"     "114299"    "445815"    "158399"   
[1495] "9991"      "158405"    "169834"    "85301"     "25861"     "23245"    
[1501] "55755"     "286204"    "169611"    "1759"      "4957"      "389792"   
[1507] "100506119" "100506190" "140459"    "83543"     "11092"     "6834"     
[1513] "6256"      "138162"    "4851"      "101928483" "29085"     "158056"   
[1519] "7186"      "100289341" "55344"     "283981"    "3563"      "25878"    
[1525] "5613"      "5277"      "22866"     "5422"      "11141"     "6990"     
[1531] "80258"     "55593"     "5355"      "89801"     "2245"      "55906"    
[1537] "367"       "27112"     "1896"      "54413"     "340526"    "9452"     
[1543] "695"       "105373311" "90293"     "286467"    "347475"    "55559"    
[1549] "5365"      "1736"      "4354"     
# Load expression dataset
boxplot1 <- read.csv("data/boxplot1.csv", check.names = FALSE)
boxplot1 <- as.data.frame(boxplot1)

# Choose a gene from the DOX-only mid-late response group
target_entrez <- 1674  # Replace with your desired Entrez ID from prob_3_0.1

# Stop if the gene is not in the DOX-only mid-late response group
if (!(target_entrez %in% prob_3_0.1)) {
  stop("Selected gene is not in the DOX-only mid-late response group for 0.1 micromolar.")
}

# Filter for selected gene
gene_data <- boxplot1[boxplot1$ENTREZID == target_entrez, ]
if(nrow(gene_data) == 0) stop("No data found for selected ENTREZID.")

# Reshape to long format
gene_data_long <- reshape2::melt(gene_data,
                                 id.vars = c("ENTREZID", "SYMBOL", "GENENAME"),
                                 variable.name = "Sample",
                                 value.name = "log2CPM")

# Extract metadata from sample names
gene_data_long <- gene_data_long %>%
  mutate(
    Time = sub(".*_(\\d+)$", "\\1", Sample),
    Concentration = sub(".*_(0\\.\\d)_\\d+$", "\\1", Sample),
    Drug = sub(".*_(CX\\.5461|DOX|VEH)_.*", "\\1", Sample),
    Indv = sub("^([0-9]+\\.[0-9]+)_.*", "\\1", Sample)
  )

# Filter for 0.1 micromolar only
gene_data_long <- gene_data_long %>% filter(Concentration == "0.1")

# Convert to factors
gene_data_long$Time <- factor(gene_data_long$Time, levels = c("3", "24", "48"))
gene_data_long$Concentration <- factor(gene_data_long$Concentration, levels = "0.1")

# Map individual IDs
indv_mapping <- c("75.1" = "1", "78.1" = "2", "87.1" = "3", 
                  "17.3" = "4", "84.1" = "5", "90.1" = "6")

gene_data_long <- gene_data_long %>%
  mutate(Indv = ifelse(Indv %in% names(indv_mapping), indv_mapping[Indv], "Unknown"))

# Define color palette for drugs
drug_palette <- c("CX.5461" = "#08306B", "DOX" = "#E7298A", "VEH" = "green")

# Extract gene symbol for labeling
gene_symbol <- unique(gene_data_long$SYMBOL)[1]

# Create the boxplot
ggplot(gene_data_long, aes(x = Drug, y = log2CPM, fill = Drug)) +
  geom_boxplot(outlier.shape = NA) +
  scale_fill_manual(values = drug_palette) +
  facet_grid(. ~ Time, labeller = label_both) +
  geom_point(aes(color = Indv), size = 2, alpha = 0.5,
             position = position_jitter(width = -0.3, height = 0)) +
  ggtitle("DOX-only mid-late\nresponse (0.1 micromolar)") +
  labs(
    x = "Drugs",
    y = paste(gene_symbol, " log2CPM")
  ) +
  ylim(0, NA) +
  theme_bw() +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.ticks = element_line(linewidth = 1.5),
    axis.line = element_line(linewidth = 1.5),
    axis.text.y = element_text(size = 10, color = "black"),
    axis.text.x = element_text(size = 10, color = "black", angle = 45, hjust = 1),
    strip.text = element_text(size = 12, face = "bold")
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07

📌 Non response (0.5 micromolar)

# Load libraries
library(dplyr)
library(ggplot2)
library(reshape2)

# Load response group: Non response (0.5 µM)
prob_1_0.5 <- as.character(read.csv("data/prob_1_0.5.csv")$Entrez_ID)

# Print genes (optional)
prob_1_0.5
   [1] "653635"    "102723897" "102465432" "339451"    "57801"     "54973"    
   [7] "1855"      "54998"     "148413"    "55052"     "64856"     "219293"   
  [13] "83858"     "29101"     "643988"    "984"       "8511"      "728642"   
  [19] "9906"      "65220"     "2782"      "100506504" "199990"    "5192"     
  [25] "55229"     "440556"    "27237"     "1953"      "127262"    "49856"    
  [31] "57212"     "148870"    "57470"     "1677"      "261734"    "6146"     
  [37] "23463"     "8718"      "79707"     "3104"      "9903"      "148479"   
  [43] "90326"     "55735"     "23261"     "9341"      "11315"     "50651"    
  [49] "473"       "2023"      "80045"     "84275"     "199953"    "22883"    
  [55] "84328"     "64802"     "23095"     "378708"    "1676"      "5195"     
  [61] "54897"     "148345"    "23435"     "6723"      "2475"      "29914"    
  [67] "26270"     "10459"     "4524"      "1185"      "4878"      "55187"    
  [73] "126755"    "7799"      "79180"     "842"       "23341"     "84301"    
  [79] "6248"      "23207"     "284723"    "440567"    "23013"     "7709"     
  [85] "348487"    "128272"    "54455"     "55707"     "114819"    "55672"    
  [91] "84809"     "11209"     "4237"      "23400"     "6390"      "127707"   
  [97] "8659"      "23352"     "23065"     "100506730" "832"       "440574"   
 [103] "644068"    "255104"    "79594"     "50809"     "1889"      "5909"     
 [109] "401944"    "3339"      "29092"     "998"       "9923"      "23028"    
 [115] "7798"      "3352"      "80818"     "6920"      "55616"     "6135"     
 [121] "55629"     "57185"     "100506985" "10250"     "23585"     "55219"    
 [127] "56181"     "3925"      "5051"      "84676"     "149420"    "79927"    
 [133] "51042"     "10256"     "83442"     "79947"     "8289"      "63906"    
 [139] "10726"     "388610"    "23038"     "644961"    "2827"      "10163"    
 [145] "5511"      "6118"      "27293"     "55113"     "22826"     "93974"    
 [151] "65979"     "6080"      "54952"     "677838"    "10691"     "51441"    
 [157] "2035"      "6429"      "51102"     "9698"      "64129"     "90853"    
 [163] "8073"      "56063"     "65108"     "339487"    "5928"      "81493"    
 [169] "57648"     "64766"     "204"       "149076"    "1912"      "7579"     
 [175] "114784"    "113444"    "653160"    "79932"     "23154"     "5690"     
 [181] "127703"    "27095"     "55700"     "9967"      "79729"     "55194"    
 [187] "64960"     "728431"    "64769"     "54955"     "3633"      "10946"    
 [193] "51118"     "4725"      "643314"    "728448"    "8761"      "84879"    
 [199] "10487"     "6018"      "10269"     "127396"    "100130557" "4802"     
 [205] "163732"    "1503"      "100507178" "100132074" "1907"      "22887"    
 [211] "79717"     "728621"    "10465"     "114625"    "6513"      "10969"    
 [217] "64834"     "112950"    "23334"     "9682"      "9670"      "1802"     
 [223] "149473"    "55929"     "79033"     "79639"     "339541"    "6202"     
 [229] "7389"      "57643"     "84842"     "10327"     "4678"      "3652"     
 [235] "8503"      "55624"     "541468"    "7388"      "8569"      "148932"   
 [241] "64756"     "9813"      "51727"     "388630"    "54558"     "22996"    
 [247] "4898"      "51060"     "91408"     "200014"    "84950"     "2882"     
 [253] "79699"     "55268"     "6342"      "127435"    "54987"     "4116"     
 [259] "7804"      "54432"     "51668"     "115353"    "127428"    "606495"   
 [265] "51253"     "23648"     "619518"    "7268"      "25973"     "1718"     
 [271] "23358"     "5563"      "1600"      "114803"    "3725"      "4774"     
 [277] "83941"     "10207"     "163782"    "7398"      "85440"     "29929"    
 [283] "23421"     "55225"     "205"       "9829"      "54741"     "3953"     
 [289] "84251"     "57708"     "26135"     "55970"     "100289178" "79971"    
 [295] "57554"     "55631"     "9295"      "81573"     "1491"      "5733"     
 [301] "9406"      "257194"    "127253"    "204962"    "34"        "1744"     
 [307] "81849"     "23032"     "374986"    "79739"     "5567"      "1486"     
 [313] "23566"     "84144"     "57489"     "51100"     "9653"      "8543"     
 [319] "56267"     "23507"     "400761"    "84146"     "7049"      "646817"   
 [325] "79871"     "7813"      "6125"      "22823"     "50999"     "100131564"
 [331] "9411"      "199857"    "148534"    "100527978" "58155"     "51375"    
 [337] "391059"    "23443"     "64645"     "1629"      "100506007" "8634"     
 [343] "2135"      "1301"      "55599"     "280"       "55119"     "6301"     
 [349] "343263"    "127002"    "284613"    "83873"     "2773"      "271"      
 [355] "2948"      "2946"      "2944"      "2947"      "85369"     "388662"   
 [361] "9122"      "55791"     "10390"     "128344"    "128346"    "5906"     
 [367] "3752"      "55917"     "54879"     "829"       "9860"      "260425"   
 [373] "10717"     "56944"     "51592"     "10286"     "7812"      "80143"    
 [379] "10100"     "81839"     "845"       "55356"     "476"       "84852"    
 [385] "3321"      "9398"      "8458"      "80263"     "10885"     "10352"    
 [391] "101929147" "90874"     "4853"      "728841"    "101929796" "101060684"
 [397] "728855"    "103091866" "100288142" "101929780" "653519"    "11126"    
 [403] "10623"     "200035"    "10401"     "8515"      "10628"     "100132406"
 [409] "388677"    "149013"    "171423"    "607"       "200030"    "25832"    
 [415] "100996763" "400818"    "101060226" "57234"     "51027"     "10262"    
 [421] "10903"     "51177"     "81611"     "23632"     "51107"     "79630"    
 [427] "54460"     "9129"      "54507"     "2029"      "1513"      "29956"    
 [433] "56882"     "10500"     "388695"    "79005"     "8394"      "5710"     
 [439] "7286"      "81609"     "65005"     "11022"     "6281"      "6282"     
 [445] "6277"      "6275"      "23557"     "11000"     "9909"      "27173"    
 [451] "148327"    "10899"     "5872"      "6232"      "7170"      "25912"    
 [457] "9898"      "103"       "10654"     "57326"     "90780"     "6464"     
 [463] "1945"      "1942"      "54344"     "7059"      "4580"      "2630"     
 [469] "2629"      "1196"      "2224"      "55870"     "55249"     "23208"    
 [475] "6746"      "92312"     "23381"     "84283"     "112770"    "128240"   
 [481] "54865"     "63827"     "81875"     "5546"      "375033"    "9826"     
 [487] "3428"      "54935"     "8407"      "93185"     "8682"      "50717"    
 [493] "5824"      "1314"      "474338"    "23385"     "55600"     "50848"    
 [499] "100131187" "5202"      "4817"      "9191"      "8703"      "4720"     
 [505] "6391"      "257177"    "11266"     "25903"     "9722"      "400793"   
 [511] "223"       "54499"     "117143"    "387597"    "9019"      "25874"    
 [517] "55827"     "261726"    "2153"      "6403"      "92342"     "57147"    
 [523] "22920"     "23215"     "92346"     "5279"      "7292"      "27252"    
 [529] "55157"     "100506046" "26802"     "84614"     "27101"     "63931"    
 [535] "64326"     "60676"     "460"       "9462"      "55103"     "9917"     
 [541] "27"        "6646"      "163590"    "26092"     "9857"      "5768"     
 [547] "200058"    "100527964" "84320"     "9213"      "6041"      "1660"     
 [553] "3915"      "3918"      "23057"     "9887"      "23179"     "23127"    
 [559] "81563"     "6045"      "81627"     "83872"     "54953"     "100616345"
 [565] "51377"     "6738"      "343450"    "163486"    "140609"    "23046"    
 [571] "252839"    "3898"      "7135"      "23612"     "10440"     "51094"    
 [577] "9877"      "100381270" "6635"      "3814"      "84919"     "4194"     
 [583] "10446"     "23114"     "5929"      "64710"     "254428"    "284581"   
 [589] "103021295" "9641"      "83593"     "1939"      "8444"      "9261"     
 [595] "5362"      "50486"     "3664"      "27042"     "56256"     "55758"    
 [601] "7188"      "84791"     "100131205" "5525"      "25936"     "642946"   
 [607] "28982"     "79805"     "90806"     "100505832" "5629"      "5784"     
 [613] "51133"     "2104"      "7042"      "127018"    "55699"     "25782"    
 [619] "6791"      "4139"      "79762"     "9015"      "375056"    "64853"    
 [625] "148362"    "84976"     "55061"     "824"       "105369195" "4931"     
 [631] "3930"      "55740"     "6726"      "9725"      "10637"     "7044"     
 [637] "64746"     "83881"     "286826"    "5664"      "65094"     "116841"   
 [643] "79169"     "128308"    "81559"     "149603"    "5867"      "126731"   
 [649] "55746"     "23456"     "27097"     "9816"      "2590"      "79605"    
 [655] "183"       "84886"     "64801"     "128061"    "8443"      "54583"    
 [661] "7257"      "84284"     "3775"      "101927765" "388753"    "9453"     
 [667] "4811"      "128178"    "3964"      "55127"     "1131"      "2271"     
 [673] "23596"     "1122"      "200150"    "731275"    "10806"     "10000"    
 [679] "159"       "51029"     "116228"    "3192"      "101928068" "163882"   
 [685] "100130097" "25909"     "93474"     "79862"     "388759"    "84838"    
 [691] "25893"     "343171"    "80851"     "79894"     "267002"    "10771"    
 [697] "91734"     "3422"      "22884"     "5214"      "1316"      "1645"     
 [703] "10276"     "54906"     "2665"      "54522"     "84893"     "84991"    
 [709] "5209"      "22944"     "10659"     "9712"      "79746"     "254427"   
 [715] "55526"     "55176"     "11164"     "8872"      "57118"     "22929"    
 [721] "55691"     "51182"     "64421"     "221060"    "10557"     "221061"   
 [727] "8516"      "8029"      "7431"      "8027"      "221079"    "84898"    
 [733] "399726"    "387640"    "64215"     "23412"     "648"       "100499489"
 [739] "22921"     "56243"     "56952"     "57512"     "23590"     "10006"    
 [745] "91452"     "22931"     "143098"    "220906"    "51322"     "102724316"
 [751] "220929"    "6935"      "94134"     "3799"      "80314"     "79741"    
 [757] "3688"      "8829"      "56288"     "8453"      "219771"    "219749"   
 [763] "399744"    "441666"    "100129482" "221002"    "8187"      "220992"   
 [769] "414208"    "6387"      "11067"     "220979"    "93550"     "253725"   
 [775] "119016"    "728407"    "100287932" "653268"    "728113"    "643650"   
 [781] "5540"      "83849"     "414241"    "399761"    "653145"    "642517"   
 [787] "642826"    "439965"    "102724488" "100996758" "414224"    "143162"   
 [793] "2074"      "8505"      "100652748" "414189"    "387680"    "56624"    
 [799] "259230"    "653308"    "5592"      "23283"     "22943"     "7019"     
 [805] "8030"      "288"       "84159"     "221035"    "347731"    "26091"    
 [811] "84665"     "3189"      "55680"     "8034"      "80312"     "55749"    
 [817] "79009"     "9188"      "6832"      "80201"     "3098"      "6865"     
 [823] "55506"     "84883"     "56681"     "5464"      "140766"    "219699"   
 [829] "728978"    "55315"     "64115"     "9469"      "9806"      "51008"    
 [835] "119504"    "54541"     "54788"     "10367"     "90550"     "5033"     
 [841] "25961"     "11319"     "317662"    "23234"     "414245"    "51021"    
 [847] "118491"    "310"       "5532"      "159195"    "58529"     "729092"   
 [853] "729096"    "9632"      "118487"    "8509"      "818"       "7414"     
 [859] "26985"     "23522"     "51207"     "7417"      "118881"    "84858"    
 [865] "100131213" "3778"      "9231"      "11128"     "57178"     "10105"    
 [871] "219654"    "143244"    "650623"    "101060691" "311"       "84293"    
 [877] "10718"     "92211"     "2894"      "23063"     "79812"     "6623"     
 [883] "728118"    "728190"    "9562"      "84896"     "57559"     "59"       
 [889] "3988"      "84333"     "22849"     "3416"      "54536"     "26509"    
 [895] "118924"    "266971"    "64318"     "9124"      "10580"     "26123"    
 [901] "54619"     "9849"      "118788"    "728658"    "26148"     "84986"    
 [907] "644215"    "5223"      "51013"     "84287"     "64210"     "26287"    
 [913] "112817"    "83742"     "27291"     "84795"     "26507"     "81894"    
 [919] "1355"      "23268"     "1147"      "282991"    "6319"      "25956"    
 [925] "4714"      "55662"     "57715"     "84545"     "81855"     "81621"    
 [931] "8945"      "27343"     "25911"     "10360"     "10724"     "79803"    
 [937] "23082"     "9221"      "8729"      "5662"      "79176"     "79004"    
 [943] "79847"     "10121"     "51684"     "403"       "118980"    "54838"    
 [949] "729020"    "84833"     "51063"     "79991"     "9748"      "119392"   
 [955] "9446"      "159686"    "114815"    "7511"      "120"       "10285"    
 [961] "9126"      "143187"    "6934"      "840"       "374354"    "153"      
 [967] "55088"     "3983"      "57700"     "142940"    "57698"     "63877"    
 [973] "8661"      "10935"     "2869"      "6001"      "22876"     "79892"    
 [979] "55717"     "11101"     "5654"      "118672"    "36"        "9184"     
 [985] "119587"    "9679"      "23172"     "54764"     "26098"     "7390"     
 [991] "56647"     "55760"     "8038"      "5791"      "4255"      "387723"   
 [997] "119437"    "10539"     "55844"     "664"       "282974"    "170394"   
[1003] "3632"      "85442"     "10844"     "118472"    "282969"    "1892"     
[1009] "196743"    "92170"     "503542"    "51272"     "80162"     "10581"    
[1015] "8519"      "10410"     "81490"     "3265"      "8045"      "57661"    
[1021] "10522"     "283232"    "64787"     "347862"    "105369190" "79751"    
[1027] "6181"      "283229"    "977"       "66005"     "161"       "9024"     
[1033] "81532"     "1850"      "338651"    "1509"      "6150"      "283120"   
[1039] "3481"      "51214"     "975"       "10984"     "833"       "7748"     
[1045] "650368"    "116969"    "391"       "6737"      "85363"     "84067"    
[1051] "112464"    "6609"      "322"       "23647"     "26515"     "23378"    
[1057] "1200"      "8495"      "51700"     "8665"      "9866"      "6157"     
[1063] "6764"      "56674"     "493900"    "283102"    "10527"     "644656"   
[1069] "7465"      "440028"    "133"       "100463486" "50862"     "10335"    
[1075] "58486"     "729013"    "55031"     "9645"      "84953"     "55742"    
[1081] "7003"      "10418"     "22800"     "5140"      "55553"     "10944"    
[1087] "6207"      "4925"      "11234"     "2965"      "3939"      "7251"     
[1093] "55293"     "8048"      "79733"     "89797"     "100874014" "10196"    
[1099] "203859"    "2188"      "258010"    "159963"    "627"       "120534"   
[1105] "120526"    "5954"      "79832"     "55346"     "283267"    "25758"    
[1111] "4005"      "55226"     "847"       "8050"      "960"       "6506"     
[1117] "24147"     "54765"     "143458"    "29099"     "7189"      "5896"     
[1123] "8539"      "55761"     "51144"     "84680"     "2132"      "90139"    
[1129] "56981"     "57586"     "8534"      "55343"     "1408"      "9479"     
[1135] "51317"     "55626"     "283254"    "392"       "4038"      "84364"    
[1141] "29763"     "53"        "10062"     "91252"     "5702"      "55709"    
[1147] "4722"      "114900"    "23360"     "5795"      "2346"      "29015"    
[1153] "8501"      "26519"     "9246"      "710"       "25921"     "280636"   
[1159] "63901"     "5007"      "219988"    "27339"     "54972"     "55048"    
[1165] "26007"     "79869"     "54949"     "9066"      "746"       "3992"     
[1171] "3995"      "5866"      "7439"      "80150"     "79026"     "1937"     
[1177] "256364"    "23193"     "102288414" "790955"    "51035"     "26580"    
[1183] "221092"    "283237"    "79842"     "5436"      "374395"    "9303"     
[1189] "11145"     "25923"     "144097"    "1351"      "28992"     "10963"    
[1195] "83707"     "3338"      "7423"      "2286"      "26472"     "5331"     
[1201] "56834"     "572"       "2101"      "25824"     "283234"    "8986"     
[1207] "4221"      "402"       "7542"      "7108"      "728975"    "283131"   
[1213] "101927789" "378938"    "57410"     "4054"      "254102"    "4296"     
[1219] "399909"    "5970"      "84153"     "9158"      "83638"     "8815"     
[1225] "10992"     "55690"     "81876"     "9610"      "65003"     "10072"    
[1231] "254359"    "89"        "8722"      "55231"     "10432"     "5936"     
[1237] "83759"     "79703"     "9986"      "29984"     "57804"     "5883"     
[1243] "2950"      "4723"      "390213"    "347853"    "221"       "1119"     
[1249] "51111"     "55291"     "219927"    "3508"      "8500"      "55199"    
[1255] "55298"     "4926"      "55004"     "25906"     "2348"      "116985"   
[1261] "9873"      "9828"      "23201"     "58473"     "5870"      "51642"    
[1267] "80227"     "7351"      "283209"    "387787"    "143570"    "10825"    
[1273] "6188"      "283212"    "871"       "84649"     "7481"      "5612"     
[1279] "56946"     "2615"      "726"       "5058"      "1207"      "28971"    
[1285] "92105"     "79053"     "57558"     "9846"      "5547"      "27314"    
[1291] "100506233" "51585"     "338699"    "1740"      "55863"     "58487"    
[1297] "54843"     "8301"      "8322"      "1075"      "50507"     "10003"    
[1303] "26973"     "684959"    "692063"    "654320"    "677805"    "677822"   
[1309] "79101"     "9440"      "24145"     "4361"      "2526"      "51503"    
[1315] "9702"      "8898"      "8690"      "143872"    "5241"      "329"      
[1321] "114908"    "4319"      "100288077" "4312"      "84259"     "79659"    
[1327] "837"       "143879"    "60496"     "55531"     "8065"      "38"       
[1333] "4863"      "5962"      "143903"    "23235"     "5519"      "79796"    
[1339] "91893"     "64776"     "1410"      "3316"      "85458"     "6392"     
[1345] "5805"      "54970"     "1813"      "54494"     "10179"     "335"      
[1351] "5049"      "100652768" "9159"      "53826"     "196264"    "9354"     
[1357] "10632"     "4297"      "372"       "23187"     "1656"      "283149"   
[1363] "338657"    "6230"      "51399"     "10525"     "1798"      "25988"    
[1369] "79102"     "5818"      "23365"     "7007"      "6309"      "399959"   
[1375] "3312"      "57476"     "84897"     "53340"     "219844"    "50937"    
[1381] "84881"     "79607"     "114609"    "2313"      "100507392" "9743"     
[1387] "8538"      "4798"      "29068"     "103611081" "399979"    "50863"    
[1393] "4978"      "22997"     "83700"     "27034"     "100288778" "6540"     
[1399] "5927"      "84318"     "4815"      "65125"     "5893"      "81029"    
[1405] "79602"     "55846"     "83714"     "83695"     "7289"      "7004"     
[1411] "57097"     "894"       "57102"     "10566"     "4908"      "7132"     
[1417] "678655"    "51258"     "2597"      "25900"     "4839"      "51147"    
[1423] "171017"    "196500"    "50813"     "5763"      "10536"     "2784"     
[1429] "8078"      "7167"      "84727"     "171220"    "10233"     "2026"     
[1435] "1822"      "113246"    "5777"      "11331"     "677777"    "10436"    
[1441] "716"       "715"       "51279"     "5830"      "144195"    "6515"     
[1447] "55810"     "440078"    "8076"      "57494"     "1911"      "144571"   
[1453] "2"         "100499405" "29121"     "23710"     "10748"     "100129361"
[1459] "100506248" "503693"    "1389"      "1027"      "81575"     "51202"    
[1465] "9052"      "693199"    "50865"     "57613"     "83445"     "55729"    
[1471] "79887"     "144608"    "51729"     "11171"     "51071"     "4257"     
[1477] "121536"    "5139"      "79912"     "5965"      "51026"     "80763"    
[1483] "2998"      "3945"      "3764"      "10060"     "55907"     "9847"     
[1489] "144363"    "3845"      "8082"      "51768"     "9412"      "23012"    
[1495] "56938"     "8496"      "387849"    "55297"     "100506606" "83857"    
[1501] "55196"     "51067"     "144245"    "114134"    "1272"      "283464"   
[1507] "5756"      "400027"    "196528"    "81539"     "54407"     "100288798"
[1513] "347902"    "79657"     "10411"     "55652"     "1280"      "140461"   
[1519] "121274"    "784"       "9416"      "85478"     "51303"     "7480"     
[1525] "5571"      "8085"      "55716"     "79962"     "65244"     "84070"    
[1531] "25766"     "91010"     "7009"      "57701"     "6602"      "2819"     
[1537] "84987"     "51474"     "113251"    "25840"     "7024"      "6334"     
[1543] "401720"    "105369971" "91"        "160622"    "60673"     "144501"   
[1549] "3856"      "1975"      "283335"    "84926"     "3489"      "84975"    
[1555] "5204"      "5094"      "7786"      "6895"      "23583"     "22818"    
[1561] "3679"      "2647"      "967"       "10220"     "84324"     "4327"     
[1567] "84305"     "102724112" "1606"      "6490"      "5869"      "6171"     
[1573] "23344"     "140465"    "4637"      "6601"      "79035"     "93058"    
[1579] "10330"     "9924"      "283377"    "11176"     "506"       "10728"    
[1585] "4666"      "4665"      "6778"      "4035"      "246329"    "22864"    
[1591] "114785"    "10540"     "3798"      "10956"     "4234"      "121227"   
[1597] "338811"    "23041"     "57460"     "283417"    "29110"     "23592"    
[1603] "8091"      "84298"     "11213"     "23426"     "55832"     "8445"     
[1609] "56890"     "57122"     "55508"     "11052"     "10576"     "144453"   
[1615] "196446"    "101928062" "196441"    "64786"     "552889"    "11010"    
[1621] "4673"      "79738"     "1466"      "89795"     "6857"      "4659"     
[1627] "283310"    "8825"      "79611"     "84190"     "160335"    "400058"   
[1633] "91298"     "160418"    "4060"      "1634"      "440107"    "8411"     
[1639] "7334"      "8835"      "8738"      "10154"     "57458"     "7181"     
[1645] "10988"     "59277"     "121441"    "121456"    "55592"     "55681"    
[1651] "27340"     "400"       "79158"     "51019"     "79023"     "7184"     
[1657] "728568"    "50515"     "160428"    "23325"     "55198"     "9891"     
[1663] "10970"     "90488"     "80298"     "11137"     "11153"     "6404"     
[1669] "54434"     "84749"     "121642"    "9815"      "400073"    "10094"    
[1675] "29902"     "144715"    "160760"    "79600"     "160762"    "4633"     
[1681] "23316"     "6311"      "217"       "51275"     "8550"      "89894"    
[1687] "8759"      "10961"     "283450"    "6128"      "5781"      "53373"    
[1693] "80024"     "196463"    "113675"    "54997"     "23014"     "54621"    
[1699] "5037"      "64426"     "26353"     "10985"     "6175"      "5829"     
[1705] "23409"     "51499"     "8683"      "100506668" "84274"     "9921"     
[1711] "51367"     "35"        "121665"    "5025"      "10645"     "80196"    
[1717] "23067"     "5715"      "144406"    "605"       "56616"     "65082"    
[1723] "55596"     "65117"     "8562"      "79720"     "23457"     "51329"    
[1729] "57605"     "10198"     "91574"     "196383"    "353116"    "10959"    
[1735] "57696"     "23545"     "144348"    "7316"      "114795"    "121260"   
[1741] "2054"      "5901"      "283383"    "6433"      "317781"    "79050"    
[1747] "100996573" "23141"     "55743"     "7574"      "7637"      "7699"     
[1753] "101060200" "7556"      "10795"     "55269"     "7750"      "2700"     
[1759] "51084"     "8100"      "53342"     "253832"    "221154"    "2254"     
[1765] "6445"      "26278"     "4285"      "5042"      "9818"      "10810"    
[1771] "6144"      "2971"      "219402"    "255967"    "2321"      "51371"    
[1777] "3146"      "23111"     "29880"     "55578"     "122011"    "10631"    
[1783] "341640"    "80209"     "89890"     "9617"      "11215"     "94240"    
[1789] "29103"     "26747"     "55425"     "2963"      "7178"      "100190939"
[1795] "253512"    "83548"     "23091"     "8803"      "55270"     "29079"    
[1801] "22862"     "81602"     "83852"     "3839"      "26512"     "79758"    
[1807] "440138"    "9724"      "55901"     "10910"     "81550"     "64881"    
[1813] "9882"      "170622"    "1203"      "23077"     "122060"    "1910"     
[1819] "64062"     "54602"     "26050"     "407975"    "23483"     "10257"    
[1825] "5611"      "55757"     "5911"      "23348"     "9375"      "171425"   
[1831] "84899"     "79070"     "54841"     "3981"      "84945"     "1282"     
[1837] "55647"     "79587"     "8874"      "2159"      "102724474" "8451"     
[1843] "55208"     "55002"     "7027"      "2621"      "8881"      "65110"    
[1849] "283489"    "57820"     "85495"     "6038"      "6035"      "101929718"
[1855] "57447"     "55701"     "51222"     "11198"     "57680"     "9878"     
[1861] "56339"     "6297"      "5018"      "9056"      "122704"    "4323"     
[1867] "55147"     "10419"     "84962"     "22985"     "90673"     "105378176"
[1873] "8106"      "51310"     "10278"     "79178"     "8906"      "10901"    
[1879] "317749"    "728635"    "4901"      "80344"     "5720"      "51016"    
[1885] "55072"     "10379"     "10548"     "283629"    "145553"    "51292"    
[1891] "7051"      "161424"    "57523"     "23351"     "643866"    "29091"    
[1897] "4857"      "5587"      "23256"     "1690"      "29966"     "25938"    
[1903] "112487"    "80224"     "394"       "101954278" "112399"    "171546"   
[1909] "55837"     "1073"      "6729"      "283635"    "5687"      "4792"     
[1915] "51562"     "10484"     "122553"    "5411"      "4253"      "23116"    
[1921] "2287"      "57697"     "6235"      "6029"      "122769"    "6166"     
[1927] "4247"      "55172"     "122773"    "378706"    "382"       "6655"     
[1933] "27109"     "11183"     "51062"     "51199"     "114088"    "81542"    
[1939] "51637"     "30001"     "5706"      "6815"      "80821"     "23034"    
[1945] "93487"     "100129075" "54916"     "10640"     "122830"    "145407"   
[1951] "55860"     "5926"      "51339"     "112849"    "51528"     "6252"     
[1957] "51635"     "57570"     "145389"    "3091"      "81537"     "23224"    
[1963] "9495"      "22890"     "3306"      "91612"     "376267"    "2530"     
[1969] "10243"     "64398"     "1965"      "26499"     "57475"     "384"      
[1975] "10490"     "23503"     "677"       "87"        "8816"      "57452"    
[1981] "2079"      "55334"     "51241"     "10001"     "23508"     "4293"     
[1987] "22990"     "26094"     "58517"     "89932"     "79697"     "641371"   
[1993] "10965"     "83544"     "9240"      "91748"     "100506476" "145482"   
[1999] "57862"     "145483"    "51004"     "4329"      "91750"     "10577"    
[2005] "9870"      "1743"      "97"        "79696"     "91754"     "10972"    
[2011] "55640"     "7043"      "112752"    "2103"      "23357"     "85457"    
[2017] "57156"     "63894"     "81892"     "57143"     "6400"      "23768"    
[2023] "2581"      "55812"     "79882"     "161436"    "1112"      "55775"    
[2029] "56659"     "5700"      "801"       "9321"      "4287"      "4707"     
[2035] "53981"     "79890"     "5641"      "26175"     "84520"     "55148"    
[2041] "55727"     "78990"     "122509"    "5265"      "23405"     "79789"    
[2047] "51218"     "56967"     "55102"     "51527"     "64919"     "84193"    
[2053] "317762"    "84439"     "2009"      "51466"     "123096"    "7453"     
[2059] "79446"     "8788"      "55384"     "1778"      "3320"      "91833"    
[2065] "122416"    "7187"      "9578"      "4140"      "1152"      "84334"    
[2071] "3831"      "23368"     "9556"      "374569"    "26153"     "10572"    
[2077] "113146"    "3714"      "256281"    "2972"      "90135"     "647310"   
[2083] "100507437" "283755"    "646243"    "100132101" "339005"    "81614"    
[2089] "23191"     "114791"    "4692"      "347746"    "8123"      "100033416"
[2095] "100033432" "3653"      "7337"      "440248"    "440253"    "646278"   
[2101] "321"       "56160"     "653075"    "101059918" "728498"    "54893"    
[2107] "51621"     "653125"    "728047"    "100288615" "100996255" "643699"   
[2113] "342184"    "6263"      "57099"     "56851"     "161779"    "51234"    
[2119] "55505"     "254531"    "101928174" "9716"      "54989"     "283742"   
[2125] "10125"     "440275"    "6727"      "100131244" "100505573" "85455"    
[2131] "3712"      "90416"     "27079"     "100505648" "643338"    "84936"    
[2137] "54617"     "11261"     "51103"     "4058"      "23269"     "23005"    
[2143] "51332"     "825"       "255252"    "55142"     "57519"     "146059"   
[2149] "197131"    "23582"     "9836"      "161823"    "146050"    "27229"    
[2155] "9677"      "1159"      "117155"    "548596"    "2923"      "10169"    
[2161] "4236"      "84978"     "728758"    "113201"    "51496"     "645212"   
[2167] "8669"      "80208"     "100419583" "6652"      "2628"      "7782"     
[2173] "26258"     "58472"     "80031"     "1854"      "2200"      "23741"    
[2179] "9318"      "2585"      "2252"      "2553"      "9101"      "54822"    
[2185] "84888"     "23431"     "123169"    "10681"     "55930"     "51187"    
[2191] "5873"      "145788"    "4734"      "55329"     "6938"      "81488"    
[2197] "102"       "79811"     "54778"     "145773"    "2958"      "663"      
[2203] "302"       "6095"      "54832"     "83464"     "9960"      "23604"    
[2209] "84191"     "6642"      "79856"     "5479"      "23060"     "4947"     
[2215] "348093"    "51324"     "123263"    "390594"    "10845"     "54956"    
[2221] "9543"      "54878"     "51495"     "10260"     "8766"      "115752"   
[2227] "5604"      "10302"     "6124"      "79719"     "64799"     "100506686"
[2233] "145853"    "5607"      "8554"      "91860"     "10116"     "22801"    
[2239] "26035"     "54852"     "6176"      "55075"     "55323"     "79875"    
[2245] "4649"      "123228"    "56965"     "25820"     "83440"     "4756"     
[2251] "10021"     "27020"     "4016"      "64220"     "1583"      "8482"     
[2257] "84993"     "440288"    "80153"     "1543"      "1445"      "25989"    
[2263] "10066"     "4351"      "60490"     "56905"     "54939"     "79661"    
[2269] "4123"      "25942"     "10073"     "257364"    "2108"      "5955"     
[2275] "10099"     "79834"     "10363"     "23102"     "10518"     "55466"    
[2281] "80349"     "3658"      "1138"      "1136"      "10933"     "1512"     
[2287] "23423"     "23251"     "2184"      "9915"      "57214"     "79631"    
[2293] "647042"    "100134869" "440295"    "80154"     "642402"    "6218"     
[2299] "100505616" "9455"      "123207"    "53339"     "53346"     "57188"    
[2305] "440300"    "388152"    "643707"    "374650"    "388165"    "54993"    
[2311] "54581"     "84942"     "23478"     "9640"      "57538"     "642423"   
[2317] "101929479" "100133220" "4916"      "26589"     "64963"     "55070"    
[2323] "8800"      "290"       "348110"    "374655"    "3418"      "10509"    
[2329] "390637"    "8826"      "2242"      "4122"      "55898"     "26276"    
[2335] "8128"      "100507217" "440311"    "7026"      "91947"     "23336"    
[2341] "123355"    "7190"      "4205"      "145748"    "441733"    "55180"    
[2347] "55829"     "80213"     "123283"    "100128108" "55692"     "83986"    
[2353] "398"       "64714"     "9727"      "6650"      "9091"      "84326"    
[2359] "84331"     "197335"    "9028"      "10273"     "339123"    "84219"    
[2365] "146330"    "124093"    "64428"     "8912"      "8938"      "64718"    
[2371] "283951"    "9894"      "9742"      "90861"     "23162"     "197342"   
[2377] "90864"     "3029"      "6187"      "10607"     "2671"      "9143"     
[2383] "90850"     "7249"      "5310"      "25837"     "100507303" "84231"    
[2389] "57524"     "283870"    "1775"      "4917"      "57465"     "51005"    
[2395] "752014"    "83886"     "23524"     "6923"      "9074"      "64386"    
[2401] "100507419" "9235"      "7752"      "91151"     "7727"      "146434"   
[2407] "197358"    "1387"      "115"       "7023"      "84662"     "79585"    
[2413] "9093"      "57407"     "3163"      "342346"    "23295"     "84309"    
[2419] "124401"    "26048"     "29855"     "5493"      "54715"     "79091"    
[2425] "25880"     "23589"     "7874"      "2903"      "80063"     "780776"   
[2431] "23274"     "29066"     "2935"      "729993"    "2072"      "57496"    
[2437] "51283"     "642778"    "23420"     "100288162" "23042"     "54700"    
[2443] "353511"    "105369154" "100288332" "89927"     "4629"      "4363"     
[2449] "408050"    "102465683" "102723728" "283820"    "6210"      "23049"    
[2455] "10229"     "162073"    "51573"     "57020"     "124152"    "51704"    
[2461] "55623"     "57146"     "23117"     "100190986" "440345"    "7385"     
[2467] "255762"    "730094"    "29904"     "55718"     "1039"      "100131998"
[2473] "641298"    "100132247" "91949"     "23062"     "124454"    "4706"     
[2479] "79728"     "5930"      "27327"     "55114"     "102723510" "51451"    
[2485] "342357"    "79831"     "197370"    "2975"      "23247"     "728689"   
[2491] "112869"    "8663"      "11273"     "25970"     "100289092" "84901"    
[2497] "83985"     "27040"     "552900"    "440354"    "4150"      "112476"   
[2503] "9961"      "283899"    "8448"      "226"       "5531"      "83719"    
[2509] "654483"    "548593"    "100526830" "613037"    "595101"    "105371169"
[2515] "1731"      "197407"    "51333"     "79724"     "65988"     "115509"   
[2521] "730183"    "9810"      "9274"      "1489"      "93129"     "112755"   
[2527] "6810"      "339105"    "79001"     "84148"     "5652"      "2521"     
[2533] "283933"    "64755"     "124411"    "606551"    "84706"     "10294"    
[2539] "81533"     "83752"     "100507577" "6477"      "9683"      "869"      
[2545] "255919"    "113"       "29117"     "80205"     "5934"      "64400"    
[2551] "643911"    "4313"      "54947"     "1066"      "2775"      "267"      
[2557] "11051"     "583"       "9688"      "84166"     "221184"    "89970"    
[2563] "51090"     "6376"      "57019"     "57017"     "5432"      "55715"    
[2569] "10300"     "3801"      "29105"     "65009"     "23019"     "55238"    
[2575] "644649"    "123920"    "1783"      "57546"     "51647"     "283848"   
[2581] "80262"     "84752"     "8717"      "55336"     "3299"      "1874"     
[2587] "79767"     "29109"     "25894"     "79567"     "146206"    "50855"    
[2593] "388284"    "81577"     "57215"     "10204"     "5681"      "3931"     
[2599] "6560"      "9057"      "84138"     "79613"     "84916"     "84342"    
[2605] "64146"     "7014"      "80777"     "283970"    "55066"     "100506060"
[2611] "118460"    "11269"     "100506083" "55308"     "6483"      "25839"    
[2617] "92154"     "55697"     "55783"     "794"       "164"       "463"      
[2623] "5713"      "283922"    "440348"    "2734"      "55159"     "79726"    
[2629] "9564"      "124491"    "4166"      "3735"      "170692"    "283927"   
[2635] "57687"     "123775"    "2653"      "114780"    "5336"      "1012"     
[2641] "105371371" "29948"     "146167"    "23406"     "79786"     "55625"    
[2647] "23199"     "404550"    "64779"     "2303"      "100506581" "79791"    
[2653] "57338"     "54758"     "105371397" "8140"      "54971"     "84627"    
[2659] "161882"    "197187"    "348180"    "353"       "2588"      "863"      
[2665] "283860"    "197320"    "29123"     "6687"      "6137"      "5119"     
[2671] "8558"      "124044"    "9605"      "100128881" "92822"     "22980"    
[2677] "92806"     "172"       "2622"      "9501"      "400566"    "51031"    
[2683] "55178"     "64359"     "29928"     "29"        "7531"      "100306951"
[2689] "8578"      "83547"     "10594"     "84981"     "5176"      "114826"   
[2695] "124641"    "63826"     "55720"     "9905"      "79066"     "5048"     
[2701] "23277"     "23108"     "1497"      "55421"     "84254"     "23140"    
[2707] "124936"    "7326"      "342527"    "246"       "27043"     "409"      
[2713] "400569"    "5694"      "5338"      "50488"     "2811"      "26001"    
[2719] "5216"      "9552"      "23125"     "10749"     "124961"    "7775"     
[2725] "84622"     "9135"      "84268"     "56919"     "51009"     "22861"    
[2731] "23302"     "83394"     "84817"     "51003"     "388327"    "201232"   
[2737] "432"       "1856"      "79142"     "23399"     "23587"     "1984"     
[2743] "9744"      "8711"      "8742"      "26168"     "26781"     "102724164"
[2749] "9526"      "9513"      "55135"     "84316"     "1107"      "9196"     
[2755] "116840"    "6844"      "84314"     "6154"      "4628"      "8522"     
[2761] "4621"      "100128006" "60528"     "1352"      "201158"    "54902"    
[2767] "9611"      "125144"    "26800"     "388341"    "57336"     "56953"    
[2773] "10743"     "6720"      "146691"    "2314"      "125170"    "7156"     
[2779] "2310"      "51030"     "27077"     "5598"      "4239"      "9706"     
[2785] "11216"     "440416"    "105369205" "3768"      "339263"    "100462977"
[2791] "26118"     "7448"      "113235"    "9094"      "94005"     "124923"   
[2797] "6388"      "147011"    "83871"     "55731"     "26284"     "2319"     
[2803] "147015"    "57649"     "124925"    "51268"     "57532"     "57551"    
[2809] "84940"     "642"       "1362"      "9527"      "147172"    "440423"   
[2815] "79736"     "55813"     "23512"     "7756"      "5717"      "4642"     
[2821] "26022"     "10693"     "91603"     "117584"    "55106"     "163"      
[2827] "8148"      "414062"    "102724862" "101060321" "9326"      "80179"    
[2833] "31"        "6871"      "11072"     "11056"     "101060376" "101060389"
[2839] "414060"    "101929950" "102723859" "729873"    "440434"    "84311"    
[2845] "80725"     "4302"      "9349"      "3927"      "100505576" "6143"     
[2851] "5469"      "84152"     "10948"     "5409"      "93210"     "84299"    
[2857] "2886"      "94103"     "339287"    "22794"     "51195"     "147179"   
[2863] "6605"      "3858"      "147184"    "3880"      "10209"     "55175"    
[2869] "83538"     "28511"     "2648"      "5878"      "6777"      "6776"     
[2875] "284119"    "535"       "4669"      "80347"     "7283"      "79990"    
[2881] "2826"      "84313"     "65266"     "10197"     "146923"    "6155"     
[2887] "3430"      "10493"     "8153"      "10230"     "101929767" "4077"     
[2893] "379"       "1845"      "4355"      "84336"     "124801"    "92579"    
[2899] "10014"     "92591"     "56970"     "101926996" "10900"     "284069"   
[2905] "23131"     "124808"    "80174"     "4185"      "79877"     "79777"    
[2911] "9020"      "9842"      "55073"     "401884"    "147081"    "4137"     
[2917] "284058"    "9884"      "100506084" "51326"     "474170"    "9570"     
[2923] "653479"    "9755"      "124995"    "102724532" "51226"     "4779"     
[2929] "10951"     "29916"     "3213"      "3214"      "11267"     "10642"    
[2935] "22834"     "5245"      "4804"      "10237"     "3675"      "201191"   
[2941] "1277"      "51264"     "55379"     "64847"     "8913"      "91369"    
[2947] "10140"     "9043"      "4830"      "54799"     "1353"      "252983"   
[2953] "8161"      "59342"     "124540"    "51649"     "101929185" "140735"   
[2959] "9110"      "5414"      "55181"     "388403"    "79665"     "51651"    
[2965] "81671"     "6198"      "101927755" "653645"    "63897"     "653653"   
[2971] "342538"    "57508"     "9902"      "51204"     "92335"     "57003"    
[2977] "11325"     "117246"    "5705"      "2081"      "692227"    "64750"    
[2983] "5578"      "27092"     "5718"      "25926"     "284018"    "51321"    
[2989] "22901"     "5573"      "54757"     "201266"    "6169"      "94015"    
[2995] "26151"     "54868"     "3396"      "6613"      "51081"     "57409"    
[3001] "100287042" "60386"     "2885"      "9772"      "283989"    "3993"     
[3007] "80022"     "9400"      "643008"    "3691"      "2584"      "23558"    
[3013] "91107"     "64978"     "85302"     "51"        "6730"      "114804"   
[3019] "5635"      "63893"     "100507246" "439921"    "23210"     "79157"    
[3025] "6397"      "10801"     "100131096" "11322"     "9144"      "9489"     
[3031] "7077"      "124583"    "114897"    "64772"     "84733"     "57332"    
[3037] "8535"      "125058"    "55036"     "6448"      "284131"    "100129503"
[3043] "284184"    "124565"    "57597"     "25794"     "80233"     "55666"    
[3049] "83882"     "339231"    "348262"    "5034"      "396"       "51529"    
[3055] "5833"      "79058"     "201254"    "2873"      "64118"     "9123"     
[3061] "284004"    "79415"     "3607"      "56270"     "10966"     "6904"     
[3067] "284207"    "727758"    "81035"     "84034"     "727896"    "10627"    
[3073] "339290"    "7541"      "23136"     "645369"    "79822"     "5797"     
[3079] "57045"     "10928"     "9989"      "9218"      "147495"    "63895"    
[3085] "65258"     "84617"     "10650"     "56907"     "56984"     "79959"    
[3091] "5771"      "81929"     "8731"      "440482"    "6093"      "80000"    
[3097] "114799"    "100128893" "64693"     "5932"      "85019"     "147463"   
[3103] "3909"      "6875"      "1829"      "9331"      "22878"     "54941"    
[3109] "51444"     "64762"     "441818"    "10982"     "7572"      "2589"     
[3115] "83608"     "25800"     "55250"     "55034"     "57724"     "115106"   
[3121] "494470"    "29906"     "9063"      "83473"     "84064"     "51124"    
[3127] "4087"      "9811"      "54808"     "497661"    "6139"      "10449"    
[3133] "4152"      "5596"      "4200"      "55520"     "4089"      "8932"     
[3139] "5874"      "80323"     "6925"      "9352"      "2235"      "100505549"
[3145] "5205"      "23327"     "10892"     "55205"     "90701"     "3998"     
[3151] "147372"    "23556"     "57614"     "8792"      "596"       "5055"     
[3157] "54495"     "220164"    "25914"     "81832"     "400657"    "284273"   
[3163] "10194"     "7776"      "4772"      "80148"     "440498"    "10907"    
[3169] "22850"     "375690"    "54531"     "91978"     "997"       "682"      
[3175] "55658"     "5064"      "79948"     "10025"     "91300"     "1820"     
[3181] "116444"    "91304"     "103625684" "10347"     "5434"      "2879"     
[3187] "22904"     "255057"    "90007"     "148046"    "2593"      "148223"   
[3193] "54760"     "399664"    "10975"     "6929"      "100288123" "81926"    
[3199] "113178"    "84444"     "8175"      "4946"      "51690"     "56928"    
[3205] "26517"     "6449"      "115196"    "58492"     "56926"     "51343"    
[3211] "10362"     "9546"      "116541"    "23217"     "693222"    "1938"     
[3217] "51588"     "5605"      "51548"     "170961"    "55702"     "79187"    
[3223] "55620"     "84954"     "6455"      "80700"     "84717"     "56005"    
[3229] "91039"     "100131094" "10226"     "23030"     "9667"      "6294"     
[3235] "374875"    "25873"     "9361"      "163154"    "56931"     "126328"   
[3241] "400673"    "828"       "8498"      "5990"      "4298"      "2962"     
[3247] "8570"      "79085"     "56927"     "9322"      "140467"    "57662"    
[3253] "126003"    "115704"    "404217"    "79603"     "51293"     "4701"     
[3259] "6234"      "51129"     "100507567" "9230"      "4670"      "148156"   
[3265] "57693"     "10781"     "79088"     "101928238" "54811"     "162993"   
[3271] "5300"      "55337"     "56342"     "5032"      "8666"      "9294"     
[3277] "125950"    "3385"      "7297"      "9817"      "84971"     "65095"    
[3283] "3609"      "1785"      "25959"     "57572"     "126075"    "2057"     
[3289] "5589"      "199692"    "55552"     "126068"    "126069"    "90594"    
[3295] "90592"     "388507"    "7695"      "51710"     "10224"     "163051"   
[3301] "163049"    "84292"     "1725"      "30000"     "29911"     "7001"     
[3307] "22983"     "1777"      "2639"      "256126"    "2193"      "90480"    
[3313] "4784"      "55621"     "81576"     "84245"     "28974"     "284454"   
[3319] "54862"     "90379"     "113230"    "90378"     "100507373" "22859"    
[3325] "10212"     "3337"      "4713"      "4854"      "26993"     "8907"     
[3331] "10365"     "58513"     "10523"     "79939"     "79041"     "2063"     
[3337] "29086"     "64981"     "79016"     "57719"     "25796"     "79709"    
[3343] "55201"     "6142"      "115098"    "3780"      "23031"     "84769"    
[3349] "5864"      "3727"      "25804"     "54858"     "170463"    "23770"    
[3355] "79036"     "25789"     "5976"      "9454"      "10147"     "93436"    
[3361] "284439"    "729991"    "126382"    "57794"     "23383"     "51079"    
[3367] "148113"    "9170"      "51291"     "7561"      "284440"    "56242"    
[3373] "91120"     "90649"     "100129842" "199777"    "7639"      "80264"    
[3379] "148206"    "170959"    "7562"      "148203"    "353088"    "163227"   
[3385] "7757"      "7644"      "148213"    "388524"    "101929206" "148189"   
[3391] "101927151" "7386"      "10775"     "83636"     "898"       "8725"     
[3397] "22847"     "147991"    "84079"     "85415"     "126248"    "4037"     
[3403] "1054"      "5184"      "79047"     "10054"     "126374"    "55900"    
[3409] "339318"    "148103"    "90075"     "126375"    "57655"     "3249"     
[3415] "163175"    "5348"      "53827"     "100128682" "93099"     "100506469"
[3421] "1340"      "55957"     "126393"    "84807"     "644096"    "199745"   
[3427] "1155"      "826"       "84924"     "101927599" "92283"     "284408"   
[3433] "388536"    "25850"     "147923"    "199704"    "92285"     "163087"   
[3439] "284459"    "148266"    "148268"    "101927720" "100507433" "163255"   
[3445] "51276"     "22835"     "84775"     "23094"     "94274"     "10653"    
[3451] "9424"      "27335"     "81"        "147968"    "1891"      "6183"     
[3457] "342897"    "55095"     "54623"     "6217"      "6829"      "92609"    
[3463] "10683"     "126272"    "163126"    "9149"      "2091"      "5704"     
[3469] "339327"    "163131"    "284323"    "208"       "23646"     "147746"   
[3475] "29946"     "8425"      "9253"      "79934"     "284325"    "6626"     
[3481] "112398"    "558"       "11100"     "90324"     "641649"    "593"      
[3487] "55101"     "64763"     "116115"    "2077"      "23152"     "100996307"
[3493] "3991"      "23474"     "126298"    "79177"     "199731"    "5329"     
[3499] "284349"    "7711"      "7773"      "7673"      "7766"      "342909"   
[3505] "7767"      "100379224" "7768"      "10780"     "7769"      "7772"     
[3511] "7733"      "5817"      "56971"     "602"       "4059"      "10452"    
[3517] "348"       "11129"     "79760"     "57787"     "147700"    "10848"    
[3523] "10849"     "7408"      "24139"     "6633"      "54814"     "23403"    
[3529] "147912"    "1760"      "339344"    "808"       "147906"    "100506068"
[3535] "25865"     "1175"      "2909"      "54958"     "10055"     "26093"    
[3541] "11133"     "29998"     "29997"     "6415"      "8605"      "100505812"
[3547] "10945"     "2906"      "6141"      "770"       "587"       "51171"    
[3553] "4924"      "581"       "2512"      "2997"      "10856"     "6625"     
[3559] "3270"      "28968"     "951"       "55011"     "126133"    "23521"    
[3565] "6205"      "2217"      "57333"     "6237"      "58506"     "126129"   
[3571] "160"       "80199"     "53635"     "101928378" "11284"     "84335"    
[3577] "79735"     "22809"     "51231"     "79784"     "3748"      "7376"     
[3583] "112703"    "284361"    "126119"    "6320"      "84798"     "90353"    
[3589] "147645"    "7728"      "147650"    "84765"     "65251"     "59348"    
[3595] "80110"     "9668"      "284371"    "5518"      "162963"    "102724105"
[3601] "84436"     "147660"    "55762"     "7696"      "55769"     "81856"    
[3607] "90338"     "342926"    "91661"     "388561"    "55422"     "59283"    
[3613] "4696"      "29844"     "26121"     "4849"      "79042"     "6203"     
[3619] "104355426" "114823"    "94059"     "55655"     "54869"     "54776"    
[3625] "7138"      "352909"    "5794"      "23640"     "3589"      "6158"     
[3631] "89887"     "100507290" "51157"     "29924"     "126208"    "147948"   
[3637] "386758"    "63934"     "388566"    "9422"      "390980"    "10794"    
[3643] "125919"    "57343"     "284306"    "10597"     "7565"      "388567"   
[3649] "400720"    "79744"     "374928"    "256051"    "55659"     "284307"   
[3655] "348327"    "7693"      "10520"     "7710"      "54807"     "730051"   
[3661] "147687"    "10172"     "147685"    "80095"     "100128398" "65982"    
[3667] "79673"     "27300"     "7554"      "105372483" "6193"      "7691"     
[3673] "10998"     "10155"     "27243"     "9040"      "65996"     "642273"   
[3679] "52"        "7173"      "7260"      "51112"     "55256"     "100506054"
[3685] "6201"      "78989"     "57498"     "129642"    "8853"      "9270"     
[3691] "6868"      "10971"     "9014"      "79954"     "10130"     "130814"   
[3697] "9475"      "1876"      "9687"      "23175"     "28951"     "4613"     
[3703] "7447"      "79677"     "57665"     "130502"    "57539"     "9741"     
[3709] "23369"     "388"       "64342"     "54454"     "165324"    "80304"    
[3715] "51639"     "375190"    "391356"    "51277"     "1788"      "1838"     
[3721] "3797"      "3030"      "85465"     "54978"     "22924"     "54867"    
[3727] "11117"     "10669"     "10113"     "8884"      "51374"     "285126"   
[3733] "2976"      "8890"      "9784"      "130557"    "29959"     "84226"    
[3739] "84450"     "11321"     "9913"      "22950"     "105374378" "64080"    
[3745] "9577"      "5500"      "55006"     "81606"     "253558"    "30845"    
[3751] "51072"     "6683"      "58484"     "84272"     "25780"     "51232"    
[3757] "6801"      "54497"     "5610"      "100505876" "10153"     "55471"    
[3763] "23683"     "25797"     "10602"     "64225"     "92906"     "90957"    
[3769] "729967"    "8491"      "63892"     "79823"     "5581"      "23433"    
[3775] "9419"      "9655"      "805"       "618"       "4072"      "2956"     
[3781] "80204"     "129285"    "9378"      "51130"     "494143"    "27248"    
[3787] "10936"     "23198"     "6711"      "130162"    "6233"      "4528"     
[3793] "344405"    "55704"     "112942"    "57223"     "87178"     "2202"     
[3799] "7444"      "55120"     "53335"     "64895"     "5966"      "150962"   
[3805] "5194"      "84542"     "130872"    "7514"      "84140"     "10575"    
[3811] "150684"    "51057"     "7360"      "6509"      "5861"      "10097"    
[3817] "4211"      "54465"     "10438"     "56902"     "5534"      "25927"    
[3823] "554251"    "27302"     "84168"     "2673"      "27247"     "22848"    
[3829] "5093"      "51449"     "6637"      "84908"     "7039"      "119"      
[3835] "113419"    "55577"     "84693"     "400961"    "23233"     "6697"     
[3841] "84279"     "10574"     "8446"      "1716"      "200424"    "10797"    
[3847] "57835"     "1639"      "84058"     "6242"      "84865"     "84695"    
[3853] "1796"      "3099"      "56655"     "6936"      "80059"     "9168"     
[3859] "56888"     "83439"     "84173"     "822"       "2677"      "10791"    
[3865] "129303"    "10713"     "388969"    "84913"     "8869"      "90784"    
[3871] "25885"     "51652"     "7844"      "400966"    "5343"      "285074"   
[3877] "102724642" "5342"      "729857"    "55258"     "654342"    "64969"    
[3883] "7549"      "51011"     "285033"    "9391"      "23020"     "55683"    
[3889] "90342"     "51239"     "54910"     "1329"      "23505"     "3631"     
[3895] "493753"    "25972"     "51601"     "129531"    "10190"     "9669"     
[3901] "51455"     "3899"      "4862"      "6160"      "11138"     "100506286"
[3907] "9448"      "84804"     "130827"    "79074"     "8440"      "653489"   
[3913] "84620"     "285190"    "27233"     "5903"      "165055"    "100287216"
[3919] "151011"    "84220"     "96626"     "440894"    "7851"      "205251"   
[3925] "151009"    "729540"    "84524"     "727851"    "6574"      "150472"   
[3931] "729468"    "84771"     "118433"    "80255"     "10096"     "8886"     
[3937] "55240"     "140738"    "200373"    "2736"      "7247"      "2995"     
[3943] "274"       "2071"      "55677"     "4648"      "84826"     "83607"    
[3949] "56886"     "84084"     "440905"    "728378"    "285103"    "80097"    
[3955] "84317"     "92856"     "26469"     "50649"     "130074"    "150786"   
[3961] "653784"    "90557"     "29798"     "2863"      "344148"    "81615"    
[3967] "905"       "22930"     "84083"     "23190"     "1615"      "3176"     
[3973] "339745"    "9839"      "26122"     "130576"    "130574"    "27249"    
[3979] "55183"     "4703"      "10254"     "55660"     "151188"    "3760"     
[3985] "2820"      "728066"    "90"        "29994"     "22925"     "5937"     
[3991] "10010"     "100996579" "285116"    "25801"     "2888"      "6326"     
[3997] "79809"     "6335"      "253782"    "10324"     "9360"      "493911"   
[4003] "6741"      "130507"    "79901"     "1781"      "8520"      "3655"     
[4009] "5163"      "11069"     "51776"     "79634"     "151556"    "7456"     
[4015] "1134"      "1386"      "10651"     "220988"    "8540"      "65977"    
[4021] "91404"     "151126"    "10477"     "6744"      "151242"    "2487"     
[4027] "142679"    "55854"     "3685"      "165215"    "7035"      "1281"     
[4033] "1290"      "84128"     "30061"     "150709"    "94101"     "84281"    
[4039] "100131211" "4664"      "8436"      "57181"     "80055"     "91526"    
[4045] "23451"     "80219"     "3329"      "3336"      "25843"     "5334"     
[4051] "129450"    "285172"    "4709"      "8837"      "841"       "130540"   
[4057] "66008"     "55437"     "65062"     "57679"     "7341"      "51602"    
[4063] "659"       "150864"    "130026"    "57404"     "10152"     "65059"    
[4069] "117583"    "54891"     "1933"      "57683"     "8745"      "8609"     
[4075] "3417"      "200576"    "4133"      "6120"      "151050"    "10314"    
[4081] "79582"     "471"       "2335"      "7520"      "50485"     "6168"     
[4087] "3485"      "3488"      "10109"     "58190"     "57695"     "84812"    
[4093] "64320"     "27148"     "1593"      "27013"     "130617"    "79065"    
[4099] "8576"      "3300"      "5798"      "23549"     "130612"    "3623"     
[4105] "2043"      "2181"      "7857"      "130340"    "57590"     "8452"     
[4111] "84236"     "1286"      "1285"      "56947"     "3267"      "164781"   
[4117] "92737"     "6672"      "81618"     "5707"      "80210"     "5147"     
[4123] "64708"     "9470"      "26058"     "3635"      "8527"      "55230"    
[4129] "23677"     "116987"    "79781"     "10920"     "1293"      "64284"    
[4135] "10267"     "140739"    "339768"    "80895"     "643387"    "26146"    
[4141] "4705"      "2817"      "57140"     "50636"     "3069"      "9855"     
[4147] "666"       "51078"     "23192"     "84289"     "728294"    "80023"    
[4153] "1457"      "140809"    "9491"      "55321"     "55968"     "10326"    
[4159] "140885"    "6628"      "79175"     "3420"      "56265"     "64601"    
[4165] "5786"      "64949"     "60493"     "9762"      "8455"      "80332"    
[4171] "54976"     "1059"      "57506"     "11237"     "9962"      "29058"    
[4177] "149837"    "149840"    "1114"      "55612"     "650"       "23236"    
[4183] "128710"    "182"       "55617"     "51575"     "11034"     "6238"     
[4189] "27131"     "7692"      "10621"     "10483"     "92675"     "100270804"
[4195] "51126"     "22803"     "7056"      "29107"     "64412"     "79953"    
[4201] "57136"     "101926889" "5834"      "22981"     "26152"     "100134868"
[4207] "100289097" "284802"    "81502"     "598"       "128853"    "81572"    
[4213] "9777"      "5326"      "9371"      "171023"    "149951"    "1789"     
[4219] "51654"     "63941"     "84905"     "22913"     "8894"      "191"      
[4225] "83737"     "83658"     "23054"     "2937"      "26133"     "55741"    
[4231] "10893"     "101410538" "11190"     "51614"     "80307"     "6676"     
[4237] "8904"      "10137"     "9054"      "140823"    "9584"      "51230"    
[4243] "51282"     "647979"    "22839"     "10398"     "60436"     "55969"    
[4249] "140710"    "140711"    "10904"     "4826"      "56259"     "128434"   
[4255] "9675"      "58490"     "57148"     "7150"      "5335"      "26013"    
[4261] "10955"     "7529"      "80336"     "90196"     "116092"    "10005"    
[4267] "140831"    "90204"     "128497"    "140825"    "5360"      "63935"    
[4273] "57468"     "51006"     "112858"    "23613"     "57580"     "10564"    
[4279] "1434"      "6780"      "55661"     "441951"    "9334"      "55905"    
[4285] "7335"      "101927559" "140876"    "84612"     "55653"     "101927631"
[4291] "3755"      "4773"      "10079"     "5203"      "55816"     "1477"     
[4297] "55370"     "9217"      "164284"    "100534593" "79716"     "1522"     
[4303] "81027"     "514"       "51012"     "116154"    "6874"      "149986"   
[4309] "26039"     "9885"      "6227"      "1299"      "11083"     "54915"    
[4315] "85441"     "26205"     "50861"     "10139"     "56731"     "140685"   
[4321] "140701"    "80331"     "100113386" "24148"     "6919"      "4987"     
[4327] "102724023" "102724159" "102724219" "102724441" "102724594" "102724843"
[4333] "102724951" "102723360" "100500862" "100500815" "103504731" "6782"     
[4339] "8204"      "1525"      "4685"      "54148"     "58494"     "522"      
[4345] "351"       "116159"    "9510"      "26046"     "10600"     "56911"    
[4351] "2897"      "7074"      "30811"     "9875"      "140290"    "56683"    
[4357] "94104"     "3588"      "3454"      "3460"      "757"       "54943"    
[4363] "2618"      "6651"      "6453"      "1827"      "54093"     "873"      
[4369] "100506428" "6493"      "51227"     "7267"      "1859"      "2114"     
[4375] "8624"      "54014"     "150082"    "25825"     "25966"     "10785"    
[4381] "4731"      "7307"      "8566"      "1476"      "8568"      "5822"     
[4387] "8209"      "5211"      "755"       "7327"      "754"       "104"      
[4393] "23275"     "642852"    "80781"     "54039"     "1292"      "8888"     
[4399] "54059"     "5116"      "51816"     "27443"     "23786"     "55670"    
[4405] "11274"     "8214"      "9993"      "100652736" "6576"      "8218"     
[4411] "7290"      "7353"      "5413"      "100526833" "10587"     "1312"     
[4417] "27037"     "29801"     "65078"     "85359"     "91179"     "84861"    
[4423] "51586"     "5297"      "9342"      "8216"      "80764"     "9127"     
[4429] "728441"    "7332"      "29799"     "5594"      "9647"      "8940"     
[4435] "96610"     "91227"     "9609"      "613"       "26226"     "91316"    
[4441] "266747"    "7621"      "4320"      "6598"      "66035"     "653689"   
[4447] "100037417" "1652"      "2953"      "56241"     "23384"     "6634"     
[4453] "2678"      "388886"    "85379"     "91355"     "157"       "89781"    
[4459] "8459"      "4330"      "23760"     "284900"    "150274"    "129080"   
[4465] "2130"      "10634"     "162"       "8563"      "29796"     "84164"    
[4471] "8897"      "652968"    "83874"     "10291"     "85371"     "200312"   
[4477] "51537"     "23481"     "339665"    "150290"    "22880"     "55000"    
[4483] "6525"      "113791"    "54944"     "56478"     "51493"     "25793"    
[4489] "9215"      "10043"     "23551"     "4151"      "23543"     "4627"     
[4495] "25828"     "8664"      "114904"    "5880"      "11135"     "26088"    
[4501] "57026"     "11078"     "3005"      "23464"     "129138"    "51386"    
[4507] "5435"      "9463"      "23539"     "25829"     "1454"      "3761"     
[4513] "11144"     "646851"    "25776"     "56993"     "25777"     "10126"    
[4519] "23467"     "23466"     "9582"      "200316"    "60489"     "6122"     
[4525] "4248"      "54471"     "91582"     "23112"     "158"       "27352"    
[4531] "57591"     "63929"     "9978"      "83746"     "5905"      "23264"    
[4537] "7008"      "10766"     "50"        "171568"    "5372"      "4809"     
[4543] "79879"     "91689"     "1565"      "1564"      "6942"      "94009"    
[4549] "253190"    "91695"     "1727"      "27349"     "25830"     "25813"    
[4555] "29780"     "64098"     "85352"     "100506714" "10762"     "2192"     
[4561] "25814"     "5465"      "64781"     "25771"     "23774"     "79174"    
[4567] "415116"    "56666"     "85378"     "83933"     "23654"     "414918"   
[4573] "9701"      "9997"      "1375"      "23542"     "284942"    "27255"    
[4579] "152330"    "51095"     "51185"     "285362"    "6419"      "8553"     
[4585] "55207"     "29995"     "5021"      "440944"    "10474"     "10093"    
[4591] "84522"     "132014"    "78987"     "55831"     "442075"    "401052"   
[4597] "152302"    "55845"     "7428"      "3656"      "9797"      "491"      
[4603] "10533"     "9686"      "5894"      "55287"     "6161"      "79885"    
[4609] "2199"      "131474"    "79188"     "6533"      "51244"     "84077"    
[4615] "100505641" "7182"      "23473"     "100505696" "9467"      "131965"   
[4621] "26061"     "23180"     "6304"      "79750"     "7324"      "28512"    
[4627] "55768"     "54995"     "152110"    "9497"      "152100"    "152098"   
[4633] "100873979" "7048"      "152189"    "51143"     "25904"     "2720"     
[4639] "643853"    "10491"     "25827"     "23122"     "10015"     "9881"     
[4645] "9852"      "9209"      "2803"      "3680"      "101928153" "10217"    
[4651] "30"        "4615"      "93"        "64689"     "3921"      "9045"     
[4657] "253639"    "1499"      "54986"     "22906"     "7433"      "51188"    
[4663] "4820"      "25994"     "84892"     "55129"     "285343"    "353274"   
[4669] "10168"     "7584"      "101928592" "91392"     "57456"     "131616"   
[4675] "23016"     "64866"     "23395"     "8994"      "22908"     "54585"    
[4681] "79443"     "6997"      "259173"    "29122"     "4634"      "5745"     
[4687] "151903"    "23218"     "23276"     "6599"      "22907"     "4134"     
[4693] "51385"     "51246"     "5210"      "1294"      "7384"      "65010"    
[4699] "1951"      "51447"     "5576"      "788"       "11180"     "55152"    
[4705] "25915"     "3615"      "54870"     "5859"      "64925"     "200942"   
[4711] "387"       "6988"      "84276"     "327"       "4485"      "63891"    
[4717] "29925"     "9807"      "10180"     "10181"     "100775107" "101928931"
[4723] "7869"      "24142"     "3373"      "8692"      "11068"     "11070"    
[4729] "9254"      "51409"     "1154"      "7867"      "84836"     "25864"    
[4735] "6159"      "11344"     "132160"    "80335"     "132158"    "25981"    
[4741] "8314"      "11188"     "440957"    "26354"     "28972"     "6787"     
[4747] "3699"      "3700"      "51460"     "55802"     "776"       "55349"    
[4753] "23272"     "54756"     "201626"    "2317"      "5162"      "200845"   
[4759] "5793"      "80145"     "9861"      "115286"    "26018"     "8801"     
[4765] "285203"    "7110"      "9039"      "10550"     "4286"      "2850"     
[4771] "727936"    "151987"    "55096"     "23024"     "101927249" "401074"   
[4777] "100131827" "285237"    "2042"      "5627"      "200894"    "131544"   
[4783] "56650"     "1371"      "100874207" "10402"     "131566"    "55773"    
[4789] "56954"     "9868"      "348801"    "55076"     "10342"     "54931"    
[4795] "57092"     "100009676" "6152"      "105374013" "285359"    "79598"    
[4801] "91775"     "214"       "344595"    "55081"     "9666"      "25945"    
[4807] "79669"     "257144"    "4345"      "64422"     "55032"     "100506621"
[4813] "151887"    "29083"     "91653"     "55779"     "152185"    "205717"   
[4819] "254887"    "57577"     "26137"     "152404"    "7348"      "8702"     
[4825] "57514"     "55254"     "51300"     "141"       "10063"     "2932"     
[4831] "11167"     "285282"    "2960"      "2804"      "9657"      "6565"     
[4837] "26355"     "54554"     "3836"      "83666"     "10954"     "26984"    
[4843] "64770"     "8997"      "3693"      "57493"     "84561"     "7707"     
[4849] "8723"      "114885"    "54946"     "166012"    "131601"    "50512"    
[4855] "11343"     "29927"     "8607"      "60678"     "6184"      "28976"    
[4861] "7555"      "22820"     "8971"      "339942"    "55764"     "23129"    
[4867] "7200"      "646300"    "30849"     "28990"     "84129"     "79876"    
[4873] "27031"     "7018"      "51560"     "6259"      "51421"     "339855"   
[4879] "5523"      "5096"      "4690"      "199221"    "51163"     "22808"    
[4885] "55179"     "56945"     "9276"      "100507291" "64084"     "55186"    
[4891] "92369"     "92370"     "253461"    "9616"      "483"       "5357"     
[4897] "7220"      "23350"     "205428"    "5352"      "2992"      "25937"    
[4903] "9819"      "27230"     "51714"     "6478"      "26084"     "170506"   
[4909] "4311"      "8833"      "7881"      "25976"     "730091"    "339894"   
[4915] "85476"     "56925"     "64747"     "57560"     "3840"      "151742"   
[4921] "51068"     "79740"     "11235"     "93556"     "2122"      "84517"    
[4927] "100128164" "7095"      "80012"     "6498"      "56648"     "64778"    
[4933] "5290"      "55669"     "86"        "57129"     "4711"      "339829"   
[4939] "8087"      "23200"     "54165"     "23101"     "84002"     "54800"    
[4945] "55689"     "55486"     "10057"     "8893"      "1857"      "1173"     
[4951] "1981"      "23355"     "285382"    "1962"      "200879"    "59343"    
[4957] "6434"      "51726"     "5648"      "101929130" "339929"    "55214"    
[4963] "152137"    "151963"    "57110"     "84789"     "4976"      "93109"    
[4969] "131583"    "152002"    "23527"     "5504"      "727956"    "440993"   
[4975] "255812"    "200931"    "5130"      "255758"    "165918"    "348793"   
[4981] "200933"    "54965"     "220729"    "84248"     "84223"     "6165"     
[4987] "152687"    "7700"      "170960"    "521"       "100129917" "10815"    
[4993] "2580"      "84286"     "1609"      "10861"     "3425"      "285463"   
[4999] "1487"      "10296"     "101928621" "57654"     "285464"    "152877"   
[5005] "92305"     "3954"      "7469"      "401115"    "339983"    "79441"    
[5011] "57732"     "6047"      "79155"     "6452"      "118"       "10227"    
[5017] "8602"      "2868"      "3064"      "6002"      "3083"      "85013"    
[5023] "55646"     "166793"    "53407"     "100507266" "1400"      "7466"     
[5029] "93621"     "93622"     "9778"      "93624"     "57537"     "768239"   
[5035] "94031"     "152992"    "8532"      "56606"     "9948"      "85460"    
[5041] "9364"      "26234"     "285550"    "683"       "8842"      "254251"   
[5047] "9353"      "133015"    "80333"     "6649"      "51091"     "55300"    
[5053] "29945"     "10568"     "389203"    "768211"    "55276"     "23216"    
[5059] "51088"     "57728"     "11019"     "7358"      "100885776" "23244"    
[5065] "55728"     "79730"     "323"       "7345"      "22998"     "55161"    
[5071] "10463"     "10396"     "60558"     "132789"    "57205"     "152518"   
[5077] "7006"      "285527"    "54940"     "132299"    "23142"     "6443"     
[5083] "57291"     "81608"     "3791"      "55858"     "9575"      "57482"    
[5089] "5471"      "10606"     "5978"      "3490"      "2044"      "55236"    
[5095] "550112"    "91746"     "6783"      "10117"     "2926"      "9508"     
[5101] "285521"    "174"       "3576"      "441024"    "374"       "25849"    
[5107] "25898"     "152815"    "8999"      "8615"      "27163"     "419"      
[5113] "53371"     "57619"     "10983"     "306"       "152559"    "118429"   
[5119] "441027"    "22872"     "79725"     "51138"     "27235"     "51023"    
[5125] "84142"     "84803"     "23001"     "5602"      "5783"      "100506746"
[5131] "57563"     "6696"      "5311"      "9429"      "55008"     "8916"     
[5137] "285512"    "166815"    "6622"      "401145"    "8633"      "1977"     
[5143] "285556"    "79982"     "5530"      "4790"      "4126"      "7323"     
[5149] "133308"    "56898"     "80319"     "54790"     "57117"     "79807"    
[5155] "255743"    "9255"      "9061"      "113612"    "6164"      "84570"    
[5161] "100533182" "10427"     "55013"     "81579"     "3426"      "1950"     
[5167] "79071"     "2028"      "132720"    "55435"     "7368"      "100093630"
[5173] "57721"     "54532"     "401152"    "645513"    "8654"      "11107"    
[5179] "79625"     "7222"      "11162"     "166378"    "10252"     "79960"    
[5185] "54510"     "4717"      "4258"      "55534"     "57484"     "64399"    
[5191] "10393"     "152485"    "11157"     "84068"     "55751"     "90826"    
[5197] "79658"     "4306"      "152503"    "729830"    "54553"     "23321"    
[5203] "303"       "23240"     "5356"      "2983"      "1519"      "56034"    
[5209] "2110"      "56884"     "55319"     "55016"     "152756"    "11275"    
[5215] "7092"      "55601"     "84869"     "51809"     "8819"      "79804"    
[5221] "80817"     "2823"      "60559"     "7424"      "175"       "55714"    
[5227] "1635"      "152641"    "80014"     "55602"     "201965"    "56977"    
[5233] "201973"    "57587"     "353322"    "27295"     "285440"    "2195"     
[5239] "2483"      "6389"      "57491"     "11336"     "11076"     "653082"   
[5245] "79844"     "65980"     "85409"     "79888"     "728609"    "728613"   
[5251] "64979"     "4726"      "50805"     "153572"    "153571"    "79192"    
[5257] "84246"     "108"       "79072"     "100505738" "22948"     "10299"    
[5263] "1611"      "56172"     "90441"     "728411"    "1008"      "643401"   
[5269] "1004"      "64083"     "54545"     "51663"     "4883"      "81792"    
[5275] "55299"     "167127"    "6502"      "646719"    "65250"     "9631"     
[5281] "3977"      "9180"      "253260"    "5562"      "100506548" "6167"     
[5287] "730"       "5019"      "285636"    "100132356" "100506639" "64417"    
[5293] "100652772" "100506674" "10884"     "348980"    "79668"     "3670"     
[5299] "53918"     "3672"      "3673"      "257396"    "54622"     "112574"   
[5305] "23517"     "8611"      "379013"    "153129"    "133396"    "3572"     
[5311] "4214"      "133383"    "166968"    "65056"     "5144"      "91942"    
[5317] "643155"    "3796"      "27292"     "51194"     "401190"    "285672"   
[5323] "373"       "80006"     "57486"     "55914"     "375449"    "5295"     
[5329] "1022"      "202243"    "102157402" "6880"      "100506658" "6607"     
[5335] "11039"     "11042"     "6606"      "4671"      "55814"     "64087"    
[5341] "4131"      "689"       "84135"     "8507"      "84340"     "26049"    
[5347] "3156"      "10087"     "2151"      "2149"      "1393"      "55109"    
[5353] "6902"      "8546"      "9522"      "10184"     "9456"      "167153"   
[5359] "345778"    "7060"      "441089"    "9765"      "340120"    "100462981"
[5365] "100131067" "23635"     "6228"      "7518"      "10085"     "1350"     
[5371] "5921"      "902"       "4208"      "1070"      "153364"    "10622"    
[5377] "116068"    "57561"     "83989"     "285600"    "22836"     "2745"     
[5383] "831"       "64167"     "4012"      "285704"    "1105"      "100289230"
[5389] "345757"    "5066"      "23262"     "90355"     "1946"      "64839"    
[5395] "9867"      "4124"      "642987"    "91137"     "114915"    "6728"     
[5401] "7905"      "4163"      "3781"      "5229"      "51014"     "51397"    
[5407] "100422885" "1657"      "51334"     "153443"    "4015"      "9627"     
[5413] "6643"      "5480"      "93166"     "1456"      "501"       "115123"   
[5419] "644873"    "337876"    "3094"      "56990"     "51735"     "96459"    
[5425] "8974"      "8572"      "553103"    "6584"      "11127"     "23176"    
[5431] "27089"     "27125"     "56951"     "7416"      "5515"      "7320"     
[5437] "91368"     "10802"     "819"       "9879"      "79770"     "84105"    
[5443] "100616209" "9547"      "7045"      "6695"      "10949"     "9499"     
[5449] "51306"     "10902"     "8697"      "51308"     "1495"      "64374"    
[5455] "724102"    "9782"      "51247"     "389333"    "202051"    "202052"   
[5461] "340061"    "7322"      "51523"     "492311"    "84418"     "5201"     
[5467] "1839"      "54882"     "10011"     "3550"      "373863"    "3035"     
[5473] "56143"     "56141"     "9752"      "56135"     "56134"     "56131"    
[5479] "26167"     "57717"     "56127"     "56126"     "56125"     "56124"    
[5485] "56121"     "8641"      "9708"      "56106"     "56099"     "56105"    
[5491] "5098"      "56098"     "8841"      "89848"     "9604"      "81848"    
[5497] "23092"     "81555"     "153768"    "153769"    "54439"     "5521"     
[5503] "1809"      "389336"    "81545"     "154"       "22885"     "134266"   
[5509] "1452"      "133522"    "644762"    "1836"      "5159"      "815"      
[5515] "340075"    "6208"      "11346"     "85027"     "6678"      "10146"    
[5521] "2890"      "4238"      "55568"     "79685"     "10826"     "25929"    
[5527] "153743"    "134353"    "9685"      "7265"      "114825"    "2561"     
[5533] "900"       "5917"      "345630"    "4869"      "6793"      "92181"    
[5539] "54492"     "57222"     "51121"     "8992"      "8614"      "91272"    
[5545] "80315"     "1812"      "94081"     "84321"     "51491"     "192286"   
[5551] "1212"      "23197"     "22838"     "114787"    "51720"     "23567"    
[5557] "64324"     "27166"     "10636"     "9260"      "79930"     "51428"    
[5563] "54540"     "54732"     "11285"     "202181"    "728554"    "23138"    
[5569] "64777"     "85007"     "57396"     "117608"    "80108"     "80230"    
[5575] "821"       "9794"      "51149"     "23061"     "55819"     "5601"     
[5581] "100859930" "729678"    "101928649" "84851"     "100507602" "100132062"
[5587] "340156"    "5269"      "401232"    "4835"      "670"       "7280"     
[5593] "347733"    "389362"    "57128"     "10667"     "6239"      "83732"    
[5599] "1832"      "654"       "81567"     "55003"     "51522"     "81853"    
[5605] "54898"     "221710"    "4739"      "100113407" "100130357" "51256"    
[5611] "54438"     "23408"     "51406"     "63933"     "3720"      "84062"    
[5617] "2766"      "221662"    "9972"      "7172"      "221656"    "154141"   
[5623] "2822"      "7915"      "9856"      "51567"     "55604"     "10475"    
[5629] "3077"      "8353"      "54718"     "11120"     "29777"     "100129195"
[5635] "80345"     "7745"      "651302"    "64288"     "5987"      "3135"     
[5641] "3136"      "3105"      "100507399" "30834"     "6992"      "3139"     
[5647] "414777"    "23"        "5514"      "79969"     "8449"      "10211"    
[5653] "2968"      "57176"     "54535"     "100507436" "4277"      "692199"   
[5659] "7917"      "7918"      "58496"     "80737"     "7407"      "57819"    
[5665] "3305"      "3303"      "50854"     "26797"     "7936"      "6499"     
[5671] "8859"      "720"       "1590"      "7146"      "721"       "7148"     
[5677] "1388"      "10554"     "6048"      "177"       "63940"     "1302"     
[5683] "6257"      "7923"      "6015"      "6293"      "6222"      "8705"     
[5689] "6892"      "1616"      "5252"      "51596"     "221504"    "578"      
[5695] "221496"    "6631"      "222663"    "7629"      "5467"      "4736"     
[5701] "7005"      "57699"     "221477"    "221476"    "9025"      "23070"    
[5707] "154467"    "60685"     "2739"      "2740"      "101929555" "10930"    
[5713] "221442"    "4188"      "7942"      "10817"     "9477"      "55173"    
[5719] "55809"     "23304"     "401261"    "285855"    "10695"     "4201"     
[5725] "5528"      "9820"      "51069"     "89953"     "5754"      "6722"     
[5731] "23113"     "24149"     "89845"     "221424"    "57510"     "9587"     
[5737] "55168"     "7422"      "101929705" "64928"     "3326"      "988"      
[5743] "8464"      "53405"     "51302"     "9481"      "442213"    "135398"   
[5749] "85315"     "114327"    "9697"      "125050"    "22858"     "26268"    
[5755] "60481"     "55227"     "221336"    "57691"     "9532"      "375513"   
[5761] "100463487" "23469"     "441155"    "1310"      "1297"      "57579"    
[5767] "135154"    "60682"     "79940"     "80759"     "25821"     "1915"     
[5773] "26503"     "1303"      "1347"      "55754"     "26054"     "3351"     
[5779] "83699"     "594"       "5238"      "112611"    "4199"      "9892"     
[5785] "51167"     "22832"     "9096"      "4907"      "10492"     "387066"   
[5791] "57038"     "55122"     "8732"      "10957"     "135295"    "2570"     
[5797] "23195"     "60468"     "81491"     "29078"     "26235"     "51805"    
[5803] "25957"     "85015"     "892"       "10973"     "57531"     "389421"   
[5809] "9474"      "100133941" "57673"     "57107"     "55084"     "8724"     
[5815] "246269"    "84071"     "285755"    "6610"      "64780"     "9841"     
[5821] "221264"    "9896"      "84154"     "442245"    "91749"     "10758"    
[5827] "2534"      "3910"      "221294"    "23270"     "7259"      "29940"    
[5833] "51389"     "345895"    "221302"    "3841"      "285761"    "57120"    
[5839] "116150"    "254394"    "25842"     "3298"      "57515"     "10924"    
[5845] "7164"      "135112"    "135114"    "84870"     "55862"     "5796"     
[5851] "3908"      "93663"     "9465"      "9439"      "26002"     "8417"     
[5857] "2070"      "154091"    "10767"     "54806"     "9774"      "9053"     
[5863] "340146"    "53832"     "3459"      "7128"      "23593"     "25901"    
[5869] "57211"     "153910"    "84946"     "5325"      "83443"     "8676"     
[5875] "7957"      "84085"     "10090"     "23118"     "85313"     "116254"   
[5881] "645958"    "11104"     "9113"      "348995"    "5110"      "84918"    
[5887] "79465"     "81706"     "57480"     "25902"     "55005"     "23345"    
[5893] "22828"     "57492"     "79683"     "51429"     "84947"     "56995"    
[5899] "6993"      "94120"     "83861"     "6648"      "39"        "6950"     
[5905] "6581"      "4216"      "79992"     "113402"    "6196"      "8635"     
[5911] "4301"      "7058"      "6991"      "55780"     "84498"     "5134"     
[5917] "56975"     "5154"      "54919"     "51608"     "90639"     "84310"    
[5923] "26173"     "7975"      "114796"    "8379"      "4521"      "29886"    
[5929] "55501"     "101927181" "221927"    "23288"     "80727"     "2768"     
[5935] "57786"     "222962"    "84629"     "51622"     "5395"      "7965"     
[5941] "27102"     "5879"      "79034"     "7559"      "441194"    "56913"    
[5947] "101927391" "54468"     "729852"    "113263"    "4697"      "221806"   
[5953] "2115"      "729920"    "28969"     "27075"     "222901"    "6671"     
[5959] "8701"      "54543"     "84668"     "55975"     "115416"    "256355"   
[5965] "29896"     "1197"      "90693"     "51678"     "54205"     "136895"   
[5971] "9603"      "11335"     "8935"      "11112"     "9586"      "54504"    
[5977] "1124"      "646762"    "9805"      "55033"     "222166"    "223082"   
[5983] "222161"    "23658"     "23080"     "100129460" "441208"    "102724668"
[5989] "25948"     "11328"     "51251"     "989"       "23366"     "54749"    
[5995] "273"       "57002"     "349114"    "8621"      "285954"    "2737"     
[6001] "79020"     "64983"     "644"       "64951"     "51619"     "84820"    
[6007] "285955"    "401331"    "28988"     "10652"     "816"       "23386"    
[6013] "54606"     "4967"      "83637"     "94239"     "5814"      "285958"   
[6019] "9238"      "64759"     "168507"    "168448"    "375567"    "2887"     
[6025] "23480"     "1956"      "360132"    "2631"      "5723"      "51142"    
[6031] "728927"    "649395"    "340252"    "7697"      "10793"     "51351"    
[6037] "2086"      "168374"    "441242"    "2990"      "27297"     "285908"   
[6043] "100289098" "493754"    "154881"    "644794"    "55069"     "64940"    
[6049] "441250"    "260294"    "442578"    "55695"     "9275"      "84277"    
[6055] "6804"      "83451"     "1365"      "1364"      "3984"      "7458"     
[6061] "84163"     "5383"      "389524"    "5380"      "54441"     "155400"   
[6067] "5387"      "83862"     "51657"     "4191"      "3315"      "7532"     
[6073] "113878"    "105375355" "441263"    "57639"     "54103"     "5782"     
[6079] "57157"     "9863"      "10512"     "781"       "9723"      "223117"   
[6085] "222223"    "9988"      "11257"     "5244"      "53616"     "442523"   
[6091] "261729"    "79846"     "85865"     "8321"      "889"       "54467"    
[6097] "257415"    "1021"      "10282"     "1278"      "64921"     "23089"    
[6103] "5445"      "10165"     "7979"      "57001"     "389538"    "22853"    
[6109] "25851"     "25798"     "8295"      "101927550" "10552"     "11333"    
[6115] "8896"      "9551"      "285989"    "79027"     "221785"    "89122"    
[6121] "7586"      "7589"      "7551"      "10980"     "9179"      "6878"     
[6127] "245812"    "389541"    "221914"    "79037"     "441272"    "5379"     
[6133] "101752399" "55063"     "56257"     "221908"    "81628"     "222950"   
[6139] "3268"      "100316904" "5118"      "2783"      "64599"     "10248"    
[6145] "2050"      "56996"     "7205"      "81844"     "5054"      "7425"     
[6151] "51024"     "1523"      "729597"    "79706"     "80228"     "5439"     
[6157] "100271927" "548644"    "441273"    "10156"     "246721"    "100134938"
[6163] "100310812" "100129424" "27000"     "5701"      "5649"      "54517"    
[6169] "168451"    "4189"      "83943"     "9732"      "11179"     "401397"   
[6175] "26136"     "858"       "857"       "830"       "93653"     "51691"    
[6181] "23554"     "54556"     "79974"     "93664"     "4698"      "8976"     
[6187] "168850"    "401399"    "3614"      "402483"    "346653"    "813"      
[6193] "2318"      "23534"     "286016"    "407835"    "340348"    "6608"     
[6199] "57464"     "105375620" "7328"      "51530"     "51200"     "4232"     
[6205] "26958"     "5420"      "100500804" "231"       "800"       "340351"   
[6211] "78996"     "4850"      "647087"    "26266"     "5764"      "9162"     
[6217] "64764"     "8805"      "57670"     "92092"     "51631"     "154791"   
[6223] "28996"     "64761"     "84255"     "27147"     "90956"     "4708"     
[6229] "673"       "51650"     "57189"     "6742"      "100463482" "3792"     
[6235] "7791"      "728377"    "7984"      "26047"     "8454"      "9601"     
[6241] "57541"     "8427"      "155060"    "155061"    "79970"     "23145"    
[6247] "155066"    "65999"     "113763"    "5919"      "29803"     "285971"   
[6253] "728743"    "28959"     "55365"     "285973"    "11194"     "83590"    
[6259] "54480"     "51667"     "349136"    "63917"     "58508"     "100128822"
[6265] "202781"    "3638"      "100506302" "129790"    "140545"    "9690"     
[6271] "10049"     "7434"      "644128"    "101927595" "157695"    "157697"   
[6277] "2055"      "9639"      "9920"      "9172"      "79648"     "55326"    
[6283] "90459"     "8658"      "4482"      "54984"     "286046"    "66036"    
[6289] "100506990" "7991"      "29883"     "5157"      "57509"     "5108"     
[6295] "427"       "101929066" "63898"     "55174"     "11178"     "80346"    
[6301] "649"       "9796"      "661"       "5533"      "541565"    "23221"    
[6307] "9583"      "51312"     "6781"      "80005"     "54793"     "665"      
[6313] "10687"     "1808"      "51435"     "55246"     "55140"     "7976"     
[6319] "2137"      "55756"     "51669"     "10671"     "2961"      "29942"    
[6325] "79845"     "100507420" "11160"     "728024"    "11212"     "25960"    
[6331] "55290"     "80223"     "9070"      "27257"     "9530"      "84513"    
[6337] "54904"     "2260"      "286140"    "59339"     "83877"     "8754"     
[6343] "79698"     "51125"     "10947"     "5423"      "7419"      "81790"    
[6349] "2339"      "84197"     "138050"    "5591"      "7336"      "6591"     
[6355] "10434"     "64321"     "96764"     "4067"      "5324"      "54928"    
[6361] "90362"     "137886"    "8439"      "9760"      "5862"      "55636"    
[6367] "444"       "9420"      "55156"     "9650"      "84675"     "137872"   
[6373] "56260"     "641638"    "79848"     "10565"     "23213"     "10499"    
[6379] "157869"    "6129"      "27067"     "55284"     "54968"     "56704"    
[6385] "54332"     "83690"     "101805492" "79776"     "5569"      "51101"    
[6391] "11075"     "23462"     "28957"     "619279"    "3612"      "92421"    
[6397] "401466"    "11059"     "51115"     "8895"      "8767"      "1666"     
[6403] "55529"     "286144"    "137392"    "55472"     "2669"      "25962"    
[6409] "286148"    "55656"     "7381"      "6383"      "10404"     "55353"    
[6415] "4147"      "6156"      "10247"     "10940"     "6788"      "1345"     
[6421] "25897"     "26986"     "83955"     "528"       "8323"      "115908"   
[6427] "81034"     "29967"     "55074"     "137735"    "3646"      "7227"     
[6433] "5885"      "441376"    "90390"     "6873"      "7373"      "28998"    
[6439] "22882"     "93594"     "11244"     "55093"     "157378"    "55039"    
[6445] "101927612" "11236"     "83940"     "4715"      "137209"    "9897"     
[6451] "286053"    "157638"    "101867536" "4609"      "51571"     "23167"    
[6457] "23639"     "51105"     "6482"      "57623"     "169044"    "54108"    
[6463] "27161"     "5747"      "22898"     "11156"     "389690"    "203062"   
[6469] "4061"      "286128"    "2738"      "100507316" "116447"    "114822"   
[6475] "23144"     "79792"     "93100"     "84948"     "286075"    "100128338"
[6481] "22827"     "83481"     "2907"      "81858"     "51236"     "727957"   
[6487] "23246"     "642658"    "3297"      "340393"    "26233"     "79581"    
[6493] "29894"     "55630"     "84988"     "2875"      "113655"    "9684"     
[6499] "80728"     "90987"     "6132"      "7553"      "28991"     "58500"    
[6505] "7564"      "286101"    "286102"    "100287171" "55871"     "9933"     
[6511] "169792"    "10171"     "3717"      "55848"     "29126"     "79956"    
[6517] "26953"     "115426"    "23081"     "90871"     "7306"      "286343"   
[6523] "8777"      "4781"      "6619"      "54801"     "55667"     "6194"     
[6529] "1029"      "1030"      "1993"      "286319"    "79886"     "9373"     
[6535] "80173"     "203228"    "48"        "23586"     "10210"     "4712"     
[6541] "138474"    "54840"     "3301"      "4799"      "65083"     "441459"   
[6547] "304"       "54926"     "25853"     "51271"     "57462"     "84688"    
[6553] "138716"    "11258"     "10280"     "3590"      "23349"     "25822"    
[6559] "7415"      "30968"     "7169"      "9827"      "4882"      "26206"    
[6565] "1211"      "10020"     "152006"    "84186"     "9380"      "9925"     
[6571] "64425"     "51010"     "79269"     "92014"     "100289137" "253650"   
[6577] "79937"     "401509"    "389741"    "105376047" "100132352" "595135"   
[6583] "644019"    "105376066" "728577"    "728673"    "220869"    "26149"    
[6589] "643827"    "100131997" "445571"    "116224"    "320"       "256691"   
[6595] "23137"     "687"       "7763"      "301"       "138199"    "54981"    
[6601] "26578"     "653162"    "2650"      "158471"    "23230"     "29968"    
[6607] "414328"    "29979"     "80318"     "55582"     "3190"      "80010"    
[6613] "23287"     "60560"     "51280"     "81689"     "79670"     "440173"   
[6619] "1612"      "23552"     "286223"    "1903"      "53358"     "10507"    
[6625] "10912"     "549"       "3376"      "55035"     "65268"     "158293"   
[6631] "5253"      "138639"    "54754"     "84641"     "84909"     "5727"     
[6637] "100128782" "195827"    "22869"     "158431"    "441457"    "84278"    
[6643] "23424"     "158427"    "4686"      "7507"      "51531"     "10541"    
[6649] "54187"     "203286"    "79695"     "7046"      "85365"     "10952"    
[6655] "55014"     "27130"     "91283"     "8577"      "54534"     "7743"     
[6661] "84302"     "56254"     "116443"    "25934"     "55335"     "83856"    
[6667] "55151"     "58499"     "5887"      "23731"     "11217"     "79987"    
[6673] "23392"     "158399"    "22949"     "7357"      "64420"     "158405"   
[6679] "1318"      "23307"     "1317"      "246184"    "9128"      "114987"   
[6685] "54836"     "5998"      "114991"    "80709"     "203197"    "3371"     
[6691] "5069"      "22954"     "1955"      "26190"     "5711"      "253039"   
[6697] "7185"      "727"       "51552"     "57000"     "153090"    "158135"   
[6703] "92400"     "5082"      "54542"     "10773"     "57684"     "23637"    
[6709] "81571"     "55342"     "57706"     "10783"     "5695"      "2649"     
[6715] "100379345" "11224"     "2800"      "5537"      "10244"     "26130"    
[6721] "79109"     "5090"      "89853"     "84253"     "64855"     "286207"   
[6727] "138428"    "27433"     "2356"      "203"       "30815"     "8818"     
[6733] "100289019" "25792"     "1759"      "375757"    "51117"     "10999"    
[6739] "81605"     "51148"     "89891"     "6418"      "2021"      "51490"    
[6745] "883"       "56262"     "22845"     "23511"     "57171"     "9536"     
[6751] "51759"     "23048"     "57720"     "25"        "10319"     "83543"    
[6757] "8021"      "84726"     "83549"     "2889"      "9442"      "64794"    
[6763] "11092"     "7248"      "1056"      "6838"      "6130"      "26815"    
[6769] "6835"      "6836"      "57109"     "11093"     "11094"     "1757"     
[6775] "7410"      "8019"      "11091"     "10439"     "9858"      "138162"   
[6781] "57582"     "157922"    "10422"     "90120"     "728489"    "6621"     
[6787] "56623"     "9919"      "51162"     "10555"     "84973"     "100131193"
[6793] "55684"     "389813"    "158056"    "8721"      "286256"    "5730"     
[6799] "20"        "56654"     "91373"     "11253"     "29952"     "29882"    
[6805] "286262"    "94107"     "727800"    "375791"    "25920"     "54863"    
[6811] "54932"     "10811"     "375775"    "116225"    "85026"     "774"      
[6817] "8225"      "3563"      "293"       "105373102" "751580"    "80161"    
[6823] "8623"      "9189"      "401577"    "4267"      "414"       "415"      
[6829] "57502"     "8226"      "8228"      "3730"      "357"       "1183"     
[6835] "3052"      "395"       "10943"     "7114"      "9367"      "6399"     
[6841] "8481"      "2824"      "54960"     "286480"    "158747"    "59272"    
[6847] "340591"    "11238"     "8233"      "8905"      "55787"     "5931"     
[6853] "9185"      "10389"     "6792"      "5256"      "5160"      "389840"   
[6859] "30011"     "256643"    "256714"    "1964"      "6197"      "404281"   
[6865] "6611"      "139411"    "10549"     "1968"      "7543"      "5165"     
[6871] "5422"      "2710"      "5638"      "7504"      "94122"     "8406"     
[6877] "7102"      "58526"     "54880"     "159013"    "9282"      "8239"     
[6883] "1654"      "4128"      "4129"      "139341"    "7403"      "101927574"
[6889] "55634"     "641339"    "401588"    "84679"     "7317"      "8552"     
[6895] "5127"      "203414"    "6853"      "7076"      "2002"      "8409"     
[6901] "347344"    "7569"      "57232"     "24140"     "64840"     "5935"     
[6907] "10013"     "27344"     "7355"      "3750"      "56850"     "11230"    
[6913] "11152"     "27238"     "4007"      "28952"     "1184"      "9500"     
[6919] "8242"      "23096"     "8243"      "3028"      "10075"     "2245"     
[6925] "54552"     "10916"     "90736"     "158880"    "11279"     "550643"   
[6931] "442454"    "474343"    "54466"     "158586"    "7789"      "55613"    
[6937] "340554"    "81887"     "9843"      "286451"    "9754"      "64219"    
[6943] "27112"     "51248"     "1741"      "4303"      "54413"     "6872"     
[6949] "8473"      "93953"     "340527"    "441502"    "392490"    "5303"     
[6955] "6191"      "5255"      "4674"      "7503"      "554203"    "100302692"
[6961] "51132"     "51260"     "57692"     "546"       "84061"     "1349"     
[6967] "441531"    "5230"      "51616"     "254065"    "79366"     "6451"     
[6973] "139324"    "139322"    "7552"      "1121"      "56062"     "4675"     
[6979] "286499"    "1730"      "64102"     "7105"      "27286"     "402415"   
[6985] "59353"     "695"       "3188"      "51566"     "84460"     "11013"    
[6991] "9737"      "100287765" "55859"     "90843"     "56849"     "51186"    
[6997] "27018"     "79921"     "85012"     "9338"      "286527"    "100101478"
[7003] "401612"    "644353"    "139231"    "203447"    "79589"     "55285"    
[7009] "5631"      "1831"      "11043"     "5716"      "1288"      "1287"     
[7015] "2182"      "84187"     "91851"     "401613"    "79868"     "154796"   
[7021] "57631"     "101927352" "5358"      "54521"     "139818"    "100303728"
[7027] "292"       "63932"     "55922"     "23157"     "6170"      "65109"    
[7033] "7737"      "4694"      "79576"     "10009"     "55026"     "23439"    
[7039] "3920"      "8450"      "28985"     "29071"     "331"       "10735"    
[7045] "10178"     "6594"      "4952"      "10813"     "63035"     "9363"     
[7051] "55609"     "10495"     "3547"      "51765"     "57826"     "101928578"
[7057] "90161"     "2719"      "3251"      "84848"     "441518"    "8933"     
[7063] "26071"     "644596"    "7626"      "203522"    "93380"     "10479"    
[7069] "79649"     "27336"     "9459"      "158696"    "2258"      "286410"   
[7075] "23641"     "139065"    "2334"      "100131434" "91966"     "100272228"
[7081] "83692"     "3149"      "203547"    "79057"     "1069"      "29944"    
[7087] "92002"     "139728"    "215"       "5365"      "3421"      "3897"     
[7093] "393"       "8260"      "3054"      "8269"      "3654"      "4204"     
[7099] "2316"      "2010"      "6134"      "26778"     "1774"      "158960"   
[7105] "537"       "2664"      "9130"      "55558"     "8270"      "60343"    
[7111] "139716"    "8263"      "65991"     "100272147" "4515"      "79184"    
[7117] "7411"      "116442"    "474383"    "474384"    "10251"     "6845"     
[7123] "105379416" "6192"      "7544"      "5616"      "64595"     "8287"     
[7129] "8653"      "7404"      "22829"     "246126"    "8284"      "9086"     
# Load expression dataset
boxplot1 <- read.csv("data/boxplot1.csv", check.names = FALSE)
boxplot1 <- as.data.frame(boxplot1)

# Choose a gene from the non-response group (0.5 µM)
target_entrez <- 9446  # Replace with your desired Entrez ID from prob_1_0.5

# Check if it's in the group
if (!(target_entrez %in% prob_1_0.5)) {
  stop("Selected gene is not in the Non response group for 0.5 micromolar.")
}

# Filter for selected gene
gene_data <- boxplot1[boxplot1$ENTREZID == target_entrez, ]
if(nrow(gene_data) == 0) stop("No data found for selected ENTREZID.")

# Reshape to long format
gene_data_long <- melt(gene_data,
                       id.vars = c("ENTREZID", "SYMBOL", "GENENAME"),
                       variable.name = "Sample",
                       value.name = "log2CPM")

# Extract metadata from sample names
gene_data_long <- gene_data_long %>%
  mutate(
    Time = sub(".*_(\\d+)$", "\\1", Sample),
    Concentration = sub(".*_(0\\.\\d)_\\d+$", "\\1", Sample),
    Drug = sub(".*_(CX\\.5461|DOX|VEH)_.*", "\\1", Sample),
    Indv = sub("^([0-9]+\\.[0-9]+)_.*", "\\1", Sample)
  )

# Filter for 0.5 micromolar only
gene_data_long <- gene_data_long %>% filter(Concentration == "0.5")

# Convert to factors
gene_data_long$Time <- factor(gene_data_long$Time, levels = c("3", "24", "48"))
gene_data_long$Concentration <- factor(gene_data_long$Concentration, levels = "0.5")

# Map individual IDs
indv_mapping <- c("75.1" = "1", "78.1" = "2", "87.1" = "3", 
                  "17.3" = "4", "84.1" = "5", "90.1" = "6")

gene_data_long <- gene_data_long %>%
  mutate(Indv = ifelse(Indv %in% names(indv_mapping), indv_mapping[Indv], "Unknown"))

# Define color palette for drugs
drug_palette <- c("CX.5461" = "#08306B", "DOX" = "#E7298A", "VEH" = "green")

# Extract gene symbol for labeling
gene_symbol <- unique(gene_data_long$SYMBOL)[1]

# Create the boxplot
ggplot(gene_data_long, aes(x = Drug, y = log2CPM, fill = Drug)) +
  geom_boxplot(outlier.shape = NA) +
  scale_fill_manual(values = drug_palette) +
  facet_grid(. ~ Time, labeller = label_both) +
  geom_point(aes(color = Indv), size = 2, alpha = 0.5,
             position = position_jitter(width = -0.3, height = 0)) +
  ggtitle("Non response (0.5 micromolar)") +
  labs(
    x = "Drugs",
    y = paste(gene_symbol, " log2CPM")
  ) +
  ylim(0, NA) +
  theme_bw() +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.ticks = element_line(linewidth = 1.5),
    axis.line = element_line(linewidth = 1.5),
    axis.text.y = element_text(size = 10, color = "black"),
    axis.text.x = element_text(size = 10, color = "black", angle = 45, hjust = 1),
    strip.text = element_text(size = 12, face = "bold")
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07

📌 DOX-specific response (0.5 µM)

# Load libraries
library(dplyr)
library(ggplot2)
library(reshape2)

# Load response group: DOX-specific response (0.5 µM)
prob_2_0.5 <- as.character(read.csv("data/prob_2_0.5.csv")$Entrez_ID)

# View gene list (optional)
prob_2_0.5
  [1] "55160"     "27245"     "9202"      "5453"      "4610"      "25974"    
  [7] "65260"     "26009"     "2959"      "100506343" "105371405" "23248"    
 [13] "9869"      "51043"     "55154"     "27005"     "10560"     "92344"    
 [19] "6004"      "338382"    "26750"     "51742"     "27063"     "9937"     
 [25] "51259"     "10482"     "23642"     "9304"      "9298"      "254225"   
 [31] "282679"    "283219"    "84441"     "91801"     "257160"    "3741"     
 [37] "6843"      "254013"    "29843"     "85406"     "84872"     "10193"    
 [43] "23389"     "387496"    "5994"      "84078"     "10253"     "3621"     
 [49] "283624"    "85446"     "2643"      "112840"    "2957"      "283596"   
 [55] "64784"     "84464"     "5373"      "92595"     "10847"     "57659"    
 [61] "284023"    "100128288" "124751"    "100874058" "57547"     "90313"    
 [67] "5193"      "284098"    "5914"      "3759"      "79637"     "8811"     
 [73] "8877"      "57521"     "84307"     "4092"      "5609"      "84167"    
 [79] "339324"    "7596"      "7770"      "353355"    "7771"      "26974"    
 [85] "83987"     "57479"     "23636"     "25888"     "90317"     "147657"   
 [91] "84787"     "147949"    "284309"    "84914"     "29841"     "4953"     
 [97] "8648"      "4084"      "3554"      "55777"     "57703"     "1385"     
[103] "55502"     "55317"     "9935"      "23394"     "6526"      "23076"    
[109] "402055"    "84133"     "23598"     "100506472" "150383"    "3269"     
[115] "29072"     "8927"      "9730"      "23132"     "200895"    "79691"    
[121] "23023"     "57018"     "1181"      "5437"      "2049"      "10644"    
[127] "55171"     "3280"      "10336"     "348926"    "114932"    "4299"     
[133] "9464"      "133957"    "54491"     "25836"     "2668"      "2966"     
[139] "54826"     "324"       "9542"      "79616"     "6310"      "378884"   
[145] "79692"     "114821"    "170954"    "117283"    "23294"     "114781"   
[151] "129685"    "8871"      "100128653" "221937"    "729438"    "5001"     
[157] "55904"     "222255"    "4899"      "135932"    "835"       "2626"     
[163] "606553"    "5520"      "79145"     "1875"      "862"       "23414"    
[169] "340359"    "10221"     "8629"      "2619"      "286336"    "6256"     
[175] "170082"    "11040"     "90060"     "286495"    "101928747"
# Load expression dataset
boxplot1 <- read.csv("data/boxplot1.csv", check.names = FALSE)
boxplot1 <- as.data.frame(boxplot1)

# Choose a gene from the DOX-specific response group (0.5 µM)
target_entrez <- 114821  # Replace with your desired Entrez ID from prob_2_0.5

# Check membership
if (!(target_entrez %in% prob_2_0.5)) {
  stop("Selected gene is not in the DOX-specific response group for 0.5 micromolar.")
}

# Filter for selected gene
gene_data <- boxplot1[boxplot1$ENTREZID == target_entrez, ]
if(nrow(gene_data) == 0) stop("No data found for selected ENTREZID.")

# Reshape to long format
gene_data_long <- melt(gene_data,
                       id.vars = c("ENTREZID", "SYMBOL", "GENENAME"),
                       variable.name = "Sample",
                       value.name = "log2CPM")

# Extract metadata from sample names
gene_data_long <- gene_data_long %>%
  mutate(
    Time = sub(".*_(\\d+)$", "\\1", Sample),
    Concentration = sub(".*_(0\\.\\d)_\\d+$", "\\1", Sample),
    Drug = sub(".*_(CX\\.5461|DOX|VEH)_.*", "\\1", Sample),
    Indv = sub("^([0-9]+\\.[0-9]+)_.*", "\\1", Sample)
  )

# Filter for 0.5 micromolar only
gene_data_long <- gene_data_long %>% filter(Concentration == "0.5")

# Convert to factors
gene_data_long$Time <- factor(gene_data_long$Time, levels = c("3", "24", "48"))
gene_data_long$Concentration <- factor(gene_data_long$Concentration, levels = "0.5")

# Map individual IDs
indv_mapping <- c("75.1" = "1", "78.1" = "2", "87.1" = "3", 
                  "17.3" = "4", "84.1" = "5", "90.1" = "6")

gene_data_long <- gene_data_long %>%
  mutate(Indv = ifelse(Indv %in% names(indv_mapping), indv_mapping[Indv], "Unknown"))

# Define color palette for drugs
drug_palette <- c("CX.5461" = "#08306B", "DOX" = "#E7298A", "VEH" = "green")

# Extract gene symbol for labeling
gene_symbol <- unique(gene_data_long$SYMBOL)[1]

# Create the boxplot
ggplot(gene_data_long, aes(x = Drug, y = log2CPM, fill = Drug)) +
  geom_boxplot(outlier.shape = NA) +
  scale_fill_manual(values = drug_palette) +
  facet_grid(. ~ Time, labeller = label_both) +
  geom_point(aes(color = Indv), size = 2, alpha = 0.5,
             position = position_jitter(width = -0.3, height = 0)) +
  ggtitle("DOX-specific\nresponse (0.5 micromolar)") +
  labs(
    x = "Drugs",
    y = paste(gene_symbol, " log2CPM")
  ) +
  ylim(0, NA) +
  theme_bw() +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.ticks = element_line(linewidth = 1.5),
    axis.line = element_line(linewidth = 1.5),
    axis.text.y = element_text(size = 10, color = "black"),
    axis.text.x = element_text(size = 10, color = "black", angle = 45, hjust = 1),
    strip.text = element_text(size = 12, face = "bold")
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07

📌 DOX only mid-late response (0.5 µM)

# Load libraries
library(dplyr)
library(ggplot2)
library(reshape2)

# Load response group: DOX only mid-late response (0.5 µM)
prob_3_0.5 <- as.character(read.csv("data/prob_3_0.5.csv")$Entrez_ID)

# View gene list (optional)
prob_3_0.5
   [1] "729737"    "100132287" "100133331" "100288069" "79854"     "643837"   
   [7] "100130417" "148398"    "26155"     "9636"      "375790"    "54991"    
  [13] "51150"     "126792"    "388581"    "118424"    "6339"      "116983"   
  [19] "126789"    "80772"     "83756"     "54587"     "81669"     "55210"    
  [25] "339453"    "142678"    "8510"      "728661"    "105378949" "5590"     
  [31] "6497"      "79906"     "100129534" "11079"     "127281"    "63976"    
  [37] "388588"    "9731"      "339448"    "8514"      "102724450" "388591"   
  [43] "387509"    "11332"     "83715"     "57449"     "8863"      "3604"     
  [49] "54206"     "9563"      "80176"     "5293"      "56998"     "10277"    
  [55] "5226"      "10747"     "5394"      "26232"     "93611"     "57085"    
  [61] "4879"      "90231"     "5351"      "9927"      "60672"     "9249"     
  [67] "10630"     "23254"     "55092"     "54751"     "729614"    "27129"    
  [73] "1187"      "1188"      "1969"      "79363"     "26099"     "11223"    
  [79] "9696"      "11240"     "55920"     "126917"    "51154"     "8574"     
  [85] "54896"     "23252"     "55450"     "163933"    "65018"     "100861548"
  [91] "1650"      "57576"     "400745"    "8672"      "84224"     "249"      
  [97] "84196"     "54361"     "2048"      "100996511" "10236"     "148898"   
 [103] "3399"      "6924"      "57095"     "11313"     "2582"      "3155"     
 [109] "2517"      "163702"    "57822"     "90529"     "11123"     "25949"    
 [115] "57035"     "26119"     "57134"     "57190"     "646471"    "164091"   
 [121] "2134"      "7780"      "64793"     "91544"     "6195"      "101928728"
 [127] "55650"     "84243"     "54707"     "115572"    "6548"      "84065"    
 [133] "84958"     "9064"      "2537"      "199870"    "23673"     "2140"     
 [139] "54797"     "1104"      "8420"      "85028"     "6883"      "399474"   
 [145] "10076"     "9672"      "79570"     "9410"      "51538"     "2170"     
 [151] "347735"    "553115"    "1307"      "576"       "10657"     "23633"    
 [157] "200081"    "79140"     "55721"     "8668"      "339483"    "3065"     
 [163] "100128071" "81629"     "55108"     "728116"    "653121"    "8565"     
 [169] "252995"    "113452"    "127544"    "113451"    "55223"     "100506144"
 [175] "9204"      "79830"     "6421"      "192670"    "26523"     "192669"   
 [181] "54936"     "83931"     "84967"     "127700"    "80149"     "79753"    
 [187] "7802"      "29889"     "79693"     "127687"    "4520"      "2275"     
 [193] "64121"     "79647"     "23499"     "353500"    "26508"     "10450"    
 [199] "54802"     "5538"      "1298"      "64744"     "64789"     "9783"     
 [205] "9132"      "22955"     "59269"     "284716"    "4904"      "64175"    
 [211] "79078"     "374969"    "51058"     "149465"    "128218"    "7075"     
 [217] "5792"      "6487"      "533"       "8704"      "6536"      "55182"    
 [223] "1263"      "343521"    "149478"    "8643"      "8891"      "79654"    
 [229] "4595"      "114034"    "10420"     "5052"      "149483"    "60313"    
 [235] "51249"     "23139"     "10103"     "10489"     "387338"    "2166"     
 [241] "79656"     "11124"     "26994"     "2060"      "5865"      "9372"     
 [247] "23318"     "1376"      "9528"      "26027"     "338094"    "374977"   
 [253] "100527960" "100507634" "8613"      "115209"    "55277"     "51361"    
 [259] "1573"      "84938"     "84455"     "5236"      "4919"      "57685"    
 [265] "3716"      "5142"      "79819"     "23169"     "1647"      "9077"     
 [271] "11147"     "100132618" "100526835" "8790"      "51086"     "1429"     
 [277] "5876"      "256435"    "374987"    "91624"     "8880"      "11080"    
 [283] "54810"     "64123"     "23266"     "80135"     "2787"      "100505741"
 [289] "117178"    "55283"     "148423"    "8915"      "23576"     "3491"     
 [295] "54680"     "105378828" "9403"      "5586"      "494115"    "2635"     
 [301] "2634"      "84230"     "55144"     "284695"    "164045"    "253152"   
 [307] "23285"     "11146"     "388650"    "1810"      "54874"     "8412"     
 [313] "30836"     "2730"      "5825"      "2152"      "126969"    "1266"     
 [319] "105378862" "729970"    "25950"     "1806"      "178"       "54482"    
 [325] "127495"    "8556"      "7412"      "148867"    "51611"     "102606465"
 [331] "101928370" "1901"      "55170"     "29957"     "284611"    "113802"   
 [337] "6814"      "23155"     "22911"     "6884"      "56900"     "1952"     
 [343] "6272"      "5686"      "284612"    "57463"     "2780"      "1435"     
 [349] "10768"     "3749"      "64783"     "10542"     "128338"    "5016"     
 [355] "79084"     "515"       "100129269" "55924"     "11218"     "7482"     
 [361] "4343"      "389"       "333926"    "6566"      "100506392" "10745"    
 [367] "204851"    "163259"    "4803"      "126868"    "965"       "5738"     
 [373] "10905"     "54855"     "54834"     "9554"      "100996724" "653464"   
 [379] "100996712" "284565"    "647135"    "101060254" "27246"     "8799"     
 [385] "9939"      "128077"    "84265"     "284615"    "148738"    "170688"   
 [391] "728989"    "5565"      "2330"      "51205"     "2702"      "51463"    
 [397] "100132057" "388685"    "644591"    "440672"    "9659"      "653513"   
 [403] "100996761" "440689"    "2209"      "8370"      "8337"      "337873"   
 [409] "723790"    "554313"    "8349"      "9900"      "56957"     "11311"    
 [415] "148523"    "80222"     "1893"      "4170"      "55204"     "405"      
 [421] "8416"      "55793"     "58497"     "10962"     "126626"    "6944"     
 [427] "57592"     "5298"      "5993"      "8991"      "5692"      "23126"    
 [433] "57530"     "117145"    "140576"    "6284"      "26097"     "3608"     
 [439] "65123"     "200186"    "10456"     "89872"     "57198"     "3570"     
 [445] "55585"     "3782"      "101928120" "8751"      "1944"      "55974"    
 [451] "200185"    "80128"     "4582"      "10712"     "10067"     "57657"    
 [457] "23623"     "645676"    "7818"      "100129405" "54856"     "6016"     
 [463] "22889"     "9181"      "56893"     "28956"     "4000"      "64218"    
 [469] "9673"      "11243"     "79957"     "7203"      "4209"      "60484"    
 [475] "10763"     "1382"      "51093"     "79590"     "3068"      "2117"     
 [481] "55243"     "912"       "57549"     "93183"     "477"       "844"      
 [487] "57216"     "7391"      "126823"    "51506"     "5498"      "84134"    
 [493] "3310"      "22926"     "127933"    "6675"      "4921"      "51478"    
 [499] "5999"      "8490"      "5087"      "6258"      "400794"    "4259"     
 [505] "7371"      "57645"     "92235"     "5451"      "8804"      "92241"    
 [511] "23432"     "375035"    "84832"     "101928596" "481"       "29922"    
 [517] "8548"      "57821"     "149281"    "5396"      "2329"      "8674"     
 [523] "51603"     "26052"     "51430"     "9588"      "339416"    "60674"    
 [529] "26774"     "149041"    "9910"      "9674"      "100302401" "400798"   
 [535] "64222"     "148756"    "57710"     "10228"     "2752"      "80896"    
 [541] "10092"     "116461"    "80267"     "116496"    "54823"     "10625"    
 [547] "7175"      "339479"    "101929120" "5997"      "51022"     "79577"    
 [553] "8707"      "360023"    "388722"    "23528"     "83479"     "23271"    
 [559] "779"       "7139"      "1465"      "89796"     "55705"     "149345"   
 [565] "25802"     "6051"      "1999"      "127829"    "4660"      "127833"   
 [571] "10765"     "100506696" "5877"      "59349"     "51706"     "92703"    
 [577] "8497"      "134"       "493"       "84719"     "9580"      "55224"    
 [583] "22874"     "5287"      "388730"    "25778"     "9911"      "81788"    
 [589] "55220"     "5129"      "2005"      "85414"     "8934"      "115019"   
 [595] "23380"     "5208"      "55432"     "1604"      "4179"      "3914"     
 [601] "148304"    "574036"    "55733"     "7779"      "9926"      "25896"    
 [607] "55248"     "29937"     "467"       "128387"    "56950"     "55105"    
 [613] "51018"     "2058"      "10380"     "54996"     "64757"     "3142"     
 [619] "11221"     "7159"      "23219"     "8560"      "29097"     "80232"    
 [625] "149111"    "127602"    "2052"      "29920"     "163859"    "3020"     
 [631] "142"       "375057"    "3707"      "56997"     "8476"      "339500"   
 [637] "100130093" "7483"      "375"       "2987"      "200205"    "84033"    
 [643] "101927401" "51127"     "92815"     "58480"     "58"        "22796"    
 [649] "101927604" "79573"     "375061"    "149371"    "83932"     "27184"    
 [655] "57568"     "54627"     "80003"     "84451"     "6894"      "359948"   
 [661] "9804"      "23029"     "6905"      "148789"    "1130"      "7107"     
 [667] "56605"     "88"        "4548"      "6262"      "56776"     "9859"     
 [673] "10472"     "284702"    "84288"     "55083"     "64754"     "64216"    
 [679] "51097"     "7678"      "55657"     "22982"     "23185"     "23560"    
 [685] "101927824" "10531"     "100507034" "79754"     "5588"      "439949"   
 [691] "57713"     "80760"     "509"       "83860"     "414196"    "26019"    
 [697] "83643"     "10133"     "5264"      "222389"    "8559"      "83641"    
 [703] "9397"      "80013"     "9317"      "389941"    "6251"      "1787"     
 [709] "100507347" "338596"    "9200"      "102723166" "783"       "221078"   
 [715] "10529"     "8028"      "5305"      "256815"    "220213"    "57584"    
 [721] "79896"     "22852"     "10730"     "25805"     "6840"      "57608"    
 [727] "55149"     "1326"      "645954"    "220930"    "1390"      "8325"     
 [733] "7581"      "7587"      "7582"      "3185"      "7580"      "643236"   
 [739] "83937"     "7570"      "220972"    "8031"      "9721"      "2658"     
 [745] "118738"    "5599"      "58504"     "196740"    "118461"    "55753"    
 [751] "100421577" "104355295" "253430"    "55847"     "7321"      "80114"    
 [757] "220965"    "220963"    "9886"      "84890"     "1959"      "29982"    
 [763] "84989"     "29119"     "23411"     "64081"     "219736"    "26128"    
 [769] "9559"      "23555"     "219738"    "1305"      "219743"    "55222"    
 [775] "1979"      "27143"     "8879"      "5092"      "5660"      "118490"   
 [781] "2749"      "170384"    "23053"     "100507331" "5328"      "132"      
 [787] "142891"    "100128292" "6229"      "729262"    "642361"    "80195"    
 [793] "81619"     "27069"     "54462"     "11155"     "657"       "2746"     
 [799] "54537"     "439994"    "728130"    "9060"      "142913"    "5728"     
 [805] "355"       "3434"      "24138"     "387700"    "53354"     "3363"     
 [811] "10556"     "119369"    "143279"    "5507"      "80351"     "143282"   
 [817] "9044"      "54708"     "159371"    "51196"     "23232"     "5832"     
 [823] "953"       "7093"      "56889"     "102723665" "84458"     "10023"    
 [829] "23401"     "23223"     "80019"     "118812"    "55361"     "60370"    
 [835] "118813"    "6425"      "55118"     "84171"     "3257"      "2805"     
 [841] "57089"     "51076"     "55280"     "90271"     "55719"     "56652"    
 [847] "84445"     "6468"      "30819"     "8861"      "4791"      "100505761"
 [853] "81603"     "119032"    "57412"     "54805"     "22978"     "9118"     
 [859] "84108"     "6877"      "22984"     "9148"      "9644"      "119391"   
 [865] "85450"     "22986"     "4601"      "1847"      "282996"    "282997"   
 [871] "27250"     "92482"     "8036"      "150"       "57678"     "64429"    
 [877] "4892"      "84632"     "26033"     "2674"      "259217"    "6571"     
 [883] "118987"    "22841"     "143384"    "340719"    "404636"    "119559"   
 [889] "7073"      "9531"      "11196"     "196051"    "2263"      "10579"    
 [895] "59338"     "80007"     "64376"     "51363"     "4942"      "64077"    
 [901] "399818"    "1488"      "92565"     "1793"      "642938"    "282973"   
 [907] "10570"     "80313"     "54777"     "101"       "100133161" "60626"    
 [913] "23410"     "5719"      "338707"    "59307"     "6050"      "115399"   
 [919] "256329"    "100506211" "3665"      "6888"      "171391"    "51286"    
 [925] "101927423" "55367"     "57104"     "5441"      "7106"      "54472"    
 [931] "402778"    "29125"     "10077"     "10078"     "3784"      "1028"     
 [937] "5002"      "7262"      "4676"      "114879"    "4928"      "27315"    
 [943] "6786"      "55128"     "117854"    "10612"     "144132"    "3611"     
 [949] "6881"      "8642"      "63875"     "7761"      "143425"    "7275"     
 [955] "79608"     "65975"     "56672"     "56675"     "57758"     "23258"    
 [961] "440026"    "7702"      "23075"     "81846"     "272"       "9646"     
 [967] "1982"      "374378"    "283106"    "27122"     "406"       "84280"    
 [973] "84188"     "1315"      "5682"      "120227"    "144100"    "5286"     
 [979] "374383"    "3767"      "10083"     "26297"     "113174"    "144108"   
 [985] "144110"    "54503"     "100126784" "10553"     "2620"      "387758"   
 [991] "91057"     "55366"     "55327"     "497258"    "196074"    "3739"     
 [997] "744"       "196294"    "26610"     "10480"     "91614"     "1479"     
[1003] "10114"     "966"       "26273"     "4076"      "25841"     "51074"    
[1009] "79899"     "119710"    "387763"    "3732"      "9537"      "9409"     
[1015] "90993"     "8525"      "4192"      "1132"      "9776"      "79797"    
[1021] "9793"      "79096"     "1643"      "8567"      "4607"      "10658"    
[1027] "114971"    "23788"     "23279"     "85456"     "6749"      "219539"   
[1033] "10978"     "219541"    "51075"     "1500"      "9404"      "80829"    
[1039] "23220"     "6809"      "54948"     "79080"     "220001"    "1642"     
[1045] "220002"    "51524"     "113157"    "747"       "745"       "9415"     
[1051] "2495"      "64852"     "9219"      "6094"      "26229"     "80789"    
[1057] "79081"     "751071"    "10629"     "79064"     "6811"      "54663"    
[1063] "6520"      "10313"     "65998"     "283248"    "79829"     "55611"    
[1069] "83706"     "84304"     "51504"     "10235"     "5837"      "7536"     
[1075] "5871"      "55561"     "10938"     "23130"     "5526"      "29901"    
[1081] "738"       "741"       "2197"      "740"       "84447"     "823"      
[1087] "10435"     "5977"      "283130"    "83786"     "254100"    "10534"    
[1093] "23625"     "6494"      "91056"     "254122"    "1072"      "80198"    
[1099] "30008"     "8061"      "10589"     "9092"      "84285"     "89792"    
[1105] "64837"     "254263"    "10897"     "256472"    "57124"     "25855"    
[1111] "11041"     "3177"      "246330"    "582"       "9973"      "6712"     
[1117] "5091"      "78999"     "91683"     "22992"     "156"       "338692"   
[1123] "54961"     "23529"     "5499"      "374403"    "57571"     "6199"     
[1129] "5790"      "57175"     "80194"     "9049"      "9600"      "10263"    
[1135] "254552"    "81622"     "4728"      "10312"     "53838"     "4041"     
[1141] "51083"     "1374"      "219931"    "595"       "220064"    "8772"     
[1147] "2017"      "1717"      "55191"     "10068"     "220074"    "3636"     
[1153] "81570"     "10809"     "89849"     "5029"      "84957"     "51287"    
[1159] "26005"     "51400"     "283208"    "100287896" "9789"      "100507050"
[1165] "408"       "81544"     "4135"      "7405"      "100506127" "25987"    
[1171] "55331"     "51773"     "4718"      "79731"     "26011"     "60492"    
[1177] "84233"     "8726"      "51501"     "10873"     "11098"     "65084"    
[1183] "120114"    "120103"    "56935"     "85459"     "28970"     "54851"    
[1189] "143689"    "154810"    "10929"     "23052"     "143686"    "143684"   
[1195] "79780"     "53942"     "83935"     "57562"     "10413"     "330"      
[1201] "80310"     "84437"     "2977"      "143884"    "54733"     "472"      
[1207] "23086"     "1662"      "85463"     "2230"      "1737"      "120379"   
[1213] "55216"     "26521"     "83875"     "101928847" "4684"      "100288346"
[1219] "9183"      "57646"     "4837"      "25996"     "23705"     "84811"    
[1225] "8882"      "23387"     "51092"     "6876"      "23621"     "100379571"
[1231] "22897"     "6330"      "6327"      "84866"     "56912"     "2542"     
[1237] "55823"     "3145"      "9854"      "64137"     "79671"     "867"      
[1243] "4162"      "9099"      "7070"      "220323"    "219902"    "219899"   
[1249] "6653"      "84959"     "79864"     "55800"     "7753"      "4013"     
[1255] "54414"     "79684"     "100507283" "219854"    "9638"      "9538"     
[1261] "3703"      "83480"     "6734"      "55572"     "28960"     "399972"   
[1267] "6484"      "2113"      "3762"      "219833"    "56980"     "334"      
[1273] "6768"      "11095"     "170689"    "283174"    "112936"    "29087"    
[1279] "89944"     "27087"     "283358"    "100049716" "23085"     "144699"   
[1285] "196513"    "775"       "2288"      "10867"     "103752584" "57103"    
[1291] "8798"      "4704"      "3742"      "928"       "4055"      "55080"    
[1297] "1108"      "8079"      "27239"     "10162"     "9746"      "25977"    
[1303] "4074"      "10219"     "642846"    "440081"    "374443"    "4973"     
[1309] "55110"     "8531"      "2120"      "4040"      "54682"     "118426"   
[1315] "80824"     "387841"    "93164"     "2012"      "105369669" "55766"    
[1321] "397"       "85004"     "2059"      "55885"     "728622"    "55500"    
[1327] "6660"      "586"       "100506451" "11228"     "79365"     "3709"     
[1333] "55726"     "26127"     "60488"     "57542"     "5744"      "55711"    
[1339] "51290"     "10526"     "65981"     "1663"      "58516"     "160518"   
[1345] "100874249" "196394"    "440093"    "121512"    "10059"     "5318"     
[1351] "84920"     "144402"    "55605"     "283463"    "10138"     "85437"    
[1357] "51535"     "144165"    "83448"     "51135"     "84216"     "4753"     
[1363] "51054"     "196527"    "9169"      "55089"     "51564"     "5213"     
[1369] "54934"     "904"       "112"       "27289"     "377"       "23109"    
[1375] "7846"      "10445"     "100286844" "144233"    "41"        "91012"    
[1381] "57609"     "466"       "4891"      "25875"     "81566"     "5463"     
[1387] "9802"      "11226"     "9498"      "3164"      "3855"      "3875"     
[1393] "23371"     "51380"     "283337"    "5916"      "60314"     "8086"     
[1399] "6667"      "269"       "54458"     "517"       "57658"     "3178"     
[1405] "25946"     "3678"      "5502"      "29095"     "440104"    "6821"     
[1411] "64375"     "6231"      "2065"      "5036"      "283373"    "1431"     
[1417] "6773"      "27165"     "5939"      "9880"      "11247"     "6472"     
[1423] "83729"     "4141"      "1649"      "79837"     "196403"    "115557"   
[1429] "6302"      "1019"      "92979"     "25895"     "10102"     "10677"    
[1435] "10106"     "100506844" "91419"     "9194"      "9958"      "10329"    
[1441] "144577"    "11260"     "283349"    "2799"      "253827"    "100129940"
[1447] "51643"     "92797"     "5908"      "1368"      "8089"      "10818"    
[1453] "376132"    "117177"    "4848"      "27345"     "5787"      "7103"     
[1459] "8549"      "83591"     "55266"     "23011"     "29953"     "84698"    
[1465] "11103"     "114882"    "23390"     "144455"    "5074"      "29080"    
[1471] "55117"     "9182"      "25834"     "80184"     "4254"      "1848"     
[1477] "105369889" "282809"    "490"       "338758"    "694"       "11163"    
[1483] "51134"     "55967"     "55785"     "55591"     "6636"      "4048"     
[1489] "2004"      "5128"      "5250"      "121457"    "317"       "23074"    
[1495] "64431"     "121601"    "56994"     "55332"     "51559"     "6996"     
[1501] "83468"     "29915"     "4801"      "7296"      "84102"     "121053"   
[1507] "387882"    "255394"    "55703"     "55188"     "1407"      "121551"   
[1513] "11108"     "9671"      "1240"      "9733"      "23479"     "23603"    
[1519] "32"        "89910"     "326625"    "4598"      "84915"     "59341"    
[1525] "51228"     "84260"     "88455"     "28981"     "488"       "51184"    
[1531] "51699"     "5501"      "100131138" "144717"    "10019"     "8315"     
[1537] "80724"     "10906"     "79039"     "84934"     "9904"      "6910"     
[1543] "255480"    "6926"      "643246"    "79794"     "84900"     "8739"     
[1549] "26259"     "55884"     "160777"    "5564"      "92558"     "11021"    
[1555] "100506649" "1337"      "283459"    "8655"      "9761"      "84747"    
[1561] "51433"     "84678"     "84876"     "144404"    "54509"     "338799"   
[1567] "22877"     "6249"      "9026"      "79676"     "8099"      "55206"    
[1573] "100293704" "387893"    "11066"     "1967"      "79867"     "196385"   
[1579] "80212"     "9612"      "949"       "57647"     "65985"     "8408"     
[1585] "80324"     "57634"     "347918"    "57666"     "5827"      "192111"   
[1591] "2802"      "100289635" "284232"    "54737"     "9205"      "2706"     
[1597] "221143"    "64328"     "26524"     "10284"     "650794"    "55504"    
[1603] "221178"    "143"       "9107"      "51761"     "387914"    "6049"     
[1609] "1024"      "219333"    "222484"    "51082"     "432369"    "283537"   
[1615] "23281"     "6541"      "5412"      "84056"     "10208"     "10808"    
[1621] "145173"    "10129"     "90634"     "10443"     "23047"     "90627"    
[1627] "26960"     "9201"      "8900"      "400120"    "4093"      "7223"     
[1633] "51569"     "387921"    "10186"     "2308"      "10240"     "10166"    
[1639] "1997"      "11193"     "79612"     "28984"     "23078"     "160851"   
[1645] "55068"     "160857"    "144811"    "8848"      "641467"    "23143"    
[1651] "2098"      "9445"      "5925"      "1102"      "81617"     "51131"    
[1657] "55213"     "84650"     "57213"     "10206"     "10301"     "145165"   
[1663] "79621"     "220108"    "100507398" "115825"    "540"       "341676"   
[1669] "4752"      "100887750" "51028"     "26586"     "144983"    "5100"     
[1675] "27253"     "81624"     "5101"      "1602"      "22894"     "10464"    
[1681] "688"       "11278"     "7347"      "4008"      "115207"    "26224"    
[1687] "5457"      "79596"     "100505538" "693207"    "10082"     "160897"   
[1693] "22873"     "266722"    "10150"     "3843"      "10160"     "8428"     
[1699] "100861541" "100289373" "337867"    "1880"      "5095"      "87769"    
[1705] "7174"      "93081"     "2073"      "1948"      "55082"     "728215"   
[1711] "8660"      "1284"      "55739"     "105376684" "283487"    "55608"    
[1717] "23250"     "23263"     "100289410" "55795"     "3916"      "79774"    
[1723] "101928841" "113622"    "100506394" "22821"     "91875"     "10038"    
[1729] "7011"      "55644"     "328"       "90809"     "4860"      "64745"    
[1735] "3183"      "84932"     "1603"      "63874"     "26020"     "54930"    
[1741] "60686"     "5693"      "64403"     "55017"     "23428"     "57594"    
[1747] "599"       "116173"    "4624"      "4625"      "25983"     "102724814"
[1753] "55449"     "5106"      "161247"    "5721"      "9985"      "79711"    
[1759] "4738"      "26277"     "5875"      "115817"    "1241"      "4776"     
[1765] "56948"     "11154"     "25831"     "84837"     "9472"      "64067"    
[1771] "58533"     "11177"     "55012"     "9692"      "253959"    "84312"    
[1777] "89874"     "100129794" "145282"    "8487"      "254170"    "122525"   
[1783] "54813"     "55015"     "161357"    "100506433" "23588"     "9147"     
[1789] "79609"     "79944"     "8814"      "60485"     "5836"      "122786"   
[1795] "145438"    "54331"     "22795"     "57544"     "283554"    "10979"    
[1801] "652"       "10175"     "2764"      "10668"     "122809"    "3958"     
[1807] "55030"     "22863"     "3895"      "57161"     "55745"     "5684"     
[1813] "379025"    "26520"     "9786"      "23002"     "64582"     "64430"    
[1819] "5494"      "51804"     "4331"      "5583"      "6617"      "5529"     
[1825] "7597"      "26030"     "6710"      "2342"      "4149"      "51382"    
[1831] "161145"    "5283"      "51109"     "5890"      "55218"     "9766"     
[1837] "6430"      "6547"      "55333"     "26037"     "9628"      "8110"     
[1843] "53349"     "5663"      "8650"      "957"       "80127"     "5826"     
[1849] "122961"    "4053"      "51077"     "56252"     "83694"     "5228"     
[1855] "8892"      "27030"     "2353"      "101928377" "122953"    "11161"    
[1861] "23093"     "55668"     "22846"     "100506603" "64207"     "29954"    
[1867] "2954"      "283578"    "161394"    "10598"     "9517"      "8846"     
[1873] "22938"     "9369"      "85439"     "11099"     "123016"    "400236"   
[1879] "90141"     "55051"     "145567"    "9252"      "80017"     "440193"   
[1885] "55671"     "10516"     "9950"      "3705"      "64112"     "57578"    
[1891] "51676"     "57062"     "83982"     "12"        "400242"    "161176"   
[1897] "624"       "730202"    "10914"     "8812"      "10858"     "7528"     
[1903] "5527"      "5891"      "55778"     "51550"     "9895"      "23186"    
[1909] "7127"      "1983"      "115708"    "9529"      "79038"     "400258"   
[1915] "388021"    "64423"     "122622"    "207"       "100128927" "283638"   
[1921] "122616"    "23241"     "9112"      "1397"      "1396"      "283643"   
[1927] "80757"     "646214"    "123606"    "54551"     "6638"      "2562"     
[1933] "8924"      "23359"     "7082"      "22909"     "102725022" "6447"     
[1939] "26585"     "79768"     "9990"      "23015"     "440270"    "57369"    
[1945] "70"        "723972"    "89978"     "84529"     "4212"      "161742"   
[1951] "7057"      "11245"     "100131089" "90427"     "56924"     "5330"     
[1957] "388115"    "22893"     "113189"    "55177"     "2644"      "55192"    
[1963] "6692"      "57617"     "79094"     "729082"    "23168"     "26015"    
[1969] "7301"      "100137047" "30844"     "23339"     "25963"     "2595"     
[1975] "64397"     "8773"      "146057"    "80021"     "7158"      "4130"     
[1981] "80237"     "619189"    "567"       "140691"    "50506"     "90525"    
[1987] "79029"     "50804"     "399694"    "9728"      "196951"    "56986"    
[1993] "55056"     "100129387" "388121"    "23312"     "256586"    "29767"    
[1999] "29766"     "5597"      "4644"      "10776"     "56204"     "9488"     
[2005] "9236"      "26108"     "283659"    "64864"     "374618"    "54816"    
[2011] "145783"    "84952"     "145781"    "100820829" "54629"     "4643"     
[2017] "79664"     "83660"     "7168"      "114294"    "51065"     "51762"    
[2023] "283807"    "8925"      "53944"     "9325"      "80301"     "348094"   
[2029] "51285"     "10081"     "8483"      "57722"     "81556"     "9187"     
[2035] "4088"      "10391"     "8125"      "7090"      "54839"     "56906"    
[2041] "5315"      "60677"     "3073"      "585"       "101241892" "80381"    
[2047] "388135"    "100287616" "9399"      "5371"      "10620"     "1198"     
[2053] "102723750" "57184"     "9377"      "54913"     "192683"    "5780"     
[2059] "55272"     "1464"      "92912"     "145957"    "49855"     "84894"    
[2065] "3419"      "5685"      "11173"     "5923"      "10588"     "400410"   
[2071] "283687"    "54469"     "58489"     "23184"     "59274"     "84206"    
[2077] "390660"    "64506"     "123722"    "123720"    "83640"     "50810"    
[2083] "646"       "6457"      "4828"      "9154"      "5151"      "11214"    
[2089] "64410"     "3669"      "145864"    "4240"      "11057"     "5428"     
[2095] "374654"    "10239"     "10519"     "51335"     "342132"    "5045"     
[2101] "374659"    "91433"     "28232"     "400451"    "56963"     "104472848"
[2107] "3480"      "64927"     "170691"    "140460"    "220"       "22856"    
[2113] "6627"      "5046"      "105376734" "101927628" "374666"    "51728"    
[2119] "79622"     "64285"     "4350"      "8131"      "8786"      "8312"     
[2125] "10573"     "58986"     "4833"      "26063"     "57799"     "89941"    
[2131] "79006"     "65990"     "84264"     "113000"    "64788"     "7329"     
[2137] "115939"    "84572"     "645811"    "1186"      "57585"     "4832"     
[2143] "65993"     "10101"     "81889"     "51734"     "4716"      "735301"   
[2149] "124056"    "283869"    "9351"      "4913"      "64223"     "283871"   
[2155] "1877"      "1632"      "10921"     "21"        "80178"     "527"      
[2161] "5170"      "652276"    "645644"    "100507321" "54442"     "114984"   
[2167] "84256"     "79412"     "9080"      "51330"     "54985"     "79228"    
[2173] "7755"      "100507458" "7760"      "10127"     "7627"      "79903"    
[2179] "23059"     "1773"      "10131"     "6345"      "100507501" "51025"    
[2185] "114990"    "29965"     "124402"    "79641"     "84656"     "9717"     
[2191] "51172"     "56052"     "196483"    "18"        "29035"     "2013"     
[2197] "4682"      "28955"     "8651"      "9516"      "8303"      "51061"    
[2203] "26156"     "92017"     "55313"     "5073"      "642799"    "9284"     
[2209] "123803"    "9665"      "123811"    "368"       "339044"    "101059938"
[2215] "64131"     "101059953" "105376752" "653190"    "79905"     "51760"    
[2221] "9738"      "400506"    "112479"    "123879"    "57149"     "1428"     
[2227] "100271836" "387254"    "51108"     "730092"    "57478"     "56061"    
[2233] "84516"     "5579"      "3566"      "23214"     "388228"    "728741"   
[2239] "1201"      "6799"      "6817"      "728734"    "100507607" "7284"     
[2245] "487"       "79874"     "653390"    "728888"    "6693"      "23475"    
[2251] "79447"     "10423"     "26470"     "253982"    "253980"    "124446"   
[2257] "9344"      "5595"      "10421"     "26000"     "79077"     "22928"    
[2263] "146540"    "78994"     "64319"     "100862671" "5261"      "90835"    
[2269] "23361"     "101928736" "283932"    "54620"     "9739"      "80270"    
[2275] "79759"     "9726"      "10295"     "1339"      "79798"     "7041"     
[2281] "6524"      "440359"    "100132341" "10308"     "55737"     "91807"    
[2287] "388272"    "81831"     "5257"      "23090"     "55027"     "64282"    
[2293] "85407"     "1540"      "6299"      "23322"     "79068"     "79191"    
[2299] "10265"     "6530"      "55239"     "4502"      "4493"      "4501"     
[2305] "9709"      "80011"     "23568"     "92922"     "9289"      "57567"    
[2311] "79650"     "4324"      "1459"      "29070"     "79918"     "2806"     
[2317] "1006"      "1009"      "146227"    "7084"      "51192"     "146223"   
[2323] "8883"      "6236"      "8824"      "23491"     "865"       "8996"     
[2329] "653319"    "283849"    "29100"     "6553"      "29800"     "9114"     
[2335] "100505942" "10664"     "84080"     "57610"     "55815"     "80152"    
[2341] "1506"      "5699"      "55794"     "54920"     "4775"      "80004"    
[2347] "23659"     "54496"     "55512"     "146198"    "1001"      "999"      
[2353] "3038"      "54921"     "6645"      "27183"     "51388"     "10725"    
[2359] "1728"      "11060"     "16"        "197258"    "23450"     "7571"     
[2365] "7567"      "91862"     "23035"     "342371"    "55565"     "9798"     
[2371] "1723"      "54957"     "9785"      "197259"    "84937"     "197257"   
[2377] "162239"    "10428"     "79583"     "11345"     "23536"     "22879"    
[2383] "100130958" "51741"     "4094"      "124359"    "56942"     "23300"    
[2389] "8139"      "80790"     "10200"     "3281"      "23417"     "54550"    
[2395] "8720"      "83693"     "9013"      "57707"     "9100"      "83716"    
[2401] "9764"      "10328"     "1327"      "2300"      "81631"     "23174"    
[2407] "124245"    "1535"      "4597"      "333929"    "115992"    "9780"     
[2413] "51693"     "197322"    "105371414" "27132"     "124045"    "4157"     
[2419] "10381"     "54849"     "79007"     "359845"    "55275"     "79850"    
[2425] "50628"     "1398"      "4641"      "51763"     "5306"      "124935"   
[2431] "727910"    "124997"    "6117"      "146760"    "1801"      "3090"     
[2437] "23293"     "4335"      "105371592" "162514"    "7442"      "23729"    
[2443] "30851"     "83460"     "5026"      "3682"      "5023"      "489"      
[2449] "51479"     "124976"    "10514"     "58191"     "388323"    "8402"     
[2455] "2027"      "388324"    "101928000" "9098"      "4927"      "708"      
[2461] "79003"     "728392"    "9851"      "100506713" "239"       "440400"   
[2467] "1742"      "37"        "442898"    "11337"     "6517"      "51087"    
[2473] "2874"      "84461"     "147040"    "254863"    "57555"     "284114"   
[2479] "2256"      "1140"      "5430"      "968"       "6462"      "112483"   
[2485] "482"       "7157"      "1949"      "23135"     "92162"     "124637"   
[2491] "58485"     "84667"     "5187"      "54785"     "284029"    "80169"    
[2497] "5198"      "399512"    "29098"     "22899"     "81565"     "9423"     
[2503] "9482"      "124739"    "6341"      "56985"     "388335"    "6416"     
[2509] "93649"     "9912"      "9955"      "9953"      "84815"     "5376"     
[2515] "10626"     "57335"     "4213"      "136"       "125150"    "9487"     
[2521] "201161"    "7314"      "51393"     "23164"     "201164"    "201163"   
[2527] "8533"      "55090"     "51655"     "10400"     "100507131" "83450"    
[2533] "91647"     "79018"     "1819"      "54890"     "3996"      "140775"   
[2539] "6470"      "729288"    "147166"    "5636"      "125206"    "644815"   
[2545] "22905"     "55244"     "224"       "92521"     "339184"    "23326"    
[2551] "25979"     "256302"    "5606"      "8844"      "201229"    "51701"    
[2557] "90410"     "7126"      "26073"     "147007"    "23098"     "230"      
[2563] "9703"      "6830"      "6147"      "116238"    "284086"    "9618"     
[2569] "399687"    "9220"      "105371931" "116236"    "28964"     "124930"   
[2575] "85464"     "374786"    "6532"      "51379"     "4763"      "84440"    
[2581] "55352"     "114659"    "105371730" "55288"     "64149"     "8851"     
[2587] "40"        "6347"      "3980"      "5892"      "54475"     "146862"   
[2593] "105371932" "162394"    "91608"     "79893"     "79154"     "79922"    
[2599] "3975"      "26574"     "11276"     "101060351" "30837"     "57636"    
[2605] "100170841" "284106"    "7703"      "100287808" "5691"      "8396"     
[2611] "54883"     "782"       "84961"     "8557"      "2064"      "55876"    
[2617] "5709"      "9862"      "7067"      "9572"      "125111"    "3487"     
[2623] "9001"      "3728"      "10609"     "60681"     "115024"    "47"       
[2629] "1267"      "7266"      "201181"    "84514"     "6774"      "3292"     
[2635] "162427"    "27175"     "8506"      "2145"      "100190938" "10266"    
[2641] "28958"     "8678"      "314"       "100885850" "100885848" "113277"   
[2647] "1659"      "2118"      "4356"      "162417"    "105371789" "339201"   
[2653] "79089"     "7343"      "51629"     "2896"      "2535"      "284071"   
[2659] "10052"     "9343"      "388389"    "2670"      "10882"     "4836"     
[2665] "113026"    "10614"     "124790"    "752"       "201176"    "728806"   
[2671] "4905"      "7473"      "996"       "4635"      "3690"      "102724508"
[2677] "124989"    "9520"      "3837"      "114881"    "90507"     "80320"    
[2683] "6668"      "55163"     "80279"     "100874362" "10241"     "516"      
[2689] "65264"     "11248"     "8405"      "81558"     "11143"     "284080"   
[2695] "5164"      "84687"     "6442"      "64132"     "80221"     "55316"    
[2701] "55040"     "8714"      "51747"     "400604"    "4831"      "51096"    
[2707] "10040"     "23531"     "58488"     "9241"      "339210"    "8526"     
[2713] "7706"      "8165"      "404093"    "6426"      "54903"     "9256"     
[2719] "100506779" "6827"      "54894"     "56155"     "22843"     "4591"     
[2725] "348235"    "284161"    "1213"      "51174"     "84669"     "10513"    
[2731] "8493"      "54828"     "103689912" "6909"      "388407"    "9969"     
[2737] "339175"    "11011"     "26115"     "1534"      "1636"      "10238"    
[2743] "4215"      "80774"     "729683"    "6603"      "55852"     "11232"    
[2749] "1655"      "100616387" "100616408" "90799"     "146880"    "440456"   
[2755] "374819"    "201283"    "10672"     "8787"      "8313"      "201134"   
[2761] "9931"      "26207"     "100499466" "9120"      "55062"     "693220"   
[2767] "10351"     "23461"     "5608"      "400617"    "6662"      "9382"     
[2773] "84923"     "55028"     "23580"     "54549"     "55890"     "9368"     
[2779] "283987"    "30850"     "23510"     "10476"     "9121"      "30833"    
[2785] "51155"     "79902"     "23163"     "57513"     "29115"     "3021"     
[2791] "85451"     "201294"    "201292"    "23265"     "283991"    "84074"    
[2797] "79651"     "114757"    "768206"    "10610"     "105274304" "105376847"
[2803] "124512"    "6427"      "654434"    "57690"     "147138"    "125061"   
[2809] "9021"      "8632"      "9267"      "57602"     "3959"      "100507410"
[2815] "2548"      "9775"      "79092"     "284129"    "57674"     "79643"    
[2821] "440465"    "10458"     "9625"      "22994"     "146705"    "71"       
[2827] "339229"    "339230"    "9146"      "6182"      "1468"      "10189"    
[2833] "256933"    "51547"     "4097"      "92659"     "5831"      "255275"   
[2839] "5881"      "51181"     "5986"      "2194"      "284001"    "1453"     
[2845] "79701"     "26502"     "79672"     "64122"     "146712"    "9097"     
[2851] "9984"      "27098"     "494514"    "55556"     "7525"      "64863"    
[2857] "23347"     "9663"      "8736"      "103910"    "7050"      "9229"     
[2863] "649446"    "84777"     "147525"    "91133"     "284217"    "201475"   
[2869] "23255"     "4729"      "101927275" "23253"     "11031"     "8774"     
[2875] "2774"      "57132"     "10939"     "55125"     "753"       "125228"   
[2881] "6632"      "171586"    "57534"     "102723167" "91768"     "8780"     
[2887] "29919"     "4864"      "125488"    "26256"     "114876"    "55364"    
[2893] "25925"     "6760"      "284252"    "1000"      "1825"      "1824"     
[2899] "80816"     "1837"      "100101467" "10778"     "252884"    "125476"   
[2905] "55197"     "80206"     "25941"     "57536"     "56853"     "641516"   
[2911] "5289"      "9050"      "498"       "147339"    "201501"    "9388"     
[2917] "4645"      "220136"    "30827"     "51320"     "11201"     "23335"    
[2923] "4677"      "115701"    "5366"      "220441"    "54877"     "23239"    
[2929] "2531"      "9525"      "8710"      "5271"      "92126"     "10666"    
[2935] "9306"      "147381"    "29090"     "1528"      "9658"      "101927989"
[2941] "4155"      "374868"    "9150"      "79863"     "84552"     "399844"   
[2947] "126567"    "25759"     "610"       "5442"      "10272"     "5725"     
[2953] "1675"      "57418"     "1265"      "23526"     "6794"      "513"      
[2959] "1153"      "55009"     "1943"      "84939"     "374291"    "26528"    
[2965] "6209"      "10297"     "92840"     "339366"    "53615"     "57455"    
[2971] "83855"     "113179"    "1455"      "55643"     "2872"      "126308"   
[2977] "113177"    "8943"      "55111"     "268"       "4616"      "2788"     
[2983] "148252"    "29985"     "7064"      "148254"    "126295"    "79816"    
[2989] "7089"      "166"       "2767"      "60680"     "4782"      "83475"    
[2995] "126321"    "100128569" "126326"    "6915"      "58509"     "23396"    
[3001] "27231"     "1613"      "51341"     "56961"     "729359"    "440503"   
[3007] "10501"     "55527"     "148022"    "5802"      "257000"    "125988"   
[3013] "4902"      "8192"      "84266"     "10382"     "10045"     "79230"    
[3019] "3643"      "23370"     "92960"     "57192"     "10908"     "56949"    
[3025] "100131801" "6813"      "80164"     "388499"    "80131"     "100507588"
[3031] "6618"      "10469"     "1994"      "256949"    "51257"     "84330"    
[3037] "81794"     "374879"    "84527"     "7675"      "93134"     "284385"   
[3043] "54850"     "59286"     "93145"     "51073"     "3383"      "3386"     
[3049] "7087"      "100125288" "112812"    "11140"     "5141"      "1032"     
[3055] "57153"     "147727"    "81890"     "11018"     "10498"     "78992"    
[3061] "90580"     "6597"      "3949"      "9545"      "374882"    "64748"    
[3067] "126074"    "57139"     "115950"    "51295"     "1264"      "84337"    
[3073] "664709"    "126070"    "7620"      "284390"    "163059"    "284391"   
[3079] "90589"     "147837"    "79973"     "90576"     "163050"    "57474"    
[3085] "4125"      "51398"     "84261"     "79002"     "439"       "3726"     
[3091] "811"       "5886"      "199699"    "4066"      "112939"    "8677"     
[3097] "9592"      "65249"     "5989"      "9466"      "5566"      "976"      
[3103] "5585"      "10755"     "9524"      "84449"     "85360"     "10994"    
[3109] "10270"     "58525"     "7171"      "4218"      "26017"     "9441"     
[3115] "79086"     "23309"     "9002"      "27151"     "4650"      "55850"    
[3121] "79629"     "79575"     "84705"     "93343"     "376497"    "3718"     
[3127] "27106"     "5296"      "10437"     "5143"      "9518"      "51477"    
[3133] "8178"      "7311"      "55049"     "55295"     "10715"     "11316"    
[3139] "54555"     "54929"     "8625"      "404037"    "53345"     "54815"    
[3145] "83983"     "374887"    "57130"     "94039"     "440515"    "81931"    
[3151] "284443"    "7594"      "100132815" "171392"    "9534"      "79156"    
[3157] "9745"      "57616"     "9141"      "390916"    "84902"     "55094"    
[3163] "1050"      "80054"     "9710"      "2821"      "84306"     "6324"     
[3169] "51599"     "7392"      "26330"     "10430"     "79171"     "9757"     
[3175] "79713"     "199746"    "55851"     "148137"    "333"       "79414"    
[3181] "84964"     "25999"     "5438"      "7705"      "100506930" "57677"    
[3187] "284406"    "57711"     "84911"     "163081"    "342892"    "728485"   
[3193] "374899"    "374900"    "84503"     "390927"    "163115"    "126231"   
[3199] "90522"     "57828"     "5714"      "199720"    "399473"    "147965"   
[3205] "3191"      "126432"    "22933"     "4793"      "54938"     "115290"   
[3211] "126433"    "10298"     "57622"     "55588"     "7538"      "64857"    
[3217] "4294"      "126526"    "29950"     "645"       "57731"     "92799"    
[3223] "80271"     "29785"     "7040"      "80776"     "56915"     "374907"   
[3229] "6223"      "9138"      "10567"     "478"       "2901"      "5452"     
[3235] "162989"    "2931"      "5050"      "1954"      "653583"    "7515"     
[3241] "126299"    "56006"     "342908"    "100505715" "7638"      "9310"     
[3247] "5819"      "1209"      "5971"      "284352"    "79090"     "388552"   
[3253] "90332"     "1158"      "2068"      "2067"      "2354"      "6253"     
[3259] "80207"     "2696"      "1762"      "8189"      "26145"     "729440"   
[3265] "64344"     "5536"      "55228"     "57469"     "29888"     "79147"    
[3271] "6510"      "4861"      "255783"    "9704"      "56917"     "8775"     
[3277] "30846"     "22900"     "163071"    "93233"     "2014"      "55260"    
[3283] "83743"     "3770"      "9266"      "114783"    "56848"     "1628"     
[3289] "54922"     "57664"     "23645"     "94027"     "4909"      "3743"     
[3295] "64130"     "8541"      "54795"     "8463"      "100507003" "51070"    
[3301] "3661"      "3276"      "81857"     "94030"     "84258"     "342918"   
[3307] "50944"     "2109"      "125875"    "79898"     "284370"    "90321"    
[3313] "400713"    "162966"    "7576"      "90333"     "162967"    "388559"   
[3319] "125893"    "79986"     "55786"     "84671"     "79788"     "390963"   
[3325] "91664"     "170958"    "147804"    "91663"     "59285"     "79165"    
[3331] "79143"     "148170"    "112724"    "7137"      "255043"    "22870"    
[3337] "84446"     "79763"     "57106"     "284297"    "163033"    "147807"   
[3343] "147808"    "51545"     "29903"     "11338"     "55311"     "79149"    
[3349] "147947"    "100128252" "57573"     "140612"    "58491"     "147694"   
[3355] "57191"     "162972"    "90233"     "79891"     "79818"     "2282"     
[3361] "100293516" "147686"    "7694"      "10782"     "342945"    "1"        
[3367] "503538"    "162968"    "116412"    "201514"    "388569"    "25799"    
[3373] "55663"     "84878"     "100131691" "7593"      "26751"     "129787"   
[3379] "7837"      "246243"    "6664"      "9781"      "100506299" "3398"     
[3385] "51692"     "285148"    "8462"      "3241"      "245973"    "3754"     
[3391] "51594"     "1653"      "10408"     "130497"    "4148"      "6382"     
[3397] "60526"     "114818"    "2281"      "9540"      "375189"    "50618"    
[3403] "109"       "22979"     "55252"     "10890"     "3777"      "56896"    
[3409] "60509"     "100128731" "3795"      "790"       "7781"      "57159"    
[3415] "7349"      "4358"      "5496"      "2498"      "26160"     "64838"    
[3421] "79635"     "9553"      "2355"      "151056"    "23160"     "388939"   
[3427] "79745"     "51646"     "79623"     "440854"    "84661"     "55676"    
[3433] "57448"     "55622"     "4052"      "25940"     "100288911" "9637"     
[3439] "151393"    "1545"      "130589"    "6432"      "79833"     "6654"     
[3445] "728730"    "130733"    "6546"      "91461"     "27436"     "9167"     
[3451] "57504"     "678"       "51626"     "10128"     "5495"      "9581"     
[3457] "55133"     "102724965" "2034"      "90423"     "5281"      "90411"    
[3463] "57217"     "3344"      "11037"     "98"        "400954"    "57142"    
[3469] "100129434" "114800"    "339803"    "339804"    "9736"      "10678"    
[3475] "200728"    "23301"     "4190"      "51542"     "57162"     "29094"    
[3481] "54812"     "9792"      "23177"     "200734"    "116143"    "200558"   
[3487] "307"       "64395"     "11017"     "151516"    "400960"    "54980"    
[3493] "7072"      "10199"     "27332"     "8291"      "56603"     "94097"    
[3499] "26056"     "10322"     "150726"    "7840"      "51002"     "10617"    
[3505] "72"        "388962"    "100507171" "55233"     "388963"    "23559"    
[3511] "7841"      "116540"    "64427"     "84759"     "550"       "27429"    
[3517] "10505"     "84141"     "9801"      "347730"    "8802"      "10618"    
[3523] "54884"     "100630918" "4144"      "8673"      "51255"     "55037"    
[3529] "10989"     "51318"     "65055"     "55818"     "64795"     "112597"   
[3535] "730268"    "51315"     "150572"    "9451"      "101928403" "22934"    
[3541] "150696"    "30818"     "150759"    "400986"    "729234"    "56910"    
[3547] "55654"     "10865"     "81562"     "26504"     "26505"     "200539"   
[3553] "151313"    "375248"    "100506076" "100506123" "57730"     "10120"    
[3559] "728537"    "11320"     "343990"    "80705"     "51263"     "164832"   
[3565] "9486"      "79031"     "55571"     "284996"    "6549"      "64965"    
[3571] "9392"      "100506473" "2274"      "80146"     "9648"      "3987"     
[3577] "344558"    "65124"     "4867"      "100288695" "55289"     "10018"    
[3583] "541471"    "64682"     "10461"     "84910"     "129804"    "376940"   
[3589] "150465"    "84172"     "84269"     "23550"     "375260"    "11159"    
[3595] "54520"     "51141"     "130355"    "1622"      "80775"     "5775"     
[3601] "57669"     "79134"     "5899"      "23332"     "254128"    "84365"    
[3607] "10746"     "100506922" "55679"     "2840"      "55339"     "5433"     
[3613] "79595"     "9394"      "91409"     "55627"     "653269"    "653781"   
[3619] "55041"     "445582"    "401010"    "150776"    "116372"    "4249"     
[3625] "100129961" "23518"     "7852"      "11249"     "79712"     "92"       
[3631] "5000"      "3800"      "390"       "26225"     "114793"    "114805"   
[3637] "4929"      "11227"     "8502"      "85461"     "151525"    "643072"   
[3643] "64844"     "10213"     "1803"      "64135"     "90134"     "55137"    
[3649] "22837"     "80034"     "129446"    "27347"     "115677"    "10170"    
[3655] "4036"      "129880"    "79675"     "29081"     "285141"    "2571"     
[3661] "26003"     "9874"      "79828"     "80067"     "8604"      "254042"   
[3667] "6670"      "29789"     "9541"      "440926"    "1123"      "518"      
[3673] "80856"     "4780"      "100130691" "150737"    "92104"     "129831"   
[3679] "114880"    "101927027" "8575"      "494513"    "51661"     "7273"     
[3685] "285025"    "3676"      "375298"    "54431"     "10787"     "129401"   
[3691] "401024"    "10203"     "51454"     "54529"     "64172"     "5378"     
[3697] "26275"     "3628"      "54842"     "105373801" "2744"      "6772"     
[3703] "6775"      "4430"      "64859"     "9262"      "57520"     "9330"     
[3709] "92935"     "23314"     "205327"    "79568"     "26010"     "130535"   
[3715] "9689"      "1195"      "53938"     "60491"     "4999"      "8324"     
[3721] "55759"     "79800"     "65065"     "8828"      "100329109" "4719"     
[3727] "2825"      "22868"     "151194"    "151195"    "7855"      "33"       
[3733] "1373"      "2066"      "22807"     "580"       "26154"     "55686"    
[3739] "55825"     "150967"    "57574"     "7145"      "14"        "25953"    
[3745] "64114"     "9125"      "7701"      "617"       "9654"      "79840"    
[3751] "79137"     "10058"     "55139"     "7277"      "1674"      "10290"    
[3757] "100996693" "79586"     "23363"     "114790"    "6508"      "130367"   
[3763] "10056"     "23704"     "65080"     "5270"      "80309"     "55022"    
[3769] "9320"      "130888"    "151473"    "3431"      "51719"     "257407"   
[3775] "93010"     "105373926" "4691"      "5757"      "129563"    "9427"     
[3781] "200765"    "80303"     "55054"     "151507"    "10123"     "57007"    
[3787] "9208"      "377007"    "8864"      "51665"     "150678"    "51281"    
[3793] "285193"    "101752400" "11132"     "2859"      "547"       "25992"    
[3799] "130916"    "5510"      "4735"      "10494"     "728323"    "140680"   
[3805] "85364"     "100507459" "6666"      "57761"     "10616"     "128637"   
[3811] "83541"     "9751"      "2280"      "140901"    "10528"     "57593"    
[3817] "64773"     "65992"     "3704"      "83959"     "25943"     "80025"    
[3823] "54498"     "146"       "5621"      "9770"      "5111"      "8760"     
[3829] "56261"     "51605"     "54675"     "164312"    "56255"     "5332"     
[3835] "63926"     "6616"      "8195"      "22903"     "55304"     "79133"    
[3841] "140733"    "23767"     "55614"     "6629"      "631"       "92667"    
[3847] "100303755" "57325"     "55184"     "10741"     "388789"    "57419"    
[3853] "54453"     "51340"     "57186"     "55857"     "63908"     "1471"     
[3859] "955"       "26090"     "140838"    "102724826" "100101490" "100874042"
[3865] "3397"      "128854"    "23509"     "22919"     "6640"      "9139"     
[3871] "11264"     "128866"    "84557"     "128869"    "58476"     "2686"     
[3877] "55902"     "57644"     "10544"     "3692"      "55245"     "2036"     
[3883] "25980"     "57446"     "25939"     "140699"    "6185"      "63905"    
[3889] "6714"      "7052"      "388796"    "128439"    "79913"     "60625"    
[3895] "64900"     "84181"     "6431"      "51098"     "57158"     "51526"    
[3901] "100505783" "128486"    "79183"     "11142"     "100"       "140730"   
[3907] "10953"     "6789"      "6385"      "27296"     "55861"     "51604"    
[3913] "90203"     "5476"      "63925"     "57727"     "63916"     "55713"    
[3919] "64849"     "81031"     "8202"      "55959"     "57169"     "5740"     
[3925] "23315"     "9825"      "387521"    "1051"      "5770"      "8813"     
[3931] "27304"     "57167"     "55734"     "128553"    "7764"      "116151"   
[3937] "51507"     "655"       "8480"      "55544"     "56937"     "57403"    
[3943] "8675"      "2778"      "51497"     "63939"     "5509"      "1002"     
[3949] "5688"      "26164"     "11047"     "3911"      "81928"     "140628"   
[3955] "253868"    "128826"    "55257"     "11054"     "54994"     "55738"    
[3961] "1917"      "79144"     "51750"     "84619"     "54923"     "7165"     
[3967] "54963"     "57473"     "140700"    "10287"     "55251"     "102723996"
[3973] "102724200" "102724428" "102724560" "102723475" "29761"     "388815"   
[3979] "10950"     "54149"     "140578"    "2551"      "11096"     "29104"    
[3985] "10069"     "10694"     "571"       "6647"      "57466"     "8867"     
[3991] "100506215" "3455"      "9946"      "539"       "64968"     "54065"    
[3997] "3753"      "861"       "9980"      "23515"     "3141"      "10311"    
[4003] "3150"      "7485"      "6450"      "54101"     "63977"     "49854"    
[4009] "9619"      "54020"     "5152"      "5316"      "875"       "150094"   
[4015] "56894"     "7109"      "23308"     "81543"     "54082"     "6612"     
[4021] "85395"     "728039"    "6573"      "1291"      "10841"     "84221"    
[4027] "4047"      "114044"    "23181"     "23765"     "27439"     "27440"    
[4033] "83733"     "529"       "637"       "57553"     "51807"     "728229"   
[4039] "728233"    "85376"     "5625"      "25786"     "8220"      "128977"   
[4045] "54584"     "79680"     "421"       "128989"    "54487"     "5902"     
[4051] "7625"      "84222"     "3053"      "1399"      "439931"    "6545"     
[4057] "440804"    "23119"     "645426"    "375133"    "150223"    "23753"    
[4063] "23759"     "140883"    "2781"      "400916"    "91319"     "284889"   
[4069] "23523"     "83606"     "1416"      "84700"     "57168"     "24144"    
[4075] "23331"     "150275"    "7494"      "83999"     "25807"     "10633"    
[4081] "4744"      "8508"      "4771"      "55954"     "550631"    "23541"    
[4087] "6948"      "23762"     "140606"    "27124"     "91445"     "3985"     
[4093] "4733"      "9814"      "23761"     "253143"    "7533"      "6523"     
[4099] "7078"      "3162"      "23780"     "80020"     "11020"     "7263"     
[4105] "4357"      "79734"     "114794"    "29775"     "23616"     "3956"     
[4111] "79159"     "85377"     "84645"     "80115"     "8398"      "23764"    
[4117] "102800317" "400927"    "11015"     "10521"     "9929"      "9567"     
[4123] "27350"     "23492"     "5155"      "9145"      "10454"     "468"      
[4129] "10478"     "6767"      "84844"     "27351"     "2547"      "6721"     
[4135] "55964"     "4668"      "4700"      "100132273" "27341"     "84271"    
[4141] "53947"     "26286"     "11252"     "25809"     "638"       "706"      
[4147] "23170"     "80339"     "84247"     "55615"     "112885"    "23313"    
[4153] "55020"     "55687"     "9620"      "23151"     "9889"      "79087"    
[4159] "80305"     "83642"     "6300"      "5600"      "6305"      "91289"    
[4165] "1890"      "100144603" "410"       "85358"     "11158"     "57633"    
[4171] "100996539" "3708"      "9695"      "859"       "56852"     "9901"     
[4177] "25917"     "55209"     "64419"     "7862"      "4968"      "8536"     
[4183] "26140"     "285367"    "84818"     "285368"    "6396"      "6529"     
[4189] "132001"    "5468"      "80746"     "23609"     "23066"     "9922"     
[4195] "23225"     "7476"      "7508"      "27258"     "80852"     "64432"    
[4201] "64145"     "85403"     "8292"      "686"       "23243"     "285381"   
[4207] "92106"     "23228"     "9779"      "5868"      "8850"      "7325"     
[4213] "6138"      "9975"      "7068"      "5915"      "7155"      "64343"    
[4219] "27303"     "201595"    "114884"    "23171"     "112616"    "54918"    
[4225] "105377021" "131405"    "26032"     "7342"      "6769"      "4292"     
[4231] "5333"      "9943"      "100128640" "9941"      "6331"      "57599"    
[4237] "199223"    "64651"     "165904"    "54977"     "10289"     "285267"   
[4243] "285268"    "131375"    "9117"      "92999"     "57467"     "1238"     
[4249] "54861"     "51099"     "285346"    "55888"     "285349"    "115560"   
[4255] "51304"     "25907"     "54716"     "79442"     "339906"    "285352"   
[4261] "64147"     "25930"     "22937"     "54859"     "10675"     "10201"    
[4267] "5364"      "79714"     "51372"     "84126"     "11277"     "51517"    
[4273] "100506637" "646450"    "10425"     "54681"     "10869"     "3913"     
[4279] "375341"    "7375"      "2876"      "275"       "1605"      "386724"   
[4285] "389119"    "7318"      "84315"     "6405"      "10991"     "2771"     
[4291] "132228"    "7866"      "8372"      "11334"     "11186"     "10641"    
[4297] "51161"     "1795"      "7873"      "29890"     "51368"     "9136"     
[4303] "10039"     "57060"     "95"        "1849"      "211"       "51533"    
[4309] "56920"     "7134"      "64943"     "55193"     "55830"     "375346"   
[4315] "91869"     "5580"      "7086"      "55540"     "93973"     "58515"    
[4321] "55799"     "7474"      "26059"     "285331"    "50650"     "26060"    
[4327] "378"       "7871"      "57406"     "11102"     "54899"     "8309"     
[4333] "2272"      "57415"     "8618"      "6314"      "100507062" "166336"   
[4339] "56999"     "9223"      "84541"     "56203"     "23150"     "27086"    
[4345] "105377206" "317649"    "23429"     "55164"     "100846999" "692099"   
[4351] "6092"      "6091"      "2632"      "389136"    "25978"     "8545"     
[4357] "105377200" "55279"     "63899"     "84100"     "84864"     "1295"     
[4363] "84319"     "11259"     "57337"     "27107"     "64332"     "868"      
[4369] "56987"     "961"       "90102"     "55347"     "25871"     "80218"    
[4375] "523"       "2596"      "4045"      "56983"     "51365"     "64091"    
[4381] "116064"    "4710"      "51725"     "131076"    "151636"    "54625"    
[4387] "79663"     "84925"     "100129550" "54437"     "111"       "201562"   
[4393] "100506826" "4638"      "7372"      "10840"     "28999"     "79364"    
[4399] "114112"    "84303"     "5361"      "2624"      "7879"      "57501"    
[4405] "339122"    "57461"     "56941"     "132241"    "100507032" "729375"   
[4411] "27032"     "79858"     "152195"    "131870"    "11222"     "23317"    
[4417] "100532724" "66000"     "55573"     "58477"     "6578"      "25847"    
[4423] "80254"     "55167"     "10274"     "80723"     "101927597" "25852"    
[4429] "83850"     "80321"     "5291"      "5947"      "349565"    "5922"     
[4435] "7029"      "256356"    "54464"     "545"       "26577"     "344838"   
[4441] "100289361" "9435"      "285195"    "57088"     "5359"      "6596"     
[4447] "84343"     "4071"      "51122"     "11342"     "5217"      "646903"   
[4453] "653659"    "83939"     "116931"    "9934"      "53836"     "285313"   
[4459] "4154"      "401093"    "5028"      "5912"      "285315"    "9197"     
[4465] "6747"      "647033"    "100498859" "79674"     "5806"      "51319"    
[4471] "100996447" "4291"      "8706"      "101243545" "590"       "5274"     
[4477] "27333"     "55892"     "5584"      "5010"      "200916"    "6514"     
[4483] "23043"     "5337"      "57552"     "22871"     "254827"    "79718"    
[4489] "27094"     "51193"     "59345"     "8975"      "151613"    "131118"   
[4495] "56922"     "27074"     "100505687" "79929"     "55324"     "10195"    
[4501] "9718"      "5708"      "131408"    "8646"      "64110"     "9175"     
[4507] "90407"     "2119"      "1974"      "6480"      "604"       "4026"     
[4513] "9076"      "3556"      "2257"      "105374278" "131578"    "79572"    
[4519] "401106"    "100507297" "55341"     "105374297" "200958"    "10188"    
[4525] "7037"      "26043"     "255798"    "84984"     "5062"      "205564"   
[4531] "22916"     "152217"    "80235"     "4241"      "100507057" "1739"     
[4537] "622"       "9711"      "84859"     "89782"     "255403"    "79963"    
[4543] "54872"     "5158"      "4636"      "84179"     "53834"     "10417"    
[4549] "92070"     "7884"      "2261"      "353497"    "10608"     "317648"   
[4555] "285489"    "4043"      "152"       "27065"     "4487"      "54360"    
[4561] "55351"     "132884"    "2121"      "5522"      "23324"     "55330"    
[4567] "57533"     "257236"    "80273"     "60312"     "84448"     "54436"    
[4573] "8310"      "259282"    "132864"    "57545"     "202018"    "202020"   
[4579] "5860"      "51056"     "80306"     "27146"     "54876"     "166647"   
[4585] "10891"     "1665"      "91050"     "55203"     "29063"     "23231"    
[4591] "3516"      "55296"     "57620"     "5099"      "116984"    "51274"    
[4597] "92689"     "5981"      "6133"      "201895"    "3093"      "386617"   
[4603] "54951"     "10699"     "152519"    "57606"     "339977"    "64854"    
[4609] "643783"    "100288413" "65997"     "152579"    "26511"     "5156"     
[4615] "3815"      "79644"     "55763"     "9662"      "132949"    "6731"     
[4621] "84525"     "84273"     "5431"      "23284"     "253017"    "1060"     
[4627] "57050"     "22902"     "92597"     "8671"      "255324"    "9908"     
[4633] "55153"     "950"       "8987"      "55752"     "901"       "246175"   
[4639] "65008"     "80144"     "55589"     "56978"     "2250"      "153020"   
[4645] "3184"      "9987"      "58478"     "79966"     "100499177" "132660"   
[4651] "10855"     "113510"    "1040"      "404201"    "51170"     "53343"    
[4657] "152926"    "51191"     "100873748" "266812"    "10144"     "285513"   
[4663] "56916"     "10611"     "5910"      "10098"     "23173"     "128"      
[4669] "100507053" "93587"     "8649"      "115265"    "90024"     "64116"    
[4675] "493856"    "27068"     "93627"     "166929"    "3033"      "51176"    
[4681] "58505"     "839"       "54433"     "5308"      "92610"     "51574"    
[4687] "287"       "817"       "79642"     "133022"    "8492"      "645455"   
[4693] "729218"    "9871"      "171024"    "51778"     "401149"    "308"      
[4699] "55212"     "84162"     "166379"    "2247"      "57182"     "79633"    
[4705] "27152"     "22824"     "256471"    "80167"     "55132"     "10424"    
[4711] "100507487" "132321"    "57575"     "132430"    "23657"     "25819"    
[4717] "1998"      "84709"     "80155"     "83452"     "80854"     "60592"    
[4723] "1047"      "255520"    "23158"     "27309"     "8821"      "84640"    
[4729] "2549"      "8467"      "646576"    "6059"      "54726"     "4086"     
[4735] "166785"    "1909"      "166614"    "987"       "10586"     "6189"     
[4741] "5188"      "55294"     "27236"     "6423"      "79884"     "2982"     
[4747] "2743"      "51313"     "55314"     "5481"      "57600"     "9693"     
[4753] "92345"     "4886"      "23520"     "201931"    "6307"      "1363"     
[4759] "91351"     "23022"     "57630"     "4750"      "1182"      "54969"    
[4765] "9848"      "26269"     "116966"    "140458"    "90768"     "3622"     
[4771] "60684"     "3660"      "836"       "2180"      "291"       "83891"    
[4777] "55805"     "55325"     "256309"    "8470"      "25854"     "153478"   
[4783] "389257"    "10016"     "116349"    "6550"      "100288152" "100506688"
[4789] "10723"     "101928793" "81037"     "23379"     "134111"    "54888"    
[4795] "6715"      "11044"     "4552"      "9037"      "100505806" "134145"   
[4801] "134147"    "651746"    "1501"      "1767"      "90268"     "100130744"
[4807] "23194"     "441061"    "54463"     "4651"      "10409"     "29102"    
[4813] "55322"     "23037"     "10923"     "6897"      "51151"     "23600"    
[4819] "26064"     "5810"      "134218"    "79925"     "92255"     "133686"   
[4825] "6507"      "55100"     "100506495" "1601"      "23548"     "345557"   
[4831] "26272"     "2690"      "6414"      "648987"    "7690"      "3157"     
[4837] "10605"     "23530"     "2255"      "133418"    "642366"    "4338"     
[4843] "10468"     "4724"      "8988"      "493869"    "54505"     "345651"   
[4849] "10769"     "79993"     "1161"      "57688"     "285671"    "10283"    
[4855] "11174"     "23398"     "54557"     "140890"    "64924"     "92259"    
[4861] "5884"      "153562"    "728492"    "653238"    "8293"      "23107"    
[4867] "79810"     "3842"      "115548"    "2297"      "57763"     "64283"    
[4873] "3074"      "10412"     "51426"     "134359"    "22987"     "10788"    
[4879] "2150"      "84327"     "728723"    "8622"      "55255"     "728769"   
[4885] "411"       "133746"    "105379046" "202333"    "256987"    "644936"   
[4891] "167555"    "1719"      "4437"      "5924"      "1160"      "84240"    
[4897] "83734"     "92270"     "153339"    "1462"      "105379054" "1404"     
[4903] "153396"    "100505894" "84059"     "100505994" "100129716" "84250"    
[4909] "79772"     "9652"      "153642"    "83890"     "22936"     "51752"    
[4915] "167410"    "55781"     "7903"      "83594"     "2241"      "134430"   
[4921] "134429"    "100505678" "9315"      "64097"     "54508"     "167227"   
[4927] "64848"     "55521"     "153733"    "56929"     "1036"      "9140"     
[4933] "1176"      "57556"     "285605"    "25816"     "3295"      "28966"    
[4939] "153241"    "57507"     "65983"     "51808"     "84466"     "133619"   
[4945] "6558"      "2201"      "28965"     "51015"     "171019"    "90624"    
[4951] "6583"      "441108"    "3659"      "10111"     "134549"    "2661"     
[4957] "116842"    "54819"     "3308"      "6932"      "6500"      "51265"    
[4963] "23338"     "51128"     "134553"    "9555"      "4090"      "26249"    
[4969] "4888"      "8382"      "2676"      "51307"     "51780"     "1958"     
[4975] "2107"      "3313"      "100505636" "5813"      "404734"    "10307"    
[4981] "113829"    "55374"     "4695"      "23438"     "153527"    "56146"    
[4987] "56145"     "56144"     "56142"     "56139"     "56138"     "56137"    
[4993] "56133"     "56132"     "56130"     "56129"     "56128"     "56123"    
[4999] "56122"     "6879"      "56103"     "56100"     "1729"      "285613"   
[5005] "64411"     "5097"      "9812"      "10007"     "80762"     "2246"     
[5011] "2908"      "57528"     "51520"     "10915"     "79628"     "134265"   
[5017] "78991"     "27190"     "389337"    "5145"      "81789"     "22993"    
[5023] "6949"      "972"       "3340"      "91977"     "55696"     "51164"    
[5029] "91975"     "2878"      "10318"     "309"       "26112"     "2760"     
[5035] "206358"    "475"       "100652758" "386627"    "9421"      "23367"    
[5041] "9337"      "29093"     "6444"      "9443"      "26999"     "348938"   
[5047] "8728"      "54974"     "153830"    "134510"    "147"       "63920"    
[5053] "10569"     "134492"    "27430"     "57451"     "23286"     "79646"    
[5059] "6586"      "3779"      "64901"     "8817"      "23291"     "285590"   
[5065] "1843"      "100268168" "153222"    "662"       "1482"      "4488"     
[5071] "3274"      "375484"    "57179"     "285598"    "54825"     "26262"    
[5077] "53917"     "10960"     "2161"      "2870"      "80758"     "1627"     
[5083] "55651"     "3182"      "91522"     "6940"      "345462"    "30832"    
[5089] "9509"      "3187"      "11282"     "8878"      "9945"      "57472"    
[5095] "4245"      "643836"    "81786"     "90933"     "10399"     "619571"   
[5101] "56940"     "55770"     "94234"     "2296"      "100508120" "56897"    
[5107] "1992"      "5272"      "401233"    "101927759" "8737"      "63027"    
[5113] "221749"    "26240"     "8899"      "10455"     "9425"      "10799"    
[5119] "648791"    "6745"      "154007"    "9521"      "51000"     "2651"     
[5125] "4117"      "3096"      "1906"      "221692"    "10048"     "221687"   
[5131] "9308"      "29116"     "101928433" "401236"    "10486"     "51439"    
[5137] "63971"     "255488"    "3400"      "1871"      "54901"     "6659"     
[5143] "57380"     "55856"     "81688"     "9750"      "8418"      "3006"     
[5149] "8347"      "8334"      "3017"      "8367"      "8339"      "3012"     
[5155] "8365"      "11118"     "10385"     "11119"     "493812"    "10473"    
[5161] "8970"      "8969"      "85236"     "7754"      "346157"    "7738"     
[5167] "8330"      "8341"      "7718"      "7746"      "222699"    "387032"   
[5173] "7741"      "84547"     "80317"     "9753"      "222696"    "2550"     
[5179] "4340"      "346171"    "3134"      "3137"      "7726"      "56658"    
[5185] "79897"     "3133"      "2794"      "80742"     "28973"     "221545"   
[5191] "203068"    "780"       "3107"      "3106"      "534"       "4795"     
[5197] "7916"      "55937"     "57827"     "1460"      "7920"      "23564"    
[5203] "1192"      "3304"      "4758"      "10919"     "221527"    "63943"    
[5209] "9374"      "5089"      "4855"      "6891"      "5696"      "6890"     
[5215] "100294145" "6046"      "3115"      "7922"      "9277"      "10471"    
[5221] "5863"      "8831"      "3710"      "84300"     "3159"      "221491"   
[5227] "6204"      "29993"     "64771"     "54887"     "6882"      "2178"     
[5233] "2289"      "6732"      "1432"      "5603"      "27154"     "222658"   
[5239] "11329"     "6428"      "101154753" "105375039" "51645"     "23787"    
[5245] "5292"      "221468"    "55633"     "266727"    "55776"     "23500"    
[5251] "4337"      "222643"    "221443"    "116113"    "29964"     "100188893"
[5257] "25862"     "705"       "896"       "647024"    "2979"      "5961"     
[5263] "6903"      "441150"    "27232"     "5190"      "116138"    "88745"    
[5269] "10591"     "65989"     "93643"     "25844"     "9533"      "5429"     
[5275] "54676"     "55362"     "2030"      "347734"    "4794"      "202500"   
[5281] "57505"     "22875"     "59084"     "10231"     "221395"    "27242"    
[5287] "23607"     "221391"    "4594"      "401264"    "730101"    "28978"    
[5293] "2941"      "2729"      "401265"    "90523"     "222584"    "54511"    
[5299] "653"       "81578"     "667"       "26036"     "51715"     "51557"    
[5305] "7803"      "55788"     "79627"     "22999"     "56479"     "135228"   
[5311] "27145"     "4646"      "134728"    "55023"     "9324"      "100288198"
[5317] "167691"    "6785"      "55603"     "25998"     "7162"      "90025"    
[5323] "23033"     "167681"    "112609"    "57231"     "23036"     "57150"    
[5329] "206412"    "63914"     "10559"     "23595"     "135293"    "51465"    
[5335] "58528"     "22881"     "6885"      "2045"      "79694"     "23376"    
[5341] "84553"     "101927365" "100130890" "2898"      "11149"     "154442"   
[5347] "64208"     "5550"      "84816"     "55278"     "51250"     "11231"    
[5353] "28962"     "2309"      "285753"    "8763"      "8936"      "51362"    
[5359] "23097"     "262"       "117247"    "5980"      "643749"    "51175"    
[5365] "619208"    "4082"      "3066"      "101927768" "222537"    "254228"   
[5371] "222553"    "387119"    "5350"      "79632"     "4121"      "221322"   
[5377] "2697"      "5570"      "10345"     "101927990" "7955"      "154214"   
[5383] "51020"     "23493"     "60487"     "81847"     "84456"     "114801"   
[5389] "5167"      "1490"      "116843"    "9519"      "6446"      "4217"     
[5395] "5191"      "64065"     "57221"     "57224"     "441172"    "345930"   
[5401] "85021"     "58527"     "51696"     "167838"    "10370"     "51534"    
[5407] "3097"      "51390"     "134637"    "8504"      "2519"      "9749"     
[5413] "7402"      "257218"    "10981"     "729176"    "134957"    "389432"   
[5419] "23328"     "80328"     "80329"     "9590"      "57621"     "79624"    
[5425] "54516"     "26034"     "154043"    "26230"     "51106"     "729515"   
[5431] "404672"    "57583"     "7430"      "9589"      "29074"     "3482"     
[5437] "729603"    "56895"     "5071"      "135138"    "9444"      "10846"    
[5443] "100289495" "51660"     "11116"     "253769"    "387263"    "55274"    
[5449] "28514"     "5689"      "6908"      "441307"    "5575"      "23353"    
[5455] "102723743" "11033"     "115330"    "2852"      "90637"     "101927021"
[5461] "79778"     "202915"    "84262"     "392617"    "29960"     "8662"     
[5467] "3955"      "84433"     "9907"      "55698"     "441191"    "26100"    
[5473] "80028"     "60"        "6624"      "54476"     "9265"      "84792"    
[5479] "221955"    "11014"     "55146"     "54753"     "100131017" "221960"   
[5485] "6119"      "3382"      "100505938" "9678"      "221981"    "54664"    
[5491] "10124"     "1607"      "57037"     "196"       "23161"     "9734"     
[5497] "7291"      "221830"    "3696"      "55536"     "11097"     "10457"    
[5503] "10643"     "340277"    "4852"      "1687"      "26031"     "3181"     
[5509] "8887"      "221895"    "9865"      "222171"    "644150"    "84725"    
[5515] "10392"     "79017"     "401320"    "2617"      "358"       "5137"     
[5521] "401321"    "441212"    "6100"      "27241"     "168667"    "23333"    
[5527] "554236"    "57057"     "64224"     "101930085" "100506725" "80820"    
[5533] "9844"      "6424"      "83930"     "27072"     "5898"      "136647"   
[5539] "79783"     "3624"      "5683"      "9263"      "55744"     "55665"    
[5545] "255031"    "5224"      "27434"     "165"       "5425"      "58498"    
[5551] "2645"      "222068"    "5478"      "83605"     "23148"     "107"      
[5557] "641977"    "3486"      "3364"      "23242"     "55915"     "81552"    
[5563] "349075"    "51373"     "908"       "25870"     "51427"     "643180"   
[5569] "644619"    "643253"    "154807"    "435"       "8460"      "100996437"
[5575] "27342"     "51119"     "55253"     "5382"      "26053"     "64409"    
[5581] "155370"    "9883"      "378108"    "100101148" "100093631" "8326"     
[5587] "9031"      "26608"     "155382"    "114049"    "7462"      "7461"     
[5593] "9569"      "2969"      "442582"    "81554"     "2970"      "541473"   
[5599] "375593"    "100101267" "442590"    "3092"      "57414"     "5447"     
[5605] "222183"    "136853"    "7784"      "100133091" "22932"     "10875"    
[5611] "100505854" "222194"    "85025"     "100505881" "2770"      "948"      
[5617] "27445"     "10371"     "79161"     "54677"     "5243"      "55972"    
[5623] "6717"      "9069"      "5218"      "7978"      "10142"     "1595"     
[5629] "57798"     "5189"      "84060"     "55610"     "7980"      "2791"     
[5635] "8910"      "55607"     "5166"      "1780"      "440"       "55971"    
[5641] "10095"     "10898"     "84124"     "23660"     "221786"    "255374"   
[5647] "55262"     "79690"     "10734"     "352954"    "4034"      "64598"    
[5653] "51593"     "402682"    "43"        "1174"      "8985"      "10467"    
[5659] "24146"     "64792"     "136227"    "10603"     "54784"     "222229"   
[5665] "222234"    "222235"    "10234"     "83787"     "222236"    "9512"     
[5671] "375611"    "100216546" "100216545" "6733"      "60561"     "6856"     
[5677] "10135"     "168455"    "26959"     "10466"     "2845"      "11062"    
[5683] "55973"     "1738"      "3912"      "4897"      "50640"     "3475"     
[5689] "286006"    "64418"     "154743"    "101928036" "54329"     "5506"     
[5695] "29969"     "4233"      "7982"      "83992"     "3751"      "10447"    
[5701] "5803"      "10157"     "442721"    "2861"      "25913"     "2918"     
[5707] "79571"     "381"       "27044"     "64101"     "157247"    "55131"    
[5713] "29923"     "64753"     "9296"      "100130705" "23382"     "23008"    
[5719] "84928"     "378805"    "4289"      "100506881" "91584"     "54927"    
[5725] "60412"     "84912"     "669"       "55281"     "29062"     "23165"    
[5731] "1129"      "56829"     "79989"     "254048"    "80853"     "100134229"
[5737] "23608"     "100134713" "100507421" "55750"     "2051"      "373156"   
[5743] "9715"      "285966"    "9747"      "27010"     "136051"    "155054"   
[5749] "7988"      "100289678" "27153"     "84626"     "168544"    "643641"   
[5755] "401431"    "3757"      "4846"      "9311"      "1020"      "6522"     
[5761] "10922"     "116988"    "10061"     "6604"      "6009"      "51422"    
[5767] "57180"     "22976"     "155435"    "64327"     "64434"     "57488"    
[5773] "55112"     "169270"    "26260"     "100287015" "286042"    "157285"   
[5779] "137075"    "9258"      "79660"     "83648"     "640"       "101929490"
[5785] "252969"    "2222"      "1508"      "85002"     "91694"     "57604"    
[5791] "10395"     "157773"    "286097"    "51201"     "137492"    "9108"     
[5797] "6542"      "9"         "23362"     "55790"     "4023"      "526"      
[5803] "23039"     "2039"      "64760"     "79873"     "55806"     "23516"    
[5809] "10174"     "64236"     "57805"     "55909"     "1960"      "8793"     
[5815] "8797"      "91782"     "203069"    "4017"      "4824"      "137814"   
[5821] "4741"      "4747"      "2796"      "23087"     "2185"      "2053"     
[5827] "1191"      "55893"     "157574"    "79618"     "23303"     "1846"     
[5833] "23484"     "11030"     "2936"      "7993"      "5516"      "7486"     
[5839] "3084"      "84750"     "84549"     "80185"     "78986"     "137970"   
[5845] "80139"     "1978"      "23259"     "137994"    "6867"      "6422"     
[5851] "137964"    "286"       "7994"      "5327"      "3551"      "6575"     
[5857] "114926"    "55145"     "84376"     "23514"     "1052"      "115294"   
[5863] "9821"      "51606"     "8601"      "6917"      "29088"     "137695"   
[5869] "6224"      "6386"      "767"       "253943"    "5150"      "23212"    
[5875] "80124"     "81796"     "23471"     "51110"     "7013"      "157506"   
[5881] "6921"      "5828"      "3574"      "7163"      "65986"     "55824"    
[5887] "2171"      "79752"     "64089"     "377677"    "760"       "4325"     
[5893] "101929709" "734"       "4683"      "793"       "169200"    "64168"    
[5899] "100127983" "100506365" "51633"     "389677"    "91147"     "54704"    
[5905] "54845"     "137682"    "94241"     "79666"     "157657"    "392255"   
[5911] "51001"     "9791"      "85453"     "92140"     "203111"    "79815"    
[5917] "157680"    "5440"      "6674"      "157567"    "7534"      "51123"    
[5923] "83988"     "51366"     "7071"      "51582"     "100506753" "25879"    
[5929] "9699"      "284"       "9694"      "157753"    "84955"     "56943"    
[5935] "93035"     "27012"     "114788"    "8667"      "84294"     "2131"     
[5941] "401474"    "4982"      "114569"    "4856"      "5168"      "64798"    
[5947] "6641"      "3037"      "79139"     "84933"     "114907"    "157769"   
[5953] "9788"      "6713"      "5820"      "50807"     "114"       "3786"     
[5959] "137835"    "7038"      "10397"     "10656"     "83696"     "57210"    
[5965] "2843"      "51337"     "66004"     "79943"     "642475"    "1936"     
[5971] "65263"     "7264"      "9831"      "225689"    "286077"    "23513"    
[5977] "340371"    "5339"      "84875"     "26873"     "54512"     "8733"     
[5983] "1537"      "84232"     "340390"    "8694"      "203054"    "51160"    
[5989] "4796"      "100287098" "50626"     "90990"     "414919"    "80778"    
[5995] "340385"    "65265"     "81704"     "23189"     "6595"      "7436"     
[6001] "5991"      "6505"      "55064"     "403313"    "55664"     "50808"    
[6007] "57589"     "158358"    "2731"      "5789"      "101929407" "340481"   
[6013] "158326"    "158219"    "203238"    "54796"     "54875"     "6456"     
[6019] "92949"     "10670"     "123"       "340485"    "4300"      "54914"    
[6025] "55958"     "4507"      "63951"     "7010"      "79817"     "158038"   
[6031] "100129250" "55234"     "2683"      "573"       "51510"     "360"      
[6037] "441394"    "11191"     "55833"     "318"       "203259"    "1271"     
[6043] "2592"      "84720"     "10497"     "158381"    "9853"      "7016"     
[6049] "6023"      "203260"    "7094"      "10488"     "57704"     "84681"    
[6055] "51754"     "92973"     "8434"      "152007"    "100506710" "26267"    
[6061] "401505"    "22844"     "6461"      "219"       "347252"    "101929959"
[6067] "5239"      "169693"    "8395"      "2395"      "9414"      "100885775"
[6073] "9413"      "375743"    "23670"     "51104"     "138241"    "55071"    
[6079] "5125"      "55312"     "2776"      "84131"     "7091"      "7088"     
[6085] "158158"    "102723989" "257019"    "105376114" "64078"     "4915"     
[6091] "389765"    "1514"      "79048"     "54769"     "4783"      "4920"     
[6097] "10558"     "54829"     "64768"     "23299"     "138649"    "83744"    
[6103] "84270"     "4814"      "445577"    "23196"     "158257"    "169841"   
[6109] "101928099" "375748"    "11046"     "22927"     "8555"      "1515"     
[6115] "7111"      "9830"      "7464"      "55357"     "8013"      "23071"    
[6121] "54881"     "347273"    "19"        "23446"     "26134"     "2218"     
[6127] "105376204" "9314"      "8518"      "54942"     "8727"      "54566"    
[6133] "5774"      "114299"    "445815"    "7295"      "548645"    "2790"     
[6139] "9991"      "84263"     "58493"     "401548"    "169834"    "7539"     
[6145] "81932"     "210"       "54107"     "85301"     "25861"     "9550"     
[6151] "23245"     "7099"      "1620"      "55755"     "2934"      "2040"     
[6157] "4702"      "92399"     "5742"      "286204"    "100129034" "169611"   
[6163] "81873"     "286205"    "3309"      "23099"     "403341"    "9649"     
[6169] "23452"     "29988"     "7633"      "6136"      "90678"     "6812"     
[6175] "1025"      "2022"      "27090"     "399665"    "203245"    "114789"   
[6181] "80142"     "79095"     "2801"      "2733"      "6709"      "84885"    
[6187] "10444"     "54662"     "254295"    "56904"     "84895"     "1384"     
[6193] "5524"      "389792"    "100506119" "100506190" "28989"     "140459"   
[6199] "27348"     "1861"      "10868"     "23413"     "445"       "100272217"
[6205] "8939"      "23404"     "84814"     "10585"     "23064"     "7270"     
[6211] "9329"      "9328"      "5900"      "26301"     "6837"      "6834"     
[6217] "11182"     "9719"      "266655"    "1289"      "100506599" "51116"    
[6223] "138151"    "169714"    "26086"     "64170"     "10807"     "23203"    
[6229] "158055"    "4851"      "101928483" "138311"    "85014"     "84960"    
[6235] "29085"     "7186"      "54461"     "286257"    "100289341" "8636"     
[6241] "27158"     "26012"     "64975"     "92715"     "92714"     "55344"    
[6247] "283981"    "28227"     "8227"      "207063"    "8908"      "25878"    
[6253] "5613"      "389906"    "412"       "6907"      "4935"      "55841"    
[6259] "4281"      "5634"      "140456"    "5277"      "8544"      "57393"    
[6265] "56474"     "94056"     "4810"      "6322"      "10742"     "10149"    
[6271] "22866"     "23676"     "51360"     "23597"     "6303"      "79135"    
[6277] "9468"      "11141"     "257397"    "1756"      "83604"     "6990"     
[6283] "6103"      "10159"     "8573"      "80258"     "56548"     "6102"     
[6289] "9767"      "9104"      "54539"     "8241"      "8237"      "7592"     
[6295] "369"       "10682"     "4943"      "64743"     "10245"     "10084"    
[6301] "55593"     "7030"      "79917"     "5355"      "89801"     "389856"   
[6307] "139189"    "57477"     "170685"    "55190"     "23708"     "81557"    
[6313] "728239"    "727866"    "29057"     "54328"     "64061"     "23133"    
[6319] "54954"     "65267"     "90121"     "7216"      "27301"     "100463488"
[6325] "28986"     "10325"     "29978"     "169981"    "92249"     "23229"    
[6331] "139285"    "55906"     "83957"     "4478"      "367"       "4983"     
[6337] "1947"      "1896"      "3476"      "54857"     "105373244" "29934"    
[6343] "9968"      "9203"      "4841"      "26548"     "340526"    "55869"    
[6349] "139201"    "53344"     "6567"      "22"        "139596"    "646127"   
[6355] "158866"    "538"       "9452"      "27330"     "140886"    "57526"    
[6361] "94121"     "1478"      "27035"     "79979"     "1821"      "54457"    
[6367] "1678"      "6173"      "2717"      "100131755" "51309"     "54470"    
[6373] "9823"      "64860"     "80823"     "56271"     "84707"     "9643"     
[6379] "51209"     "286437"    "139221"    "55086"     "54885"     "79710"    
[6385] "54830"     "84443"     "115201"    "55916"     "105373311" "9949"     
[6391] "90293"     "3597"      "170261"    "10857"     "203427"    "7319"     
[6397] "2747"      "2892"      "57187"     "8862"      "51114"     "2000"     
[6403] "9131"      "9016"      "51634"     "55855"     "286467"    "55796"    
[6409] "2239"      "347475"    "84295"     "159090"    "159091"    "56180"    
[6415] "644538"    "203523"    "399668"    "2273"      "27316"     "100129662"
[6421] "4168"      "2332"      "3423"      "100130086" "84548"     "100506164"
[6427] "541578"    "10046"     "4534"      "8776"      "2564"      "50814"    
[6433] "7739"      "84968"     "10838"     "633"       "6535"      "10134"    
[6439] "26576"     "6748"      "57595"     "5973"      "6901"      "8266"     
[6445] "8273"      "2539"      "8517"      "1736"      "2157"      "55217"    
# Load expression dataset
boxplot1 <- read.csv("data/boxplot1.csv", check.names = FALSE)
boxplot1 <- as.data.frame(boxplot1)

# Choose a gene from the DOX only mid-late response group (0.5 µM)
target_entrez <- 4892  # Replace with your desired Entrez ID from prob_3_0.5

# Check membership
if (!(target_entrez %in% prob_3_0.5)) {
  stop("Selected gene is not in the DOX only mid-late response group for 0.5 micromolar.")
}

# Filter for selected gene
gene_data <- boxplot1[boxplot1$ENTREZID == target_entrez, ]
if(nrow(gene_data) == 0) stop("No data found for selected ENTREZID.")

# Reshape to long format
gene_data_long <- melt(gene_data,
                       id.vars = c("ENTREZID", "SYMBOL", "GENENAME"),
                       variable.name = "Sample",
                       value.name = "log2CPM")

# Extract metadata from sample names
gene_data_long <- gene_data_long %>%
  mutate(
    Time = sub(".*_(\\d+)$", "\\1", Sample),
    Concentration = sub(".*_(0\\.\\d)_\\d+$", "\\1", Sample),
    Drug = sub(".*_(CX\\.5461|DOX|VEH)_.*", "\\1", Sample),
    Indv = sub("^([0-9]+\\.[0-9]+)_.*", "\\1", Sample)
  )

# Filter for 0.5 micromolar only
gene_data_long <- gene_data_long %>% filter(Concentration == "0.5")

# Convert to factors
gene_data_long$Time <- factor(gene_data_long$Time, levels = c("3", "24", "48"))
gene_data_long$Concentration <- factor(gene_data_long$Concentration, levels = "0.5")

# Map individual IDs
indv_mapping <- c("75.1" = "1", "78.1" = "2", "87.1" = "3", 
                  "17.3" = "4", "84.1" = "5", "90.1" = "6")

gene_data_long <- gene_data_long %>%
  mutate(Indv = ifelse(Indv %in% names(indv_mapping), indv_mapping[Indv], "Unknown"))

# Define color palette for drugs
drug_palette <- c("CX.5461" = "#08306B", "DOX" = "#E7298A", "VEH" = "green")

# Extract gene symbol for labeling
gene_symbol <- unique(gene_data_long$SYMBOL)[1]

# Create the boxplot
ggplot(gene_data_long, aes(x = Drug, y = log2CPM, fill = Drug)) +
  geom_boxplot(outlier.shape = NA) +
  scale_fill_manual(values = drug_palette) +
  facet_grid(. ~ Time, labeller = label_both) +
  geom_point(aes(color = Indv), size = 2, alpha = 0.5,
             position = position_jitter(width = -0.3, height = 0)) +
  ggtitle("DOX only mid-late\nresponse (0.5 micromolar)") +
  labs(
    x = "Drugs",
    y = paste(gene_symbol, " log2CPM")
  ) +
  ylim(0, NA) +
  theme_bw() +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.ticks = element_line(linewidth = 1.5),
    axis.line = element_line(linewidth = 1.5),
    axis.text.y = element_text(size = 10, color = "black"),
    axis.text.x = element_text(size = 10, color = "black", angle = 45, hjust = 1),
    strip.text = element_text(size = 12, face = "bold")
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07

📌 CX total + DOX early response (0.5 micromolar)

# Load libraries
library(dplyr)
library(ggplot2)
library(reshape2)

# Load response group: CX total + DOX early response (0.5 µM)
prob_4_0.5 <- as.character(read.csv("data/prob_4_0.5.csv")$Entrez_ID)

# View gene list (optional)
prob_4_0.5
  [1] "1870"      "79000"     "63967"     "55143"     "8438"      "6491"     
  [7] "1031"      "4998"      "55706"     "8317"      "343099"    "64858"    
 [13] "653820"    "554282"    "728833"    "1163"      "91687"     "79723"    
 [19] "414149"    "84930"     "983"       "219790"    "1763"      "6240"     
 [25] "2237"      "113130"    "23649"     "220042"    "2305"      "9918"     
 [31] "83461"     "9700"      "1017"      "100128191" "7112"      "283431"   
 [37] "5985"      "9735"      "140707"    "102659353" "5426"      "675"      
 [43] "440145"    "650669"    "11169"     "7443"      "7517"      "400322"   
 [49] "11339"     "51203"     "22995"     "9768"      "54982"     "90381"    
 [55] "1106"      "899"       "124222"    "9088"      "116028"    "54820"    
 [61] "8479"      "79801"     "23594"     "64785"     "55839"     "81620"    
 [67] "2175"      "83903"     "54478"     "79915"     "146857"    "29893"    
 [73] "78995"     "146956"    "3838"      "7083"      "201255"    "126282"   
 [79] "29128"     "10535"     "348654"    "79172"     "4175"      "83879"    
 [85] "151246"    "23178"     "1841"      "994"       "84515"     "81610"    
 [91] "6790"      "10732"     "29980"     "8208"      "54058"     "151648"   
 [97] "56992"     "993"       "25886"     "5984"      "10460"     "7468"     
[103] "1633"      "3015"      "890"       "201725"    "3148"      "79682"    
[109] "375444"    "55789"     "64946"     "4001"      "100996485" "995"      
[115] "3161"      "83463"     "51053"     "4800"      "55166"     "5558"     
[121] "9994"      "253714"    "387103"    "113115"    "26271"     "63979"    
[127] "5982"      "10926"     "4176"      "157313"    "157570"    "4173"     
[133] "8836"      "4603"      "9134"      "27085"     "9401"      "4957"     
[139] "29941"     "89958"     "10383"     "54821"    
# Load expression dataset
boxplot1 <- read.csv("data/boxplot1.csv", check.names = FALSE)
boxplot1 <- as.data.frame(boxplot1)

# Choose a gene from the CX total + DOX early response group (0.5 µM)
target_entrez <- 983  # Replace with your desired Entrez ID from prob_4_0.5

# Check membership
if (!(target_entrez %in% prob_4_0.5)) {
  stop("Selected gene is not in the CX total + DOX early response group for 0.5 micromolar.")
}

# Filter for selected gene
gene_data <- boxplot1[boxplot1$ENTREZID == target_entrez, ]
if(nrow(gene_data) == 0) stop("No data found for selected ENTREZID.")

# Reshape to long format
gene_data_long <- melt(gene_data,
                       id.vars = c("ENTREZID", "SYMBOL", "GENENAME"),
                       variable.name = "Sample",
                       value.name = "log2CPM")

# Extract metadata from sample names
gene_data_long <- gene_data_long %>%
  mutate(
    Time = sub(".*_(\\d+)$", "\\1", Sample),
    Concentration = sub(".*_(0\\.\\d)_\\d+$", "\\1", Sample),
    Drug = sub(".*_(CX\\.5461|DOX|VEH)_.*", "\\1", Sample),
    Indv = sub("^([0-9]+\\.[0-9]+)_.*", "\\1", Sample)
  )

# Filter for 0.5 micromolar only
gene_data_long <- gene_data_long %>% filter(Concentration == "0.5")

# Convert to factors
gene_data_long$Time <- factor(gene_data_long$Time, levels = c("3", "24", "48"))
gene_data_long$Concentration <- factor(gene_data_long$Concentration, levels = "0.5")

# Map individual IDs
indv_mapping <- c("75.1" = "1", "78.1" = "2", "87.1" = "3", 
                  "17.3" = "4", "84.1" = "5", "90.1" = "6")

gene_data_long <- gene_data_long %>%
  mutate(Indv = ifelse(Indv %in% names(indv_mapping), indv_mapping[Indv], "Unknown"))

# Define color palette for drugs
drug_palette <- c("CX.5461" = "#08306B", "DOX" = "#E7298A", "VEH" = "green")

# Extract gene symbol for labeling
gene_symbol <- unique(gene_data_long$SYMBOL)[1]

# Create the boxplot
ggplot(gene_data_long, aes(x = Drug, y = log2CPM, fill = Drug)) +
  geom_boxplot(outlier.shape = NA) +
  scale_fill_manual(values = drug_palette) +
  facet_grid(. ~ Time, labeller = label_both) +
  geom_point(aes(color = Indv), size = 2, alpha = 0.5,
             position = position_jitter(width = -0.3, height = 0)) +
  ggtitle("CX total+ DOX early\nresponse (0.5 micromolar)") +
  labs(
    x = "Drugs",
    y = paste(gene_symbol, " log2CPM")
  ) +
  ylim(0, NA) +
  theme_bw() +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.ticks = element_line(linewidth = 1.5),
    axis.line = element_line(linewidth = 1.5),
    axis.text.y = element_text(size = 10, color = "black"),
    axis.text.x = element_text(size = 10, color = "black", angle = 45, hjust = 1),
    strip.text = element_text(size = 12, face = "bold")
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07

📌 DOX early + CX-DOX mid-late response (0.5 µM)

# Load libraries
library(dplyr)
library(ggplot2)
library(reshape2)

# Load response group: DOX early + CX-DOX mid-late response (0.5 µM)
prob_5_0.5 <- as.character(read.csv("data/prob_5_0.5.csv")$Entrez_ID)

# View gene list (optional)
prob_5_0.5
  [1] "3151"      "83667"     "149175"    "991"       "11004"     "55635"    
  [7] "126820"    "163786"    "29899"     "57535"     "26227"     "9557"     
 [13] "54964"     "128239"    "83540"     "55732"     "51278"     "259266"   
 [19] "9928"      "29089"     "7832"      "729533"    "4751"      "51514"    
 [25] "1063"      "9156"      "55388"     "11130"     "79933"     "100144748"
 [31] "9585"      "3832"      "55165"     "3070"      "10613"     "54780"    
 [37] "4288"      "10346"     "81930"     "374393"    "79073"     "3619"     
 [43] "9633"      "10714"     "143888"    "3014"      "1111"      "23310"    
 [49] "10635"     "441631"    "10376"     "84790"     "10024"     "29127"    
 [55] "23468"     "8914"      "5557"      "23306"     "4193"      "55010"    
 [61] "7374"      "11113"     "221150"    "55835"     "5983"      "11340"    
 [67] "79866"     "10426"     "55632"     "55320"     "5427"      "64841"    
 [73] "1033"      "9787"      "4522"      "145508"    "89839"     "100288637"
 [79] "9824"      "701"       "90417"     "57082"     "5888"      "79968"    
 [85] "9133"      "80119"     "54962"     "55055"     "9493"      "26263"    
 [91] "64782"     "55215"     "641"       "9055"      "63922"     "23204"    
 [97] "5347"      "3835"      "65057"     "51659"     "9212"      "10615"    
[103] "990"       "7153"      "672"       "146909"    "55771"     "83990"    
[109] "105371937" "2232"      "332"       "7298"      "10403"     "3613"     
[115] "162655"    "220134"    "162681"    "148229"    "84823"     "10036"    
[121] "1786"      "147841"    "23354"     "115703"    "284403"    "8193"     
[127] "27113"     "3978"      "5424"      "27338"     "6241"      "1058"     
[133] "4436"      "23397"     "699"       "150468"    "57405"     "284992"   
[139] "55355"     "9837"      "22974"     "1869"      "79980"     "5933"     
[145] "4605"      "11065"     "54069"     "8318"      "11200"     "3976"     
[151] "4174"      "79640"     "79019"     "51512"     "2177"      "9942"     
[157] "10293"     "57650"     "10721"     "4171"      "8930"      "10051"    
[163] "1894"      "64393"     "116832"    "132671"    "1062"      "55345"    
[169] "4085"      "5393"      "10733"     "132320"    "84057"     "51166"    
[175] "55247"     "9319"      "64105"     "891"       "10112"     "9232"     
[181] "54908"     "7913"      "11270"     "9656"      "6941"      "1026"     
[187] "4172"      "7272"      "27244"     "2037"      "29887"     "54443"    
[193] "7378"      "349152"    "7516"      "54892"     "389610"    "8795"     
[199] "8794"      "55872"     "84296"     "25788"     "50484"     "79075"    
[205] "29028"     "11168"     "347240"    "2189"      "84904"     "9833"     
[211] "401541"    "100128361" "10592"     "26147"     "6839"      "139886"   
[217] "60401"     "24137"     "2491"      "55559"     "4354"     
# Load expression dataset
boxplot1 <- read.csv("data/boxplot1.csv", check.names = FALSE)
boxplot1 <- as.data.frame(boxplot1)

# Choose a gene from the DOX early + CX-DOX mid-late response group (0.5 µM)
target_entrez <- 672  # Replace with your desired Entrez ID from prob_5_0.5

# Check membership
if (!(target_entrez %in% prob_5_0.5)) {
  stop("Selected gene is not in the DOX early + CX-DOX mid-late response group for 0.5 micromolar.")
}

# Filter for selected gene
gene_data <- boxplot1[boxplot1$ENTREZID == target_entrez, ]
if(nrow(gene_data) == 0) stop("No data found for selected ENTREZID.")

# Reshape to long format
gene_data_long <- melt(gene_data,
                       id.vars = c("ENTREZID", "SYMBOL", "GENENAME"),
                       variable.name = "Sample",
                       value.name = "log2CPM")

# Extract metadata from sample names
gene_data_long <- gene_data_long %>%
  mutate(
    Time = sub(".*_(\\d+)$", "\\1", Sample),
    Concentration = sub(".*_(0\\.\\d)_\\d+$", "\\1", Sample),
    Drug = sub(".*_(CX\\.5461|DOX|VEH)_.*", "\\1", Sample),
    Indv = sub("^([0-9]+\\.[0-9]+)_.*", "\\1", Sample)
  )

# Filter for 0.5 micromolar only
gene_data_long <- gene_data_long %>% filter(Concentration == "0.5")

# Convert to factors
gene_data_long$Time <- factor(gene_data_long$Time, levels = c("3", "24", "48"))
gene_data_long$Concentration <- factor(gene_data_long$Concentration, levels = "0.5")

# Map individual IDs
indv_mapping <- c("75.1" = "1", "78.1" = "2", "87.1" = "3", 
                  "17.3" = "4", "84.1" = "5", "90.1" = "6")

gene_data_long <- gene_data_long %>%
  mutate(Indv = ifelse(Indv %in% names(indv_mapping), indv_mapping[Indv], "Unknown"))

# Define color palette for drugs
drug_palette <- c("CX.5461" = "#08306B", "DOX" = "#E7298A", "VEH" = "green")

# Extract gene symbol for labeling
gene_symbol <- unique(gene_data_long$SYMBOL)[1]

# Create the boxplot
ggplot(gene_data_long, aes(x = Drug, y = log2CPM, fill = Drug)) +
  geom_boxplot(outlier.shape = NA) +
  scale_fill_manual(values = drug_palette) +
  facet_grid(. ~ Time, labeller = label_both) +
  geom_point(aes(color = Indv), size = 2, alpha = 0.5,
             position = position_jitter(width = -0.3, height = 0)) +
  ggtitle("DOX early+ CX-DOX mid-late\nresponse (0.5 micromolar)") +
  labs(
    x = "Drugs",
    y = paste(gene_symbol, " log2CPM")
  ) +
  ylim(0, NA) +
  theme_bw() +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 15, color = "black"),
    axis.ticks = element_line(linewidth = 1.5),
    axis.line = element_line(linewidth = 1.5),
    axis.text.y = element_text(size = 10, color = "black"),
    axis.text.x = element_text(size = 10, color = "black", angle = 45, hjust = 1),
    strip.text = element_text(size = 12, face = "bold")
  )

Version Author Date
aab6b9f sayanpaul01 2025-04-07

📌 Corrmotif conc boxplot for manuscript 0.1

# Load Required Libraries
library(dplyr)
library(ggplot2)

# ----------------- Load Response Groups -----------------

# 0.1 µM
prob_1_0.1 <- as.character(read.csv("data/prob_1_0.1.csv")$Entrez_ID)
prob_2_0.1 <- as.character(read.csv("data/prob_2_0.1.csv")$Entrez_ID)
prob_3_0.1 <- as.character(read.csv("data/prob_3_0.1.csv")$Entrez_ID)

# ----------------- Load DEG Data -----------------

# Helper function to load and label
load_deg <- function(path, drug, time) {
  read.csv(path) %>%
    mutate(Drug = drug, Timepoint = time)
}

# 0.1 µM DEG data
deg_0.1 <- bind_rows(
  load_deg("data/DEGs/Toptable_CX_0.1_3.csv", "CX.5461", 3),
  load_deg("data/DEGs/Toptable_CX_0.1_24.csv", "CX.5461", 24),
  load_deg("data/DEGs/Toptable_CX_0.1_48.csv", "CX.5461", 48),
  load_deg("data/DEGs/Toptable_DOX_0.1_3.csv", "DOX", 3),
  load_deg("data/DEGs/Toptable_DOX_0.1_24.csv", "DOX", 24),
  load_deg("data/DEGs/Toptable_DOX_0.1_48.csv", "DOX", 48)
) %>%
  mutate(
    Entrez_ID = as.character(Entrez_ID),
    Response_Group = case_when(
      Entrez_ID %in% prob_1_0.1 ~ "Non response\n(0.1 µM)",
      Entrez_ID %in% prob_2_0.1 ~ "CX-DOX mid-late response\n(0.1 µM)",
      Entrez_ID %in% prob_3_0.1 ~ "DOX only mid-late response\n(0.1 µM)",
      TRUE ~ NA_character_
    )
  ) %>%
  filter(!is.na(Response_Group))

# ----------------- Set Factor Levels -----------------

deg_0.1 <- deg_0.1 %>%
  mutate(
    Timepoint = factor(Timepoint, levels = c(3, 24, 48)),
    Response_Group = factor(Response_Group, levels = c(
      "Non response\n(0.1 µM)",
      "CX-DOX mid-late response\n(0.1 µM)",
      "DOX only mid-late response\n(0.1 µM)"
    ))
  )

# ----------------- Plot Boxplot (Grouped by Timepoint, Faceted by Response Group) -----------------

ggplot(deg_0.1, aes(x = Timepoint, y = logFC, fill = Drug)) +
  geom_boxplot(position = position_dodge(width = 0.75)) +
  scale_fill_manual(values = c("CX.5461" = "blue", "DOX" = "red")) +
  facet_grid(. ~ Response_Group, scales = "free_x") +
  theme_bw() +
  labs(
    x = "Timepoint (hours)",
    y = "Log Fold Change",
    title = "Log Fold Change Distribution by Drug and Response Group (0.1 µM)",
    fill = "Drug"
  ) +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 14),
    axis.text = element_text(size = 12),
    strip.text = element_text(size = 11, face = "bold"),
    legend.title = element_text(size = 14),
    legend.text = element_text(size = 12)
  )

Version Author Date
a568872 sayanpaul01 2025-04-10

📌 Corrmotif conc boxplot for manuscript 0.5

# Load Required Libraries
library(dplyr)
library(ggplot2)

# ----------------- Load Response Groups -----------------

# 0.5 µM
prob_1_0.5 <- as.character(read.csv("data/prob_1_0.5.csv")$Entrez_ID)
prob_2_0.5 <- as.character(read.csv("data/prob_2_0.5.csv")$Entrez_ID)
prob_3_0.5 <- as.character(read.csv("data/prob_3_0.5.csv")$Entrez_ID)
prob_4_0.5 <- as.character(read.csv("data/prob_4_0.5.csv")$Entrez_ID)
prob_5_0.5 <- as.character(read.csv("data/prob_5_0.5.csv")$Entrez_ID)

# ----------------- Load DEG Data -----------------

# Helper function to load and label
load_deg <- function(path, drug, time) {
  read.csv(path) %>%
    mutate(Drug = drug, Timepoint = time)
}

# 0.5 µM DEG data
deg_0.5 <- bind_rows(
  load_deg("data/DEGs/Toptable_CX_0.5_3.csv", "CX.5461", 3),
  load_deg("data/DEGs/Toptable_CX_0.5_24.csv", "CX.5461", 24),
  load_deg("data/DEGs/Toptable_CX_0.5_48.csv", "CX.5461", 48),
  load_deg("data/DEGs/Toptable_DOX_0.5_3.csv", "DOX", 3),
  load_deg("data/DEGs/Toptable_DOX_0.5_24.csv", "DOX", 24),
  load_deg("data/DEGs/Toptable_DOX_0.5_48.csv", "DOX", 48)
) %>%
  mutate(
    Entrez_ID = as.character(Entrez_ID),
    Response_Group = case_when(
      Entrez_ID %in% prob_1_0.5 ~ "Non response\n(0.5 µM)",
      Entrez_ID %in% prob_2_0.5 ~ "DOX-specific\nresponse (0.5 µM)",
      Entrez_ID %in% prob_3_0.5 ~ "DOX only mid-late\nresponse (0.5 µM)",
      Entrez_ID %in% prob_4_0.5 ~ "CX + DOX (early)\nresponse (0.5 µM)",
      Entrez_ID %in% prob_5_0.5 ~ "DOX + CX (mid-late)\nresponse (0.5 µM)",
      TRUE ~ NA_character_
    )
  ) %>%
  filter(!is.na(Response_Group))

# ----------------- Set Factor Levels -----------------

deg_0.5 <- deg_0.5 %>%
  mutate(
    Timepoint = factor(Timepoint, levels = c(3, 24, 48)),
    Response_Group = factor(Response_Group, levels = c(
      "Non response\n(0.5 µM)",
      "DOX-specific\nresponse (0.5 µM)",
      "DOX only mid-late\nresponse (0.5 µM)",
      "CX + DOX (early)\nresponse (0.5 µM)",
      "DOX + CX (mid-late)\nresponse (0.5 µM)"
    ))
  )

# ----------------- Plot Boxplot (Grouped by Timepoint, Faceted by Response Group) -----------------

ggplot(deg_0.5, aes(x = Timepoint, y = logFC, fill = Drug)) +
  geom_boxplot(position = position_dodge(width = 0.75)) +
  scale_fill_manual(values = c("CX.5461" = "blue", "DOX" = "red")) +
  facet_grid(. ~ Response_Group, scales = "free_x") +
  theme_bw() +
  labs(
    x = "Timepoint (hours)",
    y = "Log Fold Change",
    title = "Log Fold Change Distribution by Drug and Response Group (0.5 µM)",
    fill = "Drug"
  ) +
  theme(
    plot.title = element_text(size = rel(1.5), hjust = 0.5),
    axis.title = element_text(size = 14),
    axis.text = element_text(size = 12),
    strip.text = element_text(size = 11, face = "bold"),
    legend.title = element_text(size = 14),
    legend.text = element_text(size = 12)
  )

Version Author Date
a568872 sayanpaul01 2025-04-10

sessionInfo()
R version 4.3.0 (2023-04-21 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 11 x64 (build 26100)

Matrix products: default


locale:
[1] LC_COLLATE=English_United States.utf8 
[2] LC_CTYPE=English_United States.utf8   
[3] LC_MONETARY=English_United States.utf8
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.utf8    

time zone: America/Chicago
tzcode source: internal

attached base packages:
[1] stats4    stats     graphics  grDevices utils     datasets  methods  
[8] base     

other attached packages:
 [1] reshape2_1.4.4       org.Hs.eg.db_3.18.0  AnnotationDbi_1.64.1
 [4] IRanges_2.36.0       S4Vectors_0.40.1     tidyr_1.3.1         
 [7] ggplot2_3.5.1        gprofiler2_0.2.3     BiocParallel_1.36.0 
[10] dplyr_1.1.4          Rfast_2.1.0          RcppParallel_5.1.9  
[13] RcppZiggurat_0.1.6   Rcpp_1.0.12          Cormotif_1.48.0     
[16] limma_3.58.1         affy_1.80.0          Biobase_2.62.0      
[19] BiocGenerics_0.48.1  workflowr_1.7.1     

loaded via a namespace (and not attached):
 [1] tidyselect_1.2.1        viridisLite_0.4.2       farver_2.1.2           
 [4] blob_1.2.4              bitops_1.0-7            Biostrings_2.70.1      
 [7] RCurl_1.98-1.13         fastmap_1.1.1           lazyeval_0.2.2         
[10] promises_1.3.0          digest_0.6.34           lifecycle_1.0.4        
[13] statmod_1.5.0           processx_3.8.5          KEGGREST_1.42.0        
[16] RSQLite_2.3.3           magrittr_2.0.3          compiler_4.3.0         
[19] rlang_1.1.3             sass_0.4.9              tools_4.3.0            
[22] yaml_2.3.10             data.table_1.14.10      knitr_1.49             
[25] labeling_0.4.3          htmlwidgets_1.6.4       bit_4.0.5              
[28] plyr_1.8.9              withr_3.0.2             purrr_1.0.2            
[31] grid_4.3.0              preprocessCore_1.64.0   git2r_0.35.0           
[34] colorspace_2.1-0        scales_1.3.0            cli_3.6.1              
[37] crayon_1.5.3            rmarkdown_2.29          generics_0.1.3         
[40] rstudioapi_0.17.1       httr_1.4.7              DBI_1.2.3              
[43] cachem_1.0.8            stringr_1.5.1           zlibbioc_1.48.0        
[46] parallel_4.3.0          XVector_0.42.0          BiocManager_1.30.25    
[49] vctrs_0.6.5             jsonlite_1.8.9          callr_3.7.6            
[52] bit64_4.0.5             plotly_4.10.4           jquerylib_0.1.4        
[55] affyio_1.72.0           glue_1.7.0              codetools_0.2-20       
[58] ps_1.8.1                stringi_1.8.3           gtable_0.3.6           
[61] GenomeInfoDb_1.38.8     later_1.3.2             munsell_0.5.1          
[64] tibble_3.2.1            pillar_1.10.1           htmltools_0.5.8.1      
[67] GenomeInfoDbData_1.2.11 R6_2.5.1                rprojroot_2.0.4        
[70] evaluate_1.0.3          png_0.1-8               memoise_2.0.1          
[73] httpuv_1.6.15           bslib_0.8.0             whisker_0.4.1          
[76] xfun_0.50               fs_1.6.3                getPass_0.2-4          
[79] pkgconfig_2.0.3