Skip to content

Commit 06fe076

Browse files
author
bonagurol
committed
Add function to read FlowJo workspaces and fixed filter fcd function
1 parent bd0cd3a commit 06fe076

9 files changed

Lines changed: 147 additions & 552 deletions

File tree

CHANGELOG

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,7 @@ v.012 -> Several bug fixes
2525
-> Add multicore support to tSNE
2626
-> Added workflow for UMAP projection and label transfer
2727

28-
v.012 -> FlowSOM function can retain the model to plot the SOM tree afterwards
29-
-> **Added Function to read flowjo workspaces**
28+
v.013 -> FlowSOM function can retain the model to plot the SOM tree afterwards
29+
-> Added Function to read flowjo workspaces to a condor campatible format
30+
-> Fixed filter function when the 'extra' slot is occupied
31+
-> *Add ML classifier with CytoML

DESCRIPTION

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@ Imports:
3737
Rphenoannoy,
3838
ggrepel,
3939
caret,
40-
randomForest
40+
randomForest,
41+
flowWorkspace,
42+
Biobase,
43+
CytoML
4144
RoxygenNote: 7.1.1
4245
VignetteBuilder: knitr
4346
Suggests:

NAMESPACE

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export(plot_marker)
2222
export(predict_labels)
2323
export(prepFcsFolderData)
2424
export(prep_fcd)
25+
export(prep_fjw)
2526
export(runDM)
2627
export(runFlowSOM)
2728
export(runPCA)
@@ -34,6 +35,8 @@ export(scaleColors)
3435
export(subset_fcd)
3536
export(train_transfer_model)
3637
export(violinplot_marker)
38+
import(Biobase)
39+
import(CytoML)
3740
import(RColorBrewer)
3841
import(Rmisc)
3942
import(Rphenograph)
@@ -42,6 +45,7 @@ import(SingleCellExperiment)
4245
import(destiny)
4346
import(devtools)
4447
import(flowCore)
48+
import(flowWorkspace)
4549
import(ggplot2)
4650
import(ggpubr)
4751
import(ggrastr)

R/functions.R

Lines changed: 66 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ filter_fcd <- function(fcdataset, cell_ids) {
352352

353353
new_fcd <- list()
354354

355-
for (level_1 in names(fcdataset)) {
355+
for (level_1 in names(fcdataset)[names(fcdataset) != "extras"]) {
356356

357357
int_cont <- fcdataset[[level_1]]
358358

@@ -367,6 +367,12 @@ filter_fcd <- function(fcdataset, cell_ids) {
367367

368368
}
369369

370+
if (length(names(fcdataset)[names(fcdataset) == "extras"]) == 1) {
371+
372+
new_fcd[["extras"]] <- fcdataset[["extras"]]
373+
374+
}
375+
370376
return(new_fcd)
371377

372378
}
@@ -1738,12 +1744,23 @@ predict_labels <- function(fcd,
17381744
#' @param pop XX
17391745
#' @param gate_list XX
17401746
#' @param inverse.transform XX
1747+
#' @import flowWorkspace
1748+
#' @import Biobase
1749+
#' @import CytoML
17411750
#' @return read_flowjo_workspace
17421751
#'
17431752
#' @export
1744-
prep_data_fjw <- function(data_gs, pop = "root", gate_list = nodelist, inverse.transform = FALSE) {
1753+
prep_fjw <- function(data_gs,
1754+
pop = "root",
1755+
gate_list = nodelist,
1756+
inverse.transform = FALSE,
1757+
transformation = 'a',
1758+
remove_param,
1759+
merge_anno = FALSE,
1760+
anno_table,
1761+
separator_anno) {
17451762

1746-
fs <- flowWorkspace::gs_pop_get_data(obj = data_gs, y = "root", inverse.transform = inverse.transform) %>% flowWorkspace::cytoset_to_flowSet()
1763+
fs <- flowWorkspace::gs_pop_get_data(obj = data_gs, y = "root", inverse.transform = inverse.transform)
17471764

17481765
filenames <- rownames(fs@phenoData)
17491766

@@ -1780,15 +1797,55 @@ prep_data_fjw <- function(data_gs, pop = "root", gate_list = nodelist, inverse.t
17801797

17811798
FFdata <- as.data.frame(FFdata)
17821799

1783-
FFdata$InFile <- factor(FFdata$InFile, labels = filenames) # To check what happens with 10+ samples but should be fine
1800+
if (inverse.transform == TRUE) {
1801+
1802+
## Data Transformation
1803+
keeptable <- data.frame(Param = fs[[1]]@parameters$desc)
1804+
keeptable$Trans <- transformation
1805+
keeptable <- keeptable[!keeptable$Param %in% remove_param, ]
17841806

1785-
rownames(FFdata) <- paste(FFdata$InFile, rownames(FFdata), sep = "_")
1807+
data1 <- FFdata[,which(colnames(FFdata) %in% keeptable[,1])]
17861808

1787-
# Separate expression table from the metadata
1809+
nfTransOut <- nfTransform(keeptable, data1, data1)
1810+
1811+
data1 <- nfTransOut$dataA1
1812+
1813+
## Clean the dataframe
1814+
df <- cbind(data1, FFdata[, !colnames(FFdata) %in% fs[[1]]@parameters$desc])
1815+
df <- as.data.frame(df)
1816+
colnames(df)[colnames(df) == "InFile"] <- "expfcs_filename"
1817+
df$expfcs_filename <- as.factor(df$expfcs_filename)
1818+
df$expfcs_filename <- factor(df$expfcs_filename, labels = filenames)
1819+
1820+
} else {
1821+
1822+
df <- FFdata
1823+
colnames(df)[colnames(df) == "InFile"] <- "expfcs_filename"
1824+
df$expfcs_filename <- as.factor(df$expfcs_filename)
1825+
df$expfcs_filename <- factor(df$expfcs_filename, labels = filenames)
1826+
1827+
}
1828+
1829+
if (merge_anno == TRUE) {c
1830+
1831+
## Now add the annotation (as csv file)
1832+
anno <- read.delim(anno_table, sep = separator_anno)
1833+
1834+
df <- merge(df, anno, by.x = "expfcs_filename", by.y = filename_col)
1835+
1836+
}
1837+
1838+
## Give the unique rownames
1839+
rownames(df) <- paste(df$expfcs_filename, rownames(df), sep = "_")
1840+
1841+
## Prepare the final object
17881842
fcd <- list()
1789-
#
1790-
fcd[["expr"]][["orig"]] <-FFdata[,1:length(OrigNames)]
1791-
fcd[["anno"]][["cell_anno"]] <- FFdata[, -(1:length(OrigNames))]
1843+
1844+
fcd[["expr"]][["orig"]] <- df[ ,colnames(df) %in% fs[[1]]@parameters$desc]
1845+
fcd[["anno"]][["cell_anno"]] <- df[ ,!colnames(df) %in% fs[[1]]@parameters$desc]
1846+
1847+
class(fcd) <- "flow_cytometry_dataframe"
17921848

17931849
return(fcd)
1850+
17941851
}

man/HM_differential_marker.Rd

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/prep_fjw.Rd

Lines changed: 36 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/runFlowSOM.Rd

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)