Commit 8e876051 authored by Marek Ostaszewski's avatar Marek Ostaszewski
Browse files

Merge branch 'repo_update' into 'master'

SC analysis

See merge request !304
parents 707a6f98 d8e28a1b
......@@ -55,13 +55,13 @@ process_sbgn <- function(source) {
return(read_xml(cont))
}
process_cdsbml <- function(source) {
cdsbml_xml <- read_xml(source)
### Remove all kineticLaw tags, a temporary solution for a current bug in v15.beta.2
### This will change
xml_remove(xml_find_all(cdsbml_xml, "//sbml:kineticLaw", ns_cd))
return(cdsbml_xml)
}
# process_cdsbml <- function(source) {
# cdsbml_xml <- read_xml(source)
# ### Remove all kineticLaw tags, a temporary solution for a current bug in v15.beta.2
# ### This will change
# xml_remove(xml_find_all(cdsbml_xml, "//sbml:kineticLaw", ns_cd))
# return(cdsbml_xml)
# }
construct_overview <- function(elements) {
### Read in an SBML template
......@@ -146,7 +146,7 @@ for(r in 1:nrow(res)) {
} else if (res[r,]$Type == "SBGN") {
fin_cont <- process_sbgn(rls)
} else if (res[r,]$Type == "CellDesigner_SBML") {
fin_cont <- process_cdsbml(rls)
fin_cont <- read_xml(rls)
}else {
warning(paste0("Resource type not handled: ", res[r,]$Type))
}
......
......@@ -162,7 +162,7 @@ map <- "https://covid19map.elixir-luxembourg.org/minerva/api/"
### Get the components of MINERVA and WikiPathways (see minerva_access.R)
map_components <- get_map_components(map)
### Introduce pathway groups (following 'https://covid.pages.uni.lu/map_contents')
map_groups <- fromJSON("map_groups.json")
map_groups <- fromJSON("https://git-r3lab.uni.lu/covid/models/-/raw/master/Resources/Crosstalks/map_groups.json")
### Detailed lists
mnv_refs <- get_components_annotations(map_components, "HGNC_SYMBOL")
......
---
title: "COVID-19 Disease Map Project: Single Cell analysis of the lung airways data (https://eils-lung.cells.ucsc.edu)"
author:
- Dezso Modos, Quadram Institute, Rosalind Franklin Road, Norwich Research Park, Norwich, NR4 7U, United Kingdom
output:
html_document:
df_print: paged
---
```{r setup, cache=TRUE}
source("overrepresentation_analysis_helper_functions.R")
library(dplyr)
library(Seurat)
library(patchwork)
require(data.table)
if(!file.exists("eils-lung.cells.ucsc.edu_exprMatrix.tsv.gz")) {
download.file(url = "https://cells.ucsc.edu/eils-lung/hbecs/exprMatrix.tsv.gz",
destfile = "eils-lung.cells.ucsc.edu_airways_exprMatrix.tsv.gz")
}
count_matrix <- fread("eils-lung.cells.ucsc.edu_airways_exprMatrix.tsv.gz")
if(!file.exists("eils-lung.cells.ucsc.edu_meta.tsv")) {
download.file(url = "https://cells.ucsc.edu/eils-lung/hbecs/meta.tsv",
destfile = "eils-lung.cells.ucsc.edu_meta.tsv")
}
meta <- read.table("eils-lung.cells.ucsc.edu_meta.tsv", header=T, sep="\t", as.is=T, row.names=1)
### Folder for writing out the results. Modify if necessary
results.folder = "./lung_rmd_res/"
if(!dir.exists(results.folder)) { dir.create(results.folder) }
```
The first step is to load the data into a Seurat object.
The data are in two parts in this case. One contains the counts which are best of my knowledge not row counts but normalised counts and the meta data of the cells. We can combine the two as a Seurat object.
```{r create Seurat object, cache=TRUE}
genes <- count_matrix[,1][[1]]
genes <- gsub(".+[|]", "", genes)
count_matrix <- data.frame(count_matrix[,-1], row.names=genes)
lung_sc_rna_seq <- Seurat::CreateSeuratObject(counts = count_matrix, project = "lung_sc_rna_seq", meta.data=meta)
```
The next step is to find our question it worth to look a bit into the details of the meta data.
What can be interesting in this particular case that which part of the COVID disease map is specific for a certain lung cell type.
To do this we can simple calculate the DEGs per cell type comparing all the other cells - this is finding marker genes.
I do not know whether we need to do QC steps on the dataset or is it done.
I will use the dataset as it is I expect that the quality filtering is already done.
Just to make sure let's make some QC plots.
```{r plot Seurat features, cache=TRUE}
Seurat::VlnPlot(lung_sc_rna_seq, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)
plot1 <- Seurat::FeatureScatter(lung_sc_rna_seq, feature1 = "nCount_RNA", feature2 = "percent.mt")
plot2 <- Seurat::FeatureScatter(lung_sc_rna_seq, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")
Seurat::CombinePlots(plots = list(plot1, plot2))
```
We can be sure that the data are filtered.
The mitochondrial percentage is cut at 15% and the RNA per feature shows a nice linear trend with 0.91 correlation.
Note there are only four runs here it seems only four patients data has been downloaded.
These should be the broncho-alveolar data then based on the metadata information.
```{r plot Seurat features (cntd), cache=TRUE}
lung_sc_rna_seq <- Seurat::FindVariableFeatures(lung_sc_rna_seq, selection.method = "vst", nfeatures = 2000)
# Identify the 10 most highly variable genes
top10 <- head(Seurat::VariableFeatures(lung_sc_rna_seq), 10)
# plot variable features with and without labels
plot1 <- Seurat::VariableFeaturePlot(lung_sc_rna_seq)
plot2 <- Seurat::LabelPoints(plot = plot1, points = top10, repel = TRUE)
Seurat::CombinePlots(plots = list(plot1, plot2))
```
We do not need to find the PCs for finding the clusters because we already has that information from the meta data I hope. If not then we will doi it :-).
The markers here will be the data what we need for the COVID disease map. It will tell us which genes are representing which cell line. I am interested only the positive markers -the positive COVID disease map functions at the end.
```{r plot Seurat features (cntd 2)}
plot(lung_sc_rna_seq@meta.data$UMAP1,lung_sc_rna_seq@meta.data$UMAP2)
```
```{r print identities}
head(Seurat::Idents(lung_sc_rna_seq), 5)
```
Let's save the idents.
```{r process identities}
lung_sc_rna_seq[["old.ident"]] <- Seurat::Idents(object = lung_sc_rna_seq)
lung_sc_rna_seq <- Seurat::StashIdent(object = lung_sc_rna_seq, save.name = "old.ident")
```
Let's set the meta data specific identity :-)
```{r process identities(cntd)}
Seurat::Idents(object = lung_sc_rna_seq) <- "new.ident"
```
```{r calculate and write down markers, cache=TRUE}
lung_sc_rna_seq.markers <- Seurat::FindAllMarkers(lung_sc_rna_seq, only.pos = TRUE, min.pct = 0.25,
logfc.threshold = 0.25)
write.table(lung_sc_rna_seq.markers, file = paste0(results.folder, "Lung_cell_specific_markers.txt"),
sep = "\t", quote=F, row.names = F)
```
Next we will need the COVID disease map pathways.
```{r C19DMap setup}
library(stats)
library(igraph)
library(RColorBrewer)
library(colourschemes)
source("https://git-r3lab.uni.lu/covid/models/-/raw/master/Integration/MINERVA_access/minerva_access_functions.R")
source("overrepresentation_analysis_helper_functions.R")
### The address of the COVID-19 Disease Map in MINERVA
map <- "https://covid19map.elixir-luxembourg.org/minerva/api/"
### Get the components of MINERVA and WikiPathways (see minerva_access.R)
map_components <- get_map_components(map)
### Introduce pathway groups (following 'https://covid.pages.uni.lu/map_contents')
map_groups <- fromJSON("https://git-r3lab.uni.lu/covid/models/-/raw/master/Resources/Crosstalks/map_groups.json")
```
```{r get HGNCs}
### Detailed lists
mnv_refs <- get_components_annotations(map_components, "HGNC_SYMBOL")
wp_refs <- get_wp_refs()
rct_refs <- get_rct_refs()
```
We downloaded the COVID disease map the Reactome and the WikiPathways data.
We can join them together based on the definitions of the "map_groups.json".
```{r calculate gene groups}
map_grefs <- group_refs(c(mnv_refs, wp_refs, rct_refs), map_groups)
```
```{r calculate overrepresentation per cell type, plot}
colnames(lung_sc_rna_seq.markers)[colnames(lung_sc_rna_seq.markers) == "cluster"] <- "comparison"
creating_overrepresetation_graphs_per_condtions(lung_sc_rna_seq.markers, map_grefs, results.folder)
```
---
title: "COVID-19 Disease Map Project: Single Cell analysis of the infected gut data https://ncbi.xyz/geo/query/acc.cgi?acc=GSE156760 (PMID:33904651)"
output:
html_document:
df_print: paged
author:
- Dezso Modos, Quadram Institute, Rosalind Franklin Road, Norwich Research Park, Norwich, NR4 7U, United Kingdom
- Agatha Treveil, Quadram Institute, Rosalind Franklin Road, Norwich Research Park, Norwich, NR4 7U, United Kingdom
- Marek Ostaszewski, Luxembourg Centre for Systems Biomedicine, University of Luxembourg, Luxembourg
---
The notebook below is using Triana et al data from single-cell RNA-seq analysis and checking the over-representation for COVID-19 Disease Map diagrams.
The first step is to prepare our environment for working.
```{r setup}
source("overrepresentation_analysis_helper_functions.R")
library(Seurat)
library(MAST)
library(dplyr)
library(stats)
library(igraph)
library(RColorBrewer)
library(colourschemes)
### Folder for writing out the results. Modify if necessary
results.folder = "./gut_rmd_res/"
if(!dir.exists(results.folder)) { dir.create(results.folder) }
```
To get the helper functions they are stored in a seprated R file.
Loading in the SEURAT data file. The SEURAT data file is comming form the experiment: https://ncbi.xyz/geo/query/acc.cgi?acc=GSE156760
The paper which uses it:
https://www.biorxiv.org/content/10.1101/2020.10.21.348854v1.full.pdf
```{r Seurat data load}
load("_notgit/COVID19_Oct.rda")
```
First let's do that for the colon.
```{r colon data}
colon <- Colon_H_T
Idents(object=colon) <- paste0(Idents(object=colon), "_", colon$CellTypes)
unique(colon$State)
unique(colon$Cond)
unique(colon$Groups)
unique(colon$CellTypes)
unique(Idents(colon))
```
The first comparison is comparing without accounting whether certain cells are infected by a virus or not.
```{r colon: calculate all DEGs, cache=TRUE}
degs_12_vs_mock <- get_degs(colon, 'Colon_12h_', "", 'Colon_Mock_', "")
degs_24_vs_mock <- get_degs(colon, 'Colon_24h_', "", 'Colon_Mock_', "")
```
Refreshing the identities of the cells for the infected non infected bystander measurements.
These results tell us the differentially expressed genes (DEGs) in each case.
The get_degs function uses the Seurat object and calculates DEGs based
on the various cell types. The used function is MAST which incorporates the cell size as a
co-variant for addressing the DEGs.
See for details: https://genomebiology.biomedcentral.com/articles/10.1186/s13059-015-0844-5
```{r colon: cell type identities}
colon <- Colon_H_T
Idents(object=colon) <- paste0(Idents(object=colon), "_", colon$CellTypes, "_", colon$State)
unique(Idents(colon))
```
```{r colon: calculate DEGs per cell type, cache=TRUE}
degs_bys_vs_mock_12 <- get_degs(colon, 'Colon_12h_', "_Bystander", 'Colon_Mock_', "_Non-Infected")
degs_bys_vs_mock_24 <- get_degs(colon, 'Colon_24h_', "_Bystander", 'Colon_Mock_', "_Non-Infected")
degs_inf_vs_mock_12 <- get_degs(colon, 'Colon_12h_', "_Infected", 'Colon_Mock_', "_Non-Infected")
degs_inf_vs_mock_24 <- get_degs(colon, 'Colon_24h_', "_Infected", 'Colon_Mock_', "_Non-Infected")
degs_inf_vs_bys_12 <- get_degs(colon, 'Colon_12h_', "_Infected", 'Colon_12h_', "_Bystander")
degs_inf_vs_bys_24 <- get_degs(colon, 'Colon_24h_', "_Infected", 'Colon_12h_', "_Bystander")
```
```{r colon: write results, cache=TRUE}
write.table(degs_12_vs_mock, file = file.path(results.folder,"comparing_all_cells_12h.txt"),
sep = "\t", quote=F, row.names = F)
write.table(degs_24_vs_mock, file = file.path(results.folder, "comparing_all_cells_24h.txt"),
sep = "\t", quote=F, row.names = F)
write.table(degs_inf_vs_mock_12, file = file.path(results.folder, "degs_inf_vs_mock_12h.txt"),
sep = "\t", quote=F, row.names = F)
write.table(degs_inf_vs_mock_24, file = file.path(results.folder, "degs_inf_vs_mock_24h.txt"),
sep = "\t", quote=F, row.names = F)
write.table(degs_bys_vs_mock_12, file = file.path(results.folder, "degs_bys_vs_mock_12h.txt"),
sep = "\t", quote=F, row.names = F)
write.table(degs_bys_vs_mock_24, file = file.path(results.folder, "degs_bys_vs_mock_24h.txt"),
sep = "\t", quote=F, row.names = F)
write.table(degs_inf_vs_bys_12, file = file.path(results.folder, "degs_inf_vs_bys_12h.txt"),
sep = "\t", quote=F, row.names = F)
write.table(degs_inf_vs_bys_24, file = file.path(results.folder, "degs_inf_vs_bys_24h.txt"),
sep = "\t", quote=F, row.names = F)
```
Next step calculating DEGs for the ileum:
```{r ileum data}
illeum <- Illeum_H_T
Idents(object=illeum) <- paste0(Idents(object=illeum), "_", illeum$CellTypes, "_", illeum$State)
unique(Idents(illeum))
```
```{r ileum: calculate DEGs per cell type and write them down, cache=TRUE}
degs_inf_vs_mock_12_illeum <- get_degs(illeum, 'Illeum_12h_', "_Infected", 'Illeum_Mock_', "_Non-Infected")
write.table(degs_inf_vs_mock_12_illeum,
file = file.path(results.folder, "degs_inf_vs_mock_illeum_12h.txt"), sep = "\t", quote=F, row.names = F)
degs_inf_vs_mock_24_illeum <- get_degs(illeum, 'Illeum_24h_', "_Infected", 'Illeum_Mock_', "_Non-Infected")
write.table(degs_inf_vs_mock_24_illeum,
file = file.path(results.folder, "degs_inf_vs_mock_illeum_24h.txt"), sep = "\t", quote=F, row.names = F)
degs_bys_vs_mock_12_illeum <- get_degs(illeum, 'Illeum_12h_', "_Bystander", 'Illeum_Mock_', "_Non-Infected")
write.table(degs_bys_vs_mock_12_illeum,
file = file.path(results.folder, "degs_bys_vs_mock_12h_illeum.txt"), sep = "\t", quote=F, row.names = F)
degs_bys_vs_mock_24_illeum <- get_degs(illeum, 'Illeum_24h_', "_Bystander", 'Illeum_Mock_', "_Non-Infected")
write.table(degs_bys_vs_mock_24_illeum,
file = file.path(results.folder, "degs_bys_vs_mock_24h_illeum.txt"), sep = "\t", quote=F, row.names = F)
degs_inf_vs_bys_12_illeum <- get_degs(illeum, 'Illeum_12h_', "_Infected", 'Illeum_12h_', "_Bystander")
write.table(degs_inf_vs_bys_12_illeum,
file = file.path(results.folder, "degs_inf_vs_bys_12h_illeum.txt"), sep = "\t", quote=F, row.names = F)
degs_inf_vs_bys_24_illeum <- get_degs(illeum, 'Illeum_24h_', "_Infected", 'Illeum_24h_', "_Bystander")
write.table(degs_inf_vs_bys_24_illeum,
file = file.path(results.folder, "degs_inf_vs_bys_24h_illeum.txt"), sep = "\t", quote=F, row.names = F)
```
Writing down the cell counts for each type of data. This can be useful to investigate the data.
MAST counts the number of cells which means if you have multiple cell of a certain type then you
have better statistical power to see the differentially expressed genes. This increases the false positive rate.
```{r ileum: cell type summary}
by_groupo <- Idents(illeum)
levels(by_groupo)
ileum_cell_counts <- summary(by_groupo)
write.csv(ileum_cell_counts, file.path(results.folder, "illeum_cell_counts.csv"))
```
```{r colon: cell type summary}
by_groupo<- Idents(colon)
levels(by_groupo)
colon_cell_counts <- summary(by_groupo)
write.csv(colon_cell_counts, file.path(results.folder, "colon_cell_counts.csv"))
```
The next step is to read in the cross talk maps for analysis. We will need the various compnenets
of the COVID-19 disease map.
```{r C19DMap setup}
### The address of the COVID-19 Disease Map in MINERVA
map <- "https://covid19map.elixir-luxembourg.org/minerva/api/"
### Get the components of MINERVA and WikiPathways (see minerva_access.R)
map_components <- get_map_components(map)
### Introduce pathway groups (following 'https://covid.pages.uni.lu/map_contents')
map_groups <- fromJSON("https://git-r3lab.uni.lu/covid/models/-/raw/master/Resources/Crosstalks/map_groups.json")
```
```{r get HGNCs}
### Detailed lists
mnv_refs <- get_components_annotations(map_components, "HGNC_SYMBOL")
wp_refs <- get_wp_refs()
rct_refs <- get_rct_refs()
```
```{r print MINERVA diagrams}
names(mnv_refs)
```
```{r combine HGNCs following diagram groupings}
map_grefs <- group_refs(c(mnv_refs, wp_refs, rct_refs), map_groups)
```
Now we have the gene names in a list per pathway. This can be used for our analysis. The next step will be to delete each "NA" values.
After that the HGNC:GENE IDs can be used for simple overrepresentation test. The universe background will be the found expressed genes in the Seurat object from Triana et al.
The aim of the calculations should be that we use both the COVID-19 disease map and the mapped joined data separately.
We need the background of our 10x genes. We have relatively low coverage ~ 5k genes due to the single cell resolution.
One more step is required. The cross talks for each pw.
Now this map can be used for calculating the cross talks of each differentially expressed genes and then use it as a weight parameter specifically for the network. To do that we will use the weight as one parameter and a overrepresetation as a second.
The last part will be to add those into iGraph and make the network figures per cell type response.
```{r ileum: calculate overrepresentation per cell type, plot}
creating_overrepresetation_graphs_per_condtions(degs_bys_vs_mock_12_illeum, map_grefs, results.folder)
creating_overrepresetation_graphs_per_condtions(degs_bys_vs_mock_24_illeum, map_grefs, results.folder)
creating_overrepresetation_graphs_per_condtions(degs_inf_vs_bys_12_illeum, map_grefs, results.folder)
creating_overrepresetation_graphs_per_condtions(degs_inf_vs_bys_24_illeum, map_grefs, results.folder)
creating_overrepresetation_graphs_per_condtions(degs_inf_vs_mock_12_illeum, map_grefs, results.folder)
creating_overrepresetation_graphs_per_condtions(degs_inf_vs_mock_24_illeum, map_grefs, results.folder)
```
```{r colon: calculate overrepresentation per cell type, plot}
creating_overrepresetation_graphs_per_condtions(degs_inf_vs_mock_12, map_grefs, results.folder)
creating_overrepresetation_graphs_per_condtions(degs_inf_vs_mock_24, map_grefs, results.folder)
creating_overrepresetation_graphs_per_condtions(degs_bys_vs_mock_12, map_grefs, results.folder)
creating_overrepresetation_graphs_per_condtions(degs_bys_vs_mock_24, map_grefs, results.folder)
creating_overrepresetation_graphs_per_condtions(degs_inf_vs_bys_12, map_grefs, results.folder)
creating_overrepresetation_graphs_per_condtions(degs_inf_vs_bys_24, map_grefs, results.folder)
```
##################################################
## Project: COVID-19 Disease Map
## Script purpose: Create MINERVA overlays from the single cell datasets
## Date: 31.05.2021
## Author: Marek Ostaszewski
##################################################
create_minerva_overlay <- function(deg_table, map_components,
min_lfc = 0.3, upper_cap = 3, lower_cap = -3,
to_file = NULL) {
# Remove low lfc genes
res <- deg_table[abs(deg_table$avg_log2FC) >= min_lfc,]
# Reduce to minimal data frame
res <- data.frame(name = res$gene, value = res$avg_log2FC)
res <- res[!is.na(res$name),]
tres <- table(res$name)
res <- res[!(res$name %in% names(tres[tres > 1])),]
# Cap to upper threshold and normalise positive values
res$value[res$value > upper_cap] <- upper_cap
res$value[res$value > 0] <- res$value[res$value > 0]/upper_cap
# Cap to upper threshold and normalise negative values
res$value[res$value < lower_cap] <- lower_cap
res$value[res$value < 0] <- res$value[res$value < 0]/abs(lower_cap)
hgnc_refs <- get_components_annotations(map_components, "HGNC_SYMBOL")
all_named_hgncs <- list()
for(h in 1:length(hgnc_refs)) {
names(hgnc_refs[[h]]) <- map_components$map_elements[[h]]$name
hgnc_refs[[h]] <- hgnc_refs[[h]][!is.na(hgnc_refs[[h]]) & sapply(hgnc_refs[[h]], length) > 0]
for(n in names(hgnc_refs[[h]])) {
all_named_hgncs[[n]] <- unique(c(all_named_hgncs[[n]], hgnc_refs[[h]][[n]]))
}
}
overlay <- data.frame(name = names(all_named_hgncs), value = 0)
for(i in 1:nrow(overlay)) {
overlay[i,2] <- mean(res[res$name %in% all_named_hgncs[[i]],"value"])
}
overlay <- overlay[!is.na(overlay$value),]
if(!is.null(to_file)) {
# Write a MINERVA-friendly version of the table, return processing-friendly version
write.table(overlay, file = to_file, sep = "\t", col.names = T, row.names = F, quote = F)
}
return(res)
}
filter_data <- function(scdf, adjp = 0.1, minlfc = 0.3) {
scdf[abs(scdf$avg_log2FC) > minlfc & scdf$p_val_adj < adjp,]
}
pick_genes <- lapply(system("ls _notgit/rmd_res/all_*", intern = T), read.table, header = T, sep = "\t")
filter_genes <- lapply(pick_genes, filter_data)
mod_names <- sapply(filter_genes, function(x) x$comparison[1])
mod_names <- gsub("_Non-Infected", "_Mock", mod_names)
mod_names <- gsub("_Mock_", "_", mod_names)
mod_names <- gsub("_Illeum_", "_", mod_names)
mod_names <- gsub("_Colon_", "_", mod_names)
mod_names <- gsub("_v_Enterocyte 1_", "_vs_", mod_names)
mod_names <- gsub("_v_Inmature Enterocyte 2_", "_vs_", mod_names)
mod_names <- gsub("_v_Enterocyte 2_", "_vs_", mod_names)
mod_names <- gsub("_v_12h_Enterocyte 2_", "_vs_", mod_names)
mod_names <- gsub("_v_12h_Enterocyte 1_", "_vs_", mod_names)
mod_names <- gsub("_v_24h_Inmature Enterocyte 2_", "_vs_", mod_names)
mod_names <- gsub("_Enterocyte 1_", "_Enterocyte_1_", mod_names)
mod_names <- gsub("_Enterocyte 2_", "_Enterocyte_2_", mod_names)
mod_names <- gsub("_Inmature Enterocyte 2_", "_Imm_Enterocyte_2_", mod_names)
names(filter_genes) <- mod_names
### Helper functions to access and retrieve content from MINERVA-hosted diagrams
source("https://git-r3lab.uni.lu/covid/models/-/raw/master/Integration/MINERVA_access/minerva_access_functions.R")
### The address of the COVID-19 Disease Map in MINERVA
map <- "https://covid19map.elixir-luxembourg.org/minerva/api/"
### Get the components of MINERVA and WikiPathways (see minerva_access.R)
map_components <- get_map_components(map)
### Detailed lists
mnv_refs <- get_components_annotations(map_components, "HGNC_SYMBOL")
mnv_refs <- sapply(mnv_refs, function(x) unique(unlist(x)))
scores <- data.frame(sapply(filter_genes, function(x) sapply(mnv_refs, function(y) length(intersect(y, x$gene)))))
colnames(scores) <- sapply(filter_genes, function(x) x$comparison[1])
scores["overview",] <- colSums(scores)
selected_overlays <- c("Illeum_24h_Imm_Enterocyte_2_Bystander_vs_Mock",
"Illeum_24h_Imm_Enterocyte_2_Infected_vs_Mock")
map_components$map_elements[[2]]
bys_mock_24h_il_imm_ent <- create_minerva_overlay(filter_genes[[selected_overlays[1]]], map_components,
to_file = paste0(selected_overlays[1],".txt"))
inf_mock_24h_il_imm_ent <- create_minerva_overlay(filter_genes[[selected_overlays[2]]], map_components,
to_file = paste0(selected_overlays[2],".txt"))
mnv_airway_cells <- filter_data(read.table("./Lung_cell_specific_markers.txt"))
create_minerva_overlay(mnv_airway_cells[grep("Secretory", mnv_airway_cells$cluster),],
map_components = map_components,
to_file = "airway_secretory.txt")
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment