Skip to content

Commit 12971c4

Browse files
committed
Added real bulk with no ground truth
1 parent c2daf8f commit 12971c4

36 files changed

+63
-96
lines changed

.gitignore

-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ Output
66
Scratch
77
.snakemake
88
*pbulks*
9-
*props*
109
notes
1110
log.txt
1211
C_1*

Modules/ADAPTS/proportionsInAdmixture_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ res[is.na(res)] <- 0
3838
res = apply(res,2,function(x) ifelse(x < 0, 0, x)) #explicit non-negativity constraint
3939
res = apply(res,2,function(x) x/sum(x)) #explicit STO constraint
4040
res <- res[-nrow(res),]
41-
res <- res[order(match(rownames(res), rownames(P))),]
41+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
4242

4343
#Save and exit
4444
saveRDS(res, file=filename_O)

Modules/BisqueRNA/Bisque_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ C0$SubjectName <- C0$sampleID #BisqueRNA uses hard-coded colname
3838

3939
#Get results and reorder the matrices for correspondence
4040
res <- BisqueRNA::ReferenceBasedDecomposition(T, C0, markers=NULL, use.overlap=FALSE)$bulk.props
41-
res <- res[order(match(rownames(res), rownames(P))),]
41+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
4242

4343
#Save and exit
4444
saveRDS(res, file=filename_O)

Modules/CDSeq/CDSeq_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ T <- T[common,]
3131
#Get results and reorder the matrices for correspondence
3232
res <- CDSeq(bulk_data = T, reference_gep = C1, cell_type_number = ncol(C1), mcmc_iterations = 1000, cpu_number = cores, block_number = 6, gene_subset_size=15)
3333
res <- res$estProp
34-
res <- res[order(match(rownames(res), rownames(P))),]
34+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3535

3636
#Save and exit
3737
saveRDS(res, file=filename_O)

Modules/CIBERSORT/CIBERSORT_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ T <- data.frame(T)
3333
#Run deconv, params may be exported to config later
3434
res <- CIBERSORT(sig_matrix = C1, mixture_file = T, QN = FALSE, absolute = FALSE, perm = 0)
3535
res <- t(res[,1:(ncol(res)-3)])
36-
res <- res[order(match(rownames(res), rownames(P))),]
36+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3737

3838
#Save and exit
3939
saveRDS(res, file=filename_O)

Modules/CPM/CPM_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ cellTypes <- as.character(phenData$cellType)
4040
res <- t(CPM(C0, cellTypes, T, p, quantifyTypes = TRUE, no_cores = cores)$cellTypePredictions)
4141
res <- apply(res,2,function(x) ifelse(x < 0, 0, x)) #explicit non-negativity constraint
4242
res <- apply(res,2,function(x) x/sum(x)) #explicit STO constraint
43-
res <- res[order(match(rownames(res), rownames(P))),]
43+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
4444

4545
#Save and exit
4646
saveRDS(res, file=filename_O)

Modules/CellMix/DSA_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ [email protected] <- tapply(as.character(C2$geneName),as.character(C2$cellType),list)
3434
res <- CellMix::ged(as.matrix(T), ML, method = "DSA", log = FALSE)@fit@H
3535
res <- apply(res,2,function(x) ifelse(x < 0, 0, x)) #explicit non-negativity constraint
3636
res <- apply(res,2,function(x) x/sum(x)) #explicit STO constraint
37-
res <- res[order(match(rownames(res), rownames(P))),]
37+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3838

3939
#Save and exit
4040
saveRDS(res, file=filename_O)

Modules/CellMix/deconf_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ [email protected] <- tapply(as.character(C2$geneName),as.character(C2$cellType),list)
3030
#Get res and reorder the matrices for correspondence
3131
res <- CellMix::ged(T, x=length(unique(as.character(C2$cellType))), method = "deconf", maxIter = 500, verbose= TRUE)
3232
res <- CellMix::match.nmf(res, ML)@fit@H
33-
res <- res[order(match(rownames(res), rownames(P))),]
33+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3434

3535
#Save and exit
3636
saveRDS(res, file=filename_O)

Modules/CellMix/ssFrobenius_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ [email protected] <- tapply(as.character(C2$geneName),as.character(C2$cellType),list)
2929

3030
#Get res and reorder the matrices for correspondence
3131
res <- CellMix::ged(as.matrix(T), ML, method = "ssFrobenius", sscale = TRUE, maxIter = 500, log = FALSE)@fit@H
32-
res <- res[order(match(rownames(res), rownames(P))),]
32+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3333

3434
#Save and exit
3535
saveRDS(res, file=filename_O)

Modules/CellMix/ssKL_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ [email protected] <- tapply(as.character(C2$geneName),as.character(C2$cellType),list)
3131
#Get res and reorder the matrices for correspondence
3232
res <- CellMix::ged(as.matrix(T), x=length(unique(as.character(C2$cellType))), method = "ssKL",markers= "semi", sscale = FALSE, maxIter=500, log = FALSE, verbose= TRUE)
3333
res <- CellMix::match.nmf(res, ML)@fit@H
34-
res <- res[order(match(rownames(res), rownames(P))),]
34+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3535

3636
#Save and exit
3737
saveRDS(res, file=filename_O)

Modules/DCQ/DCQ_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ T <- T[common,]
3232
res <- t(dcq(reference_data = C1, mix_data = T, marker_set = as.data.frame(row.names(C1)) , alpha_used = 0.05, lambda_min = 0.2, number_of_repeats = 10)$average)
3333
res <- apply(res,2,function(x) ifelse(x < 0, 0, x)) #explicit non-negativity constraint
3434
res <- apply(res,2,function(x) x/sum(x)) #explicit STO constraint
35-
res <- res[order(match(rownames(res), rownames(P))),]
35+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3636

3737
#Save and exit
3838
saveRDS(res, file=filename_O)

Modules/DWLS/DWLS_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ res <- future_apply(T,2, function(x){
4747
}, future.seed = TRUE)
4848

4949
rownames(res) <- as.character(unique(phenData$cellType))
50-
res <- res[order(match(rownames(res), rownames(P))),]
50+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
5151

5252
#Save and exit
5353
saveRDS(res, file=filename_O)

Modules/DeconRNASeq/DeconRNASeq_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ C1 <- data.frame(C1)
2929
#Run DeconRNASeq and reorder rows for correspondence
3030
res <- DeconRNASeq(datasets = T, signatures = C1, proportions = NULL, checksig = FALSE, known.prop = FALSE, use.scale = TRUE, fig = FALSE)
3131
res <- t(res$out.all)
32-
res <- res[order(match(rownames(res), rownames(P))),]
32+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3333

3434
#Save and exit
3535
saveRDS(res, file=filename_O)

Modules/EPIC/EPIC_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ C_EPIC[["refProfiles.var"]] <- refVar[markers, cellTypes]
4949
res <- t(EPIC(bulk=as.matrix(T), reference=C_EPIC, withOtherCells=TRUE, scaleExprs=FALSE)$cellFractions) #scaleExprs=TRUE by default: only keep genes in common between matrices
5050
res <- res[!rownames(res) %in% "otherCells",]
5151
res[is.na(res)] <- 0
52-
res <- res[order(match(rownames(res), rownames(P))),]
52+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
5353

5454
#Save and exit
5555
saveRDS(res, file=filename_O)

Modules/EpiDISH/EpiDISH_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ C1 <- as.matrix(C1) #Explicit typecasting needed
3030
res <- t(EpiDISH::epidish(beta.m = T, ref.m = C1, method = "RPC")$estF)
3131
res <- apply(res,2,function(x) ifelse(x < 0, 0, x)) #explicit non-negativity constraint
3232
res <- apply(res,2,function(x) x/sum(x)) #explicit STO constraint
33-
res <- res[order(match(rownames(res), rownames(P))),]
33+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3434

3535
#Save and exit
3636
saveRDS(res, file=filename_O)

Modules/FARDEEP/FARDEEP_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ message('Started running')
3131
res <- fardeep(C1, T, nn = TRUE, intercept = TRUE, permn = 10, QN = FALSE)
3232
res <- t(res$abs.beta)
3333
res <- apply(res,2,function(x) x/sum(x)) #explicit STO constraint
34-
res <- res[order(match(rownames(res), rownames(P))),]
34+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3535

3636
#Save and exit
3737
saveRDS(res, file=filename_O)

Modules/MuSiC/MuSiC_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ C0 <- ExpressionSet(C0, phenoData = as(phenData, "AnnotatedDataFrame"))
5252

5353
#Get results and reorder the matrices for correspondence
5454
res <- t(music_prop(bulk.eset = T, sc.eset = C0, clusters = "cellType", samples = "sampleID", select.ct = levels(C0@phenoData$cellType), markers = NULL, normalize = FALSE, verbose = FALSE)$Est.prop.weighted)
55-
res <- res[order(match(rownames(res), rownames(P))),]
55+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
5656

5757
#Save and exit
5858
saveRDS(res, file=filename_O)

Modules/NNLS/NNLS_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ T <- T[common,]
2626
res <- do.call(cbind.data.frame,lapply(apply(T,2,function(x) nnls::nnls(as.matrix(C1),x)), function(y) y$x))
2727
rownames(res) <- colnames(C1)
2828
res <- apply(res,2,function(x) x/sum(x)) #explicit STO constraint
29-
res <- res[order(match(rownames(res), rownames(P))),]
29+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3030

3131
#Save and exit
3232
saveRDS(res, file=filename_O)

Modules/OLS/OLS_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ rownames(res) <- unlist(lapply(strsplit(rownames(res),")"),function(x) x[2])) #C
2727
res[is.na(res)] <- 0 #Convert NA's to zeros prior to applying constraints
2828
res = apply(res,2,function(x) ifelse(x < 0, 0, x)) #Explicit non-negativity constraint
2929
res = apply(res,2,function(x) x/sum(x)) #Explicit STO constraint
30-
res <- res[order(match(rownames(res), rownames(P))),]
30+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3131

3232
#Save and exit
3333
saveRDS(res, file=filename_O)

Modules/Psuedobulk/dummy_props.rds

1008 Bytes
Binary file not shown.

Modules/RLR/RLR_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ res <- do.call(cbind.data.frame,lapply(apply(T,2,function(x) MASS::rlm(x ~ as.ma
2828
rownames(res) <- unlist(lapply(strsplit(rownames(res),")"),function(x) x[2]))
2929
res <- apply(res,2,function(x) ifelse(x < 0, 0, x)) #explicit non-negativity constraint
3030
res <- apply(res,2,function(x) x/sum(x)) #explicit STO constraint
31-
res <- res[order(match(rownames(res), rownames(P))),]
31+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3232

3333

3434
#Save and exit

Modules/Res_explore/Heatmap_agr.R

+3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ filenames <- list.files("Output") %>% lapply(., function(x) { x <- paste0("Outpu
2323
files <- lapply(filenames, readRDS)
2424
names(files) <- lapply(filenames, function(x) gsub("Output/.*res_(.*).rds", "\\1", x))
2525

26+
#Reorder files in case this was without proportions
27+
files <- lapply(files, function(x) x[order(match(rownames(x), rownames(files[[1]]))),])
28+
2629
#Generate combs to iterate over
2730
combs <- combn(files, 2)
2831
colnames(combs) <- combn(names(files), 2, paste0, collapse="@")

Modules/SCDC/SCDC_run.R

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ if (!require("L1pack", quietly = TRUE)){
1212

1313
suppressMessages(library(remotes))
1414
suppressMessages(library(devtools))
15-
remotes::install_github("renozao/xbioc", auth_token = "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")
1615
options(timeout=400) # to avoid problems when connection slow
16+
remotes::install_github("renozao/xbioc", auth_token = "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")
1717
devtools::install_github("meichendong/SCDC", auth_token = "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")
1818
suppressMessages(library(SCDC))
1919
suppressMessages(library(Biobase))
@@ -47,7 +47,7 @@ C0 <- ExpressionSet(C0, phenoData = as(phenData, "AnnotatedDataFrame"))
4747

4848
#Get results and reorder the matrices for correspondence
4949
res <- t(SCDC::SCDC_prop(bulk.eset = T, sc.eset = C0, ct.varname = "cellType", sample = "sampleID", ct.sub = levels(phenData$cellType), iter.max = 200)$prop.est.mvw)
50-
res <- res[order(match(rownames(res), rownames(P))),]
50+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
5151

5252
#Save and exit
5353
saveRDS(res, file=filename_O)

Modules/TIMER/TIMER_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ names(ref_anno) <- phenData$cellType
3838

3939
#Get results and reorder the matrices for correspondence
4040
res <-t(TIMER_deconv(mix = T, ref = C0, curated.cell.types = ref_anno, sig = rownames(T)))
41-
res <- res[order(match(rownames(res), rownames(P))),]
41+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
4242

4343
#Save and exit
4444
saveRDS(res, file=filename_O)

Modules/bseqsc/bseqsc_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ B <- bseqsc_basis(C0, markers, clusters = 'cellType', samples = 'sampleID', ct.s
5757
message("Running CIBERSORT with B...")
5858
res <- CIBERSORT(B, T, QN = FALSE, absolute = FALSE, perm = 0)
5959
res <- t(res[,1:(ncol(res)-3)])
60-
res <- res[order(match(rownames(res), rownames(P))),]
60+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
6161

6262
#Save and exit
6363
saveRDS(res, file=filename_O)

Modules/debCAM/Snakefile

+4-52
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
##
66
## Description:
77
## This file includes all rules associated with deconvolution using debCAM
8-
## package. The 3 different modes are
8+
## package
9+
##
10+
## Semi-supervised with C2 reference
11+
##
912
##
10-
## 1- Unsupervised with k coefficient
11-
## 2- Semi-supervised with C1 reference
12-
## 3- Semi-supervised with C2 reference
1313
##
1414
##
1515
##
@@ -18,33 +18,6 @@
1818
##
1919
##
2020
##
21-
22-
rule debCAM_unsupervised:
23-
input:
24-
getBulks('{sample}')
25-
26-
output:
27-
"Output/{sample}_res_debCAM_unsupervised.rds"
28-
29-
params:
30-
cellTypes_n = config['unsupervisedParams']['expectedTypes']
31-
32-
conda:
33-
"env.yaml"
34-
35-
threads: config["cores"]["debCAM_unsupervised"]
36-
37-
priority: -50
38-
39-
benchmark:
40-
"Benchmarks/{sample}_debCAM_unsupervised_benchmark.txt"
41-
42-
resources:
43-
mem_mb=getMB(config['mem_gb']['minorOps'])
44-
45-
shell:
46-
"Rscript Modules/debCAM/debCAM_u.R {input} {params} {output} {threads}"
47-
4821

4922
rule debCAM_marker:
5023
input:
@@ -67,24 +40,3 @@ rule debCAM_marker:
6740

6841
shell:
6942
"Rscript Modules/debCAM/debCAM_marker.R {input} {params} {output}"
70-
71-
72-
73-
rule debCAM_C1:
74-
input:
75-
getC1(getBulks('{sample}'), '{sample}')
76-
77-
output:
78-
"Output/{sample}_res_debCAM_C1.rds"
79-
80-
conda:
81-
"env.yaml"
82-
83-
benchmark:
84-
"Benchmarks/{sample}_debCAM_C1_benchmark.txt"
85-
86-
resources:
87-
mem_mb=getMB(config['mem_gb']['minorOps'])
88-
89-
shell:
90-
"Rscript Modules/debCAM/debCAM_C1.R {input} {output}"

Modules/debCAM/debCAM_marker.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ P <- readRDS(filename_P)
2525

2626
#Switch format to debCAM MGlist
2727
MGlist <- C2 %>% split(., .[, 'cellType']) %>% lapply(., function(x) x[order(-abs(x$log2FC)),]) %>% lapply(., function(x) rownames(x))
28-
MGlist <- MGlist[order(match(names(MGlist), rownames(P)))] #Makes sure list order is same as rownames(P) for future metrics
28+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') MGlist <- MGlist[order(match(names(MGlist), rownames(P)))] #Makes sure list order is same as rownames(P) for future metrics
2929

3030
#Run deconv with marker list generated by Seurat
3131
res <- redoASest(T, MGlist, maxIter = 50) #Adjust maxIter later

Modules/dtangle/dtangle_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ MD <- lapply(MD,function(x) sapply(x, function(y) which(y==rownames(C1))))
4141

4242
#Get results and reorder the matrices for correspondence
4343
res <- t(dtangle::dtangle(Y=mixtures, reference=refs, markers = MD)$estimates)
44-
res <- res[order(match(rownames(res), rownames(P))),]
44+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
4545

4646
#Save and exit
4747
saveRDS(res, file=filename_O)

Modules/elasticNET/elasticNET_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ T <- T[common,]
2828
res <- apply(T, 2, function(z) coef(glmnet::glmnet(x = as.matrix(C1), y = z, alpha = 0.2, standardize = TRUE, lambda = glmnet::cv.glmnet(as.matrix(C1), z)$lambda.1se))[1:ncol(C1)+1,])
2929
res <- apply(res,2,function(x) ifelse(x < 0, 0, x)) #explicit non-negativity constraint
3030
res <- apply(res,2,function(x) x/sum(x)) #explicit STO constraint
31-
res <- res[order(match(rownames(res), rownames(P))),]
31+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3232

3333
#Save and exit
3434
saveRDS(res, file=filename_O)

Modules/lasso/lasso_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ res <- apply(T, 2, function(z) coef(glmnet::glmnet(x = as.matrix(C1), y = z, alp
3030
res <- apply(res,2,function(x) ifelse(x < 0, 0, x)) #explicit non-negativity constraint
3131
res <- apply(res,2,function(x) x/sum(x)) #explicit STO constraint
3232
res[is.na(res)] <- 0 #Needed for models where glmnet drops all terms of a model and fit an intercept-only model (very unlikely but possible).
33-
res <- res[order(match(rownames(res), rownames(P))),]
33+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3434

3535
#Save and exit
3636
saveRDS(res, file=filename_O)

Modules/omnideconv/Autogenes_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ cellTypes <- phenData$cellType
3131
model <- omnideconv::build_model(C0, cellTypes, bulk_gene_expression = T, method = "autogenes")
3232
res <- omnideconv::deconvolute(T, signature = model, single_cell_object = C0, method = "autogenes")
3333
res <- t(res/rowSums(res))
34-
res <- res[order(match(rownames(res), rownames(P))),]
34+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3535

3636
#Save and exit
3737
saveRDS(res, file=filename_O)

Modules/omnideconv/MOMF_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ rm(common)
3030
cellTypes <- phenData$cellType
3131
model <- omnideconv::build_model(C0, cellTypes, bulk_gene_expression = T, method = "momf")
3232
res <- t(omnideconv::deconvolute(T, signature = model, single_cell_object = C0, method = "momf"))
33-
res <- res[order(match(rownames(res), rownames(P))),]
33+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3434

3535
#Save and exit
3636
saveRDS(res, file=filename_O)

Modules/ridge/ridge_run.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ T <- T[common,]
2929
res <- apply(T, 2, function(z) coef(glmnet::glmnet(x = as.matrix(C1), y = z, alpha = 0, standardize = TRUE, lambda = glmnet::cv.glmnet(as.matrix(C1), z)$lambda.1se))[1:ncol(C1)+1,])
3030
res <- apply(res,2,function(x) ifelse(x < 0, 0, x)) #explicit non-negativity constraint
3131
res <- apply(res,2,function(x) x/sum(x)) #explicit STO constraint
32-
res <- res[order(match(rownames(res), rownames(P))),]
32+
if (filename_P != 'Modules/Psuedobulk/dummy_props.rds') res <- res[order(match(rownames(res), rownames(P))),]
3333

3434
#Save and exit
3535
saveRDS(res, file=filename_O)

README.md

+5-3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ cat: bug
2626
</pre>
2727

2828
# Running the pipeline
29+
**IMPORTANT**: If running for the first time, use one sample only as the environments are
30+
installed throughout the workflow
2931
## Self-reference
3032
### Description
3133
Uses **one** single-cell reference to generate the pseudobulks and references for deconvolution benchmarking. Important assumptions:
@@ -57,9 +59,9 @@ Uses **one** single-cell reference to generate the pseudobulks and references fo
5759
mamba create -n snakemake snakemake
5860

5961
4. Build the pipeline.
60-
62+
6163
make
62-
64+
6365
5. Place the input file in the `Input` directory.
6466
6. Adjust settings in `config.yaml`.
6567
7. **(Optional)** Run `getDag.sh` to generate the updated DAG after adjusting config.
@@ -114,7 +116,7 @@ Same as self-reference, except after the **3rd** step, note the following direct
114116

115117
Input/Psuedobulks
116118

117-
This is where the bulks should go. Also, **enable realBulk in config.** If you wish to use all the data for the reference, go to:
119+
This is where the bulks should go. Also, **enable realBulk in config.** If you wish to use all the data for the reference, go to:
118120

119121
Input/Cell_splits
120122

0 commit comments

Comments
 (0)