{
"cells": [
{
"cell_type": "markdown",
"id": "d8212f88-13b2-40a6-8cdf-dd5eee9eea44",
"metadata": {},
"source": [
"# bthal dataset v6b pseudobulk DEx tests\n",
"\n",
" - using DESeq2"
]
},
{
"cell_type": "markdown",
"id": "9e45b6c8-4675-495a-bc8b-712c635e2347",
"metadata": {},
"source": [
"1) Run DEGs on HSC/MPP only:\n",
"\n",
" - healthy CTRL BM_SCR_HSC vs (bthal005 BM_SCR_HSC, bthal006 BM_SCR_HSC, bthal009 BM_SCR_HSC, bthal010 BM_SCR_HSC) (1 list)\n",
"\n",
"2) Run DEGs as before but with only one sample in HD: healthy CTRL.\n",
" \n",
" We ran separate contrasts for the following populations pseudobulked (CD34 + HSC/MPPs)\n",
"\n",
" - CB45_Zeng_lineages: HSC, MDP, MPP-MkEry, MPP-MyLy, MEP, Ery (6 lists)\n",
" - CB45_Zeng_annots: GMP_Mono, BFU-E, CFU-E (3 lists)\n",
" - CB10_Mende_lineages: HSC/MPP, MDP, late MyP, early MEMBP, late MEMBP, primed MPP (6 lists)\n",
" - CB10_Mende_annots: HSC/MPP3, HSC/MPP1, MPP-to-MEP, MEP1, MEP2, EryP (6 lists)"
]
},
{
"cell_type": "markdown",
"id": "4a5e594a-e29e-4f9f-b1e8-c78106842d5c",
"metadata": {},
"source": [
"---\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "cd0f2359-7f4e-4554-85cf-8b3876d13117",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"'proteus.45g'"
],
"text/latex": [
"'proteus.45g'"
],
"text/markdown": [
"'proteus.45g'"
],
"text/plain": [
"[1] \"proteus.45g\""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"library(rjson)\n",
"\n",
"singularity <- fromJSON(file=\"/.singularity.d/labels.json\")\n",
"singularity$Version"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "5e5848d9-7c8a-4d45-bdd3-f35f909e2dc0",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"'20240305'"
],
"text/latex": [
"'20240305'"
],
"text/markdown": [
"'20240305'"
],
"text/plain": [
"[1] \"20240305\""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"prefix <- format(as.Date(Sys.time()), \"%Y%m%d\")\n",
"prefix"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "c1fb82d9-e2fb-47aa-bf71-c9bd6870f121",
"metadata": {},
"outputs": [],
"source": [
"basedir <- \".\""
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8cece290-eac1-44a1-8769-44b89b9c6550",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 7,
"id": "4d71ecf5-34ce-4f30-8f37-0c72e91360a5",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
},
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Loading required package: SingleCellExperiment\n",
"\n",
"Loading required package: SummarizedExperiment\n",
"\n",
"Loading required package: MatrixGenerics\n",
"\n",
"Loading required package: matrixStats\n",
"\n",
"\n",
"Attaching package: ‘MatrixGenerics’\n",
"\n",
"\n",
"The following objects are masked from ‘package:matrixStats’:\n",
"\n",
" colAlls, colAnyNAs, colAnys, colAvgsPerRowSet, colCollapse,\n",
" colCounts, colCummaxs, colCummins, colCumprods, colCumsums,\n",
" colDiffs, colIQRDiffs, colIQRs, colLogSumExps, colMadDiffs,\n",
" colMads, colMaxs, colMeans2, colMedians, colMins, colOrderStats,\n",
" colProds, colQuantiles, colRanges, colRanks, colSdDiffs, colSds,\n",
" colSums2, colTabulates, colVarDiffs, colVars, colWeightedMads,\n",
" colWeightedMeans, colWeightedMedians, colWeightedSds,\n",
" colWeightedVars, rowAlls, rowAnyNAs, rowAnys, rowAvgsPerColSet,\n",
" rowCollapse, rowCounts, rowCummaxs, rowCummins, rowCumprods,\n",
" rowCumsums, rowDiffs, rowIQRDiffs, rowIQRs, rowLogSumExps,\n",
" rowMadDiffs, rowMads, rowMaxs, rowMeans2, rowMedians, rowMins,\n",
" rowOrderStats, rowProds, rowQuantiles, rowRanges, rowRanks,\n",
" rowSdDiffs, rowSds, rowSums2, rowTabulates, rowVarDiffs, rowVars,\n",
" rowWeightedMads, rowWeightedMeans, rowWeightedMedians,\n",
" rowWeightedSds, rowWeightedVars\n",
"\n",
"\n",
"Loading required package: GenomicRanges\n",
"\n",
"Loading required package: stats4\n",
"\n",
"Loading required package: BiocGenerics\n",
"\n",
"\n",
"Attaching package: ‘BiocGenerics’\n",
"\n",
"\n",
"The following objects are masked from ‘package:stats’:\n",
"\n",
" IQR, mad, sd, var, xtabs\n",
"\n",
"\n",
"The following objects are masked from ‘package:base’:\n",
"\n",
" Filter, Find, Map, Position, Reduce, anyDuplicated, aperm, append,\n",
" as.data.frame, basename, cbind, colnames, dirname, do.call,\n",
" duplicated, eval, evalq, get, grep, grepl, intersect, is.unsorted,\n",
" lapply, mapply, match, mget, order, paste, pmax, pmax.int, pmin,\n",
" pmin.int, rank, rbind, rownames, sapply, setdiff, sort, table,\n",
" tapply, union, unique, unsplit, which.max, which.min\n",
"\n",
"\n",
"Loading required package: S4Vectors\n",
"\n",
"\n",
"Attaching package: ‘S4Vectors’\n",
"\n",
"\n",
"The following object is masked from ‘package:utils’:\n",
"\n",
" findMatches\n",
"\n",
"\n",
"The following objects are masked from ‘package:base’:\n",
"\n",
" I, expand.grid, unname\n",
"\n",
"\n",
"Loading required package: IRanges\n",
"\n",
"Loading required package: GenomeInfoDb\n",
"\n",
"Loading required package: Biobase\n",
"\n",
"Welcome to Bioconductor\n",
"\n",
" Vignettes contain introductory material; view with\n",
" 'browseVignettes()'. To cite Bioconductor, see\n",
" 'citation(\"Biobase\")', and for packages 'citation(\"pkgname\")'.\n",
"\n",
"\n",
"\n",
"Attaching package: ‘Biobase’\n",
"\n",
"\n",
"The following object is masked from ‘package:MatrixGenerics’:\n",
"\n",
" rowMedians\n",
"\n",
"\n",
"The following objects are masked from ‘package:matrixStats’:\n",
"\n",
" anyMissing, rowMedians\n",
"\n",
"\n",
"Loading required package: scuttle\n",
"\n",
"Loading required package: ggplot2\n",
"\n",
"\n",
"Attaching package: ‘DESeq2’\n",
"\n",
"\n",
"The following object is masked from ‘package:scater’:\n",
"\n",
" fpkm\n",
"\n",
"\n",
"Loading required package: Matrix\n",
"\n",
"\n",
"Attaching package: ‘Matrix’\n",
"\n",
"\n",
"The following object is masked from ‘package:S4Vectors’:\n",
"\n",
" expand\n",
"\n",
"\n",
"\n",
"Attaching package: ‘dplyr’\n",
"\n",
"\n",
"The following object is masked from ‘package:Biobase’:\n",
"\n",
" combine\n",
"\n",
"\n",
"The following objects are masked from ‘package:GenomicRanges’:\n",
"\n",
" intersect, setdiff, union\n",
"\n",
"\n",
"The following object is masked from ‘package:GenomeInfoDb’:\n",
"\n",
" intersect\n",
"\n",
"\n",
"The following objects are masked from ‘package:IRanges’:\n",
"\n",
" collapse, desc, intersect, setdiff, slice, union\n",
"\n",
"\n",
"The following objects are masked from ‘package:S4Vectors’:\n",
"\n",
" first, intersect, rename, setdiff, setequal, union\n",
"\n",
"\n",
"The following objects are masked from ‘package:BiocGenerics’:\n",
"\n",
" combine, intersect, setdiff, union\n",
"\n",
"\n",
"The following object is masked from ‘package:matrixStats’:\n",
"\n",
" count\n",
"\n",
"\n",
"The following objects are masked from ‘package:stats’:\n",
"\n",
" filter, lag\n",
"\n",
"\n",
"The following objects are masked from ‘package:base’:\n",
"\n",
" intersect, setdiff, setequal, union\n",
"\n",
"\n",
"\n",
"Attaching package: ‘tidyr’\n",
"\n",
"\n",
"The following objects are masked from ‘package:Matrix’:\n",
"\n",
" expand, pack, unpack\n",
"\n",
"\n",
"The following object is masked from ‘package:S4Vectors’:\n",
"\n",
" expand\n",
"\n",
"\n"
]
}
],
"source": [
"library(anndata)\n",
"\n",
"library(BiocParallel)\n",
"library(BiocSingular)\n",
"\n",
"library(scater)\n",
"library(scran)\n",
"library(DESeq2)\n",
"# library(glmGamPoi)\n",
"\n",
"library(Matrix.utils)\n",
"library(dplyr)\n",
"library(tidyr)\n",
"library(ggplot2)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "2a95bd8b-27a0-4f70-9068-a763db4c4077",
"metadata": {},
"outputs": [],
"source": [
"register(BPPARAM = MulticoreParam(workers = 4))"
]
},
{
"cell_type": "markdown",
"id": "95ad3c69-ea73-4491-8ba6-b4056b96e73e",
"metadata": {},
"source": [
"---\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "591a2e7c-84d6-4410-a9ea-2ec58f29bfbe",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "88c0b985-2bbb-4f7d-93f3-86eafc00b4a3",
"metadata": {},
"source": [
"### Read in source data obj\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "21ad6840-7db9-488c-ac3a-1d44dec38dbc",
"metadata": {},
"outputs": [],
"source": [
"ann <- read_h5ad( '20230724_bthalcombo_v6b_lognorm_multi_annotated_scores_galore_clusters.h5ad' )"
]
},
{
"cell_type": "markdown",
"id": "ae8fc596-08c0-4b77-9e82-56aa7fe62511",
"metadata": {},
"source": [
"### Create SCE obj\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "c7f164e5-57a1-47e5-998e-e17c0d43c8e5",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Warning message in asMethod(object):\n",
"“sparse->dense coercion: allocating vector of size 5.5 GiB”\n"
]
}
],
"source": [
"sce <- SingleCellExperiment(\n",
" assays = list(counts = t( as.matrix( ann$layers[\"counts\"] ) ) ), \n",
" colData = ann$obs[c('donor', 'library', 'xample', 'population', 'condition', 'v6_leiden.20.0_annot_CB10', 'v6_leiden.20.0_annot_CB45', 'lineage.annot', 'lineage.andy')]\n",
")\n",
"\n",
"\n",
"rownames(sce) <- ann$var_names"
]
},
{
"cell_type": "markdown",
"id": "e96d3e1d-7fa1-4c5f-bb22-6d4e37a753d6",
"metadata": {},
"source": [
"**In order to free up memory**"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "f02d8651-fce4-42e8-b0ba-accae0bba36b",
"metadata": {},
"outputs": [],
"source": [
"rm( ann )"
]
},
{
"cell_type": "markdown",
"id": "c8bb642f-ea76-40f8-97c9-f9c15ea49023",
"metadata": {},
"source": []
},
{
"cell_type": "code",
"execution_count": 14,
"id": "2d93f738-82d8-48e3-a33e-feb64df669f4",
"metadata": {},
"outputs": [],
"source": [
"# Adjusting clusters names in order to reduce issues downstream\n",
"\n",
"dict_replace= c(\"_\" = \"-\", \n",
" \"/\" = \"-\",\n",
" \" \" = \"-\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "58a55b24-bc65-4ec3-b178-8b39e28bbf00",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 15,
"id": "a47fda18-87b3-40e7-bea0-0bf5863e8c43",
"metadata": {},
"outputs": [],
"source": [
"sce$clusters_nicole <- as.factor( stringr::str_replace_all(string = sce$v6_leiden.20.0_annot_CB10,\n",
" pattern = dict_replace) )\n",
"\n",
"sce$lineage_nicole <- as.factor( stringr::str_replace_all(string = sce$lineage.annot,\n",
" pattern = dict_replace) )"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "6dcdd901-58d5-417b-a387-2fe9a03564ea",
"metadata": {},
"outputs": [],
"source": [
"sce$clusters_andy <- as.factor( stringr::str_replace_all(string = sce$v6_leiden.20.0_annot_CB45,\n",
" pattern = dict_replace) )\n",
"\n",
"sce$lineage_andy <- as.factor( stringr::str_replace_all(string = sce$lineage.andy,\n",
" pattern = dict_replace) )"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2587b6f1-9de2-46a0-ba43-140538cd9bfe",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "dd63142b-dcb5-4914-a166-5e6c6bb9d46d",
"metadata": {},
"source": [
"---\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "48705a23-1315-499c-ba91-8a68db6b57d3",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 17,
"id": "95655764-9ceb-43fe-8103-002a163f549a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"output/dex/DESeq2_pairwise/20240305\"\n"
]
}
],
"source": [
"resfolder = paste0(\"output/dex/DESeq2_pairwise/\", prefix, \"/\")\n",
"print(resfolder)\n",
"\n",
"dir.create(resfolder)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b2f19ab9-c60b-40f0-a95f-485c105a0ce7",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 18,
"id": "4189d42c-ec3b-4559-b7b0-a12ba1a02fa4",
"metadata": {},
"outputs": [],
"source": [
"library(tibble)\n",
"library(pheatmap)\n",
"library(png)\n",
"library(RColorBrewer)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2a3b1e78-94d1-4cbd-b20d-99d835d63165",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "df45fc02-2ef0-4eff-ba88-3ec4efa4dfdf",
"metadata": {},
"source": [
"### pairwise DEx function\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "6d1ca1f6-4c2c-4573-9ee9-0a2f91a760a1",
"metadata": {},
"outputs": [],
"source": [
"# Function to run DESeq2 and get results for all clusters\n",
"## x is index of cluster in clusters vector on which to run function\n",
"## A is the sample group to compare\n",
"## B is the sample group to compare against (base level)\n",
"\n",
"get_dds_resultsAvsB <- function(x, A, B){\n",
" \n",
" print(clusters[x])\n",
" \n",
" cluster_metadata <- metadata[which(metadata$cluster_id == clusters[x]), ]\n",
" rownames(cluster_metadata) <- cluster_metadata$sample_id\n",
" counts <- pb[[clusters[x]]]\n",
" \n",
" cluster_counts <- data.frame(as.matrix(counts)[, which(colnames(counts) %in% rownames(cluster_metadata))])\n",
" \n",
" dds <- DESeqDataSetFromMatrix(cluster_counts, \n",
" colData = cluster_metadata, \n",
" design = ~ group_id)\n",
" \n",
" # Transform counts for data visualization\n",
" rld <- rlog(dds, blind=TRUE)\n",
" \n",
" # Plot PCA \n",
" DESeq2::plotPCA(rld, intgroup = \"group_id\")\n",
" ggsave(paste0(resfolder, prefix, \"_\", basename, \"_\", clusters[x], \"_specific_PCAplot.png\"))\n",
" \n",
" # Extract the rlog matrix from the object and compute pairwise correlation values\n",
" rld_mat <- assay(rld)\n",
" rld_cor <- cor(rld_mat)\n",
" \n",
" # Plot heatmap\n",
" png(paste0(resfolder, prefix, \"_\", basename, \"_\", clusters[x], \"_specific_heatmap.png\"))\n",
" pheatmap::pheatmap(rld_cor, annotation = cluster_metadata[, c(\"group_id\"), drop=F])\n",
" dev.off()\n",
" \n",
" # Run DESeq2 differential expression analysis\n",
" dds <- DESeq(dds)\n",
" \n",
" # Plot dispersion estimates\n",
" png(paste0(resfolder, prefix, \"_\", basename, \"_\", clusters[x], \"_dispersion_plot.png\"))\n",
" plotDispEsts(dds)\n",
" dev.off()\n",
"\n",
" # Output results of Wald test for contrast for A vs B\n",
" contrast <- c(\"group_id\", levels(cluster_metadata$group_id)[A], levels(cluster_metadata$group_id)[B])\n",
" \n",
" # resultsNames(dds)\n",
" res <- results(dds, \n",
" contrast = contrast,\n",
" alpha = 0.05)\n",
" \n",
" write.table(na.exclude( res[order(res$padj, res$pvalue), ] )['stat'], \n",
" file = paste0(resfolder, prefix, \"_\", basename, \"_\", clusters[x], \"_\",\n",
" levels(cluster_metadata$group_id)[A], \"_vs_\", levels(cluster_metadata$group_id)[B], '.rnk'), \n",
" col.names = FALSE, quote = FALSE, sep='\\t') \n",
" \n",
" res <- lfcShrink(dds, \n",
" contrast = contrast,\n",
" type = \"ashr\",\n",
" res=res)\n",
" \n",
" # Set thresholds\n",
" padj_cutoff <- 0.05\n",
" \n",
" # Turn the results object into a tibble for use with tidyverse functions\n",
" res_tbl <- res %>%\n",
" data.frame() %>%\n",
" rownames_to_column(var=\"gene\") %>%\n",
" as_tibble()\n",
"\n",
" # Write all results to file\n",
" write.table(res_tbl,\n",
" paste0(resfolder, prefix, \"_\", basename, \"_\", clusters[x], \"_\",\n",
" levels(cluster_metadata$group_id)[A], \"_vs_\", levels(cluster_metadata$group_id)[B], \n",
" \"_all_genes_DESeq2_pb.tsv\"),\n",
" quote = FALSE, \n",
" row.names = FALSE,\n",
" sep='\\t') \n",
" \n",
" # Subset the significant results\n",
" sig_res <- dplyr::filter(res_tbl, padj < padj_cutoff) %>%\n",
" dplyr::arrange(padj)\n",
"\n",
" \n",
" # Write significant results to file\n",
" write.table(sig_res,\n",
" paste0(resfolder, prefix, \"_\", basename, \"_\", clusters[x], \"_\",\n",
" levels(cluster_metadata$group_id)[A], \"_vs_\", levels(cluster_metadata$group_id)[B],\n",
" \"_sig_genes_DESeq2_pb.tsv\"),\n",
" quote = FALSE, \n",
" row.names = FALSE,\n",
" sep='\\t') \n",
" \n",
" ## ggplot of top genes\n",
" normalized_counts <- counts(dds, \n",
" normalized = TRUE)\n",
" \n",
" ## Order results by padj values\n",
" top20_sig_genes <- sig_res %>%\n",
" dplyr::arrange(padj) %>%\n",
" dplyr::pull(gene) %>%\n",
" head(n=20)\n",
" \n",
" top20_sig_norm <- data.frame(normalized_counts) %>%\n",
" rownames_to_column(var = \"gene\") %>%\n",
" dplyr::filter(gene %in% top20_sig_genes)\n",
" \n",
" gathered_top20_sig <- top20_sig_norm %>%\n",
" gather(colnames(top20_sig_norm)[2:length(colnames(top20_sig_norm))], key = \"samplename\", value = \"normalized_counts\")\n",
" \n",
" gathered_top20_sig <- inner_join(ei[, c(\"sample_id\", \"group_id\" )], gathered_top20_sig, by = c(\"sample_id\" = \"samplename\"))\n",
" \n",
" ## plot using ggplot2\n",
" ggplot(gathered_top20_sig) +\n",
" geom_point(aes(x = gene, \n",
" y = normalized_counts, \n",
" color = group_id), \n",
" position=position_jitter(w=0.1,h=0)) +\n",
" scale_y_log10() +\n",
" xlab(\"Genes\") +\n",
" ylab(\"log10 Normalized Counts\") +\n",
" ggtitle(\"Top 20 Significant DE Genes\") +\n",
" theme_bw() +\n",
" theme(axis.text.x = element_text(angle = 45, hjust = 1)) + \n",
" theme(plot.title = element_text(hjust = 0.5))\n",
" ggsave(paste0(resfolder, prefix, \"_\", basename, \"_\", clusters[x], \"_\", levels(cluster_metadata$group_id)[A], \"_vs_\", levels(cluster_metadata$group_id)[B], \"_top20_DE_genes.png\"))\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8c7d8bd8-fcaf-4167-b265-047ff806850e",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 20,
"id": "ff69f574-0bb1-45f0-ac2d-d385ef7358be",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"class: SingleCellExperiment \n",
"dim: 20098 36866 \n",
"metadata(0):\n",
"assays(1): counts\n",
"rownames(20098): RP11-34P13.7 AL627309.1 ... AL354822.1 SRSF10-1\n",
"rowData names(0):\n",
"colnames(36866): SITTC12_AAACCCATCATACAGC.1.0\n",
" SITTC12_AAACGAAAGCTAGTTC.1.0 ... paedBM2_TTTGTTGGTGTTATCG.1.1\n",
" paedBM2_TTTGTTGTCTGGACCG.1.1\n",
"colData names(13): donor library ... clusters_andy lineage_andy\n",
"reducedDimNames(0):\n",
"mainExpName: NULL\n",
"altExpNames(0):"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sce"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e1dc6f64-8f15-4df2-810b-ba9e4bcc300f",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 22,
"id": "633e1b7b-30b2-4fe0-bcc2-e6c759ae341d",
"metadata": {},
"outputs": [],
"source": [
"sce_copy <- sce"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "e5fc99ce-fd43-4026-83a9-192dcc4a0b5c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"class: SingleCellExperiment \n",
"dim: 20098 36866 \n",
"metadata(0):\n",
"assays(1): counts\n",
"rownames(20098): RP11-34P13.7 AL627309.1 ... AL354822.1 SRSF10-1\n",
"rowData names(0):\n",
"colnames(36866): SITTC12_AAACCCATCATACAGC.1.0\n",
" SITTC12_AAACGAAAGCTAGTTC.1.0 ... paedBM2_TTTGTTGGTGTTATCG.1.1\n",
" paedBM2_TTTGTTGTCTGGACCG.1.1\n",
"colData names(13): donor library ... clusters_andy lineage_andy\n",
"reducedDimNames(0):\n",
"mainExpName: NULL\n",
"altExpNames(0):"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sce_copy"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "074dd419-0663-4614-b402-98e2b6209189",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "86818010-ee39-466d-af9d-97273557efea",
"metadata": {},
"source": [
"### "
]
},
{
"cell_type": "markdown",
"id": "71cdbbac-f194-4fdf-aaf7-00cb9f71dc56",
"metadata": {},
"source": [
"### POINT 2)\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "8ba71736-3f0b-458b-83f6-6dd0cb04c6a2",
"metadata": {},
"outputs": [],
"source": [
"exclude <- c('SLX21505_SITTC7_P185-BM-0', 'SLX21505_SITTE7_P181-BM-0', 'SLX21505_SITTD7_P257-BM-0', 'paedBM1_CD34', 'paedBM2_CD34')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "059bc0db-7869-4a26-b33b-a5d2cc40f41f",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 32,
"id": "5b4e4806-7b9e-456e-9e54-86e2e57c1f29",
"metadata": {},
"outputs": [],
"source": [
"`%nin%` = Negate(`%in%`)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "7db379f0-df68-412c-b655-1246739b8dcc",
"metadata": {},
"outputs": [],
"source": [
"sce <- sce[ , sce@colData$xample %nin% exclude]"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "3f0e82cd-c9f0-4c71-8748-bd5413a3513f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
- 20098
- 24185
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 20098\n",
"\\item 24185\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 20098\n",
"2. 24185\n",
"\n",
"\n"
],
"text/plain": [
"[1] 20098 24185"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dim(sce)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e8dbc1ea-d924-451c-9583-f00c0c2b0f8a",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 36,
"id": "6ba656f7-dff5-4cad-8f14-80405a0db1af",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"colData(sce)$group_id <- factor( colData(sce)$condition )\n",
"\n",
"colData(sce)$sample_id <- factor( paste( colData(sce)$condition, colData(sce)$library, sep = '') )\n",
"\n",
"colData(sce)$donor <- factor( colData(sce)$donor )"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1459868b-580a-465f-8c42-dccb4bd1bf01",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "777893e0-61aa-491a-9be3-6b48d4137b3f",
"metadata": {},
"source": [
"## Mende et al (CB10)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bc0f3cf6-4bf5-4a8c-93d7-4aea6a80e869",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "e07dd023-7f27-47e0-bf02-6d0eb0800444",
"metadata": {
"tags": []
},
"source": [
"### CB10 clusters\n",
"---\n",
"\n",
"HSC/MPP3, HSC/MPP1, MPP-to-MEP, MEP1, MEP2, EryP\n",
"\n",
"'v6_leiden.20.0_annot_CB10' / clusters_nicole"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "37def0c5-b67b-40fc-96ad-900e7580859d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 37,
"id": "eb82f4af-4a06-4ac1-8f39-1442d6bcf3c5",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- 15-MyP4-(GMP)
- 16-MyP3-(cycle)
- 05-HSC-MPP3
- 10-MPP-to-MEP
- 12-MEP1
- 13-MEP-cycle
- 24-MDP
- 17-EoBasoMCP
- 09-MyP2
- 19-HSPC-cycle
- 00-HSC-MPP2
- 08-EryP
- 01-LyP2
- 02-MEP2
- 06-MyP1
- 04-HSC-MPP1
- 22-MkP
- 11-HSC-MPP4
\n",
"\n",
"\n",
"\t\n",
"\t\tLevels:\n",
"\t
\n",
"\t\n",
"\t- '00-HSC-MPP2'
- '01-LyP2'
- '02-MEP2'
- '04-HSC-MPP1'
- '05-HSC-MPP3'
- '06-MyP1'
- '08-EryP'
- '09-MyP2'
- '10-MPP-to-MEP'
- '11-HSC-MPP4'
- '12-MEP1'
- '13-MEP-cycle'
- '15-MyP4-(GMP)'
- '16-MyP3-(cycle)'
- '17-EoBasoMCP'
- '19-HSPC-cycle'
- '22-MkP'
- '24-MDP'
\n",
" "
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 15-MyP4-(GMP)\n",
"\\item 16-MyP3-(cycle)\n",
"\\item 05-HSC-MPP3\n",
"\\item 10-MPP-to-MEP\n",
"\\item 12-MEP1\n",
"\\item 13-MEP-cycle\n",
"\\item 24-MDP\n",
"\\item 17-EoBasoMCP\n",
"\\item 09-MyP2\n",
"\\item 19-HSPC-cycle\n",
"\\item 00-HSC-MPP2\n",
"\\item 08-EryP\n",
"\\item 01-LyP2\n",
"\\item 02-MEP2\n",
"\\item 06-MyP1\n",
"\\item 04-HSC-MPP1\n",
"\\item 22-MkP\n",
"\\item 11-HSC-MPP4\n",
"\\end{enumerate*}\n",
"\n",
"\\emph{Levels}: \\begin{enumerate*}\n",
"\\item '00-HSC-MPP2'\n",
"\\item '01-LyP2'\n",
"\\item '02-MEP2'\n",
"\\item '04-HSC-MPP1'\n",
"\\item '05-HSC-MPP3'\n",
"\\item '06-MyP1'\n",
"\\item '08-EryP'\n",
"\\item '09-MyP2'\n",
"\\item '10-MPP-to-MEP'\n",
"\\item '11-HSC-MPP4'\n",
"\\item '12-MEP1'\n",
"\\item '13-MEP-cycle'\n",
"\\item '15-MyP4-(GMP)'\n",
"\\item '16-MyP3-(cycle)'\n",
"\\item '17-EoBasoMCP'\n",
"\\item '19-HSPC-cycle'\n",
"\\item '22-MkP'\n",
"\\item '24-MDP'\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 15-MyP4-(GMP)\n",
"2. 16-MyP3-(cycle)\n",
"3. 05-HSC-MPP3\n",
"4. 10-MPP-to-MEP\n",
"5. 12-MEP1\n",
"6. 13-MEP-cycle\n",
"7. 24-MDP\n",
"8. 17-EoBasoMCP\n",
"9. 09-MyP2\n",
"10. 19-HSPC-cycle\n",
"11. 00-HSC-MPP2\n",
"12. 08-EryP\n",
"13. 01-LyP2\n",
"14. 02-MEP2\n",
"15. 06-MyP1\n",
"16. 04-HSC-MPP1\n",
"17. 22-MkP\n",
"18. 11-HSC-MPP4\n",
"\n",
"\n",
"\n",
"**Levels**: 1. '00-HSC-MPP2'\n",
"2. '01-LyP2'\n",
"3. '02-MEP2'\n",
"4. '04-HSC-MPP1'\n",
"5. '05-HSC-MPP3'\n",
"6. '06-MyP1'\n",
"7. '08-EryP'\n",
"8. '09-MyP2'\n",
"9. '10-MPP-to-MEP'\n",
"10. '11-HSC-MPP4'\n",
"11. '12-MEP1'\n",
"12. '13-MEP-cycle'\n",
"13. '15-MyP4-(GMP)'\n",
"14. '16-MyP3-(cycle)'\n",
"15. '17-EoBasoMCP'\n",
"16. '19-HSPC-cycle'\n",
"17. '22-MkP'\n",
"18. '24-MDP'\n",
"\n",
"\n"
],
"text/plain": [
" [1] 15-MyP4-(GMP) 16-MyP3-(cycle) 05-HSC-MPP3 10-MPP-to-MEP \n",
" [5] 12-MEP1 13-MEP-cycle 24-MDP 17-EoBasoMCP \n",
" [9] 09-MyP2 19-HSPC-cycle 00-HSC-MPP2 08-EryP \n",
"[13] 01-LyP2 02-MEP2 06-MyP1 04-HSC-MPP1 \n",
"[17] 22-MkP 11-HSC-MPP4 \n",
"18 Levels: 00-HSC-MPP2 01-LyP2 02-MEP2 04-HSC-MPP1 05-HSC-MPP3 ... 24-MDP"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"unique( sce$clusters_nicole )"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7d4dc600-28e0-466c-9847-a510d21a4059",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "2f7ad9c4-1d9d-4474-8404-0459e76f0c1a",
"metadata": {},
"source": [
"**Set cluster_id here for ease of code re-use/templating**"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "d3c57c36-991c-40b5-9be7-a09a5f730f0c",
"metadata": {},
"outputs": [],
"source": [
"sce$cluster_id <- sce$clusters_nicole"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "543c50cd-260b-466e-9181-999e59cac29a",
"metadata": {},
"outputs": [],
"source": [
"basename <- 'bthalcombo_v6b_C10_cluster'"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a1e6cc39-ad8f-4241-9b81-b4727e4d03e9",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 40,
"id": "29ada6ac-8dec-4b8b-9a07-3ad5fdca803f",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"- 00-HSC-MPP2
- '00-HSC-MPP2'
- 01-LyP2
- '01-LyP2'
- 02-MEP2
- '02-MEP2'
- 04-HSC-MPP1
- '04-HSC-MPP1'
- 05-HSC-MPP3
- '05-HSC-MPP3'
- 06-MyP1
- '06-MyP1'
- 08-EryP
- '08-EryP'
- 09-MyP2
- '09-MyP2'
- 10-MPP-to-MEP
- '10-MPP-to-MEP'
- 11-HSC-MPP4
- '11-HSC-MPP4'
- 12-MEP1
- '12-MEP1'
- 13-MEP-cycle
- '13-MEP-cycle'
- 15-MyP4-(GMP)
- '15-MyP4-(GMP)'
- 16-MyP3-(cycle)
- '16-MyP3-(cycle)'
- 17-EoBasoMCP
- '17-EoBasoMCP'
- 19-HSPC-cycle
- '19-HSPC-cycle'
- 22-MkP
- '22-MkP'
- 24-MDP
- '24-MDP'
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[00-HSC-MPP2] '00-HSC-MPP2'\n",
"\\item[01-LyP2] '01-LyP2'\n",
"\\item[02-MEP2] '02-MEP2'\n",
"\\item[04-HSC-MPP1] '04-HSC-MPP1'\n",
"\\item[05-HSC-MPP3] '05-HSC-MPP3'\n",
"\\item[06-MyP1] '06-MyP1'\n",
"\\item[08-EryP] '08-EryP'\n",
"\\item[09-MyP2] '09-MyP2'\n",
"\\item[10-MPP-to-MEP] '10-MPP-to-MEP'\n",
"\\item[11-HSC-MPP4] '11-HSC-MPP4'\n",
"\\item[12-MEP1] '12-MEP1'\n",
"\\item[13-MEP-cycle] '13-MEP-cycle'\n",
"\\item[15-MyP4-(GMP)] '15-MyP4-(GMP)'\n",
"\\item[16-MyP3-(cycle)] '16-MyP3-(cycle)'\n",
"\\item[17-EoBasoMCP] '17-EoBasoMCP'\n",
"\\item[19-HSPC-cycle] '19-HSPC-cycle'\n",
"\\item[22-MkP] '22-MkP'\n",
"\\item[24-MDP] '24-MDP'\n",
"\\end{description*}\n"
],
"text/markdown": [
"00-HSC-MPP2\n",
": '00-HSC-MPP2'01-LyP2\n",
": '01-LyP2'02-MEP2\n",
": '02-MEP2'04-HSC-MPP1\n",
": '04-HSC-MPP1'05-HSC-MPP3\n",
": '05-HSC-MPP3'06-MyP1\n",
": '06-MyP1'08-EryP\n",
": '08-EryP'09-MyP2\n",
": '09-MyP2'10-MPP-to-MEP\n",
": '10-MPP-to-MEP'11-HSC-MPP4\n",
": '11-HSC-MPP4'12-MEP1\n",
": '12-MEP1'13-MEP-cycle\n",
": '13-MEP-cycle'15-MyP4-(GMP)\n",
": '15-MyP4-(GMP)'16-MyP3-(cycle)\n",
": '16-MyP3-(cycle)'17-EoBasoMCP\n",
": '17-EoBasoMCP'19-HSPC-cycle\n",
": '19-HSPC-cycle'22-MkP\n",
": '22-MkP'24-MDP\n",
": '24-MDP'\n",
"\n"
],
"text/plain": [
" 00-HSC-MPP2 01-LyP2 02-MEP2 04-HSC-MPP1 \n",
" \"00-HSC-MPP2\" \"01-LyP2\" \"02-MEP2\" \"04-HSC-MPP1\" \n",
" 05-HSC-MPP3 06-MyP1 08-EryP 09-MyP2 \n",
" \"05-HSC-MPP3\" \"06-MyP1\" \"08-EryP\" \"09-MyP2\" \n",
" 10-MPP-to-MEP 11-HSC-MPP4 12-MEP1 13-MEP-cycle \n",
" \"10-MPP-to-MEP\" \"11-HSC-MPP4\" \"12-MEP1\" \"13-MEP-cycle\" \n",
" 15-MyP4-(GMP) 16-MyP3-(cycle) 17-EoBasoMCP 19-HSPC-cycle \n",
" \"15-MyP4-(GMP)\" \"16-MyP3-(cycle)\" \"17-EoBasoMCP\" \"19-HSPC-cycle\" \n",
" 22-MkP 24-MDP \n",
" \"22-MkP\" \"24-MDP\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Named vector of cluster names\n",
"kids <- purrr::set_names(levels(sce$cluster_id))\n",
"kids"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "676f9b87-5d65-488a-8d78-c76144f02bb8",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 41,
"id": "5a7a54e2-6a97-494b-94be-765ad94380f4",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"18"
],
"text/latex": [
"18"
],
"text/markdown": [
"18"
],
"text/plain": [
"[1] 18"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Total number of clusters\n",
"nk <- length(kids)\n",
"nk"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "61a16133-9aaa-4aa1-9bf0-2ce0aa1313fd",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 42,
"id": "d443d172-118e-4f99-905f-122204f2d9fa",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"- bthalSITTA3
- 'bthalSITTA3'
- bthalSITTB3
- 'bthalSITTB3'
- bthalSITTC12
- 'bthalSITTC12'
- bthalSITTC3
- 'bthalSITTC3'
- bthalSITTD12
- 'bthalSITTD12'
- bthalSITTE10
- 'bthalSITTE10'
- bthalSITTF10
- 'bthalSITTF10'
- bthalSITTG3
- 'bthalSITTG3'
- healthySITTC10
- 'healthySITTC10'
- healthySITTD10
- 'healthySITTD10'
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[bthalSITTA3] 'bthalSITTA3'\n",
"\\item[bthalSITTB3] 'bthalSITTB3'\n",
"\\item[bthalSITTC12] 'bthalSITTC12'\n",
"\\item[bthalSITTC3] 'bthalSITTC3'\n",
"\\item[bthalSITTD12] 'bthalSITTD12'\n",
"\\item[bthalSITTE10] 'bthalSITTE10'\n",
"\\item[bthalSITTF10] 'bthalSITTF10'\n",
"\\item[bthalSITTG3] 'bthalSITTG3'\n",
"\\item[healthySITTC10] 'healthySITTC10'\n",
"\\item[healthySITTD10] 'healthySITTD10'\n",
"\\end{description*}\n"
],
"text/markdown": [
"bthalSITTA3\n",
": 'bthalSITTA3'bthalSITTB3\n",
": 'bthalSITTB3'bthalSITTC12\n",
": 'bthalSITTC12'bthalSITTC3\n",
": 'bthalSITTC3'bthalSITTD12\n",
": 'bthalSITTD12'bthalSITTE10\n",
": 'bthalSITTE10'bthalSITTF10\n",
": 'bthalSITTF10'bthalSITTG3\n",
": 'bthalSITTG3'healthySITTC10\n",
": 'healthySITTC10'healthySITTD10\n",
": 'healthySITTD10'\n",
"\n"
],
"text/plain": [
" bthalSITTA3 bthalSITTB3 bthalSITTC12 bthalSITTC3 \n",
" \"bthalSITTA3\" \"bthalSITTB3\" \"bthalSITTC12\" \"bthalSITTC3\" \n",
" bthalSITTD12 bthalSITTE10 bthalSITTF10 bthalSITTG3 \n",
" \"bthalSITTD12\" \"bthalSITTE10\" \"bthalSITTF10\" \"bthalSITTG3\" \n",
" healthySITTC10 healthySITTD10 \n",
"\"healthySITTC10\" \"healthySITTD10\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Named vector of sample names\n",
"sids <- purrr::set_names(levels(sce$sample_id))\n",
"sids"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "b739c570-0e04-426a-8652-504cb7383631",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"10"
],
"text/latex": [
"10"
],
"text/markdown": [
"10"
],
"text/plain": [
"[1] 10"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Total number of samples \n",
"ns <- length(sids)\n",
"ns"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "16269332-2f82-4dfd-996a-35fa377c5a36",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\n",
" bthalSITTA3 bthalSITTB3 bthalSITTC12 bthalSITTC3 bthalSITTD12 \n",
" 3220 331 1970 336 496 \n",
" bthalSITTE10 bthalSITTF10 bthalSITTG3 healthySITTC10 healthySITTD10 \n",
" 6663 6452 166 2066 2485 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"A data.frame: 10 × 16\n",
"\n",
"\tdonor | library | xample | population | condition | v6_leiden.20.0_annot_CB10 | v6_leiden.20.0_annot_CB45 | lineage.annot | lineage.andy | clusters_nicole | lineage_nicole | clusters_andy | lineage_andy | group_id | sample_id | n_cells |
\n",
"\t<fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <dbl> |
\n",
"\n",
"\n",
"\tbthal007 | SITTA3 | bthal007_BM_scr_CD34 | CD34 | bthal | 19_HSPC cycle | Pro-B Cycling | EryP/MyP mix | Bcell Precursor | 19-HSPC-cycle | EryP-MyP-mix | Pro-B-Cycling | Bcell-Precursor | bthal | bthalSITTA3 | 3220 |
\n",
"\tbthal008 | SITTB3 | bthal008_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTB3 | 331 |
\n",
"\tbthal005 | SITTC12 | bthal005_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTC12 | 1970 |
\n",
"\tbthal007 | SITTC3 | bthal007_BM_scr_CD38neg | CD34_CD38neg | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTC3 | 336 |
\n",
"\tbthal006 | SITTD12 | bthal006_BM_scr_CD34 | CD34 | bthal | 05_HSC/MPP3 | HSC | HSC/MPP | HSC | 05-HSC-MPP3 | HSC-MPP | HSC | HSC | bthal | bthalSITTD12 | 496 |
\n",
"\tbthal010 | SITTE10 | bthal010_BM_scr_HSC | HSCMPP | bthal | 00_HSC/MPP2 | HSC | HSC/MPP | HSC | 00-HSC-MPP2 | HSC-MPP | HSC | HSC | bthal | bthalSITTE10 | 6663 |
\n",
"\tbthal009 | SITTF10 | bthal009_BM_scr_HSC | HSCMPP | bthal | 04_HSC/MPP1 | HSC | HSC/MPP | HSC | 04-HSC-MPP1 | HSC-MPP | HSC | HSC | bthal | bthalSITTF10 | 6452 |
\n",
"\tbthal008 | SITTG3 | bthal008_BM_scr_CD34 | CD34 | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTG3 | 166 |
\n",
"\thealthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 05_HSC/MPP3 | MPP-MkEry | HSC/MPP | MPP-MkEry | 05-HSC-MPP3 | HSC-MPP | MPP-MkEry | MPP-MkEry | healthy | healthySITTC10 | 2066 |
\n",
"\thealthy_CTRL | SITTD10 | healthy_CTRL_CD34 | CD34 | healthy | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | healthy | healthySITTD10 | 2485 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 10 × 16\n",
"\\begin{tabular}{llllllllllllllll}\n",
" donor & library & xample & population & condition & v6\\_leiden.20.0\\_annot\\_CB10 & v6\\_leiden.20.0\\_annot\\_CB45 & lineage.annot & lineage.andy & clusters\\_nicole & lineage\\_nicole & clusters\\_andy & lineage\\_andy & group\\_id & sample\\_id & n\\_cells\\\\\n",
" & & & & & & & & & & & & & & & \\\\\n",
"\\hline\n",
"\t bthal007 & SITTA3 & bthal007\\_BM\\_scr\\_CD34 & CD34 & bthal & 19\\_HSPC cycle & Pro-B Cycling & EryP/MyP mix & Bcell Precursor & 19-HSPC-cycle & EryP-MyP-mix & Pro-B-Cycling & Bcell-Precursor & bthal & bthalSITTA3 & 3220\\\\\n",
"\t bthal008 & SITTB3 & bthal008\\_BM\\_scr\\_CD34 & CD34 & bthal & 15\\_MyP4 (GMP) & GMP-Mono & late MyP & GMP & 15-MyP4-(GMP) & late-MyP & GMP-Mono & GMP & bthal & bthalSITTB3 & 331\\\\\n",
"\t bthal005 & SITTC12 & bthal005\\_BM\\_scr\\_CD34 & CD34 & bthal & 15\\_MyP4 (GMP) & GMP-Mono & late MyP & GMP & 15-MyP4-(GMP) & late-MyP & GMP-Mono & GMP & bthal & bthalSITTC12 & 1970\\\\\n",
"\t bthal007 & SITTC3 & bthal007\\_BM\\_scr\\_CD38neg & CD34\\_CD38neg & bthal & 09\\_MyP2 & Early GMP & early MyP & GMP & 09-MyP2 & early-MyP & Early-GMP & GMP & bthal & bthalSITTC3 & 336\\\\\n",
"\t bthal006 & SITTD12 & bthal006\\_BM\\_scr\\_CD34 & CD34 & bthal & 05\\_HSC/MPP3 & HSC & HSC/MPP & HSC & 05-HSC-MPP3 & HSC-MPP & HSC & HSC & bthal & bthalSITTD12 & 496\\\\\n",
"\t bthal010 & SITTE10 & bthal010\\_BM\\_scr\\_HSC & HSCMPP & bthal & 00\\_HSC/MPP2 & HSC & HSC/MPP & HSC & 00-HSC-MPP2 & HSC-MPP & HSC & HSC & bthal & bthalSITTE10 & 6663\\\\\n",
"\t bthal009 & SITTF10 & bthal009\\_BM\\_scr\\_HSC & HSCMPP & bthal & 04\\_HSC/MPP1 & HSC & HSC/MPP & HSC & 04-HSC-MPP1 & HSC-MPP & HSC & HSC & bthal & bthalSITTF10 & 6452\\\\\n",
"\t bthal008 & SITTG3 & bthal008\\_BM\\_scr\\_CD34 & CD34 & bthal & 09\\_MyP2 & Early GMP & early MyP & GMP & 09-MyP2 & early-MyP & Early-GMP & GMP & bthal & bthalSITTG3 & 166\\\\\n",
"\t healthy\\_CTRL & SITTC10 & healthy\\_CTRL\\_HSC & HSCMPP & healthy & 05\\_HSC/MPP3 & MPP-MkEry & HSC/MPP & MPP-MkEry & 05-HSC-MPP3 & HSC-MPP & MPP-MkEry & MPP-MkEry & healthy & healthySITTC10 & 2066\\\\\n",
"\t healthy\\_CTRL & SITTD10 & healthy\\_CTRL\\_CD34 & CD34 & healthy & 09\\_MyP2 & Early GMP & early MyP & GMP & 09-MyP2 & early-MyP & Early-GMP & GMP & healthy & healthySITTD10 & 2485\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 10 × 16\n",
"\n",
"| donor <fct> | library <fct> | xample <fct> | population <fct> | condition <fct> | v6_leiden.20.0_annot_CB10 <fct> | v6_leiden.20.0_annot_CB45 <fct> | lineage.annot <fct> | lineage.andy <fct> | clusters_nicole <fct> | lineage_nicole <fct> | clusters_andy <fct> | lineage_andy <fct> | group_id <fct> | sample_id <fct> | n_cells <dbl> |\n",
"|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
"| bthal007 | SITTA3 | bthal007_BM_scr_CD34 | CD34 | bthal | 19_HSPC cycle | Pro-B Cycling | EryP/MyP mix | Bcell Precursor | 19-HSPC-cycle | EryP-MyP-mix | Pro-B-Cycling | Bcell-Precursor | bthal | bthalSITTA3 | 3220 |\n",
"| bthal008 | SITTB3 | bthal008_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTB3 | 331 |\n",
"| bthal005 | SITTC12 | bthal005_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTC12 | 1970 |\n",
"| bthal007 | SITTC3 | bthal007_BM_scr_CD38neg | CD34_CD38neg | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTC3 | 336 |\n",
"| bthal006 | SITTD12 | bthal006_BM_scr_CD34 | CD34 | bthal | 05_HSC/MPP3 | HSC | HSC/MPP | HSC | 05-HSC-MPP3 | HSC-MPP | HSC | HSC | bthal | bthalSITTD12 | 496 |\n",
"| bthal010 | SITTE10 | bthal010_BM_scr_HSC | HSCMPP | bthal | 00_HSC/MPP2 | HSC | HSC/MPP | HSC | 00-HSC-MPP2 | HSC-MPP | HSC | HSC | bthal | bthalSITTE10 | 6663 |\n",
"| bthal009 | SITTF10 | bthal009_BM_scr_HSC | HSCMPP | bthal | 04_HSC/MPP1 | HSC | HSC/MPP | HSC | 04-HSC-MPP1 | HSC-MPP | HSC | HSC | bthal | bthalSITTF10 | 6452 |\n",
"| bthal008 | SITTG3 | bthal008_BM_scr_CD34 | CD34 | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTG3 | 166 |\n",
"| healthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 05_HSC/MPP3 | MPP-MkEry | HSC/MPP | MPP-MkEry | 05-HSC-MPP3 | HSC-MPP | MPP-MkEry | MPP-MkEry | healthy | healthySITTC10 | 2066 |\n",
"| healthy_CTRL | SITTD10 | healthy_CTRL_CD34 | CD34 | healthy | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | healthy | healthySITTD10 | 2485 |\n",
"\n"
],
"text/plain": [
" donor library xample population condition\n",
"1 bthal007 SITTA3 bthal007_BM_scr_CD34 CD34 bthal \n",
"2 bthal008 SITTB3 bthal008_BM_scr_CD34 CD34 bthal \n",
"3 bthal005 SITTC12 bthal005_BM_scr_CD34 CD34 bthal \n",
"4 bthal007 SITTC3 bthal007_BM_scr_CD38neg CD34_CD38neg bthal \n",
"5 bthal006 SITTD12 bthal006_BM_scr_CD34 CD34 bthal \n",
"6 bthal010 SITTE10 bthal010_BM_scr_HSC HSCMPP bthal \n",
"7 bthal009 SITTF10 bthal009_BM_scr_HSC HSCMPP bthal \n",
"8 bthal008 SITTG3 bthal008_BM_scr_CD34 CD34 bthal \n",
"9 healthy_CTRL SITTC10 healthy_CTRL_HSC HSCMPP healthy \n",
"10 healthy_CTRL SITTD10 healthy_CTRL_CD34 CD34 healthy \n",
" v6_leiden.20.0_annot_CB10 v6_leiden.20.0_annot_CB45 lineage.annot\n",
"1 19_HSPC cycle Pro-B Cycling EryP/MyP mix \n",
"2 15_MyP4 (GMP) GMP-Mono late MyP \n",
"3 15_MyP4 (GMP) GMP-Mono late MyP \n",
"4 09_MyP2 Early GMP early MyP \n",
"5 05_HSC/MPP3 HSC HSC/MPP \n",
"6 00_HSC/MPP2 HSC HSC/MPP \n",
"7 04_HSC/MPP1 HSC HSC/MPP \n",
"8 09_MyP2 Early GMP early MyP \n",
"9 05_HSC/MPP3 MPP-MkEry HSC/MPP \n",
"10 09_MyP2 Early GMP early MyP \n",
" lineage.andy clusters_nicole lineage_nicole clusters_andy lineage_andy \n",
"1 Bcell Precursor 19-HSPC-cycle EryP-MyP-mix Pro-B-Cycling Bcell-Precursor\n",
"2 GMP 15-MyP4-(GMP) late-MyP GMP-Mono GMP \n",
"3 GMP 15-MyP4-(GMP) late-MyP GMP-Mono GMP \n",
"4 GMP 09-MyP2 early-MyP Early-GMP GMP \n",
"5 HSC 05-HSC-MPP3 HSC-MPP HSC HSC \n",
"6 HSC 00-HSC-MPP2 HSC-MPP HSC HSC \n",
"7 HSC 04-HSC-MPP1 HSC-MPP HSC HSC \n",
"8 GMP 09-MyP2 early-MyP Early-GMP GMP \n",
"9 MPP-MkEry 05-HSC-MPP3 HSC-MPP MPP-MkEry MPP-MkEry \n",
"10 GMP 09-MyP2 early-MyP Early-GMP GMP \n",
" group_id sample_id n_cells\n",
"1 bthal bthalSITTA3 3220 \n",
"2 bthal bthalSITTB3 331 \n",
"3 bthal bthalSITTC12 1970 \n",
"4 bthal bthalSITTC3 336 \n",
"5 bthal bthalSITTD12 496 \n",
"6 bthal bthalSITTE10 6663 \n",
"7 bthal bthalSITTF10 6452 \n",
"8 bthal bthalSITTG3 166 \n",
"9 healthy healthySITTC10 2066 \n",
"10 healthy healthySITTD10 2485 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Generate sample level metadata\n",
"\n",
"## Determine the number of cells per sample\n",
"table(sce$sample_id)\n",
"\n",
"## Turn named vector into a numeric vector of number of cells per sample\n",
"n_cells <- as.numeric(table(sce$sample_id))\n",
"\n",
"## Determine how to reoder the samples (rows) of the metadata to match the order of sample names in sids vector\n",
"m <- match(sids, sce$sample_id)\n",
"\n",
"## Create the sample level metadata by combining the reordered metadata with the number of cells corresponding to each sample.\n",
"ei <- data.frame(colData(sce)[m, ], \n",
" n_cells, row.names = NULL) %>% \n",
" select(-\"cluster_id\")\n",
"ei"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "32691426-df27-422f-a828-32e7c741e186",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- 20098
- 24185
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 20098\n",
"\\item 24185\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 20098\n",
"2. 24185\n",
"\n",
"\n"
],
"text/plain": [
"[1] 20098 24185"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dim(sce)"
]
},
{
"cell_type": "markdown",
"id": "6bf3b68f-eaf1-40fa-905e-a4caab3353a6",
"metadata": {},
"source": [
"---\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1ad06348-eb9e-433d-aa0b-b7e72ba6db7e",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "cee79c1d-5b13-4cd5-9d3d-beb3e88fd6e9",
"metadata": {},
"source": [
"#### Count aggregation to sample level\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "1f34c0ac-74d8-4aa1-a54e-f9d14fc92785",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"'dgCMatrix'"
],
"text/latex": [
"'dgCMatrix'"
],
"text/markdown": [
"'dgCMatrix'"
],
"text/plain": [
"[1] \"dgCMatrix\"\n",
"attr(,\"package\")\n",
"[1] \"Matrix\""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"- 164
- 20098
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 164\n",
"\\item 20098\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 164\n",
"2. 20098\n",
"\n",
"\n"
],
"text/plain": [
"[1] 164 20098"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Aggregate the counts per sample_id and cluster_id\n",
"\n",
"# Subset metadata to only include the cluster and sample IDs to aggregate across\n",
"groups <- colData(sce)[, c(\"cluster_id\", \"sample_id\")]\n",
"\n",
"# Aggregate across cluster-sample groups\n",
"pb <- aggregate.Matrix(t(counts(sce)), \n",
" groupings = groups, fun = \"sum\") \n",
"\n",
"class(pb)\n",
"\n",
"dim(pb)\n",
"\n",
"# pb[1:6, 1:6]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "37af302f-509e-40fd-8a67-2d60e6e7c91f",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 48,
"id": "1bafda58-9b02-4b69-b349-a04e844119e4",
"metadata": {},
"outputs": [],
"source": [
"# Not every cluster is present in all samples; create a vector that represents how to split samples\n",
"splitf <- sapply(stringr::str_split(rownames(pb), \n",
" pattern = \"_\",\n",
" n = 2\n",
" ), \n",
" `[`, 1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1ed0f8e5-ab0a-4c93-acd8-55d0a4b9f049",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 49,
"id": "90876a1e-583d-411a-ad25-7518bbe53b22",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"'list'"
],
"text/latex": [
"'list'"
],
"text/markdown": [
"'list'"
],
"text/plain": [
"[1] \"list\""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Turn into a list and split the list into components for each cluster and transform, so rows are genes and columns are samples and make rownames as the sample IDs\n",
"pb <- split.data.frame(pb, \n",
" factor(splitf)) %>%\n",
" lapply(function(u) \n",
" magrittr::set_colnames(t(u), \n",
" stringr::str_extract(rownames(u), \"(?<=_)[:alnum:]+\")))\n",
"\n",
"class(pb)\n",
"\n",
"# Explore the different components of list\n",
"# str(pb)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c5ac2caa-4e86-4eb8-8d9b-1c37aabd55ca",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 50,
"id": "b8731abd-3352-4b74-aeb5-e4bf68478618",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" \n",
" bthalSITTA3 bthalSITTB3 bthalSITTC12 bthalSITTC3 bthalSITTD12 bthalSITTE10\n",
" 00-HSC-MPP2 52 4 54 17 11 204\n",
" 01-LyP2 130 20 45 0 5 105\n",
" 02-MEP2 33 4 63 1 5 54\n",
" 04-HSC-MPP1 217 5 43 59 48 645\n",
" 05-HSC-MPP3 904 125 322 179 222 2783\n",
" 06-MyP1 325 60 70 26 41 469\n",
" 08-EryP 159 11 189 0 17 75\n",
" 09-MyP2 139 9 88 10 28 426\n",
" 10-MPP-to-MEP 52 7 56 9 13 143\n",
" 11-HSC-MPP4 1 0 5 0 0 109\n",
" 12-MEP1 20 1 38 0 4 70\n",
" 13-MEP-cycle 97 3 182 1 7 53\n",
" 15-MyP4-(GMP) 248 49 269 0 24 429\n",
" 16-MyP3-(cycle) 639 18 311 17 42 731\n",
" 17-EoBasoMCP 33 2 40 0 5 89\n",
" 19-HSPC-cycle 144 10 108 17 14 190\n",
" 22-MkP 7 2 30 0 7 17\n",
" 24-MDP 20 1 57 0 3 71\n",
" \n",
" bthalSITTF10 bthalSITTG3 healthySITTC10 healthySITTD10\n",
" 00-HSC-MPP2 224 1 105 14\n",
" 01-LyP2 72 6 1 53\n",
" 02-MEP2 55 8 5 19\n",
" 04-HSC-MPP1 526 7 376 55\n",
" 05-HSC-MPP3 2484 42 1174 409\n",
" 06-MyP1 396 10 122 176\n",
" 08-EryP 72 2 0 127\n",
" 09-MyP2 455 25 101 242\n",
" 10-MPP-to-MEP 171 5 56 29\n",
" 11-HSC-MPP4 75 0 9 3\n",
" 12-MEP1 44 1 1 30\n",
" 13-MEP-cycle 66 6 2 68\n",
" 15-MyP4-(GMP) 423 29 0 390\n",
" 16-MyP3-(cycle) 913 5 78 584\n",
" 17-EoBasoMCP 71 2 0 59\n",
" 19-HSPC-cycle 265 13 33 118\n",
" 22-MkP 21 4 3 11\n",
" 24-MDP 119 0 0 98"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Print out the table of cells in each cluster-sample group\n",
"options(width = 100)\n",
"table(sce$cluster_id, sce$sample_id)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f8900798-126e-47a7-bba2-27bfd76539b1",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 51,
"id": "d2fa0395-a668-4c38-b1b4-11cd10eff016",
"metadata": {},
"outputs": [],
"source": [
"# Get sample names for each of the cell type clusters\n",
"\n",
"# prep. data.frame for plotting\n",
"get_sample_ids <- function(x){\n",
" pb[[x]] %>%\n",
" colnames()\n",
"}\n",
"\n",
"de_samples <- purrr::map(1:length(kids), get_sample_ids) %>%\n",
" unlist()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ccf0bdee-5d5d-48e5-94dd-af940ead5226",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 52,
"id": "299914a6-970d-4262-a993-dabd92444d2a",
"metadata": {},
"outputs": [],
"source": [
"# Get cluster IDs for each of the samples\n",
"\n",
"samples_list <- purrr::map(1:length(kids), get_sample_ids)\n",
"\n",
"get_cluster_ids <- function(x){\n",
" rep(names(pb)[x], \n",
" each = length(samples_list[[x]]))\n",
"}\n",
"\n",
"de_cluster_ids <- purrr::map(1:length(kids), get_cluster_ids) %>%\n",
" unlist()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0a900977-195d-4353-9c56-6a137fd9a36b",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 53,
"id": "2e76220f-efb2-4e04-a948-d323e8f4acc2",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[1m\u001b[22mJoining with `by = join_by(sample_id)`\n"
]
},
{
"data": {
"text/html": [
"\n",
"A data.frame: 6 × 3\n",
"\n",
"\t | cluster_id | sample_id | group_id |
\n",
"\t | <chr> | <chr> | <fct> |
\n",
"\n",
"\n",
"\t1 | 00-HSC-MPP2 | bthalSITTA3 | bthal |
\n",
"\t2 | 00-HSC-MPP2 | bthalSITTB3 | bthal |
\n",
"\t3 | 00-HSC-MPP2 | bthalSITTC12 | bthal |
\n",
"\t4 | 00-HSC-MPP2 | bthalSITTC3 | bthal |
\n",
"\t5 | 00-HSC-MPP2 | bthalSITTD12 | bthal |
\n",
"\t6 | 00-HSC-MPP2 | bthalSITTE10 | bthal |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 6 × 3\n",
"\\begin{tabular}{r|lll}\n",
" & cluster\\_id & sample\\_id & group\\_id\\\\\n",
" & & & \\\\\n",
"\\hline\n",
"\t1 & 00-HSC-MPP2 & bthalSITTA3 & bthal\\\\\n",
"\t2 & 00-HSC-MPP2 & bthalSITTB3 & bthal\\\\\n",
"\t3 & 00-HSC-MPP2 & bthalSITTC12 & bthal\\\\\n",
"\t4 & 00-HSC-MPP2 & bthalSITTC3 & bthal\\\\\n",
"\t5 & 00-HSC-MPP2 & bthalSITTD12 & bthal\\\\\n",
"\t6 & 00-HSC-MPP2 & bthalSITTE10 & bthal\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 6 × 3\n",
"\n",
"| | cluster_id <chr> | sample_id <chr> | group_id <fct> |\n",
"|---|---|---|---|\n",
"| 1 | 00-HSC-MPP2 | bthalSITTA3 | bthal |\n",
"| 2 | 00-HSC-MPP2 | bthalSITTB3 | bthal |\n",
"| 3 | 00-HSC-MPP2 | bthalSITTC12 | bthal |\n",
"| 4 | 00-HSC-MPP2 | bthalSITTC3 | bthal |\n",
"| 5 | 00-HSC-MPP2 | bthalSITTD12 | bthal |\n",
"| 6 | 00-HSC-MPP2 | bthalSITTE10 | bthal |\n",
"\n"
],
"text/plain": [
" cluster_id sample_id group_id\n",
"1 00-HSC-MPP2 bthalSITTA3 bthal \n",
"2 00-HSC-MPP2 bthalSITTB3 bthal \n",
"3 00-HSC-MPP2 bthalSITTC12 bthal \n",
"4 00-HSC-MPP2 bthalSITTC3 bthal \n",
"5 00-HSC-MPP2 bthalSITTD12 bthal \n",
"6 00-HSC-MPP2 bthalSITTE10 bthal "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Create a data frame with the sample IDs, cluster IDs and condition\n",
"\n",
"gg_df <- data.frame(cluster_id = de_cluster_ids,\n",
" sample_id = de_samples)\n",
"\n",
"gg_df <- left_join(gg_df, ei[, c(\"sample_id\", \"group_id\")]) \n",
"\n",
"\n",
"metadata <- gg_df %>%\n",
" dplyr::select(cluster_id, sample_id, group_id) \n",
" \n",
"head(metadata)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6339be1a-5c63-4cd9-9f92-41ad98b45f4a",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 54,
"id": "97a8d32d-1a8e-4f43-9f68-bb3408408804",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- '00-HSC-MPP2'
- '01-LyP2'
- '02-MEP2'
- '04-HSC-MPP1'
- '05-HSC-MPP3'
- '06-MyP1'
- '08-EryP'
- '09-MyP2'
- '10-MPP-to-MEP'
- '11-HSC-MPP4'
- '12-MEP1'
- '13-MEP-cycle'
- '15-MyP4-(GMP)'
- '16-MyP3-(cycle)'
- '17-EoBasoMCP'
- '19-HSPC-cycle'
- '22-MkP'
- '24-MDP'
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item '00-HSC-MPP2'\n",
"\\item '01-LyP2'\n",
"\\item '02-MEP2'\n",
"\\item '04-HSC-MPP1'\n",
"\\item '05-HSC-MPP3'\n",
"\\item '06-MyP1'\n",
"\\item '08-EryP'\n",
"\\item '09-MyP2'\n",
"\\item '10-MPP-to-MEP'\n",
"\\item '11-HSC-MPP4'\n",
"\\item '12-MEP1'\n",
"\\item '13-MEP-cycle'\n",
"\\item '15-MyP4-(GMP)'\n",
"\\item '16-MyP3-(cycle)'\n",
"\\item '17-EoBasoMCP'\n",
"\\item '19-HSPC-cycle'\n",
"\\item '22-MkP'\n",
"\\item '24-MDP'\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. '00-HSC-MPP2'\n",
"2. '01-LyP2'\n",
"3. '02-MEP2'\n",
"4. '04-HSC-MPP1'\n",
"5. '05-HSC-MPP3'\n",
"6. '06-MyP1'\n",
"7. '08-EryP'\n",
"8. '09-MyP2'\n",
"9. '10-MPP-to-MEP'\n",
"10. '11-HSC-MPP4'\n",
"11. '12-MEP1'\n",
"12. '13-MEP-cycle'\n",
"13. '15-MyP4-(GMP)'\n",
"14. '16-MyP3-(cycle)'\n",
"15. '17-EoBasoMCP'\n",
"16. '19-HSPC-cycle'\n",
"17. '22-MkP'\n",
"18. '24-MDP'\n",
"\n",
"\n"
],
"text/plain": [
" [1] \"00-HSC-MPP2\" \"01-LyP2\" \"02-MEP2\" \"04-HSC-MPP1\" \"05-HSC-MPP3\" \n",
" [6] \"06-MyP1\" \"08-EryP\" \"09-MyP2\" \"10-MPP-to-MEP\" \"11-HSC-MPP4\" \n",
"[11] \"12-MEP1\" \"13-MEP-cycle\" \"15-MyP4-(GMP)\" \"16-MyP3-(cycle)\" \"17-EoBasoMCP\" \n",
"[16] \"19-HSPC-cycle\" \"22-MkP\" \"24-MDP\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Generate vector of cluster IDs\n",
"clusters <- levels(as.factor(metadata$cluster_id))\n",
"clusters"
]
},
{
"cell_type": "markdown",
"id": "ce59e4bc-4dfe-4b5c-b559-3adf7d880ac3",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "8937a1af-7e34-427a-96d3-8f14e64b235a",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"'character'"
],
"text/latex": [
"'character'"
],
"text/markdown": [
"'character'"
],
"text/plain": [
"[1] \"character\""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"type(clusters)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e4e218ec-8c9e-4679-92a6-27bc2b2231ba",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 56,
"id": "2799e173-bf87-4970-ac6e-293c31399be2",
"metadata": {},
"outputs": [],
"source": [
"clusters <- c('02-MEP2', '04-HSC-MPP1', '05-HSC-MPP3','08-EryP','10-MPP-to-MEP','12-MEP1')"
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "abb3001c-ccc2-4979-b2b5-5789b5bdb7fa",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- '02-MEP2'
- '04-HSC-MPP1'
- '05-HSC-MPP3'
- '08-EryP'
- '10-MPP-to-MEP'
- '12-MEP1'
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item '02-MEP2'\n",
"\\item '04-HSC-MPP1'\n",
"\\item '05-HSC-MPP3'\n",
"\\item '08-EryP'\n",
"\\item '10-MPP-to-MEP'\n",
"\\item '12-MEP1'\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. '02-MEP2'\n",
"2. '04-HSC-MPP1'\n",
"3. '05-HSC-MPP3'\n",
"4. '08-EryP'\n",
"5. '10-MPP-to-MEP'\n",
"6. '12-MEP1'\n",
"\n",
"\n"
],
"text/plain": [
"[1] \"02-MEP2\" \"04-HSC-MPP1\" \"05-HSC-MPP3\" \"08-EryP\" \"10-MPP-to-MEP\" \"12-MEP1\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"clusters"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8257c501-6889-4083-a0df-8dcf0b53f210",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "f2e32fb3-b584-4c88-a985-cbc04f7e5422",
"metadata": {},
"source": [
"#### Run DEx comparisons\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "83787b1f-0fc3-4fea-b0d3-93e390781c58",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1] \"2024-03-05 11:06:47 GMT\""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"02-MEP2\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 92 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"04-HSC-MPP1\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 30 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"05-HSC-MPP3\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 68 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"08-EryP\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 2826 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"10-MPP-to-MEP\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 10 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"12-MEP1\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 602 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"data": {
"text/html": [
"\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_02-MEP2_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_04-HSC-MPP1_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_05-HSC-MPP3_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_08-EryP_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_10-MPP-to-MEP_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_12-MEP1_bthal_vs_healthy_top20_DE_genes.png'
\n",
"
\n"
],
"text/latex": [
"\\begin{enumerate}\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C10\\_cluster\\_02-MEP2\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C10\\_cluster\\_04-HSC-MPP1\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C10\\_cluster\\_05-HSC-MPP3\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C10\\_cluster\\_08-EryP\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C10\\_cluster\\_10-MPP-to-MEP\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C10\\_cluster\\_12-MEP1\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\end{enumerate}\n"
],
"text/markdown": [
"1. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_02-MEP2_bthal_vs_healthy_top20_DE_genes.png'\n",
"2. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_04-HSC-MPP1_bthal_vs_healthy_top20_DE_genes.png'\n",
"3. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_05-HSC-MPP3_bthal_vs_healthy_top20_DE_genes.png'\n",
"4. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_08-EryP_bthal_vs_healthy_top20_DE_genes.png'\n",
"5. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_10-MPP-to-MEP_bthal_vs_healthy_top20_DE_genes.png'\n",
"6. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_12-MEP1_bthal_vs_healthy_top20_DE_genes.png'\n",
"\n",
"\n"
],
"text/plain": [
"[[1]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_02-MEP2_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[2]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_04-HSC-MPP1_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[3]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_05-HSC-MPP3_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[4]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_08-EryP_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[5]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_10-MPP-to-MEP_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[6]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_cluster_12-MEP1_bthal_vs_healthy_top20_DE_genes.png\"\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"[1] \"2024-03-05 11:08:01 GMT\""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Sys.time()\n",
"\n",
"# Run the script on all clusters comparing bthal condition relative to healthy condition\n",
"purrr::map(1:length(clusters), get_dds_resultsAvsB, A = 1, B = 2)\n",
"\n",
"Sys.time()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "124bfa42-7d52-41cb-af3b-96c3dd28c973",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "54048a16-e0a7-492e-81ba-626a598979ec",
"metadata": {},
"source": [
"### CB10 lineages\n",
"---\n",
"\n",
"HSC/MPP, MDP, late MyP, early MEMBP, late MEMBP, primed MPP (6 lists)"
]
},
{
"cell_type": "code",
"execution_count": 63,
"id": "e1c0ddd8-7652-42c6-bc75-66ce606492eb",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- late-MyP
- HSC-MPP
- primed-MPP
- early-MEMBP
- late-MEMBP
- MDP
- early-MyP
- EryP-MyP-mix
- LyP
\n",
"\n",
"\n",
"\t\n",
"\t\tLevels:\n",
"\t
\n",
"\t\n",
"\t- 'EryP-MyP-mix'
- 'HSC-MPP'
- 'LyP'
- 'MDP'
- 'early-MEMBP'
- 'early-MyP'
- 'late-MEMBP'
- 'late-MyP'
- 'primed-MPP'
\n",
" "
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item late-MyP\n",
"\\item HSC-MPP\n",
"\\item primed-MPP\n",
"\\item early-MEMBP\n",
"\\item late-MEMBP\n",
"\\item MDP\n",
"\\item early-MyP\n",
"\\item EryP-MyP-mix\n",
"\\item LyP\n",
"\\end{enumerate*}\n",
"\n",
"\\emph{Levels}: \\begin{enumerate*}\n",
"\\item 'EryP-MyP-mix'\n",
"\\item 'HSC-MPP'\n",
"\\item 'LyP'\n",
"\\item 'MDP'\n",
"\\item 'early-MEMBP'\n",
"\\item 'early-MyP'\n",
"\\item 'late-MEMBP'\n",
"\\item 'late-MyP'\n",
"\\item 'primed-MPP'\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. late-MyP\n",
"2. HSC-MPP\n",
"3. primed-MPP\n",
"4. early-MEMBP\n",
"5. late-MEMBP\n",
"6. MDP\n",
"7. early-MyP\n",
"8. EryP-MyP-mix\n",
"9. LyP\n",
"\n",
"\n",
"\n",
"**Levels**: 1. 'EryP-MyP-mix'\n",
"2. 'HSC-MPP'\n",
"3. 'LyP'\n",
"4. 'MDP'\n",
"5. 'early-MEMBP'\n",
"6. 'early-MyP'\n",
"7. 'late-MEMBP'\n",
"8. 'late-MyP'\n",
"9. 'primed-MPP'\n",
"\n",
"\n"
],
"text/plain": [
"[1] late-MyP HSC-MPP primed-MPP early-MEMBP late-MEMBP MDP early-MyP \n",
"[8] EryP-MyP-mix LyP \n",
"Levels: EryP-MyP-mix HSC-MPP LyP MDP early-MEMBP early-MyP late-MEMBP late-MyP primed-MPP"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"unique( colData(sce)$lineage_nicole )"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "35cc33e4-fc7d-4a1e-a89f-c7fff50e872e",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "3930a461-4662-4c62-8b9b-aa2978bf4d90",
"metadata": {},
"source": [
"**Set cluster_id here for ease of code re-use/templating**"
]
},
{
"cell_type": "code",
"execution_count": 64,
"id": "74a93836-60a7-4a03-9436-c2e0678d0ba1",
"metadata": {},
"outputs": [],
"source": [
"sce$cluster_id <- sce$lineage_nicole"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2ce0df62-0687-4cee-8953-fc66e63f1b94",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 65,
"id": "284ee094-3b6b-4144-9cee-23289a3d4f53",
"metadata": {},
"outputs": [],
"source": [
"basename <- 'bthalcombo_v6b_C10_lineage'"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "903f884c-955a-444a-bbce-e2de0e74b38b",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "ef85edbd-1c70-4d19-a83e-3afd8151406f",
"metadata": {},
"source": [
"---\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 66,
"id": "77623a6c-4854-4d29-b67c-adf2edf51e9e",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"- EryP-MyP-mix
- 'EryP-MyP-mix'
- HSC-MPP
- 'HSC-MPP'
- LyP
- 'LyP'
- MDP
- 'MDP'
- early-MEMBP
- 'early-MEMBP'
- early-MyP
- 'early-MyP'
- late-MEMBP
- 'late-MEMBP'
- late-MyP
- 'late-MyP'
- primed-MPP
- 'primed-MPP'
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[EryP-MyP-mix] 'EryP-MyP-mix'\n",
"\\item[HSC-MPP] 'HSC-MPP'\n",
"\\item[LyP] 'LyP'\n",
"\\item[MDP] 'MDP'\n",
"\\item[early-MEMBP] 'early-MEMBP'\n",
"\\item[early-MyP] 'early-MyP'\n",
"\\item[late-MEMBP] 'late-MEMBP'\n",
"\\item[late-MyP] 'late-MyP'\n",
"\\item[primed-MPP] 'primed-MPP'\n",
"\\end{description*}\n"
],
"text/markdown": [
"EryP-MyP-mix\n",
": 'EryP-MyP-mix'HSC-MPP\n",
": 'HSC-MPP'LyP\n",
": 'LyP'MDP\n",
": 'MDP'early-MEMBP\n",
": 'early-MEMBP'early-MyP\n",
": 'early-MyP'late-MEMBP\n",
": 'late-MEMBP'late-MyP\n",
": 'late-MyP'primed-MPP\n",
": 'primed-MPP'\n",
"\n"
],
"text/plain": [
" EryP-MyP-mix HSC-MPP LyP MDP early-MEMBP early-MyP \n",
"\"EryP-MyP-mix\" \"HSC-MPP\" \"LyP\" \"MDP\" \"early-MEMBP\" \"early-MyP\" \n",
" late-MEMBP late-MyP primed-MPP \n",
" \"late-MEMBP\" \"late-MyP\" \"primed-MPP\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Named vector of cluster names\n",
"kids <- purrr::set_names(levels(sce$cluster_id))\n",
"kids"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7ce55a0d-1ec2-4c3e-b48a-b3ea734a38b0",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 67,
"id": "efdf0f4a-395a-44a6-affc-0c3dd6845ebc",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"9"
],
"text/latex": [
"9"
],
"text/markdown": [
"9"
],
"text/plain": [
"[1] 9"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Total number of clusters\n",
"nk <- length(kids)\n",
"nk"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fbc8c78a-b6b1-435f-a42b-fac5c351df55",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 68,
"id": "4d6c877b-7da5-4865-994d-ee2dcee40421",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"- bthalSITTA3
- 'bthalSITTA3'
- bthalSITTB3
- 'bthalSITTB3'
- bthalSITTC12
- 'bthalSITTC12'
- bthalSITTC3
- 'bthalSITTC3'
- bthalSITTD12
- 'bthalSITTD12'
- bthalSITTE10
- 'bthalSITTE10'
- bthalSITTF10
- 'bthalSITTF10'
- bthalSITTG3
- 'bthalSITTG3'
- healthySITTC10
- 'healthySITTC10'
- healthySITTD10
- 'healthySITTD10'
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[bthalSITTA3] 'bthalSITTA3'\n",
"\\item[bthalSITTB3] 'bthalSITTB3'\n",
"\\item[bthalSITTC12] 'bthalSITTC12'\n",
"\\item[bthalSITTC3] 'bthalSITTC3'\n",
"\\item[bthalSITTD12] 'bthalSITTD12'\n",
"\\item[bthalSITTE10] 'bthalSITTE10'\n",
"\\item[bthalSITTF10] 'bthalSITTF10'\n",
"\\item[bthalSITTG3] 'bthalSITTG3'\n",
"\\item[healthySITTC10] 'healthySITTC10'\n",
"\\item[healthySITTD10] 'healthySITTD10'\n",
"\\end{description*}\n"
],
"text/markdown": [
"bthalSITTA3\n",
": 'bthalSITTA3'bthalSITTB3\n",
": 'bthalSITTB3'bthalSITTC12\n",
": 'bthalSITTC12'bthalSITTC3\n",
": 'bthalSITTC3'bthalSITTD12\n",
": 'bthalSITTD12'bthalSITTE10\n",
": 'bthalSITTE10'bthalSITTF10\n",
": 'bthalSITTF10'bthalSITTG3\n",
": 'bthalSITTG3'healthySITTC10\n",
": 'healthySITTC10'healthySITTD10\n",
": 'healthySITTD10'\n",
"\n"
],
"text/plain": [
" bthalSITTA3 bthalSITTB3 bthalSITTC12 bthalSITTC3 bthalSITTD12 \n",
" \"bthalSITTA3\" \"bthalSITTB3\" \"bthalSITTC12\" \"bthalSITTC3\" \"bthalSITTD12\" \n",
" bthalSITTE10 bthalSITTF10 bthalSITTG3 healthySITTC10 healthySITTD10 \n",
" \"bthalSITTE10\" \"bthalSITTF10\" \"bthalSITTG3\" \"healthySITTC10\" \"healthySITTD10\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Named vector of sample names\n",
"sids <- purrr::set_names(levels(sce$sample_id))\n",
"sids"
]
},
{
"cell_type": "code",
"execution_count": 69,
"id": "0be3182f-2c50-416d-a4de-078fe6bd6950",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"10"
],
"text/latex": [
"10"
],
"text/markdown": [
"10"
],
"text/plain": [
"[1] 10"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Total number of samples \n",
"ns <- length(sids)\n",
"ns"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "23e32600-2a31-4a64-8539-1948d9558b6d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 70,
"id": "cdaf3466-434b-4013-8ec4-f3dbe59e60e5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\n",
" bthalSITTA3 bthalSITTB3 bthalSITTC12 bthalSITTC3 bthalSITTD12 bthalSITTE10 \n",
" 3220 331 1970 336 496 6663 \n",
" bthalSITTF10 bthalSITTG3 healthySITTC10 healthySITTD10 \n",
" 6452 166 2066 2485 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"A data.frame: 10 × 16\n",
"\n",
"\tdonor | library | xample | population | condition | v6_leiden.20.0_annot_CB10 | v6_leiden.20.0_annot_CB45 | lineage.annot | lineage.andy | clusters_nicole | lineage_nicole | clusters_andy | lineage_andy | group_id | sample_id | n_cells |
\n",
"\t<fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <dbl> |
\n",
"\n",
"\n",
"\tbthal007 | SITTA3 | bthal007_BM_scr_CD34 | CD34 | bthal | 19_HSPC cycle | Pro-B Cycling | EryP/MyP mix | Bcell Precursor | 19-HSPC-cycle | EryP-MyP-mix | Pro-B-Cycling | Bcell-Precursor | bthal | bthalSITTA3 | 3220 |
\n",
"\tbthal008 | SITTB3 | bthal008_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTB3 | 331 |
\n",
"\tbthal005 | SITTC12 | bthal005_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTC12 | 1970 |
\n",
"\tbthal007 | SITTC3 | bthal007_BM_scr_CD38neg | CD34_CD38neg | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTC3 | 336 |
\n",
"\tbthal006 | SITTD12 | bthal006_BM_scr_CD34 | CD34 | bthal | 05_HSC/MPP3 | HSC | HSC/MPP | HSC | 05-HSC-MPP3 | HSC-MPP | HSC | HSC | bthal | bthalSITTD12 | 496 |
\n",
"\tbthal010 | SITTE10 | bthal010_BM_scr_HSC | HSCMPP | bthal | 00_HSC/MPP2 | HSC | HSC/MPP | HSC | 00-HSC-MPP2 | HSC-MPP | HSC | HSC | bthal | bthalSITTE10 | 6663 |
\n",
"\tbthal009 | SITTF10 | bthal009_BM_scr_HSC | HSCMPP | bthal | 04_HSC/MPP1 | HSC | HSC/MPP | HSC | 04-HSC-MPP1 | HSC-MPP | HSC | HSC | bthal | bthalSITTF10 | 6452 |
\n",
"\tbthal008 | SITTG3 | bthal008_BM_scr_CD34 | CD34 | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTG3 | 166 |
\n",
"\thealthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 05_HSC/MPP3 | MPP-MkEry | HSC/MPP | MPP-MkEry | 05-HSC-MPP3 | HSC-MPP | MPP-MkEry | MPP-MkEry | healthy | healthySITTC10 | 2066 |
\n",
"\thealthy_CTRL | SITTD10 | healthy_CTRL_CD34 | CD34 | healthy | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | healthy | healthySITTD10 | 2485 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 10 × 16\n",
"\\begin{tabular}{llllllllllllllll}\n",
" donor & library & xample & population & condition & v6\\_leiden.20.0\\_annot\\_CB10 & v6\\_leiden.20.0\\_annot\\_CB45 & lineage.annot & lineage.andy & clusters\\_nicole & lineage\\_nicole & clusters\\_andy & lineage\\_andy & group\\_id & sample\\_id & n\\_cells\\\\\n",
" & & & & & & & & & & & & & & & \\\\\n",
"\\hline\n",
"\t bthal007 & SITTA3 & bthal007\\_BM\\_scr\\_CD34 & CD34 & bthal & 19\\_HSPC cycle & Pro-B Cycling & EryP/MyP mix & Bcell Precursor & 19-HSPC-cycle & EryP-MyP-mix & Pro-B-Cycling & Bcell-Precursor & bthal & bthalSITTA3 & 3220\\\\\n",
"\t bthal008 & SITTB3 & bthal008\\_BM\\_scr\\_CD34 & CD34 & bthal & 15\\_MyP4 (GMP) & GMP-Mono & late MyP & GMP & 15-MyP4-(GMP) & late-MyP & GMP-Mono & GMP & bthal & bthalSITTB3 & 331\\\\\n",
"\t bthal005 & SITTC12 & bthal005\\_BM\\_scr\\_CD34 & CD34 & bthal & 15\\_MyP4 (GMP) & GMP-Mono & late MyP & GMP & 15-MyP4-(GMP) & late-MyP & GMP-Mono & GMP & bthal & bthalSITTC12 & 1970\\\\\n",
"\t bthal007 & SITTC3 & bthal007\\_BM\\_scr\\_CD38neg & CD34\\_CD38neg & bthal & 09\\_MyP2 & Early GMP & early MyP & GMP & 09-MyP2 & early-MyP & Early-GMP & GMP & bthal & bthalSITTC3 & 336\\\\\n",
"\t bthal006 & SITTD12 & bthal006\\_BM\\_scr\\_CD34 & CD34 & bthal & 05\\_HSC/MPP3 & HSC & HSC/MPP & HSC & 05-HSC-MPP3 & HSC-MPP & HSC & HSC & bthal & bthalSITTD12 & 496\\\\\n",
"\t bthal010 & SITTE10 & bthal010\\_BM\\_scr\\_HSC & HSCMPP & bthal & 00\\_HSC/MPP2 & HSC & HSC/MPP & HSC & 00-HSC-MPP2 & HSC-MPP & HSC & HSC & bthal & bthalSITTE10 & 6663\\\\\n",
"\t bthal009 & SITTF10 & bthal009\\_BM\\_scr\\_HSC & HSCMPP & bthal & 04\\_HSC/MPP1 & HSC & HSC/MPP & HSC & 04-HSC-MPP1 & HSC-MPP & HSC & HSC & bthal & bthalSITTF10 & 6452\\\\\n",
"\t bthal008 & SITTG3 & bthal008\\_BM\\_scr\\_CD34 & CD34 & bthal & 09\\_MyP2 & Early GMP & early MyP & GMP & 09-MyP2 & early-MyP & Early-GMP & GMP & bthal & bthalSITTG3 & 166\\\\\n",
"\t healthy\\_CTRL & SITTC10 & healthy\\_CTRL\\_HSC & HSCMPP & healthy & 05\\_HSC/MPP3 & MPP-MkEry & HSC/MPP & MPP-MkEry & 05-HSC-MPP3 & HSC-MPP & MPP-MkEry & MPP-MkEry & healthy & healthySITTC10 & 2066\\\\\n",
"\t healthy\\_CTRL & SITTD10 & healthy\\_CTRL\\_CD34 & CD34 & healthy & 09\\_MyP2 & Early GMP & early MyP & GMP & 09-MyP2 & early-MyP & Early-GMP & GMP & healthy & healthySITTD10 & 2485\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 10 × 16\n",
"\n",
"| donor <fct> | library <fct> | xample <fct> | population <fct> | condition <fct> | v6_leiden.20.0_annot_CB10 <fct> | v6_leiden.20.0_annot_CB45 <fct> | lineage.annot <fct> | lineage.andy <fct> | clusters_nicole <fct> | lineage_nicole <fct> | clusters_andy <fct> | lineage_andy <fct> | group_id <fct> | sample_id <fct> | n_cells <dbl> |\n",
"|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
"| bthal007 | SITTA3 | bthal007_BM_scr_CD34 | CD34 | bthal | 19_HSPC cycle | Pro-B Cycling | EryP/MyP mix | Bcell Precursor | 19-HSPC-cycle | EryP-MyP-mix | Pro-B-Cycling | Bcell-Precursor | bthal | bthalSITTA3 | 3220 |\n",
"| bthal008 | SITTB3 | bthal008_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTB3 | 331 |\n",
"| bthal005 | SITTC12 | bthal005_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTC12 | 1970 |\n",
"| bthal007 | SITTC3 | bthal007_BM_scr_CD38neg | CD34_CD38neg | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTC3 | 336 |\n",
"| bthal006 | SITTD12 | bthal006_BM_scr_CD34 | CD34 | bthal | 05_HSC/MPP3 | HSC | HSC/MPP | HSC | 05-HSC-MPP3 | HSC-MPP | HSC | HSC | bthal | bthalSITTD12 | 496 |\n",
"| bthal010 | SITTE10 | bthal010_BM_scr_HSC | HSCMPP | bthal | 00_HSC/MPP2 | HSC | HSC/MPP | HSC | 00-HSC-MPP2 | HSC-MPP | HSC | HSC | bthal | bthalSITTE10 | 6663 |\n",
"| bthal009 | SITTF10 | bthal009_BM_scr_HSC | HSCMPP | bthal | 04_HSC/MPP1 | HSC | HSC/MPP | HSC | 04-HSC-MPP1 | HSC-MPP | HSC | HSC | bthal | bthalSITTF10 | 6452 |\n",
"| bthal008 | SITTG3 | bthal008_BM_scr_CD34 | CD34 | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTG3 | 166 |\n",
"| healthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 05_HSC/MPP3 | MPP-MkEry | HSC/MPP | MPP-MkEry | 05-HSC-MPP3 | HSC-MPP | MPP-MkEry | MPP-MkEry | healthy | healthySITTC10 | 2066 |\n",
"| healthy_CTRL | SITTD10 | healthy_CTRL_CD34 | CD34 | healthy | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | healthy | healthySITTD10 | 2485 |\n",
"\n"
],
"text/plain": [
" donor library xample population condition v6_leiden.20.0_annot_CB10\n",
"1 bthal007 SITTA3 bthal007_BM_scr_CD34 CD34 bthal 19_HSPC cycle \n",
"2 bthal008 SITTB3 bthal008_BM_scr_CD34 CD34 bthal 15_MyP4 (GMP) \n",
"3 bthal005 SITTC12 bthal005_BM_scr_CD34 CD34 bthal 15_MyP4 (GMP) \n",
"4 bthal007 SITTC3 bthal007_BM_scr_CD38neg CD34_CD38neg bthal 09_MyP2 \n",
"5 bthal006 SITTD12 bthal006_BM_scr_CD34 CD34 bthal 05_HSC/MPP3 \n",
"6 bthal010 SITTE10 bthal010_BM_scr_HSC HSCMPP bthal 00_HSC/MPP2 \n",
"7 bthal009 SITTF10 bthal009_BM_scr_HSC HSCMPP bthal 04_HSC/MPP1 \n",
"8 bthal008 SITTG3 bthal008_BM_scr_CD34 CD34 bthal 09_MyP2 \n",
"9 healthy_CTRL SITTC10 healthy_CTRL_HSC HSCMPP healthy 05_HSC/MPP3 \n",
"10 healthy_CTRL SITTD10 healthy_CTRL_CD34 CD34 healthy 09_MyP2 \n",
" v6_leiden.20.0_annot_CB45 lineage.annot lineage.andy clusters_nicole lineage_nicole\n",
"1 Pro-B Cycling EryP/MyP mix Bcell Precursor 19-HSPC-cycle EryP-MyP-mix \n",
"2 GMP-Mono late MyP GMP 15-MyP4-(GMP) late-MyP \n",
"3 GMP-Mono late MyP GMP 15-MyP4-(GMP) late-MyP \n",
"4 Early GMP early MyP GMP 09-MyP2 early-MyP \n",
"5 HSC HSC/MPP HSC 05-HSC-MPP3 HSC-MPP \n",
"6 HSC HSC/MPP HSC 00-HSC-MPP2 HSC-MPP \n",
"7 HSC HSC/MPP HSC 04-HSC-MPP1 HSC-MPP \n",
"8 Early GMP early MyP GMP 09-MyP2 early-MyP \n",
"9 MPP-MkEry HSC/MPP MPP-MkEry 05-HSC-MPP3 HSC-MPP \n",
"10 Early GMP early MyP GMP 09-MyP2 early-MyP \n",
" clusters_andy lineage_andy group_id sample_id n_cells\n",
"1 Pro-B-Cycling Bcell-Precursor bthal bthalSITTA3 3220 \n",
"2 GMP-Mono GMP bthal bthalSITTB3 331 \n",
"3 GMP-Mono GMP bthal bthalSITTC12 1970 \n",
"4 Early-GMP GMP bthal bthalSITTC3 336 \n",
"5 HSC HSC bthal bthalSITTD12 496 \n",
"6 HSC HSC bthal bthalSITTE10 6663 \n",
"7 HSC HSC bthal bthalSITTF10 6452 \n",
"8 Early-GMP GMP bthal bthalSITTG3 166 \n",
"9 MPP-MkEry MPP-MkEry healthy healthySITTC10 2066 \n",
"10 Early-GMP GMP healthy healthySITTD10 2485 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Generate sample level metadata\n",
"\n",
"## Determine the number of cells per sample\n",
"table(sce$sample_id)\n",
"\n",
"## Turn named vector into a numeric vector of number of cells per sample\n",
"n_cells <- as.numeric(table(sce$sample_id))\n",
"\n",
"## Determine how to reoder the samples (rows) of the metadata to match the order of sample names in sids vector\n",
"m <- match(sids, sce$sample_id)\n",
"\n",
"## Create the sample level metadata by combining the reordered metadata with the number of cells corresponding to each sample.\n",
"ei <- data.frame(colData(sce)[m, ], \n",
" n_cells, row.names = NULL) %>% \n",
" select(-\"cluster_id\")\n",
"ei"
]
},
{
"cell_type": "code",
"execution_count": 71,
"id": "f32822a1-ff78-4cf7-ac42-3352242c8394",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- 20098
- 24185
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 20098\n",
"\\item 24185\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 20098\n",
"2. 24185\n",
"\n",
"\n"
],
"text/plain": [
"[1] 20098 24185"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dim(sce)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "92748bc6-8c1c-4c74-9fd7-19f84dda86d5",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "3c4aac99-3158-4eff-be06-ce0b69a718dc",
"metadata": {},
"source": [
"---\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "16ea5f31-66d8-41c6-b838-bec905247e8e",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "6bf9b543-7e56-4c7c-9735-8cac1fd4c464",
"metadata": {},
"source": [
"#### Count aggregation to sample level\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 72,
"id": "02b88826-2ba6-4191-8b46-3ed314f42299",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"'dgCMatrix'"
],
"text/latex": [
"'dgCMatrix'"
],
"text/markdown": [
"'dgCMatrix'"
],
"text/plain": [
"[1] \"dgCMatrix\"\n",
"attr(,\"package\")\n",
"[1] \"Matrix\""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"- 86
- 20098
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 86\n",
"\\item 20098\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 86\n",
"2. 20098\n",
"\n",
"\n"
],
"text/plain": [
"[1] 86 20098"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Aggregate the counts per sample_id and cluster_id\n",
"\n",
"# Subset metadata to only include the cluster and sample IDs to aggregate across\n",
"groups <- colData(sce)[, c(\"cluster_id\", \"sample_id\")]\n",
"\n",
"# Aggregate across cluster-sample groups\n",
"pb <- aggregate.Matrix(t(counts(sce)), \n",
" groupings = groups, fun = \"sum\") \n",
"\n",
"class(pb)\n",
"\n",
"dim(pb)\n",
"\n",
"# pb[1:6, 1:6]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2fb5d2a2-04d0-4354-b5d4-f0cf152c6d65",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 73,
"id": "efb48069-2c2a-4860-b9d8-0b85a1243939",
"metadata": {},
"outputs": [],
"source": [
"# Not every cluster is present in all samples; create a vector that represents how to split samples\n",
"splitf <- sapply(stringr::str_split(rownames(pb), \n",
" pattern = \"_\",\n",
" n = 2\n",
" ), \n",
" `[`, 1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "34282151-fa99-4c8d-b0fb-f67b666cad35",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 74,
"id": "090f69ce-3c6e-4488-9e4f-125d90f73323",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"'list'"
],
"text/latex": [
"'list'"
],
"text/markdown": [
"'list'"
],
"text/plain": [
"[1] \"list\""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Turn into a list and split the list into components for each cluster and transform, so rows are genes and columns are samples and make rownames as the sample IDs\n",
"pb <- split.data.frame(pb, \n",
" factor(splitf)) %>%\n",
" lapply(function(u) \n",
" magrittr::set_colnames(t(u), \n",
" stringr::str_extract(rownames(u), \"(?<=_)[:alnum:]+\")))\n",
"\n",
"class(pb)\n",
"\n",
"# Explore the different components of list\n",
"# str(pb)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e030654f-f9ce-4307-a838-238cdb24968f",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 75,
"id": "12f99b48-9d8e-46cf-b2d4-9b0080e9b16e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" \n",
" bthalSITTA3 bthalSITTB3 bthalSITTC12 bthalSITTC3 bthalSITTD12 bthalSITTE10\n",
" EryP-MyP-mix 144 10 108 17 14 190\n",
" HSC-MPP 1174 134 424 255 281 3741\n",
" LyP 130 20 45 0 5 105\n",
" MDP 20 1 57 0 3 71\n",
" early-MEMBP 53 5 101 1 9 124\n",
" early-MyP 464 69 158 36 69 895\n",
" late-MEMBP 296 18 441 1 36 234\n",
" late-MyP 887 67 580 17 66 1160\n",
" primed-MPP 52 7 56 9 13 143\n",
" \n",
" bthalSITTF10 bthalSITTG3 healthySITTC10 healthySITTD10\n",
" EryP-MyP-mix 265 13 33 118\n",
" HSC-MPP 3309 50 1664 481\n",
" LyP 72 6 1 53\n",
" MDP 119 0 0 98\n",
" early-MEMBP 99 9 6 49\n",
" early-MyP 851 35 223 418\n",
" late-MEMBP 230 14 5 265\n",
" late-MyP 1336 34 78 974\n",
" primed-MPP 171 5 56 29"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Print out the table of cells in each cluster-sample group\n",
"options(width = 100)\n",
"table(sce$cluster_id, sce$sample_id)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "df40b5ce-3a5a-4870-af1c-c6bc0b8ad41d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 76,
"id": "dbfc508c-402d-452b-81c7-abd54864403e",
"metadata": {},
"outputs": [],
"source": [
"# Get sample names for each of the cell type clusters\n",
"\n",
"# prep. data.frame for plotting\n",
"get_sample_ids <- function(x){\n",
" pb[[x]] %>%\n",
" colnames()\n",
"}\n",
"\n",
"de_samples <- purrr::map(1:length(kids), get_sample_ids) %>%\n",
" unlist()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0ae2c926-82be-41d5-a07d-6efd7f34d88d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 77,
"id": "4e56a358-ba38-459a-869a-af4247a50af3",
"metadata": {},
"outputs": [],
"source": [
"# Get cluster IDs for each of the samples\n",
"\n",
"samples_list <- purrr::map(1:length(kids), get_sample_ids)\n",
"\n",
"get_cluster_ids <- function(x){\n",
" rep(names(pb)[x], \n",
" each = length(samples_list[[x]]))\n",
"}\n",
"\n",
"de_cluster_ids <- purrr::map(1:length(kids), get_cluster_ids) %>%\n",
" unlist()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "531fcf93-14aa-43db-ba21-3ab24f6eb739",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 78,
"id": "50e16788-ff12-4b2b-af58-1681a5c32dc6",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[1m\u001b[22mJoining with `by = join_by(sample_id)`\n"
]
},
{
"data": {
"text/html": [
"\n",
"A data.frame: 6 × 3\n",
"\n",
"\t | cluster_id | sample_id | group_id |
\n",
"\t | <chr> | <chr> | <fct> |
\n",
"\n",
"\n",
"\t1 | EryP-MyP-mix | bthalSITTA3 | bthal |
\n",
"\t2 | EryP-MyP-mix | bthalSITTB3 | bthal |
\n",
"\t3 | EryP-MyP-mix | bthalSITTC12 | bthal |
\n",
"\t4 | EryP-MyP-mix | bthalSITTC3 | bthal |
\n",
"\t5 | EryP-MyP-mix | bthalSITTD12 | bthal |
\n",
"\t6 | EryP-MyP-mix | bthalSITTE10 | bthal |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 6 × 3\n",
"\\begin{tabular}{r|lll}\n",
" & cluster\\_id & sample\\_id & group\\_id\\\\\n",
" & & & \\\\\n",
"\\hline\n",
"\t1 & EryP-MyP-mix & bthalSITTA3 & bthal\\\\\n",
"\t2 & EryP-MyP-mix & bthalSITTB3 & bthal\\\\\n",
"\t3 & EryP-MyP-mix & bthalSITTC12 & bthal\\\\\n",
"\t4 & EryP-MyP-mix & bthalSITTC3 & bthal\\\\\n",
"\t5 & EryP-MyP-mix & bthalSITTD12 & bthal\\\\\n",
"\t6 & EryP-MyP-mix & bthalSITTE10 & bthal\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 6 × 3\n",
"\n",
"| | cluster_id <chr> | sample_id <chr> | group_id <fct> |\n",
"|---|---|---|---|\n",
"| 1 | EryP-MyP-mix | bthalSITTA3 | bthal |\n",
"| 2 | EryP-MyP-mix | bthalSITTB3 | bthal |\n",
"| 3 | EryP-MyP-mix | bthalSITTC12 | bthal |\n",
"| 4 | EryP-MyP-mix | bthalSITTC3 | bthal |\n",
"| 5 | EryP-MyP-mix | bthalSITTD12 | bthal |\n",
"| 6 | EryP-MyP-mix | bthalSITTE10 | bthal |\n",
"\n"
],
"text/plain": [
" cluster_id sample_id group_id\n",
"1 EryP-MyP-mix bthalSITTA3 bthal \n",
"2 EryP-MyP-mix bthalSITTB3 bthal \n",
"3 EryP-MyP-mix bthalSITTC12 bthal \n",
"4 EryP-MyP-mix bthalSITTC3 bthal \n",
"5 EryP-MyP-mix bthalSITTD12 bthal \n",
"6 EryP-MyP-mix bthalSITTE10 bthal "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Create a data frame with the sample IDs, cluster IDs and condition\n",
"\n",
"gg_df <- data.frame(cluster_id = de_cluster_ids,\n",
" sample_id = de_samples)\n",
"\n",
"gg_df <- left_join(gg_df, ei[, c(\"sample_id\", \"group_id\")]) \n",
"\n",
"\n",
"metadata <- gg_df %>%\n",
" dplyr::select(cluster_id, sample_id, group_id) \n",
" \n",
"head( metadata )"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "64067a89-83d5-4186-9a68-2731f91fbbf6",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 79,
"id": "54a0a18a-6006-4dd6-be2f-1ca78b2b85b8",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- 'EryP-MyP-mix'
- 'HSC-MPP'
- 'LyP'
- 'MDP'
- 'early-MEMBP'
- 'early-MyP'
- 'late-MEMBP'
- 'late-MyP'
- 'primed-MPP'
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 'EryP-MyP-mix'\n",
"\\item 'HSC-MPP'\n",
"\\item 'LyP'\n",
"\\item 'MDP'\n",
"\\item 'early-MEMBP'\n",
"\\item 'early-MyP'\n",
"\\item 'late-MEMBP'\n",
"\\item 'late-MyP'\n",
"\\item 'primed-MPP'\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 'EryP-MyP-mix'\n",
"2. 'HSC-MPP'\n",
"3. 'LyP'\n",
"4. 'MDP'\n",
"5. 'early-MEMBP'\n",
"6. 'early-MyP'\n",
"7. 'late-MEMBP'\n",
"8. 'late-MyP'\n",
"9. 'primed-MPP'\n",
"\n",
"\n"
],
"text/plain": [
"[1] \"EryP-MyP-mix\" \"HSC-MPP\" \"LyP\" \"MDP\" \"early-MEMBP\" \"early-MyP\" \n",
"[7] \"late-MEMBP\" \"late-MyP\" \"primed-MPP\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Generate vector of cluster IDs\n",
"clusters <- levels(as.factor(metadata$cluster_id))\n",
"clusters"
]
},
{
"cell_type": "markdown",
"id": "54d103c1-443e-4c4a-b725-8e073fb8b923",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "08c0bc37-c576-412c-b18a-bff6581eb5ec",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 80,
"id": "bb77210c-f464-4519-a2c3-c8a386302f4d",
"metadata": {},
"outputs": [],
"source": [
"clusters <- c('HSC-MPP', 'primed-MPP', 'early-MEMBP', 'late-MEMBP', 'MDP', 'late-MyP')"
]
},
{
"cell_type": "code",
"execution_count": 81,
"id": "94392a38-0d4b-4685-9de7-87be39ec11a5",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- 'HSC-MPP'
- 'primed-MPP'
- 'early-MEMBP'
- 'late-MEMBP'
- 'MDP'
- 'late-MyP'
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 'HSC-MPP'\n",
"\\item 'primed-MPP'\n",
"\\item 'early-MEMBP'\n",
"\\item 'late-MEMBP'\n",
"\\item 'MDP'\n",
"\\item 'late-MyP'\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 'HSC-MPP'\n",
"2. 'primed-MPP'\n",
"3. 'early-MEMBP'\n",
"4. 'late-MEMBP'\n",
"5. 'MDP'\n",
"6. 'late-MyP'\n",
"\n",
"\n"
],
"text/plain": [
"[1] \"HSC-MPP\" \"primed-MPP\" \"early-MEMBP\" \"late-MEMBP\" \"MDP\" \"late-MyP\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"clusters"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6ceb2e64-0142-47cc-a95d-4f6460b80508",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "b2fe72a0-732f-4732-8fde-f4186025e95d",
"metadata": {},
"source": [
"#### Run DEx comparisons\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 82,
"id": "3db2c8bf-e587-42ca-be22-78ca71618b09",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1] \"2024-03-05 11:27:53 GMT\""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"HSC-MPP\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 79 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"primed-MPP\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 10 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"early-MEMBP\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 299 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"late-MEMBP\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 1423 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"MDP\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"-- note: fitType='parametric', but the dispersion trend was not well captured by the\n",
" function: y = a/x + b, and a local regression fit was automatically substituted.\n",
" specify fitType='local' or 'mean' to avoid this message next time.\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"-- note: fitType='parametric', but the dispersion trend was not well captured by the\n",
" function: y = a/x + b, and a local regression fit was automatically substituted.\n",
" specify fitType='local' or 'mean' to avoid this message next time.\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"late-MyP\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 552 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"data": {
"text/html": [
"\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_HSC-MPP_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_primed-MPP_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_early-MEMBP_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_late-MEMBP_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_MDP_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_late-MyP_bthal_vs_healthy_top20_DE_genes.png'
\n",
"
\n"
],
"text/latex": [
"\\begin{enumerate}\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C10\\_lineage\\_HSC-MPP\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C10\\_lineage\\_primed-MPP\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C10\\_lineage\\_early-MEMBP\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C10\\_lineage\\_late-MEMBP\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C10\\_lineage\\_MDP\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C10\\_lineage\\_late-MyP\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\end{enumerate}\n"
],
"text/markdown": [
"1. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_HSC-MPP_bthal_vs_healthy_top20_DE_genes.png'\n",
"2. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_primed-MPP_bthal_vs_healthy_top20_DE_genes.png'\n",
"3. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_early-MEMBP_bthal_vs_healthy_top20_DE_genes.png'\n",
"4. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_late-MEMBP_bthal_vs_healthy_top20_DE_genes.png'\n",
"5. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_MDP_bthal_vs_healthy_top20_DE_genes.png'\n",
"6. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_late-MyP_bthal_vs_healthy_top20_DE_genes.png'\n",
"\n",
"\n"
],
"text/plain": [
"[[1]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_HSC-MPP_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[2]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_primed-MPP_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[3]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_early-MEMBP_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[4]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_late-MEMBP_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[5]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_MDP_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[6]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C10_lineage_late-MyP_bthal_vs_healthy_top20_DE_genes.png\"\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"[1] \"2024-03-05 11:29:05 GMT\""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Sys.time()\n",
"\n",
"# Run the script on all clusters comparing bthal condition relative to healthy condition\n",
"purrr::map(1:length(clusters), get_dds_resultsAvsB, A = 1, B = 2)\n",
"\n",
"Sys.time()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "01be1715-3910-4bb1-8713-58b3c7b516b5",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "2e965a73-9268-4be3-a478-ad18b63f89bb",
"metadata": {},
"source": [
"## "
]
},
{
"cell_type": "markdown",
"id": "f7f1f433-4e4a-4723-b7a6-bd47f6ea95e8",
"metadata": {},
"source": [
"## Zeng et al (CB45)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "16465943-ff31-4023-9a36-968e0695bfe1",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "7ba0c1e8-086e-4976-8b27-480ecb95f5d7",
"metadata": {},
"source": [
"Differential gene expression bthal vs healthy:\n",
"\n",
"- Combo45_Andy_clusters: GMP_Mono, BFU-E, CFU-E (3 lists)\n",
"- Combo45_Andy_lineages: HSC, MDP, MPP-MkEry, MPP-MyLy, MEP, Ery (6 lists)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "88145f75-8b38-4b48-b1f5-d6f043c03265",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "b0f70ff8-29d7-41a7-8cec-5a5ab25af319",
"metadata": {},
"source": [
"### CB45 clusters\n",
"---\n",
"\n",
"GMP_Mono, BFU-E, CFU-E (3 lists)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "543ea980-da0d-4cea-b850-f38366fa2103",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 83,
"id": "14044df6-934f-4264-b40a-0fe6c4677a46",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- GMP-Mono
- Pro-B-VDJ
- HSC
- MPP-MkEry
- Pre-cDC
- Early-GMP
- CFU-E
- Pro-Erythroblast
- GMP-Neut
- Cycling-Progenitor
- pDC
- Large-Pre-B
- LMPP
- BFU-E
- MPP-MyLy
- CLP
- Pre-pDC
- MEP
- GMP-Cycle
- EoBasoMast-Precursor
- Megakaryocyte-Precursor
- Pre-ProB
- MLP
- Pro-B-Cycling
- Early-ProMono
- Pre-pDC-Cycling
- Basophilic-Erythroblast
- MLP-II
\n",
"\n",
"\n",
"\t\n",
"\t\tLevels:\n",
"\t
\n",
"\t\n",
"\t- 'BFU-E'
- 'Basophilic-Erythroblast'
- 'CFU-E'
- 'CLP'
- 'Cycling-Progenitor'
- 'Early-GMP'
- 'Early-ProMono'
- 'EoBasoMast-Precursor'
- 'GMP-Cycle'
- 'GMP-Mono'
- 'GMP-Neut'
- 'HSC'
- 'LMPP'
- 'Large-Pre-B'
- 'MEP'
- 'MLP'
- 'MLP-II'
- 'MPP-MkEry'
- 'MPP-MyLy'
- 'Megakaryocyte-Precursor'
- 'Pre-ProB'
- 'Pre-cDC'
- 'Pre-pDC'
- 'Pre-pDC-Cycling'
- 'Pro-B-Cycling'
- 'Pro-B-VDJ'
- 'Pro-Erythroblast'
- 'pDC'
\n",
" "
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item GMP-Mono\n",
"\\item Pro-B-VDJ\n",
"\\item HSC\n",
"\\item MPP-MkEry\n",
"\\item Pre-cDC\n",
"\\item Early-GMP\n",
"\\item CFU-E\n",
"\\item Pro-Erythroblast\n",
"\\item GMP-Neut\n",
"\\item Cycling-Progenitor\n",
"\\item pDC\n",
"\\item Large-Pre-B\n",
"\\item LMPP\n",
"\\item BFU-E\n",
"\\item MPP-MyLy\n",
"\\item CLP\n",
"\\item Pre-pDC\n",
"\\item MEP\n",
"\\item GMP-Cycle\n",
"\\item EoBasoMast-Precursor\n",
"\\item Megakaryocyte-Precursor\n",
"\\item Pre-ProB\n",
"\\item MLP\n",
"\\item Pro-B-Cycling\n",
"\\item Early-ProMono\n",
"\\item Pre-pDC-Cycling\n",
"\\item Basophilic-Erythroblast\n",
"\\item MLP-II\n",
"\\end{enumerate*}\n",
"\n",
"\\emph{Levels}: \\begin{enumerate*}\n",
"\\item 'BFU-E'\n",
"\\item 'Basophilic-Erythroblast'\n",
"\\item 'CFU-E'\n",
"\\item 'CLP'\n",
"\\item 'Cycling-Progenitor'\n",
"\\item 'Early-GMP'\n",
"\\item 'Early-ProMono'\n",
"\\item 'EoBasoMast-Precursor'\n",
"\\item 'GMP-Cycle'\n",
"\\item 'GMP-Mono'\n",
"\\item 'GMP-Neut'\n",
"\\item 'HSC'\n",
"\\item 'LMPP'\n",
"\\item 'Large-Pre-B'\n",
"\\item 'MEP'\n",
"\\item 'MLP'\n",
"\\item 'MLP-II'\n",
"\\item 'MPP-MkEry'\n",
"\\item 'MPP-MyLy'\n",
"\\item 'Megakaryocyte-Precursor'\n",
"\\item 'Pre-ProB'\n",
"\\item 'Pre-cDC'\n",
"\\item 'Pre-pDC'\n",
"\\item 'Pre-pDC-Cycling'\n",
"\\item 'Pro-B-Cycling'\n",
"\\item 'Pro-B-VDJ'\n",
"\\item 'Pro-Erythroblast'\n",
"\\item 'pDC'\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. GMP-Mono\n",
"2. Pro-B-VDJ\n",
"3. HSC\n",
"4. MPP-MkEry\n",
"5. Pre-cDC\n",
"6. Early-GMP\n",
"7. CFU-E\n",
"8. Pro-Erythroblast\n",
"9. GMP-Neut\n",
"10. Cycling-Progenitor\n",
"11. pDC\n",
"12. Large-Pre-B\n",
"13. LMPP\n",
"14. BFU-E\n",
"15. MPP-MyLy\n",
"16. CLP\n",
"17. Pre-pDC\n",
"18. MEP\n",
"19. GMP-Cycle\n",
"20. EoBasoMast-Precursor\n",
"21. Megakaryocyte-Precursor\n",
"22. Pre-ProB\n",
"23. MLP\n",
"24. Pro-B-Cycling\n",
"25. Early-ProMono\n",
"26. Pre-pDC-Cycling\n",
"27. Basophilic-Erythroblast\n",
"28. MLP-II\n",
"\n",
"\n",
"\n",
"**Levels**: 1. 'BFU-E'\n",
"2. 'Basophilic-Erythroblast'\n",
"3. 'CFU-E'\n",
"4. 'CLP'\n",
"5. 'Cycling-Progenitor'\n",
"6. 'Early-GMP'\n",
"7. 'Early-ProMono'\n",
"8. 'EoBasoMast-Precursor'\n",
"9. 'GMP-Cycle'\n",
"10. 'GMP-Mono'\n",
"11. 'GMP-Neut'\n",
"12. 'HSC'\n",
"13. 'LMPP'\n",
"14. 'Large-Pre-B'\n",
"15. 'MEP'\n",
"16. 'MLP'\n",
"17. 'MLP-II'\n",
"18. 'MPP-MkEry'\n",
"19. 'MPP-MyLy'\n",
"20. 'Megakaryocyte-Precursor'\n",
"21. 'Pre-ProB'\n",
"22. 'Pre-cDC'\n",
"23. 'Pre-pDC'\n",
"24. 'Pre-pDC-Cycling'\n",
"25. 'Pro-B-Cycling'\n",
"26. 'Pro-B-VDJ'\n",
"27. 'Pro-Erythroblast'\n",
"28. 'pDC'\n",
"\n",
"\n"
],
"text/plain": [
" [1] GMP-Mono Pro-B-VDJ HSC MPP-MkEry \n",
" [5] Pre-cDC Early-GMP CFU-E Pro-Erythroblast \n",
" [9] GMP-Neut Cycling-Progenitor pDC Large-Pre-B \n",
"[13] LMPP BFU-E MPP-MyLy CLP \n",
"[17] Pre-pDC MEP GMP-Cycle EoBasoMast-Precursor \n",
"[21] Megakaryocyte-Precursor Pre-ProB MLP Pro-B-Cycling \n",
"[25] Early-ProMono Pre-pDC-Cycling Basophilic-Erythroblast MLP-II \n",
"28 Levels: BFU-E Basophilic-Erythroblast CFU-E CLP Cycling-Progenitor Early-GMP ... pDC"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"unique( colData(sce)$clusters_andy )"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "86eef2a2-8aa3-4e78-9668-a81f7c9c44e0",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "7470c8a7-c445-4942-812b-4199281c3fc6",
"metadata": {},
"source": [
"**Set cluster_id here for ease of code re-use/templating**"
]
},
{
"cell_type": "code",
"execution_count": 84,
"id": "2441dc1e-6858-4d66-b8be-c356743d8bac",
"metadata": {},
"outputs": [],
"source": [
"sce$cluster_id <- sce$clusters_andy"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c60bc831-7a98-440b-a628-a77c0bbf6b49",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 85,
"id": "db1732b4-c338-4de1-b3fe-30d122baa5c4",
"metadata": {},
"outputs": [],
"source": [
"basename <- 'bthalcombo_v6b_C45_cluster'"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d58f8013-0d2b-453c-a81e-b40184ede3de",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "bffd9626-f769-4412-9566-fee43271b11e",
"metadata": {},
"source": [
"---\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 86,
"id": "5720c059-9f4e-47ff-bcfe-51f3443f5871",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"- BFU-E
- 'BFU-E'
- Basophilic-Erythroblast
- 'Basophilic-Erythroblast'
- CFU-E
- 'CFU-E'
- CLP
- 'CLP'
- Cycling-Progenitor
- 'Cycling-Progenitor'
- Early-GMP
- 'Early-GMP'
- Early-ProMono
- 'Early-ProMono'
- EoBasoMast-Precursor
- 'EoBasoMast-Precursor'
- GMP-Cycle
- 'GMP-Cycle'
- GMP-Mono
- 'GMP-Mono'
- GMP-Neut
- 'GMP-Neut'
- HSC
- 'HSC'
- LMPP
- 'LMPP'
- Large-Pre-B
- 'Large-Pre-B'
- MEP
- 'MEP'
- MLP
- 'MLP'
- MLP-II
- 'MLP-II'
- MPP-MkEry
- 'MPP-MkEry'
- MPP-MyLy
- 'MPP-MyLy'
- Megakaryocyte-Precursor
- 'Megakaryocyte-Precursor'
- Pre-ProB
- 'Pre-ProB'
- Pre-cDC
- 'Pre-cDC'
- Pre-pDC
- 'Pre-pDC'
- Pre-pDC-Cycling
- 'Pre-pDC-Cycling'
- Pro-B-Cycling
- 'Pro-B-Cycling'
- Pro-B-VDJ
- 'Pro-B-VDJ'
- Pro-Erythroblast
- 'Pro-Erythroblast'
- pDC
- 'pDC'
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[BFU-E] 'BFU-E'\n",
"\\item[Basophilic-Erythroblast] 'Basophilic-Erythroblast'\n",
"\\item[CFU-E] 'CFU-E'\n",
"\\item[CLP] 'CLP'\n",
"\\item[Cycling-Progenitor] 'Cycling-Progenitor'\n",
"\\item[Early-GMP] 'Early-GMP'\n",
"\\item[Early-ProMono] 'Early-ProMono'\n",
"\\item[EoBasoMast-Precursor] 'EoBasoMast-Precursor'\n",
"\\item[GMP-Cycle] 'GMP-Cycle'\n",
"\\item[GMP-Mono] 'GMP-Mono'\n",
"\\item[GMP-Neut] 'GMP-Neut'\n",
"\\item[HSC] 'HSC'\n",
"\\item[LMPP] 'LMPP'\n",
"\\item[Large-Pre-B] 'Large-Pre-B'\n",
"\\item[MEP] 'MEP'\n",
"\\item[MLP] 'MLP'\n",
"\\item[MLP-II] 'MLP-II'\n",
"\\item[MPP-MkEry] 'MPP-MkEry'\n",
"\\item[MPP-MyLy] 'MPP-MyLy'\n",
"\\item[Megakaryocyte-Precursor] 'Megakaryocyte-Precursor'\n",
"\\item[Pre-ProB] 'Pre-ProB'\n",
"\\item[Pre-cDC] 'Pre-cDC'\n",
"\\item[Pre-pDC] 'Pre-pDC'\n",
"\\item[Pre-pDC-Cycling] 'Pre-pDC-Cycling'\n",
"\\item[Pro-B-Cycling] 'Pro-B-Cycling'\n",
"\\item[Pro-B-VDJ] 'Pro-B-VDJ'\n",
"\\item[Pro-Erythroblast] 'Pro-Erythroblast'\n",
"\\item[pDC] 'pDC'\n",
"\\end{description*}\n"
],
"text/markdown": [
"BFU-E\n",
": 'BFU-E'Basophilic-Erythroblast\n",
": 'Basophilic-Erythroblast'CFU-E\n",
": 'CFU-E'CLP\n",
": 'CLP'Cycling-Progenitor\n",
": 'Cycling-Progenitor'Early-GMP\n",
": 'Early-GMP'Early-ProMono\n",
": 'Early-ProMono'EoBasoMast-Precursor\n",
": 'EoBasoMast-Precursor'GMP-Cycle\n",
": 'GMP-Cycle'GMP-Mono\n",
": 'GMP-Mono'GMP-Neut\n",
": 'GMP-Neut'HSC\n",
": 'HSC'LMPP\n",
": 'LMPP'Large-Pre-B\n",
": 'Large-Pre-B'MEP\n",
": 'MEP'MLP\n",
": 'MLP'MLP-II\n",
": 'MLP-II'MPP-MkEry\n",
": 'MPP-MkEry'MPP-MyLy\n",
": 'MPP-MyLy'Megakaryocyte-Precursor\n",
": 'Megakaryocyte-Precursor'Pre-ProB\n",
": 'Pre-ProB'Pre-cDC\n",
": 'Pre-cDC'Pre-pDC\n",
": 'Pre-pDC'Pre-pDC-Cycling\n",
": 'Pre-pDC-Cycling'Pro-B-Cycling\n",
": 'Pro-B-Cycling'Pro-B-VDJ\n",
": 'Pro-B-VDJ'Pro-Erythroblast\n",
": 'Pro-Erythroblast'pDC\n",
": 'pDC'\n",
"\n"
],
"text/plain": [
" BFU-E Basophilic-Erythroblast CFU-E \n",
" \"BFU-E\" \"Basophilic-Erythroblast\" \"CFU-E\" \n",
" CLP Cycling-Progenitor Early-GMP \n",
" \"CLP\" \"Cycling-Progenitor\" \"Early-GMP\" \n",
" Early-ProMono EoBasoMast-Precursor GMP-Cycle \n",
" \"Early-ProMono\" \"EoBasoMast-Precursor\" \"GMP-Cycle\" \n",
" GMP-Mono GMP-Neut HSC \n",
" \"GMP-Mono\" \"GMP-Neut\" \"HSC\" \n",
" LMPP Large-Pre-B MEP \n",
" \"LMPP\" \"Large-Pre-B\" \"MEP\" \n",
" MLP MLP-II MPP-MkEry \n",
" \"MLP\" \"MLP-II\" \"MPP-MkEry\" \n",
" MPP-MyLy Megakaryocyte-Precursor Pre-ProB \n",
" \"MPP-MyLy\" \"Megakaryocyte-Precursor\" \"Pre-ProB\" \n",
" Pre-cDC Pre-pDC Pre-pDC-Cycling \n",
" \"Pre-cDC\" \"Pre-pDC\" \"Pre-pDC-Cycling\" \n",
" Pro-B-Cycling Pro-B-VDJ Pro-Erythroblast \n",
" \"Pro-B-Cycling\" \"Pro-B-VDJ\" \"Pro-Erythroblast\" \n",
" pDC \n",
" \"pDC\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Named vector of cluster names\n",
"kids <- purrr::set_names(levels(sce$cluster_id))\n",
"kids"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6682c486-4331-4bd9-8878-52a230385c51",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 87,
"id": "77a3788d-7f41-4bea-b79a-bd009f37bb3e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"28"
],
"text/latex": [
"28"
],
"text/markdown": [
"28"
],
"text/plain": [
"[1] 28"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Total number of clusters\n",
"nk <- length(kids)\n",
"nk"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "801a3017-20bd-47a9-95b0-b615240f4edf",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 88,
"id": "943a735e-dc06-4462-9e62-0401d7f23441",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"- bthalSITTA3
- 'bthalSITTA3'
- bthalSITTB3
- 'bthalSITTB3'
- bthalSITTC12
- 'bthalSITTC12'
- bthalSITTC3
- 'bthalSITTC3'
- bthalSITTD12
- 'bthalSITTD12'
- bthalSITTE10
- 'bthalSITTE10'
- bthalSITTF10
- 'bthalSITTF10'
- bthalSITTG3
- 'bthalSITTG3'
- healthySITTC10
- 'healthySITTC10'
- healthySITTD10
- 'healthySITTD10'
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[bthalSITTA3] 'bthalSITTA3'\n",
"\\item[bthalSITTB3] 'bthalSITTB3'\n",
"\\item[bthalSITTC12] 'bthalSITTC12'\n",
"\\item[bthalSITTC3] 'bthalSITTC3'\n",
"\\item[bthalSITTD12] 'bthalSITTD12'\n",
"\\item[bthalSITTE10] 'bthalSITTE10'\n",
"\\item[bthalSITTF10] 'bthalSITTF10'\n",
"\\item[bthalSITTG3] 'bthalSITTG3'\n",
"\\item[healthySITTC10] 'healthySITTC10'\n",
"\\item[healthySITTD10] 'healthySITTD10'\n",
"\\end{description*}\n"
],
"text/markdown": [
"bthalSITTA3\n",
": 'bthalSITTA3'bthalSITTB3\n",
": 'bthalSITTB3'bthalSITTC12\n",
": 'bthalSITTC12'bthalSITTC3\n",
": 'bthalSITTC3'bthalSITTD12\n",
": 'bthalSITTD12'bthalSITTE10\n",
": 'bthalSITTE10'bthalSITTF10\n",
": 'bthalSITTF10'bthalSITTG3\n",
": 'bthalSITTG3'healthySITTC10\n",
": 'healthySITTC10'healthySITTD10\n",
": 'healthySITTD10'\n",
"\n"
],
"text/plain": [
" bthalSITTA3 bthalSITTB3 bthalSITTC12 bthalSITTC3 bthalSITTD12 \n",
" \"bthalSITTA3\" \"bthalSITTB3\" \"bthalSITTC12\" \"bthalSITTC3\" \"bthalSITTD12\" \n",
" bthalSITTE10 bthalSITTF10 bthalSITTG3 healthySITTC10 healthySITTD10 \n",
" \"bthalSITTE10\" \"bthalSITTF10\" \"bthalSITTG3\" \"healthySITTC10\" \"healthySITTD10\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Named vector of sample names\n",
"sids <- purrr::set_names(levels(sce$sample_id))\n",
"sids"
]
},
{
"cell_type": "code",
"execution_count": 89,
"id": "bf1d04aa-0185-486c-b83a-d45df2cf5aef",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"10"
],
"text/latex": [
"10"
],
"text/markdown": [
"10"
],
"text/plain": [
"[1] 10"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Total number of samples \n",
"ns <- length(sids)\n",
"ns"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "40a35a6c-e393-4c29-9384-95d47625a061",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 90,
"id": "42a0bf61-8986-4d3f-babd-afc5761a6443",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\n",
" bthalSITTA3 bthalSITTB3 bthalSITTC12 bthalSITTC3 bthalSITTD12 bthalSITTE10 \n",
" 3220 331 1970 336 496 6663 \n",
" bthalSITTF10 bthalSITTG3 healthySITTC10 healthySITTD10 \n",
" 6452 166 2066 2485 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"A data.frame: 10 × 16\n",
"\n",
"\tdonor | library | xample | population | condition | v6_leiden.20.0_annot_CB10 | v6_leiden.20.0_annot_CB45 | lineage.annot | lineage.andy | clusters_nicole | lineage_nicole | clusters_andy | lineage_andy | group_id | sample_id | n_cells |
\n",
"\t<fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <dbl> |
\n",
"\n",
"\n",
"\tbthal007 | SITTA3 | bthal007_BM_scr_CD34 | CD34 | bthal | 19_HSPC cycle | Pro-B Cycling | EryP/MyP mix | Bcell Precursor | 19-HSPC-cycle | EryP-MyP-mix | Pro-B-Cycling | Bcell-Precursor | bthal | bthalSITTA3 | 3220 |
\n",
"\tbthal008 | SITTB3 | bthal008_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTB3 | 331 |
\n",
"\tbthal005 | SITTC12 | bthal005_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTC12 | 1970 |
\n",
"\tbthal007 | SITTC3 | bthal007_BM_scr_CD38neg | CD34_CD38neg | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTC3 | 336 |
\n",
"\tbthal006 | SITTD12 | bthal006_BM_scr_CD34 | CD34 | bthal | 05_HSC/MPP3 | HSC | HSC/MPP | HSC | 05-HSC-MPP3 | HSC-MPP | HSC | HSC | bthal | bthalSITTD12 | 496 |
\n",
"\tbthal010 | SITTE10 | bthal010_BM_scr_HSC | HSCMPP | bthal | 00_HSC/MPP2 | HSC | HSC/MPP | HSC | 00-HSC-MPP2 | HSC-MPP | HSC | HSC | bthal | bthalSITTE10 | 6663 |
\n",
"\tbthal009 | SITTF10 | bthal009_BM_scr_HSC | HSCMPP | bthal | 04_HSC/MPP1 | HSC | HSC/MPP | HSC | 04-HSC-MPP1 | HSC-MPP | HSC | HSC | bthal | bthalSITTF10 | 6452 |
\n",
"\tbthal008 | SITTG3 | bthal008_BM_scr_CD34 | CD34 | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTG3 | 166 |
\n",
"\thealthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 05_HSC/MPP3 | MPP-MkEry | HSC/MPP | MPP-MkEry | 05-HSC-MPP3 | HSC-MPP | MPP-MkEry | MPP-MkEry | healthy | healthySITTC10 | 2066 |
\n",
"\thealthy_CTRL | SITTD10 | healthy_CTRL_CD34 | CD34 | healthy | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | healthy | healthySITTD10 | 2485 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 10 × 16\n",
"\\begin{tabular}{llllllllllllllll}\n",
" donor & library & xample & population & condition & v6\\_leiden.20.0\\_annot\\_CB10 & v6\\_leiden.20.0\\_annot\\_CB45 & lineage.annot & lineage.andy & clusters\\_nicole & lineage\\_nicole & clusters\\_andy & lineage\\_andy & group\\_id & sample\\_id & n\\_cells\\\\\n",
" & & & & & & & & & & & & & & & \\\\\n",
"\\hline\n",
"\t bthal007 & SITTA3 & bthal007\\_BM\\_scr\\_CD34 & CD34 & bthal & 19\\_HSPC cycle & Pro-B Cycling & EryP/MyP mix & Bcell Precursor & 19-HSPC-cycle & EryP-MyP-mix & Pro-B-Cycling & Bcell-Precursor & bthal & bthalSITTA3 & 3220\\\\\n",
"\t bthal008 & SITTB3 & bthal008\\_BM\\_scr\\_CD34 & CD34 & bthal & 15\\_MyP4 (GMP) & GMP-Mono & late MyP & GMP & 15-MyP4-(GMP) & late-MyP & GMP-Mono & GMP & bthal & bthalSITTB3 & 331\\\\\n",
"\t bthal005 & SITTC12 & bthal005\\_BM\\_scr\\_CD34 & CD34 & bthal & 15\\_MyP4 (GMP) & GMP-Mono & late MyP & GMP & 15-MyP4-(GMP) & late-MyP & GMP-Mono & GMP & bthal & bthalSITTC12 & 1970\\\\\n",
"\t bthal007 & SITTC3 & bthal007\\_BM\\_scr\\_CD38neg & CD34\\_CD38neg & bthal & 09\\_MyP2 & Early GMP & early MyP & GMP & 09-MyP2 & early-MyP & Early-GMP & GMP & bthal & bthalSITTC3 & 336\\\\\n",
"\t bthal006 & SITTD12 & bthal006\\_BM\\_scr\\_CD34 & CD34 & bthal & 05\\_HSC/MPP3 & HSC & HSC/MPP & HSC & 05-HSC-MPP3 & HSC-MPP & HSC & HSC & bthal & bthalSITTD12 & 496\\\\\n",
"\t bthal010 & SITTE10 & bthal010\\_BM\\_scr\\_HSC & HSCMPP & bthal & 00\\_HSC/MPP2 & HSC & HSC/MPP & HSC & 00-HSC-MPP2 & HSC-MPP & HSC & HSC & bthal & bthalSITTE10 & 6663\\\\\n",
"\t bthal009 & SITTF10 & bthal009\\_BM\\_scr\\_HSC & HSCMPP & bthal & 04\\_HSC/MPP1 & HSC & HSC/MPP & HSC & 04-HSC-MPP1 & HSC-MPP & HSC & HSC & bthal & bthalSITTF10 & 6452\\\\\n",
"\t bthal008 & SITTG3 & bthal008\\_BM\\_scr\\_CD34 & CD34 & bthal & 09\\_MyP2 & Early GMP & early MyP & GMP & 09-MyP2 & early-MyP & Early-GMP & GMP & bthal & bthalSITTG3 & 166\\\\\n",
"\t healthy\\_CTRL & SITTC10 & healthy\\_CTRL\\_HSC & HSCMPP & healthy & 05\\_HSC/MPP3 & MPP-MkEry & HSC/MPP & MPP-MkEry & 05-HSC-MPP3 & HSC-MPP & MPP-MkEry & MPP-MkEry & healthy & healthySITTC10 & 2066\\\\\n",
"\t healthy\\_CTRL & SITTD10 & healthy\\_CTRL\\_CD34 & CD34 & healthy & 09\\_MyP2 & Early GMP & early MyP & GMP & 09-MyP2 & early-MyP & Early-GMP & GMP & healthy & healthySITTD10 & 2485\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 10 × 16\n",
"\n",
"| donor <fct> | library <fct> | xample <fct> | population <fct> | condition <fct> | v6_leiden.20.0_annot_CB10 <fct> | v6_leiden.20.0_annot_CB45 <fct> | lineage.annot <fct> | lineage.andy <fct> | clusters_nicole <fct> | lineage_nicole <fct> | clusters_andy <fct> | lineage_andy <fct> | group_id <fct> | sample_id <fct> | n_cells <dbl> |\n",
"|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
"| bthal007 | SITTA3 | bthal007_BM_scr_CD34 | CD34 | bthal | 19_HSPC cycle | Pro-B Cycling | EryP/MyP mix | Bcell Precursor | 19-HSPC-cycle | EryP-MyP-mix | Pro-B-Cycling | Bcell-Precursor | bthal | bthalSITTA3 | 3220 |\n",
"| bthal008 | SITTB3 | bthal008_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTB3 | 331 |\n",
"| bthal005 | SITTC12 | bthal005_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTC12 | 1970 |\n",
"| bthal007 | SITTC3 | bthal007_BM_scr_CD38neg | CD34_CD38neg | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTC3 | 336 |\n",
"| bthal006 | SITTD12 | bthal006_BM_scr_CD34 | CD34 | bthal | 05_HSC/MPP3 | HSC | HSC/MPP | HSC | 05-HSC-MPP3 | HSC-MPP | HSC | HSC | bthal | bthalSITTD12 | 496 |\n",
"| bthal010 | SITTE10 | bthal010_BM_scr_HSC | HSCMPP | bthal | 00_HSC/MPP2 | HSC | HSC/MPP | HSC | 00-HSC-MPP2 | HSC-MPP | HSC | HSC | bthal | bthalSITTE10 | 6663 |\n",
"| bthal009 | SITTF10 | bthal009_BM_scr_HSC | HSCMPP | bthal | 04_HSC/MPP1 | HSC | HSC/MPP | HSC | 04-HSC-MPP1 | HSC-MPP | HSC | HSC | bthal | bthalSITTF10 | 6452 |\n",
"| bthal008 | SITTG3 | bthal008_BM_scr_CD34 | CD34 | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTG3 | 166 |\n",
"| healthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 05_HSC/MPP3 | MPP-MkEry | HSC/MPP | MPP-MkEry | 05-HSC-MPP3 | HSC-MPP | MPP-MkEry | MPP-MkEry | healthy | healthySITTC10 | 2066 |\n",
"| healthy_CTRL | SITTD10 | healthy_CTRL_CD34 | CD34 | healthy | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | healthy | healthySITTD10 | 2485 |\n",
"\n"
],
"text/plain": [
" donor library xample population condition v6_leiden.20.0_annot_CB10\n",
"1 bthal007 SITTA3 bthal007_BM_scr_CD34 CD34 bthal 19_HSPC cycle \n",
"2 bthal008 SITTB3 bthal008_BM_scr_CD34 CD34 bthal 15_MyP4 (GMP) \n",
"3 bthal005 SITTC12 bthal005_BM_scr_CD34 CD34 bthal 15_MyP4 (GMP) \n",
"4 bthal007 SITTC3 bthal007_BM_scr_CD38neg CD34_CD38neg bthal 09_MyP2 \n",
"5 bthal006 SITTD12 bthal006_BM_scr_CD34 CD34 bthal 05_HSC/MPP3 \n",
"6 bthal010 SITTE10 bthal010_BM_scr_HSC HSCMPP bthal 00_HSC/MPP2 \n",
"7 bthal009 SITTF10 bthal009_BM_scr_HSC HSCMPP bthal 04_HSC/MPP1 \n",
"8 bthal008 SITTG3 bthal008_BM_scr_CD34 CD34 bthal 09_MyP2 \n",
"9 healthy_CTRL SITTC10 healthy_CTRL_HSC HSCMPP healthy 05_HSC/MPP3 \n",
"10 healthy_CTRL SITTD10 healthy_CTRL_CD34 CD34 healthy 09_MyP2 \n",
" v6_leiden.20.0_annot_CB45 lineage.annot lineage.andy clusters_nicole lineage_nicole\n",
"1 Pro-B Cycling EryP/MyP mix Bcell Precursor 19-HSPC-cycle EryP-MyP-mix \n",
"2 GMP-Mono late MyP GMP 15-MyP4-(GMP) late-MyP \n",
"3 GMP-Mono late MyP GMP 15-MyP4-(GMP) late-MyP \n",
"4 Early GMP early MyP GMP 09-MyP2 early-MyP \n",
"5 HSC HSC/MPP HSC 05-HSC-MPP3 HSC-MPP \n",
"6 HSC HSC/MPP HSC 00-HSC-MPP2 HSC-MPP \n",
"7 HSC HSC/MPP HSC 04-HSC-MPP1 HSC-MPP \n",
"8 Early GMP early MyP GMP 09-MyP2 early-MyP \n",
"9 MPP-MkEry HSC/MPP MPP-MkEry 05-HSC-MPP3 HSC-MPP \n",
"10 Early GMP early MyP GMP 09-MyP2 early-MyP \n",
" clusters_andy lineage_andy group_id sample_id n_cells\n",
"1 Pro-B-Cycling Bcell-Precursor bthal bthalSITTA3 3220 \n",
"2 GMP-Mono GMP bthal bthalSITTB3 331 \n",
"3 GMP-Mono GMP bthal bthalSITTC12 1970 \n",
"4 Early-GMP GMP bthal bthalSITTC3 336 \n",
"5 HSC HSC bthal bthalSITTD12 496 \n",
"6 HSC HSC bthal bthalSITTE10 6663 \n",
"7 HSC HSC bthal bthalSITTF10 6452 \n",
"8 Early-GMP GMP bthal bthalSITTG3 166 \n",
"9 MPP-MkEry MPP-MkEry healthy healthySITTC10 2066 \n",
"10 Early-GMP GMP healthy healthySITTD10 2485 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Generate sample level metadata\n",
"\n",
"## Determine the number of cells per sample\n",
"table(sce$sample_id)\n",
"\n",
"## Turn named vector into a numeric vector of number of cells per sample\n",
"n_cells <- as.numeric(table(sce$sample_id))\n",
"\n",
"## Determine how to reoder the samples (rows) of the metadata to match the order of sample names in sids vector\n",
"m <- match(sids, sce$sample_id)\n",
"\n",
"## Create the sample level metadata by combining the reordered metadata with the number of cells corresponding to each sample.\n",
"ei <- data.frame(colData(sce)[m, ], \n",
" n_cells, row.names = NULL) %>% \n",
" select(-\"cluster_id\")\n",
"ei"
]
},
{
"cell_type": "code",
"execution_count": 91,
"id": "c88cffc2-9429-4320-a259-1b862eca8b01",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- 20098
- 24185
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 20098\n",
"\\item 24185\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 20098\n",
"2. 24185\n",
"\n",
"\n"
],
"text/plain": [
"[1] 20098 24185"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dim(sce)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d8aab2de-57e0-41a5-81e7-ff9b3132c6e5",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "c076986e-63f0-41c9-8b37-9ad7dc2646be",
"metadata": {},
"source": [
"---\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "445a11f4-c027-4186-9c75-cbe8d90645cf",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "2154dea7-f827-4b71-97fb-e1e2e399a6ec",
"metadata": {},
"source": [
"#### Count aggregation to sample level\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 92,
"id": "48ba6b4b-a8b3-4fc6-b9e1-1a4f28782dd6",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"'dgCMatrix'"
],
"text/latex": [
"'dgCMatrix'"
],
"text/markdown": [
"'dgCMatrix'"
],
"text/plain": [
"[1] \"dgCMatrix\"\n",
"attr(,\"package\")\n",
"[1] \"Matrix\""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"- 218
- 20098
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 218\n",
"\\item 20098\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 218\n",
"2. 20098\n",
"\n",
"\n"
],
"text/plain": [
"[1] 218 20098"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Aggregate the counts per sample_id and cluster_id\n",
"\n",
"# Subset metadata to only include the cluster and sample IDs to aggregate across\n",
"groups <- colData(sce)[, c(\"cluster_id\", \"sample_id\")]\n",
"\n",
"# Aggregate across cluster-sample groups\n",
"pb <- aggregate.Matrix(t(counts(sce)), \n",
" groupings = groups, fun = \"sum\") \n",
"\n",
"class(pb)\n",
"\n",
"dim(pb)\n",
"\n",
"# pb[1:6, 1:6]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9c92e738-c345-4601-91a9-f1be54783ec3",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 93,
"id": "32e63044-4517-4af2-b6b6-73c8252f13b0",
"metadata": {},
"outputs": [],
"source": [
"# Not every cluster is present in all samples; create a vector that represents how to split samples\n",
"splitf <- sapply(stringr::str_split(rownames(pb), \n",
" pattern = \"_\",\n",
" n = 2\n",
" ), \n",
" `[`, 1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8a4397c2-2d61-4f80-813d-0e77fb01971a",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 94,
"id": "e1273f21-9c59-4cbf-ad77-59745500b29e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"'list'"
],
"text/latex": [
"'list'"
],
"text/markdown": [
"'list'"
],
"text/plain": [
"[1] \"list\""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Turn into a list and split the list into components for each cluster and transform, so rows are genes and columns are samples and make rownames as the sample IDs\n",
"pb <- split.data.frame(pb, \n",
" factor(splitf)) %>%\n",
" lapply(function(u) \n",
" magrittr::set_colnames(t(u), \n",
" stringr::str_extract(rownames(u), \"(?<=_)[:alnum:]+\")))\n",
"\n",
"class(pb)\n",
"\n",
"# Explore the different components of list\n",
"# str(pb)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1a4af3a4-7676-44fa-917b-1dc804bb82c2",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 95,
"id": "7656ac3c-a466-4979-97e5-372a6e0fbe72",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" \n",
" bthalSITTA3 bthalSITTB3 bthalSITTC12 bthalSITTC3 bthalSITTD12\n",
" BFU-E 75 4 103 0 5\n",
" Basophilic-Erythroblast 21 0 15 0 6\n",
" CFU-E 106 10 140 0 8\n",
" CLP 3 0 3 0 0\n",
" Cycling-Progenitor 227 9 93 36 48\n",
" Early-GMP 219 33 144 6 40\n",
" Early-ProMono 20 4 27 0 2\n",
" EoBasoMast-Precursor 16 1 27 0 3\n",
" GMP-Cycle 5 0 7 0 0\n",
" GMP-Mono 39 7 69 0 6\n",
" GMP-Neut 74 11 79 0 6\n",
" HSC 765 94 236 192 194\n",
" LMPP 244 7 94 31 53\n",
" Large-Pre-B 286 13 129 0 2\n",
" MEP 49 7 115 2 8\n",
" MLP 8 0 4 0 0\n",
" MLP-II 1 0 11 0 0\n",
" MPP-MkEry 172 13 121 26 30\n",
" MPP-MyLy 264 85 78 42 52\n",
" Megakaryocyte-Precursor 7 2 30 0 7\n",
" Pre-ProB 39 18 15 0 1\n",
" Pre-cDC 13 0 62 0 2\n",
" Pre-pDC 21 10 36 0 1\n",
" Pre-pDC-Cycling 5 0 14 0 2\n",
" Pro-B-Cycling 23 0 19 0 0\n",
" Pro-B-VDJ 445 3 117 0 13\n",
" Pro-Erythroblast 61 0 150 1 5\n",
" pDC 12 0 32 0 2\n",
" \n",
" bthalSITTE10 bthalSITTF10 bthalSITTG3 healthySITTC10 healthySITTD10\n",
" BFU-E 32 47 1 2 75\n",
" Basophilic-Erythroblast 3 6 0 0 0\n",
" CFU-E 62 54 1 0 88\n",
" CLP 13 4 0 0 11\n",
" Cycling-Progenitor 461 441 16 175 217\n",
" Early-GMP 476 435 33 23 347\n",
" Early-ProMono 20 15 5 0 22\n",
" EoBasoMast-Precursor 64 42 0 0 25\n",
" GMP-Cycle 16 24 0 0 8\n",
" GMP-Mono 107 117 2 0 116\n",
" GMP-Neut 111 108 6 0 92\n",
" HSC 2541 2172 28 1226 295\n",
" LMPP 585 509 12 158 193\n",
" Large-Pre-B 263 467 0 0 240\n",
" MEP 107 120 10 28 27\n",
" MLP 9 7 1 0 8\n",
" MLP-II 7 17 0 0 14\n",
" MPP-MkEry 611 621 8 157 103\n",
" MPP-MyLy 631 579 20 292 93\n",
" Megakaryocyte-Precursor 17 21 4 3 11\n",
" Pre-ProB 37 24 0 0 18\n",
" Pre-cDC 49 35 3 0 42\n",
" Pre-pDC 73 85 3 0 93\n",
" Pre-pDC-Cycling 26 47 1 0 29\n",
" Pro-B-Cycling 30 50 1 0 26\n",
" Pro-B-VDJ 235 303 5 2 210\n",
" Pro-Erythroblast 37 38 6 0 35\n",
" pDC 40 64 0 0 47"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Print out the table of cells in each cluster-sample group\n",
"options(width = 100)\n",
"table(sce$cluster_id, sce$sample_id)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8f33391e-168a-45af-888a-d752dda1e39a",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 96,
"id": "d4751b75-2f04-40d6-adee-3c5e666a58db",
"metadata": {},
"outputs": [],
"source": [
"# Get sample names for each of the cell type clusters\n",
"\n",
"# prep. data.frame for plotting\n",
"get_sample_ids <- function(x){\n",
" pb[[x]] %>%\n",
" colnames()\n",
"}\n",
"\n",
"de_samples <- purrr::map(1:length(kids), get_sample_ids) %>%\n",
" unlist()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "10bbfe6d-9f32-4e63-8ac4-a9076456f068",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 97,
"id": "249cd788-76b6-4114-8fc9-98694ed5a469",
"metadata": {},
"outputs": [],
"source": [
"# Get cluster IDs for each of the samples\n",
"\n",
"samples_list <- purrr::map(1:length(kids), get_sample_ids)\n",
"\n",
"get_cluster_ids <- function(x){\n",
" rep(names(pb)[x], \n",
" each = length(samples_list[[x]]))\n",
"}\n",
"\n",
"de_cluster_ids <- purrr::map(1:length(kids), get_cluster_ids) %>%\n",
" unlist()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "70e63538-9e37-4d8f-bfcb-0b50820ab184",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 98,
"id": "0abd4c02-107a-4961-893d-3e59ce8d33ac",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[1m\u001b[22mJoining with `by = join_by(sample_id)`\n"
]
},
{
"data": {
"text/html": [
"\n",
"A data.frame: 6 × 3\n",
"\n",
"\t | cluster_id | sample_id | group_id |
\n",
"\t | <chr> | <chr> | <fct> |
\n",
"\n",
"\n",
"\t1 | BFU-E | bthalSITTA3 | bthal |
\n",
"\t2 | BFU-E | bthalSITTB3 | bthal |
\n",
"\t3 | BFU-E | bthalSITTC12 | bthal |
\n",
"\t4 | BFU-E | bthalSITTD12 | bthal |
\n",
"\t5 | BFU-E | bthalSITTE10 | bthal |
\n",
"\t6 | BFU-E | bthalSITTF10 | bthal |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 6 × 3\n",
"\\begin{tabular}{r|lll}\n",
" & cluster\\_id & sample\\_id & group\\_id\\\\\n",
" & & & \\\\\n",
"\\hline\n",
"\t1 & BFU-E & bthalSITTA3 & bthal\\\\\n",
"\t2 & BFU-E & bthalSITTB3 & bthal\\\\\n",
"\t3 & BFU-E & bthalSITTC12 & bthal\\\\\n",
"\t4 & BFU-E & bthalSITTD12 & bthal\\\\\n",
"\t5 & BFU-E & bthalSITTE10 & bthal\\\\\n",
"\t6 & BFU-E & bthalSITTF10 & bthal\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 6 × 3\n",
"\n",
"| | cluster_id <chr> | sample_id <chr> | group_id <fct> |\n",
"|---|---|---|---|\n",
"| 1 | BFU-E | bthalSITTA3 | bthal |\n",
"| 2 | BFU-E | bthalSITTB3 | bthal |\n",
"| 3 | BFU-E | bthalSITTC12 | bthal |\n",
"| 4 | BFU-E | bthalSITTD12 | bthal |\n",
"| 5 | BFU-E | bthalSITTE10 | bthal |\n",
"| 6 | BFU-E | bthalSITTF10 | bthal |\n",
"\n"
],
"text/plain": [
" cluster_id sample_id group_id\n",
"1 BFU-E bthalSITTA3 bthal \n",
"2 BFU-E bthalSITTB3 bthal \n",
"3 BFU-E bthalSITTC12 bthal \n",
"4 BFU-E bthalSITTD12 bthal \n",
"5 BFU-E bthalSITTE10 bthal \n",
"6 BFU-E bthalSITTF10 bthal "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Create a data frame with the sample IDs, cluster IDs and condition\n",
"\n",
"gg_df <- data.frame(cluster_id = de_cluster_ids,\n",
" sample_id = de_samples)\n",
"\n",
"gg_df <- left_join(gg_df, ei[, c(\"sample_id\", \"group_id\")]) \n",
"\n",
"\n",
"metadata <- gg_df %>%\n",
" dplyr::select(cluster_id, sample_id, group_id) \n",
" \n",
"head( metadata )"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "27c2d654-eeaf-4975-b9d3-d113010f3cb1",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 99,
"id": "d0bdf8ca-6fc9-4447-be11-f6ec997aaede",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- 'BFU-E'
- 'Basophilic-Erythroblast'
- 'CFU-E'
- 'CLP'
- 'Cycling-Progenitor'
- 'Early-GMP'
- 'Early-ProMono'
- 'EoBasoMast-Precursor'
- 'GMP-Cycle'
- 'GMP-Mono'
- 'GMP-Neut'
- 'HSC'
- 'LMPP'
- 'Large-Pre-B'
- 'MEP'
- 'MLP'
- 'MLP-II'
- 'MPP-MkEry'
- 'MPP-MyLy'
- 'Megakaryocyte-Precursor'
- 'Pre-ProB'
- 'Pre-cDC'
- 'Pre-pDC'
- 'Pre-pDC-Cycling'
- 'Pro-B-Cycling'
- 'Pro-B-VDJ'
- 'Pro-Erythroblast'
- 'pDC'
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 'BFU-E'\n",
"\\item 'Basophilic-Erythroblast'\n",
"\\item 'CFU-E'\n",
"\\item 'CLP'\n",
"\\item 'Cycling-Progenitor'\n",
"\\item 'Early-GMP'\n",
"\\item 'Early-ProMono'\n",
"\\item 'EoBasoMast-Precursor'\n",
"\\item 'GMP-Cycle'\n",
"\\item 'GMP-Mono'\n",
"\\item 'GMP-Neut'\n",
"\\item 'HSC'\n",
"\\item 'LMPP'\n",
"\\item 'Large-Pre-B'\n",
"\\item 'MEP'\n",
"\\item 'MLP'\n",
"\\item 'MLP-II'\n",
"\\item 'MPP-MkEry'\n",
"\\item 'MPP-MyLy'\n",
"\\item 'Megakaryocyte-Precursor'\n",
"\\item 'Pre-ProB'\n",
"\\item 'Pre-cDC'\n",
"\\item 'Pre-pDC'\n",
"\\item 'Pre-pDC-Cycling'\n",
"\\item 'Pro-B-Cycling'\n",
"\\item 'Pro-B-VDJ'\n",
"\\item 'Pro-Erythroblast'\n",
"\\item 'pDC'\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 'BFU-E'\n",
"2. 'Basophilic-Erythroblast'\n",
"3. 'CFU-E'\n",
"4. 'CLP'\n",
"5. 'Cycling-Progenitor'\n",
"6. 'Early-GMP'\n",
"7. 'Early-ProMono'\n",
"8. 'EoBasoMast-Precursor'\n",
"9. 'GMP-Cycle'\n",
"10. 'GMP-Mono'\n",
"11. 'GMP-Neut'\n",
"12. 'HSC'\n",
"13. 'LMPP'\n",
"14. 'Large-Pre-B'\n",
"15. 'MEP'\n",
"16. 'MLP'\n",
"17. 'MLP-II'\n",
"18. 'MPP-MkEry'\n",
"19. 'MPP-MyLy'\n",
"20. 'Megakaryocyte-Precursor'\n",
"21. 'Pre-ProB'\n",
"22. 'Pre-cDC'\n",
"23. 'Pre-pDC'\n",
"24. 'Pre-pDC-Cycling'\n",
"25. 'Pro-B-Cycling'\n",
"26. 'Pro-B-VDJ'\n",
"27. 'Pro-Erythroblast'\n",
"28. 'pDC'\n",
"\n",
"\n"
],
"text/plain": [
" [1] \"BFU-E\" \"Basophilic-Erythroblast\" \"CFU-E\" \n",
" [4] \"CLP\" \"Cycling-Progenitor\" \"Early-GMP\" \n",
" [7] \"Early-ProMono\" \"EoBasoMast-Precursor\" \"GMP-Cycle\" \n",
"[10] \"GMP-Mono\" \"GMP-Neut\" \"HSC\" \n",
"[13] \"LMPP\" \"Large-Pre-B\" \"MEP\" \n",
"[16] \"MLP\" \"MLP-II\" \"MPP-MkEry\" \n",
"[19] \"MPP-MyLy\" \"Megakaryocyte-Precursor\" \"Pre-ProB\" \n",
"[22] \"Pre-cDC\" \"Pre-pDC\" \"Pre-pDC-Cycling\" \n",
"[25] \"Pro-B-Cycling\" \"Pro-B-VDJ\" \"Pro-Erythroblast\" \n",
"[28] \"pDC\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Generate vector of cluster IDs\n",
"clusters <- levels(as.factor(metadata$cluster_id))\n",
"clusters"
]
},
{
"cell_type": "markdown",
"id": "75deb56b-9830-4dc5-91db-2357137ce989",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f1ceea99-24b9-4f74-b19b-094bef7f6fd8",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "40352abc-4f6b-460b-b37a-1528321ed891",
"metadata": {},
"source": [
"#### Run DEx comparisons\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 100,
"id": "29345246-3695-493d-b2ba-e458359bdd0c",
"metadata": {},
"outputs": [],
"source": [
"clusters <- c('GMP-Mono', 'BFU-E', 'CFU-E')"
]
},
{
"cell_type": "code",
"execution_count": 101,
"id": "f27555a4-0240-498b-8127-858b85fa1531",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1] \"2024-03-05 11:38:59 GMT\""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"GMP-Mono\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 2078 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"BFU-E\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 847 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"CFU-E\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 2908 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"data": {
"text/html": [
"\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_cluster_GMP-Mono_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_cluster_BFU-E_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_cluster_CFU-E_bthal_vs_healthy_top20_DE_genes.png'
\n",
"
\n"
],
"text/latex": [
"\\begin{enumerate}\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C45\\_cluster\\_GMP-Mono\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C45\\_cluster\\_BFU-E\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C45\\_cluster\\_CFU-E\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\end{enumerate}\n"
],
"text/markdown": [
"1. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_cluster_GMP-Mono_bthal_vs_healthy_top20_DE_genes.png'\n",
"2. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_cluster_BFU-E_bthal_vs_healthy_top20_DE_genes.png'\n",
"3. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_cluster_CFU-E_bthal_vs_healthy_top20_DE_genes.png'\n",
"\n",
"\n"
],
"text/plain": [
"[[1]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_cluster_GMP-Mono_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[2]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_cluster_BFU-E_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[3]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_cluster_CFU-E_bthal_vs_healthy_top20_DE_genes.png\"\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"[1] \"2024-03-05 11:39:36 GMT\""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Sys.time()\n",
"\n",
"# Run the script on all clusters comparing bthal condition relative to healthy condition\n",
"purrr::map(1:length(clusters), get_dds_resultsAvsB, A = 1, B = 2)\n",
"\n",
"Sys.time()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c521b786-0d48-4670-849a-f5f73265dfb2",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "8880f080-9320-4844-8c70-ea182960f86f",
"metadata": {},
"source": [
"### CB45 lineages\n",
"---\n",
"\n",
"HSC, MDP, MPP-MkEry, MPP-MyLy, MEP, Ery (6 lists)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "282b8486-c8e1-43b5-bbe2-8707407cfe80",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 102,
"id": "b0948654-ec7f-44e5-b774-2e372d5d0ea9",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- GMP
- Bcell-Precursor
- HSC
- MPP-MkEry
- MDP
- Erytroid
- Cycling-Progenitor
- MLP
- MPP-MyLy
- CLP
- MEP
- EoBasoMast-Precursor
- Megakaryocyte-Precursor
- Mono
\n",
"\n",
"\n",
"\t\n",
"\t\tLevels:\n",
"\t
\n",
"\t\n",
"\t- 'Bcell-Precursor'
- 'CLP'
- 'Cycling-Progenitor'
- 'EoBasoMast-Precursor'
- 'Erytroid'
- 'GMP'
- 'HSC'
- 'MDP'
- 'MEP'
- 'MLP'
- 'MPP-MkEry'
- 'MPP-MyLy'
- 'Megakaryocyte-Precursor'
- 'Mono'
\n",
" "
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item GMP\n",
"\\item Bcell-Precursor\n",
"\\item HSC\n",
"\\item MPP-MkEry\n",
"\\item MDP\n",
"\\item Erytroid\n",
"\\item Cycling-Progenitor\n",
"\\item MLP\n",
"\\item MPP-MyLy\n",
"\\item CLP\n",
"\\item MEP\n",
"\\item EoBasoMast-Precursor\n",
"\\item Megakaryocyte-Precursor\n",
"\\item Mono\n",
"\\end{enumerate*}\n",
"\n",
"\\emph{Levels}: \\begin{enumerate*}\n",
"\\item 'Bcell-Precursor'\n",
"\\item 'CLP'\n",
"\\item 'Cycling-Progenitor'\n",
"\\item 'EoBasoMast-Precursor'\n",
"\\item 'Erytroid'\n",
"\\item 'GMP'\n",
"\\item 'HSC'\n",
"\\item 'MDP'\n",
"\\item 'MEP'\n",
"\\item 'MLP'\n",
"\\item 'MPP-MkEry'\n",
"\\item 'MPP-MyLy'\n",
"\\item 'Megakaryocyte-Precursor'\n",
"\\item 'Mono'\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. GMP\n",
"2. Bcell-Precursor\n",
"3. HSC\n",
"4. MPP-MkEry\n",
"5. MDP\n",
"6. Erytroid\n",
"7. Cycling-Progenitor\n",
"8. MLP\n",
"9. MPP-MyLy\n",
"10. CLP\n",
"11. MEP\n",
"12. EoBasoMast-Precursor\n",
"13. Megakaryocyte-Precursor\n",
"14. Mono\n",
"\n",
"\n",
"\n",
"**Levels**: 1. 'Bcell-Precursor'\n",
"2. 'CLP'\n",
"3. 'Cycling-Progenitor'\n",
"4. 'EoBasoMast-Precursor'\n",
"5. 'Erytroid'\n",
"6. 'GMP'\n",
"7. 'HSC'\n",
"8. 'MDP'\n",
"9. 'MEP'\n",
"10. 'MLP'\n",
"11. 'MPP-MkEry'\n",
"12. 'MPP-MyLy'\n",
"13. 'Megakaryocyte-Precursor'\n",
"14. 'Mono'\n",
"\n",
"\n"
],
"text/plain": [
" [1] GMP Bcell-Precursor HSC MPP-MkEry \n",
" [5] MDP Erytroid Cycling-Progenitor MLP \n",
" [9] MPP-MyLy CLP MEP EoBasoMast-Precursor \n",
"[13] Megakaryocyte-Precursor Mono \n",
"14 Levels: Bcell-Precursor CLP Cycling-Progenitor EoBasoMast-Precursor Erytroid GMP HSC MDP ... Mono"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"unique( colData(sce)$lineage_andy )"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e652b18a-b597-457b-b304-5a49dadd1af7",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "6a55362a-cefe-4385-a1f8-73f43a915cad",
"metadata": {},
"source": [
"**Set cluster_id here for ease of code re-use/templating**"
]
},
{
"cell_type": "code",
"execution_count": 103,
"id": "b9b745f7-1b28-485c-a4e0-7e5172b28af1",
"metadata": {},
"outputs": [],
"source": [
"sce$cluster_id <- sce$lineage_andy"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "838724e5-3459-4161-9415-e9f998ace6ad",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 104,
"id": "70755399-6d1f-4c32-b51a-2c6da2605971",
"metadata": {},
"outputs": [],
"source": [
"basename <- 'bthalcombo_v6b_C45_lineage'"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "77f73473-87ac-404f-9b1e-070628aa7d80",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "a8d4dc9d-7bf9-463b-8bba-658a97aa63d9",
"metadata": {},
"source": [
"---\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 105,
"id": "49bf5e26-b41c-43fd-94a1-7a7deae67842",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"- Bcell-Precursor
- 'Bcell-Precursor'
- CLP
- 'CLP'
- Cycling-Progenitor
- 'Cycling-Progenitor'
- EoBasoMast-Precursor
- 'EoBasoMast-Precursor'
- Erytroid
- 'Erytroid'
- GMP
- 'GMP'
- HSC
- 'HSC'
- MDP
- 'MDP'
- MEP
- 'MEP'
- MLP
- 'MLP'
- MPP-MkEry
- 'MPP-MkEry'
- MPP-MyLy
- 'MPP-MyLy'
- Megakaryocyte-Precursor
- 'Megakaryocyte-Precursor'
- Mono
- 'Mono'
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[Bcell-Precursor] 'Bcell-Precursor'\n",
"\\item[CLP] 'CLP'\n",
"\\item[Cycling-Progenitor] 'Cycling-Progenitor'\n",
"\\item[EoBasoMast-Precursor] 'EoBasoMast-Precursor'\n",
"\\item[Erytroid] 'Erytroid'\n",
"\\item[GMP] 'GMP'\n",
"\\item[HSC] 'HSC'\n",
"\\item[MDP] 'MDP'\n",
"\\item[MEP] 'MEP'\n",
"\\item[MLP] 'MLP'\n",
"\\item[MPP-MkEry] 'MPP-MkEry'\n",
"\\item[MPP-MyLy] 'MPP-MyLy'\n",
"\\item[Megakaryocyte-Precursor] 'Megakaryocyte-Precursor'\n",
"\\item[Mono] 'Mono'\n",
"\\end{description*}\n"
],
"text/markdown": [
"Bcell-Precursor\n",
": 'Bcell-Precursor'CLP\n",
": 'CLP'Cycling-Progenitor\n",
": 'Cycling-Progenitor'EoBasoMast-Precursor\n",
": 'EoBasoMast-Precursor'Erytroid\n",
": 'Erytroid'GMP\n",
": 'GMP'HSC\n",
": 'HSC'MDP\n",
": 'MDP'MEP\n",
": 'MEP'MLP\n",
": 'MLP'MPP-MkEry\n",
": 'MPP-MkEry'MPP-MyLy\n",
": 'MPP-MyLy'Megakaryocyte-Precursor\n",
": 'Megakaryocyte-Precursor'Mono\n",
": 'Mono'\n",
"\n"
],
"text/plain": [
" Bcell-Precursor CLP Cycling-Progenitor \n",
" \"Bcell-Precursor\" \"CLP\" \"Cycling-Progenitor\" \n",
" EoBasoMast-Precursor Erytroid GMP \n",
" \"EoBasoMast-Precursor\" \"Erytroid\" \"GMP\" \n",
" HSC MDP MEP \n",
" \"HSC\" \"MDP\" \"MEP\" \n",
" MLP MPP-MkEry MPP-MyLy \n",
" \"MLP\" \"MPP-MkEry\" \"MPP-MyLy\" \n",
" Megakaryocyte-Precursor Mono \n",
"\"Megakaryocyte-Precursor\" \"Mono\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Named vector of cluster names\n",
"kids <- purrr::set_names(levels(sce$cluster_id))\n",
"kids"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f723473b-0ce7-42e7-9d47-69861ca84c27",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 106,
"id": "deecb6ca-c3bf-4b26-a76d-f99c67cfff74",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"14"
],
"text/latex": [
"14"
],
"text/markdown": [
"14"
],
"text/plain": [
"[1] 14"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Total number of clusters\n",
"nk <- length(kids)\n",
"nk"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c8f611d1-8281-436d-a699-be29d7167d99",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 107,
"id": "a885888a-e6a3-4141-aa9e-c58728d37ba3",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"- bthalSITTA3
- 'bthalSITTA3'
- bthalSITTB3
- 'bthalSITTB3'
- bthalSITTC12
- 'bthalSITTC12'
- bthalSITTC3
- 'bthalSITTC3'
- bthalSITTD12
- 'bthalSITTD12'
- bthalSITTE10
- 'bthalSITTE10'
- bthalSITTF10
- 'bthalSITTF10'
- bthalSITTG3
- 'bthalSITTG3'
- healthySITTC10
- 'healthySITTC10'
- healthySITTD10
- 'healthySITTD10'
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[bthalSITTA3] 'bthalSITTA3'\n",
"\\item[bthalSITTB3] 'bthalSITTB3'\n",
"\\item[bthalSITTC12] 'bthalSITTC12'\n",
"\\item[bthalSITTC3] 'bthalSITTC3'\n",
"\\item[bthalSITTD12] 'bthalSITTD12'\n",
"\\item[bthalSITTE10] 'bthalSITTE10'\n",
"\\item[bthalSITTF10] 'bthalSITTF10'\n",
"\\item[bthalSITTG3] 'bthalSITTG3'\n",
"\\item[healthySITTC10] 'healthySITTC10'\n",
"\\item[healthySITTD10] 'healthySITTD10'\n",
"\\end{description*}\n"
],
"text/markdown": [
"bthalSITTA3\n",
": 'bthalSITTA3'bthalSITTB3\n",
": 'bthalSITTB3'bthalSITTC12\n",
": 'bthalSITTC12'bthalSITTC3\n",
": 'bthalSITTC3'bthalSITTD12\n",
": 'bthalSITTD12'bthalSITTE10\n",
": 'bthalSITTE10'bthalSITTF10\n",
": 'bthalSITTF10'bthalSITTG3\n",
": 'bthalSITTG3'healthySITTC10\n",
": 'healthySITTC10'healthySITTD10\n",
": 'healthySITTD10'\n",
"\n"
],
"text/plain": [
" bthalSITTA3 bthalSITTB3 bthalSITTC12 bthalSITTC3 bthalSITTD12 \n",
" \"bthalSITTA3\" \"bthalSITTB3\" \"bthalSITTC12\" \"bthalSITTC3\" \"bthalSITTD12\" \n",
" bthalSITTE10 bthalSITTF10 bthalSITTG3 healthySITTC10 healthySITTD10 \n",
" \"bthalSITTE10\" \"bthalSITTF10\" \"bthalSITTG3\" \"healthySITTC10\" \"healthySITTD10\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Named vector of sample names\n",
"sids <- purrr::set_names(levels(sce$sample_id))\n",
"sids"
]
},
{
"cell_type": "code",
"execution_count": 108,
"id": "acfe74e5-c2e6-4e36-a459-14017e62a461",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"10"
],
"text/latex": [
"10"
],
"text/markdown": [
"10"
],
"text/plain": [
"[1] 10"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Total number of samples \n",
"ns <- length(sids)\n",
"ns"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6ba07c44-c2f6-49ee-a6a2-409ed236fb3b",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 109,
"id": "313a708d-273a-4387-8828-a5de3662ad0a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\n",
" bthalSITTA3 bthalSITTB3 bthalSITTC12 bthalSITTC3 bthalSITTD12 bthalSITTE10 \n",
" 3220 331 1970 336 496 6663 \n",
" bthalSITTF10 bthalSITTG3 healthySITTC10 healthySITTD10 \n",
" 6452 166 2066 2485 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"A data.frame: 10 × 16\n",
"\n",
"\tdonor | library | xample | population | condition | v6_leiden.20.0_annot_CB10 | v6_leiden.20.0_annot_CB45 | lineage.annot | lineage.andy | clusters_nicole | lineage_nicole | clusters_andy | lineage_andy | group_id | sample_id | n_cells |
\n",
"\t<fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <dbl> |
\n",
"\n",
"\n",
"\tbthal007 | SITTA3 | bthal007_BM_scr_CD34 | CD34 | bthal | 19_HSPC cycle | Pro-B Cycling | EryP/MyP mix | Bcell Precursor | 19-HSPC-cycle | EryP-MyP-mix | Pro-B-Cycling | Bcell-Precursor | bthal | bthalSITTA3 | 3220 |
\n",
"\tbthal008 | SITTB3 | bthal008_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTB3 | 331 |
\n",
"\tbthal005 | SITTC12 | bthal005_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTC12 | 1970 |
\n",
"\tbthal007 | SITTC3 | bthal007_BM_scr_CD38neg | CD34_CD38neg | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTC3 | 336 |
\n",
"\tbthal006 | SITTD12 | bthal006_BM_scr_CD34 | CD34 | bthal | 05_HSC/MPP3 | HSC | HSC/MPP | HSC | 05-HSC-MPP3 | HSC-MPP | HSC | HSC | bthal | bthalSITTD12 | 496 |
\n",
"\tbthal010 | SITTE10 | bthal010_BM_scr_HSC | HSCMPP | bthal | 00_HSC/MPP2 | HSC | HSC/MPP | HSC | 00-HSC-MPP2 | HSC-MPP | HSC | HSC | bthal | bthalSITTE10 | 6663 |
\n",
"\tbthal009 | SITTF10 | bthal009_BM_scr_HSC | HSCMPP | bthal | 04_HSC/MPP1 | HSC | HSC/MPP | HSC | 04-HSC-MPP1 | HSC-MPP | HSC | HSC | bthal | bthalSITTF10 | 6452 |
\n",
"\tbthal008 | SITTG3 | bthal008_BM_scr_CD34 | CD34 | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTG3 | 166 |
\n",
"\thealthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 05_HSC/MPP3 | MPP-MkEry | HSC/MPP | MPP-MkEry | 05-HSC-MPP3 | HSC-MPP | MPP-MkEry | MPP-MkEry | healthy | healthySITTC10 | 2066 |
\n",
"\thealthy_CTRL | SITTD10 | healthy_CTRL_CD34 | CD34 | healthy | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | healthy | healthySITTD10 | 2485 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 10 × 16\n",
"\\begin{tabular}{llllllllllllllll}\n",
" donor & library & xample & population & condition & v6\\_leiden.20.0\\_annot\\_CB10 & v6\\_leiden.20.0\\_annot\\_CB45 & lineage.annot & lineage.andy & clusters\\_nicole & lineage\\_nicole & clusters\\_andy & lineage\\_andy & group\\_id & sample\\_id & n\\_cells\\\\\n",
" & & & & & & & & & & & & & & & \\\\\n",
"\\hline\n",
"\t bthal007 & SITTA3 & bthal007\\_BM\\_scr\\_CD34 & CD34 & bthal & 19\\_HSPC cycle & Pro-B Cycling & EryP/MyP mix & Bcell Precursor & 19-HSPC-cycle & EryP-MyP-mix & Pro-B-Cycling & Bcell-Precursor & bthal & bthalSITTA3 & 3220\\\\\n",
"\t bthal008 & SITTB3 & bthal008\\_BM\\_scr\\_CD34 & CD34 & bthal & 15\\_MyP4 (GMP) & GMP-Mono & late MyP & GMP & 15-MyP4-(GMP) & late-MyP & GMP-Mono & GMP & bthal & bthalSITTB3 & 331\\\\\n",
"\t bthal005 & SITTC12 & bthal005\\_BM\\_scr\\_CD34 & CD34 & bthal & 15\\_MyP4 (GMP) & GMP-Mono & late MyP & GMP & 15-MyP4-(GMP) & late-MyP & GMP-Mono & GMP & bthal & bthalSITTC12 & 1970\\\\\n",
"\t bthal007 & SITTC3 & bthal007\\_BM\\_scr\\_CD38neg & CD34\\_CD38neg & bthal & 09\\_MyP2 & Early GMP & early MyP & GMP & 09-MyP2 & early-MyP & Early-GMP & GMP & bthal & bthalSITTC3 & 336\\\\\n",
"\t bthal006 & SITTD12 & bthal006\\_BM\\_scr\\_CD34 & CD34 & bthal & 05\\_HSC/MPP3 & HSC & HSC/MPP & HSC & 05-HSC-MPP3 & HSC-MPP & HSC & HSC & bthal & bthalSITTD12 & 496\\\\\n",
"\t bthal010 & SITTE10 & bthal010\\_BM\\_scr\\_HSC & HSCMPP & bthal & 00\\_HSC/MPP2 & HSC & HSC/MPP & HSC & 00-HSC-MPP2 & HSC-MPP & HSC & HSC & bthal & bthalSITTE10 & 6663\\\\\n",
"\t bthal009 & SITTF10 & bthal009\\_BM\\_scr\\_HSC & HSCMPP & bthal & 04\\_HSC/MPP1 & HSC & HSC/MPP & HSC & 04-HSC-MPP1 & HSC-MPP & HSC & HSC & bthal & bthalSITTF10 & 6452\\\\\n",
"\t bthal008 & SITTG3 & bthal008\\_BM\\_scr\\_CD34 & CD34 & bthal & 09\\_MyP2 & Early GMP & early MyP & GMP & 09-MyP2 & early-MyP & Early-GMP & GMP & bthal & bthalSITTG3 & 166\\\\\n",
"\t healthy\\_CTRL & SITTC10 & healthy\\_CTRL\\_HSC & HSCMPP & healthy & 05\\_HSC/MPP3 & MPP-MkEry & HSC/MPP & MPP-MkEry & 05-HSC-MPP3 & HSC-MPP & MPP-MkEry & MPP-MkEry & healthy & healthySITTC10 & 2066\\\\\n",
"\t healthy\\_CTRL & SITTD10 & healthy\\_CTRL\\_CD34 & CD34 & healthy & 09\\_MyP2 & Early GMP & early MyP & GMP & 09-MyP2 & early-MyP & Early-GMP & GMP & healthy & healthySITTD10 & 2485\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 10 × 16\n",
"\n",
"| donor <fct> | library <fct> | xample <fct> | population <fct> | condition <fct> | v6_leiden.20.0_annot_CB10 <fct> | v6_leiden.20.0_annot_CB45 <fct> | lineage.annot <fct> | lineage.andy <fct> | clusters_nicole <fct> | lineage_nicole <fct> | clusters_andy <fct> | lineage_andy <fct> | group_id <fct> | sample_id <fct> | n_cells <dbl> |\n",
"|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
"| bthal007 | SITTA3 | bthal007_BM_scr_CD34 | CD34 | bthal | 19_HSPC cycle | Pro-B Cycling | EryP/MyP mix | Bcell Precursor | 19-HSPC-cycle | EryP-MyP-mix | Pro-B-Cycling | Bcell-Precursor | bthal | bthalSITTA3 | 3220 |\n",
"| bthal008 | SITTB3 | bthal008_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTB3 | 331 |\n",
"| bthal005 | SITTC12 | bthal005_BM_scr_CD34 | CD34 | bthal | 15_MyP4 (GMP) | GMP-Mono | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | GMP-Mono | GMP | bthal | bthalSITTC12 | 1970 |\n",
"| bthal007 | SITTC3 | bthal007_BM_scr_CD38neg | CD34_CD38neg | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTC3 | 336 |\n",
"| bthal006 | SITTD12 | bthal006_BM_scr_CD34 | CD34 | bthal | 05_HSC/MPP3 | HSC | HSC/MPP | HSC | 05-HSC-MPP3 | HSC-MPP | HSC | HSC | bthal | bthalSITTD12 | 496 |\n",
"| bthal010 | SITTE10 | bthal010_BM_scr_HSC | HSCMPP | bthal | 00_HSC/MPP2 | HSC | HSC/MPP | HSC | 00-HSC-MPP2 | HSC-MPP | HSC | HSC | bthal | bthalSITTE10 | 6663 |\n",
"| bthal009 | SITTF10 | bthal009_BM_scr_HSC | HSCMPP | bthal | 04_HSC/MPP1 | HSC | HSC/MPP | HSC | 04-HSC-MPP1 | HSC-MPP | HSC | HSC | bthal | bthalSITTF10 | 6452 |\n",
"| bthal008 | SITTG3 | bthal008_BM_scr_CD34 | CD34 | bthal | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | bthal | bthalSITTG3 | 166 |\n",
"| healthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 05_HSC/MPP3 | MPP-MkEry | HSC/MPP | MPP-MkEry | 05-HSC-MPP3 | HSC-MPP | MPP-MkEry | MPP-MkEry | healthy | healthySITTC10 | 2066 |\n",
"| healthy_CTRL | SITTD10 | healthy_CTRL_CD34 | CD34 | healthy | 09_MyP2 | Early GMP | early MyP | GMP | 09-MyP2 | early-MyP | Early-GMP | GMP | healthy | healthySITTD10 | 2485 |\n",
"\n"
],
"text/plain": [
" donor library xample population condition v6_leiden.20.0_annot_CB10\n",
"1 bthal007 SITTA3 bthal007_BM_scr_CD34 CD34 bthal 19_HSPC cycle \n",
"2 bthal008 SITTB3 bthal008_BM_scr_CD34 CD34 bthal 15_MyP4 (GMP) \n",
"3 bthal005 SITTC12 bthal005_BM_scr_CD34 CD34 bthal 15_MyP4 (GMP) \n",
"4 bthal007 SITTC3 bthal007_BM_scr_CD38neg CD34_CD38neg bthal 09_MyP2 \n",
"5 bthal006 SITTD12 bthal006_BM_scr_CD34 CD34 bthal 05_HSC/MPP3 \n",
"6 bthal010 SITTE10 bthal010_BM_scr_HSC HSCMPP bthal 00_HSC/MPP2 \n",
"7 bthal009 SITTF10 bthal009_BM_scr_HSC HSCMPP bthal 04_HSC/MPP1 \n",
"8 bthal008 SITTG3 bthal008_BM_scr_CD34 CD34 bthal 09_MyP2 \n",
"9 healthy_CTRL SITTC10 healthy_CTRL_HSC HSCMPP healthy 05_HSC/MPP3 \n",
"10 healthy_CTRL SITTD10 healthy_CTRL_CD34 CD34 healthy 09_MyP2 \n",
" v6_leiden.20.0_annot_CB45 lineage.annot lineage.andy clusters_nicole lineage_nicole\n",
"1 Pro-B Cycling EryP/MyP mix Bcell Precursor 19-HSPC-cycle EryP-MyP-mix \n",
"2 GMP-Mono late MyP GMP 15-MyP4-(GMP) late-MyP \n",
"3 GMP-Mono late MyP GMP 15-MyP4-(GMP) late-MyP \n",
"4 Early GMP early MyP GMP 09-MyP2 early-MyP \n",
"5 HSC HSC/MPP HSC 05-HSC-MPP3 HSC-MPP \n",
"6 HSC HSC/MPP HSC 00-HSC-MPP2 HSC-MPP \n",
"7 HSC HSC/MPP HSC 04-HSC-MPP1 HSC-MPP \n",
"8 Early GMP early MyP GMP 09-MyP2 early-MyP \n",
"9 MPP-MkEry HSC/MPP MPP-MkEry 05-HSC-MPP3 HSC-MPP \n",
"10 Early GMP early MyP GMP 09-MyP2 early-MyP \n",
" clusters_andy lineage_andy group_id sample_id n_cells\n",
"1 Pro-B-Cycling Bcell-Precursor bthal bthalSITTA3 3220 \n",
"2 GMP-Mono GMP bthal bthalSITTB3 331 \n",
"3 GMP-Mono GMP bthal bthalSITTC12 1970 \n",
"4 Early-GMP GMP bthal bthalSITTC3 336 \n",
"5 HSC HSC bthal bthalSITTD12 496 \n",
"6 HSC HSC bthal bthalSITTE10 6663 \n",
"7 HSC HSC bthal bthalSITTF10 6452 \n",
"8 Early-GMP GMP bthal bthalSITTG3 166 \n",
"9 MPP-MkEry MPP-MkEry healthy healthySITTC10 2066 \n",
"10 Early-GMP GMP healthy healthySITTD10 2485 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Generate sample level metadata\n",
"\n",
"## Determine the number of cells per sample\n",
"table(sce$sample_id)\n",
"\n",
"## Turn named vector into a numeric vector of number of cells per sample\n",
"n_cells <- as.numeric(table(sce$sample_id))\n",
"\n",
"## Determine how to reoder the samples (rows) of the metadata to match the order of sample names in sids vector\n",
"m <- match(sids, sce$sample_id)\n",
"\n",
"## Create the sample level metadata by combining the reordered metadata with the number of cells corresponding to each sample.\n",
"ei <- data.frame(colData(sce)[m, ], \n",
" n_cells, row.names = NULL) %>% \n",
" select(-\"cluster_id\")\n",
"ei"
]
},
{
"cell_type": "code",
"execution_count": 110,
"id": "5f16dac2-2c0c-407f-ad3b-4098e83fd8c5",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- 20098
- 24185
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 20098\n",
"\\item 24185\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 20098\n",
"2. 24185\n",
"\n",
"\n"
],
"text/plain": [
"[1] 20098 24185"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dim(sce)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d1525e7b-1f0e-4392-8be1-4531e8e213d1",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "9312ee9a-407b-4f9d-aa14-09610b76fc61",
"metadata": {},
"source": [
"---\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c5eca43b-b6dc-4608-8c45-86b9cfd7a9a3",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "0eb64cc0-3937-4e01-8e66-3b775e90bd42",
"metadata": {},
"source": [
"#### Count aggregation to sample level\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 111,
"id": "a24c045c-3f3d-4b05-b528-d218942a69d4",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"'dgCMatrix'"
],
"text/latex": [
"'dgCMatrix'"
],
"text/markdown": [
"'dgCMatrix'"
],
"text/plain": [
"[1] \"dgCMatrix\"\n",
"attr(,\"package\")\n",
"[1] \"Matrix\""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"- 126
- 20098
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 126\n",
"\\item 20098\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 126\n",
"2. 20098\n",
"\n",
"\n"
],
"text/plain": [
"[1] 126 20098"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Aggregate the counts per sample_id and cluster_id\n",
"\n",
"# Subset metadata to only include the cluster and sample IDs to aggregate across\n",
"groups <- colData(sce)[, c(\"cluster_id\", \"sample_id\")]\n",
"\n",
"# Aggregate across cluster-sample groups\n",
"pb <- aggregate.Matrix(t(counts(sce)), \n",
" groupings = groups, fun = \"sum\") \n",
"\n",
"class(pb)\n",
"\n",
"dim(pb)\n",
"\n",
"# pb[1:6, 1:6]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fd1c2568-1914-422a-a459-013ed622c5c5",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 112,
"id": "0a0c4b9a-65de-4ba3-ae31-8c2609b4d1ab",
"metadata": {},
"outputs": [],
"source": [
"# Not every cluster is present in all samples; create a vector that represents how to split samples\n",
"splitf <- sapply(stringr::str_split(rownames(pb), \n",
" pattern = \"_\",\n",
" n = 2\n",
" ), \n",
" `[`, 1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "61c83c50-ca31-46cd-b767-6ab076bbf8f2",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 113,
"id": "ce22a8d6-9dcf-476e-9c94-d643a71a6f3f",
"metadata": {},
"outputs": [],
"source": [
"# Turn into a list and split the list into components for each cluster and transform, so rows are genes and columns are samples and make rownames as the sample IDs\n",
"pb <- split.data.frame(pb, \n",
" factor(splitf)) %>%\n",
" lapply(function(u) \n",
" magrittr::set_colnames(t(u), \n",
" stringr::str_extract(rownames(u), \"(?<=_)[:alnum:]+\")))\n",
"\n",
"# class(pb)\n",
"\n",
"# Explore the different components of list\n",
"# str(pb)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "36e8b099-fc4c-487b-9db3-ce623058d4ca",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 114,
"id": "3bb7c69a-a7e0-4e12-8d35-359b9e30a5cc",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" \n",
" bthalSITTA3 bthalSITTB3 bthalSITTC12 bthalSITTC3 bthalSITTD12\n",
" Bcell-Precursor 793 34 280 0 16\n",
" CLP 3 0 3 0 0\n",
" Cycling-Progenitor 227 9 93 36 48\n",
" EoBasoMast-Precursor 16 1 27 0 3\n",
" Erytroid 263 14 408 1 24\n",
" GMP 337 51 299 6 52\n",
" HSC 765 94 236 192 194\n",
" MDP 51 10 144 0 7\n",
" MEP 49 7 115 2 8\n",
" MLP 253 7 109 31 53\n",
" MPP-MkEry 172 13 121 26 30\n",
" MPP-MyLy 264 85 78 42 52\n",
" Megakaryocyte-Precursor 7 2 30 0 7\n",
" Mono 20 4 27 0 2\n",
" \n",
" bthalSITTE10 bthalSITTF10 bthalSITTG3 healthySITTC10 healthySITTD10\n",
" Bcell-Precursor 565 844 6 2 494\n",
" CLP 13 4 0 0 11\n",
" Cycling-Progenitor 461 441 16 175 217\n",
" EoBasoMast-Precursor 64 42 0 0 25\n",
" Erytroid 134 145 8 2 198\n",
" GMP 710 684 41 23 563\n",
" HSC 2541 2172 28 1226 295\n",
" MDP 188 231 7 0 211\n",
" MEP 107 120 10 28 27\n",
" MLP 601 533 13 158 215\n",
" MPP-MkEry 611 621 8 157 103\n",
" MPP-MyLy 631 579 20 292 93\n",
" Megakaryocyte-Precursor 17 21 4 3 11\n",
" Mono 20 15 5 0 22"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Print out the table of cells in each cluster-sample group\n",
"options(width = 100)\n",
"table(sce$cluster_id, sce$sample_id)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "736c60a2-5a2b-4e7b-8662-e3f3258fa27d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 115,
"id": "8075e936-bb5e-465a-8469-f17165bcc274",
"metadata": {},
"outputs": [],
"source": [
"# Get sample names for each of the cell type clusters\n",
"\n",
"# prep. data.frame for plotting\n",
"get_sample_ids <- function(x){\n",
" pb[[x]] %>%\n",
" colnames()\n",
"}\n",
"\n",
"de_samples <- purrr::map(1:length(kids), get_sample_ids) %>%\n",
" unlist()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "68c49466-73a8-4ffc-b685-651da9a21d7e",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 116,
"id": "10476216-68b2-4185-8bd9-53e100177207",
"metadata": {},
"outputs": [],
"source": [
"# Get cluster IDs for each of the samples\n",
"\n",
"samples_list <- purrr::map(1:length(kids), get_sample_ids)\n",
"\n",
"get_cluster_ids <- function(x){\n",
" rep(names(pb)[x], \n",
" each = length(samples_list[[x]]))\n",
"}\n",
"\n",
"de_cluster_ids <- purrr::map(1:length(kids), get_cluster_ids) %>%\n",
" unlist()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5ec108f4-753f-466d-a614-5ee5de2a34b3",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 117,
"id": "9b3a642d-1a4d-4946-8958-5e1ad69b3781",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[1m\u001b[22mJoining with `by = join_by(sample_id)`\n"
]
},
{
"data": {
"text/html": [
"\n",
"A data.frame: 6 × 3\n",
"\n",
"\t | cluster_id | sample_id | group_id |
\n",
"\t | <chr> | <chr> | <fct> |
\n",
"\n",
"\n",
"\t1 | Bcell-Precursor | bthalSITTA3 | bthal |
\n",
"\t2 | Bcell-Precursor | bthalSITTB3 | bthal |
\n",
"\t3 | Bcell-Precursor | bthalSITTC12 | bthal |
\n",
"\t4 | Bcell-Precursor | bthalSITTD12 | bthal |
\n",
"\t5 | Bcell-Precursor | bthalSITTE10 | bthal |
\n",
"\t6 | Bcell-Precursor | bthalSITTF10 | bthal |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 6 × 3\n",
"\\begin{tabular}{r|lll}\n",
" & cluster\\_id & sample\\_id & group\\_id\\\\\n",
" & & & \\\\\n",
"\\hline\n",
"\t1 & Bcell-Precursor & bthalSITTA3 & bthal\\\\\n",
"\t2 & Bcell-Precursor & bthalSITTB3 & bthal\\\\\n",
"\t3 & Bcell-Precursor & bthalSITTC12 & bthal\\\\\n",
"\t4 & Bcell-Precursor & bthalSITTD12 & bthal\\\\\n",
"\t5 & Bcell-Precursor & bthalSITTE10 & bthal\\\\\n",
"\t6 & Bcell-Precursor & bthalSITTF10 & bthal\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 6 × 3\n",
"\n",
"| | cluster_id <chr> | sample_id <chr> | group_id <fct> |\n",
"|---|---|---|---|\n",
"| 1 | Bcell-Precursor | bthalSITTA3 | bthal |\n",
"| 2 | Bcell-Precursor | bthalSITTB3 | bthal |\n",
"| 3 | Bcell-Precursor | bthalSITTC12 | bthal |\n",
"| 4 | Bcell-Precursor | bthalSITTD12 | bthal |\n",
"| 5 | Bcell-Precursor | bthalSITTE10 | bthal |\n",
"| 6 | Bcell-Precursor | bthalSITTF10 | bthal |\n",
"\n"
],
"text/plain": [
" cluster_id sample_id group_id\n",
"1 Bcell-Precursor bthalSITTA3 bthal \n",
"2 Bcell-Precursor bthalSITTB3 bthal \n",
"3 Bcell-Precursor bthalSITTC12 bthal \n",
"4 Bcell-Precursor bthalSITTD12 bthal \n",
"5 Bcell-Precursor bthalSITTE10 bthal \n",
"6 Bcell-Precursor bthalSITTF10 bthal "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Create a data frame with the sample IDs, cluster IDs and condition\n",
"\n",
"gg_df <- data.frame(cluster_id = de_cluster_ids,\n",
" sample_id = de_samples)\n",
"\n",
"gg_df <- left_join(gg_df, ei[, c(\"sample_id\", \"group_id\")]) \n",
"\n",
"\n",
"metadata <- gg_df %>%\n",
" dplyr::select(cluster_id, sample_id, group_id) \n",
" \n",
"head( metadata )"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e7c15f7b-c310-454c-aa17-f47322c95e72",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 118,
"id": "ce5e261c-c785-48c1-b9fb-53c36b0b132b",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- 'Bcell-Precursor'
- 'CLP'
- 'Cycling-Progenitor'
- 'EoBasoMast-Precursor'
- 'Erytroid'
- 'GMP'
- 'HSC'
- 'MDP'
- 'MEP'
- 'MLP'
- 'MPP-MkEry'
- 'MPP-MyLy'
- 'Megakaryocyte-Precursor'
- 'Mono'
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 'Bcell-Precursor'\n",
"\\item 'CLP'\n",
"\\item 'Cycling-Progenitor'\n",
"\\item 'EoBasoMast-Precursor'\n",
"\\item 'Erytroid'\n",
"\\item 'GMP'\n",
"\\item 'HSC'\n",
"\\item 'MDP'\n",
"\\item 'MEP'\n",
"\\item 'MLP'\n",
"\\item 'MPP-MkEry'\n",
"\\item 'MPP-MyLy'\n",
"\\item 'Megakaryocyte-Precursor'\n",
"\\item 'Mono'\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 'Bcell-Precursor'\n",
"2. 'CLP'\n",
"3. 'Cycling-Progenitor'\n",
"4. 'EoBasoMast-Precursor'\n",
"5. 'Erytroid'\n",
"6. 'GMP'\n",
"7. 'HSC'\n",
"8. 'MDP'\n",
"9. 'MEP'\n",
"10. 'MLP'\n",
"11. 'MPP-MkEry'\n",
"12. 'MPP-MyLy'\n",
"13. 'Megakaryocyte-Precursor'\n",
"14. 'Mono'\n",
"\n",
"\n"
],
"text/plain": [
" [1] \"Bcell-Precursor\" \"CLP\" \"Cycling-Progenitor\" \n",
" [4] \"EoBasoMast-Precursor\" \"Erytroid\" \"GMP\" \n",
" [7] \"HSC\" \"MDP\" \"MEP\" \n",
"[10] \"MLP\" \"MPP-MkEry\" \"MPP-MyLy\" \n",
"[13] \"Megakaryocyte-Precursor\" \"Mono\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Generate vector of cluster IDs\n",
"clusters <- levels(as.factor(metadata$cluster_id))\n",
"clusters"
]
},
{
"cell_type": "markdown",
"id": "b3f6f5b0-52be-4b47-acfa-6987e483b6af",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "be868f15-6f57-4a28-88fd-d35532442bcb",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "9dc25e21-0b03-425c-acd8-75c09e3dcccd",
"metadata": {},
"source": [
"#### Run DEx comparisons\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 119,
"id": "b299bf45-2535-433a-9789-3e7d15b92a32",
"metadata": {},
"outputs": [],
"source": [
"clusters <- c('HSC', 'MPP-MkEry', 'MPP-MyLy', 'MEP', 'Erytroid', 'MDP' )"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5846b5aa-24b1-419f-a1f4-209e45f30ead",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 120,
"id": "bc458b67-1cf5-40a6-a341-94eaa84531b3",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[1] \"2024-03-05 11:44:18 GMT\""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"HSC\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 48 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"MPP-MkEry\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 21 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"MPP-MyLy\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 31 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"MEP\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 11 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"Erytroid\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 2106 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1] \"MDP\"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n",
"using ntop=500 top features by variance\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n",
"-- replacing outliers and refitting for 2074 genes\n",
"-- DESeq argument 'minReplicatesForReplace' = 7 \n",
"-- original counts are preserved in counts(dds)\n",
"\n",
"estimating dispersions\n",
"\n",
"fitting model and testing\n",
"\n",
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n",
"\u001b[1m\u001b[22mSaving 6.67 x 6.67 in image\n",
"Warning message:\n",
"“\u001b[1m\u001b[22mTransformation introduced infinite values in continuous y-axis”\n"
]
},
{
"data": {
"text/html": [
"\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_HSC_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_MPP-MkEry_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_MPP-MyLy_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_MEP_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_Erytroid_bthal_vs_healthy_top20_DE_genes.png'
\n",
"\t- 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_MDP_bthal_vs_healthy_top20_DE_genes.png'
\n",
"
\n"
],
"text/latex": [
"\\begin{enumerate}\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C45\\_lineage\\_HSC\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C45\\_lineage\\_MPP-MkEry\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C45\\_lineage\\_MPP-MyLy\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C45\\_lineage\\_MEP\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C45\\_lineage\\_Erytroid\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\item 'output/dex/DESeq2\\_pairwise/20240305/20240305\\_bthalcombo\\_v6b\\_C45\\_lineage\\_MDP\\_bthal\\_vs\\_healthy\\_top20\\_DE\\_genes.png'\n",
"\\end{enumerate}\n"
],
"text/markdown": [
"1. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_HSC_bthal_vs_healthy_top20_DE_genes.png'\n",
"2. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_MPP-MkEry_bthal_vs_healthy_top20_DE_genes.png'\n",
"3. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_MPP-MyLy_bthal_vs_healthy_top20_DE_genes.png'\n",
"4. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_MEP_bthal_vs_healthy_top20_DE_genes.png'\n",
"5. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_Erytroid_bthal_vs_healthy_top20_DE_genes.png'\n",
"6. 'output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_MDP_bthal_vs_healthy_top20_DE_genes.png'\n",
"\n",
"\n"
],
"text/plain": [
"[[1]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_HSC_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[2]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_MPP-MkEry_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[3]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_MPP-MyLy_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[4]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_MEP_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[5]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_Erytroid_bthal_vs_healthy_top20_DE_genes.png\"\n",
"\n",
"[[6]]\n",
"[1] \"output/dex/DESeq2_pairwise/20240305/20240305_bthalcombo_v6b_C45_lineage_MDP_bthal_vs_healthy_top20_DE_genes.png\"\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"[1] \"2024-03-05 11:45:28 GMT\""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Sys.time()\n",
"\n",
"# Run the script on all clusters comparing bthal condition relative to healthy condition\n",
"purrr::map(1:length(clusters), get_dds_resultsAvsB, A = 1, B = 2)\n",
"\n",
"Sys.time()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d2f3f767-fa45-4af5-ba8c-6dbd7b47572b",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "40b5fabf-308a-410e-b734-8c67aaad208c",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "7239aac1-c649-4845-839a-0041c3e3b6b8",
"metadata": {},
"source": [
"## POINT 1)\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 121,
"id": "f924a298-8019-471d-810e-1f82f4cfb634",
"metadata": {},
"outputs": [],
"source": [
"hsc <- c('healthy_CTRL_HSC', 'bthal005_BM_scr_HSC', 'bthal006_BM_scr_HSC', 'bthal009_BM_scr_HSC', 'bthal010_BM_scr_HSC')"
]
},
{
"cell_type": "code",
"execution_count": 122,
"id": "a8d6e883-85a5-496e-998d-34ba6dc35416",
"metadata": {},
"outputs": [],
"source": [
"sce <- sce_copy[ , sce_copy@colData$xample %in% hsc]"
]
},
{
"cell_type": "code",
"execution_count": 123,
"id": "74c1af48-b678-4b0f-8cbe-ad5007393172",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- 20098
- 8782
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 20098\n",
"\\item 8782\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 20098\n",
"2. 8782\n",
"\n",
"\n"
],
"text/plain": [
"[1] 20098 8782"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dim(sce)"
]
},
{
"cell_type": "code",
"execution_count": 124,
"id": "189642b4-1a80-4653-b1c1-3ceec404d6a6",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"8782"
],
"text/latex": [
"8782"
],
"text/markdown": [
"8782"
],
"text/plain": [
"[1] 8782"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dim(sce)[2]"
]
},
{
"cell_type": "markdown",
"id": "29ffaf66-f8f3-46df-81a3-7a805bcf04f0",
"metadata": {},
"source": [
"#### Make some arbitrary pseudo-replicates"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "394a396f-7fe3-4dbf-8c8e-2fa4c89db51e",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 125,
"id": "c3b5a720-203d-4866-a8d4-b8ca00008dac",
"metadata": {},
"outputs": [],
"source": [
"sce@colData$replicate <- sample(c('rep1', 'rep2', 'rep3', 'rep4'),\n",
" prob=c(0.25, 0.25, 0.25, 0.25),\n",
" size=dim(sce)[2],\n",
" replace=TRUE)\n",
"\n",
"colData(sce)$replicate <- factor( colData(sce)$replicate )"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4cb85ace-82f5-4a5a-8527-61e5681478d7",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 126,
"id": "0ca47f71-8c08-4478-8768-231eca42fa92",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A data.frame: 20 × 3\n",
"\n",
"\txample | replicate | n |
\n",
"\t<fct> | <fct> | <int> |
\n",
"\n",
"\n",
"\tbthal005_BM_scr_HSC | rep1 | 11 |
\n",
"\tbthal005_BM_scr_HSC | rep2 | 19 |
\n",
"\tbthal005_BM_scr_HSC | rep3 | 14 |
\n",
"\tbthal005_BM_scr_HSC | rep4 | 12 |
\n",
"\tbthal006_BM_scr_HSC | rep1 | 12 |
\n",
"\tbthal006_BM_scr_HSC | rep2 | 11 |
\n",
"\tbthal006_BM_scr_HSC | rep3 | 11 |
\n",
"\tbthal006_BM_scr_HSC | rep4 | 14 |
\n",
"\tbthal009_BM_scr_HSC | rep1 | 875 |
\n",
"\tbthal009_BM_scr_HSC | rep2 | 866 |
\n",
"\tbthal009_BM_scr_HSC | rep3 | 877 |
\n",
"\tbthal009_BM_scr_HSC | rep4 | 845 |
\n",
"\tbthal010_BM_scr_HSC | rep1 | 744 |
\n",
"\tbthal010_BM_scr_HSC | rep2 | 823 |
\n",
"\tbthal010_BM_scr_HSC | rep3 | 812 |
\n",
"\tbthal010_BM_scr_HSC | rep4 | 770 |
\n",
"\thealthy_CTRL_HSC | rep1 | 506 |
\n",
"\thealthy_CTRL_HSC | rep2 | 526 |
\n",
"\thealthy_CTRL_HSC | rep3 | 495 |
\n",
"\thealthy_CTRL_HSC | rep4 | 539 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 20 × 3\n",
"\\begin{tabular}{lll}\n",
" xample & replicate & n\\\\\n",
" & & \\\\\n",
"\\hline\n",
"\t bthal005\\_BM\\_scr\\_HSC & rep1 & 11\\\\\n",
"\t bthal005\\_BM\\_scr\\_HSC & rep2 & 19\\\\\n",
"\t bthal005\\_BM\\_scr\\_HSC & rep3 & 14\\\\\n",
"\t bthal005\\_BM\\_scr\\_HSC & rep4 & 12\\\\\n",
"\t bthal006\\_BM\\_scr\\_HSC & rep1 & 12\\\\\n",
"\t bthal006\\_BM\\_scr\\_HSC & rep2 & 11\\\\\n",
"\t bthal006\\_BM\\_scr\\_HSC & rep3 & 11\\\\\n",
"\t bthal006\\_BM\\_scr\\_HSC & rep4 & 14\\\\\n",
"\t bthal009\\_BM\\_scr\\_HSC & rep1 & 875\\\\\n",
"\t bthal009\\_BM\\_scr\\_HSC & rep2 & 866\\\\\n",
"\t bthal009\\_BM\\_scr\\_HSC & rep3 & 877\\\\\n",
"\t bthal009\\_BM\\_scr\\_HSC & rep4 & 845\\\\\n",
"\t bthal010\\_BM\\_scr\\_HSC & rep1 & 744\\\\\n",
"\t bthal010\\_BM\\_scr\\_HSC & rep2 & 823\\\\\n",
"\t bthal010\\_BM\\_scr\\_HSC & rep3 & 812\\\\\n",
"\t bthal010\\_BM\\_scr\\_HSC & rep4 & 770\\\\\n",
"\t healthy\\_CTRL\\_HSC & rep1 & 506\\\\\n",
"\t healthy\\_CTRL\\_HSC & rep2 & 526\\\\\n",
"\t healthy\\_CTRL\\_HSC & rep3 & 495\\\\\n",
"\t healthy\\_CTRL\\_HSC & rep4 & 539\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 20 × 3\n",
"\n",
"| xample <fct> | replicate <fct> | n <int> |\n",
"|---|---|---|\n",
"| bthal005_BM_scr_HSC | rep1 | 11 |\n",
"| bthal005_BM_scr_HSC | rep2 | 19 |\n",
"| bthal005_BM_scr_HSC | rep3 | 14 |\n",
"| bthal005_BM_scr_HSC | rep4 | 12 |\n",
"| bthal006_BM_scr_HSC | rep1 | 12 |\n",
"| bthal006_BM_scr_HSC | rep2 | 11 |\n",
"| bthal006_BM_scr_HSC | rep3 | 11 |\n",
"| bthal006_BM_scr_HSC | rep4 | 14 |\n",
"| bthal009_BM_scr_HSC | rep1 | 875 |\n",
"| bthal009_BM_scr_HSC | rep2 | 866 |\n",
"| bthal009_BM_scr_HSC | rep3 | 877 |\n",
"| bthal009_BM_scr_HSC | rep4 | 845 |\n",
"| bthal010_BM_scr_HSC | rep1 | 744 |\n",
"| bthal010_BM_scr_HSC | rep2 | 823 |\n",
"| bthal010_BM_scr_HSC | rep3 | 812 |\n",
"| bthal010_BM_scr_HSC | rep4 | 770 |\n",
"| healthy_CTRL_HSC | rep1 | 506 |\n",
"| healthy_CTRL_HSC | rep2 | 526 |\n",
"| healthy_CTRL_HSC | rep3 | 495 |\n",
"| healthy_CTRL_HSC | rep4 | 539 |\n",
"\n"
],
"text/plain": [
" xample replicate n \n",
"1 bthal005_BM_scr_HSC rep1 11\n",
"2 bthal005_BM_scr_HSC rep2 19\n",
"3 bthal005_BM_scr_HSC rep3 14\n",
"4 bthal005_BM_scr_HSC rep4 12\n",
"5 bthal006_BM_scr_HSC rep1 12\n",
"6 bthal006_BM_scr_HSC rep2 11\n",
"7 bthal006_BM_scr_HSC rep3 11\n",
"8 bthal006_BM_scr_HSC rep4 14\n",
"9 bthal009_BM_scr_HSC rep1 875\n",
"10 bthal009_BM_scr_HSC rep2 866\n",
"11 bthal009_BM_scr_HSC rep3 877\n",
"12 bthal009_BM_scr_HSC rep4 845\n",
"13 bthal010_BM_scr_HSC rep1 744\n",
"14 bthal010_BM_scr_HSC rep2 823\n",
"15 bthal010_BM_scr_HSC rep3 812\n",
"16 bthal010_BM_scr_HSC rep4 770\n",
"17 healthy_CTRL_HSC rep1 506\n",
"18 healthy_CTRL_HSC rep2 526\n",
"19 healthy_CTRL_HSC rep3 495\n",
"20 healthy_CTRL_HSC rep4 539"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"as.data.frame(sce@colData) %>% count(xample, replicate)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "946af449-2337-4b17-adae-5779b24a36c2",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 127,
"id": "1014f6c0-8343-45e2-b308-90bb56a23a06",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A data.frame: 8 × 3\n",
"\n",
"\tcondition | replicate | n |
\n",
"\t<fct> | <fct> | <int> |
\n",
"\n",
"\n",
"\tbthal | rep1 | 1642 |
\n",
"\tbthal | rep2 | 1719 |
\n",
"\tbthal | rep3 | 1714 |
\n",
"\tbthal | rep4 | 1641 |
\n",
"\thealthy | rep1 | 506 |
\n",
"\thealthy | rep2 | 526 |
\n",
"\thealthy | rep3 | 495 |
\n",
"\thealthy | rep4 | 539 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 8 × 3\n",
"\\begin{tabular}{lll}\n",
" condition & replicate & n\\\\\n",
" & & \\\\\n",
"\\hline\n",
"\t bthal & rep1 & 1642\\\\\n",
"\t bthal & rep2 & 1719\\\\\n",
"\t bthal & rep3 & 1714\\\\\n",
"\t bthal & rep4 & 1641\\\\\n",
"\t healthy & rep1 & 506\\\\\n",
"\t healthy & rep2 & 526\\\\\n",
"\t healthy & rep3 & 495\\\\\n",
"\t healthy & rep4 & 539\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 8 × 3\n",
"\n",
"| condition <fct> | replicate <fct> | n <int> |\n",
"|---|---|---|\n",
"| bthal | rep1 | 1642 |\n",
"| bthal | rep2 | 1719 |\n",
"| bthal | rep3 | 1714 |\n",
"| bthal | rep4 | 1641 |\n",
"| healthy | rep1 | 506 |\n",
"| healthy | rep2 | 526 |\n",
"| healthy | rep3 | 495 |\n",
"| healthy | rep4 | 539 |\n",
"\n"
],
"text/plain": [
" condition replicate n \n",
"1 bthal rep1 1642\n",
"2 bthal rep2 1719\n",
"3 bthal rep3 1714\n",
"4 bthal rep4 1641\n",
"5 healthy rep1 506\n",
"6 healthy rep2 526\n",
"7 healthy rep3 495\n",
"8 healthy rep4 539"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"as.data.frame(sce@colData) %>% count(condition, replicate)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "97485370-6e2f-4ce0-a556-47eefc58567a",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 128,
"id": "88d4ecbd-ab29-41b8-99c6-8b004fe7ada1",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"colData(sce)$group_id <- factor( colData(sce)$condition )\n",
"\n",
"colData(sce)$sample_id <- factor( paste( colData(sce)$condition, colData(sce)$replicate, sep = '') )\n",
"\n",
"colData(sce)$donor <- factor( colData(sce)$donor )"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7e95b6d3-5c21-4749-bd62-b01fd5b52ae2",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 129,
"id": "5d3dec5f-7ff1-4d5f-b097-d03e03838fe7",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"HSCMPP\n",
"\n",
"\t\n",
"\t\tLevels:\n",
"\t
\n",
"\t\n",
"\t- ''
- 'CD34'
- 'CD34_CD38neg'
- 'HSCMPP'
\n",
" "
],
"text/latex": [
"HSCMPP\n",
"\\emph{Levels}: \\begin{enumerate*}\n",
"\\item ''\n",
"\\item 'CD34'\n",
"\\item 'CD34\\_CD38neg'\n",
"\\item 'HSCMPP'\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"HSCMPP\n",
"**Levels**: 1. ''\n",
"2. 'CD34'\n",
"3. 'CD34_CD38neg'\n",
"4. 'HSCMPP'\n",
"\n",
"\n"
],
"text/plain": [
"[1] HSCMPP\n",
"Levels: CD34 CD34_CD38neg HSCMPP"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"unique(colData(sce)$population)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "699e4deb-13b0-49b4-9fec-56292778d1b1",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 133,
"id": "92de3e4e-7c96-43bf-aca9-0bfc10bbf38f",
"metadata": {},
"outputs": [],
"source": [
"# resetting the levels\n",
"colData(sce)$population <- factor( colData(sce)$population )"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ab12b9b5-717c-466e-843b-ea87c09ca1f4",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "64e48ccb-6c85-4aee-8b4e-bc42903c3718",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "e23ce829-d50b-48d0-9ce3-032b3fa8daa3",
"metadata": {},
"source": [
"**Set cluster_id here for ease of code re-use/templating**"
]
},
{
"cell_type": "code",
"execution_count": 134,
"id": "93c4d9b3-1e37-46d9-ba17-6a9086d501e2",
"metadata": {},
"outputs": [],
"source": [
"sce$cluster_id <- sce$population # I want to encompass all cells in this subset"
]
},
{
"cell_type": "markdown",
"id": "e138c43c-ba77-4f97-a69b-f503bd227d5e",
"metadata": {},
"source": [
"---\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 135,
"id": "41e08892-633a-49fd-b8c0-cc2eaf6a78d5",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"HSCMPP: 'HSCMPP'"
],
"text/latex": [
"\\textbf{HSCMPP:} 'HSCMPP'"
],
"text/markdown": [
"**HSCMPP:** 'HSCMPP'"
],
"text/plain": [
" HSCMPP \n",
"\"HSCMPP\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Named vector of cluster names\n",
"kids <- purrr::set_names(levels(sce$cluster_id))\n",
"kids"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "dd54f648-24a7-4d56-9f41-c3529db15e46",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 136,
"id": "ce96f739-fb0f-4be9-a473-4bcf66a84f0c",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"1"
],
"text/latex": [
"1"
],
"text/markdown": [
"1"
],
"text/plain": [
"[1] 1"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Total number of clusters\n",
"nk <- length(kids)\n",
"nk"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2ba37972-ac4e-4e61-93a8-c05991c389ef",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 137,
"id": "20dc7597-1a28-4647-a666-6bc9d308848a",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"- bthalrep1
- 'bthalrep1'
- bthalrep2
- 'bthalrep2'
- bthalrep3
- 'bthalrep3'
- bthalrep4
- 'bthalrep4'
- healthyrep1
- 'healthyrep1'
- healthyrep2
- 'healthyrep2'
- healthyrep3
- 'healthyrep3'
- healthyrep4
- 'healthyrep4'
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[bthalrep1] 'bthalrep1'\n",
"\\item[bthalrep2] 'bthalrep2'\n",
"\\item[bthalrep3] 'bthalrep3'\n",
"\\item[bthalrep4] 'bthalrep4'\n",
"\\item[healthyrep1] 'healthyrep1'\n",
"\\item[healthyrep2] 'healthyrep2'\n",
"\\item[healthyrep3] 'healthyrep3'\n",
"\\item[healthyrep4] 'healthyrep4'\n",
"\\end{description*}\n"
],
"text/markdown": [
"bthalrep1\n",
": 'bthalrep1'bthalrep2\n",
": 'bthalrep2'bthalrep3\n",
": 'bthalrep3'bthalrep4\n",
": 'bthalrep4'healthyrep1\n",
": 'healthyrep1'healthyrep2\n",
": 'healthyrep2'healthyrep3\n",
": 'healthyrep3'healthyrep4\n",
": 'healthyrep4'\n",
"\n"
],
"text/plain": [
" bthalrep1 bthalrep2 bthalrep3 bthalrep4 healthyrep1 healthyrep2 healthyrep3 \n",
" \"bthalrep1\" \"bthalrep2\" \"bthalrep3\" \"bthalrep4\" \"healthyrep1\" \"healthyrep2\" \"healthyrep3\" \n",
" healthyrep4 \n",
"\"healthyrep4\" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Named vector of sample names\n",
"sids <- purrr::set_names(levels(sce$sample_id))\n",
"sids"
]
},
{
"cell_type": "code",
"execution_count": 138,
"id": "18e9332a-24a5-45ff-a93b-f1de283a2185",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"8"
],
"text/latex": [
"8"
],
"text/markdown": [
"8"
],
"text/plain": [
"[1] 8"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Total number of samples \n",
"ns <- length(sids)\n",
"ns"
]
},
{
"cell_type": "code",
"execution_count": 139,
"id": "a12ffe68-f947-4af6-ba48-587b336c8286",
"metadata": {},
"outputs": [],
"source": [
"library(dplyr)"
]
},
{
"cell_type": "code",
"execution_count": 140,
"id": "10f3de33-9de3-42d4-b177-887239d43ba5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\n",
" bthalrep1 bthalrep2 bthalrep3 bthalrep4 healthyrep1 healthyrep2 healthyrep3 healthyrep4 \n",
" 1642 1719 1714 1641 506 526 495 539 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"A data.frame: 8 × 17\n",
"\n",
"\tdonor | library | xample | population | condition | v6_leiden.20.0_annot_CB10 | v6_leiden.20.0_annot_CB45 | lineage.annot | lineage.andy | clusters_nicole | lineage_nicole | clusters_andy | lineage_andy | replicate | group_id | sample_id | n_cells |
\n",
"\t<fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <dbl> |
\n",
"\n",
"\n",
"\tbthal006 | SITTC12 | bthal006_BM_scr_HSC | HSCMPP | bthal | 06_MyP1 | LMPP | early MyP | MLP | 06-MyP1 | early-MyP | LMPP | MLP | rep1 | bthal | bthalrep1 | 1642 |
\n",
"\tbthal006 | SITTC12 | bthal006_BM_scr_HSC | HSCMPP | bthal | 15_MyP4 (GMP) | Early GMP | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | Early-GMP | GMP | rep2 | bthal | bthalrep2 | 1719 |
\n",
"\tbthal006 | SITTC12 | bthal006_BM_scr_HSC | HSCMPP | bthal | 05_HSC/MPP3 | HSC | HSC/MPP | HSC | 05-HSC-MPP3 | HSC-MPP | HSC | HSC | rep3 | bthal | bthalrep3 | 1714 |
\n",
"\tbthal006 | SITTC12 | bthal006_BM_scr_HSC | HSCMPP | bthal | 05_HSC/MPP3 | HSC | HSC/MPP | HSC | 05-HSC-MPP3 | HSC-MPP | HSC | HSC | rep4 | bthal | bthalrep4 | 1641 |
\n",
"\thealthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 05_HSC/MPP3 | HSC | HSC/MPP | HSC | 05-HSC-MPP3 | HSC-MPP | HSC | HSC | rep1 | healthy | healthyrep1 | 506 |
\n",
"\thealthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 05_HSC/MPP3 | MPP-MkEry | HSC/MPP | MPP-MkEry | 05-HSC-MPP3 | HSC-MPP | MPP-MkEry | MPP-MkEry | rep2 | healthy | healthyrep2 | 526 |
\n",
"\thealthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 05_HSC/MPP3 | MPP-MyLy | HSC/MPP | MPP-MyLy | 05-HSC-MPP3 | HSC-MPP | MPP-MyLy | MPP-MyLy | rep3 | healthy | healthyrep3 | 495 |
\n",
"\thealthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 04_HSC/MPP1 | HSC | HSC/MPP | HSC | 04-HSC-MPP1 | HSC-MPP | HSC | HSC | rep4 | healthy | healthyrep4 | 539 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 8 × 17\n",
"\\begin{tabular}{lllllllllllllllll}\n",
" donor & library & xample & population & condition & v6\\_leiden.20.0\\_annot\\_CB10 & v6\\_leiden.20.0\\_annot\\_CB45 & lineage.annot & lineage.andy & clusters\\_nicole & lineage\\_nicole & clusters\\_andy & lineage\\_andy & replicate & group\\_id & sample\\_id & n\\_cells\\\\\n",
" & & & & & & & & & & & & & & & & \\\\\n",
"\\hline\n",
"\t bthal006 & SITTC12 & bthal006\\_BM\\_scr\\_HSC & HSCMPP & bthal & 06\\_MyP1 & LMPP & early MyP & MLP & 06-MyP1 & early-MyP & LMPP & MLP & rep1 & bthal & bthalrep1 & 1642\\\\\n",
"\t bthal006 & SITTC12 & bthal006\\_BM\\_scr\\_HSC & HSCMPP & bthal & 15\\_MyP4 (GMP) & Early GMP & late MyP & GMP & 15-MyP4-(GMP) & late-MyP & Early-GMP & GMP & rep2 & bthal & bthalrep2 & 1719\\\\\n",
"\t bthal006 & SITTC12 & bthal006\\_BM\\_scr\\_HSC & HSCMPP & bthal & 05\\_HSC/MPP3 & HSC & HSC/MPP & HSC & 05-HSC-MPP3 & HSC-MPP & HSC & HSC & rep3 & bthal & bthalrep3 & 1714\\\\\n",
"\t bthal006 & SITTC12 & bthal006\\_BM\\_scr\\_HSC & HSCMPP & bthal & 05\\_HSC/MPP3 & HSC & HSC/MPP & HSC & 05-HSC-MPP3 & HSC-MPP & HSC & HSC & rep4 & bthal & bthalrep4 & 1641\\\\\n",
"\t healthy\\_CTRL & SITTC10 & healthy\\_CTRL\\_HSC & HSCMPP & healthy & 05\\_HSC/MPP3 & HSC & HSC/MPP & HSC & 05-HSC-MPP3 & HSC-MPP & HSC & HSC & rep1 & healthy & healthyrep1 & 506\\\\\n",
"\t healthy\\_CTRL & SITTC10 & healthy\\_CTRL\\_HSC & HSCMPP & healthy & 05\\_HSC/MPP3 & MPP-MkEry & HSC/MPP & MPP-MkEry & 05-HSC-MPP3 & HSC-MPP & MPP-MkEry & MPP-MkEry & rep2 & healthy & healthyrep2 & 526\\\\\n",
"\t healthy\\_CTRL & SITTC10 & healthy\\_CTRL\\_HSC & HSCMPP & healthy & 05\\_HSC/MPP3 & MPP-MyLy & HSC/MPP & MPP-MyLy & 05-HSC-MPP3 & HSC-MPP & MPP-MyLy & MPP-MyLy & rep3 & healthy & healthyrep3 & 495\\\\\n",
"\t healthy\\_CTRL & SITTC10 & healthy\\_CTRL\\_HSC & HSCMPP & healthy & 04\\_HSC/MPP1 & HSC & HSC/MPP & HSC & 04-HSC-MPP1 & HSC-MPP & HSC & HSC & rep4 & healthy & healthyrep4 & 539\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 8 × 17\n",
"\n",
"| donor <fct> | library <fct> | xample <fct> | population <fct> | condition <fct> | v6_leiden.20.0_annot_CB10 <fct> | v6_leiden.20.0_annot_CB45 <fct> | lineage.annot <fct> | lineage.andy <fct> | clusters_nicole <fct> | lineage_nicole <fct> | clusters_andy <fct> | lineage_andy <fct> | replicate <fct> | group_id <fct> | sample_id <fct> | n_cells <dbl> |\n",
"|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
"| bthal006 | SITTC12 | bthal006_BM_scr_HSC | HSCMPP | bthal | 06_MyP1 | LMPP | early MyP | MLP | 06-MyP1 | early-MyP | LMPP | MLP | rep1 | bthal | bthalrep1 | 1642 |\n",
"| bthal006 | SITTC12 | bthal006_BM_scr_HSC | HSCMPP | bthal | 15_MyP4 (GMP) | Early GMP | late MyP | GMP | 15-MyP4-(GMP) | late-MyP | Early-GMP | GMP | rep2 | bthal | bthalrep2 | 1719 |\n",
"| bthal006 | SITTC12 | bthal006_BM_scr_HSC | HSCMPP | bthal | 05_HSC/MPP3 | HSC | HSC/MPP | HSC | 05-HSC-MPP3 | HSC-MPP | HSC | HSC | rep3 | bthal | bthalrep3 | 1714 |\n",
"| bthal006 | SITTC12 | bthal006_BM_scr_HSC | HSCMPP | bthal | 05_HSC/MPP3 | HSC | HSC/MPP | HSC | 05-HSC-MPP3 | HSC-MPP | HSC | HSC | rep4 | bthal | bthalrep4 | 1641 |\n",
"| healthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 05_HSC/MPP3 | HSC | HSC/MPP | HSC | 05-HSC-MPP3 | HSC-MPP | HSC | HSC | rep1 | healthy | healthyrep1 | 506 |\n",
"| healthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 05_HSC/MPP3 | MPP-MkEry | HSC/MPP | MPP-MkEry | 05-HSC-MPP3 | HSC-MPP | MPP-MkEry | MPP-MkEry | rep2 | healthy | healthyrep2 | 526 |\n",
"| healthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 05_HSC/MPP3 | MPP-MyLy | HSC/MPP | MPP-MyLy | 05-HSC-MPP3 | HSC-MPP | MPP-MyLy | MPP-MyLy | rep3 | healthy | healthyrep3 | 495 |\n",
"| healthy_CTRL | SITTC10 | healthy_CTRL_HSC | HSCMPP | healthy | 04_HSC/MPP1 | HSC | HSC/MPP | HSC | 04-HSC-MPP1 | HSC-MPP | HSC | HSC | rep4 | healthy | healthyrep4 | 539 |\n",
"\n"
],
"text/plain": [
" donor library xample population condition v6_leiden.20.0_annot_CB10\n",
"1 bthal006 SITTC12 bthal006_BM_scr_HSC HSCMPP bthal 06_MyP1 \n",
"2 bthal006 SITTC12 bthal006_BM_scr_HSC HSCMPP bthal 15_MyP4 (GMP) \n",
"3 bthal006 SITTC12 bthal006_BM_scr_HSC HSCMPP bthal 05_HSC/MPP3 \n",
"4 bthal006 SITTC12 bthal006_BM_scr_HSC HSCMPP bthal 05_HSC/MPP3 \n",
"5 healthy_CTRL SITTC10 healthy_CTRL_HSC HSCMPP healthy 05_HSC/MPP3 \n",
"6 healthy_CTRL SITTC10 healthy_CTRL_HSC HSCMPP healthy 05_HSC/MPP3 \n",
"7 healthy_CTRL SITTC10 healthy_CTRL_HSC HSCMPP healthy 05_HSC/MPP3 \n",
"8 healthy_CTRL SITTC10 healthy_CTRL_HSC HSCMPP healthy 04_HSC/MPP1 \n",
" v6_leiden.20.0_annot_CB45 lineage.annot lineage.andy clusters_nicole lineage_nicole clusters_andy\n",
"1 LMPP early MyP MLP 06-MyP1 early-MyP LMPP \n",
"2 Early GMP late MyP GMP 15-MyP4-(GMP) late-MyP Early-GMP \n",
"3 HSC HSC/MPP HSC 05-HSC-MPP3 HSC-MPP HSC \n",
"4 HSC HSC/MPP HSC 05-HSC-MPP3 HSC-MPP HSC \n",
"5 HSC HSC/MPP HSC 05-HSC-MPP3 HSC-MPP HSC \n",
"6 MPP-MkEry HSC/MPP MPP-MkEry 05-HSC-MPP3 HSC-MPP MPP-MkEry \n",
"7 MPP-MyLy HSC/MPP MPP-MyLy 05-HSC-MPP3 HSC-MPP MPP-MyLy \n",
"8 HSC HSC/MPP HSC 04-HSC-MPP1 HSC-MPP HSC \n",
" lineage_andy replicate group_id sample_id n_cells\n",
"1 MLP rep1 bthal bthalrep1 1642 \n",
"2 GMP rep2 bthal bthalrep2 1719 \n",
"3 HSC rep3 bthal bthalrep3 1714 \n",
"4 HSC rep4 bthal bthalrep4 1641 \n",
"5 HSC rep1 healthy healthyrep1 506 \n",
"6 MPP-MkEry rep2 healthy healthyrep2 526 \n",
"7 MPP-MyLy rep3 healthy healthyrep3 495 \n",
"8 HSC rep4 healthy healthyrep4 539 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Generate sample level metadata\n",
"\n",
"## Determine the number of cells per sample\n",
"table(sce$sample_id)\n",
"\n",
"## Turn named vector into a numeric vector of number of cells per sample\n",
"n_cells <- as.numeric(table(sce$sample_id))\n",
"\n",
"## Determine how to reoder the samples (rows) of the metadata to match the order of sample names in sids vector\n",
"m <- match(sids, sce$sample_id)\n",
"\n",
"## Create the sample level metadata by combining the reordered metadata with the number of cells corresponding to each sample.\n",
"ei <- data.frame(colData(sce)[m, ], \n",
" n_cells, row.names = NULL) %>% \n",
" select(-\"cluster_id\")\n",
"ei"
]
},
{
"cell_type": "code",
"execution_count": 141,
"id": "c292a0aa-e034-466a-b183-21be277279cd",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- 20098
- 8782
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 20098\n",
"\\item 8782\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 20098\n",
"2. 8782\n",
"\n",
"\n"
],
"text/plain": [
"[1] 20098 8782"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dim(sce)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9b2a6a27-1bd4-4294-8776-a2b9df43c0f2",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "9ebf2cbe-4bf1-44af-9187-a19ed1c938cf",
"metadata": {},
"source": [
"---\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "07784b4b-098e-4301-a937-a457c942f466",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "e4b1ab12-8452-445c-815d-d7a002f14944",
"metadata": {},
"source": [
"#### Count aggregation to sample level\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 142,
"id": "3444dd62-fa6e-46df-ae95-6ec7895239d6",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"'dgCMatrix'"
],
"text/latex": [
"'dgCMatrix'"
],
"text/markdown": [
"'dgCMatrix'"
],
"text/plain": [
"[1] \"dgCMatrix\"\n",
"attr(,\"package\")\n",
"[1] \"Matrix\""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"- 8
- 20098
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 8\n",
"\\item 20098\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 8\n",
"2. 20098\n",
"\n",
"\n"
],
"text/plain": [
"[1] 8 20098"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"6 x 6 sparse Matrix of class \"dgCMatrix\"\n",
" RP11-34P13.7 AL627309.1 AP006222.2 RP4-669L17.10 RP5-857K21.4 RP11-206L10.3\n",
"HSCMPP_bthalrep1 5 16 141 13 1 75\n",
"HSCMPP_bthalrep2 2 29 160 13 . 74\n",
"HSCMPP_bthalrep3 5 26 169 16 2 79\n",
"HSCMPP_bthalrep4 8 17 169 6 1 76\n",
"HSCMPP_healthyrep1 1 12 55 6 2 27\n",
"HSCMPP_healthyrep2 2 25 57 3 . 32"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Aggregate the counts per sample_id and cluster_id\n",
"\n",
"library(Matrix.utils)\n",
"\n",
"# Subset metadata to only include the cluster and sample IDs to aggregate across\n",
"groups <- colData(sce)[, c(\"cluster_id\", \"sample_id\")]\n",
"\n",
"# Aggregate across cluster-sample groups\n",
"pb <- aggregate.Matrix(t(counts(sce)), \n",
" groupings = groups, fun = \"sum\") \n",
"\n",
"class(pb)\n",
"\n",
"dim(pb)\n",
"\n",
"pb[1:6, 1:6]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "82cacbda-6472-47da-a243-fca29376603a",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 143,
"id": "4dd6be89-c5c6-4e10-9034-2d0b9700d08b",
"metadata": {},
"outputs": [],
"source": [
"# Not every cluster is present in all samples; create a vector that represents how to split samples\n",
"splitf <- sapply(stringr::str_split(rownames(pb), \n",
" pattern = \"_\",\n",
" n = 2\n",
" ), \n",
" `[`, 1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "627bbb54-7170-44cd-a033-d07a86701515",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 144,
"id": "c400b382-85f2-4ac4-bff5-055909b54c7c",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"'list'"
],
"text/latex": [
"'list'"
],
"text/markdown": [
"'list'"
],
"text/plain": [
"[1] \"list\""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"List of 1\n",
" $ HSCMPP:Formal class 'dgCMatrix' [package \"Matrix\"] with 6 slots\n",
" .. ..@ i : int [1:141305] 0 1 2 3 4 5 7 8 9 11 ...\n",
" .. ..@ p : int [1:9] 0 18362 36841 55283 73629 90447 107352 124211 141305\n",
" .. ..@ Dim : int [1:2] 20098 8\n",
" .. ..@ Dimnames:List of 2\n",
" .. .. ..$ : chr [1:20098] \"RP11-34P13.7\" \"AL627309.1\" \"AP006222.2\" \"RP4-669L17.10\" ...\n",
" .. .. ..$ : chr [1:8] \"bthalrep1\" \"bthalrep2\" \"bthalrep3\" \"bthalrep4\" ...\n",
" .. ..@ x : num [1:141305] 5 16 141 13 1 75 4 168 98 72 ...\n",
" .. ..@ factors : list()\n"
]
}
],
"source": [
"# Turn into a list and split the list into components for each cluster and transform, so rows are genes and columns are samples and make rownames as the sample IDs\n",
"pb <- split.data.frame(pb, \n",
" factor(splitf)) %>%\n",
" lapply(function(u) \n",
" magrittr::set_colnames(t(u), \n",
" stringr::str_extract(rownames(u), \"(?<=_)[:alnum:]+\")))\n",
"\n",
"class(pb)\n",
"\n",
"# Explore the different components of list\n",
"str(pb)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "82da6782-bdc9-48f8-982d-3847999d081c",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 145,
"id": "197b0fce-9039-4e07-b2eb-0b8b09122e65",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" \n",
" bthalrep1 bthalrep2 bthalrep3 bthalrep4 healthyrep1 healthyrep2 healthyrep3 healthyrep4\n",
" HSCMPP 1642 1719 1714 1641 506 526 495 539"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Print out the table of cells in each cluster-sample group\n",
"options(width = 100)\n",
"table(sce$cluster_id, sce$sample_id)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6b4c5bf7-61bc-4307-ab3f-368a1c9addb5",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 146,
"id": "6720a8fb-8e7e-444d-90b0-a0da8b9e580d",
"metadata": {},
"outputs": [],
"source": [
"# Get sample names for each of the cell type clusters\n",
"\n",
"# prep. data.frame for plotting\n",
"get_sample_ids <- function(x){\n",
" pb[[x]] %>%\n",
" colnames()\n",
"}\n",
"\n",
"de_samples <- purrr::map(1:length(kids), get_sample_ids) %>%\n",
" unlist()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "615802f7-b464-47d8-9633-4b0d445a48b9",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 147,
"id": "b3eb61c6-60a7-43db-a157-6405313c38a6",
"metadata": {},
"outputs": [],
"source": [
"# Get cluster IDs for each of the samples\n",
"\n",
"samples_list <- purrr::map(1:length(kids), get_sample_ids)\n",
"\n",
"get_cluster_ids <- function(x){\n",
" rep(names(pb)[x], \n",
" each = length(samples_list[[x]]))\n",
"}\n",
"\n",
"de_cluster_ids <- purrr::map(1:length(kids), get_cluster_ids) %>%\n",
" unlist()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f6d18c17-82f8-438e-adc6-050e9e570a68",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 148,
"id": "79d0d77f-9862-47e8-9946-f1d849051a78",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[1m\u001b[22mJoining with `by = join_by(sample_id)`\n"
]
},
{
"data": {
"text/html": [
"\n",
"A data.frame: 8 × 3\n",
"\n",
"\tcluster_id | sample_id | group_id |
\n",
"\t<chr> | <chr> | <fct> |
\n",
"\n",
"\n",
"\tHSCMPP | bthalrep1 | bthal |
\n",
"\tHSCMPP | bthalrep2 | bthal |
\n",
"\tHSCMPP | bthalrep3 | bthal |
\n",
"\tHSCMPP | bthalrep4 | bthal |
\n",
"\tHSCMPP | healthyrep1 | healthy |
\n",
"\tHSCMPP | healthyrep2 | healthy |
\n",
"\tHSCMPP | healthyrep3 | healthy |
\n",
"\tHSCMPP | healthyrep4 | healthy |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 8 × 3\n",
"\\begin{tabular}{lll}\n",
" cluster\\_id & sample\\_id & group\\_id\\\\\n",
" & & \\\\\n",
"\\hline\n",
"\t HSCMPP & bthalrep1 & bthal \\\\\n",
"\t HSCMPP & bthalrep2 & bthal \\\\\n",
"\t HSCMPP & bthalrep3 & bthal \\\\\n",
"\t HSCMPP & bthalrep4 & bthal \\\\\n",
"\t HSCMPP & healthyrep1 & healthy\\\\\n",
"\t HSCMPP & healthyrep2 & healthy\\\\\n",
"\t HSCMPP & healthyrep3 & healthy\\\\\n",
"\t HSCMPP & healthyrep4 & healthy\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 8 × 3\n",
"\n",
"| cluster_id <chr> | sample_id <chr> | group_id <fct> |\n",
"|---|---|---|\n",
"| HSCMPP | bthalrep1 | bthal |\n",
"| HSCMPP | bthalrep2 | bthal |\n",
"| HSCMPP | bthalrep3 | bthal |\n",
"| HSCMPP | bthalrep4 | bthal |\n",
"| HSCMPP | healthyrep1 | healthy |\n",
"| HSCMPP | healthyrep2 | healthy |\n",
"| HSCMPP | healthyrep3 | healthy |\n",
"| HSCMPP | healthyrep4 | healthy |\n",
"\n"
],
"text/plain": [
" cluster_id sample_id group_id\n",
"1 HSCMPP bthalrep1 bthal \n",
"2 HSCMPP bthalrep2 bthal \n",
"3 HSCMPP bthalrep3 bthal \n",
"4 HSCMPP bthalrep4 bthal \n",
"5 HSCMPP healthyrep1 healthy \n",
"6 HSCMPP healthyrep2 healthy \n",
"7 HSCMPP healthyrep3 healthy \n",
"8 HSCMPP healthyrep4 healthy "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Create a data frame with the sample IDs, cluster IDs and condition\n",
"\n",
"gg_df <- data.frame(cluster_id = de_cluster_ids,\n",
" sample_id = de_samples)\n",
"\n",
"gg_df <- left_join(gg_df, ei[, c(\"sample_id\", \"group_id\")]) \n",
"\n",
"\n",
"metadata <- gg_df %>%\n",
" dplyr::select(cluster_id, sample_id, group_id) \n",
" \n",
"metadata"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1bbae9f6-ed6d-4740-a100-b5e94eeb15eb",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 149,
"id": "030df015-de6f-4ea1-be4e-174766114e88",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"'HSCMPP'"
],
"text/latex": [
"'HSCMPP'"
],
"text/markdown": [
"'HSCMPP'"
],
"text/plain": [
"[1] \"HSCMPP\""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Generate vector of cluster IDs\n",
"clusters <- levels(as.factor(metadata$cluster_id))\n",
"clusters"
]
},
{
"cell_type": "markdown",
"id": "46866a00-e9f6-4176-a9e0-2ab6ef78ef0e",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "170b2724-6e7a-45c5-a8e7-ba21fc0dccf7",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 151,
"id": "6bc647f6-8cdc-4124-837b-7039d310b205",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A data.frame: 6 × 3\n",
"\n",
"\t | cluster_id | sample_id | group_id |
\n",
"\t | <chr> | <chr> | <fct> |
\n",
"\n",
"\n",
"\tbthalrep1 | HSCMPP | bthalrep1 | bthal |
\n",
"\tbthalrep2 | HSCMPP | bthalrep2 | bthal |
\n",
"\tbthalrep3 | HSCMPP | bthalrep3 | bthal |
\n",
"\tbthalrep4 | HSCMPP | bthalrep4 | bthal |
\n",
"\thealthyrep1 | HSCMPP | healthyrep1 | healthy |
\n",
"\thealthyrep2 | HSCMPP | healthyrep2 | healthy |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 6 × 3\n",
"\\begin{tabular}{r|lll}\n",
" & cluster\\_id & sample\\_id & group\\_id\\\\\n",
" & & & \\\\\n",
"\\hline\n",
"\tbthalrep1 & HSCMPP & bthalrep1 & bthal \\\\\n",
"\tbthalrep2 & HSCMPP & bthalrep2 & bthal \\\\\n",
"\tbthalrep3 & HSCMPP & bthalrep3 & bthal \\\\\n",
"\tbthalrep4 & HSCMPP & bthalrep4 & bthal \\\\\n",
"\thealthyrep1 & HSCMPP & healthyrep1 & healthy\\\\\n",
"\thealthyrep2 & HSCMPP & healthyrep2 & healthy\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 6 × 3\n",
"\n",
"| | cluster_id <chr> | sample_id <chr> | group_id <fct> |\n",
"|---|---|---|---|\n",
"| bthalrep1 | HSCMPP | bthalrep1 | bthal |\n",
"| bthalrep2 | HSCMPP | bthalrep2 | bthal |\n",
"| bthalrep3 | HSCMPP | bthalrep3 | bthal |\n",
"| bthalrep4 | HSCMPP | bthalrep4 | bthal |\n",
"| healthyrep1 | HSCMPP | healthyrep1 | healthy |\n",
"| healthyrep2 | HSCMPP | healthyrep2 | healthy |\n",
"\n"
],
"text/plain": [
" cluster_id sample_id group_id\n",
"bthalrep1 HSCMPP bthalrep1 bthal \n",
"bthalrep2 HSCMPP bthalrep2 bthal \n",
"bthalrep3 HSCMPP bthalrep3 bthal \n",
"bthalrep4 HSCMPP bthalrep4 bthal \n",
"healthyrep1 HSCMPP healthyrep1 healthy \n",
"healthyrep2 HSCMPP healthyrep2 healthy "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"TRUE"
],
"text/latex": [
"TRUE"
],
"text/markdown": [
"TRUE"
],
"text/plain": [
"[1] TRUE"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cluster = 'HSCMPP'\n",
"\n",
"# Subset the metadata to only the X cells\n",
"cluster_metadata <- metadata[which(metadata$cluster_id == cluster), ]\n",
"#head(cluster_metadata)\n",
"\n",
"# Assign the rownames of the metadata to be the sample IDs\n",
"rownames(cluster_metadata) <- cluster_metadata$sample_id\n",
"head(cluster_metadata)\n",
"\n",
"# Subset the counts to only the X cells\n",
"counts <- pb[[cluster]]\n",
"\n",
"cluster_counts <- data.frame(as.matrix(counts)[, which(colnames(counts) %in% rownames(cluster_metadata))])\n",
"\n",
"# Check that all of the row names of the metadata are the same and in the same order as the column names of the counts in order to use as input to DESeq2\n",
"all(rownames(cluster_metadata) == colnames(cluster_counts))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e6fdcf91-96f3-4eaf-95fe-64b9af66ed9c",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 154,
"id": "06f24494-8d35-4a06-868c-769efe2ffee4",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A data.frame: 6 × 8\n",
"\n",
"\t | bthalrep1 | bthalrep2 | bthalrep3 | bthalrep4 | healthyrep1 | healthyrep2 | healthyrep3 | healthyrep4 |
\n",
"\t | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> |
\n",
"\n",
"\n",
"\tRP11-34P13.7 | 5 | 2 | 5 | 8 | 1 | 2 | 4 | 0 |
\n",
"\tAL627309.1 | 16 | 29 | 26 | 17 | 12 | 25 | 21 | 17 |
\n",
"\tAP006222.2 | 141 | 160 | 169 | 169 | 55 | 57 | 54 | 46 |
\n",
"\tRP4-669L17.10 | 13 | 13 | 16 | 6 | 6 | 3 | 5 | 4 |
\n",
"\tRP5-857K21.4 | 1 | 0 | 2 | 1 | 2 | 0 | 0 | 0 |
\n",
"\tRP11-206L10.3 | 75 | 74 | 79 | 76 | 27 | 32 | 32 | 27 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 6 × 8\n",
"\\begin{tabular}{r|llllllll}\n",
" & bthalrep1 & bthalrep2 & bthalrep3 & bthalrep4 & healthyrep1 & healthyrep2 & healthyrep3 & healthyrep4\\\\\n",
" & & & & & & & & \\\\\n",
"\\hline\n",
"\tRP11-34P13.7 & 5 & 2 & 5 & 8 & 1 & 2 & 4 & 0\\\\\n",
"\tAL627309.1 & 16 & 29 & 26 & 17 & 12 & 25 & 21 & 17\\\\\n",
"\tAP006222.2 & 141 & 160 & 169 & 169 & 55 & 57 & 54 & 46\\\\\n",
"\tRP4-669L17.10 & 13 & 13 & 16 & 6 & 6 & 3 & 5 & 4\\\\\n",
"\tRP5-857K21.4 & 1 & 0 & 2 & 1 & 2 & 0 & 0 & 0\\\\\n",
"\tRP11-206L10.3 & 75 & 74 & 79 & 76 & 27 & 32 & 32 & 27\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 6 × 8\n",
"\n",
"| | bthalrep1 <dbl> | bthalrep2 <dbl> | bthalrep3 <dbl> | bthalrep4 <dbl> | healthyrep1 <dbl> | healthyrep2 <dbl> | healthyrep3 <dbl> | healthyrep4 <dbl> |\n",
"|---|---|---|---|---|---|---|---|---|\n",
"| RP11-34P13.7 | 5 | 2 | 5 | 8 | 1 | 2 | 4 | 0 |\n",
"| AL627309.1 | 16 | 29 | 26 | 17 | 12 | 25 | 21 | 17 |\n",
"| AP006222.2 | 141 | 160 | 169 | 169 | 55 | 57 | 54 | 46 |\n",
"| RP4-669L17.10 | 13 | 13 | 16 | 6 | 6 | 3 | 5 | 4 |\n",
"| RP5-857K21.4 | 1 | 0 | 2 | 1 | 2 | 0 | 0 | 0 |\n",
"| RP11-206L10.3 | 75 | 74 | 79 | 76 | 27 | 32 | 32 | 27 |\n",
"\n"
],
"text/plain": [
" bthalrep1 bthalrep2 bthalrep3 bthalrep4 healthyrep1 healthyrep2 healthyrep3\n",
"RP11-34P13.7 5 2 5 8 1 2 4 \n",
"AL627309.1 16 29 26 17 12 25 21 \n",
"AP006222.2 141 160 169 169 55 57 54 \n",
"RP4-669L17.10 13 13 16 6 6 3 5 \n",
"RP5-857K21.4 1 0 2 1 2 0 0 \n",
"RP11-206L10.3 75 74 79 76 27 32 32 \n",
" healthyrep4\n",
"RP11-34P13.7 0 \n",
"AL627309.1 17 \n",
"AP006222.2 46 \n",
"RP4-669L17.10 4 \n",
"RP5-857K21.4 0 \n",
"RP11-206L10.3 27 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"head(cluster_counts)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8faa37f0-2081-4fd1-86d5-aa372a6a36da",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "a25a0e4c-0125-4dd3-945f-3a52dc963da7",
"metadata": {},
"source": [
"#### DESeq2\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f19832c8-028d-45fd-97f2-3aa6e33f1083",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 155,
"id": "bc4b04b5-2dc6-4956-b0ae-434d5a43da55",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"converting counts to integer mode\n",
"\n"
]
}
],
"source": [
"dds <- DESeqDataSetFromMatrix(cluster_counts, \n",
" colData = cluster_metadata, \n",
" design = ~ group_id)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bc8fff91-648b-445d-9faa-559419990f38",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 156,
"id": "50c576c4-100c-4c0c-8a21-bfd38aa7ba59",
"metadata": {},
"outputs": [],
"source": [
"# Transform counts for data visualization\n",
"rld <- rlog(dds, blind=TRUE)"
]
},
{
"cell_type": "code",
"execution_count": 157,
"id": "b739442b-00bf-471a-99c1-40a2d6f26b0f",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"using ntop=500 top features by variance\n",
"\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABaAAAALQCAIAAADpR0DQAAAABmJLR0QA/wD/AP+gvaeTAAAg\nAElEQVR4nOzdeYBVVeEH8HPfe7MvwAwoICgKivuSqbnvpWiapmmau+aaay6/zFyzLNEsKzWX\n0kq01NRKc81cstxNBRVlVxAYlhlgtvfu749JRBuGB8zw3oXP5683d+679zu+OTjznfPOieI4\nDgAAAABJlip0AAAAAIDlpeAAAAAAEk/BAQAAACSeggMAAABIPAUHAAAAkHgKDgAAACDxFBwA\nAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABIPAUHAAAAkHgKDgAAACDx\nFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABIPAUHAAAAkHgKDgAA\nACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABIPAUHAAAAkHgK\nDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABIPAUHAAAA\nkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABIPAUH\nAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABI\nPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMA\nAABIPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSe\nggMAAABIPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAA\nACSeggMAAABIPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/B\nAQAAACSeggMAAABIPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAA\nEk/BAQAAACSeggMAAABIPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AA\nAAAAEk/BAQAAACSeggMAAABIPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJ\np+AAAAAAEk/BAQAAACSeggMAAABIPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAA\nAACJp+AAAAAAEk/BAQAAACSeggMAAABIPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRT\ncAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABIPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4AAAA\ngMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABIPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4\nAAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABIPAUHAAAAkHgKDgAAACDxFBwAAABA\n4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABIPAUHAAAAkHgKDgAAACDxFBwA\nAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABIPAUHAAAAkHgKDgAAACDx\nFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABIPAUHAAAAkHgKDgAA\nACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABIPAUHAAAAkHgK\nDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABIPAUHAAAA\nkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABIPAUH\nAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMAAABI\nPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSeggMA\nAABIPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAAACSe\nggMAAABIPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/BAQAA\nACSeggMAAABIPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAAEk/B\nAQAAACSeggMAAABIPAUHAAAAkHgKDgAAACDxFBwAAABA4ik4AAAAgMRTcAAAAACJp+AAAAAA\n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\nAAAAQPQEDgAAACB6AgcAAAAQPYEDAAAAiJ7AAQAAAERP4AAAAACiJ3AAAAAA0RM4AAAAgOgJ\nHAAAAED0BA4AAAAgegIHAAAAED2BAwAAAIiewAEAAABET+AAAAAAoidwAAAAANETOAAAAIDo\nCRwAAABA9AQOAAAAIHoCBwAAABA9gQMAAACInsABAAAARE/gAAAAAKIncAAAAADREzgAAACA\n6AkcAAAAQPQEDgAAACB6AgcAAAAQPYEDAAAAiJ7AAQAAAERP4AAAAACiJ3AAAAAA0RM4AAAA\ngOgJHAAAAED0BA4AAAAgegIHAAAAED2BAwAAAIiewAEAAABET+AAAAAAoidwAAAAANETOAAA\nAIDoCRwAAABA9AQOAAAAIHoCBwAAABA9gQMAAACInsABAAAARE/gAAAAAKIncAAAAADREzgA\nAACA6AkcAAAAQPQEDgAAACB6AgcAAAAQPYEDAAAAiJ7AAQAAAERP4AAAAACiJ3AAAAAA0RM4\nAAAAgOgJHAAAAED0BA4AAAAgegIHAAAAED2BAwAAAIiewAEAAABET+AAAAAAoidwAAAAANET\nOAAAAIDoCRwAAABA9AQOAAAAIHoCBwAAABA9gQMAAACInsABAAAARE/gAAAAAKIncAAAAADR\nEzgAAACA6AkcAAAAQPQEDgAAACB6AgcAAAAQPYEDAAAAiJ7AAQAAAERP4AAAAACiJ3AAAAAA\n0RM4AAAAgOgJHAAAAED0BA4AAAAgegIHAAAAED2BAwAAAIiewAEAAABET+AAAAAAoidwAAAA\nANETOAAAAIDoCRwAAABA9AQOAAAAIHoCBwAAABA9gQMAAACInsABAAAARE/gAAAAAKIncAAA\nAADREzgAAACA6AkcAAAAQPQEDgAAACB6AgcAAAAQPYEDAAAAiJ7AAQAAAERP4AAAAACiJ3AA\nAAAA0RM4AAAAgOgJHAAAAED0BA4AAAAgegIHAAAAED2BAwAAAIiewAEAAABET+AAAAAAoidw\nAAAAANETOAAAAIDoCRwAAABA9AQOAAAAIHoCBwAAABA9gQMAAACInsABAAAARE/gAAAAAKIn\ncAAAAADREzgAAACA6AkcAAAAQPQEDgAAACB6AgcAAAAQPYEDAAAAiJ7AAQAAAERP4AAAAACi\nJ3AAAAAA0RM4AAAAgOgJHAAAAED0BA4AAAAgegIHAAAAED2BAwAAAIiewAEAAABET+AAAAAA\noidwAAAAANETOAAAAIDoCRwAAABA9AQOAAAAIHoCBwAAABA9gQMAAACInsABAAAARE/gAAAA\nAKIncAAAAADREzgAAACA6AkcAAAAQPQEDgAAACB6AgcAAAAQPYEDAAAAiJ7AAQAAAERP4AAA\nAACiJ3AAAAAA0RM4AAAAgOgJHAAAAED0BA4AAAAgegIHAAAAED2BAwAAAIiewAEAAABET+AA\nAAAAoidwAAAAANETOAAAAIDoCRwAAABA9AQOAAAAIHoCBwAAABA9gQMAAACInsABAAAARE/g\nAAAAAKIncAAAAADREzgAAACA6AkcAAAAQPQEDgAAACB6AgcAAAAQPYEDAAAAiJ7AAQAAAERP\n4AAAAACiJ3AAAAAA0RM4AAAAgOgJHAAAAED0BA4AAAAgegIHAAAAED2BAwAAAIiewAEAAABE\nT+AAAAAAoidwAAAAANETOAAAAIDoCRwAAABA9AQOAAAAIHoCBwAAABA9gQMAAACInsABAAAA\nRE/gAAAAAKIncAAAAADREzgAAACA6AkcAAAAQPQEDgAAACB6AgcAAAAQPYEDAAAAiJ7AAQAA\nAERP4AAAAACiJ3AAAAAA0RM4AAAAgOgJHAAAAED0BA4AAAAgegIHAAAAED2BAwAAAIiewAEA\nAABET+AAAAAAoidwAAAAANETOAAAAIDo/T+NXiM+3tnXagAAAABJRU5ErkJggg==",
"text/plain": [
"plot without title"
]
},
"metadata": {
"image/png": {
"height": 360,
"width": 720
}
},
"output_type": "display_data"
}
],
"source": [
"options(repr.plot.width = 12, repr.plot.height = 6)\n",
"# Plot PCA\n",
"\n",
"DESeq2::plotPCA(rld, intgroup = \"group_id\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "765cdc1a-ac45-4ca7-bd1c-65f0a271d5f7",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 158,
"id": "fa5a249b-ecb2-44df-b51c-3e3c489f0d4d",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nQmCC",
"text/plain": [
"plot without title"
]
},
"metadata": {
"image/png": {
"height": 540,
"width": 480
}
},
"output_type": "display_data"
}
],
"source": [
"# Extract the rlog matrix from the object and compute pairwise correlation values\n",
"rld_mat <- assay(rld)\n",
"rld_cor <- cor(rld_mat)\n",
"\n",
"options(repr.plot.width = 8, repr.plot.height = 9)\n",
"# Plot heatmap\n",
"pheatmap::pheatmap(rld_cor, annotation = cluster_metadata[, c(\"group_id\"), drop=F])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a9f51efe-c70f-422d-a401-5765e184a2e3",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "a93ac6f3-71be-47d1-8bef-0577bec896c3",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 160,
"id": "1cd5db68-7598-4933-8b16-83e307762a12",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"estimating size factors\n",
"\n",
"estimating dispersions\n",
"\n",
"gene-wise dispersion estimates\n",
"\n",
"mean-dispersion relationship\n",
"\n",
"final dispersion estimates\n",
"\n",
"fitting model and testing\n",
"\n"
]
}
],
"source": [
"# Run DESeq2 differential expression analysis\n",
"dds <- DESeq(dds)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "dd1e9e43-f0b9-4f6d-8eac-1fcb45fb27d6",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 161,
"id": "741874e8-0c07-4ba1-8cdb-a7ac7bcc2d49",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA8AAAAPACAIAAAB1tIfMAAAABmJLR0QA/wD/AP+gvaeTAAAg\nAElEQVR4nOzdd2BTVcMG8OcmabonXZRCB6vsLVu2svdSRFAQFbBlia8IAhYHypalIlMLskFk\nyChQZG9ooRRoy2oLnXS3yb3vH2nTtE1LA4USeH5/+N2cc+69J3nj55PTc88RJEkCERERERGV\njKysO0BEREREZEwYoImIiIiIDMAATURERERkAAZoIiIiIiIDMEATERERERmAAZqIiIiIyAAM\n0EREREREBmCAJiIiIiIyAAM0EREREZEBGKCJiIiIiAzAAE1EREREZAAGaCIiIiIiAzBAExER\nEREZgAGaiIiIiMgADNBERERERAZggCYiIiIiMgADNBERERGRARigiYiIiIgMwABNRERERGQA\nBmgiIiIiIgMwQBMRERERGYABmoiIiIjIAAzQREREREQGYIAmIiIiIjIAAzQRERERkQEYoImI\niIiIDMAATURERERkAAZoIiIiIiIDMEATERERERmAAZqIiIiIyAAM0EREREREBmCAJiIiIiIy\nAAM0EREREZEBGKCJiIiIiAzAAE1EREREZAAGaCIiIiIiAzBAExEREREZgAGaiIiIiMgADNBE\nRERERAZggCYiIiIiMgADNBERERGRARigiYiIiIgMwABNRERERGQABmgiIiIiIgMwQBMRERER\nGYABmoiIiIjIAAzQREREREQGYIAmIiIiIjIAAzQRERERkQEYoImIiIiIDMAATURERERkAAZo\nIiIiIiIDMEATERERERmAAZqIiIiIyAAM0EREREREBmCAJiIiIiIyAAM0EREREZEBGKCJiIiI\niAzAAE1EREREZAAGaCIiIiIiAzBAExEREREZgAGaiIiIiMgADNBERERERAZggCYiIiIiMgAD\nNBERERGRARigiYiIiIgMwABNRERERGQABmgiIiIiIgMwQBMRERERGYABmoiIiIjIAAzQRERE\nREQGYIAmIiIiIjIAAzQRERERkQEYoImIiIiIDMAATURERERkAAZoIiIiIiIDMEATERERERmA\nAZqIiIiIyAAM0EREREREBmCAJiIiIiIyAAM0EREREZEBGKCJiIiIiAzAAE1EREREZAAGaCIi\nIiIiAzBAExEREREZgAGaiIiIiMgADNBERERERAZggCYiIiIiMgADNBERERGRARigiYiIiIgM\nwABNRERERGQABmgiIiIiIgMwQBMRERERGYABmoiIiIjIAAzQREREREQGYIAmIiIiIjKAoqw7\nYASSkpLWrFmTnp5e1h0hIiIieo2Ym5sPGzbM1ta2rDtSEAP0k/35559+fn5l3QsiIiKi145C\noRg9enRZ96IgBugny87OBvD777/Xq1evrPtCRERE9Fq4dOnSiBEjNDHsZWNMAToxOipVLZaw\ncYUKFUr37tWrV2/UqFHpXpOIiIiI9MrIyCjrLhTJmAL05w2qrYhOKWFjSZKea2eIiIiI6PVk\nTAF61oE91Vcv+Xr+X+lqyb5O25YeVmXdIyIiIiJ67RhTgHap1WrST63aOdxuPOV0jTHL/v7Y\np6x7RERERESvHeNbB7rOmLll3QUiIiIien0ZX4BW2rRq6O5qayYv644QERER0evImKZwaJ27\nG1XWXSAiIiKi15TxjUATEREREZUhBmgiIiIiIgMY5RQOAAlR4aGhYTHxj1PTMhRmlrblXKv6\n1PAub1fW/SIiIiKiV5yRBWhJnbRx/sxFvwccvx5TuNbVp9m7I/2m+Q2yUwgvvm9ERERE9Dow\npgCtzrr/QZN66y7HyU0cmrbvWbdG5fKOdqamClVmZmJsdGRY8PGgU/MmvbM2YNelE2vdlJyd\nQkRERESlz5gC9ImJndddjms1duH6H0a7W+rpuZgVt372mKHTAzp9NjL4l7YvvIMGWrYMY8ZA\nkiAIEMWy7g0RERERlYgxDdNOWRdmVf6ToJ999aZnADJluSHTNixr6nJrw9QX3LenMXo0JAlA\nToYmIiIiImNgTAH6Smq2VaUeT2zW6E3n7LTgF9CfZ9K2bcESmQxy7g5DRERE9LIzpgDdq5x5\nwvUforOKne0gpq/cGGFm//aL6tTTqlevYIkkQRQ5FE1ERET0kjOmAP3V7Lczk4JqNxv4x75z\nqWqpYLWUGRK0bWSnGssiHredPr0sOmiIhQuLrDIxeYH9ICIiIiLDGNNDhFWHbfrtzFsfL906\ntPMWudLWu2plNyc7U1MTdVZmUmzU7bBb8RkqQRDajV6yc0yNsu5sCUgSZLKcadC6+EAhERER\n0UvMmAI0IBu5+ECXoduXrFq/O/Dk9WsXwoJz0qcgM3WvXKtTu7ffGenbq0mFsu2lATRZucC0\njUqVyqQvRERERFQSxhWgAaBC097fNe39HSCp0hMTk1PTs5TmFtZ29ubGu3lK377Yti1nKFou\nR3h4WXfIaKhEnInCygs4G4W0LJgqUNUBw+rC2x53HyM5E1XLwdMO9x/jRjwUMlR1QFUHKIxp\n4hIRERG9dIwvQGsJCnN7R3P7su5GKdiypax7YJTWXsLMo1DpTHjJUOHsA5x9kK+ZIOSbJuNq\nhYnNMbDmC+okERERvXpekbG4iG3d7e1fhSxNJTQ1ENMO50vPRSkwyTw6BZ/vx3fHnlO/iIiI\n6NX3igRodVZKYmJiWfeCXpC9N7HussFnyXW+7L+cwyHOlCEiIqKnYsRTOIxdtZXITAYAAdAO\nkiqUuPVpqd1i122M/RtS/lvI5AgfW2q3CAsL69atW0REhI2NzVtvvXXx4kVTU1M/P7/hw4dr\nGjx+/PiLL744cOCAu7v7t99+26JFC+25N27cqF27dnZ2trZEEAQp/4ixbon22HXSWaV7owI9\nUT26pXCqXLiHClnOQLWYndnP/Nh+ocPjTABYchbtvZ7x3RMREdHr6HUP0Gq1evfu3RkZGcW0\nuXDhAgDdnFcqNOkZOtEWgCoLXf/A7vdK5xZjdum5hahGv+3Y0rt0btG2bdsHDx4AiIuLW79+\nvSAIAD788MMKFSp06tQJgJ+f3+rVqwHcvn27S5cuN27ccHFx0ZxbID0DkAot6qdbojmWWdgr\nKzQs0Cz1fICpR3O9PbR6EJjo2g6AJDdd9vMc32muGx7WAnA+CqnZsOSi20RERGQgIw7Qp3yH\n/XD3seY49V4wgD59+mhrt23bVpKLBAYG9uzZsyQtAwIC2hbef/tpNd1eZFVIXGndJH9w1nEu\nsnQur1KpNOk574a5eXf37t2aAL1rV06KF0Xx8ePH//33X9++fQEkJyc/3W8SuY1b4f0as24f\nt6jXX2/7mBvnTOwaysxsAShs3R+c2QGPWgBECTEp8ObMeSIiIjKQEQdodVpqSkqK5jg9Qw1A\n+7Lk2rVrt3PnzuJHoJcuXXr48GF3d/en66deM3rjkyL2IlSaleJ99JNKaeq7QqGQy+Vqtbpw\nlbOzs/YgPj5ezN0dxsnJSXNgYWHxdDeVstMKFwrmtlJ2uiBXFq5SmlnAxFx7rmU5N22VOYef\niYiIyHBGHKBbrNi8P/f41l9tqww+sn///uJO0Ecul/fo0aP4Nrt37wYgk5XmA5ddABmgdw2J\nGx+X2l3kgJ5sC1z4rNRuMWzYsJUrV2qOZTKZJihXqlTpo48+0hTOnDlz8ODBmuNu3bq1bNky\np29yeatWrY4dM3g5DHXiPSkjWTCz1i20bjEqO+aaqUezwu3LtxgSrcoJ1nbqh1k138EdALA3\ng7OloTcnIiIielVW4TBG4X6QyyADBEDQ/B8g0q80b3HbD52qQi5ALkf3qgAgAJF+cCi9W/z+\n++9btmwZNGiQv79/VFTUihUr1q5dGxwc7OjoqGnQv3//q1evLl26dOfOnTt37tT9HRIUFOTv\n7+/o6GhjY6NUKu3s7IYPH161atUWLVpYWFjIZLIKFSr07t3b29vbxMTEwsKiR48eTZo0cXdz\ndUw4WaAbcnsPU4+mensYrbLVHFjL0pv+b+/BO6aalz2qQW60e+8QERFRGTLiEehXwO3SGwku\nyoquecdLns8t+vbtq5nWDGDEiBGFG/j4+Pj4+Og9d+rUqVOnTjX0jjGpaL8WKVkFip8Qh5NF\n87PROcdOFvDTn7eJiIiInuAVGYEWZHKFgj8GSpME3E7Ag+Qnt3zxXCyxoR+s9Ex4LhF3G6zr\nA8ennIMNAFEpOHoHm0JwPqpwjiciIqJX3CsSOr0HHMweUNadeIWkZqPp70jOBAAIWN0T7TzL\ntEOF1HHGyQ8x9wQCgpGpylclE2BvDqUMadnwtodcAASEJ0IhoHo5vOmBd2vD8mnD9/VYTDuM\n0/fzSkzkGFADU1rB2vTp3w4REREZEeMO0KIq/vj+wMs3IpJS0r/8ampqRKS5p8crMqhephaf\nzk3PACQM3wEB8LTD4WFl2asCrE0xoy1mtH1xdzx5D8N2ICN/Xs9WI+AqzjzAxv5wMH9xnSEi\nIqKyYsRpMypwabOKFVt37T9m3KQpU6cBuDjzbQevJov+vVPWXTN6J+4XLJGA8EQM2lIWvXk5\nJGdi9J586dlCZxW8sHh8FfjiO0VERERlwFgDdMq9vxp09j0Xq3x33NRvJ9TUFFbo2s/h4aXx\n3eqsCn9ctt17edT8FR6LUHmxYWe9W1N/+bkH+stfPY/ScPQOVl/C7jDcSgCADcGIy12Bul/F\nGJ+DA6RFPm/e+rqxa06m3h2G2wll1F0iIiJ6gYx1CsfGQeMeqc3WXAl/r4bd3X2nvpoXAsBz\nwLeXGjetVK3PlHc3fnBiZFn3sex1nXI5+If6giRJgvDfz23eGxMY7luiEwfWxuSDevYxNDfW\n74sBHqVh5N+4FJ3v7Ve2h03uFOdmbqo/PqkTGxsrSVJoqH+f2HtmLVdqRqaP3uHWhkRERK8+\nYx2Bnn0hzqHWwvdq2BUot/bqubi2Y9zluWXSq5fN7u/rCZIEQJCkljcO35yg8FyINmuf/oJr\nepda315ONxPQciUuRhf88XArARdyl8BzUd199OiRdtPyvds3VCuXU/VyLlpCREREpctYA3RM\nttrS3VNvVflKFuqs12aqgSHkanX4eFm54ONbw57cuPDwM4D+m/HO+nwliRno8xdqLEXL1Tht\n5J+6BPTfiEy9mzfqUlppDwVBsLe31z5w+TqM0BMREZGxBujO9max59boC3ni6lOPTG3bvPAe\nGQdBkrb+2PLPdZee3FLftiRqEccfwvvnvJKh23E+GmnZuJeEd7ci4Cq2XENadun1+AVaeREJ\nGTnHFgrJNmRV2uaRZiEBsvy/Jk4mOPUclLMciSAIH8xYGZ6YU1W9HIiIiOiVZ6wBesqEBqkx\n6zp+sTJV1Ak3Uva2GV3WxaRW+/Crsuvay0RvCgY2fdvwiacufwsC9O/upxbhvSjnODQurzxb\njS8PYsK/6LbeKLcX2RyScyAAifMaXPn1w9hjv9/4dUji2nxrjMekIvbt1WPWXhu1YN+nf0Vv\nynpbU25rijYeL7jLREREVAaMNUDX+fyfsc1cDv04wtnd572ZFwF89MGQ5tWc+s7817bqgF2z\nGpd1B18OogiZnv+JZZLeCRr5dPZBhB+czPVnaDG30MpET+3tBBy4bUg/Xw5RKTkHNoqs6Nt5\ng/SJ57eYyfIt/nzvMf6O99mLt/6+76Rd2O5/rZ5+fxYiIiIyIsYaoAW57aJjN1f7j6mseHj0\nxCMAK1YHXEywf3fC3JCrG9yV8rLu4EtDrYaFRcGh6O7dS3j22Y8Q6YtytoUqchP4rPaQ6/sS\nZYn5XqpEPW1eNurcTmaJBX80KHLfo95vllzApOZ4t/bz6xoRERG9RIz4oSdBbjVs6uJhUxfH\nP4iMiU8xtXHwrFTeWH8QPFepqQAgk0Ez8GxpiZ07DbrA+eGosRhpOk/XrRmYc9C1Ci5/jKA7\nsDXFhzuRrgIARwt08MppEJcOv704fhdOlpjVDp28n/HNPEcuVnicCQDpool9k8EJZzZoyis3\n75miyvk3pa4zPmiAHdcRGofoFFRxQG1nDK+Hmk5l1WsiIiJ60Yw4QGs5uHk4uJV1J15+4jMN\nAl8bCwA1l0CmwNWP81VZKdGlCgDsfhfbrkMpx8BaKJe7qfXcEwi6AwDRKfDdi7MfwVLfrI+X\nQbcqWJA7pdtmyHrXNiNSQ4861W6XUL4dcj+84fXRvSq6Vy2rPhIREVHZexUCND0n6y/jZiKm\nvZlXEjKmuPbe9pjYvGDh9di847Rs3ElCDcfS62Kp+qA+fjuP1GwAkIBU945w7/gI0Kbnirbo\nUa3s+kdEREQvBwZo0kMlosrPOfOcV1wAgP61MLfj01yqjjPOReUc25jCs+DWN2Xg/v37QUFB\nrq6ubdq0EXRmh9uZ4dfuGLZD/4xtG1PsGKinnIiIiF43xhSgE6OjUtUlnYdQoUKF59qZV1vP\nvwpupLI5GJuDcfJjlDcz7FITm+NRGo5Ews0aM9qU/VYjhw4d6t69e3p6OoDevXtv2bJFprNQ\nSatK2PUOvjiASzF5p8hleMsbC96GWVl3noiIiF4GxpQIPm9QbUV0ypPbAQCkEqzURkW5m6i/\nvNkviPQz7FI2plja9dl7VGrGjBmTkZGzXcr27dsPHz7cvn173QY1HLFzMOLScD0OsWmobI+q\n5WDKZV2IiIgolzEF6FkH9lRfveTr+X+lqyX7Om1belg9+Rx6Kr1rIuC8qseFjdZpCWtb5018\n1r8vi/GYNm3a9evXdUt+++03c3Pz5s0Lzt0uZ4GWFk+4mijhYDjOReFmPMwUqF4ObT1Rx7l0\nu0xEREQvHWMK0C61Wk36qVU7h9uNp5yuMWbZ3x/7lHWPXln+dRP82zrkHG8Zm21iUuWnLOCF\nJuiYVHx/DMGPUNcZX7aC45PirF4JCQk//fRTSEhI06ZNx44dO3fu3AINNmzY8Ndffy1atGjs\n2LEGXTkiEWP24OrDvJK/gTkn0Ks6vu/w8q40QkRERM/OmAK0Rp0xczGldVn34lVXp47uK5Ps\n7IjxMs/54rwOL64LE/7FsTsAcCMO8RlY1dOAc7OysiZMmBAQEJCWlpaZmSkIwo4dO86dO5eZ\nmam3vb+/v0EBOiYVg7ZA73yiHaGIT8fa3pAZ+3A9ERERFcH4Nh5R2rRq6O5qa8ZJqc9TdHSB\nAkGSIscJfe/tK9z28kN4LYTHQnguwg9BpXN/UcKp+3kvT9w17PTZs2cvWbIkISFBk5g1E+K3\nbdv2xhtvFG4sSVJSUpJoyDrZ3x/LS88VbdC+fFLbCmk2pjklQXewKcSwDhMREZERMb4ADeDc\n3ajdw7iVxfPUtKn+8s6dIS/406XHhpyFkiUJy87DYxG+f+YYLRPgbp33slLhvcSLdejQId21\nNZDTPenixYuCoGdkOCsra98+Pb8N9ErOxK6wnOP2FTOSFzVaPchu7QDLGidHe9vnlK+/aliH\niYiIyIgYZYCm5+6//6AvaAKAKOpWJWWh4Ip3Epafx62EZ+3Ct+3hYA4Ajhbwb1ew9t69e7Vq\n1ZLL5TKZrFy5cv/8849urbu7e+FlWCRJysjI0Ls8iyAICxcuLGHHgmORnburuXjku8sXz2uO\nN61Z1lB1SnN8OQZqLgNDRET0imKApiKIIhRFT5HPHd+1Vuqv33itRDeJTsFne/DNET1VLSvi\n9AgcHY6TH6JpoUW9mzVrFhISIoqiJEnx8fG9evWKi4vT1k6bNs3RMWfDQ71DzoIgmJjke9Av\nLS2tRD0GkjLyjiMu/6c71P34fs7bVktI1j/dmoiIiIweAzQVLTsb4eFFDkUDKPoLFKyzPEVq\nNvbcxIHbeQO3Ggdvoenv2HkDv1+E1yJkqApexEQOD1uYFJrunpycfP/+fd0StVo9ffr0VatW\n3bp1a8aMGY0aNXr8+HHHjh337t3r7u5eOEPLZLIlS5aYm5sLgiAIgiiKMTExv//+ezHvVMte\nZyuZak07606etvNqpDlQyKCdEk1ERESvGONbhYNeKE9PiCL+/hs99a+Csemm/vNcLHMO4tLQ\nYwPuJwOATICZAu/VxVetAMBvf157UUL1JTBX4vqnxXVn5syZu3fvNjPTsx3ikiVLAAiCIEmS\n5p8HDhzo0KHDzJkzR4wYUaDx5MmTP/roo7p163711VeHDh0SBOHmzZsjR440NTV97733iusB\nUMcF5gqkqwAgqeH4jl2PH9i9XS6XfzT5+yMZOauXNC6ftwpHQgZWXURQJK7FQS3CSgkvOwys\nib41oOSjsEREREaII9BUJI+f4bEQHgvhcbvHhC+P5g1FCwJyh12/2Kv/3K25Uzj+Cs5JzwBE\nCWnZ+PUc/rgMANmFhpzTs1BzKT7bC70rYlSpUmXGjBmnT58+evRoUX3WTHHW/FMQhLVr1yYn\nJzdt2lR3ENrW1nbixIkAmjZt2rRpU0mSJEkSRVEQhM2bNxf5ceQyV2BAzZzjU1GKqB7bBvyV\n1e2PrH/Lfx6TmlP+fr2cg4vRePsPLDyF89FIz0aWGvHpOBeFLw7ijRUIuvPEuxEREdFLhwGa\n9Kv/C3Rj7BaX1tUWi5AkSBJ0Ji0M905Z80vXiPGyyHHCoR9qastFCR4LAeBghJ6Lr74EAI0L\nzWwGkJqNnaGovhjxGfnK9+7de+vWLb1d9fLy0lsuSdK1a9f8/PxOnjypjdRyuXz37t3lypXT\ntLG2ttY9xcbGRu+lCpjUAlVy9plBciZORZlcjJGpcj+VXtXRrSoARKVg2A5oU3UBCRkYtiNn\nrWsiIiIyIgzQpF9ioWfgMrP1NPv627fbXtsjSBKAytHXIsbn+0Z5LUS4vuU47iUDwKTmUBYx\nvzpLjS8P5is5e/as3pZ169ZdsGCB/qsU4uLisn///hYtWmhLhg0b5uTkpDlWKpXjxo0ryXVs\nTbGhH9p5FixXyPBxI8ztlPNy/kkk5v8ZYINke2Xe56gW8fkBPZO/iYiI6GXGAE1FKOFGeqdO\n5TtJkiLHCcf8PTUvRQFpaj0nZWRDBL45iqyi13p7kIzY2Njr169rntKrVauWbq1MJjt9+vSF\nCxfOnz+fkKAnpDdq1Kjws4Mqlapdu3xL4pUvX/6///6rWbOmZl2O48ePF9mh/JwssLoX/nkH\nM9vindoY2QA/dcSxDzClVc5TjyoRu3UniEti7Mq+V8fZXBqtVJ1bqfs2AyNKeE8iIiJ6KTBA\nk34hnxUsKbQzCQBA37LKFeMiwyfkPB+XnqXvJAHZov7Baa17h393cnGt1aCpnZ1dcHBw7969\nBw8erKlSKpWbN29u0qRJ/fr15XJ5tWrVCpzr6Og4duzYwks+V6pUqfCNfvrpp5CQEEmSUlNT\nfX19z5w5U1y38qvtjOH18EMHTHsTA2uhvFVeVUxqvpXsMq7/m3Z5m+Y49mC+IfOzD0p+QyIi\nIip7DNCknwUQ6QdB8wURIJchvFCkBoCZM/WeLhPFyHHCsQ+z5HpHsiVU+1nPLBEApnJYmsBN\nHR5+L9r9+wT3H5IsPtzT650PBUFYv359ZGTklStX0tLS+vTpoz2lefPmo0eP1r1IbGzs+PHj\nFfnXsRYEQbNSRwHHjx/XjFVrniY8ceKE3ndkqAITM7Lj8iZwi+lJulXx6aVyQ8onLRv/3sbi\nM/j6MNZewvmosu4QERG9QriMHRUnQm9o1jV1KmbOhEr/NN6KNma994pbithURd/gNdQSJJXq\ngdzLttNXmhJTr5ZJNT/QHGuHkLOysn777bfg4OCGDRsOHz68Q4cOS5cu1b1OYmKi7ksXF5eV\nK1c2a9as8B2rVq0aEhKi+1J/dw3kYgmZADH3PSoc8p50NKuabxqJvfkTLnUnCcfu4kYcMlWo\n7ogmbqjlVCp9fGVtv44ZR5CQfwJ6A1fMewva7daJiIieGgM0Pau1p7P/2BG675saQuFELEnz\n3oKFOdadL+nVVCIKfy0tKtQpUDJg8JCD963k1i4rti8MCgpq3bp1Mdf08fGZMWPGW2+9pbf2\n+++/P3PmjGZnlqFDh3bu3LmkfS2WlRKNyuNM7vQMi5pdvd/6NDJwlbL6Ww595um2bFS+yItk\nqfHdMay9VHBj8E7emN0R5Z6UvF9Pay9h2mE95Rei0W8TtgxghiYiomfFKRz0rKYFIdS+uud8\nMdOk0P4mggBgVoOUyIZBlYWCU56fOPKq1a+5h0pnTb17D6JOVfQr9+4qux4/lP/8wqaT9//8\n889iTr9+/frgwYO7deumu2uglo+PT1hY2LFjx0JCQtauXat36++nM7ZJ3rEEqLoudZ+T7jRy\nB8wdtOWuVmivfxU+SMDYPVh1sWB6BrD/NoZsRYq++eWvuTtJ8A/Ke+lph8auarvcL2Z8OiYf\nQNFPrhIREZUIAzQ9s9w8Uu2n9On9Fkq6AVQUsXIlrK3x5puH/BwixsscE+I0NW5WOPQ+VvSE\n/knSOjp6ZGZZuvssRd3l+OMKAITGCaberXKqZQrL5h8dOXLkid38999/NWvhiaL4999/L1q0\n6NKlS5oqc3Pzli1b1qhRo8TvuUTaemJMk3wlBcboFTLM7gDzIv4OtO069uVOnFbK0cBF3bR8\ntnXuDuHXYjH/ZOn291UQcBVZagBQyPC+3bHgiY5bByvM1rTuWumxpsGZB/n2mSciInoKDNBU\nmla39vWcL3oskHK2XAEwcqS2VpCkczMdIz9XRvrhxAg4mKGTF276wtMup4FMgGmhNKlQmP59\nA9lqJGXiq4OiR/12hwMD87WQpAILbsj0rxiCxMRESZIGDBjQs2dPPz+/hg0brly5Um/LYiQk\nJKxdu7Z58+bNmjX7/fffi288uQUWdYaDnq3H4WiB37qjrWeR567NifeoYI03b8/8e4hy0yCl\n+56BjV1zlgbcEJwTFknr9P2cgw7uaT+O6qBZ4vDMyf9CFvfX/vY4db+Ik4mIiEqGAZqes8IT\no7OzdZfEm3scKVmoYI21fRDui86VCzZ/rLtYhyCLQ7lZ44daJOY+9ieqU078pq1fuXJlWFiY\nWq0OCgqysrLSvY6JiUmzZs0uXry4devW3K5JX3/9dcnfysWLF6tVq+bg4NODgXUAACAASURB\nVDBs2LBTp06dOXNm5MiRW7ZsKf6sXtVxbhT+HoyhddDWAy0r4qOGWPg2jn1Q5OQNANlqXIrJ\nOW4pP7ty/gzN/JN9Ozc5Xs15XDIlC9diS97910Jc7pImZql3s7KyNB+aJEmnjwdVyt1lMjat\njDpHRESvCj5ESM8q0g/N1iJKO8NZQKTvk86RJAgCLl/+NrHOr7nPF76/DRBwcDBsTLHxOjKz\nAKBnNTQsj+P3cs9TZ2feuwBRXfnCtCPRdjIb1/TgXdkPLmtqO3ToMHz4cEEQjh071rZtW7U6\n3/Bsx44dbWxs4uLidHohJSQkSJJU/Lzn8+fPBwQEmJqabt68WbuduJQ77L1jx45+/foV/3Zl\nAuq6oK7Lkz4WHYmZeSt4xN86l3cpmezW2f3onLM8CpfAK8Amd5hZsnQRBEHzv5FMJqtW3Ue7\np7qtvj8IEBERlRwDNJWCk+8XWfXplKBl3xWxREa9ehuX53+qT0KH9RCEvGFrT1sMrYtbCdhw\nMT09ITpp91RV3G0Ahw/sS01N1T21SZMmf//9tyYKT5kypUB6FgRh8eLFAN544w0nJ6fY2FhN\ntKpYseLy5cs/+OADMzP9qSooKKht27Z6nz7UsLd/Lms62JhCyJ1eblcpbxdGURQ96rQMy31p\nxyyYXz0XXI4BgEPRdr4zf/55hq8oira2tt2mbf3zXl4bIiKiZ8EpHPR8Bbq38lggSXqHeCXJ\nISOxanSIXFTnL847XnQGMgH+7bCzRywurlY4+ygr1HdyciqQngGsXbvW3DxnXY979+4VqLWy\nsvL29gZgY2Pz77//du7cuVy5cgBCQ0NHjx7dpUsX3YisUqn+/PPPb7/9Nigo6LvvvtOdYF1g\nrNrW1tbX94nj7U/DVI6auYs9XzRt1WdIzlTyhm80z2o6QXNsroCP4/O4uREbUDNnE/qULOxx\nGPPeX8kfBdxvveTRn/dypst426OJWxl2kIiIXgUcgabnS/MTzXO+eGWKvU1avs1NIAiBfjnD\nt6JM5jVP/wNx3osgAQIqKjrMtAVs354mFzOSl3XOCMtbeUMul/v4+GhfduvWTTPerDVgwADN\nwcKFC+fMmZORkZGcnKz9E//hw4evXLlSr149AKIo9ujRY+/evXo7o1QqMzMzTUxM+vbt26ZN\nm759+7q4PK/xzMG1MS0QAG7Gw7bVb+/3XiiIqtAUm6O5vw56+xS5gsdrq54LhtfHqosAkKHC\n4fsWgIW21kSO79tDwXEDIiJ6Nsb6n9+EqPDQ0LCY+MepaRkKM0vbcq5VfWp4l7d78pn0Yqlz\nB3brfJfgmBB79hvnvP1WdEZ2ZaIYMV72v0G/bWg2osAVJJ1/5lxTZuY8JjD9+oHHgXMyQ/8V\nBGHu3Lm6p3z//fcxMTHbtm1Tq9Vyubxnz57z588HsGfPnnHjxmlzs6709JzZxBcvXiwmPR8+\nfFgQBC8vL2dn5xJ/Bk/p3dr4Jwwn7wFAUqYmC+apaIPPWzzvLhilaW/CRIYVF/ImkWuUM8e8\nt9DMvYy6RURErxAjC9CSOmnj/JmLfg84fj2mcK2rT7N3R/pN8xtkpyi1vTCohFquxMN0tKiI\nNT3zlb9RAUcjc45j7R0954sKUVUtKtgsO33bgua6LQVJmr1h5HebPvaeq39j8PwEc59O5j6d\nvK7NW/VFHy+vfOtZWFlZbdy4sfA5hw4dAlBgSoYkSa6urqdOnXJzc6tUqdLjx4+LuuXevXv1\nbgb+nChk+L0HvjiAXWEFqxq4YnEX7kSon1zAV60xuDZ23UBoHGJSUcUBdZzRpzoslU84Ny4N\n1+NwPxkVbeDjCHtOMSciIn2MKUCrs+5/0KTeustxchOHpu171q1RubyjnampQpWZmRgbHRkW\nfDzo1LxJ76wN2HXpxFo3Jf9M++J4LMw5OByO2stx9ZO8qnW94bEo3wCySqYIqVDPNDtD76Xk\nanXEeFmtWcmplpYlubX5mxO8il4MroAKFSoUKBEEwdLSMjo6ety4cRMnTvT19V2zZk2BBppl\nOpo1a9auXbuS3qmUWCmxpCtGxeBoJK7HIkuNauXwRgW86QH+RixeZXv4NTWg/YNkTDuMg7fz\nvqoyAZ2rYEYbuJTom0hERK8RYwrQJyZ2Xnc5rtXYhet/GO1uqafnYlbc+tljhk4P6PTZyOBf\n2r7wDr6mDkbme5mSWbBBpC9arcHd/POfM03M7tu6V0gq+LQfAEGSQr6yavDtw3hLp8K1BTxx\nI0NdI0eOXLVq1eXLl7UloiimpKRojtVqtWamhy47OztBEFq0aFFgUvWLVM+FC0c8XzfiMGhL\nwTUBRQm7w3DmPjYPyNvrh4iICMa1CseUdWFW5T8J+tlXb3oGIFOWGzJtw7KmLrc2TH3BfXud\nxeXflqLQvikAcGwYIv0Kft1azLx71qtlUZe98JVzxPgnfz8fpSI5+8mdjI6OPn78uEqlOnv2\nbIsWBswdtra2jouL+/vvvz08PEp+FhkRlYgxe/KlZ0uTvONHafhsb8Hp1ERE9JozpgB9JTXb\nqlKPJzZr9KZzdlrwC+gPaQyske9lMfPPIz9DpB/eqIhxjXB9LMqZo5/fMY8FkljEztuCJEWO\nE0K+sC7m7tGpqL0UKy8W18Nly5ZVqlSpZcuWFStW3Lt3b7du3YprnV/jxo1L3piM0YHbuJG7\nu06XSikNTo1UL6ze+Pzoju45Pw0vx+DonTLrHhERvYSMKUD3KmeecP2H6Kwit7QAADF95cYI\nM/u3X1SnCAD+fRcKOQQBdha49aRlkTf1xfhWMJejV/WcEq956ssV3yiqvWVmyhOHor85ikz9\ni+AhPj7e19dXpVIBSEtLGzFiRGBg4BO6mEsQhF9++aWEjclIacOxtz2OTmu+c8PKGzdubFu3\n/OIP7dxyf7sFRRZ1NhERvY6MKUB/NfvtzKSg2s0G/rHvXKq60J9UpcyQoG0jO9VYFvG47fTp\nZdHB11d1J9waiwhfXPpIT60IvLECHgvhsQjNfs8rn6izCEePiac8FkjZcpPCpyN3KLpjyM6i\nOiBJ+Pk0xuzGd8cKTikJDw9XqVSalTdEUXz06NGBAwdK+L769++vUqmSk5NL2P6lEp+Ok/dw\n9A6iUsq6Ky+36NzPp6pVyrXgq5qviiRJ58+e9rHNmdjxgJ8hERHpMKaHCKsO2/Tbmbc+Xrp1\naOctcqWtd9XKbk52pqYm6qzMpNio22G34jNUgiC0G71k55gaT74cvSiNf8sNtRKiUlBnKa6M\nBgArJU6NwMAtiElBJVtMbgETv6xt32zuM32A3uv8/muveCvnBrP0rGAI4OfTOQeHw6VRFltb\nNG/u5uYGwMfHx9raOjU1VRRFmUxma2ubkJBQwp5fvny5fPnyMplswoQJP/30kyFvuiz9dxff\nHcPVh3klFW0wrhn6818Lfcxy/79gFkxlMpl2T0q5XJ4p5ax7xw1riIhIlzGNQAOykYsP3Dmx\n9cuPB9b2tL1z7cKRw4f+3bfvYODhc8ERlhVrDRo1edupu4eWjJaXdUdJV4Eh4cc6z/y5WuHo\nMISOwf730MkbANp83r/WrGT9W38DDikPI8bLJu0q7iHR0HjhnU++qNJ5jMvIrb2Xht1Js9i4\ncaOrqyuA6tWrT5o0SbfxoEGD+vTpI5cX/MoIgiCTyUJDQwGIojhnzpw9e/aU9A2XqT+u4L1t\n+dIzgLuPMfFffH24bLr0kqtWLufgZJTJqMnfacvHTl90Ojrni1G9XOHziIjo9WV84yoVmvb+\nrmnv7wBJlZ6YmJyanqU0t7C2szfn5ikvK0HQ3XMw3wLGR+/ggx1QSXA2x8mPIAfszJBiZeU5\nX7w9USFX65nXLEjSZwe+HR34QzH7rZjX62ff/QcIwoVs9Pgza2zzzttO369hk2xtbS2KYkRE\nxIoVKyRJ8vLy2rhxo2aZ54JXMDd3cXGJiIjQ7royderUQYMGKZXKMWPGzJw58+k/jufp6kNM\nCyxyyYg1l1DfFX199Ne+trpXxaJTUEtIV+GU1xdj1w/OfnjDxKXGoQT37EwAUMjQtWpZ95KI\niF4mxjUCnY+gMLd3dHav6O7s6MD0/DLrnj98uGgfzLqLodugEgEJD9PgvRADN0EmwMMWALzn\nqrpPPlfUULRmvxWLrDS9tfY9ZiP3xGxBOf8kBmzGplvWAGQy2a+//pqQkHDkyJHw8HDthNcC\nV/D392/Xrp1u+fnz55OTk+Pi4r755ptZs2YZ+iG8GD+fyUnPJnK863rdJ/Bd7909B5gddMjd\ns3DByTLs3UuqigPer5dzHJeOnTEee6ROO6Pdk3JXNP+4ESralFXviIjoZWSsATohKvzk4X93\nbN0c8McfGzdv2xd44nZU4pNPo7KwuAsWvQ25DDIZulbDqQ9zyqcWWgzj1AN4LMTi3DVUrrg1\n9JwvnvdqXrAdAECQpGuTLVf+0r2E3Vh6BqKE+8mYfAAf7LNddMNL4VTkuOLEiROrVKni7e0N\nQBAEKysr3dpff/21hDd9kUQJRyJyjnu7Rf00pPaBv/86euCfuZ90fEt2RFMemYTbJZ0B/hqZ\n2hoDauqvGloXk/R/AYmI6PVlZFM4JHXSxvkzF/0ecPy6nifJXH2avTvSb5rfIDsOSL9kevmg\nV+GZA0UsSNhnM0zkyM6dvtHH73j3y38tWTlYb+MO1/6JGC/znF/s4oYAgEdpGLwF5x5AlTOs\nXNFlzMGo76qLWel620+ZMgWAhYXFmjVrZs6cefXqVW1VfHx8eHi4VxF7iF+9evX27duNGzfW\nPMX4wiRkID13Vkty8F517gQYQRCu7l6ONm00L+8lw9v+RfbLCChkmNMJvapjYzBCYnHvMTxs\nUcMJ79RGs4K7vxMRERlVgFZn3f+gSb11l+PkJg5N2/esW6NyeUc7U1OFKjMzMTY6Miz4eNCp\neZPeWRuw69KJtW5KYx1cf30MroMfjukpVxUKw7vqDtq1YFD4BLlM1BOUNYvcxdi5vzHjbvF3\nPHU/30u5XUUT19qZd84Uc0pGRoa/v//s2bO7d++undGRlpbWtWvX4ODg0NDQ06dPV6tWrXnz\nnFHKL7744qeffpIkyczMbP369b179y6+S6XIROcrb2Keb/cZcxsH7bGSz9gWoXUltK5U1p0g\nIiJjYEwB+sTEzusux7Uau3D9D6P17uYtZsWtnz1m6PSATp+NDP6l7QvvIBkmVv8E5iKIotc8\n9Zmv3ZwfR+mtd0m8V8Kh6DySJLOwh0wOsYhdWABRFMPDw7t27bpr1y7tFoaSJF2/fn348OF/\n/PGHJlX7+vouXLjw1q1bP/74o6ZNVlaWr6/viwzQNqZwssCjNABI9+7u5OT06NEjACYmJpV7\nfnnmLgAIQGUOPxMRET0bYxqmnbIuzKr8J0E/++pNzwBkynJDpm1Y1tTl1obiljmjl8Rgg5Yl\nlskANPnmgccCKVNhpreJZij68LfVSnpNQXD6ZF+FaTdNXIpbmaJNmzYAOnToYGJiortex7p1\n67Rj0osWLYqMjLxzJ2/HZ1EUHzx4oNkB8dmFhIRMnz79hx9+ePDgQTHNuuVO6j5w16zzsnsf\nzd018ofNIzc83HjPXVPetAKcLEqlR0RERK8vYwrQV1KzrSr1eGKzRm86Z6cFv4D+0DOq6phv\ngQ6lHCGjcW7kk0+sNif9voNHUbVej8LCJxgwTUFu7+n4weZiGkydOhWAqanpl19+WXi9Dq2o\nqKj69eubm5trS8zMzB4/flzCbqhUqlOnTp0/f77wLU6cOFGvXr1vvvnmyy+/rF279r1794q6\nyGdvQLvgxpF7yn3ybv+a9dt1x1a7NMeXrUrYHSIiIiqSMQXoXuXME67/EJ1V7N/oxfSVGyPM\n7N8urg29NJZ0RaQfIv0Q4YewsbA0gY35k88C0OLriNr+j4ta5E4mipHjhL5n1pWwGyautSyb\nDM13BZlM808PD48mTZpoCmfOnHnkyJF58+bVrVtX00BDEARHR8e6devu3LkzPT3vkcTU1FTt\njI7ixcbG1q9fv1mzZo0aNWrTpo3uRQAsWbJE+0RgQkLC2rVri7qOowVW99I/xmyuwMK3Ud+1\nJN0hIiKi4hhTgP5q9tuZSUG1mw38Y9+5VHWhgUApMyRo28hONZZFPG47fXpZdJCenjYIK2X5\nt1opWrK1ted8MVVpVVSD+X++f3tiSWf5m1XtoD3u0qVLkyZNTE1NmzRp8t1333Xr1q1evXqT\nJk1KS0t78803x48f36hRI1HncUZJklJSUsLDw9esWaM7x0MQhJs3b+reJT09ffjw4ZaWli4u\nLosXL9aWz549Ozg4588mQUFBBZbJS0tLK+ZlAfVc8O97+LQxajlBKYdChioOeLc29g7Jm+BB\nREREz8KYHiKsOmzTb2fe+njp1qGdt8iVtt5VK7s52ZmamqizMpNio26H3YrPUAmC0G70kp1j\nDJpdSy8XG1M8zshXIhOK3F2v5o/JdqmJF6c6CPomV2j2Wxniu/s/r87F31QVH6E9XrZsmYeH\nB4CHDx9Wq1ZNMw3j8uXLqampc+bMGTVqVEBAQIHTMzIyli5dqjssDUCSpAcPHkycOPHRo0fd\nunUbOHCgv7//mjVrAKSnp/v6+lapUkWlUllaWoaFhQmCoJ28USB2Dxo0aNu2bTKZTJIkuVze\nr1+/4t+Lgzn+1xL/awmVCFHishtERESlzJgCNCAbufhAl6Hbl6xavzvw5PVrF8KCcwKHIDN1\nr1yrU7u33xnp26sJF241bu42CNEJ0GYKOFriXlKR7RMt7Tzni8UschewsItKoag8JxuAlJUm\nKPVMcbBu4yeYmCfu+t/IESM06RnAsWPHkpLybrx169YTJ05cunRJz10EISUl5e233z548KBu\n+YkTJ06cOAFg3bp10dHRR48elclkoihqsvKAAQNSUlIAVKpUSXfqc8uWLSVJSk1N1WzgMmjQ\nILVavW7dOnNzc19f3wYNGhT5WeSnMKa/MBERERkN4/sPbIWmvb9b/tfF0Mj0zNT4RzF379yN\neRSXmpl+58bFDb/MZnp+BbR0L1gyutGTz/Kap/6nQf+iahUqVcR4GQDIi1jCxdzOpsPkUWtv\n/fbbb9pCe/u8Jd8EQUhKStKbnjWqVq36v//9r5gezpgxo0BQTk1N1RzcuXOnRYsWJiYmZmZm\nkydPzsrKsre3t7a2fuONN27fvp2VldWpU6c9e/Zs3bq1bdu2xdyCiIiIXgDjC9BagsLc3tHZ\nvaK7s6ODObcefIXciMv3MkOFrw6V6MTRwzZ5LJBEmf5vtWaRu5v/s9Zbq3EgwUt3deo333yz\nTe4GfpIkZWVl6T1LLpcvX778n3/+EfUNgWslJiYOGTLExcVF89Le3l53wnT79u1TU1NTUlI+\n/fTTESNGaOaNnD17tkuXLjY2Ns7Ozo0aNdJdJo+IiIjKihEHaF0R27rrDhaSUbNWFiwpcuk4\nfbzmqUPK1y+qVpmdlTMUrY9KxNVHAHDvMY5FqE5fDhVF0crKysHBAUCBBeZkMpmtrW29evV2\n7949atSouLg4vdfUtXPnzk6dOvn5+R05cmTcuHGawK2J0e3btzcxMZHL5RcuXFCpVJp7SZJ0\n48YNTXC/cOGCr69vyT4DIiIieo6Maw50kdRZKYmJiWXdCyodnzTGvtvILnJzQAAwVSCz6C1K\nunxxAUDEeJneJws1Q9H3HT1bTA0vXPtdEKYeVN9NlgEKMa187H0xIzXVxLy83M5SnZhvq3BR\nFOfNm/fhhx9qXvbq1WvOnDnaWkdHx/79++/duzciIgKAIAgKhUK7vEZaWtrixYujoqICAgIs\nLS2nTJnSrl07TVW1ankbwWieLNSG6TNnitt1nIiIiF6MV2QEml4ldZxx+H1UdSiuTTHpWctz\nvhhavlZRtRViI/TutxIah7vJcs1aejILe5tu/i5jAst/daPCjDvlhqxB/pWndUed/f39J0yY\n4Orq6ujoWKVKlYyMjOXLl2vSs7W1dZMmTbKzs7WNV61aJUnSsmXLkpKSHjx4MHjw4L/++mv3\n7t0qlapWrVpTp07VLOhha2urPUUQhDp16gCQJOmff/6ZP3/+8ePHn/wpFC0kJOTUqVNFzUsh\nIiKiorwiI9BPTa1W7969OyMjo5g2mgxU/PRWKl3uNjgwFKfuY9EpVLDGtlBkFTsgXZS3vrgq\nSFL4BLneoWjNfitjhm3Y1WBQUVdQujWQmdtpji2bvJ8ZcQKSpH50I/PWEblc3qVLF21LMzOz\nuXPnjho1qn79+nFxcbrzPVJSUpYvX96wYUNtiVqt1ja4evVq69atNX9Cady48dGjR/39/UeN\nGnXv3j1nZ+dvv/12zZo1oihWqlRp/vz5AD788MPVq1drzp09e/bkyZMN/VjUavXAgQO3bt0K\nwNvbOzAwsFKlSoZehIiI6LVlxAH6lO+wH+7m7JOcei8YQJ8+fbS127ZtK8lFAgMDe/bsWZKW\n4eF6/txPz1XTCvizLwA8zsaesKe8iCQInvPF2xMVcrX+DL5kzeCf173rNa+ohJ4veTv0X6oZ\nhJYn36vtahJr7aJbGxUV5efnV/j3mCRJffv2LVASHx/v5uYGYNasWdrF8s6ePRsQEDBixIiK\nFSuuWLFi1qxZoii6urouWrSod+/eJiYmkZGR2vQsCMI333wzceJEudywpZ43b96sSc8AwsPD\nv/76a+01iYiI6ImMOECr01I1a+gCSM9QA9C+LLl27drt3Lmz+BHopUuXHj582MvL6+n6Sc9u\neVd0Wocb8U9/Be+5qnKP485NdypqKDpivOyNmVEPbVwKVFkmhqSbt8x5IUnaKRxqa/dLqRix\nE9sHoY4zANy8ebNu3boFduHWEARB83cM3RKlMudhyaioKN1dVB48eADg8uXL33zzjabk4cOH\nixYtGjBgAICEhATtRSRJ0sylFgShd+/eJR9F1t2oRRCEGzdulPBEIiIiglEH6BYrNu/PPb71\nV9sqg4/s37+/uBP0kcvlPXr0KL7N7t27AciKWByNXoz9QwGg1ZrcHVUkw5bmABBnU674/VbO\nfO2qlsu95+ZNr1bKRZus6LiLm+T2lZQV6gsK0wJnqUR8/P365APfOTo6Pn78WG96RqHlOzQl\n/fv3P3TokEwm69ix49GjRwFo9hrs2LEjgOvXr2sbi6J49epVzXHNmjW9vLwiIiI011QqlePG\njQPw5ZdfHj9+vF69eiX5KJo2bYrcJxRFUWzevHlJziIiIiINhkIyJseGIcIXEb4wedqffl7z\n1OtajymqVrP1t0KVk6Gz1LIYj34W9QeYujcsnJ41rpw8ePXq1cOHD58/f96gnhw5ciQ4OBjA\nF198MW7cuPLly1epUmXVqlWaOFtgUTw7u5x52Eqlct++fe3atXNzc6tZs2ZmZqamPD09fd68\nebqnhIeH//TTT4sWLSq8vl7Hjh39/f3NzMxkMlmvXr1mzpxpUM+JiIhecwzQZJQ+b/H0507t\nt7j4/VZuTTIJm5w/LstN9DbOvB2Ueu7Pp+7JH3/8AUCpVM6fP//BgwehoaHDhg3TVEVHR+u2\ndHJy0h5v2rQpMDDwwYMHISEhum10Z3dcuHChVq1akydP9vPzq1mzZlRUVIFbT506NTk5OTU1\ndfv27ZoNw4mIiKiEXpEALcjkCoURT0chQ41qgPeKXKGuRLzmqe86VymqVplV3H4rAKT0xOg5\nDWN+biNl50yg16z0XPxNCzTQTMyQJGnLli1ff/31pk2btIu91KqV7+0lJiaeO3cOQEZGxvTp\n0wtcVjMZQ/c5xUWLFmln9j98+HDVqlWFOyOXy83MzIrvMBERERX2igRo7wEHdRfZpdfBtx0R\n4YdRjeBmDXP9A8RP0GpKmMcCSRL07wOv2W/l7LTy+mtNrRwGLHf+9F+zqu20hZs2bVq8eLHu\najAaMplszpw5+/fv150sIQhCbGzsggULhg8f3r9/f39//4EDB3700Uea2v79+w8dOlTb+ObN\nm2+++eatW7fi4+O1+xRqOTs7L168ePjw4doS7bIeGpqNwYmIiKhUGHeAFlXxx/ZsWbpw7vff\nzgKQGhHJtZpfKwLwVSuc+BB2zzCQ6jlfzFIW2j08l1NytN79ViBTKD3eMKvW0emjXXK7ioIg\n7Nu3r3fv3mPGjOnVq5duQxsbm5MnT06cOLFjx45jx4718fHRVp0+fXr8+PFr167VlqxaterW\nrVvDhw93c3O7fv16rVq1NE+vahbc2Llzp5ubW+3atQv0pU+fPmPG5JvY3bdvX0mSZLl69+5t\nwCdCRERExTLiAB0VuLRZxYqtu/YfM27SlKnTAFyc+baDV5NF/94p667Ri1al2G0Ln6jqj5nF\nDEVr9ltZtOYdvbWC0sKq6fCmzZp36tQJQEpKyo8//qitVSqV//zzT5MmTTQvL168KJfLFQqF\nZsGNwleTJGnSpElr1qyJiYk5d+6c7locADQzLrZv396iRc4ccEEQ5HK5dqw6NTVVc/Dee+/9\n8ssvLVq0aN++/Y4dO5o1a1biD4OIiIiewFgDdMq9vxp09j0Xq3x33NRvJ9TUFFbo2s/h4aXx\n3eqsCucfrF8vbTxK4SKe80VV0ZOYe13YoH8oGrDt8k1Cz03LV6w+fPjw+8OGh8ur2rSbqKzU\nRBCELl26CILw9ddfL168ODo6ulevXteuXVOpVIU3ttSMNDdr1iwoKEhTIoqi7oaFSqXyxx9/\nHDNmjIuLy3///Xf48OH33ntvyJAhhw4datGixZkzZ3x8fKysrDw8PAIDAwGMGjUqKCho//79\n3bt3f/YPh4iIiLSMNUBvHDTukdpszeXwP+f7D32rgqbQc8C3l65utkHKlHc3lm336AX7qAEs\nipyFYYDKc7K7TLlUzFB0xHjZkLO/Fq5KN3f7fNWJdu3aHTXr7jRiu12vOa7jT1k2eT8sLKx1\n69b+/v6fffaZp6dnYmJiUXvCK5XK3r17BwQEuLm56S46/uuvv376U27BngAAIABJREFU6adK\npVKlUkVERCxdunTixIkA2rRps27dunfeeWfDhg3Tpk3r169fWFgYgHv37vXr10+7vB0RERGV\nOmMN0LMvxDnUWvheDbsC5dZePRfXdoy7PLdMekVl6Nqn8GuGPj4IfP+ZrhPiXNdzvqguYnNs\nQZK+++Pj2xP1DFQr7D1MKzayfGN4blPBqtWYxMREbYPiQ21GRsb27dubNGkycOBAITfBDxgw\nYMSIEW3atMnKytIm7127dmkOVq5c2a1bt2XLls2aNevu3buaBqIoJiQkaMI0ERERPQ/GGqBj\nstWW7p56q8pXslBnPXix3aGXwoSmWPA2vO3hVfCHlcG856omD1pa1FC0Zr8V03yBWEq7vNXh\nnZW6zcwqNVBYldM717koCQkJs2bNUqvVAARB6NWrlyAIuotAy2QyZ2dnzfEvv/yiO1atid2a\nTcI9PEpjUgsRERHpY6wBurO9Wey5NfqCibj61CNT2zYvvEf0Etk/FG7Wz3qRv5p/6jlfLGa/\nlRtfmIV+bq55mf0wVMpKMylfR7eNCIXQW88CzADMzMzef1/PULkoitqBakEQ5syZA6BNmzaa\n/b0ByGQyf3//nJtmZ+umcxMTE80/Fy9ebG39zO//BVLpm9WSmo3dYZh3El8cxPJzOHYHoqG7\ntxMRET0fxhqgp0xokBqzruMXK1N1/6MqZW+b0WVdTGq1D78qu65R2TOR4cSHiPTDe7VEmSrl\nWS7lNU99zrtVUbVm2Rma/VZMnH3Kf3EFhUasxfINBBPzwidmZGQcOnRIKGKEO+dcUbx48eL0\n6dPlcvm+fft27NixfPnykJAQ7UOBw4cPlyRJcxEnJ6crV64EBQXduXNHu5j0s7h06VLz5s0t\nLS1btWql2XK8dGWrseYSBm1G/V9QbTHarcW4fbgck1O7IxQtVuLT3Vh4Chuu4vtjGLINnf7A\nlYel3hEiIiKDCQb9ffnlIamTfFtVX3wyxqJ8tcaeCUdPPBo5/N2rx/45eTPJtuqAq1fXuyv1\nz2F9Ch988MHq1av9/f2nTp1aWtekF0aSJJ+lYobqWb8PEeNlQtH/siSaO9T7Pk5vVfLh+Ul7\nZ1o2HS4zt0u7vC37wWVNeeXKlcPDw4t6plBLEIQrV64U2JhQQ5KkgICAnTt3WltbKxSKhw8f\nNm/e/LPPPnv2/QVFUfT09Lx//74oioIgeHt7h4WFFR/3DRKbhuE79KRhuYDPW8DODP87qP9E\nSyU29kNt59LqCBERvbz++++/Vq1aLViwwM/Pr6z7UpCxjkALcttFx26u9h9TWfHw6IlHAFas\nDriYYP/uhLkhVzeUYnomYycIwqGhcrNn3ujdc74Yb+VUVK1denxRi9xZtx1fYVaMfZ8Ftp1n\nlJ90zvH99RW+eeD2VWi03RvaNubm5rIi5opIkhQaGqq3ShCEIUOGBAQEXLx48Zdfftm+ffvk\nyZM/+eQTTW1SUlJwcLB2Q2+DhIeHa59KlCTp1q1b9+7de4rr6KWW8OFO/WPJagk//IevA/NK\nqjigWflsV6ucl6lZmLQfaqP81U9ERK8OYw3QAAS51bCpiy/fSYi7HxFy5eqtyAepseF/zp3g\npjTiN0XPQwUbhI5B5DP/fG0w6+ET91uZ96eemc2CwjS3kcKi4WC5TXmFUzWHd9fIHLw0xebm\n5kWN7yoUigYNGgC4f//+lStXCm9ZHxwcfO7cOQCavyYFBARkZmauXLmyfPnytWvXrlix4uHD\nhw19p66urgqFQvtUoqmpqfbJxWe3/Tou5U7VqOkodTM/+VbW9l5uUdofOVkiAMgFDHc4cd7X\nfuMgZeKcmn0rPdLUXovFmful1RciIqKn8SpkTQc3jxq1a3lXKv8qvBl6nmoWOYJsgOL3W+l3\nZl1RQ9EFCHITpXtDzXF8fHzjxo2XLFlSrVo13TZyuXzFihVeXl7jx4+vWLFi3bp1q1evfuPG\nDd02mmcHdU9JSEj45JNPNGPP8fHxw4cP19uB+fPn165du0GDBitXrixQZWlpOXv2bG2Anjt3\nrlwuX7t27bRp03bv3l2Sd1eMv3O7X9VBSvqlw7KPm6+Y3GfxoAr9zQJ1m7WpmPXjqPaPHz8G\ncPNGaKB/Z2fLnKrTXGWHiIjKFDMnvUa2DURl+1K4TuU52U2mxxS/30rXS0/ezUcVH649Dg0N\nrV69emxsbIE2Hh4eQUFBCxYs0AwwR0REfPDBB4GBgVlZWZoG1atXb9Mmb9mZUaNGRUREaBfo\nEEUxMjJSs61369atAwICAKSnp69bt27ChAkhISGXLl0aMWLEnj17Ctx3woQJ165d27p1a2ho\n6OjRo/v06TNs2LBZs2Z169Zt+vTpT3xrxbiVkHNQW3H7RFBeaN46Z7SjRV4zy8zojIwM7eLW\nVy5d9LTNmboRm/Ys9yciInpWzzwzlMh4mClw6H1cjsHAzUhXPdOlHto7e84Xb09UyNXqwrWC\nJC1bNUgtf9d7bpG3kaT/s3eeAVFjbRQ+yTRg6EW6IAhi74qKBVHEiq6KFXtbey+7uuvaO6tr\nW/vasa0Vxa4gIoq9oCDSlN7LMC35fgTCMAzFsuvql+dXJvfm5iaD45s37z2HElo1MOyxkpbm\n5VxbY29vPmTzfWXTCbx7e5U5iUwfpVI5duzYOXPmaDl3ErcYTssluUGbQ0JCOnbs6OTkdPz4\n8devX1tZWQUEBOzYsSMiIqJ169ZDhw7Nzs7W0tJivFdIkrSwsJgwYQJTYx0cHDxy5EiZTCYS\niQiiZA1xQEBA165d1Wbo7OzMZMQjIiJY9xaCIDZs2PDrr7+WV7RdKbLiG0bL8lXuBp2VlWUm\nAPsAIdMyI0mSpmmapkmSdHB0fJ9b9MRi+LmLJDk4ODg4OD6LbymAzkpKzFdWIlnAYm1t/Y9O\nhuPbpYE5bo3AtXf46To+U4TGYb1i6bEJvnd3aBToYPxWGv2akWWowdmFAG08cDezrV3LM5PP\nE5EiEaDbdkrimgZUXlHJb3R0tLajW7Ufx4AgAeg09klcVU+ZlRAZGdm4cWMmAu7Wrdv58+fZ\nKmojI6O//vpr7NixOTk51tbWDRs2/PDhAyv3waSu1WwRVb1aXr58GRUV1aRJExsbG2ZPXl6J\nFCBN04WFhXK5XCQS4ZOw1EVSHgBk6roYGRkxZo00TXcbNOF6Tkm3mwnac/2OrJ89VC6XGxoa\n9l8RcKi49LmxxaedmYODg4OD48vwLQXQcxo770qqqqbvNyrPx/GZFBYWbtmyJTw8vE6dOtOm\nTUtNTV27dm1SUlLXrl3HjBnDJk3NxRhcD5a6mHcVGRJaTn26QNsin+2LfLa/m8kjNQnSETT9\nZLGRXCCouVZWpk2lVFqow/698vQttOt0zw/bR2obipsPM7F2PJVWB8UTJLUMtJw75Yftg8of\neUBAwJYtWyZNmsTG0D4+Pq6urr/99tu7d+/KloWoYWlpyWp3/PLLL8uWLaNpWiQS7d+/38fH\nB0CDBg2cnJwiIyNJkqQoqk+fPp8cPQPoYI9HSQBwK0E4YterN/7zk2MimnQd8c5xLJUBAARA\nA1IljpE+fQ/21qVzkinjQ++LvjtbfbSx/eSTc3BwcHBwfAG+pQB62dWLtfZt+cXPX6Kkjep3\naGOnW/kxHP9njBgxwt/fn9m+dOlSVFRUcnIyQRCnT59OTU39+edSDjvu9ggbgzwZUXfb5563\nxgal/yYP1+jrGlsFcnnMDNLer6rvT6CUEyJdy3lPeYa2FPAwqVQjLckse8SUKVMuXbp09uxZ\n5iEhJSWlUaNGmZlFPZnAt+xRQqFQJpOlpqYeP3580qRJCQkJTPQMQC6XT548mQmghULh1atX\nf/vttzdv3rRp00btNn4swxpgzyNkSwHgZLw5Wu8l2+ASDWQUdWhogcdJAKCgEJIoBEzZY/kk\nVnrgO5OpzJdDLKi8238EikZoAp6l4F0WzHRQyxTudhALv/a0ODg4OP5dvqUA2ryu2+y1bu7G\n0c1+Cqs9adu58S5fe0Yc/y3y8vKOHz/Ofrxz5w6zwdj1/fXXXxojP10h7AwRm/W5Zx8w9RrK\n91shaDp2OpGib9F8SWLF44gU2ZIX57RdvHiGGhKt2mmP+PFB2traEokEgE7Dfvqd5hF8rbx7\ney5c8AsMDGRKmU+dOsVGzwAoiho2bFiLFi127dr1+PHjohOJRIwonlKpnD59+qBBg+Lj49ms\nNkVR6enpEolEW1sbQPXq1Xfv3v3xd0UDxtrY2g2jzkJaXAytaifa3AoH+2D3I2wIVbf4NtHG\nus5oW/2LzOIrI1di/1Oce4M3GciXwUIX9aphVKP/enI9Ig3TA/Gq9CsNfREWtYNPna80Jw4O\nDo6vwbenwlF/0vqvPQWO/yiqq+LKIhSWmyW7PRwbvSgtfIrniBr2flSmuFylj2o5SYz1dwV0\nlRwhtQ312muQrS6MvG52a3p2ZnpeXt78+fMFFnVMhx8R2jYTWNYz6r1Bu35v1u6E1ehgadKk\nyaRJkx49erR3795x48YdPHhQKpWyVikKhSImJqZ+/fqGhoZMDpsgiPr164eGhmZnZ1cw21ev\nXh06dIgNyquIW3WcHageLOqJMK0ltnbD42SY62JjF8xqhX614VYdvg2wphOCRqJjjY86T1WR\nK/EqDU+SUaCusv2PkF6APsew5DYeJSFfBgBJebgajcGnsCzo35jApxGRhv4n1KNnADlSzLmC\nvR/3J8DBwcHxbfMtZaAZhPpuTWwsDLS+r5e4HF8CsVhsamqamppatommaV9f3/IOLCgoWD3C\nI+rRC5uVmSA/90+r0fIMVJaKfmHbuNush2VbnQ3lGS9fW8x5ROoYqzXRSln2pd/iFbE+Pj5S\nqdTAwGDK8j0nckv+Ces4dWD17Ly9vefMmcOG0Xw+39PTk9keMWIEowy9ZMmSqKgoRqlDT0/P\nxcVFR0fnzJkzkyZNevPmjamp6ZMnTzp27GhkZBQQEODq6lp2tps3b542bRpj9/3LL78sXry4\n6nfJxRSHf0BWIV6nI0OCmsYQC7AsCC13lySkSQKdHbC2E6z0qj7wx/E0GatDEJpQlO0mgHrV\nML0lOjn8U2ekaIw9r9mIEcDOhzAXY2yTf+rsnwwNzLuGnOKlp2Y6cDSQZ0j5bzKKyu6XB8Pd\nHvYalstycHBwfId8exloAOHxiQHDnb72LDj+cyiVShsbm/Is/apXL/fd//bt20NDQylpbsbx\nCV9qMhX7rdSNf1TWb0VHADsjQUidtWrRszIrPvvCwsSVdaVvb8fGxp4MuBFEdgjUGXzgRoRq\nt+He7VkfFjs7u9DQ0IYNG+rp6dWqVevcuXO1a9dWO92OAyecm3cCQVhZWR0/flxHRwdAu3bt\nnj17FhQU9OFDkVtJdnb2zJkzy16CQqGYO3cuk/KnaXrp0qXp6ekV3BCJRLJu3TpfX9+1a9cW\nFBQpORtqoaU1utaEkAdvf1yILFXOQdEIfIvuRxCVoXnMz+TMa/Q5huC4kloRGniWgtHnsCH0\nHzkjgIAohBdX8dQ1o3uKgjrlHPjB/K1+8bJMv3vIlZZ39FfjaXJRYTqAXtUzC/9odGyAMGyy\n4TC96wIeAMiVOPL8K06Qg4OD41/l28tAc3BoJD8/393d/dGjR+V1MDIqt7IiOjq6aJD7B3Rb\nTxDaNv0iU3JcJ7fITApdYqUxFc34rSzt98fuNpOYPQVyXHkHtX+V8vePJRGXaZqiCotKKUxH\nHNNycme2qcIcUqQHgmiin/qjm9H58+dr167t6OgIoHHjxhorK2iaPn78+O4oy9diN3pQYK9p\nykN9ebpC5ObmLl68OCgoyN7eXjXfTFFUVFRU2XGysrKYOmy2W1JSkomJSXl3Y/DgwadPn2a2\nb926xQpLA6BoTLmIlBJVaGjzS4S6MySYGICAweBret5/lISHiYjMgL4IziZobwczHQ3dyhKZ\ngZmX1cusWTbeQx1TeNWs0lAfRUBk0UYNQ+Tt9tpy/TLzcY7fUX9iAIB8GW7GoqdzeQN8HcKK\nNQQNRHiysd/L508B5Obmrp7gNdI/81KcGJxDJAcHx/8T32QGmoOjLDt27Lh//z770cHBQTUV\n3aZNm06dOpV3bJs2bZgNWiFN3uSWtn9wfvihLzKrJCMLez9KydNcFkLQ9C/HJ0fPqug5VmDV\nQN9jrmGPFRYzQgmRLiHS1arZgW0ltfRBK1O2uJ8Zbe7i7NizZ09nZ+dp06Z169bNw8Pj5MmT\nZQecNGmS7+y1EeK2NAgAj1N4ex4DwI8//rhhw4YHDx6cOHFi9erVfD6fLYZu165d2XFMTU0b\nNGjA3GSSJG1tbWvVqlXeVWRkZJw5c4b9eOHChaSkEm2R4Hg8SS7a9rCRNH88hdhcu8n98V1s\ni2QrX6fjarT6mIl5GHgSvf2x5DaOPMef4Zh1Ga33wC8UyiqIWG66VxQ98wgMsH3f7Pnchvcn\nDjB+pFtcKr/ubuWDfALRxWs7G4k/BBVHzwRBHFg93cFIvc9/h8ziBQI2+ngQdpd98yCXy4V5\n8UxTOucQycHB8X8DF0BzfCfcvn1b9SObVAYgEAgmT57ML7+gYuDAgfPmzWPkJmh5YcHDI+kH\nhmaemqbMjP0ic3NYr1jae2151t+M34ppZjlqzUTRP1K+iYOWQ1taVkBJc0t1IPnC6i1pmlYq\nlQAoitq0adPFixevX7/er1+/X375he0YExMTHh7+559/8o3tVAeIzwFN03///TcAxvkvJSVl\n7ty5pqamJEl26tRp8+bNGqd28uTJLl26GBsbt23b9vz58xXc4Yq5XXybrfTwfK3HyX2bIyIi\nzhzeGfxLKzamvKXyVciU+P0e2u3D3QT1oZimX26o71eDBq7FFG1726ZtGuz49+515w9vXzus\nSS/dosewyAzEVrR+8hMpMWKUlyxapWk6Pz9fVPycJa+y4OG/BlthkpQPl9p1WEl1kiQpXUtm\nm3OI5ODg+P+BC6A5vgf8/f3Z8gAWVpFDLpePGTOGkWzTCEEQq1atev/+vWrSOvf2pvdLHY2j\njysz4z9/hrs6zLb3o6hy7K8Jmg7/zezN3EoCEL0O03Ua9XP8cAIoFWGJm/uKarRW79x2ssXs\nhztyu228EEFRlK+vb40aNZo1a0ZRlDT2Hi0ryRa62YIgCD09PdXLb9Wq1f79+9+9e3f58mUL\nC83WfzVr1rx48WJ6evrNmzcbNGhQwcyNjY379OnDfuzVq5fqmKw/kouh9P69osQvTdOvXjx3\nEheZEyYW90krQG9/+IWWRKIs7M09+Ay34yqYDjIlRfIXACQvA6RSKfPkQBDE87Ob2G7x/0AA\nbaNfPDhpx5TsM8Fob98fI4tLvW3+sUWTn0yj4q8rvQCeP58yNTUFwOPxpq/YeT3RQK0PBwcH\nx3cPF0BzfA/Mnj274g75+fnx8ZXEwY8ePTIwMCi1i1IOs0+odtZbkV6mgOCTqLFBec/erbxW\nkUxascidVi1P0+H+ei2Hqf3LFVjUNRt3QWhVX7teL76pIwDtuj2M+v4htGkssnf1i3Ta6n/l\n4MGDbH9lVkLarp6Fb64JMiIWtaW9awHAzz//zD5yWFpa9uzZ08vLq0aNGnv27PmMKy7h0KFD\nGzZs8PX1Xbdu3dGjR0tdeHHmVUoLVNPYBEHIiKKHCi0+AFA0Rp/DCw06KwBAATrFjiT7n1Q0\nGVLlZQApKKVvKBBps9u8f+AH0t2+aCM8iddz04u+Y2a3atdx3JLdSa4rmZISkkA7u3IP/1o0\nt4Jj8duAI/HVm/kljj6a6nMk/4x4FKP9RxIYUPcrTpCDg4PjX4VbRMjxPVCx/gMAbW1tO7uK\nopIPHz707NmTVYdgWbZsWU5ODmLcTYb7C20aE/xPt7Bm8JkehMr9VqyaLylatEUVZMs/PBTV\ndGf7PEshUKYYhNQ2NJ/9kCD5oJQZJyfzTRzZJprgXX1VKpVKkmRLK6o2fbKlQ0vLtDiFoiOf\nz58yZUrjxo1v3bolkUiWL19edHaK+vHHH4cPH84rp4xbjdevX8+bNy8iIsLV1XX16tXm5uZs\nk5aW1owZMzQe5Vy88vB+Ivnjwg1/LJ7KfBwze2lQklC1z7k3JVoQDLp3fnmfTet1nE1qGQCQ\nKSnm6eJ+hQvaDLRgrI0MCQDQTj309fVzcnIAEATh0nte+HsAIPCPiLINqIs/w4sS6hfi9FF3\nDeoiHiVGjAPq/oOyfZ8Mj8AqDwz5uyjx/zyVfK7iEAlgfFPUNfs6c+Pg4OD49+ECaI7vgWrV\nqsXGVlSvLJFIHj582Lx5c5lMtm/fvjdv3ri6uvbt25ctWggJCSkbPQPIyMgAgMy45N9bAbCc\n/0Jg8QUs1+z9qAe/WJrlJGlsrZbzgbX+JrX1VKNnAJRSQfDLhLM0CJIPACTPsPvyrIBFqo0O\nxqX60zS9detWd3f3bdu2AWjSpMnt27fFYrGbm5ubm5uaaB3j9V1eFYdazy5dusTFxdE0/fr1\n6/j4+GvXrgFg7QzLo5sT1oRAQUGmxC2LKVOOekuTXgmrOd/JrVEgAQCSKFKluBBZ6kBaVvDy\n+FIAhVG3zKfeBqCgipLGWYVQUJqFOwAQgJcjDj8HgIA43UH73suenVTKJCZNevu/L7rSRhaw\n1K30oqvK02Rceos36cgsRANzZBaiUKGhW1NL/KJhxeZ/ghbW2NsL0wORWvofCp/EpOaYoUEo\nnIODg+O7hSvh4PgeWL16daV9oqKiaJru06fP+PHj169f379//zlz5rCtVQkQASSuqpt3dwdN\nlym//XiaLUm0+50ub2Uhk4r239yRXURY0qQpC04rS6SDSS29gvv7JS/OAQBNNaQfLx/fTU+v\nJKvp7u6+fv36lJQiM4+HDx/u27ePbW3UqJHqyLq6ulW8OS9evIiNjWXrQG7evBkZGdm2bVux\nWGxsbLx3797yDrTVx7hi65CsQpxJqn4JXc6m1EgvVskb1gBOxkAZeQpCoE3qmgGQRgepldno\nCsuNnhmmtAAruHExTveawfCbZhNOxluw0hzzy621+ThkSsy5ip5HseU+rkTjwQcEvkWhAlq8\nUpUkhlqY4Qr/viVVKP9B3Krj9gis64xhDeFWHT+44Cc33BqOma5lX4pwcHBwfM9wATTH90Db\ntm1btWolFArZjLLqejiCIPh8fosWLaKiogICAtj9mzdvZlcWtmnTxsXFpSrnyvAfnzBXL+vc\nXFBfIIy296Pk/HI9xl2jbpT1WykLlZukGlVLX5yjpHmpO3u9X2ie8LNp1qmpWlpaISEhnTt3\nNjQ0tLCwsLCwiIyMVL1F79+/Z7cHDhzYuHFjZpvP5x84cKDSCRQWFr58+VJLq2QRJEEQ2tra\nbm5uwcHBNE1nZWWNHTv29evX5Y0wpzWG1Nfc1Lc2FhUnZVl5CvZrNuq5mjGPpOUS1aOaVBbz\nW+lhV88ScQlV+CRWdISrdSUjVJEZgTj2QsP+QiW0+NjUBXt74fYIPB6P6S0h+M9brOoI0L8O\nlnbAoT7w64LxTUuWRXJwcHD8/8CVcHB8D4wcOTI0NJSmaZIktbS0FAqFUqlkU6HGxsa///67\no6Pj06dPVY9SKBQKhUIgEAAICQnJz88nCII9iiRJitIsJ0bLJTnX1soSX1Qbdx6fnXqruU6q\nn5Pz9FfDCvxW5g7681iLsWUnwpyd1CspNUZhZubR0QD4Zk4CM2dZQnhQUNCQIUMOHz5saWmZ\nlZUF4PDhw9ra2szVMZfs4eHBDiAUCh88eBAUFJSdnd2+fXvVhZVxcXHLly+PiYlp167drFmz\nmIj5xo0bPj4+aWlpOjo67du3v3XrFtO5UaNGd+7cKZooTSuVyvv375enFU0SWNERPZ1x+Ble\npiEuGzb6qGsGn7pop+Igaa2HmCwAMNCiswoJAOKWI0UObua8jAyTuqr3b1C98u94Ma1sEDgE\nm8JwOxbvcwHAVActrDG5eeXlvAoKFyIR9h5RGRDwUMsE7ezQzk79r+H6O5wvLjvRE6GFaa5A\nnpsIiycpJIACOXY/xtmBlU+Vg4ODg+M/BRdAc3zzKJXKGzduMIEvRVGq9ngADAwM0tKKJJbr\n1KnToEGDp0+fMsFx3759mdrcGzdudOrUSS1c3rhxY0JCwpo1a2hNcS2AwpcB73+1sV4cX7bK\n4mPJ0de396OiZ/F5Sg1ZbYKm1x4et8r/R4f1amWzRJkNyNJjZflZeh1mGHmvA0HS8sLMU1OP\nHNk5e/bsY8eOsd0kEkmdJq3TDZsKBbwZPWt7eHjk5ua+fPmyevXqlpaWJEm2b9+e6fn48eP0\n9HRdXd3Hjx8vWbLkw4cPBEFcvnw5NjZ2x44dAIYPH85Uikskkrt37548eTIhIcHV1XXKlClq\nF+Lk5FTxfWhlg1Y2FXVwt8edeADIKiREJC2lCAB8M6d0ACrfkldNdK3kVEVY6WGVBwDkySBV\nwqSiUu0SojIw4QIiVQzGg+Kw6xHaVscmLxirDHLsZdGGuRh1nvy0d/NKAObm5r7bnxyLNQfw\nJBkRaXAptR7vU6DoUgUhHBwcHBz/KFwAzfHNw+PxqlWrlpiYWDZhzDjksR/5fH5gYODKlStf\nvXrVqlUrtgZ6z549alFykyZNRo0apaOjExoayqZUy6LM/vB+kWW16cFaxnay3DSegdXnXIjD\neoX3w0MbD/hqTEUzfiteP72IMKtd7hCUIufaapB8w+7LmbCeEGgZD9ghtG3avHlzgiBIsam+\n+yy+sZ0sPjy/83yRjimA07pwuRY8pH+vzMxMHo+3YsWKuXPnAqBpevDgwWqScygW2D58+PD2\n7dsLCgpYfUCapmUymbW19Q8//ADA1tY2LCyMPapHjx4tW7b8nPsDYHA97HhYZPrNRM9lGVgP\nSzp89HsBXSGquGIwKQ+DTpUyHmcJisPwMzjZH8LiSoynxQ6LbgZxfptXMtupqakPt43U6hXA\nrCN8mvLpAXRyPnY+xL33iMoAQcDZGG7VMapRqSCeg4ODg+NyrCYDAAAgAElEQVSLw9VAc3wP\nrFu3jrVGmzhx4tChQ5ltoVC4Zs0a1Z4WFhYbN268fPnyb7/9pqtbFDKpRd4DBgy4d++ejo4O\ngK1btwqF5dYoA1DmpTjcGPl4dKHljXGffyFnmgyp2G8lcHmdt7M1rzKjKUXKFveCh0dJgTbB\nL+XJott6PN+ygVKprDbhon6n+TpNBhl6r6N1iqK2mCxM3ng+OzsbgFKpXLBgASNpEhgYWDZ6\nLpoJQWhpaZEkqaur6+DgwNx8kiS1tbXZUvIPH0qU5IRCoaoQ9ScjFmJHj5LFf2rY6OPsQKz2\nKBGW/idYdackenYypj3Nkzwt0y2Ko++nydinIkGdU2zXosgscU2kKOrNy2dGxV9Rdokj4ccR\nHAfPg9j5EE+TUSBHvgyPkvBHGDwP4pFmfRcODg4Oji8DF0BzfA+0a9du6NChzZs3nzVr1saN\nGw8cOHDnzp2jR49GRkZ27dq10sP79OnDZqBFItGiRYtYO486deo8ffpU3WClGLFY/PLly6Cg\nIH19/Zjn93KvrYPmco+Po8YG5RHXUeW18hUKjX4rBMmnCR4ASporiwlVayX1LfhG1YW2zTSO\nmZaZzT5FUBQVEREBIDw8vLw50DQ9c+ZMhUIhlUoPHjxoaWkJQFdXd//+/cy9ksvlqulnmUz2\n5EmF1iZVprEFLg5GF0fwVJLMxtqY1Qo3h6GheflHfgny5Qgormn2rF4Yv6LurkGWuwaY6h7v\nVc+s6Lv3V1kyaFqcCSbMapEkyS7cdHXvxorBmel8ykzeZmLseWRpCr5TCzDiTIl3IwcHBwfH\nF4cr4eD45ikoKGjbtm10dDRBEPfv3ydJcs2aNa1bq1tbl4dUKl28eDH7sX///nXrlnJUS0hI\nYLKzahAEsXPnztq1awOQyWRpaWk4Nyfv/j6LmWGE8JNiIhXmD9w9f+DudzN5pKaFjIzIXYau\naeNlpUz5zH8MlMY9Koy8SpWWpIC8UBYTCppm1x0CAE2DIAAYa6MaL/ahyqLJ/v37b9myxdjY\nuOypxWLx2LFjPTw87t+/r6urK5fLe/fu/fLly+zsbAsLC2ZFJgCBQGBmZpaSksKOaWNjA+DZ\ns2ePHz+uW7dukyZNyg5eRaobYEcPFCoQmYHUfNQ0hq3BvySj9iYd0uIydXnQ2jcRr5jt64Hn\npvW6+hydAURloEBepEbX0gbvsgAg8IPJvK3nt80fnJOT06Fzdx3vTYoEACCAFp8k97H6DgqK\nzek720rI+CAeT5Bn2eZ2ghBAViH8QrGm06dfKQcHBwdHBXAZaI5vnjt37kRHR6O4NldV0rgq\nPHjw4MWLkpzhuXPn1OqhWb1kFmNj43HjxgUFBQ0aNIjZw5qwyJNeKFLffNwFlE+NDcrXFuXK\nSRjnpamnonkiUQ1XA8+FWs4dVXdnXV5KSbIoaS6UcnYnLc1z13k+0xUBg/HX1nV16pQYxOTl\n5Y0ePdrR0RGlIQhCIpEMHjyYJMklS5bIZDKKok6dOrVixQpbW1s2embYsGED6184c+ZMBwcH\nPz+/Ro0aDRs2rGnTpqoPLZ+GFh/1q6FjDVT/otFzXDbWhmDYabT/CwNOYNFNPEwsac0pkdtG\nYuRjUqXYJufDm7LdhjcoypRLFDhU2LXh75k9D8kTvc/eTCjSz+tS81N8B/NluB5TtN3XPtN/\neLWd07tsn9Lx0gTrbnZFf4oXo6DQrCLDwcHBwfG5cAE0xzePatzGSD5/1OFEaSsTooyzSe3a\ntdV2ZmRkdOzYsU2bNuweQ0NDNgDNDdr8UROoGM/5zyr1W7m0upHGVobuTnRX0xihTROhVQOq\nMLekgS+8lml39lGKTIk6deo8e/ZMS0eXb1qTEOnSNK0ktTaEwmzsWYMuvxBCMXMETdMURZ0/\nf/7evXsofmIhSTI0VL1iBMCgQYNev3599OjR8PDw9evXy2SyBQsWsA8nS5cuzczMLHuUKqdP\nn3Z0dBSJRL169UpOTq648xfh4DN4HMDm+7gVi5gshL7H/ifocwwLrhUFo6oyHc6terBSgABM\nahX9PZBESbc6ZqUs+t5l4VEymV9cGG2thyUdPmWecTmQFyfC029tycsrKtdIS0ujnx5mtnOk\nmlc6cnBwcHB8PlwJB8c3T6tWrerXr//s2TMANE1PnjxZY7fk5ORNmzYlJiZ6eXn179+fjYmb\nNWvWsGFDtkJ3woQJbFNBQcGWLVuOHDmilpMmCOLo0aMDBgxQ3XnmzJkWLVpkZmbmhe6mpLna\ndXoY6Goravf7Itdo70dFzREK5HKNrbUTn7ybyauxQbOxS0o+EVF7kUVLFwDKzFiITYqugi8i\n+KIoqd7cq/Dvi8gMWCyIoPSsaVlBxvEfder2eGXgqW0A7bo9+aaO6YeGswMaGRmZmJiwHymK\ncnZ21njqGjVq1KhRg9nOzMyUSqWqRyUnJxsZGZV3ya9everfvz+j533u3LmJEyeePHmyvM5f\nhL8jsPC65iL2w89BEljeES6mMNQqqjx+azfcZ9SjU/u3CYXC0fPX3ZQWPcY0sSzlhzKlBYy1\nsepOqew1gPZ2WOUBc/GnTFXVBrwgK1VVv1ySkwYDDd0qJTgOh5/jZSric2Clh9qm6FcHng6f\nMj0ODg6O7x4ugOb45hGJRLdv3966dWt8fHzHjh379esHICsrSywWs8np3NxcV1fXmJgYAHv3\n7o2Li5s9ezbTJBQKb9y48ccff0RHR3fo0GHYsGHsyH369Ll8+bLGkzIaHarUrFlz4sSJy5cv\nB1Dw6FjBo2PpQIOZ57Oqd/8il1lzrUwok72Zp1WB38qy3ut2tZ+p1pRWgFz9ImUMnpEdLS8k\nBKU0Op4lA8CqO6D0rAEQQh1jn+0CgYCNvrTr92Y729ra1qtXLyAgwMbGJiEhAYCTk1N59RhX\nr149cuSIjo7OxIkTa9euXb9+/efPn9M0TRCEnZ1dBbLQ58+fHzBggEJREgDeuHGjvM4Mubm5\nBw4cyMzM7NmzZ4MGDSruXJZ8OZbeLoqe+SQ6WOULc2NosXlIumm2FAAOPYNPXTQ0h28D/BEG\nAC/SSGHjTZ4eG2UUcS4DVHG6d1SZ9wFD6qN3LdxJwOs0ZBbCyRiNLFD7M7SfVas+HDsMofdu\nYopJaJq2aP4DkgCAR8C8asp8FI1fbuKAistQXDbishH4Fj2c8HuXb8AfkYODg+NfhijPJIKD\nZeTIkfv27Vu6dOnChQu/9lw4KiclJcXHx+fWrVsikWjx4sXz588HcObMmd69i6JAgiCcnJwq\nsJVmiIuLs7Oz09jE5/ODgoJcXV3V9ufm5g4cOPDSpUuqungN+8zMcF1MiD6+0LUcyvNbYVDy\neGp+KybaVLqkomKtppY41g/dDuG1ijOImRipxRGhWJ72s2VgSkqKWCw2NDQcNGgQe4FGRkb3\n799XrZYOCwtLS0tr1apVcHCwt7c38wsjFoufPHlC0/TUqVMfPHjQoEGDjRs3qi3WZNm7d++o\nUaVESAiCaNy4cQWqILm5uU2aNImKigJAkuSFCxe8vLwquOSyBETix2KX9xHGIavGuMtkMgDj\n5iy74/BzrhQARjTEbx0gUWDQyXJ14vrWxgbPjzrzJ+J1CK/SAMBQC564GnRgGY8vaDti6dkC\n13w5ALjawL9vlYZaG4LN98ttHVgPqz3KbeXg4OD457hz546bm9vvv/8+bdq0rz0XdbgaaI7v\njfnz5zPWJ0zRLeMmrfagyMR/T58+/emnn5YuXcpkUtXQ+Gypr68/evToJ0+eqEXPT58+/fnn\nn2vXrh0QEEBRlGrN9JO/N7xf4pBxdIw84eGXuD44rFcMmH6tvKpoxm+lZmoUuyddQqICdb2U\nF80sUWdrqehZmP+efrCTAA1AxMMv7sLw8PArV668f/9+165dqncmMzPz999/Z7YpiurXr1/L\nli27d+/u6Oi4YcMG9j7k5+cfO3asZs2aAQEBKSkpV69eLS96BrBx40a1onOSJDds2FDuJQB/\n//03Ez0zrFu3roLOGnlZ5FYJByPsmt+fTX7vWLuwnXmOah9tPg72Qf866s5/WnxMb/nvCV9M\nblG0kVWIY4WdUnxufvjhypHsougZwJTmVRrnQy7+LP7DNNJCb4tYLyrA2zSSrS3xf44XqeUd\nzcHBwfF/ClfCwfG98eDBA6YklInzHjx40KZNm44dO1avXj0uLg4ATdNjx469c+dO+/btlUol\ngNWrVxsbGycmJopEoqlTpy5fvpypMbC1tWVt9hi6deu2a9cu1T0nTpyYNGmSmlKHeryen5YX\nuhsEaTxgxxe5xlD7jvZ+VAUid9eWOyn4fMd1bM00wYrWAaDyU0mxmSIjJuPQcB3k76j2gJ2u\ngUCe9PB8TnKEzGM+QJCg57fBurEdw8PDCYK4ePGiqWmpygOCIFjDlMuXL7NlyllZWS9fvsQn\noWbGDmDZsmWstbhGcnNLFkfSNK36sYrkFS/sM9Kik5OTVd8h8KSZgD6A3OIiZl0h1nXGtJZ4\n8AGv0yHioZYJXG3+Vf+/Hk540Ah7Hxd9VJZ+RJrVCm7VqzTOxaii9Yh8Eu1Ttm6aMInZP3zy\ngvw6K/JkoIFzb1DX7IvNnIODg+M7gMtAc3xvsE54DIxOs76+/t27d+fMmTNkyJCDBw/OmTNn\n69atbJCUn58fHx+vUCjy8/NXrly5c+dOZv+ff/6pNriq1huAu3fv+vj4lNW500jB4+OKtKjK\n+1WZGhuUZ5oMLq9V3W9FJadL6hhlHBmduNSh8O3tDr1HqIZehrmvUvf01W09gelPgdjxQMHU\nTjBPBenp6aqPBzRNe3gUveBn/AvZ/Xw+n73DYrFYbc1lBQwePJipkwbA5/MXLVrEWItXgJeX\nl7a2NkEQzLNT//79q3gulmrFCde3mURb987M2UmSNDQ0TOMVCTWrlRTb6qOPC+a3wQxXdHP6\nCu7Zi9tjXWdYly4OcjDC9u6Y2qKcY8oQWfzmoYkFtX3ZDDb3/9fmla0tCtX6cHBwcHAwcBlo\nju+NVatWhYeHM74q48aN8/Qsqki1srJStfUum+ZkuX79+rhx4wB07dr18OHDkyZNYgTX2rdv\nP3NmqSV6Fy5cKG8VQatWre7evau6h5JkJa5ppF23B6lrqt92Mr9aLXy2fvHUYYemDjtUsd9K\ngVBce01pVzqCbzpguzP9Sl9HZMXPhKIQxdbfz0MuguARgpJgMCWrqBRay9mDX62W7N2dPm4u\nYWFhiYmJUqmUpunFixe7uLgwun7MUjYmbu7Ro0f//v0PHTokl8tnzZrl4FBVQYeFCxcaGxsH\nBASYm5vPmzePeQSqGEdHx6tXr65atSorK6tPnz6fUC3X2qZoI6sQzX88qaUzIvj6xZrOLl4/\nHTucUPQ72cb2Y0f9x+lfB31rIz4Hr9PBI1DLBDb6HzeCtLhgXpunZMq+WfhUIaCFj1Tz4ODg\n4Ph/gAugOb43HBwcIiIinj9/bmJiUr16ua+xBw4c+Pfff5MkyRZ7sDCeeQyDBg0aNGjQ8+fP\n+Xy+jo7O1q1bhULhgAEDLCwsAGj06mO4e/cuWwFiYmKSnp4OgJblFzzyB5AfvJUmeEY/bNRz\nm/jZV4waG5TBS+1t02M1turI8mNmkPZ+pSJsihSkDQyKCd19c+1E7Vp3jX74nW/qBILQ6ziP\nZ1ZLkRYlsCwycJHmZTZu1SHGvJdehxkAQFPnDw3Pf/eO9RBJT08fMmTIhw8f6tWrt2/fvgUL\nFqSnp/fq1WvNmjUPHz68cOFCamrqmTNndu7cOXDgwKpcDo/HmzJlypQpUz7qJrRu3frs2bMf\ndYgq1cSw0EVSHgBcidchPI45dEOhAoeLy+MNteBTp4IBvhokATsD2Gk2m68cy+IE9ot0gVsH\nj+Cb1wAQBOFSp+6bAkOmyapqah4cHBwc/z9wJRwc3yECgaBx48YVRM8AfHx8jh492rVrV29v\nb9WI2cLCglW4A5CWltalS5cGDRrUr1/fzs5u7ty506dPd3FxeffuHYDevXurKiKrER8fv2nT\nppSUlKysLLUmmqZBKXL+npr79xQov0B+z21RTKV+K4e3lLInBMnTbT3OYlqIMi9VmZPE1njo\n1O/NRs8A+MY1qvVZq9u2WF2bIPXcZwGgKIp58KAoKikpKS0tDYCvr29CQoJEIvH39zcwMPD1\n9WWeHPLz80eOHJmTkwNg2bJlZmZmxsbG8+bNozQlzjdu3Ojk5FSzZs3Vq1d/5m2pIjdj0eVQ\nUfTMQNPIKkRB8TfDJ+HnCUMtjUd/27QvVppJK4D9pAsDJ8yrV69eb98f3ZbcjSqu3Ghv/5Um\nx8HBwfFf5VvKQGclJeYrq2pNa21t/Y9OhuM7YMCAAUxhrkQiOXLkyIMHD5o2bTp48GBt7ZIC\nhrlz5zJS0KqaxNnZ2Zs2bXr16lVgYCC7U9XMguXly5e6uuWm75RKpZMk7MVSS77rZAOvXz//\niir2W2kTeaOs34rQrkW1ydcVmfEaD2HgWdQj0kukgAm+SL0Dj5eZmWlmVmqhWWZm5vv375lt\nmqYLCwsjIyPfvn27aNEi5l6tWbPG0tIyMjLy8uXLVlZWy5Yta9u27alTp6ZPn85U4s6fP9/K\nysrX17fKN+BTeJOO8ecrqlJwMMKaTmhu9YnjK+kiN+//Ji2s0cIaYe8B4PZ7EVxWCeuuClcC\nxX8RTsbwUvd05+Dg4Ph/51sKoOc0dt6VlFd5PwDlaJBxcJQlKCho48aNEolk8ODBQ4YMUWsN\nDQ3VGBlfv3796dOnqnuYPlpaWoWFhezOunXramtrDx069K+//tJ49rCwMEdHx7eXlxI8gZ7H\nXIL83H+SNdfK+ApF1BxheX4rsdOJHR4zl/dcX7JTpEflJMKi3AIFVzstHWVyWLY58zH/3h61\nDkql0tfXl/H3ZjEyMrLpuUju4EUVZudeWUEkhjs5Oe3evRvF94ogCMa/BkB0dHS3bt1ev37N\nPJOwNzwwMFAtgE5OTh4/fvyNGzf4fP748eOXLVvGFpN8GktuV1Lj62r90dFzViH2PsatWERm\nQK6EkwlaWGFME/UFf/8FCGBjF/Q9jg/FyiUylScsIy1s6w4+96qSg4ODozTfUgC97OrFWvu2\n/OLnL1HSRvU7tLHj6vI4Ppdnz5516tRJLpcTBBEQEEAQxODBpXQtatSoERERUfZAiURCkqRq\nBQJBEHw+PzIyctCgQcHBwQC6du3KLEbcsWNHs2bNwsLCoqOjGV1qVd6+fQsg68LP4Gvpu6v7\nCH4CCj7f3o96O0vAL6c4ZNy1DWNu/K6aihaYu2QcGS1ycuebOYvsGAUHms5LFRtVc7fHDFdo\nuZkffaactXxrbsQ1ybMz6iMS5KOopLyCQl2dkiqHUxEgPZYwyWotx7ZzrINXPdC/77TI2KdR\nVsBCKi+Vpunk5GSmM0VReXl5QUFBTHE5i+pHpVK5Z8+eyZMns2vdVq5caWdnN378+E+4Swy5\nUgTHldpDK+UET6C650IUlnX8iCzyi1SMPotElYf95yl4noJjL7HJCx41Pnmy/xRWejg/CMtu\n4+wbKIr/okkCno74tV0p10MODg4ODoZvKYA2r+s2e62bu3F0s5/Cak/adm68S+XHcHBUyKlT\np5hojKZpkiSPHDmiGkAHBQUFBwdrfJsRGRmptkcgEGzevNnGxqZr1653795VKpUPHjwIDw9v\n1aqVUCicPHkyAEtLS7WjeDyesthWMOfyUqFlPa1anp8tzgEAjuvljeND/97QugLr774zg8Jt\n2wDgGVjnP/KXxT8wGx8AgKaUuTfWZZ2bf/tNzo4Xev2Ow6smXu6dnHJ8e9mhhNaNTEf/zTe2\ndzuADZ7oWBwg3lEJTAmhrt8La2UqQFrqth7HM7RJ3dG9Ro0aOjo6r169Yp9DzMzMJk2atG/f\nPkax29LScsaMGUyTTCbr2LGj2uMHQRDXr1//qAD65cuX586dMzQ0HDx4sJ6e3o3YEo8Zg4K3\nERt7ylMiePqWBp4Lddv8yOzPLsTVaLSygb566YoG0iXwPY30Ag1NeTL8eAGnB6DOf09T2UQb\nfl2w1B1v0hGTDRs91DKFQRWul4ODg+P/k28pgGaoP2k9fmr7tWfB8Z2go6PDbtM0rfoRwNSp\nU/PyShKJzs7Ob968KTtI69atx40b161bNzMzs6ioqEWLFjERYXp6+oQJE548ecL2ZLSKVSNy\n1Rw2JclK2d6FEGhr1+9l4nuYID73xfkjW9eK/VZOrXdT8PiO6+U0pbD66RUlzeMZWAMgSJ5e\nh5n5QX+MviSWUgDwKg0ybV/D7jb5Dw4BtCLtLUErmQsx6vM739geQGYhZl9F+Nii+N+ydOZS\nYVSTfS7Qq+u1/1Jgh/btAgMD+/Xrx9wET0/PDh06kCT58uVLxtCxW7duenpFo5w4caJs8p6m\n6YqXirIkJiaGhYWlpKRMnDiRKWdft25deHj4/Q8lqm8ZR0bLk18BUGZ/yAvZYdB6tJIQMk3j\nzkPAQ9/aWOgGvQrDys1hJdFzG2u5QfIdSiah7dpdjhfTgFSJ5cE41KcqU/4K6ArRxBJN1J/y\nODg4ODjU+fZK24T6bk1sLAy0eJV35eCojCFDhrAyGiRJqkmnRUVFqQa43t7eGgcJCQkZMWLE\nggULALx584Y9hKKo169fq4bLM2bMUMtnl01v03JJwUP/xOXOitQv47pSY4PyoNuE8lr5SkXM\nDJIHkmdoKzAvUVwmeALrhW+lVMlPhNC+tX7nny0XvLBc8Mry50iHFl1PnjwZERFh4tiE7ZNe\nAP9T5/38/K5cuTKwDoyZgg4aeff2KjJKVPas9UmvLp5aWlre3t7Pnz/ftm3bmTNnLl68yFQz\ni8Xi/v37DxgwgImeL1265OPjo9GdW00ypTwCAgIcHR179+49btw4Nt8fFRV14sQJiYrwcY5W\nUSyu5exhPv0uGz0zyJU4+hze/sgoV0AcAM4Xv5noaCu9Oc1++2T3HTO7HRxq1r96ErM/JB7p\nFY7AwcHBwfHf59vLQAMIj0/82lPg+A9RWFh47NixjIyMLl26lGe6ERwcHBoa6uzs3LNnT0JF\n683KyurZs2f79u3Lz88fOHBgvXr1VI9q06bN5cuXGVc8gUDg7e3t5+enVCo1FnXs3r27b9++\nDRo0EAgECoWCOap58+aqp5syZYqLi4uvr29KSkrF61wVaW8T19TXbTdFy9Fdy8WTID/rifHn\nftt+7retglT0u5k8iUjHZXW+6n6qjNoG0x0A39hOr9tybe3EoKCg9Kd6ooY+TJss4dGg6T2Z\n7bZL72bouTJHiOxbZZ6cYjrCn9QxFigLfmkrZH98atWqVatWLXZ0pVIZGBiYmZnp4eFhYWFx\n+fLlbt26lZy7OH9vbGw8evTo3377TVUypTxmzpwplRbZcKve9pycHGOVVw6GfX6nZPmFMXfN\nhvsTgpJiboIAe9DbTPx0Hdu7az5RthQpxbdQHH0usdjkvLCwMPb8KjT4HQBFIzoTJv+6bSEH\nBwcHxxfk28tAc3CoUlhY2Lp16+HDh8+YMaN+/foBAQFl+6xbt65t27Zz5szx9vZWWyMIwNLS\ncsGCBcuWLVOLngH8+eefrVu3JgjC1NT0wIEDbdq02bVrl4GBAQCBQMCsGlTt369fv8LCwj17\n9jCp03r16u3atUttzM6dOw8bNowJ40iSJEmyV69efD5fS0tLzZaFlhfmXlubuqObPOrGp9ya\nMtTYoIw1LVeQTFtaUMr6uzKyKD2fFRdmHo3KvLY2P2yfIvWN5NnprAs/VZt03XpJoumok9Ey\nc7azwNxFnvjs/WLbpNX101c5dXEWmZqallUmkclk7du37969+9ChQ2vWrBkWFnbo0CEArNmN\noaGhubn5pEmTPnz4sGbNmqpEzwDi4uLUlnuSJCkSibp16+akcssJHWOTkSetf3tPiEtpexPv\nrreN/LmFZdGKzItRiM7UfCJV/QppXkkngiDys0r83qWcsR8HBwfHN863GkBnJr4LvXn5zKkT\nhw8ePHbi78Abd6MT1b0qOP4fuHDhwqNHj5htmqZXrlyp1oGm6SVLlrBp4KNHj2qsY9aInZ1d\ncHBwQUFBSkqKj48PgOHDh2dkZOTl5clksoKCgt69e6v2Lygo+OOPP4YOHZqRkZGenv706VM2\nt5qQkODj42Nvb9+jR49BgwaNHz/e1NS0Zs2aBw8ePHPmTEFBQXR09NixY1nRCR6vKOUsEAj6\nVU/W+kLvitotjKrUb+X28ppVGUqhbWbU9w/DHivNp4fScknSumapu/sYea/XcnLn6VvoNPiB\nEJZkd6nCbGV+Gi0rkCU+z0r9QFFURkbGqFGjTp48qTrm6dOn2ULngoICDw+P8+fPq+aMx48f\nn5SUtHnzZpHoIxa4ubu7M38AJEkKhcImTZp4enoGBgY6Ozt71ICOQK27+s1JurDs0JYVytPj\n2G8hKA4aMdKCqPhVgWF9L7IYiqLqdR3HduN0LTg4ODi+db6xEg5amX3M77dNuw+HRCSXbbVw\ncR08ZtqiaQMM+f9h3wKOL0pmZkmej6bpjIwMtQ4ymUwikagGYWV9AStGS6uUAR1BEGKxmNm/\nefPm0NDQhIQEtvXx48cAeDyeWjrZx8cnNDSUpum4uLjnz59HRkZu316iaCGXy9u3b6+q7MFU\ngNA0rVAoNs8fOn7Wmyta/RVm6jnyT8Pej3q2wFhfojmPapf6tqzfSlkIUVEYSJA83TY/knrm\nGYdGCFTEpAmSZ6Uj/1AgICiFQfarRD1zZfYHtpVJKvfr12/hwoVLly5ldiYlJal2yMvLUy2A\n0dHRGTFixMddKqBQKLy8vN6+fRsdHe3o6Lhx40ZPT0+21Vgb01piZXC5hxc8OVkYeQPApdNH\nPXrteZoMoEQyWQ0+ibZ2uBoNAGcSbefuD7/718LCgtw2g+ZfpTswfaobwMHoYy+Cg4ODg+O/\nxbcUQCtl70c2b3jgaTpPYNyyY68GtR0tTQ1FIr5CKgq1+vAAACAASURBVM1KS4qNfBESdG/D\n7EH7D59/cne/lfBbTa5zfBSdOnUSiURMhStN0z/88INaB5FI1LVr13PnzjGhmJ2dXcOGDQEk\nJSWtX78+Pj7e3d19zJgxbMb3ozA3N+/WrduOHTvYPTk5OSkpKW/fvq1du7ahoSGzMzs7m4me\nmUnGxsZGRETUr1+fPerixYtqunhsyQFz1J/rl5A6mw2914rsW5HaRjz9UmLJn0D9lRkAYmaQ\nFfit/N1s6PShB6o4oHbdnrRCqsx+z+h4AFAkPXsVeNLgh800yc81d6028VrSmga0Ut0lcfny\n5VOnTmVcDDt27Mjj8WiaVrv8xo0bd+nSZdSoUU5OTlWZjEQiYao7KIry8vK6du0aAIIgZsyY\noRo9M4xvivQC7HyIsjei8NWl9EPDAZAkaWJikiMtvlj1pHUJk5vjWjQYwY3DaY3Q/TyPwAkF\nUFy2MbVFVa5AMwoKsdlIyoO94X/Rk4WDg4Pj/4dvKYC+O8vrwNN0t8kbj6yaaCPWMHNKln5k\n9STfXw93njLmxZ8d/vUJcnwF0tPTWVsNALGxsWX77Nu3b+HChXfu3HF2dl6xYoVIJJJIJO3a\ntWNiVn9//+jo6NWrV3/aBFxcSvTICYKQy+W2trYymUwsFi9evNjZ2bl169aGhoaMQyHrwKfq\nen3lypWybtVl7Q+pgozMo2N0dHQKCmVGA3fpNh/2aRNWxd6PejtbwFdorsnt8+Cg98PDlaai\nGejCHNCK9IO+JkP+4hnayhOfZf89TbdHiXSGwNxFaFlP9v5xWR2SpKQk5obUq1fP39//t99+\ne/funaqAoLe396+/VsnqPDIycsiQIffv3zc3N9+6dauVlRUTPTMsW7aMsbZRhQB+bgtPRxx4\nimcpeJdZFEkbiNAk98RpWdGqwBG/7dtf/OqilgnKo7EFFrbDstsl4bhS5XIH1UO/cg0fKyKt\nACuDce4NpMXfhpEWfBtgcouSohEODg4Ojn8NDR7F/1naGWo90hmZ+2Fbxd3+bGU57aVjYXb5\nL2U/kpEjR+7bt2/p0qULFy78UmNyfCkGDRp09OhR9qO+vn52dnalR12/ft3Dw4P9aGpqmpqa\nWvEhmZmZCxcuDAkJcXZ2XrZsGZsKjY+Pr1evXk5ODvORx+NRFMUWYADQ1dUNCAgICwubM2cO\ns2f69Ol+fn7syLVq1VLTy+PxePXr13/+/LmiTGhbJPEBiJv5GvffSgjFlV5spTikRl9fUVNj\nKhoATRA+U66HOXSoaAhamXHsx7y7O5lPpEiPkuYCMB1+VKfxALaXS9DI1Ognrq6uly9fjo6O\nZsxrLC0t3717JxCUSupGR0c3bNiQiaEtLCyePHlSrVq1qlxL27Zt79y5w9x/Ho/n7e2tWmYt\nFAp/+umniRMnqj7AqHEzFsNPF21b66Gp8I08K4G0bHg10YQJXg21EDIK4vKT0ACuv8PKO3iT\nXrLHUhfTWmJgvU8xyYnOhM8JpGoyZ2lkgUN9oCvU0MTBwcHxrXPnzh03N7fff/992rRpX3su\n6nxLGehn+XJdl56Vdmvarpr8wYt/YT4c/wXUdDCIcpbHqaFasMFEWpUeMnLkyDNnzhAE8eTJ\nk3v37kVERDC10ba2tuHh4Vu2bMnLy2vWrNmECUWKy+yjaUFBwdy5c4ODgy0sLCIiIjw9Pdu2\nLXEComk6JiZGNXp2dHRMSEhgaqnL0rNnz4iIiJcvX+bf35//8IjZ2NPaTp3BqzCaq4xoMwd7\nPyp6Fp+n1JBsJmj6+CZ3JY/nsL588QiCR4pNAdStW/fFixdM9Awg5+oqrVqdSR1jALlBm4f/\n0Hnw4L2xsbE1atQ4duxYdHR0vXr1Nm3apBY9A7hw4QJTAE3TdGFhoVLTxMpC0/S9e/fYUhmF\nQnHy5EnVXL5MJlu8ePHevXufPn2qr6+vcZAOdujsgCvRAPA+F+/hDDijpMod81wVYkElv5wd\na6BjDXzIxZsMSBVwMYWtPkgC73MhVcDO8COMwRUUxpzTHD0DeJyEn65jk1dVR+Pg4ODg+CJ8\nS4XC3ibamRGrkmQahGxLoCR7jsVoGXX5tybF8ZVZsGAB477BULYWQiOurq5sCTJN0xMnTqy4\nv0wmu3DhAoqXvsXGxqr6C9asWfOnn34qLCxcsWIFn89XC+IpioqOjm7WrNnQoUOXLVu2ZMkS\nVpMYAEEQrVq1YjUieDxedHS0agcGkiT19PScnZ1HjRr19u3bor1Keer27nGzhHHTCcuc8Kpc\neAU4rFds85hbnkAHT6mMmUHqFJQTxwHi5r4EQbx4UerZlVbK8kJ359/bl7KlY+bJKYaGhmcv\n36rfZcT8JWsfPHjQoEGDa9euMSXpqigobH+iZTEzzHTMWaFN46ysLObmVwpBEDVr1lT9e4Am\nq5rY2NjAwMAKxtnohQ72mhooRda5+X9MaCuXq1dya8RKDx3s0MURCgqTLqLuNrTeA/f9qL0F\nA08iJL4qY+DsG7wtXu3Z0UbSNmZFzSv9uuburWta9Et49nVJhypC0VBU+DvKwcHBwVEx31IA\n/fPqLtLsoHquPgcDw/OVZV4309KXQX+P6Vx7W0xOh6qVS3J8B9SpUyckJMTV1bVOnTorVqz4\n448/qnKUSCS6ffv20qVLx4wZc/jw4UWLFlXcXyAQ6OjoqEbG7AJBhpEjRx48eDAuLk6pVJbN\ngufm5rIZ5atXr+7cuVO1dc+ePa1btyZJ0srKihU8ZiEIokePHhRF5eXlRUZG9unTp2x4DaBu\n7DYBJSu7/6NY1XO1vR9FkZp/FgiafvWTOGqO5nIBWpavNnOhdSOL2Q/1O84RtxxhPHhfczcP\ngbPn1KfNjX68Yf1rrE7jATdv3tQYyO55jLz6Y4XVm2vX7WE24RIhFJdNUZfHli1bWPfvCqgg\nAr506VIvL4/Xq1r1oC90rYkahhALwE9/lX93R+K6pjnXVoeGhl65cqWK8wFw/R26H0ZAJPKK\nvx+pEncTMPgUtlfhqef6u6KNWib0vV+aH/r955sX//5z0Si9q5O1+QBAq/SpmAwJVt9B9yOo\nvRW1tsDzIBbeQFzlFU8cHBwcHOp8SyUcTsOP77zvOX7rKV+vkzyhgYOTo5WZoUgkUMqk2WmJ\n0ZFvMwoVBEG4T9xydpJmOzqO75KWLVvevXv3Y48yNDSselE7QRCLFi2aM2cO83HAgAFq5nmX\nL19mtpkI2Nra+v3792yHwsJC1dGePn2q+tHBwSE4OFgulwsEArFYXFA6y9uuXTttbW22DkEu\nl+vo6Kj1IUlyyODBt05fgWM5FnkfQ40NyvPrW9SPv6+xVSCXx8wg7f3UE5jKrHidBj9Inp8W\nCgRMiK/TdDBR7GXIN6r+858XF1+X0wIdAIRA26iPX8Ej/+RkDXqUd1RSszzdakKr+lUU3wDg\n7u4eFxe3ffv2+fPno0z6mbmN5ubmXbpofkn1+PHjnj17MlXs90J7bN68efukSQAcHLqnvyuJ\nUlXFEysmLhsTAyDRVPxCAyuDYS5GHxcNrSwJRdX1cNJKvZUjFDcdrMxPkye+OH14d89uW+5/\nIADE51Q0AsOTZIw5V2KUCOB1Ol6n49Qr+HVBl3INdjg4ODg4NPAtZaABcszmq3F3Ty0Y71PP\n3iDu1aNbN69fDgy8duNm+IsYsW3dAePm/n0v/vqWidyqdI4vzuzZs4OCglatWnXq1KnDhw+r\nNjGqz6qVA+bm5qof1cK4U6dOJSYmqi12ZJKs7du3V91pZ2e3a9cutcP79OmjmuQmSXL16tUP\nHz6MPTBeFqc56v1YeswKq9Rv5cmCUlIU2vX7mI46aTzsSK1VH1z+kNvPvksQpX5etEX85LyS\nsJsUm/KFWh06dGA+Xr161cvLq3379tu2bVMTaNPrMHvWnHmVzvnt27d79+69fPlycHDw2bNn\nbWxszM3NVTuIRKKePXtOnDgxJCTExESzjsaFCxcUCgW7DPTIkSPMfsYxhyAIgiD09PTc3d0r\nnQ/DH2FF0TMB9LHLcH3/R7WchyRR8oVOD8Sw0+VaGwLgF9/Fi4lmFrMfmvgeqjYh0Pq3BLOp\nd7KlRV+QoLIf8tQCDD9dKnpmyZdj8kU8T9HQxMHBwcFRHt9SBprBumXvFS17rwBohSQrKzdf\nIhNq6+gZGmlz5ikc/zBubm5ubm4am3x9fdetK5Js69Kly+zZs3v06KGx1gJAenq6tbU1TdPe\n3t6HDx/W0Slx7Nu6dWvTpk0ZOxihUBgbG1urVi3VJYYAjh8/rhpS0zTt5+eXlJREUVTShhYG\nngsNui39zCtlsPejni0w1JdofsdvKMkom4oWN/LJAqAEbFy1BAaUJIvUNgQgT3zm07Kz4/hj\nadXaMT0LIy716tHNwcHhbgKOhaXs3RyQdzeEkubdvn173Z8GdGYbwsiO6anTqG9kwl2api9e\nvPj69esWLVq0adNGbTLnzp3r27cvU5jBhLnMqwB7e/uYmBgAYrH40qVL5X19LIxPOwNN0yEh\nIZs3b548eTKjfnjx4kVLS8tff/3VysqqiveQWYwIoJd9zu5xTfXHBvL1ndUUp2/FosdRHO6D\nRprUvasb4P4HAFBSpX7ieDbNIotVPip1ZtkUhszityDtbWTa8ddphZTn6H4xTp8GZEosD8YR\ndQl1Dg4ODo5y+ZZk7L4WnIwdR8UolUpzc/PMzEyKogiCMDExSUpKio+PX7x48f79+yv+J7Zo\n0SJmWeGuXbtevnzZtGnTnj17Xrx4ccuWLffv39d4bFmJ6FKtAq1qww5p1etNAyC+zCum8vxW\nGC42/mHC8JOaWuj3i2216/SgZfkFT07ScknjFm7vqnUT2rWUJTwquLE6+OqFJIPmky8W9Za+\nC0ne1JYk0GTcn1m1fGVEiVm3IOJEO2nA3r17mY+rVq2aN28eAKlU6u/vn5aWtn379rdv36o9\naRAE0bhx4+3bt2dmZjL5fk9PT9UQuSyZmZmNGjWKi4tjR+DxeBkZGVWpqy5LjhT1i+0mu0uP\nnojS1a7bo7zOVnq4PgzaZXIa4y/gUlTJRxIUVfrNIZ+HkJEwL1/PkAaa7kR6AQB0tpWc+9E+\nJSUFgEgkmnok2j/OCgBJ4MFYmGh/zOVxcHBw/MP8l2Xsvq0SDs28PTyscePGX3sWHP+/xMbG\npqenM9EbTdNpaWlxcXH29vb79u178eKFl1e5GmMkST548ABA//79J0+evHXr1tGjR8+bN2/Y\nsGFJSUnlRcmVPPQqpDVerI2brR03g5cb8udnXVgx9n6UvPxlfF0fnXo3U2PZFEHqmOSF/Jn/\n4CAtlwDITEk49GPDdsnbvLQfXDl3onnz5idelfQW1WgtqFZLVLNDissY1egZgG5dr/0nLxUN\nShBLlixRKpVSqbRNmzbDhw+fNWtWZGSkWvSMYsMaJyenqVOn+vj4+Pj4ODs7v3tX0YI7IyMj\n1QWCjBaeqlW7Kg8fPuzfv3+HDh3WrVtXqdBeDmHERs/SyGvkEW+1Dh9ycfKV+lG5UvUFglSZ\nH+16ZhVFzwCyC4uiZwAxMdF0771WCyPNp90Re296cvNM0bB0RWUkHBwcHBxqfHslHGUpTH1T\nnmhupSiVyoCAALU1Xmowr4DL/vfMwcFgY2PDLP5jnEHEYrGNjQ3TVLt2bR8fn0uXLrGdLSws\nkpL+x955xkVxfX38zGyhLr33DgIWQFSkCqIUS2zYYmKvsYA9KvYYUSyx915QQA0gdhRFRRFU\nBBtNFAHpddk287wYGIZlWVD/eRJ1vi/ymb1z7907sxs8c/bc36+IOMYwLDMz09zcPCcnh+xw\n7NixnJwcMglKhcw9IwhibGycn5/f+mtpaWnp5+f38OFDAKiKWyZr6srStf/6a7TYxNepKHq4\nRq8t6++8YHTdwPCD3sHUdllzT0FhOoKycBEfABwcHPwDAgICAsgO7JbRIC7kyRp1bz1/hUhR\nOXBd+ZlJAEAoQ3O53Js3bz550ihjQd4ZovScuC0sFmvZsmUHDx58/fo10e3Tp09hYWF79kgz\nY7KysjI1NX337h2GYSiKysvLJyQk6Ovri+lGFxQUeHl5EWLVd+7c4XK5rbVclGRAVbaxdqJM\n2xMqAAAwXk3JoaHy3YLUmrp10sBelqIAkPgOfu7cYoYHBcBvTwK7rj1JPeoMbxl2crZ2AMDU\nsJAx7f2qjW40NDQ0NNL5HgLoryEhIWHQoEEd6Sk9cUXzI8Nmsw8fPjxhwoT6+no5ObnDhw9T\nZdfGjRsXExNz4cIFAHB0dIyPj586deqlS5cAgMlkvn//XiwIxjDszp07Et+IiBEZDIaCggLx\nXCfG5s2bw8PDV61a1ThVXVnhJge2XmfFXlMU3abDl7jgNVOkqiPdb2XF3yG/xy2k+q2o/rRZ\nddh2AASEfEHhixeG9uZ/QQ99WOMF6vIgi9Wp5F4DbACgLACofx5tqISvWz17qaSdkHJ6duRx\nt27dFBUVxaQwlJWVORyOgYHBmjVrSktLKyoq/P39TU1Nydp0AEAQ5OPHj+1eaXR09MSJE58+\nfYrjeG1t7axZszZv3pyWlkYt/7h27VpNTQ0AENsNIyIiJIoh9jOHiAwAgMwK2cZ1YhW17jM5\nvo2dBYXplrpqL0EfAD7WiA8vampRl4fqa+vrjPqxdOwQtjxWX6HNQUtEygBQ2GqUGGpywGa0\nHx/rf0mVCg0NDc0Pyo8eQPfp0+fvv/+WnoHevXv37du3TU1N/99WRfO/Ijw8fNu2bbKysrt3\n7/b19f3n3igoKKh///5ZWVmWlpZiqUomkxkdHZ2Tk8Plcjt16oSi6MWLF7dt27Zx40YyFU1A\npFGllzhD27J9zs7Of//9d2FhYYtWTMj/kFYeObP6VpjKoE3y3YZ/+UUCAIBZuHDIk5NbT/4i\nMRVN+K30DC0sVtUGAGA0iUYz2SxDRx4A4PDgA/ieBABg5d3P/iuIqW4qa+UjqizgZsaV4pi3\nGXM2AgdTcW4DD8cwhN24w7LuTeNDBYIgpaWlAODj40Oq/uE4PmPGjA0bNpArEQqFhChHTEwM\n2YjjeFsCdlS6deuWmpo6YMCA+Ph44rPIzc2NiIiYOnUq2UdRUZE8RhCkLV/D2T0g5g3UU5LE\nNXJGSoFN68TxypileM+TxCvZVn+PZZpaGgSgUXA5NzoUwwFVUMdqS4afeBFdpixxVGuoxoe6\nzPKK1CicrYzY/NQAjR+QjgKYqEgeS0NDQ0PTmh89gGYwGAMHtmMPfvnyZWj6aZjmG2LevHnb\nt28njvv163f58mV/f/9/7u2UlZWdnJzaOmtmZkYeP3nyZP78+dSzCIIoKysjCFJZWdnuvt7i\n4mKJQfbjx4+lfEuF5XmlR0doTLoo31m8+vZzueD08wWnn3NDGKikuiYExx+t1hEymeab26kt\nEJj4KnQfy3/3CEQCjFcNeGPJxAIXUH15dPLsyTLGPVUGb2KoGCqVpb6/upoYheP4hw8fKioq\ndHR0rl69unbt2k+fPg0YMGD58uU5OTn37t0zMTHx8PCYMmXK0aNHxd7RwMCA9Fpvl+rqaikv\nAwICrK2tieIQHMfFPlASQyXYEwAzLreIoRvBscqYJYHdDe6XNoauVq209Syb6jzqBDD0tx0p\nj3oAJsJqS5xd3DLBtq1RYjz+2EKIulCoBl2miPXRlxz/S0CEQ9J7yCyB/CrQ44C1OngaA5uW\nDqWhofnB+B4C6E4zblaOl2RUQPNjI2b4Fxwc/D8JoGtqak6cOFFRUTFw4MAuXboAAJ/PP336\ndH5+vre3d7tCaQBw69at1noRW7dunTRpklhYjKJo6ypnJpPZVkV+u5X6pYd+Uh9zVKHHr+0u\nsl1Mt4hO7+7v+uaaxLNMoVCi34oYyv5rmcq6gDIBoObO9mHqL6qrqzkcTnVVJeAYL+9B8XY3\nBEEMnJ1lGTgPRQmdExRF1dTUiBJnsr48MjJyzJgxhJLd6NGjIyIiWr8dg8Ho+JPw0KFD7969\nS4jisViswMAWJjUKCgqPHz8+duxYaWlpYGCgs7NzW/N4mUDcaNiYBFezm/TrENBk88wa0nQm\nTEzh25Q11WAMshIf200HDJUafVLOlDlOO/dJ+C6ZpaT5VsbpVRnS1igxMkvav9gqyYqL4qQV\nQfBVyK1s0ailABu8oa9ZG2NoaGhovke+h6wqylaQLk1F82MiJozQlirzZ1FTU+Po6Dhr1qzl\ny5c7ODjEx8eLRCJfX98JEyasXLnS3d2dukFNJBIdOnRo2rRp27Zt43K5ZLuuri55jCBI165d\nnz17Nn78eFVVVbHwDsMwCwsLaou8vPzr168JI5XWnuFUlJSUEhISjI2NxdrLzk7mZUmusf5c\nxsy82q7fyptFslJmYKoaEtEzACh5zjkT9behoaGFhYWpqSmbzUZRlMi1BwUFRUREEPcNYSuy\n7YfI2Q8SYsiqVatu3LhBDF+8eDH5iZ85c0ZiIp/L5WaUwOYHcCC1/ZBxzpw5W7ZscXFx6dev\nX3x8fKdO4v6mHA7nt99+W7VqlZTomcBMFfYNgGXuTa9xKOHJJCO9LpXZFDRFzwGW0MtAfCCK\nQKhnY+m6EIPY92pXUP+Y2u5k9GyvBSNs27kQcpehLgdERS+op+TRRnvx2g7YwD/+CKOixKNn\nAPhUB1NiIe5t+zPQ0NDQfDd82wE0Jiy/Fx+1e3v4hvXrAKAu7x2tlEFD4u7uTn1JKmN8DRcv\nXszKalTlxXF89uzZw4YNS0xMJFoQBCHLcGtqanr06DF58uT9+/cHBwcPGDCADOlGjBjRq1cv\n4pjD4ezduzc+Pn7atGnDhg1jMMR/CyeKa8lYmSz5habta2L9165du2TJku3btxcUFHh4eEya\nNElBoaXIGSYs3t23c+5fXUsjROV5X31LwGQr9k6jzR0CMnxeXnCH/s7gOHB5QgDIy8tbuXKl\nkZER4Qgoa+z85yOFORfK7dwHs1X1dZdmaIw/pzn5knbwQ4Ql9/hx45ZDwkqGnM3FxQVaPmOg\nKGrQc8jAM7DjEay7Cz9FSHbYpvYPDg5OSkqKj4/vuPWgFKY4wszukjdy9jGBLf0kj+pnBuu8\ngSWpRsJeC44MarYqbAutJqOesnro8W5LwQqdT7t9S/cHlofZuBk0PnJIF8IDgPJ6mBIDDU13\njImCtjym17TvEMNh6U0o57Y1moaGhuZ74xsu4ShM2D14zMLHRY0Cp0uXLX+6un/gbc6afVFz\n+hn9u2uj+S+wY8cOatbw8ePHAoGA1baecUcghBcIcBzPzs7Ozs6mthAdhEKhh4cHVV3x1q1b\nb9++tbKyAgAZGZm7d+9eu3aturray8tr+PDhSUlJRLcJEyY8fPjw5ctmQeDU1FRoQ/u5dfQ8\nduxYqt1PeHh4aGho64GdrC2Ph/7s5uZWXFijtzIPkK+tYPVYngNt+60QqegMPUf/+Q8RRpv3\nn5sZi9WXAwCGYenp6cQls3TtNWffRZgyGEBmwxD5OmOGiiHRn23gIGc/sLi4mHjZr1+/ixcv\nAgCKooqKihERESdOnEhOTs7MzHz79i1TzYTTqa/BkHWlTZXMORXw5CO4/f/+qVjsCr5mcPw5\nvPgEuZWgqwg2GjDUBvwtpSmk/NwZeurDoTR4WgRZFaAiAzYa4GcBI20lB9Zi9G68YcAXgeyQ\nvYHYtITLUYZGxj9tiTr9vtE6xdWwzeEA8KYMRkU3exkCgBCD4noUBFwPzZK7lUY4QBUPLr6G\nid3aXw8NDQ3Nd8C3GkDXfohw8JtTgnHGzAuxQ6OXbckEAP2AYWrnNgUHdua8eT/BtMObYmi+\nU4hyWBIMw75ezNvT07OtU0SxwciRIwEgLS2ttTa5UNic8GQymYQc8vPnz8noGQAiIiI2btw4\ne/bsjiymZ8+eb9++LSsrAwAvL6/IyEh19eYNZU+fPm3LO5PP56upqRkaGr5+faMmYSvHe0FH\n3q5dTLZiWQvZLIHkvYN2H1PzFsqabmlRV6MsC3UPDlbU1As/valNPkQ0oijKYDCIj0++808I\ns9FUBZVVknccSR2OsBWioqK2bdsGAPv375eVlY2LiwMAGxubjIyMpUuXAgCO43/9/Wx7XmcR\nMJ622AfYoejzf46jLjjqtt9NDEs1+NPnC9/RSBn8LBrtDJM+spmuRxz8j5Rx4WSTBowcE8Z1\naXN4NQ/GXWy2YmkBS+5OmW5nHexFCQoAyQV0AE1DQ/Oj8K2WcJwbOa9EJHvsee6prWvH9dMn\nGk1GrH/2IlIJan8fc+7fXR7NfwFbW1tCFoPI1I4ePVpGRqa9Qe1gbGwssfIYRdGePXsuX758\n69at0Kr8mliDjY1N64FiPTEM8/b2ZrFYHdnr9vPPP2dlZcXGxt6/f//WrVvU6BkAJk+e3FbZ\nt5ycHACsWbNGRkamInZJxYV5iqUpg825hpyvLRO32MTvsrqyrapoFMPezUNWR/6GIrizbO4M\n+0oMB6HDZLZe17q0CFzQmOFUU1MjM+4Yr5Y6A1O1uaQbqytreHmltLSUeC7KqNd85/oXZ24q\n02tZSmpaYGAgYbOCIMgDYTcRiAfLjrrg1DKQ5XK579+/b1cFhSQtLS0oKKhPnz7h4eHtOhH+\nu6zrA0ZN+0SEGORVQk3TR40A/OkDem2LQO99AkWUD0EDLy09Prr24UHAMQBAGKwPlY3XLjnI\npqGhofke+VYD6I1pZWp223/uJK5cyjEdtNNeo+x5+L+yKpr/FAwG4+rVq4sXLx48eHBYWNis\nWbMGDRrk5OS0cOHCurq6L5tTUVFxxIgRQCmfIA4mTJjw4MGDtWvXErGpo6OjhoYGdaCFhcWi\nRYuMjY3V1NS6d+8eGRlJtHfu3JkwoifmGTdunK2tbWRkpL29vZaWFpPZ5m9ECgoKgwcPVlFR\nCQwMdHFxEQvrcRx//vx5W7FgfX29mZmZn58fl8sFTFSb+Jfew6U7Byk8XunyZbeFSpWysslW\nTNSqmJtk/L1dWSGsa+f27H4mT4RxMhaeOsEPMEbpEAAAIABJREFUlfouQVhyAFBaWorjOENJ\nh+MxB6v5JCzNbj0Jxq+ruBgiqi4MCAhAUfRTHUyPhQKRJlPDguOzWMFlmkgkItxqAJordwkW\n9oYd/nBuWIvq4T179qipqRkZGVlbW2dmZrZ7mR8/fiSy/omJiQsWLFi/fn0H7s2/hqY8XAyC\nAEtAWz7amKjAsZ/gJwlPds3EvmnxsrCosD71bPnZKZUxS4iWSkFjWY6KtP2izVQ2wNFnsOgG\nBEXC3KuwJwUK2vOCoaGhofmv8a2WcBQLRCoGJhJP6RrJi160bzZG8yOgrq7+559/AkBFRYWV\nlRVR7ZCamlpZWSkmctdxjh496ujo+OjRIwsLC6FQ+O7dO1dX15kzZ1L7nDt3jjD7INDR0XF0\ndAwPb3yue/LkSVBQ0K1bt7y8vJhM5vXr18PDw9+8eePm5kbMM2jQIMIg88WLFzt27Hj58uWT\nJ0/q6+sZDAaR6bSxsYmOjhbbFlldXV1UVJSZmfnp0ydPT087O7vnz59LrFqhOocTEFoW/A9p\ntff3Kfae+pWehQBgFi70en3l6N6AtvxWqhI293WZnKXZqMHG1DBXGbBB2XdZ9Z1tVfGhLOv+\nWlNiAEEBQFD4ouTwUJa6ucrgTeQMKFtBbcReI6Rg//79AJBR0mJHoIyZW83dnaS5yU82kNZU\nrtBLH35rpZmRk5Pz22+/Ec8bWVlZ06ZNu3v3rvQLJErYgeJEKLHc/N8iqxzOvIDMUsitAF0O\ndNKAITawJwA+1sDzYsiqAE15sNEAe60WHiut4Ysgv6pFC0u3s0L3n+tSTtY+PKgyKIx6qqt2\n+wu7/BYW3WzOfxNsfgDzXWCmBBN3Ghoamv8o32oA7acqG/vkGA4+rf74Y0eTS2SUvf+NRdH8\nd0lKSqJGtNHR0V8cQMvJyS1evFh6n0uXLlG9TsaOHXv48GFqBxzHL1265OXlBQDq6up//PFH\nbm7ukSNHVq5cOXbsWHt7ewAoLi4+fPhwYWHhwIEDr1+/ToTCaWlpGhoaxGZEKrt37w4JCSFr\nNphM5rp160pKSgoKCtq9Imqiuvzc9MrYpboLUhhqX6vre9vaz2QrJsVv5eZ6azG/FURGUbnf\ncqaSnoxlHyJ6BgCWrj3KkkdkxHUiELacbchVFTUGABgrAwJAXobg0xsAaGhoSE9P53K5+4OD\neai1Qe+goP4us9wlSF6mp6eTTxo4jqelpbV7dWJOhBzOf8gI+0Aq/JkEwqa7XlgLqYVwKh1G\n28O6PuBnIXVwSwSi5rvKhgY+yAKA+tjjii5TVLFSasmGDAOGigv9iXM1G36LB1GrRyohBhuT\nAMMlPNvQ0NDQ/Df5Vks4fg9xqCs+0Xfx4TqM8scYF1xY5X+iuM5q4rJ/b2k0/wICgUB66aqK\nSnO1D4Ig1Jf/BGLzq6qqtn5HVVVV4oDP52dnZ3fp0mXt2rV//vmng4PDo0eP+Hy+j4/P1q1b\nY2NjFy1aNGvWLDk5OTk5ud69e7eOnvPz8+fMmcPnN2v5ikSiY8eO5eTkBAQESJeLbg1WX1Gw\n1oKbEdN+1w5gukUU0zWorbOE3wqjZQGxQq+JDCUdaoui5zwlHwkPLY+LGDGvAQDMVGFxbwwX\n8gCg4e2tmoTNALBixYouXbp4enomP3xYfO9I6qaAuNWDFCSpgNja2hKa0wCAomjnzp3bvS5/\nf39ra2vimHAizMnJGTFihJ2d3fjx48VM2qXz8uXLHTt2REdHU7eZfjGn0mHd3ebomcqZF7D6\nMxXAFdig1LRxwFGDR9Q9A4LImHvUWw6l9lzYG/SlPkRwhbAioTF6RgCctIX9tIvc9HhkIc22\nZMhrJTJNQ0ND89/kWw2gOy+M+62X9q2wSVoGNj+vfgoAUyaMdbHSHLr6mrLliNh19G+BPwpc\nLnfs2LHy8vIcDmfNmjVtdXNxcfH2bv5d4p/+tX3u3Lny8o3quzo6OpMmTVq+fDk1kNXS0poy\nZUpWVpaLi4usrKyDg0NtbeNGLaFQuGfPnmfPnmVkZEBTevjYsWOfPn1q6+0yMzNFIhH1EQLH\n8by8PDabzePxPjeAJsaXHhzcsMNJWJ5HSex+Ib9NiDDehmNtbItEcDxnPjNrIbtFI7NFOS1T\nSbst/bucppBrhjPa/eGvH5ZplOzuizU0y200NDQQ2WUcxxMTE0nZOyqWlpZhYWFExbmBgcHe\nvXvbvSjCifCvv/4KDQ19+PDh0KFD/f39o6KiMjMzjx07RhTKd4QLFy507tx5zpw5w4YN8/X1\nTUpK2rp1a0xMTMf3MlKp4sGfTZoubAb0N6gOUEgN1Puk3BQEn3gOL9r8HkkAB+ih13icUq7s\nqlqICsW3CiIAy91himM7U93Og+KmrQfjdNJvTlM/OFr33BjFIPw8IYciEEHUSykT0NDQ0PyH\n+FZLOBCG8l/3srpvWBK+/1Tig0oAOHj0tKy6yZiQ0E0b5umxv9UHA5rP5c8//zx9+jQAiESi\nlStXOjk5iVkuExAbCiMjI9+/f+/t7U2oc/xz2Nvbv3r1KioqSkZGJigoSE1NbeLEiV26dLl4\n8eKHDx9qa2sTExNtbW1lZGQ+ffqE4zgZPRO8ePFCTK9aKBT6+fk9evRI4rZCOzs7BoNB2I6Q\njUTUGBAQcPPmTSKGpp4ly6nbAsdxQxUkf0+PMiVb7dm3v+QutMR0i+jWBmvz4jcSz7IEghbW\n3y2Dfoxbxct9IO8gIZPtrAcA0NDQ8PTp06WL5utpa9y5e/91iUBU+QHjSshnnjlzZt68ea3b\n58+fP2nSpMLCQgsLiw6KhXM4HFJw8NSpU2/eNF/avXv3ysvL1dTU2p1kzZo15Ody+/Ztd3d3\n4uWoUaPOnDnTkWVQuZkL1TwAAARglOy1DSMDiE952uI/7hovreUDDnDxNdhrtT9VRQNsvg8X\nXjUbGQoxSKrUByagANQE94Le7UfPAPCs6cnFTBWOzPcnvvMikWhTyOjx5wddz5eh9qGhoaH5\nj/MNB5oIQ/HX5Tuf51eUFeRlpr/IfvexrjT3VHgIHT3/UNy/f59QfCPCDqqmshhMJnPUqFEL\nFy78p6NnAgMDg7lz506fPp2Morp3775u3bqhQ4dGRUWVlJRUVlYWFxeTnoLUsYqKip07d3Zz\nc6M2pqWlPXv2TOJ7GRoa7t69m81ukcQlinTnzp27cuVKS0tLGxsbMi6UlZWdNm0a2dPJyUli\nlvrJkyclJSW87DvF212FJZID38/Ce+nrdq2/b/0pwZm6Pu1c2dmJ1Tc31j85VXbql7IzEwVF\nGYLiV46VF+0Uy7Ozs21sbFxcXHr06PGBx1GYk6q7OF1/TaFir8mtpyopKWndmJ2dPXToUGdn\n51WrVhUWFoqdff/+fUpKCuEBKZGXL19OnDiR2sJms6lF0lIgZfjEOHv27KtXrzoyQ4uVNF2c\njQbsWjSK/F7t2/i7u05j+jdTwg0QJ78KAk7DyfTm6JkKdbk/2XR0819108ZBbXns48eP5M8C\nIpGIzS8jTrXrr05DQ0PzH+FbzUBTUdMzVtNrvxvNd4m5uTmhIEFgYdFih1Rpaenr16+trKw0\nNTW/8o1yc3OLi4u7dOlC1mZ8FpWVlRkZGWZmZlevXm23s4eHB4PB2LNnT7du3ah5YuJRoaqq\n6sWLF6ampoqKiunp6SYmJvr6+lOnTg0KCurVq9fr16+JzoMGDcrNzTU1NV24cKGsrGxmZubQ\noUP5fD6TyRw/fryVlZW/v39SUpKFhcW4ceNSU1OXL1+ekJAgMZjj5d7/uN6abdRda1o8qqDR\nusNnYbIVe7tIjs1vkHjWvOhlbgijhd8KjrM46sbLX2EcAwDAMazs9K91yUcA4CLAw706PXv2\nzM/PJ/reR93kagEAEJas6rAddU9OkvLSsqYusraBqNPoOgFQK6ExDAsMDHzz5g1hLZmVlUUI\nSBP8/vvvGzduxDBMR0cnLi7O0dHxzZs3a9asyc/P9/b2XrJkiays7N9//00tQAeAJUuW3L9/\nn8PhtPu0NmjQoN27dwMAiqJivyGUl5dLH9ua+qZ4V1kGq6qqon6aDEE1gAKA5JiYigiHqbHw\nsT1pOS0FmO0M47p2VLFFrdH0EN5Vo53s7F9lZmAYhqKonJxcFbMxJa7xJf9v0dDQ0PwL0Mla\nmm+bFStWmJk16kX4+vqOGzeOPHX27FkjIyM3NzdDQ8Njx459zbvMmTPH3NzcxcXFwsLi+fPn\nnzs8Li5OT0/Pzc3NwMCA+kM/CYqienqNT4HdunULCQnJzc3t3bs3NXp2cXHp0qXL1atXiYsy\nMjLS1tZ2c3MzNjbeuHEjAKioqDx48GDVqlUDBw6Ul5c/cuSIubn5nDlzBg4cuHTp0hMnTqxf\nv/7mzZtE9AwAAwYM2LBhw8SJE9etWzds2LBbt25Jr7vl56cUrDJs3Eb2dViGcU22YtL9VtZc\nmNP4GkHk3ecS0TMAKDiPM3IZ0ZgyR5BKlS5PuMYM5ca7x1Rp9qRGWLL6oXkcz7kAIGcbqDUn\nScl32fH3ZqOiWuyxy83Nff36NflTQGpqamFh4adPn54/f/7o0aMNGzYQYWhxcfHcuXOrq6v7\n9Olz+vTpe/furV69evTo0dBKkaN79+6HDx/u06dP9+7d/f39pW8NDAsLCw4Otra29vLyIn9z\nQBDE0NCQEAj/LLSapErelqMu7l7ktkgtLa0iaBSZ0xaXMxEnPgteNinWuOnx+hRu65Q4LpB7\nylaj8a4hAMd+guRJ8EuHo2cA6NloeAUfa6D/mhs2tnYAoKmpGXwwKekDU6wPDQ0NzX8c5Mu2\nqvxQTJgw4ejRo2vXrm3LGJnm34XH46WkpMjLy3fr1o0sRRAKhWpqanV1dRiGIQgiIyNTXl5O\nuJx8Lvfv33d1dSWOEQTx9vam5rw7grKyMqEZTMzAYrHIhKWZmdmBAwdMTU2NjY1TUlIwDHN2\ndmYwGGvWrFm5ciU5Q9euXe/evcvhcIyNjT98+NA6T7x58+b58+cDQF1dnY6OjlhRNRUWi3X9\n+nXSk3zfvn3Tp0+niu5JR/WncI5XSIcvvR2yF7CYbceXGIqKWX8TCEreIAwZnFeF87ls454A\ngPNqi3d6CT6kqgze3Hp5VVdWy9kPYhs0x6N/9cge7GJOHFdWVpLehwiCMBiM0NDQ1atXi0Qi\nBQUFqucOh8M5f/68n58fdXI7OztfX9+IiAii9oPBYBDfEPJ+njx5cuzYsR25G+Xl5b///vu9\ne/esrKz++OMPidaV0kn5CMPONx73NagrOjX54Z1r1radXYNPn3vf+Iyx1gt+6SptkuCrEP0K\nAEBTHq+PW/g26ZKoPAfHsOG/THvRcy+R5F7qBtM/sxJKiIHfKXjblFXXlAcTJWFRPfN904ZP\njgzc+QXU6SQ0DQ1NE0lJSW5ubtu2bZs7d+6/vRZxvqUSjsqiwjpRR7Nf+vp0KuNHQUZGhgxw\nSYqKimpqGn+ExnG8oaEhPz+f1B37LKg5YxzHP7cyta6ujoyeiRmWL18eFxeXlZXVs2fP7du3\nk2UnPXr0ILtRXbgRBLGwsEhLS8vKymrLa3rhwoWOjo59+vSJjIyUEj0DgFAonDlzZmpqKmFs\nTmwx7GD0rKKiUnlpAVZXphywltRp/hrMNwu6FyZFhrlL9FtBMSwvGJ06Ofqa3U/UdpamuJAf\nIqOo5BXMjZ6m9fZ4sUig2HMiqthctKPst1Ksf9DwobNG+mzZsoW4qAULFmzatAkAcByfOXPm\nypUriRsiVvesrKzcurI5IyMjIyNj0qRJtra2dXV1Q4YMmTZtGvWWtrataQs1NbWOCIBIwUkP\nnHThSSEAwI0PCgyvM9YDoKQezr1v7KApD8OkqjVzhXC/qXNJPQJ9Nuv12Syq+ST4kHoj966z\nEv66DAGA91XSJpEIE4XwfjAqqrHOpKQeSuqb/wFCEfjDm46eaWhovhm+pRKOhQ5WBh3m314s\nzT9ORkbG9u3bo6OjJapJ6Ovr6+npEUXDKIpqaGiYm5t/2Rs5OzuTIsEIgvTu3fuzhisoKDBa\n+lqXl5ffunWrtLQ0Li5OV1d3+vTp+vr6Tk5Oly9fJvuMGDGCxWIhCEKEYuXl5Z6enpMmTQKK\nizgVHMeJ6mrCbZEKNS4nemZmZpI5UV1d3Q5GzwiC+Pr6ZmRkyDw7WLTRvuJCMD8/Bb76J6wU\nXVcp1t8Ijh84MCRnfvuP+oOHj6qqqoo+f0bZwJYaPbem4dU1fuGLrVu3Dho0SCAQAEBYWNid\nO3d27Nhx//59Hx8f8oaI3RkEQVasWMGQtNTY2NiQkJAVK1bY29u7ubkRPxEQn5S7u3u7i/9f\ngQBs7d9cSSzCoaAG+E3/f7AZsMMfFNhtjYY6AYyKgqJWPvcMjpZsJz+lgPVE9AwAbWgStkNX\nbYgYBlbq4u1aCrBvAAwSfyyioaGh+e/yLWWg192Itz66K3RrBFeEq3b2cjXu0CZ3mu+S8+fP\njx49mgidvb29r127JhbWIAgSGRn5888/5+TkGBoaHj9+XKIAXEews7PbvXv3okWLqqurPTw8\ntm/f/rkzDBkyJDIykny5bdu22NjYlJQUZWXlxYsX79u3DwCKioqGDh2akZFBBPrdunW7devW\nrl27+Hy+m5tbSEhzWQK1AoSKtrY2APTr14+a/vTy8jp+/LixsbFYLBgdHV1WVqaurt7QIHkz\nHwk5W5cuXcLDww0NDSdNmrRhwwbhp9e1idu1bFxNQu4U1n3to7hZuHDi3a2h0fPbsv7OC0a7\nrqqoUpbgI0igzP84/bRIV88ct6akWDERoM1fDF52Yk3iX/Xpl4hK7piYmJ07dwYHBwOAh4eH\nh4cHALx7947JZBK62tQ7yVDUKlfr8eBdUesHNjFrntDQ0Pfv30dGRiooKISGhhJ+k1QaGhqY\nTOYXfyGlY6wMMaNgWQIk5LZQ8O6iDev7QBepbtt/3oOnHXOAkehH0xG6aMPVsZBcAC8+wbsq\n0FUEa3XwMAa25AcoGhoamv8o314N9JMNPbv//qj33pdJ0z67QPDLoGug/4N07tw5MzOTLAW+\ndetWnz59JPasqan5n9gsYxjG5XIVFNrbgSUJLpcbFha2c+dOqp34rl27pk+frq6uXlnZLFd8\n8OBBIs1M5cqVK/7+/uRLOTm5vLw8Q0NDqv+ipaXl48ePlZWVr1271r9/f6IRQRAfH5+hQ4fO\nnDmz9apSU1M5HI61tbVE5Q1yBldX13Xr1pmZmRkaNu7PEwgEf/3115UrV/T09JYuXWpjY6M/\ndh+zx7S2Jvks2rL+bnxrFstiU4uHh4Y3N30dTTKfPi6zGNW6f11ahKy5O0NJDwBwHC/Z3a/h\nbYv69Z9//vnEiRNiow4fPjx37tza2lpzc/Ps7GwAYBs4av2WgMoqAUDd4+Nlp35lMBja2tof\nP34EAARBevbs6efnN2/ePOWmEF8kErXOVXO53PHjx0dGRjKZzHnz5hG7P/8hCmrgxSfIqwQ9\nDlirg5ZC4+7AjzVgogKdNMDPokUcXNEA3Q9ItjBsjY0GXBn7GTsIaWhoaL6A/3IN9LdUwkHQ\neVb4v70Emn8fMfXc1nULJP+T6BkAUBT9sugZAOTk5FauXNm1a1eU8st3WVnZ8ePHqdEzAOjq\n6rYe7uzsrKSkRI61sbFRVlYODw8nq0omTJjw/PlzInTLy8sjBxJ+hFwuV+KqRowYERcXJyV6\nJmYYNWqUp6cnGT0DAIvFmj9//sSJEwsKCubNm/fLL798PDtLVPWhvdvQIUy3iJ6Y9mrrLOG3\nQm1BFbXUnm3/iEvOrMp3Hc7gNN5SBEE0JkcTQTCJnZ1d61ETJ058+b7iQlrF7dS3hKegkvcC\ncqCC8y9MTUsVFZXc3Nxjx47Z2triOP7w4cNVq1b5+flFREQsW7Zsz549En8lCAsLO3fuHIZh\nfD4/LCwsKipK2r34OvQ50N8cpjnBQCt4Vgy9j8CSm3DsGVzPgQOpEHIN3I7AdUp59oP3jdEz\nAiArasdT+1VpR3PVNDQ0NN8l31IJBwFbyc3RQEdZlv7B74dm8ODBROUDgiBKSkrEj+//QSoq\nKrZv356dne3m5hYYGEjs2CMIDAwkLoFEXl5eR0dHbAaBQHDmzJlevXolJydXVVUBQFpaWv/+\n/W/evKmnp7dv3z5VVdVff/11+/btL168cHBw8PT0JEJtIjKWk5ND26hXzc7OXr9+fbuXsGjR\nomnTponVG/z9999jxoyhvtGnfYGqg8IYaiYMFQOU/YVPGgRD5z4AgLxgVGI5B+G3Uqhm2Cs0\nHwBYmpb8Kgu2SqvCdH4dsBUQtMUfClSGo9BrUs3trcRLHx8falYDx/H8/HwFBYXkCo15V5l8\nkQrzLgwatGpnv4HRDa5ZohbzTB47lM1m+/n5/frrr2T7w4cPR41qTIRv2LDh9u3bpMYiQXJy\nMqH3TPYfNmzY59ybL+HsC1h8U0J7ORemxcL+AdDXDACaS5+1FOBT9jvQUZEwBoDFAIEIACDl\nIziIf1tpaGhofhS+vQAaAJ68F7cKo/nRCA8Pl5eXj4+PNzIyWrNmjZZWB7yJ/98RCoV9+/ZN\nTU0FgJMnT86aNWv9+vURERGKioqLFi1ydHQUs32pr6/v3bv348ePO3fuTDbOmDHj0KFDYjPf\nuXPn1KlTkyZNIjSGz507R9RynDx5cvjw4fPmzduzZw+ReE5PT1+2bFlbK5RoyydGfX19VVWV\nunqLnV+RkZEIglCz14KPzz/t9QMAGTN3rRnXEJZsuzNLx2Qr9mi1gXZFgcSzuuXvCetvhCV7\nuaYLoiEj3qONIJ6h2PhVMTAwyMrKGjly5ObNm62srCoqKgYOHJiUlIQgiPWfhXwZbQAQYhBd\nZguYtaHwLTTtvRMUZRjI1q5atQoArl271tb6379/b2trm5KSYm9vTzZaWlrGx8eTL79MFuaz\nKKmHNYmNxwhAFy2ROqO2SMDJLEUBQITD0lvgYggKLJBr+tegVgAMBVVCXFBYXchQUEcYjReP\ncyttjFXSPwEAlEn+YYOGhobmh+DbK+GgoQEABQWFLVu2vHz58urVqz179vzn3qisrGzSpEmW\nlpb9+/cnQuGO8/TpU+qQI0eOLF68+NmzZ0lJSYMHDwaAmTNnuri4UIfweLyTJ0+SL/l8fusK\nXYJLly6RDh3UnQyRkZFbtmyhlm1I8aDuCJ06dZKTkxMIBG/evCELTjgcTlvbJ3g5dz+us6hJ\n/Oytlq3psfJDu9bfp3f3FTA6nPDGcW5GLHH44cOHd+/excbG+vv7i0SitWvXEj7wOI7XCltm\nFlDGe7bNjE5lXRmvDQoujEQu3L+XKCsrGxIS8ssvv0h5Nx6P99dff1Fbli1bRsbTAQEB1Oz1\nP8TFV43WgygCv6reS5iqcnSkyqM5mr/oZhIdPtXBjRwAAOumR6Q6PqiqNfpNNmTEflimJSx9\nS7xkV7wiHQpVvvYRiYaGhuYbhg6gaWikMXXq1MOHD2dlZV2/fr1///5URed2kag3R0VBQeHe\nvXsDBgyg9pQ+ijhramqqpKQkpZsYYlUcrcWMpfDy5UtDQ0MjIyNra2stLa3NmzcDwMyZM6mW\n5mKLEVUVVF0OlcWkyVF3HJOtmLBtwQrXNzcLtrVZMy1Gw+vrvLz71BYcx3Nyct6+ffv8+XPy\nztdnxLQey6wv/Ps368QNg4Kn/6KkpHTjxo2tW7dK34SNIAhRdUOipaWVlpaWkpLy4sWLuLg4\nFutLxSw6TFpTpXJvfdGm6f2Ip6nKysp9v3l1ajJlJ3Sju+mAUZPGSamg8cNVdplkuyGfqWFJ\nvHSwtyYTz3T9Bg0NzY8MHUDT0LQJhmGxsY0JSxzHS0tLb9261fHhXbt2dXJqtmubMGHCkiVL\nOnXq5OnpmZCQQDSiKLpgwQIydJOVlaW6kbPZbGqS0sjIiFCD3r59+7lz58j2diN1sZ2CAoGg\n3SFUysvLi4qKAEAoFC5evPjVq1d2dnaxsbGkPHZ1dbXYhFhDdfYaWw+5TH8LYDO+VurHfLPA\naWWJFOvvvGB02vU/251H1qafnGUfaHnHEATR1NRks9lENKwSuE6x+88AgDU0x744v/5J3KEV\nK1YQZpAKCgrE5kIqvXv3porZERJ4rUucmUymk5OTxM2L/wSVTSqFHLyKy+US3wQMw0pKSrRl\nedQ+KAKrPQFFAKBZ/04EaA3S+HQkx4RH5arEsaUadNf7/7kCGhoamv8idABNQ9MmZIBI8vTp\n044PZzKZN27cWL169bhx4/bv389mszdv3vzq1at79+4FBATk5uYS3Tw9PRMTE6dOnTpz5szk\n5GSx0GrXrl0hISFaWlpqamp9+/a9dOnSwYMHDx06RNVv/v3338PCwmRlO/qbOo/Ho6ZOhwwZ\nApSYUkpsjeM4hmEvXrwAgPfv32MY1iyTzGCI5blFle+xO+tnGj7XvPIr1H3q4NraolRVQ7rf\nyu9xSzvit7Jgzda3b99Sc/BKSkosFuvBgwcAwDZyVvJdBigTAFBZZe7Ly/yCZ7ysO6WHBp89\nuG3dunVEbQyO42LyKQCQn59fUFDw/PnzkydP9unTx9XV9dChQ0FBQcTZe/fuTZ8+fe7cuS9f\nvvyiG/AZPHnyJCgoyNfXd+fOnSoyjR9QJagoKiqS1kK6urofuY2F46pNXxxvU9joAzJt7NDm\nNnmuyzIhrC8waBE7GhqaH5hvchMhDU273L17d9++fRiGTZo0ycfH54vnMTIyevv2LflSVVX1\ns4arqKiEhoYSxzY2NkRWEsOwhoaGhIQEU1NT4pSrq2trN3KC0tLS/fv319fXYxh2+PBhHMcP\nHz5cVFREjYCVlZUXLlx4586dy5cvd0TZXU9Pr6ioCMMwFEWVlJSIYgyJ9nsSXb4JeWMTExOy\nBUVRW1vbly9fiqW6z549GxERIRKJkOvRur9nMlWM2l2bdMzChf4vovccGi7Fb2XA4icvdBwk\nDkdwPHZv6Nrbl6iNVVVV8+bNIwJipkbB5wdcAAAgAElEQVSLbZ2iig8VhwaTteZSILxU5OXl\nO3fu3LlzZ9LokeDGjRv9+/cnbs7BgwdTU1P/ue2D79698/T0rK+vRxDkxo0bP4fbAsMbAB4W\noMH7EnbM8q2srNTU1Px1e+Lpj41DnPWbhwfZQU8DOPoUnhZDZgk0tLp0XUXY1h8cJcgt0tDQ\n0PxA0Blomu+Q5OTkPn36nD59+uzZs/369SPrJb6A3377DQAI4Tl5efmBAwd+8VQaGhrU5K6G\nhoaUziT379+vra0lA9OYmBiRSNS/f38irkVRlMFg+Pr6AsDOnTsdHBwAQE5OLjQ0NCAgoK05\nFy1aRARw+vr6kZGRmpqSja+Jq4Ymj0OSmTNn4jju4eFB3UJXXl5O2GJTwTCM8O3D+XVFmxyr\n4ldgNcUduWopxNsPNdmKYW1o8yE4HvenY1upaBxBMl69ad1+5MgRWZt+esveqI89juPNzwC8\n7MSORM8EioqKXbt2nTp1amttk23btpHPIfX19adPn+7gnF9AfHx8XV0d8ZyGIEjmhT85MgAA\nOMCxku49dpSPjajrtLHw9MfGRwVdRfAxbTGDsTKs9IQLQfB6FjyYCCs8YKQdeJnAZAfY1h/u\njIdeBuJvKsQgqxyu5UBaEdRJ0L+moaGh+d6gM9A03yFnzpwh/ZZxHD9x4kRbPoXtMnv2bBaL\nFRUVpaqqunDhQjFZ389ixYoVAwcOJELh3r17U80FpSAW3ZaWlrJYrBkzZoSEhERGRiorK69Y\nsaJbt24AYGJicv/+fT8/v9u3b69ZswYA9PT0jI2Nq6urMzIyqJN4eXnNnTu3rq6OsIYxNTU9\nduxYRUUFAFBVinEcJ6xY/P39i4ubA9+ioqLCwsKysrJXr15xOJyamhocxwsKJOvNkWB1ZVVX\n11VdXcdxm6Xy0xaEyZbeXzqmW0TRO12csh5KPEukok22SvCIkesWxCzMEJa+5Rc8IxsRpozG\n+HOobOMeOjZWJyOqq3xwuC61/Ui3c+fOgYGBp06dSk5OBoDnz59nZ2ffvNkovIxh2KhRo+Li\n4qhD/lH/10+fmqtlcBxn8quWe0Hw1cay5ldlyCto3v3JRCHMt1nArjV6HJgsOZvfCE8E25Ph\n2DOobYqbEQBvU1juDmaf92sNDQ0NzbcEHUDTfIeIuX58jdYBgiAzZsyYMWPGVy8K+vfvn5GR\nce3aNW1t7cGDB3dwVW5ubv7+/lTxYBzHd+/e/fjx48mTJ1+6dIn0jgaAvXv33r59m3z58eNH\nNzc3QtuYDNrMzMwuXrx4586d9PT0/Pz88vJyU1PTU6dO5efnoyjao0cPR0dHInRGUVRTU9PY\n2Liurg4ooCgqEol69OhB1mF/VkRYc28Xxq9TH3Ok40MkMvS3B9C29TchcsdnyVhuaqC2K/cL\nBRQFgKorq6uurCIamWomZPQMADa6ChdHyGqs3wjtiWzo6uo+fPgwOzv7zz+btzAmJCRUV1cT\nyiSRkZHnz5+njpKVlR09evRnXutnkJWVRX1pYmIyxAaYKCxPaN5QSKCjCJt8weMrymrqBDA2\nulnogwAHuJkLDz/AySF0pQcNDc13Cx1A03yHjB8/fteuXUR4x2KxpkyZ8m+vqBFLS0tLS8vP\nGoKiaGxsbGRk5MiRI6ntixYtIktTevXqReyBI7b3Ublz5w41eQwAOTk5hAkISUpKSmRkZGRk\n5NChQwFg27ZtISEhQqFQTk7u4MGDxPz5+flkfwzDevXqRd3FSGJvb996DWK4u7vfvXtUWPKG\n47NE3v7LS2IITLeIHq/Q06qRbK7EFvDEU9FNtR/K/ZZV39yIC7gAwDbuCYADNBbYVL5JkpHx\nJH/EEIPD4fj5+T19+tTY0Vf3p/VTr8o7qxoAgpDRNovFkpOTI46pBfTEKXNz83v37nXq1OkL\nLra2tjYrK8vY2FhKLb5QKKQ+LxkYGADAQCvwNoUbOfCyFD7WgJEy2GmCjymwv87RdfUd8eiZ\npE4AU2Ph9q+g+FW/NNDQ0ND8R6FroGm+Q+zt7VNTUxcuXBgSEvL48ePu3bv/c+9VW1t7+/bt\n9PT0LxhbVlZ28+bN169f379//8GDB2S5bWVl5a1bt169ekW8RFE0KCiIzW4RiSQmJpLHDx8+\nvHLlCgAQNdBUTExMFBQU2nLzpkJafsyePTs/P//u3bsvXryQl5d/9erVtGnTOBwOtfPHjx9b\nz6Cvry8WrLdGTk6OUMDg5d4vPTio5NBPuFBCIP5ZOK/92K7fyt31rZ5bUCbCbixmUBnwBxk9\nsxHB/bCfyOgZlVVW8l2mNnK/vMNIQBAnJ6fIyMglS5YkPXr6sffmO8Uqd/NhyzNVdc9Z5MRs\nNpvRpBbSo0cPoAibCIXCly9fTp06NSoqquMXuHv3bhcXFwcHBx0dHQcHB11d3QMHDrTVOSgo\niPj1AEEQFEVJuT0FFgy2hiWu8JcfLHABf4uvjZ4La+F8oxkL2GpgfhV79c55OKXNHmRYTjSW\n1MPpdh6maGhoaL5V6ACa5vukU6dOYWFh4eHhXbt2/efeJT093cLCok+fPl26dBkzZoyUSgaq\nNSDBjRs3TE1N+/bta2Nj4+rq2rt37+7du1dWVj548MDMzMzHx6dTp07EFkaCTZs2kXGYl5eX\nWH70yZMnADB16tTAwEBq+9y5cy0tLTFJRQ5UcBynrlBXVxdFUQcHB2IZPj4+NTU1jDYk5AAA\nQRA9Pb2CgoJ2vcGVlJSo5Sjc9EvvFyrU3dsjfVRHMNmKcdmcts4alWTlhrRYPy7gqg3fJe80\nGhAUVWje0CngNWB1pQBAhNea0+JUAtcpukzR+PUsx322QCDo37+/66gFthN21eJy5CiGVX/y\nuLa2Nigo6PXr1wDg6+u7evVqGRkZ4rMj9vYBwN9//93B6zpy5MisWbOSk5OfPn1K1NLw+fxZ\ns2aVlZVJ7P/TTz+dPXvW19c3MDAwPj6+V6+Ousx8LonvAMMBAJgoaCYt2b96RvKDexeP74qc\nZddTt/FRMCHvH3pzGhoamn8ZOoCmoflyli5dSu7ZOnPmzNWrV1v3OXTokKqqqqKioo+PD2FH\nQjBnzhyx2uJnz54R5ROkfd2uXbseP35M9i8sLDx48OCTJ08SEhKopc8AQHiDM5nMJUuWkI0o\niq5du7aD2tViymvBwcFitotSonAcx1vnpLt16zZhwgRDQ0Oq9kjrFDUCeFnUrPrUsx1ZpHRs\nwqqlpKJRDHs3Dzmyf0Dj+7Lk5B1Gaow7rTkxipt5ufla8u7JdR6sv7bIMKxOJ+SRjGmzvKCi\ny5Tnz5+rjTqgNeuWvNdC6uRM5RbKFFFRUTY2NoGBgXw+PzQ0tKamZsGCBdQOampqcXFx8+bN\n27JlS01NDbTNhQsXxMQEcRwXCARitc5URo4ceeXKlZiYmH79+kmZ+SshPb3NVCHmzAFo2nVa\nVFSkK8gR60NDQ0PznUEH0DQ0X052draUlwBA/F5fVVWFYditW7fmzp1LtOM4npub2zokzcnJ\nycrKorZT59TW1p40aZKjoyMAxMTEEL53TCZz5cqV9vb25AxkfwzDqOIYCIKYmpqKCZIwGAwn\nJ6f9+/fPnj1b7FrElofjeFseKxLbly5devjw4bFjx0rfYjhgwAB1NbXS46MLVhlWRM8BAU9K\n544g3frbOzNOLBUt13lw+ZlJ1Tf+FJRmAY6Blb/GhCgGRxsA2EbO1J6yavoMRS3FXpNbT6si\nJ+EOXL582cHB4Y8//hAIBLNnzyafeVgsFo7jAwYM2L59+/z58z08PHi8Nq+a0KSjtqAoKi8v\n/2VV1P9DWE13kSsADofTwtyxqTaGRf8LQ0ND851C/3mjoZHMkydP1q1bd+DAgfr6eokdqqur\nNTQ0iOCGqDdtbYby+PFjql3fvXv3iAMEQXr37t067nRzc3N3dyfaURRlsVg9e/aU+O7u7u4V\nFRU8Hk8gEFA3Bfbs2ZNqCujs7AxNAS7hLP3777+TnVEU7dSpU0pKypQpU8QWQy6DBEEQicoh\nrc1WlJWVx44dSxQPhIaGStf+i4mJYTAYLBZLVPmhJnHHxw3WFCfpL8R8s8BvyTPp1t8Dn54i\nr0AvNIepZcXSsAAEBQAElVysIiOsRliS7R4LkiXXNGdmZi5btmzWrFmKiorkE4hAINi/fz95\ne58+fUp+MaiUl5evW7cuKSlJrF1FReX06dOEyse/iEXTPsb31TB28Q7yO+DZ1z+tvjEfb6n+\nryyNhoaG5h+HDqBpaCQQFRXVo0ePFStWTJ061cXFpXUFc2VlZdeuXcm4R0lJae/evYQeMxUL\ni2ZnOxRFbWxsyJeHDh1yd3dHUZTD4bDZbDk5ublz506ePHnnzp0+Pj4MBkNLS+vEiROkW6FE\nxHYWAoC1tfWRI0c0NDQYDIa/v/+ZM2c2b95M6vo9evSoe/fuZKCP4zi15IPKrl27fHx8UBRV\nVVVVV1dHUdTDw8Pc3Lx10M9kMqmNHA6nqqrq1KlTVlZWK1asCA8PpybFJfLp0yfChAVBEGH5\nu5KDA6T37wgvdbpIt/7eefRn0m8FlVOR7zK03TmLrm8VVuQLy1pcDgvnK+TGVt/aJGXg2bNn\nHz16VF1dTUaZDQ0N1KeOUaNGjRkzJj4+nqxsrqur69Wr14oVK8SS0yNHjnz37h1RsfPv4m4M\nSo1e4HAJHTw3In/SH2dn7X/I/jUur8nmPPDzJGdoaGhovhnoAJqGRgJhYWHk8fPnzwmNCypn\nz57Ny8sjjhEE8fLykiiW17t375kzZxLHmpqa4eHh5CkTE5M7d+7weLzq6moul1tbW7tt2zYU\nRfX09K5fv97Q0FBYWCgmXUdSX1+/bdu22bNnR0REtC6QGDduXHFxcUNDw4EDB3bs2BEfH096\nBCYmJm7dujUhIWHDhg1qamo4jk+dOpWQdLhy5Urfvn1dXV137tyJ4zixDB6PV15eXlpayuPx\nbt++vXnz5tZvJxAIqI1kRS+Px1u3bt2KFStar9/T01PidRHzcF9croxZLF2DuYOYhQs3DNzQ\nViqa8FuxKnnd+pSw/B1gLTwIa/5eUHnnLwCoTdpHbfdGEl9uH4gL2tQSITL3hJwcAVGDQe1T\nWlp65syZgIAAfX39Q4cOAcCtW7fEJPAIIiIiJN7S/38UWLDQpfG4jg8XCg2vy4+Mqe/5uqzx\nbvfQpwNoGhqa7xY6gKahkQA1WUi8FOtA7vMDAARBqC/F2LVr19u3b+/evZudnd06RU3khlEU\nFVOaY7ZdxSsSifr16xccHLxz585Ro0ZRSzKolJSUdO3ade3ataQrHrHU9PR0FosVHR1dWVkJ\nAFwud8aMGfHx8QMGDEhISHjw4MHs2bP3798vtgziICAgQFZWcg3DZ+Hj46OmpialQ/XNsMKw\nLiO030qOfD+HvT5LpFt/X19vk71AvDSl+sZ6AcWqEADUXMcjTBkAaHh9VVTdKDstLMu9fWgp\ncczW76az4IlhOE97zl2mhjk5EMfx2bNnHzhwQEamMWHLYDDaMlrn8/kzZ86srq5u7YtO0nEF\nj3+aX7rCLGeQ+Bl104F9gZJP0dDQ0HwH0AE0zQ8NjuP379+/fPmyWAQ8fPhwomIVQRAlJSVf\nX1+xgYGBgSwWi1DbxTCMsCAR49WrVxkZGRiGWVhYuLm5Eb7ZX096ejq1LnbXrl0S9TEiIyNb\nK53hOO7g4IDj+LNnz4hROI6LRKLTp0+LRCKiXBtF0QsXLrT17hIT7W1tLiQRk8D7448/ysvL\npQ8RFL6Y5ybXv3wPL/vO12ejTbeIbtu3WRnCFArzglv8MVQL2s8ydGqxHnV7teG79Fbm6Sx8\nirAVapP2lZ2ZWLSpW8n7LFRBQ9bCS/3XCLaBI8Jgy5i5qQU1ZqkZDMb58+cRBNm+fTtZjEE0\nkjOztG04nnPluw4DlIHjOJ/Pz8nJ8fb21tPTg1b3lrCH/NzLLy4u5vP57ff7fBb1hvMjIMAS\nDJUAAVCRhV76sN4bokaAmlz7w2loaGi+UWgnQpofF6FQOGDAAEJ7TkND4/bt23Z2dsSp0NBQ\neXn52NhYLS2t5cuXE6EMFXt7+7i4uE2bNlVXV48cOZIq2AwAPB5v4MCB169fB4CePXtevXpV\nTHXuaxCLhIRCoUSZC2o3cp+fiorK8ePHq6urbW1tnz9/jmEYsf2Rus8Px3Epq/3rr7+0tbXX\nrFlDnb9dK293d/fbt28Ty5CTk2tdU96agIAAAwMDS05d8RovjfHn5LuNaHeIdH6dHAMAecEo\nImm1hN8Kjy1jFdZmMYZCz4nEASqrpOD8c8XFYFkrH/UeQzidRiLsFk9HbINGRxuRSGRvb790\n6VLqWaqJo3KXAcrjLwDKBABuZlzpwUEybDaGYSoqKklJSZs2bSosLPT19T116hTx1ISiaGho\naMevOj8/f8iQIampqTIyMn/88UdISEjHx3YQZz1w1gMA4IlA5uvMWWhoaGi+FegMNM2Py8WL\nF0nl5rKyMmppKYvFWrp0aVJS0oULF5ycnCQO9/X1vXbt2sOHD4ODg8XShPv27SOiZwBITk7e\ntEnaDrPWcLnc5cuXu7i4BAUFZWRkkO1VVVXBwcHTp0+n7h0cN24ckd89f/68t7e3t7f3mTNn\nAGDIkCFEoS0Rtjo4OBClJllZWZs3by4vLycSmUwm09ra+tq1a4QoHgCw2WxStLikpGTGjBm9\nevWaPHkyqfSsr69vYWFBdXXR1taWaHaop6dnZGQ0c+bM2NjY48ePDx482NLSUqIHOIGmpuay\nZcssLCz09fWZTOYff/yxcuVKACg9Prr6ZpiopvjrBTpMtmKlHK22zsrweWKp6LZA2Apas25q\nTokRdJ0oFj0DAP9DGnmsrKwspe5F3mU6ET0DgJxtIEPdoqGhoUePHjExMSYmJrt27YqOjp4x\nY8atW7c8PDwYDIZIJNq1axdRftMR5s2bl5aWBgB8Pn/BggUdFAX/MujomYaG5seBzkDT/Ljk\n5+dTX7579+5/NTPpwg0ACIJQX3aEkJCQvXv3IgiSnJx8+/bt169fq6qqAsCECRPEiisMDAwI\nC+5r166NHDmSCGoTEhKUlJQCAwOTkpK2bdtWW1ubkpJCRFEk+fn5hBra+PHjX716RVhgDB8+\nvEePHsOGDSMT0sOHD09MTCRW8uTJk9TU1MjIyAkTJhDhMoIgq1evXrp0aVpa2owZMzIyMpyd\nnQcPHpyUlJSbmysrK+vn54fj+IEDBy5cuDB16lRXV9eLFy9KuXAulxsfH09YhBQUFPz999+N\nYTomqoxZXBmzWCVwvZKv5JrvjuO0thjaS0UXqRr2XJnf+iwVGRMXie3CkreVsUvkHUfjDdXc\nV1cNDAyCgoJevJDgas1gMIQYTq2/RhhMAMBxfMOGDQMHDiQaMQxzcHDIzGw0zr58+fKyZct2\n7dpF1Hs8ePDgw4cP7u7uxsbGrd8iJSWF+H2A+G9aWlrrQnwaGhoams+FzkDT/Li4urqSaVQc\nx8UcRr4GQn2ZnLlHjx6fNTwyMhKafN1KSkqI3+75fH5MTIxYzw8fPhDefhcuXCBsoonK5qio\nKADo1q3b0aNHN27cKPHZoLKy8vLly3w+nyx9LioqWrhwIRk9l5WVJSYmQlPs9fTp05ycnOjo\naKLsm1heVFQUk8l0dnZOSUnhcrmJiYnz58/ncrlPnz5NTk5etWrV6tWrCwsLi4qKVq9eTVQD\nU9cgVitSW1ubmppKbRErDqmMW8b/8L/JoZpsxQSSZK0JdCrei/mtdBz+x6e6M69r/HJac2qs\n9qybGKBnz57t3r27hoaG2OUvWrSoLvkwWeHNy7krKH4FADiOU2vEExMTyeiZIDk5edu2bcrK\nynJycn369Bk3bpyVlVVsbGzrxdjZ2VHf9NGjR9euXfuy66KhoaGhIaEDaJofl4SEBDI+k5GR\nEbPi+wLI2X799dfp06cT2hqjR4+eN2/eZ82jpKREDXoIywwGgyEnJ9fa3ITD4QAA8V+xIQBQ\nXFwsZfOimBSGmDeHvLy82OY/JSUlwhCEbHn27Nn79++pLZ8+fSJU/8hGItQGAC6XS+3p6Oho\nafkZOmfEtRfvcBcUpnd8lBQsNvHt11ZLt/4+fCDwc6ft6h6IyzbWw8iYe8iaewBASkpKaWkp\n9fJRFJ02bRqn+H7xdteqq2vLz8/4tKc/W9uG02sS29TV1taWFOIQi54BQEFBISQkpLa2lpxQ\nKBRKlPTeunUrkZkm7t7evXv79++/ePHiz70okpKSki8eS0NDQ/PdQAfQND8uJ0+eJONRHo93\n9+7dL57qxo0bFhYWTCbT1dX17du3KIru2bOnrq6uurr69OnTre1OpEPdc+bh4VFeXm5oaMhi\nsWpqasQysjNmzCCqO6ZPn06GvxwOZ9asWc+ePbOystLR0bGxsZGYXO/Ro8fy5ctNTEyIlyiK\nLly4kNpBTk5OLPT/5ZdfxowZIzbP4sWLFRUVORzO4sWLcRyXor/m7e1NJuNRFE1NTX3y5Im0\nG9GEvLy8jIwMh8NZs2aNlYl+YVjXorAudQ8P8j8+a3+wVGo4HCl+KwDgk3G5ORWNiToy59vq\nFvITrSukGyfDMFtb2+LiYl7eg6r40NqkvWa+U3UXp6uOOqg9524C5uru7k4IdwwY0EI/BEEQ\nNzc38rGEnI0sUqdiY2Pz5s2bxMREaufw8HBiHyeO41JK0sW4c+eOvr6+lpaWvr7+7du3OziK\nhoaG5ruEroGm+XERi2tJmd7PpaqqaujQoXV1dRiGPXjwYNy4cQ8fPgSAL5ZMnjx5sp2d3c2b\nNw0NDfv06WNtbc3j8agBEIIgs2bN8vX1JctkzczMXr16debMGRzHR40apa+v7+jomJ2dDQDV\n1dX3798/cuRIfn5+9+7dNTU1r127pqurO2bMGFlZ2WfPnp08ebKqquqnn37q1KmT2Eo2b96s\npKRE7OQDgCtXrlhbWzs7Oz9+/JhYhrKyMrFnEQDCwsI6deqUnt4iPSwvL094oSsrK+/Zs0ck\nEvn5+VlZWRGl24RWYFsiHiiKrlu3bsSIEcbGxqQ/+ZQpUzw9Pd+8SS87O0VWVrb/opNpasO+\n7D6TmIUL3fOundjuJ7EqmrD+3jBo3b4+HSy/bk5piyrf87LvtNVPzCW+rtM4NtKY1FDynPdo\nSej+/ftHjhxpZGQ0atQowjQHRVEfHx+J1t/+/v4S34XFYunq6lJbRCJRXV3doUOHli1bVltb\n279//xMnTqirS/PdFolEI0aMIIQRi4qKRowYUVRUxGj7wYOGhobm++bbC6D5VfkP7z96/qZE\n18IuwN9dDhX/+TXj0vmntfyxY8f+K8uj+YaYPXv2xImNwmTm5uZtxR/tkp6eTtrv4Tj++PFj\nHo/3xeE4gYuLi4uLCwDExcW1zhHiOO7k5DRo0CBqo66uLilSJhQKqUrPPB7P2Nh4/PjxxFlq\nibaSkhLplSgRatEIiqJ37941MzPLy8traGjo3r27vLx8XFwc2eHevXspKSnUmNjf39/MzAxB\nENLc8cqVK1Th6raiZw0NjZSUlNYb42pqakiLPj6fn3Vhjen8YbkdFaVok7sm/Uy2YrkhDFSS\nqDaC479fWrY4NtQsXNj6rBTKz8/EGsRdeNqCMGppeoEiDPacOXPmzJmjp/d/7J15XA37G8ef\nmXM6dU77QtpLpKKiRbQQQmTNvfYtF8m1VK41e/atyM2+hOxZohAhZEslQouItGlTnbazzPz+\nmJrG6ZxTWa7b/c37D69ZvvOd78w5Oc888/l+Hm0yuywnJ0cavBCwWCwFBQV3d/egoCBJPRsb\nG1tYWLx8+ZL4aJydnbOysubNmwcAOI5fu3Zt8eLFBw8elDK27OxsUryBYVhRUVFWVpaxsbGU\nQ2hoaGj+w7SyAPrx/nkj5oYU8OpepCoY2O+5HDXR6isd52WfGf5ZZXQATdMknp6eenp6kZGR\nbdu29fLyUlBQ+LZ+DAwMyJARRVEtLS3p0TOfz3/16pWysrKRkVGTnZMSCxGozs2NYTKZHTp0\nePv2Len0bGJi0uS5qAgEgt27d1+7do3q2YxhWHp6elJSEjGPUE9PT19fnxpAGxoapqenUwNo\nYjqjiNhaxBKkMYqKirGxsZGRkRkZGQ4ODr/99hsZx2dkZJCdYxiW9ua1x8eN+VyXam3xnhgt\nwmiHMDB04sjnJ8WmoonS38MXPU3Wsq0bALcQlVcHRKIWTt7eU1CYoejii8opVyacrH4lOg2U\nSuWz4ypDNxPL1SmXseq6xwKqNoNMWiMIoqGhcfHiRWtraza7iZolCIJERkYuX778xYsXdnZ2\nAQEB58+fJ28jgiDU0jxi0dHRUVBQqKqqwjCMKEWup6cn/RAaGhqa/zCtKYD+/HS146zdwFCZ\n5DO7h2m7j89u/H0kamp3c9bbt6P1vjH0ofk/x9XV1dXV9Ts70dPTW7Vq1dq1azEMk5WVDQkJ\nkdI4Ozu7f//+aWlpADBp0qTQ0FDpZfw6d+7s5+cXGBhIzdROnTq1V69e0kd14MCBYcOGlZWV\nEQdGRER4e3s3/6LWr1+/evVqYmwsFosom2JoaJiVlQX1aePjx48nJCRcuHCBmOVmYWERHh4u\n1mlYpO5gkxPRamtr3dzcsrOzASAoKEhHR6ewsFBTU5PH41VUVFADdIFAELByGQAo2E1WGRmE\nclSbf41i8Z1ywnfKCSmp6IjNdgIm03gbHwBQhTYYjwuYEJWTUHoGxzXn3UcV2gAAp9uY6rRo\nYUU+/1MS71NS7bsHgH91ivLbWwVFmbLGvfif0yofH2pyqCwWq0ePHteuXSstLe3Xrx+fzz9x\n4gQAjB8/vvGzmZ6eXmhoKLkqkjxu8vlKRkbm0KFDnp6eVVVVcnJyhw4daqmyn4aGhua/hET1\n4b+QjaZqy9/yQ198nGhe9xuZG7vTpJ8fQ29sfuYJUsuxwUjFP6vsB16Xp6fn0aNHAwICli9f\n/qP6pPnvkZGRkZmZ2a1bN01NTUvlzHMAACAASURBVCnNpkyZcvz4cfL7eeHChZEjRzbZ+Zs3\nb9LS0srKyiorK52cnCwtLZszJF1d3by8PCIJzWAwcnNzm18F2szMLC0tjRxnYGBg3759a2pq\n7O3tqc3GjRsXGhr68OFDFEUvX768fft2cpeBgUF2djap1jAwMPiBTtuS6Dt1+VvL1YD+AG3u\n7c2djfNE7S9IcAQxDBQTYX/dSFga7qP6W7DYnTVv7xbuGYALv5pzKUURTjzMyMjIkDUg16xZ\nc/PmTUIPTSShidcFHA4nPj7e3Ny8cSd3797dvn17ZWXl6NGjHz58ePz4cQDQ1taOiYkxNTVt\n4nIAysrKMjIyOnbs+AMra9LQ0NBIIi4uzsnJKSgoaP78+b96LKK0JheOPVkV6l12ktEzAGj3\nnh+zpmd51slRB9N+4cBo/uVwudxdu3b5+/vHxkqczvX9dOzY0c3NTXr0DABE7pmkmTVWzMzM\nRowYMWXKlNmzZzczeq6qqsrJySFl0AKBgChQ0kxEVAEGBgaWlpa2trbUzCVRI0ZGRqZ3797O\nzs6EeIPca2hoSApIUBQ9ePCg2Fw7iqKysrJN3rdmEnt849jy7Ti/qummTdF38SuDIFySyR1R\nb+XtQmlZWIxXJawskrRXroOLnKmbyEYcxwnnk8Z+hba2tsT8VCcnJyaTKSMjc/XqVXI2YU1N\nDSm2qaqq2rdvX+MzpqSkDBw4MCoqKjY21tvb29nZ+c2bNw8ePHj79m1zomcAUFZWtrW1paNn\nGhoamtYUQHOFmFwbUdVd9yWRbhrsWz7DXle1bHIPzf8JNTU1Dg4O8+fP37Bhg4uLy6FDDW/G\nHz58aG9vr6GhMXLkSLEWYK9fv967d29kZCQm7m3+t2Fra0tNMUqqsVJSUnLkyJHjx4+Xlzd3\nCpoIHA7H1NSUcK4gRKvm5ualpaVHjx49duxYWVmZ9MN9fHzIcZqamg4cOJDoZ+/evWQbkRox\ndnZ21EszMjKaNWtWx44du3btevLkSVdX1+nTp1NPQcSIGIbxeLyCggJ9ff3Gw5Cub2mMUCj0\nHDMsQPuqTsH176/7DQCGgVi5ZFmIDJ8vpfQ3KqvIsRpV8+aapAYMebXGG4mahSJ56GXLlj19\n+jQ0NDQ5OfnBgwcCgYDP5xNeKATU9uzOQ2K0F9ofgjWxIKB8cyMiIoi6OYSO+dy5c6ampo6O\njk1KqP8B8rgQ/BRmR8HQ0zArEoKewMcmvqE0NDQ0v5LWFED3VZErTNjCFX71u4IwlEOvLhPW\nvHX7LbjViFFo/kFu375NGqshCLJjxw5iuby8fMiQIfHx8cXFxZcuXZoyZYrIgadPn7a0tPT2\n9h4yZMjIkSN/lCjIy8uLFI8qKCg0do4DgKysLBMTk2nTpk2ePNnMzCw/P/8bToTj+Lhx44jY\nSElJ6dSpU+Xl5aampp6enlOmTDE1Nc3JyZFy+OTJk+/du7dkyZLAwMAnT55wOBxiu6ur69q1\na4lL6Nu374YNGwAgOTnZxcVl165dWlpaCIIQUe/Ro0f37ds3d+7chISEMWPGAMC+ffvOnj07\nbtw4IoUpJydHtCTurUhldRImkyk2jJYUWzOZTFurzim7Rxce+q2Zzs3SsdhQ0mQq+vUSRbF7\nOV1/kzPpV5MpxmKcjfJt24r6q3A4nDt37lC3uLq63rt3b926dbm5uf369fP09JQyVBRFZVR0\nNKaerZDTzefC4edwhKJIp06TxXG8RbNmP3z4EBERkZ6e3vxDms+Jl9D7KGx7BJEZ8KIArr2F\nwMfQ5xj8Hd/0sTQ0NDS/hNYUQC+ZblpTestm3OqU3Erq9rb2y89PN8u+5uc0f1+ZkI6iab5C\n1Gq3su7Lk5SUVFpaSobFt2/fFgi+eomxcuVKcm9ERARh7fz9hIaGkhpWLpcrdsZhUFAQYbgL\nALm5uXv27PmGE+3du3fVqlVVVVUIggiFwq5duwYHB3/+/JnYm5+f//fff0vvwdnZeePGjT4+\nPiIVClesWFFRUVFaWhoTE6Ompsbj8dzd3e/fv19UVJSfn29ubk592PD396e6Pfz+++8nT54s\nLS39/PnzxIkTm3wsIcQnYpvhOC5i5EecYtOmTevXr6+oqKh+eeHjX3K1/0jpb/karsTS3wyW\nnGEP6obeBjDBAiLGy8zynIgyGmZyMxiMqqoqobAh6NfV1Q0LCzM2Nj5y5IiHh8e9xDR25yHM\nNuLLN+7Zs8fNza3HUE9EpiGjnER5+Bo3bhxpCM1gMHx9fSVf7leEhoZ27Nhx+PDhZmZmmzZt\nauZRzeTMK/C/DbWNnnQEGGx5CHubVWmHhoaG5p+mNQXQ1muvjbNUSz+31lJXWdvI5GJxg7vW\n8JD7y4YYP9w1q127DgfzK6V0QvP/Rp8+fTQ0NAglLo7jpL+hiCoDx3GRqhCfP3+mtvlRFYxF\n+hHbbWFhITW9+m2nDgsLIy4Zx/GKioorV64059TNhMlk7t+/39raunfv3vv376eKrV+9ekU2\nw3Gcy+U29rFGEKRNmzbLli1rLB4gNCdNwmKxpkyZsnnzZpFPDcfxQ4cONTglY4LSc7NwbkEL\nr088HbbyOm6plV76++oOazH7GA2RNwKwpjfMtwev8LJF2UO0Awo43cYQu3R0dESOKywsbNeu\nnY6Ozh9ef76s0tLyz2gz44r2slTF3mLm09ja2kZGRobtDmBQBthRDQCgsrLy+PHjFy9evHnz\n5vbt2wMCApKTk52dnZtz1RiGzZs3jwjrcRz39/cnn+6+ny81sK4+O89EoZdOrZvGBxedapn6\nT3X7I/j0jSImGhoamp9IawqgUZm2JxLSDq6d69TNhFeaVyZoSEqhTLX1Ea+PBXgZMvLf19Bi\naJoG1NXV7927N2HChD59+mzdunXNmjXEdlKTQEKUTSYh6yejKKqiouLg4PBDxjN48GAAIHUO\n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\nNEbPJPnVsOIOrP/3O82Jhubn4WcKoLfH5SsYrT3uPUKGiQCg9lP2uKlyEAmdf6Y0Pyxr9l68\n1VCh4OHO7zhPmv9ndHR0yM84jn+5CFgM1JQkhmGE0/BnHdVy8zsidCaEdwGLxdLT02ujIFhK\nSurixYv6+voAYGlpSbgriDojNaAkzlVZWSlwGwkVdcv+1BXY5OTbcj+JNKSamprAgGTlxbYg\nEA1TJyNqaXjL4uFiwGrL8nbaZCxhFBxq/aGljRjt5Bru4olRRS+6senDEtHyW7FWfWMnehQX\nF6empl64cCEoKKgichs0ST4cdPgj/J/uDE8DBJXpPUfBdbOETk9250Gqc6+j0iocDofD4Wzb\nts3Lyys/P5/wDicNTyZMmEA9i5+fn4uLS1ZW1ps3byIiIrZt28ZisczMzO7fv99ySjIyMqdP\nn5aTkwMATU1N4gntB+H6Ozj1snmTxfhE9xz4Am6+//aToqH5mfiZAuikWq68+S/UltHKUiyZ\nnhKf/ja2NJTlVr/+pjOjoWli9uzZpIuZtrb2ypUrv965bGxsFBQUSAPgwYMHt8UMuF+/fgwG\ng+iJ4/gXFne4f//+kiVLNmzYIGB+3A7s7OxkZWXJoJD4MHjw4HYM1a9fP+LteXx8vKWlpahu\nAwcOJGJlwuB54MCBAKCgoEB1i0MQhBTGkP2pkSuKonJycqamplOmTLGysgoKCqJ+KdRuZCNR\nerqqqkpKSoo6AaLsThuTxHZ2dt8inYnjdUm3SkLmdNTKQj6DoR+AcUU/CxElVx75tmL1jXNr\nalNu49ym9CnGl8m+KycnZ2hoOG3e7ynv3te9jay4vro2OsBRqyEqnfGGZaM06aSC62a2sXPz\nudjyErrWvr6+hYWFq1evJp4uGhoa5s+fT/aZPn36zp07TU1N5eXl1dXVr127lpOTw2azzc3N\nPTw8iKWl79+/HzVq1JMnT6qqqsrLy7dv3+7l5XXjxg0AGDNmTEFBQWZmZkZGBunZ8iOw/0nj\nByUpcGNdlz5mLRNo48a6odhUP2XfE1GH0tDQAPxcGujOUqy019EAA8gW2xVr1pUK/p59k17J\nlPrSxTQ0NO1DRkbm6dOn9+7dq6+vd3Z2Fr9E7AtRVFQkJNepqan9+/ffs2dPW44igrz169eX\nlpaOGzeuLaYQMTExqampDg4O1IVWABAaGjpu3Dgi7Dh48OCrV6/EVPpoFVVV1atXry5fvpyQ\n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\n8/KbW0qv+nOyYuB7UqKoZhrIt9xQKcAkrt4hSb2+zskz8MUXFn7cQfCL7uwm2XJok61uvP+5\n/LRLEP4SlJSUbGxsSF5FYcif2SsN6oL7D3YQPaEd3RZOe4Bny7wxynfH64jIENO5lwHuIRD4\nAJZehxGhII2b46lTp1BFEACQJLlly5b6bfr06XPjxo24uLhFixY16kvFwPDL0ojvscvMXS8y\ni2t4FbGn/JRZGACYe+1+/CIn6dJmTQ7z/4GB4achVABAV4JrWvT19VNSUqKioq5du/bw4UMp\nJRqakMTExBUrVqAyg4yMjJkzZ35dPxwO59q1a7dv37548eKbN2/Mzc0BwNvbG8kJ8/n8hQsX\nilMj9vPzS0xM9PPzCwoKysjIqJ9grqiooLLjqampK1euFGqgp6eXmZmJSpZRuJmfn0/XmS4u\nLp46dSqqSSgrK8NxPCoqKjo6Oi4uTklJCQC2bNny9OlTIWnqSZMmxcbGhoeHp6amdu0qLFWk\noKBw4cKF4uLiiIiIO3fupKSknDt37tWrV5MmTerWrduoUaNQM5THPXPmTGVlpZycnIqKiriA\nWGg5JgA4OztPnTpVZHsulyuun7Kysq8ze6+oqMjLywMAPp9fvxZl37591NQlIiJC6KhAIMjM\nzLS0tHRyctLQ0Hi3yak4dFrtmxuCSrFF3t9OlYy86Ra+2cYaQmIYjZGk97WA9DnYob1uGM7W\nGLlf9+9nuIIGS05ZZ+bNu2VGkW9gVhScfwUnTpxwcHBgsVgWFhZnz55dtWqVpqamoqLi5MmT\nqYKWOgEcfALLTqf8sy94y/pV7TraS17+e+I5CD69l09zISm/4fuitNURqMapkgcB98EzHDbe\nh/Jacs+ePX/88cewYcPESXwwMPznkOoJHVGX77NwnY7TnL+HGnFov4EqrbswmWcGhp+Os7Mz\nSrChGMXZ2fn7XUteXr53797fr3/JJCcn09XKvjoDDQAYhglFmcnJyah4AGmxpaSkCNVaULRt\n21aCUQhdUBnHcfomhZycnI2NDVWrQBDEixcvBAIBSl2/ffuWWh1IEER2dra9vb1Qmtba2pqe\nycMwLCkpSSgdXh8VFRU3Nzf0Gk0bEM2aNaM3k5eXt7Ozo5cR18fV1TU6+gtNh9jYWEoNWgg1\nNTUU7DYheXl5Eir+Dxw4cObMGZIkLS0txRW9pKSkUK/L7+4qv7sLAHTmPeI279R0wySFPFxq\n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\nQTHkW6lr6NChAoGA+teIESNU2UrxDaCrqzto0KAy7BoAAKotLo1AS/PfjmrhFhKZyheaterc\nt4mLo7W5iVgskOTlpackxT5/fC38xtoZQ3fvPfHg+m4bEce+G0Bl8vPz09HRCQ0NZYZgBQJB\n06ZN//zzz9TUVFNT09jY2Pz8fJlMpjh2u2HDBqU5G0FBQYaGhjt37iwoKGjTpo2vr++CBQvi\n4+OFQmG3bt2WLFkSFBQUHx9vZ2d3+fLlN2/e6Ovr9+nT55dfftHR0Skc0o4dO5o0aXL06NGM\njIwmTZpMmzaNmYg8f/58a2vrs2fP2tjY/Pjjj8bGxsbGxpcuXfrhhx8SEhIMDQ0bNmzYr18/\nb2/vVatWvXnzpnPnzm5ubkuXLn327JmDg8OsWbN69OjRsmXL0NBQIyMj5iTChw8ftmjRYurU\nqcyueTze6dOnV65c+fTp0zZt2kyePDk1NZXp7auvvho3bpxSqPv371+zZs3du3cbNWokFovv\n3r3r4uLi4uJy4sQJQ0PDSZMmMac/WlhYXLt2bc2aNcnJyb1792amQjGWL1/u4ODwzz//5Ofn\nUxRVs2bNyZMn161btwwvpYeHx8WLF4OCgqRS6ejRo7/66itVthoyZIhIJNq/f7++vv7kyZPl\n52sCAACohMXpI+oKn+hKCPGcuD4uq6DIFaR5KXt+HUxRVMPvLmhwv5gDXT0pnr3n4uLy6dMn\ntiMCAIBiYQ501aPNc6C5NEw7J+S5gfW48I2T7PSLHjjniWoM/3l/UCvLl/vnVXJsoP2kUmlO\nTo70X8wsWKn08515srKy5KsxD6ZMmXLs2LGJEycuXbr06tWrxV1Vo8gdaTr2iiUPWCnywgdC\n0zQzQ5pZVOSRKvbGPFaccCxvJITIZDK6xOnUGs9kcQGXfCDl7L9sKvpdxLl3KQAXPf9zcTMn\nW7FI76eYjBPulhRFxeRp8kfvfA8HiqKufyzLWT1QTlwqoB9mFxjU6lPqas071Cz49LgS4gGu\nCAsLs7CwEAgEenp6gn+JxWKBQCAUCpkrQhgaGlIUVaNGDV1dXTMzs02bNhFC+vTps3Hjxtmz\nZzNXXy5VTk6On5+frq6usbHxihUrKviwNGDbtm3m5uY6OjoeHh5WVlZisdjb2zsxMfHkyZMO\nDg4ikah9+/avXr0ihNA0PWfOHAMDAz09vVq1aolEIpFIJBQKXVxcrly5wvR26NAhOzs7kUjk\n7u5ub28vFAqFQiGPx2NS7efn17FjR6ZRT0+vVatW+vr6BgYG06dPL3wC5d69ey0tLcVicY8e\nPd69e1f+I7127ZqLi4tQKGzWrNn9+/eZxi1btpiYmAiFQoFA0KBBg+vXrzPtUVFRrVq1EolE\nTk5Of//9tyr9p6Sk9O7dWywW16xZMzg4uDyhZmZm+vj4MO/DzZs3l6erIj169MjDw0MoFDo7\nO1+6dEnj/QMAQ5IT3cZvwaMks++nT/c0ErMdDmgayyPg6hhpqS82bp+YJy1pJemn8bWN9CwG\na3C/mMLBacnJyXp6emr9UDCno127dq2EbvPy8mJjYyMjI1NSUmiaTklJuX///ty5c+U9EEJO\nnz4tkUji4+Nv3bp17ty58+fPZ2VlPXny5PHjx6mpqdeuXWMeyPtMSUlJT0/PzMy8c+eORCKJ\njo6+evXqy5cvIyMj3717FxER8eTJkzdv3iQmJkZFReXk5NA0nZSUlJWVlZycnJGRkZCQwMwz\nSU9Pv3//PnOlC4ZUKo2Pj1e6/nRERARzpIoxUxTVtWtXXV1d5jxFiqI6dOhA0/Ty5ctJUedE\n8ng8MzOza9euvXnzRiQSlXw6ZnFLf//9d8XAoqOjBQKB/ETJb775puSXuKCgID4+nvk/Ly+v\n8Ar5+fkWFhZMhzwer27dujRN3759W+lsSwsLCyZFzZo1YxbxeDwjIyOl638XSX7yIkVRPB7v\n0aNHRa6WlJT06tUr5uqBMpmsyIAnTZqk9D5MTEzMzs7OyspKSkpKTU398OEDTdNpaWlpaWmK\nGZBIJMWFFx8fn5ubyzxu2LCh/OhMTU2zs7NLPbrKxLyl2Y4COEnbpnBkJQQSQpr8eOvz05gX\nUVFRBTJN7uJc91qEkGuZRfzeqxq0eQoHlwro6OCvCSE13AeGnL6dJSn0HpTlPr58aExnB0JI\nz01PNLhfFNCcdv78+VLq5WKsXLmyuD53796tOKNDfnKh0sUx9PT0VLlWdJcuXdLS0vr0Kf2v\nK4p4PF7t2rXJl1WpUChs2rQp81ggEOzevZum6bt37zJX1TA0NAwJCWEOYcmSJcwVOUolEAj0\n9fVLXU3dG9MoEgqF+/btk6d3z549ikutrKxKeH3PnDnD3CGSORwDA4Ndu3YprfPkyROlPSYm\nJm7YsKFwJMuWLfv06ZPSsZT8VYrBZFhu69atSiukpKS0atVKnqvRo0c7OjoyAQcHByuuKS/f\nGczNaHg8nvzdRVGUg4MD83jw4MGHDh1i3mbW1taXLl1S2m9UVJSLiwshRFdXNzAwMD09XemQ\np0+fXurRVY7k5GRPT0/mpZw5cybb4QD3lLOAvvmWHnmEbrCZrvUb3Xo7/eslOi2nXPFkJWwi\nhDRbcK/UNaW5JQ8NFgsFNIu4VEDTtHTrhK94zNW4RMb1GjXr2KlzN2/vr7w6eTR2NtMRMB8t\nXt9vLnYcpkxQQHPaixcvylbb/fXXX0V2mJiYqHg/P41Q8doR6hIIBFlZWW5ubvLhZJFIlJSU\ndOPGDaJaycvj8Qrf4UXjKIoSi8XMWD5N01evXlUMwNPTs7gXt6CgwNTUVPF7C0VRQqEwISFB\ncbXMzEzmUndMh4aGhhKJ5Pjx44UjYba1tLSU98nj8ZR6K1KXLl0Uw/jnn3+UVlC60yRRGPIX\nCoWKd2EcNGiQWu9YsVgsH1y3trZmZpbLderUSb4jHo8XHR1tamqqNPRe3Hg5TdMZGRk3btx4\n9+5dqRkoP6XrvZw6daoSdgpVSXkK6P2P6Drr6Vq/ffGvzXb6bel/fypaWGtrxffzhBcfmJbX\nuZ8rlEtDnAghBZ+eTendQsyjKJ7YzsnV98fADIXxwY8xF6b79q5vYy4WCPSNLNw79Pvt0EPF\nvaCAZhGX5kATwhu76fyb64dmB3zjWtv4zdN7ly7+c/bMmb8vXLzzOEbfvtHg72YevhH3z+bv\nVRpYg+rB0dFxzpw5JaygVEwwD/r379+/f/8i13/y5EnZ7sNSgqdPn5ZnBLc4EokkKirq4cOH\nzCRjmqbz8/MfP35879495ql8zeJOkVT91MlS2dvbGxgYyJ8qzquhaTovL08+Tty2bdtvv/2W\neWxsbLxmzZri+nzz5s2HDx+U7vxSUFDw6NEjxdUMDQ3Xrl3LVJkCgSAwMJDP5/fs2VPp2tuE\nEGbbwMBA5jsSj8dbsmSJtbU1Kc2KFSvkf20YOXKkl5eX0gpMzhUx+WcCVhx0X7RokZWVlfzw\nS31j5OXlMRmQyWSJiYlKU8bv3r0r35FMJnv48GFQUJBSGA8ePCiy53PnztWqVatVq1Z2dnYb\nN24sOYzyu3fvnuLBFs4YQAWJzyTzLhBpoVOa334ks/8pY5+us1asXzGEEFKr99wtW7YMsSh6\nJuFPndpvvpjed+SEGRP8jFOf71n1fZuA08yinOTjjRt0XfvHGaMmHXzHjO7zVZOYa8enDnSb\nfV0Dp4WABrBWupebrOBTWvK7uDdx75JTP2l2VtGXMAJdBURHR69fv75Hjx7Dhw/funXrrFmz\nFi5ceOvWrdOnTyckJBw9erRXr15Lly7Nysr6+++/mZqjOPHx8SpOflBdhw4dNNshg8/nZ2Zm\nuri4yEegBQLB27dvw8PD5etQFNWuXbvMzMzHjx8r3cpk5syZycnJzBQCJRRFNWjQoLiiirmr\ni3zNRo0anThxQiqVpqSkhIWFhYSERERE5OXl2draKo7CKg1zPnr06Ny5c+np6SW8Fvn5+YaG\nhkoj0Hw+Py4urvDKsbGxzMut2Hjv3j17e3t5GPJtk5KSzpw58+rVK9XfYxkZGefOnYuMjCxy\n6ZgxY0p4pRwcHBRXlr8Phw4dWmoBLRQK5YPr5ubmSiPQbdu2lb/6PB7v6dOnNE17enoqzn2/\nf/9+kTHXqlVLvi2fz09MTFQ9G2WgdMueY8eOVejuoOop8wj0hhvKY8/yfw6/0YkfyxiP0hSO\nIkegdWt8deP955kiuelXLUV8oX5j5umNya6EkCF/PJN3mHJ/NSHEtuNpeQtGoFnE4QK60qCA\nBiWbN29WnNggnyIsFAqZe/sptZfMw8MjMTGxffv2qqwsx9x/RKmRx+MxM2uZx5s2baJp+urV\nq5aWloQQsVgcFBTEHMLMmTOZ2sjZ2fnly5dMY2pqasuWLZnNhw8fLpVKaZq+du2a4pQVpvCy\ntbW9c+cOTdOFb8coFovDw8OL7F/JpUuXmOnLOjo6hScNq+jQoUOGhobywMRi8ebNm9Xq4fr1\n68yIbxm2VV1CQkLDhg3lWVL6ysTj8ZRO8WTExsYyWymV0UzeCCHe3t67d+9m3mkmJiaFpz3c\nv3/f3t6eECIQCFasWME0Pnr0iJlAz+fzf/311yIDzsnJUdppeHi4ZnOiJCEhwc3NjTnYgIAA\npW8CAKUqcwH9w6liC+hav9FX3pQxHlUK6F5HYxQ3mVfLiCcwZR7Hn/gzODg4peC/2dGS3FhC\niHnDw/IWFNAsougSr8PKCS/3jhi06mHF/b1v1KhRwcHBixYtmjdPw5eXVjwriHkhpk+fvmrV\nKg3ugs/nK73Ec+bMWbx4cakbHj58uLhbK7do0YKZRMt48+YN82GspHv37mFhYYQQDw+Pu3fv\nKi0dPnx4cHCwpaVlWlqa0iIej1f4umYcpZT8ipinARyl/e8N7Y9Qy/H5fPnFzvl8vvzqmdnZ\n2cz3JflqhoaGYrHY1NT0/fv3fD7fysoqLy/v3bt3zHV1xGJx8+bN69SpExERkZqaamFhkZqa\nKhKJbGxs9PX1zc3N4+PjExMT8/LyLC0te/ToYWtrm5KSYmJiYmRk9OHDh1evXp05cyYlJUVH\nR8fa2rpjx4516tRxdHTs0aMH85rKZLJly5YdOHAgKyurVatWa9euTUlJOXv27F9//RUfH9+m\nTZutW7cqzr9SXVZW1qFDh/Lz8/v27Sv/wi+VSo8fP56YmNipUyfmDFdVfPjw4ciRI4SQ/v37\nm5qaFhQUHD16NCUlpWvXro6OjuHh4Q8ePEhPT//5559DQ0MLz84q2ZQz5HBUsUv/HEha26nV\n32fZiZsNbCY2W3Dvzi9NCSGn2tj0jEh8nSupLeYTQi4Prddx/4vd77L9av43u2Odo+mMN5S0\n4L+PRVr6KSY6+lVMTMyrl+HHA3edeWXe8HDy488zDM/3cOh6+s21zLw2hho+M0dLHDhw4Jtv\nvvH399+5cyfbsRTCWumuOY9+a1WhB1JBI9DFvSJDhw7V1C6K+8AbMWJEyRuuXbu25LeNubk5\ns2ZsbGwJqylNewUAAC0xaNAgmUwmk8mUbmWveMkXhkgkSk5OVvcDKCUlRX65GGNjY2b6kFQq\n7dq1K9PI5/OLO1dbSVxcnLz+rlmz5suXL9u0aSOPbejQoYrRlmEEOvBWscPPtdfTyWW90qMq\nI9Anv7zSx9q6JvIR6ILsp3NHdDUV8QkhFE9oXcelxzejCUagtUbRt/SrPqRSaVhYWG5ubgnr\nxMTEEEI0OyZawmUc9u/fv3fv3vLv4ubNm3QxZXpISMiuXbtK2HbGjBkld56SksI8ULp6l5K4\nuLiS+wEAAFYcPHjw/v37Hz58ePHihWJ74Q+7/Pz8devWLVmyRK3+t2/fLh9hyczMXL169bZt\n2y5fvnzu3Dmmkabp+fPnf/3116V2tWnTpvfv3zOP379/P336dPltjyQSyb59+9QKrLCvXciG\nm+RTQRGLvB2JuXo3EtCYuW08V0amfj1z3bThfdwb1tUTULQ0gxe6g51ooJDqXkBfuHChb9++\nqqwZHx+vwf1Wwn10//rrrzJvq/q3heJqdAAA0HIpKSkqfrQxA0nqdl74qWKjTCZLTk4uQ1eK\nW2nkM8hSn6zpSiadIQVffjLXMyNLOpe/+7KQfHq8MjLVxHHVXyumyBtlBSqlCypHdS+gvby8\njh07VvII9MmTJ3ft2jVs2DAN7nfAgAHFFbiausLDihUrVq5cWeSiUucy1qxZU/51v+QeGjdu\nHBkZWcJqqLABALQNcw/Rli1bNmvWTJXTTpSukaKKnj17rl69mvkUoGmauVeUp6enoaFhdnY2\ns8d+/fqp0lWvXr22b9/OfO7QNO3r63vnzp38/Hxmirm5uTlzS9fyfOL0rEfqmpItd8iNtyQr\nn9gZkZ5OZIw70avw6+AXgxLwKEry6bmEJgKKEEJkBcmbJjCj9RU+AAcqYWXiiGZJ87JKvtZV\nOf3222+EkCtXrmi22yILZR6Pp8FdMNdeUCL/dVYCmUymNAeuhB6KW5NZTemKvIo0+50EAKCq\nYq4kWFy74piIjo6OlZWVubm5lZVV7dq1a9asqXjJIOZuSra2tt7e3syFdGiaPnz4sImJCdOJ\nQCAYPXr0+PHjzczMmBY+nz9//vyyfQaFhIQ0b97c1dV15cqV8suqXLlyxcvLq379+hMnTvz4\nUdVLxAUFBbm5ubm5uTGXEjp37pynp6ezs/OPP/4YFRU1aNAgJycnZmK0Nt3Ku1xzoJd5WhFC\n6ngOmjXvl0nf+jaz1LNqOcReLBDqN1r62/+YdTAHmkVVYQSaJ9I35uDppxKJpKJ3kZSUVLYN\nKYpSfZJJyWs2atSILn5I4I8//lAvMgAA0Kgi7xsVGBhY/p59fX19fX2VGtu1a/fPP2rfnmTc\nuHGK96rs0qVLly5d5E8PHDjA/C+fG10F/Hj+hmTypB2Hz66783cDt2adpu9eNWPglZ/zB649\nvmz5/2ZP/o7tAKs7bhfQMknatXMXIqNjMrJyZs+dlx0Tq1vbgVs3VwQAAICqR996Ak1PkD/t\ncT1BcTCpw77ndKGzH6e+/DD138d8ca15W47M2/LFCp0X//VB4Tq0XU7FYpYkWzhcbSZeCGxt\nb9++56AJU2bMmfczIeT+Qm+zOi02nH3DdmgAAAAAUGVxtYDOiv/TvfukOymiYVPmLZn2+f5e\ntj0Hmr1/MLVX452vM9kNDwAAAACqKq4W0KGDpyRLdXZFvv5j3SK/brZMY22fJQ8eHTQiWXOG\nhbIbHgAAAABUVVwtoFfcSzVrtN7XxUSp3bBO302u5qmRa1iJCgAAAACqPK4W0O8KpPp2tYtc\nZF1LT5qfULnhAAAAAEB1wdUCurupTsqdXUWdfCoLvpEsNu5Y6REBAAAAQLXA1QJ6zjT37Hch\nXWbtyJYpVNF0weEFPULeZdcfPZe90AAAAACgKuPqdaAb/3hy4lHnTSvH1AxZ4VH7AyHk21HD\nH105GfEiw7iez4nFHmwHCAAAAABVE1dHoCm+8YYrL4IXTXAUvL98PZkQsi147/0PpsOmrXny\naL+dqIhbngIAAAAAlB9XR6AJIRTfYOS8TSPnbUpLiH2XliU2Mqtdy5qrXwgAAAAAgCM4XEDL\nmdk4mNmwHQQAAAAAVA8YsQUAAAAAUAMKaAAAAAAANXBpCkd6UmK2VKbiyra2thUaDAAAAABU\nT1wqoH90r78tKUvFlWm6qLusAAAAAACUD5cK6MXnTzkHb56/7s8cKW3auFM7BwO2IwIAAACA\naodLBbRlI88Zqzy9zF55zLnpMiHoeEADtiMCAAAAgGqHeycRNp6whu0QAAAAAKD64l4BLTLy\nbGZnZayDew0CAAAAAAu4NIVD7k5cItshAAAAAEA1xb0RaAAAAAAAFnFyBJoVz54909HRYTsK\nQggpKCgIDg52cHDg8fD9p1xkMtmLFy+cnJyQyXJCJjUFmdQUZFJTOJTJhw8fEkIiIiLYDgQ0\nRptfTRTQpRMKhYSQMWPGsB0IAAAAlGTt2rVshwAapqury3YIRUABXbrhw4dLJJKcnBy2A/ks\nMjJy7969np6eDg4ObMfCbbGxsVeuXEEmyw+Z1BRkUlOQSU3hUCZpmk5ISJBKpWwHUrTk5OSo\nqChOZFKr6OnpLV68mO0oikID14SGhhJCQkND2Q6E85BJTUEmNQWZ1BRkUlOQSU1BJqsYbZ/S\nBAAAAACgVVBAAwAAAACoAQU0AAAAAIAaUEADAAAAAKgBBTQAAAAAgBpQQAMAAAAAqAEFNAAA\nAACAGlBAAwAAAACoAQU0AAAAAIAaUEBzD3NTeO28NTy3IJOagkxqCjKpKcikpiCTmoJMVjEU\nTdNsxwDqkUqlf//991dffcXn89mOhduQSU1BJjUFmdQUZFJTkElNQSarGBTQAAAAAABqwBQO\nAAAAAAA1oIAGAAAAAFADCmgAAAAAADWggAYAAAAAUAMKaAAAAAAANaCABgAAAABQAwpoAAAA\nAAA1oIAGAAAAAFADCmgAAAAAADWggAYAAAAAUAMKaAAAAAAANaCABgAAAABQAwpoAAAAAAA1\noIAGAAAAAFADCmgAAAAAADWggAYAAAAAUAMKaNZ8er/b3d39QXaB5rqUnft9bqcmdQzFOjXt\nG46YsT4hX1ZZu2ZBxR+FKvlUNefaTDsyWTmRVCzWMykrSA6aO66lc21jPZG+iUWLzj5bz7yo\nsGAqEOuZzH57efrwno5WZmKh2MzKqefwaRffZFVYMBWI9Ux+sWp+0tRxAYuOx1VYMBWI9UyO\nsjKgCjGps7TC4oHS0MCSsIAGhJBrmXma6jB0QgtCiL6N+2A/367N7QkhZq4jMiSyStg1Kyr6\nKFTJp+o512bakMnKiaSisZtJaUHyyIamhBBDhxbDR387oFs7MY+iKL7/1ocVFE/FYTeTOSl/\n19cTUhTVqEPfMd+N7tmhASFEoFP7aFJ2BcVTcbTnp5um6RC/+oSQZgvuVVAwFYr1TFqL+AKd\nuh5f6tR3RwXFA6VCAc2CrHcv9q2dIKAoDf40ZsYE8inKqO7IhDwp0xIyrhEhpNO6RxW968pX\nCUehSj5VzLk205JMVk4kFUobMvlgWWtCSK0+yz7++6H77tZeWzGfL7J8nF1QESFVBG3I5MFe\nDoQQvx135Jtc3dCTEGLT8Y+KiKeCaEMmFcWdmsYM23GugNaGTOZ/vEsIceh1viL2DmWDArqy\ndaplpvgXAE39NJ71qUsImfYgRd4iyX1tJuTpmg+o6F1Xsso5ClXyqco62kx7Msn1d6aWZHK6\nnSFF8a9mfLH3KxMaEkL6X06oiJA0Tksy6WYgEhk2lypuI/1UQ8gXG3tWRDwVQUsyKZeXecNZ\nT2jSxIJzBbSWZDLzzRJCSOtNjyti71A2mANd2UZO/3n16tWrV6/+xkKvyBVoacYfyya1behg\npCuuae/U1Xf62aiMUrsNvJDIE5gsaPTfjzpfXHtWLaOclMO3sgpU3DUnqHIUZcuhIlXyqco6\n2kx7Msn1d6aWZPJCep7IsGVbI5HiVrZdrAghyc8y1TsklmhFJul8+07d+n0d8MWnI08s5hGK\nEhXqTEtpRSb/I1vYtW+MwP1UsJfaR8I2Lcnkx9dXCSF1OtQs63FABWC7gq++dtQ3I4W+zsqk\nWRM9rQghZi5thviP6de1rZhH8UWWqy8mltCVTJot5lF6NYcotV/8xpEQMvt1hiq75pzijkKt\nHB6fMHLU5CuFeig9n+rmXJuxm0lVIuEKdjP58MGDyMdvlFY4MqAOIWTU/eRyHVil0573JOP+\n3m8JIU7DT5T1gFijDZm8+1sviuIvvJaUGjWMcG0EWo7dTN6Z15QQMm3b6t6tm1gYig3NrNr3\n8T8QkaS54wO1oYBmTZE/jQ+WexJCmk/dnffvmQNJN/bYiPkiA/fUgmJPTSv49JQQYlx7sVL7\n3QXuhJBBj1OU2rlepjCKOwq1cri2rkmNBvuUGlXJp7o512bsZlKVSLhCezLJSLyy1oDPExu1\n/VD8bw/tpCWZfHPilyGD+rdrWocQ0rTvFPn8VA5hPZOZMXuNBTzXcYdpmq6SBXTlZPJ4G2tC\nCEVRru17+Y0Y0sGjAUVRPL7e7LA4TR0gqAtTOLTLpOW3xEbtLqzyFVGfWyxbDg8d65yfdW95\nbLF/EpIVpBBCeHwjpXahgZAQ8imDA9MJNKhsOVSkSj6rQ84rJ5PVQeVnkpZm7Fkypl7HGTm8\nGqv+PmoioEiVUMmZzEl8fP/ho+cv4imKxyvIfpmWV/5D0BKVk0lakja6/XcSiz4XNvbVYPBa\npXIyeTONGBqZTw++/fDyid279l269fT5yaVCOmf1oG5JHLx2atUgYDsA+E9B1p1L6XkG1i6h\nwTsU29P1eYSQm7dTiaMJLc1YuXqLfJHIwG3qhO48gSkhRCb9WKjDAkKI2LAavcqq5LDUTlTJ\nZ5XPeaVlssqr/ExGn9ny7biZl2M+mjbw3vHnXp8mZqRKqPxM1h974OlYQuj88D8Wdhu5zLtp\nwofEEyLufxmptEwem+x1KEG27ekuc0HVHK2rtEz+GpXw65dLHXv8FNIt6JvTT2c+TNndHHOj\nWVAtPsC4QpITTQjJStw2duy2wktzEnIIITLJh59++kneaGA1duqE7nyd2jo8SpITpbTJx6iP\nhBAnfWEFBq1lVMnh/wIDJTTNtIRn5uXyz2zenMo85QmMxgf4qZLPKp/zSstklVeZmZRJ0tYE\n9Ju544rQoO709bsXTeyny+Op2v00AAARnElEQVR+ufcv1t6TlKi975Kd23YNvXRyeVzm/FrK\nI4WcUzmZTI1c8nXQw/a/Xh1Vz7jijoVd7P6ebDWpPjn9JvpKMkEBzQq255BUX4UnVOWlXyKE\nWLU8Vobe+tXQ5Qstcr6cobehnikh5HqhOVtcn2nKKPIoVMlhCSWFQKcus44q+VQr59qM9UyW\nHAmHsJtJmTRrSntrQkiTQXOefczX8LFVLhYz+TH+t/79+0/Z/UKp57vz3QkhAyKrwumYlZPJ\n6OD2xfVACLFuHabpY61YrP50SyUSibTQiQzxf3sTQjx3PCv/0UEZVM2/qnCUyNizoZ4w81Ww\n0oSmFyFLpk6dejUzv4RtJ3S0khYkr3yVLm+RFaSseJOpa96/tSFnLr1Ufqrk8JPC7yGlUzoK\ncl4y66uSz6qd88rMZNVWaZm8v9z7t/BE90l7HxxYUt+gCo7uV04meULzI0eO7F13VWnvL8Pf\nE0Kam4gr8hArSeVk0siph/+Xhg2oSwip0bSvv7//N71sK+14K07lZDIn5bBAILBsulZp7/eD\nnhNCvDpZVuQhQvHUq7dBc4r8OntpoishpOuCo/IvopmvjjvpCsRGbbIKf/1UkPk6kKIoi+az\n5V9hLy5uTwjp+FsRd4Ti+jgfo7ijUCuHRZ4TTauWT7Vyrs1Yz2SpkXAFq5mUeBiKhPqNOHfB\njSKxmklZ7xq6PL7httv/DTa/u/G7kYAnNvbMLvH3sBbSnp9uuopehaNyMjnUxoCi+LOORsk3\neXt5k5GAp2/tUyV+4jkJBTRrivxplOa9HehsQgixqN/cZ9Q4P5/uJgIej2+w6ELpNxLbP86N\nEGLTesDs+fMDBnlSFGXq4p9W1M8W18sURnFHoVYOi/t1RquWT9Vzrs20IZMlR8IVLGYyJ/U4\nIUSgU6dTUX56kqbxg61Q7L4n30Us1+fzKJ5u2x6Dxowd2aNTCzGP4glMV1wu6Xr82kl7frrp\nKlpAV04m0x5ttxHzKYpq7NVr5Cjfru2aCihKqFdv7wsu3XOgikEBzZrifholeXEbZ41yr2ut\nKxTWrFXfq9/Yv+68V61LydE101rWs9MTimpYOw75YUV8MVct5XqZwijhKFTPYQm/zlTLp6o5\n12bakclSIuEEFjOZ/nJqCX9p7MW1Gy6w/p5Mvhs69utOtjXNhHyRqWXdHkMnn3ryobxHxQbW\nM6moShbQdGVl8mNM+Az/fk425mK+0MzKqf/oOREJ2eU9KigHiv735FAAAAAAACgVTiIEAAAA\nAFADCmgAAAAAADWggAYAAAAAUAMKaAAAAAAANaCABgAAAABQAwpoAAAAAAA1oIAGAAAAAFAD\nCmgAAAAAADWggAYAAAAAUAMKaAAAAAAANaCABgAAAABQAwpoAAAAAAA1oIAGAAAAAFADCmgA\nAAAAADWggAYAAAAAUAMKaAAAAAAANaCABgAAAABQAwpoAAAAAAA1oIAGAAAAAFADCmgAAAAA\nADWggAYAAAAAUAMKaAAAAAAANaCABgAAAABQAwpoAAAAAAA1oIAGAAAAAFADCmgAAAAAADWg\ngAYAAAAAUAMKaAAAAAAANaCABgAAAABQAwpoAAAAAAA1oIAGAAAAAFADCmgAAAAAADWggAYA\n0IDnfy5u5mQrFun9FJPBdizldb6HA0VR1z/mM09PuFtSFBWTJ62g3V0d1YCiqLAPuRXUPwCA\nxqGABgAoL0lOdBu/BY+SzL6fPt3TSMx2OKB5mbHzTE1Ne+57yXYgAKAVBGwHAADAeXnpf6cW\nSJtM2blumQfbsWie15FrUbkSOxGf7UDYRMty09PTs/JlbAcCAFoBI9AAwLLcT7k0G/uV5Wmw\nGpIRQgT6Kg1JaGq/n1LzlVoqKJP6Do7Ozs4CqgK61j4afVcAQJWFAhoAWHB5aD2KorLehPVt\nWktXX1coNnD08N52NYnIcvcu+q5xLUsdodiyrtvUDeeVNqSlGX8sm9S2oYORrrimvVNX3+ln\no76Yc5wVe3GGXx9nWwsdodDAuGazjv3XH36ktF9JTvTUPi319HQEfB37eo39ZgZlSkuqPAuy\nnq34YZirg5WuUFzDqk7P4VMvvvooX3qqjY2BzURCyN0F7hRFTXyZXtzxlrzfkvdCCLkwoC6P\nr0cIOfjraHtz/WYzbpU5kyVnScmpNjbyOdCOukKqKFE5EhVfoIyoM9997WVdw1BsYOraof//\nzr8qIfOM/Iwnvwb41Le1EIv07ZyaB8z7Pbngiyq35NQdaWRBUVTGly+xn6WBrmkXFV+doHpm\nJnXXEELC/etTFLU5MZtpDw9Z2qO1q6mhrkjXwMmt/exNJ1n5KggALKABACrdpSFOhBBPMx3j\n+p3GT/9/e/ceFlWZxwH8d85cYUacGWUAlZuoJKKkpAGS4K1FbQMtQzdJWMhsvSSpFOJTaJFo\npo+axaM+iZa6mZfHaxor6qYprtcSNSXUSFJuchkGBmbm7B+j44BzO+Jmut/PX/Cew/ub83vP\nH1/POO+kJY4ZQERCSZe0l7qL5YEJk2dOTRotF7BE9O6ZcvNfGQ2aqZGeRKTqGT4uMTl2eISE\nZQRij8WHfjedoC3b6ScVMozomZgxyW9MGjd6qFLIMgz77g83LevOHKAWybuPTZo6e1pKL6WE\niIKS99p6qc31P0Z7yYioS5+I8UkTh0f0ETCMUOqzrqjGdMKv29cvWziOiHxeyMjJyfm+Rmfr\neu3UdViF47j8OH+GdTm+YLi4nf/LiW8u/Prqg3XSYZfyYnyI6IfaOxeyN8yLiK426jmOW/bh\n/EwLc9PiGYYRSrxvNhmcWaDbl9Z4iQVE5BcyMH58XEhXBcOKR4SoiGhPVYPV/utqCyLdXRiG\nDQ4fnpScMLiPmojc+09uNDq7QNuDOhJRtd5oOe0EtUyqGOrk6hRuWrv0w2FE1G3i/JycnPP1\nzRzHFWT9hYhc1L3iE5JTEuIDVRIiGrbgtK0bCQCeJAjQAPAImCKLe7/Z5lizabQfEYlcnyoo\nvxOkrnwVS0SBiUfMf3UuO5KIQlPX6+5moZsFX3WSCMTyvpXNRo7jCt4KJqJxG342/0nF2cVE\n1Dlqn2Vdlw5DC8ruVGmsPuohFohkvW291C1xfkT0fNY+88iVnXNZhnHzfd08oin9lIj6ZZ6x\nf7126jpTJT/On2EEHT1Hnq9raksnHXbJToBuwdAwK8yDYQTp35aYBhwtkPHVTnIimrTykOmo\n0aBZPOEp09McWwF61ZDORDT968K7A/pV4wOIaHxeiZOtczJA278rqotnEtFzuZfvDhi7SoXi\nds+Y26KrPakSsVLlMKtXAQBPGARoAHgETJFl3tV7j1dvHIohor7v3XuA11C5h4h8YvLMI1EK\nicRtYG3LJHRkShARzS66zXHcb7u/zs3NrWg2mI/qG68TUceg7ZZ1R+24ZjnDXB83Vqi0+jqN\n+mqlkJWqYppb1ORW9FMT0aYyrelXJwO0rbpOVsmP8yeikbtaTPIAnXTYJScD9NbpoUQU9d4B\n84j9Baq7sYKI1KFLLY8amm76SYW2AnRzfaGEZRQBcywHGyq2hYWFjc0862TrnAzQ9u+KVgHa\naNAIGcZFNarGYtqis6dPnTp3/1UAwJMHu3AAwCPzjJvY/LNIISIidbTaPMKKlJYnN2tOHa7W\nyb16bs79wnK8WsYS0YmTlRSg6DzqlYlEnEF79eLl4mvXrhX/8v2uz+6vGx/mbvmrSmjz0yDa\n8s239Ubf8JmtPkL3/LQelFS2oahmnLuLExfqoC6vKmP7t5jEhFcnneySfVc2Tn5p+anOw+Yf\nmDfENOJwgarkO4ioV3qs5VFW5JHZXZH4U4XVKprSlTojFzThZctBaYfRx46NNv38EBfI+buC\niBhWlj2406z8Pd6BzyX+LTZqYERY+ICAkL5O1gKAxx0CNAA8Ovdt7MCwNvd60DdcJiLN72tS\nUtbcf7ShtIGI9NpLmW9O/+yf+bebDAwr8vTt9nT/aKLWH1PrIHL289MG3XUiatfdrdW4W083\nItKUaCncyZns1eVVxVtibTs5Xp10rkt2VF/KfXbiapnXyKO755hfjcMF0sq0RKTo2foy/Xq2\nJxsBWnf7Ot3tg1UPcYGcvytM3t7/o2phZs66zcs/SFtOxLDi3tGj5yxaER9q5V84APCEwS4c\nAPB4EIg7E5HngJ1W300rSA0moozwyKz1eYNnLD5yrkij05UWX9izcUmbikp8iajuSl2rcU2R\nhohcO/F4/PywqtgOxs5qY5eaNedGhk+uFXhtOLHZ1yLNO1wgub+ciKov1baasP6Wze8gFLmp\niEj7q9bWCQ+8QHWGtu5WxwhVSRnLCy7frC65uHvT6hmvPf/L4W9ejQj+vrb19oIA8ORBgAaA\nx4O4fWSQq6i2OLdV8Cn6Mis1NfVobZNeW7jox0pFwMdbF84Y2CfAVcgQkbG5vC1FXTuOVQjZ\nsmNLW32N9YEVPxNRfI/2bZn8D65i0sYuccb6twcNO16jn7XtWGwXmeUhhwuk7P0yERVm7245\nY9Ois9YfPxOR3DOFYZjidfssB5vqjglYVh2ygfi0rkZ/73UZGovzqnXOXK8tjZU70tPTl2y9\nTkTtuzw1alzKkrW7/j2vr6GpLLuwqi0zA8BjAQEaAB4X7Od/D9RWbIuZt9Mchequ7h7xRubn\nXxQ8LRcRI2QZRq+9or+7Ga+xufzTKWOIiMhgbULHGKFi1Qjvhqo9sR8fNA8W782ccqLMzSfl\nNbXrA1/MH1/FXKwtXdo4OfzTMxWRGfuyR3rfd9DBAsk8X0/oIi8/+dbU1UfvHOb069OGHK6x\nmWXF7Qe9H6yquvBOxi7zd2hzW1KTjRz37Nxwcq51LmoJEWXll96doGnt9Be1D/QE2ngvhXPZ\n2dnvTZtbaTFy4kwVEfX2eDjvSwDAnxn+DzQAPDYiP9n/Ul6vrZmxnhtDowf2l2qu7dr+XS3n\nOm/vVhnLkEtg1kCP9COregyqeiW6V8OtX47s3Fbq+6K35OLN6+8vWFaZ/takBygat2nHoICI\nPWlD/DdHR4V2r/j59L7DpxmJ72cHP3mIl/bHVCEiYRu6VHk+dcLqn4QSn6GSgqysAstD3ZJm\nxHeSOVggouV5S/NCJq+cFPndqugBvTyK/nPwxMXKV2cFbVh8wVbRtH99+U23uAWxgfujYvr1\n9Cw5vX9fwW+q4KRNY/xNJzhs3dNZ45nIT9a8GFyRmBikNJw8uGX/qYrQduJCPn1jRR5EVLho\nzrwbvYfPmBPRIe6jwZ3mHPzK1+98TFQ/D5nx4rFvD56/5RHx9of+D/MdAwD4k/pfbvEBAGCd\naeMwy53Lys7+lYhiDt0wj+hqf6CW29hxHKfXlax4J6lvVy8XkUjt02NwbMrWU2X3jjZe/+CN\nWH+1m9hF2Sds6PRFW3RG7kDGGIWLqJ1nP6t1OY5b0lVhaxs7k6baC1lT4oO83aVCkcLdN2b8\njEPFdZYnOLmNnf26DquYtrHLr260P7PDTjrskq1t7Ewb5Fk16vidL2Gxv0Acx90u3JsSF+Wh\nlAul7br3H7H82yumaW3tA81xXH3p8bSEF/w9lCKhxN03OGH20t91BssTHLbu+LrM50ICla5C\nImKFin8sO7I9qGOrbewc3BWGhoyx4QpXkdhVue5WPcdxhqbylenJfXt0cRULhFJZ197h0z5Y\nW9lqOz0AeEIxHIdvHgUAgP8HxvKSqwJ3P5XU2k4mAABOQ4AGAAAAAOABHyIEAAAAAOABARoA\nAAAAgAcEaAAAAAAAHhCgAQAAAAB4QIAGAAAAAOABARoAAAAAgAcEaAAAAAAAHhCgAQAAAAB4\nQIAGAAAAAOABARoAAAAAgAcEaAAAAAAAHhCgAQAAAAB4QIAGAAAAAOABARoAAAAAgAcEaAAA\nAAAAHhCgAQAAAAB4QIAGAAAAAOABARoAAAAAgAcEaAAAAAAAHhCgAQAAAAB4QIAGAAAAAOAB\nARoAAAAAgAcEaAAAAAAAHhCgAQAAAAB4QIAGAAAAAOABARoAAAAAgAcEaAAAAAAAHv4LeH2Y\neBhE1AIAAAAASUVORK5CYII=",
"text/plain": [
"plot without title"
]
},
"metadata": {
"image/png": {
"height": 480,
"width": 480
}
},
"output_type": "display_data"
}
],
"source": [
"options(repr.plot.width = 8, repr.plot.height = 8)\n",
"# Plot dispersion estimates\n",
"plotDispEsts(dds)"
]
},
{
"cell_type": "code",
"execution_count": 163,
"id": "9a7a3320-1662-4457-a687-b99b7193a46e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"'bthal'"
],
"text/latex": [
"'bthal'"
],
"text/markdown": [
"'bthal'"
],
"text/plain": [
"[1] \"bthal\""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"levels(cluster_metadata$group_id)[1]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "dd26d468-e36f-4bfa-9cd1-8aec2e0dc620",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 164,
"id": "51adab74-60e6-409a-be8f-da6515585d38",
"metadata": {},
"outputs": [],
"source": [
"basename <- 'bthalcombo_v6b'"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "00baa96b-2c34-4d50-b2fe-14d38fda978c",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 165,
"id": "bf5eaab6-971d-48e5-ac50-4c29bdf876e5",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"'bthal'"
],
"text/latex": [
"'bthal'"
],
"text/markdown": [
"'bthal'"
],
"text/plain": [
"[1] \"bthal\""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"'healthy'"
],
"text/latex": [
"'healthy'"
],
"text/markdown": [
"'healthy'"
],
"text/plain": [
"[1] \"healthy\""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"using 'ashr' for LFC shrinkage. If used in published research, please cite:\n",
" Stephens, M. (2016) False discovery rates: a new deal. Biostatistics, 18:2.\n",
" https://doi.org/10.1093/biostatistics/kxw041\n",
"\n"
]
}
],
"source": [
"# Output results of Wald test for contrast for bthal vs healthy ctrl\n",
"levels(cluster_metadata$group_id)[1]\n",
"levels(cluster_metadata$group_id)[2]\n",
"\n",
"contrast <- c(\"group_id\", levels(cluster_metadata$group_id)[1], levels(cluster_metadata$group_id)[2])\n",
"\n",
"# resultsNames(dds)\n",
"res <- results(dds, \n",
" contrast = contrast,\n",
" alpha = 0.05)\n",
"\n",
"\n",
"write.table(na.exclude( res[order(res$padj, res$pvalue), ] )['stat'], \n",
" file = paste0(resfolder, prefix, \"_\", basename, \"_strict_\", cluster, \"_population_\",\n",
" levels(cluster_metadata$group_id)[1], \"_vs_\", levels(cluster_metadata$group_id)[2], '.rnk'), \n",
" col.names = FALSE, quote = FALSE, sep='\\t')\n",
"\n",
"\n",
"res <- lfcShrink(dds, \n",
" contrast = contrast,\n",
" type = \"ashr\",\n",
" res=res)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f797dae9-6b83-49ad-b015-387bf1c9a3d0",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 166,
"id": "9ea4a3b5-7ef4-455a-b829-8f7722ac40b8",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
},
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A tibble: 20098 × 6\n",
"\n",
"\tgene | baseMean | log2FoldChange | lfcSE | pvalue | padj |
\n",
"\t<chr> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> |
\n",
"\n",
"\n",
"\tRP11-34P13.7 | 2.99155718 | -0.015119181 | 0.28111206 | 8.731060e-01 | 9.329392e-01 |
\n",
"\tAL627309.1 | 22.60077568 | -1.227144537 | 0.32775885 | 2.522408e-06 | 2.257008e-05 |
\n",
"\tAP006222.2 | 91.70598065 | -0.033555573 | 0.11219241 | 6.974050e-01 | 8.242795e-01 |
\n",
"\tRP4-669L17.10 | 7.35390445 | -0.048325373 | 0.23290658 | 6.377485e-01 | 7.823921e-01 |
\n",
"\tRP5-857K21.4 | 0.74407078 | -0.032282160 | 0.37103926 | 6.899308e-01 | NA |
\n",
"\tRP11-206L10.3 | 47.38577403 | -0.152052407 | 0.15418887 | 1.439250e-01 | 2.946863e-01 |
\n",
"\tRP11-206L10.5 | 0.58319449 | -0.076262568 | 0.42498039 | 3.634093e-01 | NA |
\n",
"\tRP11-206L10.4 | 1.69391513 | -0.188540558 | 0.48309428 | 1.092059e-01 | NA |
\n",
"\tRP11-206L10.2 | 109.58838919 | -0.167582879 | 0.11563292 | 6.155752e-02 | 1.566482e-01 |
\n",
"\tRP11-206L10.9 | 54.92169293 | 0.125676937 | 0.14761659 | 2.130814e-01 | 3.874942e-01 |
\n",
"\tFAM87B | 0.49082488 | 0.060814885 | 0.42684568 | 4.383804e-01 | NA |
\n",
"\tLINC00115 | 42.67285724 | 0.006267249 | 0.14104277 | 9.480207e-01 | 9.722813e-01 |
\n",
"\tFAM41C | 50.31498864 | -0.294792924 | 0.17927643 | 1.414777e-02 | 4.850070e-02 |
\n",
"\tRP11-54O7.1 | 1.90095325 | -0.299167354 | 0.58613327 | 4.399670e-02 | 1.204016e-01 |
\n",
"\tRP11-54O7.2 | 0.22710652 | -0.054179199 | 0.47501439 | 4.251261e-01 | NA |
\n",
"\tRP11-54O7.3 | 0.07267561 | -0.015588569 | 0.46114587 | 7.934079e-01 | NA |
\n",
"\tSAMD11 | 2.46632043 | -0.086319189 | 0.32363785 | 3.899462e-01 | 5.786441e-01 |
\n",
"\tNOC2L | 348.43964532 | -0.007669467 | 0.06916003 | 9.007005e-01 | 9.472618e-01 |
\n",
"\tKLHL17 | 1.64281441 | 0.266086804 | 0.60000811 | 5.277933e-02 | NA |
\n",
"\tC1orf170 | 0.47965720 | 0.001794885 | 0.37983466 | 9.811923e-01 | NA |
\n",
"\tHES4 | 20.07572452 | -0.715063769 | 0.37346300 | 8.571150e-04 | 4.486294e-03 |
\n",
"\tISG15 | 854.02479443 | -1.279604871 | 0.04887730 | 3.672874e-152 | 5.541278e-150 |
\n",
"\tAGRN | 4.71535116 | -0.169730646 | 0.32575177 | 1.599468e-01 | 3.187238e-01 |
\n",
"\tC1orf159 | 26.96764798 | 0.015483768 | 0.17082611 | 8.784968e-01 | 9.355704e-01 |
\n",
"\tTTLL10-AS1 | 1.22841261 | -0.017928696 | 0.32710770 | 8.371750e-01 | NA |
\n",
"\tTTLL10 | 18.12501843 | 0.509027780 | 0.36666049 | 5.815968e-03 | 2.302366e-02 |
\n",
"\tTNFRSF18 | 8.60925127 | -0.634564134 | 0.50774337 | 4.572704e-03 | 1.883409e-02 |
\n",
"\tTNFRSF4 | 24.53252635 | 0.762210096 | 0.35471907 | 4.228333e-04 | 2.396398e-03 |
\n",
"\tSDF4 | 472.32399683 | 0.069880816 | 0.06055543 | 2.035592e-01 | 3.755427e-01 |
\n",
"\tB3GALT6 | 130.51684377 | -0.067955025 | 0.09900480 | 3.956081e-01 | 5.837745e-01 |
\n",
"\t⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |
\n",
"\tLSS | 4.091658e+01 | -0.18435526 | 0.16986562 | 9.434001e-02 | 2.171153e-01 |
\n",
"\tMCM3AP-AS1 | 1.610111e+02 | -0.15898076 | 0.09750434 | 4.672600e-02 | 1.263447e-01 |
\n",
"\tMCM3AP | 1.807163e+02 | 0.17234895 | 0.09780746 | 3.190823e-02 | 9.379293e-02 |
\n",
"\tAP001469.7 | 6.991518e-01 | 0.14298495 | 0.47883897 | 1.609131e-01 | NA |
\n",
"\tAP001469.9 | 1.998439e+01 | 0.01438636 | 0.18006404 | 8.877670e-01 | 9.400165e-01 |
\n",
"\tYBEY | 3.000054e+02 | 0.03469876 | 0.07097657 | 5.799873e-01 | 7.423226e-01 |
\n",
"\tC21orf58 | 2.367949e+02 | 0.45908168 | 0.09658819 | 9.828140e-08 | 1.076208e-06 |
\n",
"\tPCNT | 2.479730e+02 | 0.02709810 | 0.07876773 | 6.902535e-01 | 8.198506e-01 |
\n",
"\tDIP2A | 3.011729e+02 | -0.09330315 | 0.07321433 | 1.457901e-01 | 2.976449e-01 |
\n",
"\tS100B | 9.127741e+00 | -0.23479983 | 0.32633905 | 8.173407e-02 | 1.944197e-01 |
\n",
"\tPRMT2 | 8.062355e+02 | 0.34314201 | 0.05084570 | 1.561148e-12 | 2.683264e-11 |
\n",
"\tMT-ND1 | 2.562677e+04 | 0.10047139 | 0.01721054 | 3.703488e-09 | 4.744075e-08 |
\n",
"\tMT-ND2 | 2.875085e+04 | 0.23162437 | 0.01399485 | 4.718062e-62 | 3.447359e-60 |
\n",
"\tMT-CO1 | 6.246561e+04 | 0.09257379 | 0.01411650 | 4.033111e-11 | 6.270564e-10 |
\n",
"\tMT-CO2 | 5.367210e+04 | -0.06736583 | 0.01411072 | 1.540597e-06 | 1.428713e-05 |
\n",
"\tMT-ATP8 | 1.743629e+03 | -0.07800264 | 0.03260075 | 1.337263e-02 | 4.623248e-02 |
\n",
"\tMT-ATP6 | 8.540176e+04 | -0.19316263 | 0.01152085 | 1.631049e-63 | 1.219097e-61 |
\n",
"\tMT-CO3 | 5.102515e+04 | 0.14152286 | 0.01695529 | 3.650074e-17 | 8.294881e-16 |
\n",
"\tMT-ND3 | 4.428054e+04 | -0.41553586 | 0.01247374 | 1.620253e-244 | 4.258129e-242 |
\n",
"\tMT-ND4L | 4.906721e+03 | 0.07738468 | 0.02330002 | 7.226743e-04 | 3.855683e-03 |
\n",
"\tMT-ND4 | 3.866942e+04 | -0.15390107 | 0.01579053 | 9.138922e-23 | 2.644931e-21 |
\n",
"\tMT-ND5 | 1.376059e+04 | -0.28464121 | 0.01839183 | 9.313590e-55 | 5.836755e-53 |
\n",
"\tMT-ND6 | 1.293669e+03 | -0.63592710 | 0.03915829 | 6.918687e-61 | 4.922842e-59 |
\n",
"\tMT-CYB | 4.372421e+04 | -0.14533812 | 0.01414267 | 4.554640e-25 | 1.441035e-23 |
\n",
"\tAC145212.1 | 3.594428e+01 | 0.29027568 | 0.21470727 | 2.490187e-02 | 7.712433e-02 |
\n",
"\tAC011043.1 | 2.124221e+01 | -0.07682709 | 0.18214009 | 4.641872e-01 | 6.482786e-01 |
\n",
"\tAL592183.1 | 1.076555e+03 | 0.66764674 | 0.04814754 | 2.135283e-45 | 1.155890e-43 |
\n",
"\tAC011841.1 | 7.541778e+01 | -0.20423134 | 0.14049254 | 4.442326e-02 | 1.213178e-01 |
\n",
"\tAL354822.1 | 4.665861e+00 | -0.18739254 | 0.34017720 | 1.327471e-01 | 2.782686e-01 |
\n",
"\tSRSF10-1 | 7.473685e+01 | 2.88330425 | 0.26411878 | 1.906015e-29 | 6.994730e-28 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A tibble: 20098 × 6\n",
"\\begin{tabular}{llllll}\n",
" gene & baseMean & log2FoldChange & lfcSE & pvalue & padj\\\\\n",
" & & & & & \\\\\n",
"\\hline\n",
"\t RP11-34P13.7 & 2.99155718 & -0.015119181 & 0.28111206 & 8.731060e-01 & 9.329392e-01\\\\\n",
"\t AL627309.1 & 22.60077568 & -1.227144537 & 0.32775885 & 2.522408e-06 & 2.257008e-05\\\\\n",
"\t AP006222.2 & 91.70598065 & -0.033555573 & 0.11219241 & 6.974050e-01 & 8.242795e-01\\\\\n",
"\t RP4-669L17.10 & 7.35390445 & -0.048325373 & 0.23290658 & 6.377485e-01 & 7.823921e-01\\\\\n",
"\t RP5-857K21.4 & 0.74407078 & -0.032282160 & 0.37103926 & 6.899308e-01 & NA\\\\\n",
"\t RP11-206L10.3 & 47.38577403 & -0.152052407 & 0.15418887 & 1.439250e-01 & 2.946863e-01\\\\\n",
"\t RP11-206L10.5 & 0.58319449 & -0.076262568 & 0.42498039 & 3.634093e-01 & NA\\\\\n",
"\t RP11-206L10.4 & 1.69391513 & -0.188540558 & 0.48309428 & 1.092059e-01 & NA\\\\\n",
"\t RP11-206L10.2 & 109.58838919 & -0.167582879 & 0.11563292 & 6.155752e-02 & 1.566482e-01\\\\\n",
"\t RP11-206L10.9 & 54.92169293 & 0.125676937 & 0.14761659 & 2.130814e-01 & 3.874942e-01\\\\\n",
"\t FAM87B & 0.49082488 & 0.060814885 & 0.42684568 & 4.383804e-01 & NA\\\\\n",
"\t LINC00115 & 42.67285724 & 0.006267249 & 0.14104277 & 9.480207e-01 & 9.722813e-01\\\\\n",
"\t FAM41C & 50.31498864 & -0.294792924 & 0.17927643 & 1.414777e-02 & 4.850070e-02\\\\\n",
"\t RP11-54O7.1 & 1.90095325 & -0.299167354 & 0.58613327 & 4.399670e-02 & 1.204016e-01\\\\\n",
"\t RP11-54O7.2 & 0.22710652 & -0.054179199 & 0.47501439 & 4.251261e-01 & NA\\\\\n",
"\t RP11-54O7.3 & 0.07267561 & -0.015588569 & 0.46114587 & 7.934079e-01 & NA\\\\\n",
"\t SAMD11 & 2.46632043 & -0.086319189 & 0.32363785 & 3.899462e-01 & 5.786441e-01\\\\\n",
"\t NOC2L & 348.43964532 & -0.007669467 & 0.06916003 & 9.007005e-01 & 9.472618e-01\\\\\n",
"\t KLHL17 & 1.64281441 & 0.266086804 & 0.60000811 & 5.277933e-02 & NA\\\\\n",
"\t C1orf170 & 0.47965720 & 0.001794885 & 0.37983466 & 9.811923e-01 & NA\\\\\n",
"\t HES4 & 20.07572452 & -0.715063769 & 0.37346300 & 8.571150e-04 & 4.486294e-03\\\\\n",
"\t ISG15 & 854.02479443 & -1.279604871 & 0.04887730 & 3.672874e-152 & 5.541278e-150\\\\\n",
"\t AGRN & 4.71535116 & -0.169730646 & 0.32575177 & 1.599468e-01 & 3.187238e-01\\\\\n",
"\t C1orf159 & 26.96764798 & 0.015483768 & 0.17082611 & 8.784968e-01 & 9.355704e-01\\\\\n",
"\t TTLL10-AS1 & 1.22841261 & -0.017928696 & 0.32710770 & 8.371750e-01 & NA\\\\\n",
"\t TTLL10 & 18.12501843 & 0.509027780 & 0.36666049 & 5.815968e-03 & 2.302366e-02\\\\\n",
"\t TNFRSF18 & 8.60925127 & -0.634564134 & 0.50774337 & 4.572704e-03 & 1.883409e-02\\\\\n",
"\t TNFRSF4 & 24.53252635 & 0.762210096 & 0.35471907 & 4.228333e-04 & 2.396398e-03\\\\\n",
"\t SDF4 & 472.32399683 & 0.069880816 & 0.06055543 & 2.035592e-01 & 3.755427e-01\\\\\n",
"\t B3GALT6 & 130.51684377 & -0.067955025 & 0.09900480 & 3.956081e-01 & 5.837745e-01\\\\\n",
"\t ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮\\\\\n",
"\t LSS & 4.091658e+01 & -0.18435526 & 0.16986562 & 9.434001e-02 & 2.171153e-01\\\\\n",
"\t MCM3AP-AS1 & 1.610111e+02 & -0.15898076 & 0.09750434 & 4.672600e-02 & 1.263447e-01\\\\\n",
"\t MCM3AP & 1.807163e+02 & 0.17234895 & 0.09780746 & 3.190823e-02 & 9.379293e-02\\\\\n",
"\t AP001469.7 & 6.991518e-01 & 0.14298495 & 0.47883897 & 1.609131e-01 & NA\\\\\n",
"\t AP001469.9 & 1.998439e+01 & 0.01438636 & 0.18006404 & 8.877670e-01 & 9.400165e-01\\\\\n",
"\t YBEY & 3.000054e+02 & 0.03469876 & 0.07097657 & 5.799873e-01 & 7.423226e-01\\\\\n",
"\t C21orf58 & 2.367949e+02 & 0.45908168 & 0.09658819 & 9.828140e-08 & 1.076208e-06\\\\\n",
"\t PCNT & 2.479730e+02 & 0.02709810 & 0.07876773 & 6.902535e-01 & 8.198506e-01\\\\\n",
"\t DIP2A & 3.011729e+02 & -0.09330315 & 0.07321433 & 1.457901e-01 & 2.976449e-01\\\\\n",
"\t S100B & 9.127741e+00 & -0.23479983 & 0.32633905 & 8.173407e-02 & 1.944197e-01\\\\\n",
"\t PRMT2 & 8.062355e+02 & 0.34314201 & 0.05084570 & 1.561148e-12 & 2.683264e-11\\\\\n",
"\t MT-ND1 & 2.562677e+04 & 0.10047139 & 0.01721054 & 3.703488e-09 & 4.744075e-08\\\\\n",
"\t MT-ND2 & 2.875085e+04 & 0.23162437 & 0.01399485 & 4.718062e-62 & 3.447359e-60\\\\\n",
"\t MT-CO1 & 6.246561e+04 & 0.09257379 & 0.01411650 & 4.033111e-11 & 6.270564e-10\\\\\n",
"\t MT-CO2 & 5.367210e+04 & -0.06736583 & 0.01411072 & 1.540597e-06 & 1.428713e-05\\\\\n",
"\t MT-ATP8 & 1.743629e+03 & -0.07800264 & 0.03260075 & 1.337263e-02 & 4.623248e-02\\\\\n",
"\t MT-ATP6 & 8.540176e+04 & -0.19316263 & 0.01152085 & 1.631049e-63 & 1.219097e-61\\\\\n",
"\t MT-CO3 & 5.102515e+04 & 0.14152286 & 0.01695529 & 3.650074e-17 & 8.294881e-16\\\\\n",
"\t MT-ND3 & 4.428054e+04 & -0.41553586 & 0.01247374 & 1.620253e-244 & 4.258129e-242\\\\\n",
"\t MT-ND4L & 4.906721e+03 & 0.07738468 & 0.02330002 & 7.226743e-04 & 3.855683e-03\\\\\n",
"\t MT-ND4 & 3.866942e+04 & -0.15390107 & 0.01579053 & 9.138922e-23 & 2.644931e-21\\\\\n",
"\t MT-ND5 & 1.376059e+04 & -0.28464121 & 0.01839183 & 9.313590e-55 & 5.836755e-53\\\\\n",
"\t MT-ND6 & 1.293669e+03 & -0.63592710 & 0.03915829 & 6.918687e-61 & 4.922842e-59\\\\\n",
"\t MT-CYB & 4.372421e+04 & -0.14533812 & 0.01414267 & 4.554640e-25 & 1.441035e-23\\\\\n",
"\t AC145212.1 & 3.594428e+01 & 0.29027568 & 0.21470727 & 2.490187e-02 & 7.712433e-02\\\\\n",
"\t AC011043.1 & 2.124221e+01 & -0.07682709 & 0.18214009 & 4.641872e-01 & 6.482786e-01\\\\\n",
"\t AL592183.1 & 1.076555e+03 & 0.66764674 & 0.04814754 & 2.135283e-45 & 1.155890e-43\\\\\n",
"\t AC011841.1 & 7.541778e+01 & -0.20423134 & 0.14049254 & 4.442326e-02 & 1.213178e-01\\\\\n",
"\t AL354822.1 & 4.665861e+00 & -0.18739254 & 0.34017720 & 1.327471e-01 & 2.782686e-01\\\\\n",
"\t SRSF10-1 & 7.473685e+01 & 2.88330425 & 0.26411878 & 1.906015e-29 & 6.994730e-28\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A tibble: 20098 × 6\n",
"\n",
"| gene <chr> | baseMean <dbl> | log2FoldChange <dbl> | lfcSE <dbl> | pvalue <dbl> | padj <dbl> |\n",
"|---|---|---|---|---|---|\n",
"| RP11-34P13.7 | 2.99155718 | -0.015119181 | 0.28111206 | 8.731060e-01 | 9.329392e-01 |\n",
"| AL627309.1 | 22.60077568 | -1.227144537 | 0.32775885 | 2.522408e-06 | 2.257008e-05 |\n",
"| AP006222.2 | 91.70598065 | -0.033555573 | 0.11219241 | 6.974050e-01 | 8.242795e-01 |\n",
"| RP4-669L17.10 | 7.35390445 | -0.048325373 | 0.23290658 | 6.377485e-01 | 7.823921e-01 |\n",
"| RP5-857K21.4 | 0.74407078 | -0.032282160 | 0.37103926 | 6.899308e-01 | NA |\n",
"| RP11-206L10.3 | 47.38577403 | -0.152052407 | 0.15418887 | 1.439250e-01 | 2.946863e-01 |\n",
"| RP11-206L10.5 | 0.58319449 | -0.076262568 | 0.42498039 | 3.634093e-01 | NA |\n",
"| RP11-206L10.4 | 1.69391513 | -0.188540558 | 0.48309428 | 1.092059e-01 | NA |\n",
"| RP11-206L10.2 | 109.58838919 | -0.167582879 | 0.11563292 | 6.155752e-02 | 1.566482e-01 |\n",
"| RP11-206L10.9 | 54.92169293 | 0.125676937 | 0.14761659 | 2.130814e-01 | 3.874942e-01 |\n",
"| FAM87B | 0.49082488 | 0.060814885 | 0.42684568 | 4.383804e-01 | NA |\n",
"| LINC00115 | 42.67285724 | 0.006267249 | 0.14104277 | 9.480207e-01 | 9.722813e-01 |\n",
"| FAM41C | 50.31498864 | -0.294792924 | 0.17927643 | 1.414777e-02 | 4.850070e-02 |\n",
"| RP11-54O7.1 | 1.90095325 | -0.299167354 | 0.58613327 | 4.399670e-02 | 1.204016e-01 |\n",
"| RP11-54O7.2 | 0.22710652 | -0.054179199 | 0.47501439 | 4.251261e-01 | NA |\n",
"| RP11-54O7.3 | 0.07267561 | -0.015588569 | 0.46114587 | 7.934079e-01 | NA |\n",
"| SAMD11 | 2.46632043 | -0.086319189 | 0.32363785 | 3.899462e-01 | 5.786441e-01 |\n",
"| NOC2L | 348.43964532 | -0.007669467 | 0.06916003 | 9.007005e-01 | 9.472618e-01 |\n",
"| KLHL17 | 1.64281441 | 0.266086804 | 0.60000811 | 5.277933e-02 | NA |\n",
"| C1orf170 | 0.47965720 | 0.001794885 | 0.37983466 | 9.811923e-01 | NA |\n",
"| HES4 | 20.07572452 | -0.715063769 | 0.37346300 | 8.571150e-04 | 4.486294e-03 |\n",
"| ISG15 | 854.02479443 | -1.279604871 | 0.04887730 | 3.672874e-152 | 5.541278e-150 |\n",
"| AGRN | 4.71535116 | -0.169730646 | 0.32575177 | 1.599468e-01 | 3.187238e-01 |\n",
"| C1orf159 | 26.96764798 | 0.015483768 | 0.17082611 | 8.784968e-01 | 9.355704e-01 |\n",
"| TTLL10-AS1 | 1.22841261 | -0.017928696 | 0.32710770 | 8.371750e-01 | NA |\n",
"| TTLL10 | 18.12501843 | 0.509027780 | 0.36666049 | 5.815968e-03 | 2.302366e-02 |\n",
"| TNFRSF18 | 8.60925127 | -0.634564134 | 0.50774337 | 4.572704e-03 | 1.883409e-02 |\n",
"| TNFRSF4 | 24.53252635 | 0.762210096 | 0.35471907 | 4.228333e-04 | 2.396398e-03 |\n",
"| SDF4 | 472.32399683 | 0.069880816 | 0.06055543 | 2.035592e-01 | 3.755427e-01 |\n",
"| B3GALT6 | 130.51684377 | -0.067955025 | 0.09900480 | 3.956081e-01 | 5.837745e-01 |\n",
"| ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |\n",
"| LSS | 4.091658e+01 | -0.18435526 | 0.16986562 | 9.434001e-02 | 2.171153e-01 |\n",
"| MCM3AP-AS1 | 1.610111e+02 | -0.15898076 | 0.09750434 | 4.672600e-02 | 1.263447e-01 |\n",
"| MCM3AP | 1.807163e+02 | 0.17234895 | 0.09780746 | 3.190823e-02 | 9.379293e-02 |\n",
"| AP001469.7 | 6.991518e-01 | 0.14298495 | 0.47883897 | 1.609131e-01 | NA |\n",
"| AP001469.9 | 1.998439e+01 | 0.01438636 | 0.18006404 | 8.877670e-01 | 9.400165e-01 |\n",
"| YBEY | 3.000054e+02 | 0.03469876 | 0.07097657 | 5.799873e-01 | 7.423226e-01 |\n",
"| C21orf58 | 2.367949e+02 | 0.45908168 | 0.09658819 | 9.828140e-08 | 1.076208e-06 |\n",
"| PCNT | 2.479730e+02 | 0.02709810 | 0.07876773 | 6.902535e-01 | 8.198506e-01 |\n",
"| DIP2A | 3.011729e+02 | -0.09330315 | 0.07321433 | 1.457901e-01 | 2.976449e-01 |\n",
"| S100B | 9.127741e+00 | -0.23479983 | 0.32633905 | 8.173407e-02 | 1.944197e-01 |\n",
"| PRMT2 | 8.062355e+02 | 0.34314201 | 0.05084570 | 1.561148e-12 | 2.683264e-11 |\n",
"| MT-ND1 | 2.562677e+04 | 0.10047139 | 0.01721054 | 3.703488e-09 | 4.744075e-08 |\n",
"| MT-ND2 | 2.875085e+04 | 0.23162437 | 0.01399485 | 4.718062e-62 | 3.447359e-60 |\n",
"| MT-CO1 | 6.246561e+04 | 0.09257379 | 0.01411650 | 4.033111e-11 | 6.270564e-10 |\n",
"| MT-CO2 | 5.367210e+04 | -0.06736583 | 0.01411072 | 1.540597e-06 | 1.428713e-05 |\n",
"| MT-ATP8 | 1.743629e+03 | -0.07800264 | 0.03260075 | 1.337263e-02 | 4.623248e-02 |\n",
"| MT-ATP6 | 8.540176e+04 | -0.19316263 | 0.01152085 | 1.631049e-63 | 1.219097e-61 |\n",
"| MT-CO3 | 5.102515e+04 | 0.14152286 | 0.01695529 | 3.650074e-17 | 8.294881e-16 |\n",
"| MT-ND3 | 4.428054e+04 | -0.41553586 | 0.01247374 | 1.620253e-244 | 4.258129e-242 |\n",
"| MT-ND4L | 4.906721e+03 | 0.07738468 | 0.02330002 | 7.226743e-04 | 3.855683e-03 |\n",
"| MT-ND4 | 3.866942e+04 | -0.15390107 | 0.01579053 | 9.138922e-23 | 2.644931e-21 |\n",
"| MT-ND5 | 1.376059e+04 | -0.28464121 | 0.01839183 | 9.313590e-55 | 5.836755e-53 |\n",
"| MT-ND6 | 1.293669e+03 | -0.63592710 | 0.03915829 | 6.918687e-61 | 4.922842e-59 |\n",
"| MT-CYB | 4.372421e+04 | -0.14533812 | 0.01414267 | 4.554640e-25 | 1.441035e-23 |\n",
"| AC145212.1 | 3.594428e+01 | 0.29027568 | 0.21470727 | 2.490187e-02 | 7.712433e-02 |\n",
"| AC011043.1 | 2.124221e+01 | -0.07682709 | 0.18214009 | 4.641872e-01 | 6.482786e-01 |\n",
"| AL592183.1 | 1.076555e+03 | 0.66764674 | 0.04814754 | 2.135283e-45 | 1.155890e-43 |\n",
"| AC011841.1 | 7.541778e+01 | -0.20423134 | 0.14049254 | 4.442326e-02 | 1.213178e-01 |\n",
"| AL354822.1 | 4.665861e+00 | -0.18739254 | 0.34017720 | 1.327471e-01 | 2.782686e-01 |\n",
"| SRSF10-1 | 7.473685e+01 | 2.88330425 | 0.26411878 | 1.906015e-29 | 6.994730e-28 |\n",
"\n"
],
"text/plain": [
" gene baseMean log2FoldChange lfcSE pvalue padj \n",
"1 RP11-34P13.7 2.99155718 -0.015119181 0.28111206 8.731060e-01 9.329392e-01\n",
"2 AL627309.1 22.60077568 -1.227144537 0.32775885 2.522408e-06 2.257008e-05\n",
"3 AP006222.2 91.70598065 -0.033555573 0.11219241 6.974050e-01 8.242795e-01\n",
"4 RP4-669L17.10 7.35390445 -0.048325373 0.23290658 6.377485e-01 7.823921e-01\n",
"5 RP5-857K21.4 0.74407078 -0.032282160 0.37103926 6.899308e-01 NA\n",
"6 RP11-206L10.3 47.38577403 -0.152052407 0.15418887 1.439250e-01 2.946863e-01\n",
"7 RP11-206L10.5 0.58319449 -0.076262568 0.42498039 3.634093e-01 NA\n",
"8 RP11-206L10.4 1.69391513 -0.188540558 0.48309428 1.092059e-01 NA\n",
"9 RP11-206L10.2 109.58838919 -0.167582879 0.11563292 6.155752e-02 1.566482e-01\n",
"10 RP11-206L10.9 54.92169293 0.125676937 0.14761659 2.130814e-01 3.874942e-01\n",
"11 FAM87B 0.49082488 0.060814885 0.42684568 4.383804e-01 NA\n",
"12 LINC00115 42.67285724 0.006267249 0.14104277 9.480207e-01 9.722813e-01\n",
"13 FAM41C 50.31498864 -0.294792924 0.17927643 1.414777e-02 4.850070e-02\n",
"14 RP11-54O7.1 1.90095325 -0.299167354 0.58613327 4.399670e-02 1.204016e-01\n",
"15 RP11-54O7.2 0.22710652 -0.054179199 0.47501439 4.251261e-01 NA\n",
"16 RP11-54O7.3 0.07267561 -0.015588569 0.46114587 7.934079e-01 NA\n",
"17 SAMD11 2.46632043 -0.086319189 0.32363785 3.899462e-01 5.786441e-01\n",
"18 NOC2L 348.43964532 -0.007669467 0.06916003 9.007005e-01 9.472618e-01\n",
"19 KLHL17 1.64281441 0.266086804 0.60000811 5.277933e-02 NA\n",
"20 C1orf170 0.47965720 0.001794885 0.37983466 9.811923e-01 NA\n",
"21 HES4 20.07572452 -0.715063769 0.37346300 8.571150e-04 4.486294e-03\n",
"22 ISG15 854.02479443 -1.279604871 0.04887730 3.672874e-152 5.541278e-150\n",
"23 AGRN 4.71535116 -0.169730646 0.32575177 1.599468e-01 3.187238e-01\n",
"24 C1orf159 26.96764798 0.015483768 0.17082611 8.784968e-01 9.355704e-01\n",
"25 TTLL10-AS1 1.22841261 -0.017928696 0.32710770 8.371750e-01 NA\n",
"26 TTLL10 18.12501843 0.509027780 0.36666049 5.815968e-03 2.302366e-02\n",
"27 TNFRSF18 8.60925127 -0.634564134 0.50774337 4.572704e-03 1.883409e-02\n",
"28 TNFRSF4 24.53252635 0.762210096 0.35471907 4.228333e-04 2.396398e-03\n",
"29 SDF4 472.32399683 0.069880816 0.06055543 2.035592e-01 3.755427e-01\n",
"30 B3GALT6 130.51684377 -0.067955025 0.09900480 3.956081e-01 5.837745e-01\n",
"⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ \n",
"20069 LSS 4.091658e+01 -0.18435526 0.16986562 9.434001e-02 2.171153e-01\n",
"20070 MCM3AP-AS1 1.610111e+02 -0.15898076 0.09750434 4.672600e-02 1.263447e-01\n",
"20071 MCM3AP 1.807163e+02 0.17234895 0.09780746 3.190823e-02 9.379293e-02\n",
"20072 AP001469.7 6.991518e-01 0.14298495 0.47883897 1.609131e-01 NA\n",
"20073 AP001469.9 1.998439e+01 0.01438636 0.18006404 8.877670e-01 9.400165e-01\n",
"20074 YBEY 3.000054e+02 0.03469876 0.07097657 5.799873e-01 7.423226e-01\n",
"20075 C21orf58 2.367949e+02 0.45908168 0.09658819 9.828140e-08 1.076208e-06\n",
"20076 PCNT 2.479730e+02 0.02709810 0.07876773 6.902535e-01 8.198506e-01\n",
"20077 DIP2A 3.011729e+02 -0.09330315 0.07321433 1.457901e-01 2.976449e-01\n",
"20078 S100B 9.127741e+00 -0.23479983 0.32633905 8.173407e-02 1.944197e-01\n",
"20079 PRMT2 8.062355e+02 0.34314201 0.05084570 1.561148e-12 2.683264e-11\n",
"20080 MT-ND1 2.562677e+04 0.10047139 0.01721054 3.703488e-09 4.744075e-08\n",
"20081 MT-ND2 2.875085e+04 0.23162437 0.01399485 4.718062e-62 3.447359e-60\n",
"20082 MT-CO1 6.246561e+04 0.09257379 0.01411650 4.033111e-11 6.270564e-10\n",
"20083 MT-CO2 5.367210e+04 -0.06736583 0.01411072 1.540597e-06 1.428713e-05\n",
"20084 MT-ATP8 1.743629e+03 -0.07800264 0.03260075 1.337263e-02 4.623248e-02\n",
"20085 MT-ATP6 8.540176e+04 -0.19316263 0.01152085 1.631049e-63 1.219097e-61\n",
"20086 MT-CO3 5.102515e+04 0.14152286 0.01695529 3.650074e-17 8.294881e-16\n",
"20087 MT-ND3 4.428054e+04 -0.41553586 0.01247374 1.620253e-244 4.258129e-242\n",
"20088 MT-ND4L 4.906721e+03 0.07738468 0.02330002 7.226743e-04 3.855683e-03\n",
"20089 MT-ND4 3.866942e+04 -0.15390107 0.01579053 9.138922e-23 2.644931e-21\n",
"20090 MT-ND5 1.376059e+04 -0.28464121 0.01839183 9.313590e-55 5.836755e-53\n",
"20091 MT-ND6 1.293669e+03 -0.63592710 0.03915829 6.918687e-61 4.922842e-59\n",
"20092 MT-CYB 4.372421e+04 -0.14533812 0.01414267 4.554640e-25 1.441035e-23\n",
"20093 AC145212.1 3.594428e+01 0.29027568 0.21470727 2.490187e-02 7.712433e-02\n",
"20094 AC011043.1 2.124221e+01 -0.07682709 0.18214009 4.641872e-01 6.482786e-01\n",
"20095 AL592183.1 1.076555e+03 0.66764674 0.04814754 2.135283e-45 1.155890e-43\n",
"20096 AC011841.1 7.541778e+01 -0.20423134 0.14049254 4.442326e-02 1.213178e-01\n",
"20097 AL354822.1 4.665861e+00 -0.18739254 0.34017720 1.327471e-01 2.782686e-01\n",
"20098 SRSF10-1 7.473685e+01 2.88330425 0.26411878 1.906015e-29 6.994730e-28"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Turn the results object into a tibble for use with tidyverse functions\n",
"res_tbl <- res %>%\n",
" data.frame() %>%\n",
" tibble::rownames_to_column(var=\"gene\") %>%\n",
" tibble::as_tibble()\n",
"\n",
"# Check results output\n",
"res_tbl"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "76036d29-1073-41c2-ad43-fdf67ea538ea",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 167,
"id": "29a2b452-0b84-4b70-b51b-b4a76f490b62",
"metadata": {},
"outputs": [],
"source": [
"# Write all results to file\n",
"write.table(res_tbl,\n",
" paste0(resfolder, prefix, \"_\", basename, \"_strict_\", cluster, \"_population_\",\n",
" levels(cluster_metadata$group_id)[1], \"_vs_\", levels(cluster_metadata$group_id)[2], \n",
" \"_all_genes_DESeq2_pb.tsv\"),\n",
" quote = FALSE, \n",
" row.names = FALSE,\n",
" sep='\\t')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3470aa39-d22b-4a32-bf9a-3366708e397c",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 168,
"id": "cc7a030b-e6fe-47c2-a160-4308bd98d62c",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A tibble: 4778 × 6\n",
"\n",
"\tgene | baseMean | log2FoldChange | lfcSE | pvalue | padj |
\n",
"\t<chr> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> |
\n",
"\n",
"\n",
"\tIFI6 | 2700.2618 | -2.3938248 | 0.034902251 | 0 | 0 |
\n",
"\tPDE4B | 1546.9011 | -1.5502264 | 0.041037206 | 0 | 0 |
\n",
"\tIFI44L | 2105.9472 | -2.4750223 | 0.035803495 | 0 | 0 |
\n",
"\tMCL1 | 4402.6345 | -1.2083670 | 0.022493377 | 0 | 0 |
\n",
"\tID2 | 2049.6785 | -3.2859657 | 0.042399854 | 0 | 0 |
\n",
"\tZFP36L2 | 14803.7912 | -0.8687386 | 0.022062735 | 0 | 0 |
\n",
"\tRPS27A | 70580.3449 | 0.4436190 | 0.009661298 | 0 | 0 |
\n",
"\tCXCR4 | 6639.7749 | -3.6367823 | 0.027834617 | 0 | 0 |
\n",
"\tSDPR | 4452.1645 | -2.5634740 | 0.064563926 | 0 | 0 |
\n",
"\tSTK17B | 2926.4663 | -1.1504583 | 0.030109904 | 0 | 0 |
\n",
"\tEEF1B2 | 31452.2072 | 0.7020005 | 0.011579215 | 0 | 0 |
\n",
"\tAREG | 7974.4696 | -4.6908376 | 0.056307581 | 0 | 0 |
\n",
"\tRPL34 | 99667.0284 | 0.6840834 | 0.009026359 | 0 | 0 |
\n",
"\tRPS3A | 102168.3763 | 0.5888854 | 0.010530537 | 0 | 0 |
\n",
"\tCCNH | 1887.8737 | -2.3724712 | 0.036579078 | 0 | 0 |
\n",
"\tRPS14 | 65266.5014 | 0.7937176 | 0.012126959 | 0 | 0 |
\n",
"\tHLA-DRB5 | 3580.9090 | -1.9002376 | 0.027108965 | 0 | 0 |
\n",
"\tEEF1A1 | 132726.3301 | 0.4979572 | 0.009775353 | 0 | 0 |
\n",
"\tRPS4X | 101089.5841 | 1.2216722 | 0.011678640 | 0 | 0 |
\n",
"\tTSC22D3 | 11548.1371 | -1.2988916 | 0.029058580 | 0 | 0 |
\n",
"\tSLA | 881.9589 | -2.1199495 | 0.050814379 | 0 | 0 |
\n",
"\tEEF1D | 6151.2832 | 0.8930166 | 0.021167560 | 0 | 0 |
\n",
"\tNFIL3 | 914.3386 | -2.7787742 | 0.056048034 | 0 | 0 |
\n",
"\tMAP3K8 | 1259.3805 | -2.3133876 | 0.050079546 | 0 | 0 |
\n",
"\tSRGN | 20583.5430 | -2.5052871 | 0.014823000 | 0 | 0 |
\n",
"\tDDIT4 | 2091.8585 | -3.6064814 | 0.075808973 | 0 | 0 |
\n",
"\tMALAT1 | 459477.7549 | -0.3950112 | 0.010502524 | 0 | 0 |
\n",
"\tRPS3 | 79198.1491 | 0.5260209 | 0.009857550 | 0 | 0 |
\n",
"\tSLC2A3 | 561.8921 | -4.0098498 | 0.082538989 | 0 | 0 |
\n",
"\tCD69 | 3805.0712 | -3.0177598 | 0.031145809 | 0 | 0 |
\n",
"\t⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |
\n",
"\tCTD-2260A17.2 | 89.430335 | 0.25284074 | 0.13896278 | 0.01408550 | 0.04832788 |
\n",
"\tAC009495.2 | 1.996066 | -0.49530615 | 0.80452627 | 0.01409141 | 0.04833799 |
\n",
"\tHIST1H4A | 41.864084 | 0.32534072 | 0.21455687 | 0.01410233 | 0.04836528 |
\n",
"\tUBE2Z | 466.614532 | 0.14719903 | 0.06704221 | 0.01411678 | 0.04840464 |
\n",
"\tFAM41C | 50.314989 | -0.29479292 | 0.17927643 | 0.01414777 | 0.04850070 |
\n",
"\tSYT1 | 73.090046 | 0.28273838 | 0.16689879 | 0.01417103 | 0.04857022 |
\n",
"\tRINL | 178.804563 | -0.20015664 | 0.09914332 | 0.01420024 | 0.04866010 |
\n",
"\tCTC-425F1.4 | 62.662729 | -0.28602171 | 0.17042440 | 0.01423005 | 0.04875198 |
\n",
"\tAC062029.1 | 44.925695 | -0.30747571 | 0.19370500 | 0.01423778 | 0.04876822 |
\n",
"\tFOXN3-AS1 | 33.690883 | -0.33283465 | 0.22513830 | 0.01426099 | 0.04883745 |
\n",
"\tAC016757.3 | 16.086838 | 0.41723668 | 0.36462728 | 0.01428572 | 0.04891185 |
\n",
"\tTTN-AS1 | 126.733876 | -0.21867840 | 0.11237833 | 0.01433052 | 0.04905493 |
\n",
"\tCCDC169 | 12.224367 | 0.43755465 | 0.41025458 | 0.01435077 | 0.04911393 |
\n",
"\tRWDD2A | 26.015708 | 0.36627244 | 0.27428502 | 0.01436045 | 0.04913673 |
\n",
"\tRP11-397A16.2 | 8.077572 | -0.45564610 | 0.45841087 | 0.01438947 | 0.04922571 |
\n",
"\tFARP2 | 46.201322 | 0.33543509 | 0.22945746 | 0.01440157 | 0.04925675 |
\n",
"\tSCMH1 | 193.911194 | -0.19372967 | 0.09515993 | 0.01440817 | 0.04926898 |
\n",
"\tTHAP1 | 180.723812 | 0.20182179 | 0.10066886 | 0.01446910 | 0.04945658 |
\n",
"\tPRR22 | 15.507912 | -0.39614720 | 0.32621527 | 0.01446857 | 0.04945658 |
\n",
"\tCD52 | 6541.687069 | -0.04727428 | 0.01956982 | 0.01447903 | 0.04948013 |
\n",
"\tC5orf30 | 125.822529 | -0.22307378 | 0.11592304 | 0.01448504 | 0.04949029 |
\n",
"\tGEMIN4 | 80.767705 | 0.26501477 | 0.15097068 | 0.01452797 | 0.04962658 |
\n",
"\tSV2C | 2.391569 | -0.49249941 | 0.72175967 | 0.01454190 | 0.04966374 |
\n",
"\tNUDT5 | 508.750475 | -0.13352241 | 0.06005916 | 0.01454771 | 0.04967319 |
\n",
"\tPRKAR2B | 207.931384 | 0.18676487 | 0.09085121 | 0.01456930 | 0.04973648 |
\n",
"\tDGKE | 221.483376 | 0.18666723 | 0.09079372 | 0.01457328 | 0.04973965 |
\n",
"\tEFCAB4B | 60.075803 | 0.28737650 | 0.17307713 | 0.01458141 | 0.04975695 |
\n",
"\tCTD-2245F17.3 | 19.988499 | 0.39335289 | 0.32287365 | 0.01462570 | 0.04989763 |
\n",
"\tADSL | 740.163806 | -0.11308366 | 0.04969399 | 0.01465279 | 0.04997959 |
\n",
"\tNRIP1 | 6613.670885 | 0.04597364 | 0.01905421 | 0.01466022 | 0.04999448 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A tibble: 4778 × 6\n",
"\\begin{tabular}{llllll}\n",
" gene & baseMean & log2FoldChange & lfcSE & pvalue & padj\\\\\n",
" & & & & & \\\\\n",
"\\hline\n",
"\t IFI6 & 2700.2618 & -2.3938248 & 0.034902251 & 0 & 0\\\\\n",
"\t PDE4B & 1546.9011 & -1.5502264 & 0.041037206 & 0 & 0\\\\\n",
"\t IFI44L & 2105.9472 & -2.4750223 & 0.035803495 & 0 & 0\\\\\n",
"\t MCL1 & 4402.6345 & -1.2083670 & 0.022493377 & 0 & 0\\\\\n",
"\t ID2 & 2049.6785 & -3.2859657 & 0.042399854 & 0 & 0\\\\\n",
"\t ZFP36L2 & 14803.7912 & -0.8687386 & 0.022062735 & 0 & 0\\\\\n",
"\t RPS27A & 70580.3449 & 0.4436190 & 0.009661298 & 0 & 0\\\\\n",
"\t CXCR4 & 6639.7749 & -3.6367823 & 0.027834617 & 0 & 0\\\\\n",
"\t SDPR & 4452.1645 & -2.5634740 & 0.064563926 & 0 & 0\\\\\n",
"\t STK17B & 2926.4663 & -1.1504583 & 0.030109904 & 0 & 0\\\\\n",
"\t EEF1B2 & 31452.2072 & 0.7020005 & 0.011579215 & 0 & 0\\\\\n",
"\t AREG & 7974.4696 & -4.6908376 & 0.056307581 & 0 & 0\\\\\n",
"\t RPL34 & 99667.0284 & 0.6840834 & 0.009026359 & 0 & 0\\\\\n",
"\t RPS3A & 102168.3763 & 0.5888854 & 0.010530537 & 0 & 0\\\\\n",
"\t CCNH & 1887.8737 & -2.3724712 & 0.036579078 & 0 & 0\\\\\n",
"\t RPS14 & 65266.5014 & 0.7937176 & 0.012126959 & 0 & 0\\\\\n",
"\t HLA-DRB5 & 3580.9090 & -1.9002376 & 0.027108965 & 0 & 0\\\\\n",
"\t EEF1A1 & 132726.3301 & 0.4979572 & 0.009775353 & 0 & 0\\\\\n",
"\t RPS4X & 101089.5841 & 1.2216722 & 0.011678640 & 0 & 0\\\\\n",
"\t TSC22D3 & 11548.1371 & -1.2988916 & 0.029058580 & 0 & 0\\\\\n",
"\t SLA & 881.9589 & -2.1199495 & 0.050814379 & 0 & 0\\\\\n",
"\t EEF1D & 6151.2832 & 0.8930166 & 0.021167560 & 0 & 0\\\\\n",
"\t NFIL3 & 914.3386 & -2.7787742 & 0.056048034 & 0 & 0\\\\\n",
"\t MAP3K8 & 1259.3805 & -2.3133876 & 0.050079546 & 0 & 0\\\\\n",
"\t SRGN & 20583.5430 & -2.5052871 & 0.014823000 & 0 & 0\\\\\n",
"\t DDIT4 & 2091.8585 & -3.6064814 & 0.075808973 & 0 & 0\\\\\n",
"\t MALAT1 & 459477.7549 & -0.3950112 & 0.010502524 & 0 & 0\\\\\n",
"\t RPS3 & 79198.1491 & 0.5260209 & 0.009857550 & 0 & 0\\\\\n",
"\t SLC2A3 & 561.8921 & -4.0098498 & 0.082538989 & 0 & 0\\\\\n",
"\t CD69 & 3805.0712 & -3.0177598 & 0.031145809 & 0 & 0\\\\\n",
"\t ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮\\\\\n",
"\t CTD-2260A17.2 & 89.430335 & 0.25284074 & 0.13896278 & 0.01408550 & 0.04832788\\\\\n",
"\t AC009495.2 & 1.996066 & -0.49530615 & 0.80452627 & 0.01409141 & 0.04833799\\\\\n",
"\t HIST1H4A & 41.864084 & 0.32534072 & 0.21455687 & 0.01410233 & 0.04836528\\\\\n",
"\t UBE2Z & 466.614532 & 0.14719903 & 0.06704221 & 0.01411678 & 0.04840464\\\\\n",
"\t FAM41C & 50.314989 & -0.29479292 & 0.17927643 & 0.01414777 & 0.04850070\\\\\n",
"\t SYT1 & 73.090046 & 0.28273838 & 0.16689879 & 0.01417103 & 0.04857022\\\\\n",
"\t RINL & 178.804563 & -0.20015664 & 0.09914332 & 0.01420024 & 0.04866010\\\\\n",
"\t CTC-425F1.4 & 62.662729 & -0.28602171 & 0.17042440 & 0.01423005 & 0.04875198\\\\\n",
"\t AC062029.1 & 44.925695 & -0.30747571 & 0.19370500 & 0.01423778 & 0.04876822\\\\\n",
"\t FOXN3-AS1 & 33.690883 & -0.33283465 & 0.22513830 & 0.01426099 & 0.04883745\\\\\n",
"\t AC016757.3 & 16.086838 & 0.41723668 & 0.36462728 & 0.01428572 & 0.04891185\\\\\n",
"\t TTN-AS1 & 126.733876 & -0.21867840 & 0.11237833 & 0.01433052 & 0.04905493\\\\\n",
"\t CCDC169 & 12.224367 & 0.43755465 & 0.41025458 & 0.01435077 & 0.04911393\\\\\n",
"\t RWDD2A & 26.015708 & 0.36627244 & 0.27428502 & 0.01436045 & 0.04913673\\\\\n",
"\t RP11-397A16.2 & 8.077572 & -0.45564610 & 0.45841087 & 0.01438947 & 0.04922571\\\\\n",
"\t FARP2 & 46.201322 & 0.33543509 & 0.22945746 & 0.01440157 & 0.04925675\\\\\n",
"\t SCMH1 & 193.911194 & -0.19372967 & 0.09515993 & 0.01440817 & 0.04926898\\\\\n",
"\t THAP1 & 180.723812 & 0.20182179 & 0.10066886 & 0.01446910 & 0.04945658\\\\\n",
"\t PRR22 & 15.507912 & -0.39614720 & 0.32621527 & 0.01446857 & 0.04945658\\\\\n",
"\t CD52 & 6541.687069 & -0.04727428 & 0.01956982 & 0.01447903 & 0.04948013\\\\\n",
"\t C5orf30 & 125.822529 & -0.22307378 & 0.11592304 & 0.01448504 & 0.04949029\\\\\n",
"\t GEMIN4 & 80.767705 & 0.26501477 & 0.15097068 & 0.01452797 & 0.04962658\\\\\n",
"\t SV2C & 2.391569 & -0.49249941 & 0.72175967 & 0.01454190 & 0.04966374\\\\\n",
"\t NUDT5 & 508.750475 & -0.13352241 & 0.06005916 & 0.01454771 & 0.04967319\\\\\n",
"\t PRKAR2B & 207.931384 & 0.18676487 & 0.09085121 & 0.01456930 & 0.04973648\\\\\n",
"\t DGKE & 221.483376 & 0.18666723 & 0.09079372 & 0.01457328 & 0.04973965\\\\\n",
"\t EFCAB4B & 60.075803 & 0.28737650 & 0.17307713 & 0.01458141 & 0.04975695\\\\\n",
"\t CTD-2245F17.3 & 19.988499 & 0.39335289 & 0.32287365 & 0.01462570 & 0.04989763\\\\\n",
"\t ADSL & 740.163806 & -0.11308366 & 0.04969399 & 0.01465279 & 0.04997959\\\\\n",
"\t NRIP1 & 6613.670885 & 0.04597364 & 0.01905421 & 0.01466022 & 0.04999448\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A tibble: 4778 × 6\n",
"\n",
"| gene <chr> | baseMean <dbl> | log2FoldChange <dbl> | lfcSE <dbl> | pvalue <dbl> | padj <dbl> |\n",
"|---|---|---|---|---|---|\n",
"| IFI6 | 2700.2618 | -2.3938248 | 0.034902251 | 0 | 0 |\n",
"| PDE4B | 1546.9011 | -1.5502264 | 0.041037206 | 0 | 0 |\n",
"| IFI44L | 2105.9472 | -2.4750223 | 0.035803495 | 0 | 0 |\n",
"| MCL1 | 4402.6345 | -1.2083670 | 0.022493377 | 0 | 0 |\n",
"| ID2 | 2049.6785 | -3.2859657 | 0.042399854 | 0 | 0 |\n",
"| ZFP36L2 | 14803.7912 | -0.8687386 | 0.022062735 | 0 | 0 |\n",
"| RPS27A | 70580.3449 | 0.4436190 | 0.009661298 | 0 | 0 |\n",
"| CXCR4 | 6639.7749 | -3.6367823 | 0.027834617 | 0 | 0 |\n",
"| SDPR | 4452.1645 | -2.5634740 | 0.064563926 | 0 | 0 |\n",
"| STK17B | 2926.4663 | -1.1504583 | 0.030109904 | 0 | 0 |\n",
"| EEF1B2 | 31452.2072 | 0.7020005 | 0.011579215 | 0 | 0 |\n",
"| AREG | 7974.4696 | -4.6908376 | 0.056307581 | 0 | 0 |\n",
"| RPL34 | 99667.0284 | 0.6840834 | 0.009026359 | 0 | 0 |\n",
"| RPS3A | 102168.3763 | 0.5888854 | 0.010530537 | 0 | 0 |\n",
"| CCNH | 1887.8737 | -2.3724712 | 0.036579078 | 0 | 0 |\n",
"| RPS14 | 65266.5014 | 0.7937176 | 0.012126959 | 0 | 0 |\n",
"| HLA-DRB5 | 3580.9090 | -1.9002376 | 0.027108965 | 0 | 0 |\n",
"| EEF1A1 | 132726.3301 | 0.4979572 | 0.009775353 | 0 | 0 |\n",
"| RPS4X | 101089.5841 | 1.2216722 | 0.011678640 | 0 | 0 |\n",
"| TSC22D3 | 11548.1371 | -1.2988916 | 0.029058580 | 0 | 0 |\n",
"| SLA | 881.9589 | -2.1199495 | 0.050814379 | 0 | 0 |\n",
"| EEF1D | 6151.2832 | 0.8930166 | 0.021167560 | 0 | 0 |\n",
"| NFIL3 | 914.3386 | -2.7787742 | 0.056048034 | 0 | 0 |\n",
"| MAP3K8 | 1259.3805 | -2.3133876 | 0.050079546 | 0 | 0 |\n",
"| SRGN | 20583.5430 | -2.5052871 | 0.014823000 | 0 | 0 |\n",
"| DDIT4 | 2091.8585 | -3.6064814 | 0.075808973 | 0 | 0 |\n",
"| MALAT1 | 459477.7549 | -0.3950112 | 0.010502524 | 0 | 0 |\n",
"| RPS3 | 79198.1491 | 0.5260209 | 0.009857550 | 0 | 0 |\n",
"| SLC2A3 | 561.8921 | -4.0098498 | 0.082538989 | 0 | 0 |\n",
"| CD69 | 3805.0712 | -3.0177598 | 0.031145809 | 0 | 0 |\n",
"| ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |\n",
"| CTD-2260A17.2 | 89.430335 | 0.25284074 | 0.13896278 | 0.01408550 | 0.04832788 |\n",
"| AC009495.2 | 1.996066 | -0.49530615 | 0.80452627 | 0.01409141 | 0.04833799 |\n",
"| HIST1H4A | 41.864084 | 0.32534072 | 0.21455687 | 0.01410233 | 0.04836528 |\n",
"| UBE2Z | 466.614532 | 0.14719903 | 0.06704221 | 0.01411678 | 0.04840464 |\n",
"| FAM41C | 50.314989 | -0.29479292 | 0.17927643 | 0.01414777 | 0.04850070 |\n",
"| SYT1 | 73.090046 | 0.28273838 | 0.16689879 | 0.01417103 | 0.04857022 |\n",
"| RINL | 178.804563 | -0.20015664 | 0.09914332 | 0.01420024 | 0.04866010 |\n",
"| CTC-425F1.4 | 62.662729 | -0.28602171 | 0.17042440 | 0.01423005 | 0.04875198 |\n",
"| AC062029.1 | 44.925695 | -0.30747571 | 0.19370500 | 0.01423778 | 0.04876822 |\n",
"| FOXN3-AS1 | 33.690883 | -0.33283465 | 0.22513830 | 0.01426099 | 0.04883745 |\n",
"| AC016757.3 | 16.086838 | 0.41723668 | 0.36462728 | 0.01428572 | 0.04891185 |\n",
"| TTN-AS1 | 126.733876 | -0.21867840 | 0.11237833 | 0.01433052 | 0.04905493 |\n",
"| CCDC169 | 12.224367 | 0.43755465 | 0.41025458 | 0.01435077 | 0.04911393 |\n",
"| RWDD2A | 26.015708 | 0.36627244 | 0.27428502 | 0.01436045 | 0.04913673 |\n",
"| RP11-397A16.2 | 8.077572 | -0.45564610 | 0.45841087 | 0.01438947 | 0.04922571 |\n",
"| FARP2 | 46.201322 | 0.33543509 | 0.22945746 | 0.01440157 | 0.04925675 |\n",
"| SCMH1 | 193.911194 | -0.19372967 | 0.09515993 | 0.01440817 | 0.04926898 |\n",
"| THAP1 | 180.723812 | 0.20182179 | 0.10066886 | 0.01446910 | 0.04945658 |\n",
"| PRR22 | 15.507912 | -0.39614720 | 0.32621527 | 0.01446857 | 0.04945658 |\n",
"| CD52 | 6541.687069 | -0.04727428 | 0.01956982 | 0.01447903 | 0.04948013 |\n",
"| C5orf30 | 125.822529 | -0.22307378 | 0.11592304 | 0.01448504 | 0.04949029 |\n",
"| GEMIN4 | 80.767705 | 0.26501477 | 0.15097068 | 0.01452797 | 0.04962658 |\n",
"| SV2C | 2.391569 | -0.49249941 | 0.72175967 | 0.01454190 | 0.04966374 |\n",
"| NUDT5 | 508.750475 | -0.13352241 | 0.06005916 | 0.01454771 | 0.04967319 |\n",
"| PRKAR2B | 207.931384 | 0.18676487 | 0.09085121 | 0.01456930 | 0.04973648 |\n",
"| DGKE | 221.483376 | 0.18666723 | 0.09079372 | 0.01457328 | 0.04973965 |\n",
"| EFCAB4B | 60.075803 | 0.28737650 | 0.17307713 | 0.01458141 | 0.04975695 |\n",
"| CTD-2245F17.3 | 19.988499 | 0.39335289 | 0.32287365 | 0.01462570 | 0.04989763 |\n",
"| ADSL | 740.163806 | -0.11308366 | 0.04969399 | 0.01465279 | 0.04997959 |\n",
"| NRIP1 | 6613.670885 | 0.04597364 | 0.01905421 | 0.01466022 | 0.04999448 |\n",
"\n"
],
"text/plain": [
" gene baseMean log2FoldChange lfcSE pvalue padj \n",
"1 IFI6 2700.2618 -2.3938248 0.034902251 0 0 \n",
"2 PDE4B 1546.9011 -1.5502264 0.041037206 0 0 \n",
"3 IFI44L 2105.9472 -2.4750223 0.035803495 0 0 \n",
"4 MCL1 4402.6345 -1.2083670 0.022493377 0 0 \n",
"5 ID2 2049.6785 -3.2859657 0.042399854 0 0 \n",
"6 ZFP36L2 14803.7912 -0.8687386 0.022062735 0 0 \n",
"7 RPS27A 70580.3449 0.4436190 0.009661298 0 0 \n",
"8 CXCR4 6639.7749 -3.6367823 0.027834617 0 0 \n",
"9 SDPR 4452.1645 -2.5634740 0.064563926 0 0 \n",
"10 STK17B 2926.4663 -1.1504583 0.030109904 0 0 \n",
"11 EEF1B2 31452.2072 0.7020005 0.011579215 0 0 \n",
"12 AREG 7974.4696 -4.6908376 0.056307581 0 0 \n",
"13 RPL34 99667.0284 0.6840834 0.009026359 0 0 \n",
"14 RPS3A 102168.3763 0.5888854 0.010530537 0 0 \n",
"15 CCNH 1887.8737 -2.3724712 0.036579078 0 0 \n",
"16 RPS14 65266.5014 0.7937176 0.012126959 0 0 \n",
"17 HLA-DRB5 3580.9090 -1.9002376 0.027108965 0 0 \n",
"18 EEF1A1 132726.3301 0.4979572 0.009775353 0 0 \n",
"19 RPS4X 101089.5841 1.2216722 0.011678640 0 0 \n",
"20 TSC22D3 11548.1371 -1.2988916 0.029058580 0 0 \n",
"21 SLA 881.9589 -2.1199495 0.050814379 0 0 \n",
"22 EEF1D 6151.2832 0.8930166 0.021167560 0 0 \n",
"23 NFIL3 914.3386 -2.7787742 0.056048034 0 0 \n",
"24 MAP3K8 1259.3805 -2.3133876 0.050079546 0 0 \n",
"25 SRGN 20583.5430 -2.5052871 0.014823000 0 0 \n",
"26 DDIT4 2091.8585 -3.6064814 0.075808973 0 0 \n",
"27 MALAT1 459477.7549 -0.3950112 0.010502524 0 0 \n",
"28 RPS3 79198.1491 0.5260209 0.009857550 0 0 \n",
"29 SLC2A3 561.8921 -4.0098498 0.082538989 0 0 \n",
"30 CD69 3805.0712 -3.0177598 0.031145809 0 0 \n",
"⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ \n",
"4749 CTD-2260A17.2 89.430335 0.25284074 0.13896278 0.01408550 0.04832788\n",
"4750 AC009495.2 1.996066 -0.49530615 0.80452627 0.01409141 0.04833799\n",
"4751 HIST1H4A 41.864084 0.32534072 0.21455687 0.01410233 0.04836528\n",
"4752 UBE2Z 466.614532 0.14719903 0.06704221 0.01411678 0.04840464\n",
"4753 FAM41C 50.314989 -0.29479292 0.17927643 0.01414777 0.04850070\n",
"4754 SYT1 73.090046 0.28273838 0.16689879 0.01417103 0.04857022\n",
"4755 RINL 178.804563 -0.20015664 0.09914332 0.01420024 0.04866010\n",
"4756 CTC-425F1.4 62.662729 -0.28602171 0.17042440 0.01423005 0.04875198\n",
"4757 AC062029.1 44.925695 -0.30747571 0.19370500 0.01423778 0.04876822\n",
"4758 FOXN3-AS1 33.690883 -0.33283465 0.22513830 0.01426099 0.04883745\n",
"4759 AC016757.3 16.086838 0.41723668 0.36462728 0.01428572 0.04891185\n",
"4760 TTN-AS1 126.733876 -0.21867840 0.11237833 0.01433052 0.04905493\n",
"4761 CCDC169 12.224367 0.43755465 0.41025458 0.01435077 0.04911393\n",
"4762 RWDD2A 26.015708 0.36627244 0.27428502 0.01436045 0.04913673\n",
"4763 RP11-397A16.2 8.077572 -0.45564610 0.45841087 0.01438947 0.04922571\n",
"4764 FARP2 46.201322 0.33543509 0.22945746 0.01440157 0.04925675\n",
"4765 SCMH1 193.911194 -0.19372967 0.09515993 0.01440817 0.04926898\n",
"4766 THAP1 180.723812 0.20182179 0.10066886 0.01446910 0.04945658\n",
"4767 PRR22 15.507912 -0.39614720 0.32621527 0.01446857 0.04945658\n",
"4768 CD52 6541.687069 -0.04727428 0.01956982 0.01447903 0.04948013\n",
"4769 C5orf30 125.822529 -0.22307378 0.11592304 0.01448504 0.04949029\n",
"4770 GEMIN4 80.767705 0.26501477 0.15097068 0.01452797 0.04962658\n",
"4771 SV2C 2.391569 -0.49249941 0.72175967 0.01454190 0.04966374\n",
"4772 NUDT5 508.750475 -0.13352241 0.06005916 0.01454771 0.04967319\n",
"4773 PRKAR2B 207.931384 0.18676487 0.09085121 0.01456930 0.04973648\n",
"4774 DGKE 221.483376 0.18666723 0.09079372 0.01457328 0.04973965\n",
"4775 EFCAB4B 60.075803 0.28737650 0.17307713 0.01458141 0.04975695\n",
"4776 CTD-2245F17.3 19.988499 0.39335289 0.32287365 0.01462570 0.04989763\n",
"4777 ADSL 740.163806 -0.11308366 0.04969399 0.01465279 0.04997959\n",
"4778 NRIP1 6613.670885 0.04597364 0.01905421 0.01466022 0.04999448"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Set thresholds\n",
"padj_cutoff <- 0.05\n",
"\n",
"# Subset the significant results\n",
"sig_res <- dplyr::filter(res_tbl, padj < padj_cutoff) %>%\n",
" dplyr::arrange(padj)\n",
"\n",
"# Check significant genes output\n",
"sig_res"
]
},
{
"cell_type": "code",
"execution_count": 169,
"id": "a05ab03b-3d3a-4c5b-bf8e-b1edcc582819",
"metadata": {},
"outputs": [],
"source": [
"# Write significant results to file\n",
"write.table(sig_res,\n",
" paste0(resfolder, prefix, \"_\", basename, \"_strict_\", cluster, \"_population_\",\n",
" levels(cluster_metadata$group_id)[1], \"_vs_\", levels(cluster_metadata$group_id)[2],\n",
" \"_sig_genes_DESeq2_pb.tsv\"),\n",
" quote = FALSE, \n",
" row.names = FALSE,\n",
" sep='\\t')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4737f9d4-acfa-4255-81ce-85528ca0ec7f",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 170,
"id": "e92f0095-4bde-410e-8adc-4a8189be7ea9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"R version 4.3.2 (2023-10-31)\n",
"Platform: x86_64-pc-linux-gnu (64-bit)\n",
"Running under: Ubuntu 20.04.6 LTS\n",
"\n",
"Matrix products: default\n",
"BLAS: /usr/local/lib/R/lib/libRblas.so \n",
"LAPACK: /usr/local/lib/R/lib/libRlapack.so; LAPACK version 3.11.0\n",
"\n",
"locale:\n",
" [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C LC_COLLATE=C \n",
" [5] LC_MONETARY=C LC_MESSAGES=C LC_PAPER=C LC_NAME=C \n",
" [9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=C LC_IDENTIFICATION=C\n",
"\n",
"time zone: Etc/UTC\n",
"tzcode source: system (glibc)\n",
"\n",
"attached base packages:\n",
"[1] stats4 stats graphics grDevices utils datasets methods base \n",
"\n",
"other attached packages:\n",
" [1] RColorBrewer_1.1-3 png_0.1-8 pheatmap_1.0.12 \n",
" [4] tibble_3.2.1 tidyr_1.3.1 dplyr_1.1.4 \n",
" [7] Matrix.utils_0.9.7 Matrix_1.6-5 DESeq2_1.42.0 \n",
"[10] scran_1.30.0 scater_1.30.1 ggplot2_3.4.4 \n",
"[13] scuttle_1.12.0 SingleCellExperiment_1.22.0 SummarizedExperiment_1.30.2\n",
"[16] Biobase_2.60.0 GenomicRanges_1.52.0 GenomeInfoDb_1.36.4 \n",
"[19] IRanges_2.34.1 S4Vectors_0.38.2 BiocGenerics_0.46.0 \n",
"[22] MatrixGenerics_1.12.3 matrixStats_1.2.0 BiocSingular_1.18.0 \n",
"[25] BiocParallel_1.36.0 anndata_0.7.5.6 rjson_0.2.21 \n",
"\n",
"loaded via a namespace (and not attached):\n",
" [1] bitops_1.0-7 grr_0.9.5 gridExtra_2.3 \n",
" [4] rlang_1.1.3 magrittr_2.0.3 compiler_4.3.2 \n",
" [7] DelayedMatrixStats_1.22.6 systemfonts_1.0.5 vctrs_0.6.5 \n",
"[10] stringr_1.5.1 pkgconfig_2.0.3 crayon_1.5.2 \n",
"[13] fastmap_1.1.1 XVector_0.40.0 labeling_0.4.3 \n",
"[16] utf8_1.2.4 ggbeeswarm_0.7.2 ragg_1.2.7 \n",
"[19] purrr_1.0.2 bluster_1.12.0 zlibbioc_1.46.0 \n",
"[22] beachmat_2.18.0 jsonlite_1.8.8 DelayedArray_0.28.0 \n",
"[25] uuid_1.2-0 irlba_2.3.5.1 parallel_4.3.2 \n",
"[28] cluster_2.1.4 R6_2.5.1 stringi_1.8.3 \n",
"[31] SQUAREM_2021.1 limma_3.58.1 reticulate_1.35.0 \n",
"[34] Rcpp_1.0.12 IRkernel_1.3.2.9000 assertthat_0.2.1 \n",
"[37] base64enc_0.1-3 igraph_1.5.1 tidyselect_1.2.0 \n",
"[40] abind_1.4-5 viridis_0.6.4 codetools_0.2-19 \n",
"[43] lattice_0.21-9 withr_3.0.0 evaluate_0.23 \n",
"[46] pillar_1.9.0 generics_0.1.3 invgamma_1.1 \n",
"[49] rprojroot_2.0.4 RCurl_1.98-1.12 truncnorm_1.0-9 \n",
"[52] IRdisplay_1.1 sparseMatrixStats_1.12.2 munsell_0.5.0 \n",
"[55] scales_1.3.0 ashr_2.2-63 glue_1.7.0 \n",
"[58] metapod_1.10.0 tools_4.3.2 BiocNeighbors_1.20.1 \n",
"[61] ScaledMatrix_1.10.0 locfit_1.5-9.8 pbdZMQ_0.3-11 \n",
"[64] Cairo_1.6-2 grid_4.3.2 edgeR_4.0.1 \n",
"[67] colorspace_2.1-0 GenomeInfoDbData_1.2.10 repr_1.1.6 \n",
"[70] beeswarm_0.4.0 vipor_0.4.7 cli_3.6.2 \n",
"[73] rsvd_1.0.5 rappdirs_0.3.3 textshaping_0.3.7 \n",
"[76] fansi_1.0.6 mixsqp_0.3-54 S4Arrays_1.2.0 \n",
"[79] viridisLite_0.4.2 gtable_0.3.4 digest_0.6.34 \n",
"[82] SparseArray_1.2.2 ggrepel_0.9.5 dqrng_0.3.2 \n",
"[85] farver_2.1.1 htmltools_0.5.7 lifecycle_1.0.4 \n",
"[88] here_1.0.1 statmod_1.5.0 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sessionInfo()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "81b2123f-69c1-4008-8be6-464fe53c1c1a",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "0eb10c2d-a11a-433a-96f9-542e3f962eda",
"metadata": {},
"source": [
"# END"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "R",
"language": "R",
"name": "ir"
},
"language_info": {
"codemirror_mode": "r",
"file_extension": ".r",
"mimetype": "text/x-r-source",
"name": "R",
"pygments_lexer": "r",
"version": "4.3.3"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}