Skip to content

Commit b3acece

Browse files
authored
Merge pull request #144 from MacoskoLab/new_functions
Adding several new functionalities
2 parents ae5f142 + e3ec1ef commit b3acece

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+2440
-336
lines changed

DESCRIPTION

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Package: liger
22
Type: Package
33
Title: Linked Inference of Genomic Experimental Relationships
4-
Version: 0.4.2
4+
Version: 0.5.0.9000
55
Date: 2018-04-09
66
Author: Joshua Welch
77
Maintainer: Joshua Welch <jwelch@broadinstitute.org>,
@@ -15,7 +15,6 @@ Imports: Rcpp (>= 0.12.10),
1515
cowplot,
1616
FNN,
1717
dplyr,
18-
RANN.L1,
1918
grid,
2019
ggrepel,
2120
irlba,
@@ -29,21 +28,32 @@ Imports: Rcpp (>= 0.12.10),
2928
doSNOW,
3029
mclust,
3130
patchwork,
32-
stats
33-
Remotes: thomasp85/patchwork
34-
LinkingTo: Rcpp, RcppArmadillo
31+
stats,
32+
psych,
33+
RcppEigen,
34+
RANN
35+
Remotes: thomasp85/patchwork,
36+
jefferis/RANN@master-L1,
37+
linxihui/NNLM
38+
biocViews:
39+
LazyData: true
40+
LinkingTo: Rcpp, RcppArmadillo, RcppEigen
3541
Depends:
3642
cowplot,
3743
Matrix,
3844
methods,
3945
patchwork
40-
RoxygenNote: 6.1.1
46+
RoxygenNote: 7.0.2
4147
Encoding: UTF-8
4248
Suggests:
4349
Seurat,
4450
knitr,
4551
reticulate,
4652
rmarkdown,
4753
NNLM,
48-
testthat
54+
testthat,
55+
GenomicRanges,
56+
S4Vectors,
57+
IRanges,
58+
RANN.L1
4959
VignetteBuilder: knitr

NAMESPACE

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ export(getGeneValues)
2323
export(getProportionMito)
2424
export(imputeKNN)
2525
export(ligerToSeurat)
26+
export(linkGenesAndPeaks)
27+
export(louvainCluster)
28+
export(makeInteractTrack)
2629
export(makeRiverplot)
2730
export(normalize)
2831
export(optimizeALS)
@@ -47,6 +50,7 @@ export(removeMissingObs)
4750
export(reorganizeLiger)
4851
export(runTSNE)
4952
export(runUMAP)
53+
export(runWilcoxon)
5054
export(scaleNotCenter)
5155
export(scaleNotCenter_sparse)
5256
export(selectGenes)
@@ -64,7 +68,6 @@ importFrom(Matrix,rowMeans)
6468
importFrom(Matrix,rowSums)
6569
importFrom(Matrix,sparseMatrix)
6670
importFrom(Matrix,t)
67-
importFrom(RANN.L1,nn2)
6871
importFrom(Rcpp,evalCpp)
6972
importFrom(Rtsne,Rtsne)
7073
importFrom(cowplot,plot_grid)

R/RcppExports.R

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,66 @@ rowVarsFast <- function(x, means) {
1313
.Call('_liger_rowVarsFast', PACKAGE = 'liger', x, means)
1414
}
1515

16+
cpp_sumGroups_dgc <- function(x, p, i, ncol, groups, ngroups) {
17+
.Call('_liger_cpp_sumGroups_dgc', PACKAGE = 'liger', x, p, i, ncol, groups, ngroups)
18+
}
19+
20+
cpp_sumGroups_dgc_T <- function(x, p, i, ncol, nrow, groups, ngroups) {
21+
.Call('_liger_cpp_sumGroups_dgc_T', PACKAGE = 'liger', x, p, i, ncol, nrow, groups, ngroups)
22+
}
23+
24+
cpp_sumGroups_dense <- function(X, groups, ngroups) {
25+
.Call('_liger_cpp_sumGroups_dense', PACKAGE = 'liger', X, groups, ngroups)
26+
}
27+
28+
cpp_sumGroups_dense_T <- function(X, groups, ngroups) {
29+
.Call('_liger_cpp_sumGroups_dense_T', PACKAGE = 'liger', X, groups, ngroups)
30+
}
31+
32+
cpp_nnzeroGroups_dense <- function(X, groups, ngroups) {
33+
.Call('_liger_cpp_nnzeroGroups_dense', PACKAGE = 'liger', X, groups, ngroups)
34+
}
35+
36+
cpp_nnzeroGroups_dense_T <- function(X, groups, ngroups) {
37+
.Call('_liger_cpp_nnzeroGroups_dense_T', PACKAGE = 'liger', X, groups, ngroups)
38+
}
39+
40+
cpp_nnzeroGroups_dgc <- function(p, i, ncol, groups, ngroups) {
41+
.Call('_liger_cpp_nnzeroGroups_dgc', PACKAGE = 'liger', p, i, ncol, groups, ngroups)
42+
}
43+
44+
cpp_in_place_rank_mean <- function(v_temp, idx_begin, idx_end) {
45+
.Call('_liger_cpp_in_place_rank_mean', PACKAGE = 'liger', v_temp, idx_begin, idx_end)
46+
}
47+
48+
cpp_rank_matrix_dgc <- function(x, p, nrow, ncol) {
49+
.Call('_liger_cpp_rank_matrix_dgc', PACKAGE = 'liger', x, p, nrow, ncol)
50+
}
51+
52+
cpp_rank_matrix_dense <- function(X) {
53+
.Call('_liger_cpp_rank_matrix_dense', PACKAGE = 'liger', X)
54+
}
55+
56+
cpp_nnzeroGroups_dgc_T <- function(p, i, ncol, nrow, groups, ngroups) {
57+
.Call('_liger_cpp_nnzeroGroups_dgc_T', PACKAGE = 'liger', p, i, ncol, nrow, groups, ngroups)
58+
}
59+
1660
makeFeatureMatrix <- function(bedmat, barcodes) {
1761
.Call('_liger_makeFeatureMatrix', PACKAGE = 'liger', bedmat, barcodes)
1862
}
1963

64+
cluster_vote <- function(nn_ranked, clusts) {
65+
.Call('_liger_cluster_vote', PACKAGE = 'liger', nn_ranked, clusts)
66+
}
67+
68+
scale_columns_fast <- function(mat, scale = TRUE, center = TRUE) {
69+
.Call('_liger_scale_columns_fast', PACKAGE = 'liger', mat, scale, center)
70+
}
71+
72+
max_factor <- function(H, dims_use, center_cols = FALSE) {
73+
.Call('_liger_max_factor', PACKAGE = 'liger', H, dims_use, center_cols)
74+
}
75+
2076
solveNNLS <- function(C, B) {
2177
.Call('_liger_solveNNLS', PACKAGE = 'liger', C, B)
2278
}

R/deprecated.R

Lines changed: 0 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -4,97 +4,6 @@ NULL
44
# These are deprecated functions likely to be removed in future versions.
55
# Documentation for these functions is incomplete.
66

7-
#' Quantile normalizes cell factors
8-
#'
9-
#' @param object analogizer object. Should run optimizeALS before calling.
10-
#' @param quantiles Number of quantiles to use for quantile normalization
11-
#' @param ref_dataset Name of dataset to use as a "reference" for normalization. By default,
12-
#' the dataset with the largest number of cells is used.
13-
#'
14-
#' @return analogizer object
15-
#' @importFrom FNN get.knn
16-
#' @export
17-
#' @examples
18-
#' \dontrun{
19-
#' Y = matrix(c(1,2,3,4,5,6,7,8,9,10,11,12),nrow=4,byrow=T)
20-
#' Z = matrix(c(1,2,3,4,5,6,7,6,5,4,3,2),nrow=4,byrow=T)
21-
#' analogy = Analogizer(list(Y,Z))
22-
#' analogy@var.genes = c(1,2,3,4)
23-
#' analogy = scaleNotCenter(analogy)
24-
#' }
25-
quantile_norm = function(object,quantiles=50,ref_dataset=NULL,min_cells=2)
26-
{
27-
if (is.null(ref_dataset))
28-
{
29-
ns = sapply(object@scale.data,nrow)
30-
ref_dataset = names(object@scale.data)[which.max(ns)]
31-
}
32-
33-
Hs_scaled = object@H
34-
for (i in 1:ncol(Hs_scaled[[1]]))
35-
{
36-
for (j in 1:length(Hs_scaled)){
37-
#Hs_scaled[[j]][,i] = object@H[[j]][,i]/sqrt(sum(object@H[[j]][,i]^2))
38-
Hs_scaled[[j]] = scale(Hs_scaled[[j]],scale=T,center=T)
39-
}
40-
}
41-
labels = list()
42-
for(i in 1:length(Hs_scaled)){
43-
#knn_k=15
44-
#knn = get.knn(object@H[[i]],knn_k)
45-
pct1 = apply(object@H[[i]],2,sum)/sum(apply(object@H[[i]],2,sum))
46-
pct2 = apply(object@H[[ref_dataset]],2,sum)/sum(apply(object@H[[ref_dataset]],2,sum))
47-
if (names(object@H)[i]==ref_dataset)
48-
{
49-
pct1 = apply(object@H[[i]],2,sum)/sum(apply(object@H[[i]],2,sum))
50-
pct2 = apply(object@H[[2]],2,sum)/sum(apply(object@H[[2]],2,sum))
51-
}
52-
use_these_factors = 1:ncol(object@H[[i]])#which(log(pct1/pct2) > -2)
53-
54-
labels[[i]] = as.factor(use_these_factors[apply(Hs_scaled[[i]][,use_these_factors],1,which.max)])
55-
#labels[[i]] = as.factor(t(apply(knn$nn.index,1,function(x){which.max(table(labels[[i]][x]))}))[1,])
56-
}
57-
58-
object@clusters = as.factor(unlist(lapply(labels,as.character)))
59-
names(object@clusters)=unlist(lapply(object@scale.data,rownames))
60-
61-
clusters = labels
62-
names(clusters)=names(object@H)
63-
dims = ncol(object@H[[ref_dataset]])
64-
65-
Hs = object@H
66-
num_clusters = dims
67-
for (k in 1:length(Hs))
68-
{
69-
for (i in 1:dims)
70-
{
71-
for (j in 1:num_clusters)
72-
{
73-
if (sum(clusters[[ref_dataset]]==j) < min_cells | sum(clusters[[k]]==j) < min_cells){next}
74-
if (sum(clusters[[k]]==j)==1){
75-
Hs[[k]][clusters[[k]]==j,i] = mean(Hs[[ref_dataset]][clusters[[ref_dataset]]==j,i])
76-
next
77-
}
78-
q2 = quantile(Hs[[k]][clusters[[k]]==j,i],seq(0,1,by=1/quantiles))
79-
q1 = quantile(Hs[[ref_dataset]][clusters[[ref_dataset]]==j,i],seq(0,1,by=1/quantiles))
80-
if (sum(q1)==0 | sum(q2)==0 | length(unique(q1)) < 2 | length(unique(q2)) < 2)
81-
{
82-
new_vals = rep(0,sum(clusters[[k]]==j))
83-
}
84-
else
85-
{
86-
warp_func = approxfun(q2,q1)
87-
new_vals = warp_func(Hs[[k]][clusters[[k]]==j,i])
88-
}
89-
90-
Hs[[k]][clusters[[k]]==j,i] = new_vals
91-
}
92-
}
93-
}
94-
object@H.norm = Reduce(rbind,Hs)
95-
return(object)
96-
}
97-
987
#' Calculate alignment metric per factor.
998
#'
1009
#' @param object Analogizer object. Should run quantile_align_SNF before calling.

0 commit comments

Comments
 (0)