Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: VISION
Title: Functional interpretation of single cell RNA-seq latent manifolds
Version: 2.0.0
Version: 2.1.0
Authors@R: c(person("Matt", "Jones", email = "mattjones315@gmail.com", role = c("aut", "cre")),
person("David", "Detomaso", email = "david.detomaso@berkeley.edu", role = c("aut", "cre")),
person("Tal", "Ashuach", email = "tal_ashuach@berkeley.edu", role = c("aut")),
Expand Down
14 changes: 14 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# VISION 2.1.0

Added parameter `sig_gene_threshold` with **changed default behavior**

* Before it was a guideline to filter lowly expressed genes before running VISION
* Now, by default, genes expressed in fewer than 0.1% of cells will be filtered automatically

Bug Fixes:

* Better colors in output when more than 10 categories
* Errors with certain output object accessors
* Selections not saving when loading results server
* Crashes when running on more than 1200 signatures

# VISION 2.0.0

Lots of changes for this version.
Expand Down
6 changes: 4 additions & 2 deletions R/AnalysisFunctions.R
Original file line number Diff line number Diff line change
Expand Up @@ -211,9 +211,11 @@ computeProjectionGenes <- function(object,
#' on creating Signature objects.
#' @param min_signature_genes Signature that match less than this number of genes in the
#' supplied expression matrix are removed.
#' @param sig_gene_threshold Proportion of cells that a gene must be detected in (nonzero)
#' to be used in signature score calculations.
#' @return the VISION object, with the @sigData slot updated
#' @export
addSignatures <- function(object, signatures, min_signature_genes=5) {
addSignatures <- function(object, signatures, min_signature_genes=5, sig_gene_threshold=.01) {

if (is.list(signatures)) {
sigs <- lapply(signatures, function(sig){
Expand All @@ -237,7 +239,7 @@ addSignatures <- function(object, signatures, min_signature_genes=5) {
Signature objects")
}

sigs <- processSignatures(sigs, rownames(object@exprData), min_signature_genes)
sigs <- processSignatures(sigs, object@exprData, min_signature_genes, sig_gene_threshold)

object@sigData <- c(object@sigData, sigs)

Expand Down
3 changes: 3 additions & 0 deletions R/NormalizationMethods.R
Original file line number Diff line number Diff line change
Expand Up @@ -110,17 +110,20 @@ getNormalizedCopySparse <- function(data, func) {
if (func == "znorm_rows" || func == "znorm_rows_then_columns") {
rowOffsets <- rowMeans(data) * -1
rowScaleFactors <- rowVarsSp(data) ** -0.5
rowScaleFactors[is.infinite(rowScaleFactors)] <- 1
}

if (func == "znorm_columns") {
colOffsets <- colMeans(data) * -1
colScaleFactors <- colVarsSp(data) ** -0.5
colScaleFactors[is.infinite(colScaleFactors)] <- 1
}

if (func == "znorm_rows_then_columns") {
result <- .colNormHelper(data, rowOffsets, rowScaleFactors)
colOffsets <- result$colOffsets
colScaleFactors <- result$colScaleFactors
colScaleFactors[is.infinite(colScaleFactors)] <- 1
}

nd <- NormData(data, rowOffsets = rowOffsets, colOffsets = colOffsets,
Expand Down
24 changes: 22 additions & 2 deletions R/methods-Signature.R
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,31 @@
#' Drops signatures with less than `minSignatureGenes` matching genes
#'
#' @param sigData list of signature objects
#' @param expressionGenes list of gene identifiers in the expression matrix
#' @param exprData gene expression matrix
#' @param minSignatureGenes minimum number of genes a signature must match
#' in the expression matrix in order to be retained
#' @param sig_gene_threshold Proportion of cells that a gene must be detected in (nonzero)
#' to be used in signature score calculations.
#' @importFrom Matrix rowSums
#' @return processedSigData list of signature objects
processSignatures <- function(sigData, expressionGenes, minSignatureGenes){
processSignatures <- function(sigData, exprData, minSignatureGenes, sig_gene_threshold){
expressionGenes <- rownames(exprData)


cell_threshold <- sig_gene_threshold * ncol(exprData)
gene_detects <- rowSums(exprData > 0)
valid_genes <- gene_detects >= cell_threshold

message(
sprintf(
"\nUsing %i/%i genes detected in %.2f%% of cells for signature analysis.",
sum(valid_genes), nrow(exprData), sig_gene_threshold*100)
)
message(
"See the `sig_gene_threshold` input to change this behavior.\n"
)

expressionGenes <- rownames(exprData)[valid_genes]
out <- lapply(sigData, function(sig){
validGenes <- names(sig@sigDict) %in% expressionGenes
sig@sigDict <- sig@sigDict[validGenes]
Expand Down
19 changes: 16 additions & 3 deletions R/methods-Vision.R
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
#' genes to use when computing projections.
#' @param min_signature_genes Signature that match less than this number of genes in the
#' supplied expression matrix are removed.
#' @param sig_gene_threshold Proportion of cells that a gene must be detected in (nonzero)
#' to be used in signature score calculations.
#' @param threshold Threshold to apply when using the 'threshold' or 'fano' projection genes filter.
#' If greater than 1, this specifies the number of cells in which a gene must be detected
#' for it to be used when computing PCA. If less than 1, this instead specifies the proportion of cells needed
Expand Down Expand Up @@ -75,7 +77,9 @@ setMethod("Vision", signature(data = "matrixORSparse"),
function(data, signatures=list(),
proteinData=NULL,
unnormalizedData = NULL, meta=NULL,
projection_genes=c("fano"), min_signature_genes=5,
projection_genes=c("fano"),
min_signature_genes=5,
sig_gene_threshold=.001,
threshold=.05, perm_wPCA=FALSE,
projection_methods = c("tSNE30"),
sig_norm_method = c("znorm_columns", "none", "znorm_rows",
Expand All @@ -101,7 +105,16 @@ setMethod("Vision", signature(data = "matrixORSparse"),
.Object@params$micropooling <- list()

rownames(data) <- toupper(rownames(data))
data <- data[ !duplicated(rownames(data)), , drop = FALSE]
toRemove <- rownames(data)[duplicated(rownames(data))]
if (length(toRemove) > 0){
message(sprintf(
"\nRemoving %i genes with duplicate IDs (ignoring case): %s\n",
length(toRemove) + length(unique(toRemove)),
paste(unique(toRemove), collapse = ", ")
)
)
data <- data[ !(rownames(data) %in% toRemove), , drop = FALSE]
}
.Object@exprData <- data

if (!is.null(unnormalizedData)){
Expand Down Expand Up @@ -198,7 +211,7 @@ setMethod("Vision", signature(data = "matrixORSparse"),
Signature objects")
}

.Object@sigData <- processSignatures(.Object@sigData, rownames(.Object@exprData), min_signature_genes)
.Object@sigData <- processSignatures(.Object@sigData, .Object@exprData, min_signature_genes, sig_gene_threshold)

if (!is.null(meta)) {
if(is.matrix(meta)){
Expand Down
2 changes: 1 addition & 1 deletion docs/LICENSE-text.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/articles/Signatures.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/articles/VISION-vignette.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/articles/index.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/articles/micropooling.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/articles/trajectories.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/articles/web_only/10xData.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/articles/web_only/Seurat.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/articles/web_only/SignatureAutocorrelation.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/authors.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/index.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 18 additions & 1 deletion docs/news/index.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/reference/Cluster.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/reference/NormData.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/reference/ServerExpression.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/reference/ServerSigProjMatrix.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/reference/Signature.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/reference/Trajectory.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/reference/TrajectoryProjection.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 7 additions & 2 deletions docs/reference/VISION-class.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/reference/VISION.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/reference/addLatentSpace.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading