Learn R Programming

csSAM (version 1.2.4)

csSAM-package: Cell-specific Differential Expression (csSAM)

Description

SAM for Cell-specific Differential Expression SAM.

Arguments

Details

Package:
csSAM
Type:
Package
Version:
1.2
Date:
2011-10-08
License:
LGPL
LazyLoad:
yes

Tissues are often made up of multiple cell-types. Each with its own functional attributes and molecular signature. Yet, the proportions of any given cell-type in a sample can vary markedly. This results in a significant loss of sensitivity in gene expression studies and great difficulty in identifying the cellular source of any perturbations. Here we present a statistical methodology (cell-type specific Significance Analysis of Microarrays or csSAM) which, given microarray data from two groups of biological samples and the relative cell-type frequencies of each sample, estimates in a virtual manner the gene expression data for each cell-type at a group level, and uses these to identify differentially expressed genes at a cell-type specific level between groups.

The lower limit for the number of samples needed for deconvolving the cell-specific expression of N cell-types is N+1. For a singe color array - the result could be interperted as the avg. expression level of a given gene in a cell-type of that group. Multiplied by the frequecy of a given cell-type in an individual in the group, it is the amount contributed by that cell type to the overall measured expression on the array.

Key functions for this package:
csSamWrapper - Single wrapper function performs all functionality. csfit: For deconvolving the average cell-type specific expression for each cell-type in a given group.
csSAM: For calculating the constrast between every pair of cells being compared between the two groups.
fdrCsSAM: Estimate the false discovery rate for each cell-type specific comparison.
findSigGenes:Identifies the list of differentially expressed genes in a given cell-type at a given FDR cutoff.
plotCsSAM:Plots a fdr plot of ther results.
Additional functions exists (runSAM and fdrSAM to contrast csSAM with the tissue heterogeneity ignorant SAM).

References

Shen-Orr SS, Tibshirani R, Khatri P, Bodian DL, Staedtler F, Perry NM, Hastie T, Sarwal MM, Davis MM and Butte AJ (2010). "Cell type-specific gene expression differences in complex tissues." _Nature methods_, *7*(4), pp. 287-9. ISSN 1548-7105, , .

Examples

Run this code
library("csSAM")
##
## Generate random dataset
##
set.seed(143)
k <- 5 # number of cell types
ng <- 500 # number of genes
p <- 20 # number of samples
ndiff <- 100 # number of genes differentially expressed

# true cell-specific signatures
H1 <- matrix(rnorm(5*ng), ncol=ng)
H2 <- H1
# create differential expression for 3rd cell type
H2[3,1:ndiff] <- H2[3,1:ndiff] + 5

# cell frequency matrix per sample
cc <- matrix(runif(p*k), ncol=k)
cc <- t(scale(t(cc), center=FALSE, scale=rowSums(cc)))
colnames(cc) <- paste('cellType', 1:ncol(cc), sep="")

# global expression matrix
G <- rbind(cc[1:10, ] %*% H1, cc[11:p, ] %*%H2 ) + matrix(rnorm(p*ng), ncol=ng)
# sample classes (2 groups)
y <- gl(2, p/2)

fileName = "Example File.pdf";


# Now run, either using the wrapper
# NB: more permutations would be needed for real data
deconvResults = csSamWrapper(G, cc, y, nperms = 50, alternative = "two.sided"
								, standardize = TRUE
								, medianCenter = TRUE
								, fileName = fileName)

# Or by calling each function independently:
# this is useful if you want to perform only cell-specific expression
# without differential expression.
## Not run: 
# numset = nlevels(y)
# n <- summary(y, maxsum=Inf) # number of samples in each class
# numgene = ncol(G)
# numcell = ncol(cc)
# geneID = colnames(G)
# cellID = colnames(cc)
# 
# deconv <- list()
# # run analysis
# for (curset in levels(y))
# 	deconv[[curset]]= csfit(cc[y==curset,], G[y==curset,])
# 
# rhat <- array(dim = c(numcell,numgene))
# rhat[, ] <- csSAM(deconv[[1]]$ghat, deconv[[1]]$se,
#                   n[1], deconv[[2]]$ghat, deconv[[2]]$se, n[2],
#                   standardize=TRUE, medianCenter=TRUE, nonNeg=TRUE)
# 
# tt.sam <- runSAM(G, y)
# falseDiscovR <- fdrCsSAM(G,cc,y,n,numcell,numgene, rhat,
#                     nperms = 200,standardize=TRUE,alternative='two.sided',
#                     medianCenter=TRUE, nonNeg=TRUE)
# falseDiscovRSAM <- fdrSAM(G, y, nperms=200, alternative = 'two.sided',tt.sam)
# sigGene <- findSigGene(G, cc, y, rhat, falseDiscovR)
# 
# plotCsSAM(falseDiscovR, falseDiscovRSAM,alternative='two.sided',cellID,numcell, fileName)
# print (falseDiscovR$fdr.g[ , ] )
# ## End(Not run)

Run the code above in your browser using DataLab