{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Import packages" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Loading required package: stats4\n", "Loading required package: BiocGenerics\n", "Loading required package: parallel\n", "\n", "Attaching package: ‘BiocGenerics’\n", "\n", "The following objects are masked from ‘package:parallel’:\n", "\n", " clusterApply, clusterApplyLB, clusterCall, clusterEvalQ,\n", " clusterExport, clusterMap, parApply, parCapply, parLapply,\n", " parLapplyLB, parRapply, parSapply, parSapplyLB\n", "\n", "The following objects are masked from ‘package:stats’:\n", "\n", " IQR, mad, sd, var, xtabs\n", "\n", "The following objects are masked from ‘package:base’:\n", "\n", " anyDuplicated, append, as.data.frame, basename, cbind, colMeans,\n", " colnames, colSums, dirname, do.call, duplicated, eval, evalq,\n", " Filter, Find, get, grep, grepl, intersect, is.unsorted, lapply,\n", " lengths, Map, mapply, match, mget, order, paste, pmax, pmax.int,\n", " pmin, pmin.int, Position, rank, rbind, Reduce, rowMeans, rownames,\n", " rowSums, sapply, setdiff, sort, table, tapply, union, unique,\n", " unsplit, which, which.max, which.min\n", "\n", "Loading required package: S4Vectors\n", "\n", "Attaching package: ‘S4Vectors’\n", "\n", "The following object is masked from ‘package:base’:\n", "\n", " expand.grid\n", "\n", "Loading required package: IRanges\n", "Loading required package: GenomeInfoDb\n", "Warning message:\n", "“replacing previous import ‘IRanges::which’ by ‘Matrix::which’ when loading ‘scABC’”Loading required package: Biostrings\n", "Loading required package: XVector\n", "\n", "Attaching package: ‘Biostrings’\n", "\n", "The following object is masked from ‘package:base’:\n", "\n", " strsplit\n", "\n", "\n", "Attaching package: ‘data.table’\n", "\n", "The following object is masked from ‘package:GenomicRanges’:\n", "\n", " shift\n", "\n", "The following object is masked from ‘package:IRanges’:\n", "\n", " shift\n", "\n", "The following objects are masked from ‘package:S4Vectors’:\n", "\n", " first, second\n", "\n", "\n", "Attaching package: ‘dplyr’\n", "\n", "The following objects are masked from ‘package:data.table’:\n", "\n", " between, first, last\n", "\n", "The following objects are masked from ‘package:Biostrings’:\n", "\n", " collapse, intersect, setdiff, setequal, union\n", "\n", "The following object is masked from ‘package:XVector’:\n", "\n", " slice\n", "\n", "The following objects are masked from ‘package:GenomicRanges’:\n", "\n", " intersect, setdiff, union\n", "\n", "The following object is masked from ‘package:GenomeInfoDb’:\n", "\n", " intersect\n", "\n", "The following objects are masked from ‘package:IRanges’:\n", "\n", " collapse, desc, intersect, setdiff, slice, union\n", "\n", "The following objects are masked from ‘package:S4Vectors’:\n", "\n", " first, intersect, rename, setdiff, setequal, union\n", "\n", "The following objects are masked from ‘package:BiocGenerics’:\n", "\n", " combine, intersect, setdiff, union\n", "\n", "The following objects are masked from ‘package:stats’:\n", "\n", " filter, lag\n", "\n", "The following objects are masked from ‘package:base’:\n", "\n", " intersect, setdiff, setequal, union\n", "\n", "── Attaching packages ─────────────────────────────────────── tidyverse 1.2.1 ──\n", "✔ ggplot2 3.1.0 ✔ readr 1.3.1\n", "✔ tibble 2.1.1 ✔ purrr 0.3.2\n", "✔ tidyr 0.8.3 ✔ stringr 1.4.0\n", "✔ ggplot2 3.1.0 ✔ forcats 0.4.0\n", "── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──\n", "✖ dplyr::between() masks data.table::between()\n", "✖ dplyr::collapse() masks Biostrings::collapse(), IRanges::collapse()\n", "✖ dplyr::combine() masks BiocGenerics::combine()\n", "✖ purrr::compact() masks XVector::compact()\n", "✖ dplyr::desc() masks IRanges::desc()\n", "✖ tidyr::expand() masks S4Vectors::expand()\n", "✖ dplyr::filter() masks stats::filter()\n", "✖ dplyr::first() masks data.table::first(), S4Vectors::first()\n", "✖ dplyr::lag() masks stats::lag()\n", "✖ dplyr::last() masks data.table::last()\n", "✖ ggplot2::Position() masks BiocGenerics::Position(), base::Position()\n", "✖ purrr::reduce() masks GenomicRanges::reduce(), IRanges::reduce()\n", "✖ dplyr::rename() masks S4Vectors::rename()\n", "✖ dplyr::slice() masks XVector::slice(), IRanges::slice()\n", "✖ purrr::transpose() masks data.table::transpose()\n", "\n", "Attaching package: ‘Matrix’\n", "\n", "The following object is masked from ‘package:tidyr’:\n", "\n", " expand\n", "\n", "The following object is masked from ‘package:S4Vectors’:\n", "\n", " expand\n", "\n", "\n", "Attaching package: ‘gplots’\n", "\n", "The following object is masked from ‘package:IRanges’:\n", "\n", " space\n", "\n", "The following object is masked from ‘package:S4Vectors’:\n", "\n", " space\n", "\n", "The following object is masked from ‘package:stats’:\n", "\n", " lowess\n", "\n", "SHA-1 hash of file is 015fc0457e61e3e93a903e69a24d96d2dac7b9fb\n" ] } ], "source": [ "options(stringsAsFactors = FALSE)\n", "library(GenomicRanges)\n", "library(scABC)\n", "library(Rsamtools)\n", "library(data.table)\n", "library(dplyr)\n", "library(tidyverse)\n", "library(Matrix)\n", "\n", "library(gplots) \n", "library(RColorBrewer)\n", "library(devtools)\n", "source_url(\"https://raw.githubusercontent.com/obigriffith/biostar-tutorials/master/Heatmaps/heatmap.3.R\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Functions" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "bam2gr <- function(bamfile, PAIRED = FALSE) {\n", " if (PAIRED) {\n", " scanned = scanBam(bamfile, param = ScanBamParam(flag =scanBamFlag(isMinusStrand = FALSE,\n", " isUnmappedQuery = FALSE,\n", " isProperPair = TRUE),\n", " what = c(\"rname\", \"pos\", \"isize\")))[[1]]\n", " out = GRanges(seqnames = scanned$rname, IRanges(start = scanned$pos, width = scanned$isize))\n", " } else {\n", " scanned = scanBam(bamfile, param = ScanBamParam(flag =scanBamFlag(isUnmappedQuery = FALSE),\n", " what = c(\"rname\", \"pos\", \"strand\", \"qwidth\")))[[1]]\n", " out = GRanges(seqnames = scanned$rname,\n", " IRanges(start = ifelse(scanned$strand == \"-\", scanned$pos + scanned$qwidth - 1, scanned$pos),\n", " width = scanned$qwidth))\n", " }\n", " return(out)\n", "}\n", "\n", "getCountsByReadGroup <- function(bamfile, peaks, RGtag, tags = NULL, PAIRED = FALSE, VERBOSE = FALSE){\n", " scanned <- Rsamtools::scanBam(bamfile,\n", " param = Rsamtools::ScanBamParam(flag =scanBamFlag(isUnmappedQuery = FALSE),\n", " what = c(\"rname\", \"pos\", \"strand\", \"qwidth\"),\n", " tag = RGtag))[[1]]\n", " if(is.null(tags)){\n", " RGtags = unique(unlist(scanned$tag[RGtag]))\n", " }\n", " counts_mat = Matrix::Matrix(0, nrow = length(peaks), ncol = length(tags), sparse = TRUE)\n", " for(i in 1:length(tags)){\n", " tag = tags[i]\n", " if(VERBOSE){\n", " message(\"Processing tag \", tag)\n", " }\n", " match_RG <- which(scanned$tag[[RGtag]] == tag)\n", " # convert bamfiles to Genomic Ranges\n", " bam.gr = GenomicRanges::GRanges(seqnames = scanned$rname[match_RG],\n", " IRanges::IRanges(start = sapply(match_RG, function(i) ifelse(scanned$strand[i] == \"-\",\n", " scanned$pos[i] + scanned$qwidth[i] - 1,\n", " scanned$pos[i])),\n", " width = scanned$qwidth[match_RG]))\n", " counts_mat[,i] = GenomicRanges::countOverlaps(peaks, bam.gr, type = \"any\", ignore.strand = TRUE)\n", " }\n", " # counts = do.call(cbind, lapply(RGtags, function(x) getTagCounts(x, bamfile, peaks)))\n", " colnames(counts_mat) = tags\n", " return(counts_mat)\n", "}\n", " \n", "peaks2GRanges <- function(peaks, upstream = 0, downstream = 0){\n", " peaks.gr = with(peaks, GenomicRanges::GRanges(chrom, IRanges::IRanges(sapply(start, function(x) max(0, x - upstream)), end + downstream), \n", " id = name))#, pVal = pValue))\n", "}\n", "\n", "# peaks should be in GenomicRanges\n", "get_counts_from_bam <- function(bamfile, peaks){\n", " param = Rsamtools::ScanBamParam(flag =scanBamFlag(isUnmappedQuery = FALSE), \n", " which = peaks, \n", " what = c(\"rname\", \"pos\", \"strand\", \"qwidth\"))\n", " counts = Rsamtools::countBam(bamfile, param = param,\n", " flag = Rsamtools::scanBamFlag(isDuplicate = FALSE,\n", " isUnmappedQuery = FALSE))\n", " return(counts[,c(\"space\", \"start\", \"end\", \"file\", \"records\")])\n", "}\n", " \n", "\n", "getCountsMatrix <- function(bamfiles, peaks, PAIRED = FALSE,\n", " byReadGroup = FALSE, \n", " RGtag = 'RG',\n", " tags2include = NULL, \n", " VERBOSE = FALSE){\n", " peaks.gr = peaks2GRanges(peaks)\n", " if(VERBOSE){\n", " message(\"beginning reading in counts\\n\")\n", " }\n", " if(byReadGroup){\n", " if(VERBOSE){\n", " message(\"getting counts by read group\\n\")\n", " message(\"read group tag = \", RGtag, \"\\n\")\n", " }\n", " stopifnot(length(bamfiles) == 1)\n", " counts_mat = getCountsByReadGroup(bamfiles, peaks.gr, RGtag = RGtag, \n", " tags = tags2include);\n", " rownames(counts_mat) = peaks$name\n", " }\n", " else{\n", " nCells = length(bamfiles)\n", " counts_mat = matrix(nrow = length(peaks.gr), ncol = nCells)\n", " for(i in 1:nCells){\n", " if(VERBOSE){\n", " message(\"Processing file \", bamfiles[i])\n", " }\n", " # convert bamfiles to Genomic Ranges\n", " bam.gr = bam2gr(bamfiles[i], PAIRED = PAIRED)\n", " counts_mat[,i] = countOverlaps(peaks.gr, bam.gr, type = \"any\", ignore.strand = TRUE)\n", " }\n", " colnames(counts_mat) = bamfiles\n", " rownames(counts_mat) = peaks$name\n", " #counts_info = data.frame(chrom = counts_list[[1]]$space, start = counts_list[[1]]$start, end = counts_list[[1]]$end, name = peaks$id, pValue = peaks$pVal)\n", " }\n", " peaks = peaks[,c(\"chrom\", \"start\", \"end\", \"name\")]#, \"pValue\")]\n", " return(list(peaks = peaks, ForeGroundMatrix = Matrix::Matrix(counts_mat, sparse = TRUE)))\n", "}\n", " \n", " \n", "sort_peaks <- function(peaks){\n", " return(peaks[order(peaks$chrom, peaks$start), ])\n", "}\n", " \n", "selectPeaks <- function(filename, thresh = 2){\n", " peaks = read.table(file = filename, header = FALSE, sep = \"\\t\",\n", " stringsAsFactors = FALSE);\n", " if(dim(peaks)[2] == 15){\n", " # gapped peaks\n", " column_names = c(\"chrom\", \"start\", \"end\", \"name\", \"score\", \"strand\",\n", " \"thickStart\", \"thickEnd\", \"itemRgb\", \"blockCount\", \"blockSizes\",\n", " \"blockStarts\", \"signalValue\", \"pValue\", \"qValue\");\n", " colnames(peaks) = column_names\n", " wanted_peaks = which(peaks$pValue > thresh); # pValue is -log10(p), p < 0.1 => pValue > 2\n", " peaks = sort_peaks(peaks[wanted_peaks, ])\n", " }\n", " if(dim(peaks)[2] == 10){\n", " # narrow peaks\n", " column_names = c(\"chrom\", \"start\", \"end\", \"name\", \"score\", \"strand\",\n", " \"foldChange\", \"pValue\", \"qValue\", \"summit2PeakDist\")\n", " colnames(peaks) = column_names\n", " wanted_peaks = which(peaks$pValue > thresh); # pValue is -log10(p), p < 0.1 => pValue > 2\n", " peaks = sort_peaks(peaks[wanted_peaks, ])\n", " }\n", " \n", " # mine \n", " if(dim(peaks)[2] == 3){\n", " # gapped peaks\n", " column_names = c(\"chrom\", \"start\", \"end\");\n", " colnames(peaks) = column_names\n", " peaks = sort_peaks(peaks)\n", " }\n", " return(peaks)\n", "}\n", " \n", " \n", "getBackground <- function(bamfiles, peaks, upstream = 500000,\n", " downstream = 500000, byReadGroup = FALSE,\n", " VERBOSE = FALSE, PAIRED = FALSE){\n", " nCells = length(bamfiles)\n", " background_peaks.gr = peaks2GRanges(peaks, upstream, downstream)\n", " if(byReadGroup){\n", " counts_mat = getCountsByReadGroup2(bamfile, background_peaks.gr);\n", " rownames(counts_mat) = peaks$name\n", " }\n", " else{\n", " counts_mat = matrix(nrow = length(background_peaks.gr), ncol = nCells)\n", " for(i in 1:nCells){\n", " if(VERBOSE){\n", " message(\"Processing file \", bamfiles[i])\n", " }\n", " # convert bamfiles to Genomic Ranges\n", " bam.gr = bam2gr(bamfiles[i], PAIRED = PAIRED)\n", " counts_mat[,i] = countOverlaps(background_peaks.gr, bam.gr, type = \"any\", ignore.strand = TRUE)\n", " }\n", " colnames(counts_mat) = bamfiles\n", " rownames(counts_mat) = peaks$name\n", " #counts_info = data.frame(chrom = counts_list[[1]]$space, start = counts_list[[1]]$start, end = counts_list[[1]]$end, name = peaks$id, pValue = peaks$pVal)\n", " }\n", " peaks = peaks[,c(\"chrom\", \"start\", \"end\", \"name\")]#, \"pValue\")]\n", " return(list(peaks = peaks, BackGroundMatrix = Matrix::Matrix(counts_mat, sparse = TRUE)))\n", "}" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Obtain Feature Matrix" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "start_time <- Sys.time()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "metadata <- read.table('../../input/metadata.tsv',\n", " header = TRUE,\n", " stringsAsFactors=FALSE,quote=\"\",row.names=1)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# loading input 1: single-cell BAM files\n", "bamfiles <- list.files(\"../../input/sc-bams_nodup/\", \n", " pattern = \"*.bam\", full.names = TRUE)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "5335" ], "text/latex": [ "5335" ], "text/markdown": [ "5335" ], "text/plain": [ "[1] 5335" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "length(bamfiles)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 97998
  2. \n", "\t
  3. 4
  4. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 97998\n", "\\item 4\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 97998\n", "2. 4\n", "\n", "\n" ], "text/plain": [ "[1] 97998 4" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
chromstartendname
chr1 10244 10510 Peak_chr1_10244_10510
chr1 237575 237942 Peak_chr1_237575_237942
chr1 565098 565554 Peak_chr1_565098_565554
chr1 569172 569645 Peak_chr1_569172_569645
chr1 713421 715095 Peak_chr1_713421_715095
chr1 752386 753061 Peak_chr1_752386_753061
\n" ], "text/latex": [ "\\begin{tabular}{r|llll}\n", " chrom & start & end & name\\\\\n", "\\hline\n", "\t chr1 & 10244 & 10510 & Peak\\_chr1\\_10244\\_10510 \\\\\n", "\t chr1 & 237575 & 237942 & Peak\\_chr1\\_237575\\_237942\\\\\n", "\t chr1 & 565098 & 565554 & Peak\\_chr1\\_565098\\_565554\\\\\n", "\t chr1 & 569172 & 569645 & Peak\\_chr1\\_569172\\_569645\\\\\n", "\t chr1 & 713421 & 715095 & Peak\\_chr1\\_713421\\_715095\\\\\n", "\t chr1 & 752386 & 753061 & Peak\\_chr1\\_752386\\_753061\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "| chrom | start | end | name |\n", "|---|---|---|---|\n", "| chr1 | 10244 | 10510 | Peak_chr1_10244_10510 |\n", "| chr1 | 237575 | 237942 | Peak_chr1_237575_237942 |\n", "| chr1 | 565098 | 565554 | Peak_chr1_565098_565554 |\n", "| chr1 | 569172 | 569645 | Peak_chr1_569172_569645 |\n", "| chr1 | 713421 | 715095 | Peak_chr1_713421_715095 |\n", "| chr1 | 752386 | 753061 | Peak_chr1_752386_753061 |\n", "\n" ], "text/plain": [ " chrom start end name \n", "1 chr1 10244 10510 Peak_chr1_10244_10510 \n", "2 chr1 237575 237942 Peak_chr1_237575_237942\n", "3 chr1 565098 565554 Peak_chr1_565098_565554\n", "4 chr1 569172 569645 Peak_chr1_569172_569645\n", "5 chr1 713421 715095 Peak_chr1_713421_715095\n", "6 chr1 752386 753061 Peak_chr1_752386_753061" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# loading input 2: peaks file\n", "peaks <- selectPeaks(\"../../input/atac_v1_pbmc_5k_peaks.bed\")\n", "peaks$name <- paste(\"Peak\", peaks$chrom, peaks$start, peaks$end, sep = \"_\")\n", "dim(peaks)\n", "head(peaks)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": true }, "outputs": [], "source": [ "ForeGround <- getCountsMatrix(bamfiles, peaks) " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "ForeGroundFiltered <- filterPeaks(ForeGround$ForeGroundMatrix, peaks, \n", " nreads_thresh = 1, \n", " ncells_thresh = length(bamfiles)*0.01)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 97998
  2. \n", "\t
  3. 4
  4. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 97998\n", "\\item 4\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 97998\n", "2. 4\n", "\n", "\n" ], "text/plain": [ "[1] 97998 4" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
    \n", "\t
  1. 69886
  2. \n", "\t
  3. 4
  4. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 69886\n", "\\item 4\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 69886\n", "2. 4\n", "\n", "\n" ], "text/plain": [ "[1] 69886 4" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dim(peaks)\n", "dim(ForeGroundFiltered$peaks)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "fm_scABC = as.matrix(ForeGroundFiltered$ForeGroundMatrix)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 12, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 69886
  2. \n", "\t
  3. 5335
  4. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 69886\n", "\\item 5335\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 69886\n", "2. 5335\n", "\n", "\n" ], "text/plain": [ "[1] 69886 5335" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGCGCAATG-1.dedup.st.bam../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGGGTATCG-1.dedup.st.bam../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTAACATG-1.dedup.st.bam../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTTACACC-1.dedup.st.bam../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAACAGAGATGC-1.dedup.st.bam
Peak_chr1_10244_105102 0 47 0
Peak_chr1_237575_2379420 0 00 0
Peak_chr1_565098_5655540 0 60 0
Peak_chr1_569172_5696450 0 86 1
Peak_chr1_713421_7150954 4 104 0
\n" ], "text/latex": [ "\\begin{tabular}{r|lllll}\n", " & ../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAACGAAAGCGCAATG-1.dedup.st.bam & ../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAACGAAAGGGTATCG-1.dedup.st.bam & ../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAACGAAAGTAACATG-1.dedup.st.bam & ../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAACGAAAGTTACACC-1.dedup.st.bam & ../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAACGAACAGAGATGC-1.dedup.st.bam\\\\\n", "\\hline\n", "\tPeak\\_chr1\\_10244\\_10510 & 2 & 0 & 4 & 7 & 0 \\\\\n", "\tPeak\\_chr1\\_237575\\_237942 & 0 & 0 & 0 & 0 & 0 \\\\\n", "\tPeak\\_chr1\\_565098\\_565554 & 0 & 0 & 6 & 0 & 0 \\\\\n", "\tPeak\\_chr1\\_569172\\_569645 & 0 & 0 & 8 & 6 & 1 \\\\\n", "\tPeak\\_chr1\\_713421\\_715095 & 4 & 4 & 10 & 4 & 0 \\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "| | ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGCGCAATG-1.dedup.st.bam | ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGGGTATCG-1.dedup.st.bam | ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTAACATG-1.dedup.st.bam | ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTTACACC-1.dedup.st.bam | ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAACAGAGATGC-1.dedup.st.bam |\n", "|---|---|---|---|---|---|\n", "| Peak_chr1_10244_10510 | 2 | 0 | 4 | 7 | 0 |\n", "| Peak_chr1_237575_237942 | 0 | 0 | 0 | 0 | 0 |\n", "| Peak_chr1_565098_565554 | 0 | 0 | 6 | 0 | 0 |\n", "| Peak_chr1_569172_569645 | 0 | 0 | 8 | 6 | 1 |\n", "| Peak_chr1_713421_715095 | 4 | 4 | 10 | 4 | 0 |\n", "\n" ], "text/plain": [ " ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGCGCAATG-1.dedup.st.bam\n", "Peak_chr1_10244_10510 2 \n", "Peak_chr1_237575_237942 0 \n", "Peak_chr1_565098_565554 0 \n", "Peak_chr1_569172_569645 0 \n", "Peak_chr1_713421_715095 4 \n", " ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGGGTATCG-1.dedup.st.bam\n", "Peak_chr1_10244_10510 0 \n", "Peak_chr1_237575_237942 0 \n", "Peak_chr1_565098_565554 0 \n", "Peak_chr1_569172_569645 0 \n", "Peak_chr1_713421_715095 4 \n", " ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTAACATG-1.dedup.st.bam\n", "Peak_chr1_10244_10510 4 \n", "Peak_chr1_237575_237942 0 \n", "Peak_chr1_565098_565554 6 \n", "Peak_chr1_569172_569645 8 \n", "Peak_chr1_713421_715095 10 \n", " ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTTACACC-1.dedup.st.bam\n", "Peak_chr1_10244_10510 7 \n", "Peak_chr1_237575_237942 0 \n", "Peak_chr1_565098_565554 0 \n", "Peak_chr1_569172_569645 6 \n", "Peak_chr1_713421_715095 4 \n", " ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAACAGAGATGC-1.dedup.st.bam\n", "Peak_chr1_10244_10510 0 \n", "Peak_chr1_237575_237942 0 \n", "Peak_chr1_565098_565554 0 \n", "Peak_chr1_569172_569645 1 \n", "Peak_chr1_713421_715095 0 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dim(fm_scABC)\n", "fm_scABC[1:5,1:5]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "end_time <- Sys.time()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Time difference of 11.69225 mins" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "end_time - start_time" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "TRUE" ], "text/latex": [ "TRUE" ], "text/markdown": [ "TRUE" ], "text/plain": [ "[1] TRUE" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "all(sapply(strsplit(basename(colnames(fm_scABC)),'\\\\.'),'[', 2) == rownames(metadata))" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "colnames(fm_scABC) = rownames(metadata)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 69886
  2. \n", "\t
  3. 5335
  4. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 69886\n", "\\item 5335\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 69886\n", "2. 5335\n", "\n", "\n" ], "text/plain": [ "[1] 69886 5335" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
AAACGAAAGCGCAATG-1AAACGAAAGGGTATCG-1AAACGAAAGTAACATG-1AAACGAAAGTTACACC-1AAACGAACAGAGATGC-1
Peak_chr1_10244_105102 0 47 0
Peak_chr1_237575_2379420 0 00 0
Peak_chr1_565098_5655540 0 60 0
Peak_chr1_569172_5696450 0 86 1
Peak_chr1_713421_7150954 4 104 0
\n" ], "text/latex": [ "\\begin{tabular}{r|lllll}\n", " & AAACGAAAGCGCAATG-1 & AAACGAAAGGGTATCG-1 & AAACGAAAGTAACATG-1 & AAACGAAAGTTACACC-1 & AAACGAACAGAGATGC-1\\\\\n", "\\hline\n", "\tPeak\\_chr1\\_10244\\_10510 & 2 & 0 & 4 & 7 & 0 \\\\\n", "\tPeak\\_chr1\\_237575\\_237942 & 0 & 0 & 0 & 0 & 0 \\\\\n", "\tPeak\\_chr1\\_565098\\_565554 & 0 & 0 & 6 & 0 & 0 \\\\\n", "\tPeak\\_chr1\\_569172\\_569645 & 0 & 0 & 8 & 6 & 1 \\\\\n", "\tPeak\\_chr1\\_713421\\_715095 & 4 & 4 & 10 & 4 & 0 \\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "| | AAACGAAAGCGCAATG-1 | AAACGAAAGGGTATCG-1 | AAACGAAAGTAACATG-1 | AAACGAAAGTTACACC-1 | AAACGAACAGAGATGC-1 |\n", "|---|---|---|---|---|---|\n", "| Peak_chr1_10244_10510 | 2 | 0 | 4 | 7 | 0 |\n", "| Peak_chr1_237575_237942 | 0 | 0 | 0 | 0 | 0 |\n", "| Peak_chr1_565098_565554 | 0 | 0 | 6 | 0 | 0 |\n", "| Peak_chr1_569172_569645 | 0 | 0 | 8 | 6 | 1 |\n", "| Peak_chr1_713421_715095 | 4 | 4 | 10 | 4 | 0 |\n", "\n" ], "text/plain": [ " AAACGAAAGCGCAATG-1 AAACGAAAGGGTATCG-1\n", "Peak_chr1_10244_10510 2 0 \n", "Peak_chr1_237575_237942 0 0 \n", "Peak_chr1_565098_565554 0 0 \n", "Peak_chr1_569172_569645 0 0 \n", "Peak_chr1_713421_715095 4 4 \n", " AAACGAAAGTAACATG-1 AAACGAAAGTTACACC-1\n", "Peak_chr1_10244_10510 4 7 \n", "Peak_chr1_237575_237942 0 0 \n", "Peak_chr1_565098_565554 6 0 \n", "Peak_chr1_569172_569645 8 6 \n", "Peak_chr1_713421_715095 10 4 \n", " AAACGAACAGAGATGC-1\n", "Peak_chr1_10244_10510 0 \n", "Peak_chr1_237575_237942 0 \n", "Peak_chr1_565098_565554 0 \n", "Peak_chr1_569172_569645 1 \n", "Peak_chr1_713421_715095 0 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dim(fm_scABC)\n", "fm_scABC[1:5,1:5]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "saveRDS(fm_scABC, file = '../../output/feature_matrices/FM_scABC_10xpbmc5k.rds')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Downstream Analysis" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "### Instead of normalizing the peaks-by-cells matrix, \n", "### weights calculated below will be used in k-medoid clustering step based on cell dissimilarity matrix: WeightedCluster::wcKMedoids(FGdist, k = nCluster, weights = weights);\n", "### so it's not considered as part of feature matrix construction\n", "\n", "\n", "# BackGround <- getBackground(bamfiles, ForeGroundFiltered$peaks, \n", "# upstream = 5e+05, downstream = 5e+05,\n", "# PAIRED = FALSE, byReadGroup = FALSE)\n", "\n", "# InSilicoForeGround = ForeGroundFiltered$ForeGroundMatrix\n", "# InSilicoBackGround = BackGround$BackGroundMatrix\n", "# InSilicoPeaks = ForeGroundFiltered$peaks\n", "\n", "# fg.mat <- Matrix::Matrix(InSilicoForeGround, sparse = TRUE)\n", "# bg.mat <- Matrix::Matrix(InSilicoBackGround, sparse = TRUE);\n", "\n", "# weights = apply(bg.mat, 2, median);\n", "# c = min(8, median(weights))\n", "# # compute weighted k-medioids\n", "# lambda = 1.0\n", "# FGdist = 1 - sparseSpearmanCor(ForeGround);\n", "# weights = 1/(1 + exp(-(weights - c)/(c*lambda)));" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "BackGround <- getBackground(bamfiles, ForeGroundFiltered$peaks, \n", " upstream = 5e+05, downstream = 5e+05,\n", " PAIRED = FALSE, byReadGroup = FALSE)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "InSilicoForeGround = ForeGroundFiltered$ForeGroundMatrix\n", "InSilicoBackGround = BackGround$BackGroundMatrix\n", "InSilicoPeaks = ForeGroundFiltered$peaks" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "#compute the landmarks\n", "InSilicoLandMarks = computeLandmarks(ForeGround = InSilicoForeGround, \n", " BackGround = InSilicoBackGround, \n", " nCluster = length(unique(metadata$label)), lambda = 1, nTop = 2000)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
1.00000000.82622420.80662600.70887280.71862890.12121910.86498770.9240293
0.82622421.00000000.76893060.70488950.70992960.12556440.89331180.8471880
0.80662600.76893061.00000000.70641700.71238470.12084600.79063020.8075687
0.70887280.70488950.70641701.00000000.92568620.12525570.69501670.6997389
0.71862890.70992960.71238470.92568621.00000000.12448490.70056870.7088882
0.12121910.12556440.12084600.12525570.12448491.00000000.12764950.1237597
0.86498770.89331180.79063020.69501670.70056870.12764951.00000000.9058648
0.92402930.84718800.80756870.69973890.70888820.12375970.90586481.0000000
\n" ], "text/latex": [ "\\begin{tabular}{llllllll}\n", "\t 1.0000000 & 0.8262242 & 0.8066260 & 0.7088728 & 0.7186289 & 0.1212191 & 0.8649877 & 0.9240293\\\\\n", "\t 0.8262242 & 1.0000000 & 0.7689306 & 0.7048895 & 0.7099296 & 0.1255644 & 0.8933118 & 0.8471880\\\\\n", "\t 0.8066260 & 0.7689306 & 1.0000000 & 0.7064170 & 0.7123847 & 0.1208460 & 0.7906302 & 0.8075687\\\\\n", "\t 0.7088728 & 0.7048895 & 0.7064170 & 1.0000000 & 0.9256862 & 0.1252557 & 0.6950167 & 0.6997389\\\\\n", "\t 0.7186289 & 0.7099296 & 0.7123847 & 0.9256862 & 1.0000000 & 0.1244849 & 0.7005687 & 0.7088882\\\\\n", "\t 0.1212191 & 0.1255644 & 0.1208460 & 0.1252557 & 0.1244849 & 1.0000000 & 0.1276495 & 0.1237597\\\\\n", "\t 0.8649877 & 0.8933118 & 0.7906302 & 0.6950167 & 0.7005687 & 0.1276495 & 1.0000000 & 0.9058648\\\\\n", "\t 0.9240293 & 0.8471880 & 0.8075687 & 0.6997389 & 0.7088882 & 0.1237597 & 0.9058648 & 1.0000000\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "| 1.0000000 | 0.8262242 | 0.8066260 | 0.7088728 | 0.7186289 | 0.1212191 | 0.8649877 | 0.9240293 |\n", "| 0.8262242 | 1.0000000 | 0.7689306 | 0.7048895 | 0.7099296 | 0.1255644 | 0.8933118 | 0.8471880 |\n", "| 0.8066260 | 0.7689306 | 1.0000000 | 0.7064170 | 0.7123847 | 0.1208460 | 0.7906302 | 0.8075687 |\n", "| 0.7088728 | 0.7048895 | 0.7064170 | 1.0000000 | 0.9256862 | 0.1252557 | 0.6950167 | 0.6997389 |\n", "| 0.7186289 | 0.7099296 | 0.7123847 | 0.9256862 | 1.0000000 | 0.1244849 | 0.7005687 | 0.7088882 |\n", "| 0.1212191 | 0.1255644 | 0.1208460 | 0.1252557 | 0.1244849 | 1.0000000 | 0.1276495 | 0.1237597 |\n", "| 0.8649877 | 0.8933118 | 0.7906302 | 0.6950167 | 0.7005687 | 0.1276495 | 1.0000000 | 0.9058648 |\n", "| 0.9240293 | 0.8471880 | 0.8075687 | 0.6997389 | 0.7088882 | 0.1237597 | 0.9058648 | 1.0000000 |\n", "\n" ], "text/plain": [ " [,1] [,2] [,3] [,4] [,5] [,6] [,7] \n", "[1,] 1.0000000 0.8262242 0.8066260 0.7088728 0.7186289 0.1212191 0.8649877\n", "[2,] 0.8262242 1.0000000 0.7689306 0.7048895 0.7099296 0.1255644 0.8933118\n", "[3,] 0.8066260 0.7689306 1.0000000 0.7064170 0.7123847 0.1208460 0.7906302\n", "[4,] 0.7088728 0.7048895 0.7064170 1.0000000 0.9256862 0.1252557 0.6950167\n", "[5,] 0.7186289 0.7099296 0.7123847 0.9256862 1.0000000 0.1244849 0.7005687\n", "[6,] 0.1212191 0.1255644 0.1208460 0.1252557 0.1244849 1.0000000 0.1276495\n", "[7,] 0.8649877 0.8933118 0.7906302 0.6950167 0.7005687 0.1276495 1.0000000\n", "[8,] 0.9240293 0.8471880 0.8075687 0.6997389 0.7088882 0.1237597 0.9058648\n", " [,8] \n", "[1,] 0.9240293\n", "[2,] 0.8471880\n", "[3,] 0.8075687\n", "[4,] 0.6997389\n", "[5,] 0.7088882\n", "[6,] 0.1237597\n", "[7,] 0.9058648\n", "[8,] 1.0000000" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cor(InSilicoLandMarks, InSilicoLandMarks, method = 'spearman')" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "# assign cells to the closest landmark #\n", "InSilicoLandMarkAssignments = assign2landmarks(InSilicoForeGround, InSilicoLandMarks)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 69886
  2. \n", "\t
  3. 8
  4. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 69886\n", "\\item 8\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 69886\n", "2. 8\n", "\n", "\n" ], "text/plain": [ "[1] 69886 8" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
Peak_chr1_10244_10510 00 00 0 5 0 0
Peak_chr1_237575_237942 00 00 0 0 0 0
Peak_chr1_565098_56555415280 9890 0 9 0 0
Peak_chr1_569172_56964516070 10350 0 17 0 0
Peak_chr1_713421_715095 00 00 0 0 0 0
Peak_chr1_752386_753061 00 00 0 0 0 0
\n" ], "text/latex": [ "\\begin{tabular}{r|llllllll}\n", "\tPeak\\_chr1\\_10244\\_10510 & 0 & 0 & 0 & 0 & 0 & 5 & 0 & 0 \\\\\n", "\tPeak\\_chr1\\_237575\\_237942 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", "\tPeak\\_chr1\\_565098\\_565554 & 1528 & 0 & 989 & 0 & 0 & 9 & 0 & 0 \\\\\n", "\tPeak\\_chr1\\_569172\\_569645 & 1607 & 0 & 1035 & 0 & 0 & 17 & 0 & 0 \\\\\n", "\tPeak\\_chr1\\_713421\\_715095 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", "\tPeak\\_chr1\\_752386\\_753061 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "| Peak_chr1_10244_10510 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 |\n", "| Peak_chr1_237575_237942 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", "| Peak_chr1_565098_565554 | 1528 | 0 | 989 | 0 | 0 | 9 | 0 | 0 |\n", "| Peak_chr1_569172_569645 | 1607 | 0 | 1035 | 0 | 0 | 17 | 0 | 0 |\n", "| Peak_chr1_713421_715095 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", "| Peak_chr1_752386_753061 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", "\n" ], "text/plain": [ " [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]\n", "Peak_chr1_10244_10510 0 0 0 0 0 5 0 0 \n", "Peak_chr1_237575_237942 0 0 0 0 0 0 0 0 \n", "Peak_chr1_565098_565554 1528 0 989 0 0 9 0 0 \n", "Peak_chr1_569172_569645 1607 0 1035 0 0 17 0 0 \n", "Peak_chr1_713421_715095 0 0 0 0 0 0 0 0 \n", "Peak_chr1_752386_753061 0 0 0 0 0 0 0 0 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dim(InSilicoLandMarks)\n", "head(InSilicoLandMarks)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "InSilicoCell2LandmarkCorrelation = do.call(cbind, \n", " lapply(seq(length(unique(metadata$label))), \n", " function(i) apply(InSilicoForeGround, 2, \n", " function(x) cor(x, InSilicoLandMarks[,i], method = 'spearman'))))" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 5335
  2. \n", "\t
  3. 8
  4. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 5335\n", "\\item 8\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 5335\n", "2. 8\n", "\n", "\n" ], "text/plain": [ "[1] 5335 8" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGCGCAATG-1.dedup.st.bam0.34934150.34339830.34379180.37362910.3787479
../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGGGTATCG-1.dedup.st.bam0.32204300.31216380.31811220.34215660.3406137
../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTAACATG-1.dedup.st.bam0.37801580.37881470.36387120.34182820.3461915
../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTTACACC-1.dedup.st.bam0.37195880.37738370.36480610.33828990.3422293
../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAACAGAGATGC-1.dedup.st.bam0.26122690.26384850.27171750.29389910.2932577
\n" ], "text/latex": [ "\\begin{tabular}{r|lllll}\n", "\t../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAACGAAAGCGCAATG-1.dedup.st.bam & 0.3493415 & 0.3433983 & 0.3437918 & 0.3736291 & 0.3787479\\\\\n", "\t../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAACGAAAGGGTATCG-1.dedup.st.bam & 0.3220430 & 0.3121638 & 0.3181122 & 0.3421566 & 0.3406137\\\\\n", "\t../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAACGAAAGTAACATG-1.dedup.st.bam & 0.3780158 & 0.3788147 & 0.3638712 & 0.3418282 & 0.3461915\\\\\n", "\t../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAACGAAAGTTACACC-1.dedup.st.bam & 0.3719588 & 0.3773837 & 0.3648061 & 0.3382899 & 0.3422293\\\\\n", "\t../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAACGAACAGAGATGC-1.dedup.st.bam & 0.2612269 & 0.2638485 & 0.2717175 & 0.2938991 & 0.2932577\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "| ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGCGCAATG-1.dedup.st.bam | 0.3493415 | 0.3433983 | 0.3437918 | 0.3736291 | 0.3787479 |\n", "| ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGGGTATCG-1.dedup.st.bam | 0.3220430 | 0.3121638 | 0.3181122 | 0.3421566 | 0.3406137 |\n", "| ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTAACATG-1.dedup.st.bam | 0.3780158 | 0.3788147 | 0.3638712 | 0.3418282 | 0.3461915 |\n", "| ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTTACACC-1.dedup.st.bam | 0.3719588 | 0.3773837 | 0.3648061 | 0.3382899 | 0.3422293 |\n", "| ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAACAGAGATGC-1.dedup.st.bam | 0.2612269 | 0.2638485 | 0.2717175 | 0.2938991 | 0.2932577 |\n", "\n" ], "text/plain": [ " [,1] \n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGCGCAATG-1.dedup.st.bam 0.3493415\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGGGTATCG-1.dedup.st.bam 0.3220430\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTAACATG-1.dedup.st.bam 0.3780158\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTTACACC-1.dedup.st.bam 0.3719588\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAACAGAGATGC-1.dedup.st.bam 0.2612269\n", " [,2] \n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGCGCAATG-1.dedup.st.bam 0.3433983\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGGGTATCG-1.dedup.st.bam 0.3121638\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTAACATG-1.dedup.st.bam 0.3788147\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTTACACC-1.dedup.st.bam 0.3773837\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAACAGAGATGC-1.dedup.st.bam 0.2638485\n", " [,3] \n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGCGCAATG-1.dedup.st.bam 0.3437918\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGGGTATCG-1.dedup.st.bam 0.3181122\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTAACATG-1.dedup.st.bam 0.3638712\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTTACACC-1.dedup.st.bam 0.3648061\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAACAGAGATGC-1.dedup.st.bam 0.2717175\n", " [,4] \n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGCGCAATG-1.dedup.st.bam 0.3736291\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGGGTATCG-1.dedup.st.bam 0.3421566\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTAACATG-1.dedup.st.bam 0.3418282\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTTACACC-1.dedup.st.bam 0.3382899\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAACAGAGATGC-1.dedup.st.bam 0.2938991\n", " [,5] \n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGCGCAATG-1.dedup.st.bam 0.3787479\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGGGTATCG-1.dedup.st.bam 0.3406137\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTAACATG-1.dedup.st.bam 0.3461915\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAAAGTTACACC-1.dedup.st.bam 0.3422293\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAACAGAGATGC-1.dedup.st.bam 0.2932577" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dim(InSilicoCell2LandmarkCorrelation)\n", "InSilicoCell2LandmarkCorrelation[1:5,1:5]" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "InSilicoLandMarkAssignments_sorted <- InSilicoLandMarkAssignments[order(InSilicoLandMarkAssignments)]\n", "InSilicoCell2LandmarkCorrelation_sorted <- InSilicoCell2LandmarkCorrelation[names(InSilicoLandMarkAssignments_sorted),]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGACTATG-1.dedup.st.bam0.4007094 0.3885342 0.3864865 0.3515307 0.3564914 0.125702300.3935716 0.4013180
../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGCAAGCC-1.dedup.st.bam0.4262815 0.4058859 0.3980693 0.3652951 0.3698605 0.111624750.4112844 0.4222817
../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTCGAGGGTCCCT-1.dedup.st.bam0.4199087 0.4105926 0.4037425 0.3760156 0.3805554 0.125510010.4169034 0.4180284
../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCAGAGCAGCT-1.dedup.st.bam0.2931019 0.2788678 0.2882370 0.2447565 0.2488058 0.076724410.2851668 0.2930569
../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCTCGAGCGCT-1.dedup.st.bam0.4132854 0.3963544 0.3878792 0.3598486 0.3659756 0.100315570.4011866 0.4079514
../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAATGAGAGAAATTCG-1.dedup.st.bam0.4093883 0.3857906 0.3858714 0.3567724 0.3616261 0.109396330.3936608 0.4046630
\n" ], "text/latex": [ "\\begin{tabular}{r|llllllll}\n", "\t../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAACGAATCGACTATG-1.dedup.st.bam & 0.4007094 & 0.3885342 & 0.3864865 & 0.3515307 & 0.3564914 & 0.12570230 & 0.3935716 & 0.4013180 \\\\\n", "\t../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAACGAATCGCAAGCC-1.dedup.st.bam & 0.4262815 & 0.4058859 & 0.3980693 & 0.3652951 & 0.3698605 & 0.11162475 & 0.4112844 & 0.4222817 \\\\\n", "\t../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAACTCGAGGGTCCCT-1.dedup.st.bam & 0.4199087 & 0.4105926 & 0.4037425 & 0.3760156 & 0.3805554 & 0.12551001 & 0.4169034 & 0.4180284 \\\\\n", "\t../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAACTGCAGAGCAGCT-1.dedup.st.bam & 0.2931019 & 0.2788678 & 0.2882370 & 0.2447565 & 0.2488058 & 0.07672441 & 0.2851668 & 0.2930569 \\\\\n", "\t../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAACTGCTCGAGCGCT-1.dedup.st.bam & 0.4132854 & 0.3963544 & 0.3878792 & 0.3598486 & 0.3659756 & 0.10031557 & 0.4011866 & 0.4079514 \\\\\n", "\t../../input/sc-bams\\_nodup//atac\\_v1\\_pbmc\\_5k\\_possorted\\_bam.AAATGAGAGAAATTCG-1.dedup.st.bam & 0.4093883 & 0.3857906 & 0.3858714 & 0.3567724 & 0.3616261 & 0.10939633 & 0.3936608 & 0.4046630 \\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "| ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGACTATG-1.dedup.st.bam | 0.4007094 | 0.3885342 | 0.3864865 | 0.3515307 | 0.3564914 | 0.12570230 | 0.3935716 | 0.4013180 |\n", "| ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGCAAGCC-1.dedup.st.bam | 0.4262815 | 0.4058859 | 0.3980693 | 0.3652951 | 0.3698605 | 0.11162475 | 0.4112844 | 0.4222817 |\n", "| ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTCGAGGGTCCCT-1.dedup.st.bam | 0.4199087 | 0.4105926 | 0.4037425 | 0.3760156 | 0.3805554 | 0.12551001 | 0.4169034 | 0.4180284 |\n", "| ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCAGAGCAGCT-1.dedup.st.bam | 0.2931019 | 0.2788678 | 0.2882370 | 0.2447565 | 0.2488058 | 0.07672441 | 0.2851668 | 0.2930569 |\n", "| ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCTCGAGCGCT-1.dedup.st.bam | 0.4132854 | 0.3963544 | 0.3878792 | 0.3598486 | 0.3659756 | 0.10031557 | 0.4011866 | 0.4079514 |\n", "| ../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAATGAGAGAAATTCG-1.dedup.st.bam | 0.4093883 | 0.3857906 | 0.3858714 | 0.3567724 | 0.3616261 | 0.10939633 | 0.3936608 | 0.4046630 |\n", "\n" ], "text/plain": [ " [,1] \n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGACTATG-1.dedup.st.bam 0.4007094\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGCAAGCC-1.dedup.st.bam 0.4262815\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTCGAGGGTCCCT-1.dedup.st.bam 0.4199087\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCAGAGCAGCT-1.dedup.st.bam 0.2931019\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCTCGAGCGCT-1.dedup.st.bam 0.4132854\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAATGAGAGAAATTCG-1.dedup.st.bam 0.4093883\n", " [,2] \n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGACTATG-1.dedup.st.bam 0.3885342\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGCAAGCC-1.dedup.st.bam 0.4058859\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTCGAGGGTCCCT-1.dedup.st.bam 0.4105926\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCAGAGCAGCT-1.dedup.st.bam 0.2788678\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCTCGAGCGCT-1.dedup.st.bam 0.3963544\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAATGAGAGAAATTCG-1.dedup.st.bam 0.3857906\n", " [,3] \n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGACTATG-1.dedup.st.bam 0.3864865\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGCAAGCC-1.dedup.st.bam 0.3980693\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTCGAGGGTCCCT-1.dedup.st.bam 0.4037425\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCAGAGCAGCT-1.dedup.st.bam 0.2882370\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCTCGAGCGCT-1.dedup.st.bam 0.3878792\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAATGAGAGAAATTCG-1.dedup.st.bam 0.3858714\n", " [,4] \n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGACTATG-1.dedup.st.bam 0.3515307\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGCAAGCC-1.dedup.st.bam 0.3652951\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTCGAGGGTCCCT-1.dedup.st.bam 0.3760156\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCAGAGCAGCT-1.dedup.st.bam 0.2447565\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCTCGAGCGCT-1.dedup.st.bam 0.3598486\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAATGAGAGAAATTCG-1.dedup.st.bam 0.3567724\n", " [,5] \n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGACTATG-1.dedup.st.bam 0.3564914\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGCAAGCC-1.dedup.st.bam 0.3698605\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTCGAGGGTCCCT-1.dedup.st.bam 0.3805554\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCAGAGCAGCT-1.dedup.st.bam 0.2488058\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCTCGAGCGCT-1.dedup.st.bam 0.3659756\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAATGAGAGAAATTCG-1.dedup.st.bam 0.3616261\n", " [,6] \n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGACTATG-1.dedup.st.bam 0.12570230\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGCAAGCC-1.dedup.st.bam 0.11162475\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTCGAGGGTCCCT-1.dedup.st.bam 0.12551001\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCAGAGCAGCT-1.dedup.st.bam 0.07672441\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCTCGAGCGCT-1.dedup.st.bam 0.10031557\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAATGAGAGAAATTCG-1.dedup.st.bam 0.10939633\n", " [,7] \n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGACTATG-1.dedup.st.bam 0.3935716\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGCAAGCC-1.dedup.st.bam 0.4112844\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTCGAGGGTCCCT-1.dedup.st.bam 0.4169034\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCAGAGCAGCT-1.dedup.st.bam 0.2851668\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCTCGAGCGCT-1.dedup.st.bam 0.4011866\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAATGAGAGAAATTCG-1.dedup.st.bam 0.3936608\n", " [,8] \n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGACTATG-1.dedup.st.bam 0.4013180\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACGAATCGCAAGCC-1.dedup.st.bam 0.4222817\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTCGAGGGTCCCT-1.dedup.st.bam 0.4180284\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCAGAGCAGCT-1.dedup.st.bam 0.2930569\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAACTGCTCGAGCGCT-1.dedup.st.bam 0.4079514\n", "../../input/sc-bams_nodup//atac_v1_pbmc_5k_possorted_bam.AAATGAGAGAAATTCG-1.dedup.st.bam 0.4046630" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "head(InSilicoCell2LandmarkCorrelation_sorted)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 'AAACGAATCGACTATG-1'
  2. \n", "\t
  3. 'AAACGAATCGCAAGCC-1'
  4. \n", "\t
  5. 'AAACTCGAGGGTCCCT-1'
  6. \n", "\t
  7. 'AAACTGCAGAGCAGCT-1'
  8. \n", "\t
  9. 'AAACTGCTCGAGCGCT-1'
  10. \n", "\t
  11. 'AAATGAGAGAAATTCG-1'
  12. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'AAACGAATCGACTATG-1'\n", "\\item 'AAACGAATCGCAAGCC-1'\n", "\\item 'AAACTCGAGGGTCCCT-1'\n", "\\item 'AAACTGCAGAGCAGCT-1'\n", "\\item 'AAACTGCTCGAGCGCT-1'\n", "\\item 'AAATGAGAGAAATTCG-1'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'AAACGAATCGACTATG-1'\n", "2. 'AAACGAATCGCAAGCC-1'\n", "3. 'AAACTCGAGGGTCCCT-1'\n", "4. 'AAACTGCAGAGCAGCT-1'\n", "5. 'AAACTGCTCGAGCGCT-1'\n", "6. 'AAATGAGAGAAATTCG-1'\n", "\n", "\n" ], "text/plain": [ "[1] \"AAACGAATCGACTATG-1\" \"AAACGAATCGCAAGCC-1\" \"AAACTCGAGGGTCCCT-1\"\n", "[4] \"AAACTGCAGAGCAGCT-1\" \"AAACTGCTCGAGCGCT-1\" \"AAATGAGAGAAATTCG-1\"" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
    \n", "\t
  1. 6
  2. \n", "\t
  3. 6
  4. \n", "\t
  5. 3
  6. \n", "\t
  7. 6
  8. \n", "\t
  9. 3
  10. \n", "\t
  11. 6
  12. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 6\n", "\\item 6\n", "\\item 3\n", "\\item 6\n", "\\item 3\n", "\\item 6\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 6\n", "2. 6\n", "3. 3\n", "4. 6\n", "5. 3\n", "6. 6\n", "\n", "\n" ], "text/plain": [ "[1] 6 6 3 6 3 6" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cell.ids = sapply(strsplit(basename(names(InSilicoLandMarkAssignments_sorted)),'\\\\.'),'[', 2)\n", "head(cell.ids)\n", "cell.labels = metadata[cell.ids,'label']\n", "cell.info = match(metadata[cell.ids,'label'],unique(metadata[,'label']))\n", "head(cell.info)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "scalered <- colorRampPalette(c(\"white\", \"red\"), space = \"rgb\")(256)\n", "rcols1 = colorRampPalette(brewer.pal(8, \"Accent\"))(length(unique(metadata$label)))\n", "rowcols1 = rcols1[cell.info]\n", "rcols2 = colorRampPalette(brewer.pal(8, \"Dark2\"))(length(unique(metadata$label)))\n", "rowcols2 = rcols2[InSilicoLandMarkAssignments_sorted]\n", "rowcols = rbind(rowcols1, rowcols2)\n", "rownames(rowcols) = c(\"cell label\", \"cluster\")" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\t\n", "\t\n", "\n", "
cell label#F0027F#F0027F#FDC086#F0027F#FDC086
cluster#1B9E77#1B9E77#1B9E77#1B9E77#1B9E77
\n" ], "text/latex": [ "\\begin{tabular}{r|lllll}\n", "\tcell label & \\#F0027F & \\#F0027F & \\#FDC086 & \\#F0027F & \\#FDC086\\\\\n", "\tcluster & \\#1B9E77 & \\#1B9E77 & \\#1B9E77 & \\#1B9E77 & \\#1B9E77\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "| cell label | #F0027F | #F0027F | #FDC086 | #F0027F | #FDC086 |\n", "| cluster | #1B9E77 | #1B9E77 | #1B9E77 | #1B9E77 | #1B9E77 |\n", "\n" ], "text/plain": [ " [,1] [,2] [,3] [,4] [,5] \n", "cell label #F0027F #F0027F #FDC086 #F0027F #FDC086\n", "cluster #1B9E77 #1B9E77 #1B9E77 #1B9E77 #1B9E77" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "rowcols[,1:5]" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAIAAAByhViMAAAACXBIWXMAABJ0AAASdAHeZh94\nAAAgAElEQVR4nOzdd3gVddo+8OeE9EYJEDqhi1hARZEi8IqKu4odXKrlVRDRBcuKu8oqdrEX\nVn3Z9VVUXEVAfuoKgpSlCLKKIEGkhRpKEhJSIeX8/jjvxrNAkDMzmed7z9yfyysXTnImN4c5\nM8982wSCwaAQEREREb4o7QBERERE5AwWdkREREQewcKOiIiIyCNY2BERERF5BAs7IiIiIo9g\nYUdERETkESzsiIiIiDyChR0RERGRR7CwIyIiIvIIFnZEREREHsHC7lfk5eX98Y9/PP300xMT\nE1NTU3v16vXXv/41ouewXXHFFYFAoHfv3g6muvHGGwOBQHJycvjGpUuXxsXFBQKB2NjY+fPn\nO/jriIiICEK0dgCj/fjjj5deeml2dnb1lhUrVqxYseKLL76YOXNmIBBQzHaMrVu3XnvttUeP\nHhWRadOmXXrppdqJiIiIyG1ssatRYWHhoEGDsrOzo6KiRo0a9fbbbz/++ONNmjQRkVmzZr36\n6qvaAX+Rn59/xRVX5ObmisiTTz45cuRI7URERESkgC12NZo6der27dtDfxg9enRo4/Dhw7t2\n7Zqfn//KK6/cfffdqgH/T0VFxQ033PDTTz+JyNixYx988EHtRERERKSDLXY1+vDDD0WkTZs2\n1VWdiLRu3frVV1997733lixZUr0xNzf33nvvbdu2bXx8fIsWLe644459+/adZM8n//muXbsG\nAoGHH3542LBh8fHxzZo1O3DgwEn2Nm7cuAULFojINddcc3w74sKFC/v06ZOYmFivXr3f/va3\n//rXv0Lbr7zyykAg0KxZs+rxgqWlpYmJiYFA4P777z+V94eIiIiME6QTKSsrq1OnjogMHz78\n5D+5d+/eVq1aHfOuNm/efNu2baEf+O1vfysivXr1OsWfP/vss0Wkbt26oW+dddZZx//SIUOG\niEhSUtILL7wQ+rH4+PiCgoJjfmzWrFmhv0W1+Pj45cuXB4PBGTNmhLasXLky9MOffvppaMua\nNWusvm1ERESkiS12J5abm1tZWSkijRs3PvlP3nXXXTt37oyJiXnhhRcyMzP/8pe/JCQk7Nmz\n56abbrLz8wUFBVOmTNmwYcNJBvOVlpbed999oT+XlZVNnTo1/Lvl5eV33nlnZWXlgAED9u3b\nt3fv3r59+5aVlY0fP15EBg0aFJpUO3v27NDPz507V0Tat29/7rnnnvyvTERERIbSriwNtXPn\nztD7M2HChJP82MGDB0NNYnfffXf1xkmTJoVeu2nTpuB/ttidys+HWuxatmx5kt8barELadGi\nRagJMCkpaefOndU/U91ZvGLFitCWRYsWhbbs3bs3GAwOHz5cRDp27BgMBisrK9PT00XkoYce\nivzdIiIiIiOwxe7E0tLSQquZ7N+//5hv5efnV//5p59+CjXs9e/fv3pj9Z83bNhwzGtP/ec7\ndep0Kjnr16//5ZdfPvbYYyJSXFx8zz33VH9ry5YtoT/07NkzEAgEAoHqX7R582YRGTZsmIj8\n/PPPmZmZq1atCv1Nb7zxxlP5vURERGQgzoo9scTExE6dOv30008rVqw45ls333zzd999N3jw\n4GeeeSY6+gRvYFVVVegPxy90d+o/n5qa+qsh69Sp89lnn3Xp0qVz587PPffc+vXrZ86cuWDB\nggEDBoT/rhEjRhyzt0aNGonIgAEDGjdufODAgdmzZxcVFYnIGWec0aVLl1/9vURERGQmttjV\naPDgwSKSlZX19ttvV2/8/vvvP//88507dy5dujQqKqp9+/ZRUVEisnjx4uqfqe4DPfPMM4/Z\n56n/fExMzK8mjI+P79mzp4hERUU99dRToY3jxo0LLVPcpk2b0JaRI0e+9tprr7322v333z9i\nxIhnnnmmc+fOIhIdHR36O86ZMyc0c4LNdURERNi0+4LNlZub26xZMxGpU6fO6NGjp0+f/uij\nj9arVy/0vs2ePTv0Y5dffrmIxMbGvvTSS5mZmW+99VZiYqKIXHzxxaEfOGZW7K/+fGiM3ZAh\nQ06SrXpWbPjGvn37hrI9/fTTwWDw6NGjLVu2FJELLrggOzu7uLg41JLXpEmTsrKy0EtWrlwZ\nfjBs2bLFufePiIiI3MbC7mTWrFnTsGHD46vh8ePHV/9MVlZW06ZNj/mBFi1aZGVlhX7gmMLu\nV3/ecmH3zTffhPaWlJS0a9euYDD4wQcfVP+KUM9sIBCYPn16+Kvatm0b+oHu3bvbfsOIiIhI\nE7tiT+bcc8/dsGHDhAkT2rVrFxsbm5qa2r9//08++eTFF1+s/pnWrVuvW7duwoQJbdu2jY2N\nbdas2ZgxY7799tvWrVufcJ+R/vypu+CCC6699loRKS4unjBhgoj87ne/+/zzzy+66KLk5OSE\nhISePXvOnTs3NBm22tChQ0N/YD8sERERukDw3w8eIH/685//PHny5EAgkJWVdfzKyURERASE\ns2J9qri4+PDhwxs2bHjppZdEpHfv3qzqiIiI0LGw86nMzMzzzz8/9OdAIPDHP/5RNw8RERHZ\nxzF2PtWqVav09PT4+PguXbpMnz594MCB2omIiIjILo6xIyIiIvIIttgREREReQQLOyIiIiKP\nYGFHRERE5BEs7IiIiIg8goUdERERkUd4cx27zz//fO7cudop/Ktz587jx4/XTkFEROQ73lzu\n5Oabb377b3+Tqirr/1VWSjCovz38f0/tz6NTUt48dCji/VdWSlXVCfZpaXu7tm23bt2qfRQQ\nERH5DrtivebNN9/UjkBEREQ6WNgREREReQQLOyIiIiKPYGFHRERE5BEs7IiIiIg8goUdERER\nkUewsCMiIiLyCBZ2RERERB7Bwo6IiIjII1jYEREREXkECzsiIiIij2BhR0REROQRLOyIiIiI\nPIKFHREREZFHsLAjIiIi8ggWdkREREQewcKOiIiIyCNY2BERERF5BAs7IiIiIo9gYUdERETk\nESzsiIiIiDyChR0RERGRR7CwIyIiIvIIFnZEREREHsHCjoiIiMgjWNgREREReQQLOyIiIiKP\nYGFHRERE5BEs7IiIiIg8goUdERERkUewsCMiIiLyCBZ2RERERB7Bwo6IiIjII1jYEREREXkE\nCzsiIiIij2BhR0REROQRLOyIiIiIPIKFHREREZFHsLAjIiIi8ggWdkREREQewcKOiIiIyCNY\n2BERERF5BAs7IiIiIo9gYUdERETkESzsiIiIiDyChR0RERGRR7CwIyIiIvIIFnZEREREHsHC\njoiIiMgjWNgREREReQQLOyIiIiKPYGFHRERE5BEs7IiIiIg8goUdERERkUewsCMiIiLyCBZ2\nRERERB7Bwo6IiIjII1jYEREREXkECzsiIiIij2BhR0REROQRLOyIiIiIPIKFHREREZFHsLAj\nIiIi8ggWdkREREQewcKOiIiIyCNY2BERERF5BAs7IiIiIo9gYUdERETkESzsiIiIiDyChR0R\nERGRR7CwIyIiIvIIFnZEREREHsHCjoiIiMgjWNgREREReQQLOyIiIiKPYGFHRERE5BEs7IiI\niIg8goUdERERkUewsCMiIiLyCBZ2RERERB7Bwo6IiIjII1jYEREREXkECzsiIiIij2BhR0RE\nROQRLOyIiIiIPIKFHREREZFHsLAjIiIi8ggWdkREREQewcKOiIiIyCNY2BERERF5BAs7IiIi\nIo9gYUdERETkESzsiIiIiDyChR0RERGRR7CwIyIiIvIIFnZEREREHsHCjoiIiMgjWNgRERER\neQQLOyIiIiKPYGFHRERE5BEs7IiIiIg8Ilo7QK3Yv3//xAcflGDwVP8TOXZLVVX4xh1798ZE\nRzdLSzvxD0e683//t2bnzq7NmkUHAr/85H/+3mP/94S7/c+fmdetW8bBg52Skn49Z/ivq6o6\nedTM8vLmUVF1Q+/vyX9epLCwsNb/jYmIiOg43izs2rVr9z//8z8O7rCoqCgqKioxMdHBfQaD\nwUOHDq3Zv79OnToO7rasrOzHo0eXpqY6sK9AQAKB0B8Liovj4+Pj4uJO5XWd2rd34LcTERFR\nhALBULsLndTgwYMbN2782muvObjPgoKCevXqfffdd926dXNwt88///yMGTPWrFnj4D5F5PTT\nT7/rrrvuuOMOZ3dLREREDuIYOyIiIiKPYGFHRERE5BEs7IiIiIg8goUdERERkUewsCMiIiLy\nCBZ2RERERB7Bwo6IiIjII7y5QLHjLr/88nr16jm7z+Tk5Jtvvrl169bO7rZHjx7l5eXO7lNE\nhgwZ0r17d8d3S0RERA7iAsVEREREHsGuWCIiIiKPYGFHRERE5BEs7IiIiIg8goUdERERkUew\nsCMiIiLyCBZ2RERERB7Bwo6IiIjII1jYEREREXkECzsiIiIij2BhR0REROQRLOz+Q2Vl5YMP\nPti0adPk5OTrr79+//79J/nh0aNHjxkzxrVsxziVqEVFRXfccUfjxo0bNGgwZsyYwsJC93MS\nERGRa1jY/YdHHnnknXfeeffdd5cuXbp79+7rrrvuhD8WDAYnTZr01ltvuRwv3KlEvf3225cs\nWTJ37tz58+evWLHi5ptvdj8nERERuSYQDAa1M5ji6NGjDRs2fOWVV2666SYRycrKatOmzfLl\ny3v27Bn+Y1lZWbfccssPP/yQkpIycODAN954w8yoBw4caNq06f/7f//vN7/5jYh8+umn11xz\nTV5eXr169dwPTERERC5gi90v1q5dW1hY2K9fv9D/ZmRkZGRk/POf/zzmx1atWtW6dev169e3\nb9/e7Yj/dipRGzVqtHHjxosvvjj0v1VVVSJSWVnpblIiIiJyT7R2AIPs3r1bRJo3b169pVmz\nZrt27Trmx4YMGTJkyBBXkx3nVKIGAoGOHTuKSGVl5dq1ax966KEhQ4akpaW5HJWIiIhcwxa7\nX5SUlERFRcXExFRviYuLKysrU4xUk4iiXnvtteedd96ePXtGjx7tVkAiIiJSwMLuFwkJCVVV\nVRUVFdVbjhw5kpSUpBipJhFFnT59ekFBwcSJEwcMGLBkyRK3MhIREZHbWNj9omXLliKSnZ1d\nvWXv3r3h3Z3miChqampqamrqxIkTu3TpMmPGDJciEhERketY2P3i7LPPTklJqW7TysrKysrK\nuuiii3RTndCpRP3mm2/q16+/ffv20P9WVVUdPnw4ISHB7axERETkFk6e+EVcXNzYsWPvu+++\nhg0bNm7ceOzYsX379u3Ro4eIzJw5c9euXRMmTNDO+H9OJWq3bt2aNm06atSol156KS4u7pln\nnjl48ODtt9+unZ2IiIhqC1vs/sPjjz8+bNiw4cOH9+/fv3Xr1jNnzgxtnzNnzuuvv66b7Ri/\nGjUuLm7evHnNmjW77LLLLrrootzc3JUrV3bu3Fk1NREREdUiLlBMRERE5BFssSMiIiLyCBZ2\nRERERB7Bws5Jl112WSAQ+PTTT0/43crKyvT09OTk5OLi4l/d1cCBAwOBgJnLIxMREZGZWNg5\nadSoUSLy97///YTf/eqrrw4cOHD99debuegxERERoWNh56RrrrkmJSVl7ty5JSUlx3/3/fff\nF5GbbrrJ7VhERETkDyzsnJSQkHDDDTcUFxd//vnnx3yrpKRkzpw5GRkZffv2VclGREREnsfC\nzmGh3tgPP/zwmO1z584tKioaOXJkIBAQkR9++GHo0KEtWrSIjY2tW7fuRRddVNPIPDnReLv8\n/PxAIHD11VdXbykoKLj//vvbtm0bFxfXokWLO++88+DBgw7/3YiIiMhsfPKEw/r06dOmTZsv\nvviisLAwJSWlevv7778fCARCZd+qVav69+8fHR199dVXp6enb9u2be7cuddcc828efMuueQS\nC780Pz+/V69emZmZffr0uf7667Oyst58881//OMfK1euTE9Pd+zvRkRERGZji53DAoHAiBEj\nysrK5s6dW70xNzd33rx5ffr0adu2rYg8/PDDZWVlixYtevfdd6dMmfLJJ5988MEHwWBwxowZ\n1n7pAw88kJmZOXny5KVLlz777LMfffTRrFmztm/fbs4z0IiIiMgFLOycN3LkSPnP3tiPPvqo\nvLy8etrEnXfeOW3atHPPPbf6B/7rv/5LRA4cOGDh1x09evS9995r3br1n/70p+qNgwYNuvDC\nCz/++OOioiJLfwkiIiLCw65Y57Vr165Xr17z58/Pz8+vV6+eiHzwwQeJiYnXX3996Aeuuuoq\nEcnLy1u/fv3WrVszMzOXLVsmIpWVlRZ+3caNG0tKSuLi4iZPnhy+vaysrKKiYsOGDRdccIHd\nvxIREREhYGFXK0aNGrV8+fJZs2bdcsstO3bsWL58+fDhw6uH3O3cufPee++dNWtWVVWViLRo\n0aJPnz6rVq2y9tze/Px8Efn5558fffTR47976NAhG38PIiIiQsKu2FoxePDg+Pj40ErFM2bM\nCAaD1f2wlZWVAwcOnDlz5ujRoxctWpSTk7Nr164XX3zxJHsLTaQNb88Lf3ZFcnKyiAwbNix4\nIgMHDqyFvx8RERGZiC12taJu3bpXXXXVJ598kp+f//HHH7dq1ap///6hb61Zs2bjxo2XXXbZ\n1KlTq3/+559/FpGaWuxiY2NF5PDhw9WPrMjMzKz+bufOnWNiYpYvX15RUREd/cs/6Msvv1xU\nVDRu3Li6des6/fcjIiIiE7HFrraMGjWqoqLizTff/O6776qXrxORuLg4+c8mt6KiogcffFBE\nysvLT7ir0047TcJmYxQVFYX3uiYmJt5www1ZWVl//vOfqzcuXbr03nvvfffdd1NTUx3+ixER\nEZGpAtbGddGvqqysbNmyZUFBQUlJyebNm9u3b1+9vXv37t9///1ll13Wr1+/nJycjz76KC8v\nLxgMtm/f/ocffgj92MCBA+fNm1daWhofH79x48azzjqrqqpq4MCBjRo1mjdvXrNmzXbt2tWz\nZ885c+aIyP79+y+88MLt27dfcMEFvXr12r9//8cff1ynTp358+f37t1b7S0gIiIid7HFrrbU\nqVNn2LBhJSUlvXv3rq7qQts/++yzkSNHrl+/fvLkyXPnzu3Xr9/3338/YMCA9evX7969+/hd\nde7ced68eRdeeOGiRYs+//zzQYMGLVy4MNQ/G5Kenr569erx48fv37//tddeW7x48aBBg1at\nWsWqjoiIyFfYYkdERETkEWyxIyIiIvIIFnZEREREHsHCjoiIiMgjWNgREREReQQLOyIiIiKP\nYGFHRERE5BEs7IiIiIg8goUdERERkUewsCMiIiLyCBZ2RERERB7Bwo6IiIjII1jYEREREXkE\n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\ntL17944bN27evHlpaWk33njjY489FhcXt2/fvqZNmz733HNPPPHEVVdd9fbb//HwhsWLF195\n5ZUPPvhgamqqm+9AwosxUhD5muzOdsU2iPjRF6aArjBwF4CAbrHDBX2016unncAqFnYgWNgZ\nobKycuDAgc2bN1++fHlOTs6QIUOaN29++eWXn/xV69evv++++z755JNOnTpNmzbthhtuyM7O\nnj9//plnnnnffffdfPPNInLttde2aNFi9erVhw8fHjt27JEjR6pXVJk5c+bs2bOPX4Px7rvv\nFpEK16+1UV3rikQ+K9bZwu7hhx3dnYtwG70EOby7Nz8Ow121sVEj7QQ2TJ6sncAq3EGZIjJ6\ntHYC97CwM8KyZcs2bdq0cOHCxo0bi8jrr79edQpDprZv316nTp2MjIyMjIxJkyb17ds3Ojo6\nNjY2EAjExMRER0cvWbJk3bp1ixYtClVvU6dO7du375QpU0Iv/8Mf/tC3b99a/XvhSU/XTuBL\nuIuGQE/PxB2XiVuSCnKLHe7n1Gf472SEzMzMFi1ahKo6ERk8eLCI7N79K09BveSSS84555zT\nTjutW7duV1555a233hr3n4+X3rhxY1lZWaN/390Gg8Hy8vLt27fXrVtXRNq1a+f838SGqrXb\npCDyFjtnwT4cEPgiLcg9a4mJ2gl8SeNZT445EvlIYkNw+UAQLOyMEGpmq+m7x3yrupM0ISHh\n66+/Xrp06aeffjp9+vTXXntt5cqVHTt2DP/JVq1aLViwIPzlLVu2PHTokIgkGndNSrPSFUsh\n0DfTuOGh62ncnjXc5II8Z4VAwJ5PDWZhAmyHDh127dqVm5ublpYmIs8///y333773HPPhb4b\nGxsrIgUFBaH/rV7Fd+nSpWvWrLnnnnv69u377LPPtm3b9quvvurYsWN1IdipU6fdu3fHx8e3\naNFCRNasWTNlypT//d//tfs3rB0vLNi3eXNWpK/q52y3xgMPOLo7F+HOPxDkBhjoPkHcCgO3\niVdE/vAH7QRWcfIECBZ2RujTp8+ZZ5552223PfXUU9nZ2VOmTHniiSeqv9uwYcOMjIzHH3/8\n4YcfXrVq1Zw5czp06CAiUVFREydObNy4cb9+/VavXr1///5zzjlHRJKSkhYvXnzeeeddfPHF\nZ5xxxtChQ1999dWqqqpbb721bdu2CQkJ/7+9Ow9r6lz3h/8EIoKMCsg8KohTi2MVB/RUtsMp\n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\ncsOdU8kYPX369PHjx9K/tT0DB/liQIyLEIMnnjQ8AEFAJ3a4lQCZjHcEOsANHjdyhlwoxe2U\nWTu5XG5lZSX9W9szhqSX6h3yxYAYFyEqdq6uet2dAUGXAXCDxx3hyJArdtAfu6Mj7wiIuGT6\nuGmhxI6QavLzeUegLdzciCEH36IF7wh0gFsohW6KxT3J4N4JmBhK7IgohGiKtbHR6+4MCLop\nFjd43AOGIY9ZKSvjHYEOoI8ZggD2fEqMjhBNsT176nV3BoSbGzHkLlPQExTjFmBateIdgQ5w\nTzK4B4yJQb4YEOMiRMXu+HG97s6AoCdUw22Khe4vhduLf/Bg3hHoAPckQ4kdCErsiCiEqNgZ\n47AvALjTnUAvi46b2FlY8I5AB7gfO27bvYmhxI6IQoiKHe4FAzdyhpzYWVryjkAHuNfpRw1f\nokYcuMcM7mgbE0OJHSFGAbebGkNO7HAjZ8gta9C3Mbh/qrgHjImhxI6IQoimWNwaBvTNNO6l\nDnZuesaQjxncv1OG3HxPiR0ISuwIqQZ3WjLowRO4dS9bW94R6AC3sxf0PHa4JxkTSOzMnjsX\nmZmZKev3l2JmZqbid8sh/XYpWkrsCKkG94IBfc7FnasF+mPHTeygp4LDHaGFW+KttwkTJqSk\npNR4ZuPGjYyxrl27nj9/vu5tExMT6/+7unfvfvbs2e7du585c+aFP/DS3/j8b5eilellYTJC\nCCGEECwODg5hYWFHjhwJCwtLTU2trKxs2bJljWeaNm3KGFOr1dJ6XzKZTPNYeiCXy58+fVpZ\nWWn515ExarX6tddeq6ysvHTpkqaeJ22u2Vb6V7OSmKZkqFQqq79U4zeyZ6vKavYg/XYpWtgb\nZUIIIYQQHbz//vuDBw92c3MbPHhwdna2hYXF88+4uLhIP+zu7n7nzp2OHTuWlJS4ubmVl5fn\n5OS8+uqrHh4eN2/etLCwCA4OViqVDx488PPzu3Pnzv3796VqnIuLS5s2bXJzcxljbm5uv/76\nq52dnfS8tFsXFxelUllYWFhSUiL9LnNzc+klLy+vx48fFxcXBwQE3Lt3Lysrq0uXLmVlZTk5\nOVVVVVIw9vb2FhYWHTp0sLCw8PHxoYodIYQQQsjLubq6FhYWNtLOi4qKIiIipMeDBw+Oi4vT\nLhhK7AghhBBCjATsYDRCCCGEEPJXlNgRQgghhBgJSuwIIYQQQowEJXaEEEIIIUaCEjtCCCGE\n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\nRU5ErkJggg==", "text/plain": [ "Plot with title “Color Key”" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "heatmap.3(InSilicoCell2LandmarkCorrelation_sorted, dendrogram='none', Rowv=FALSE, Colv=FALSE,\n", " trace='none', col = scalered, margin = c(5, 5), density.info = \"none\", \n", " RowSideColors = rowcols, RowSideColorsSize=2, symm=F,symkey=F,\n", " symbreaks=F, scale=\"none\")\n", "legend(\"bottomleft\", legend = c(unique(cell.labels), paste0(\"cluster \", 1:length(unique(metadata$label)))), \n", " col = c(rcols1, rcols2), border=FALSE, bty=\"n\", y.intersp = 0.7, cex=0.7, pch = 15)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "R version 3.5.1 (2018-07-02)\n", "Platform: x86_64-conda_cos6-linux-gnu (64-bit)\n", "Running under: CentOS Linux 7 (Core)\n", "\n", "Matrix products: default\n", "BLAS/LAPACK: /data/pinello/SHARED_SOFTWARE/anaconda3/envs/ATACseq_scABC/lib/R/lib/libRblas.so\n", "\n", "locale:\n", " [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C \n", " [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 \n", " [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 \n", " [7] LC_PAPER=en_US.UTF-8 LC_NAME=C \n", " [9] LC_ADDRESS=C LC_TELEPHONE=C \n", "[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C \n", "\n", "attached base packages:\n", "[1] parallel stats4 stats graphics grDevices utils datasets \n", "[8] methods base \n", "\n", "other attached packages:\n", " [1] usethis_1.4.0 devtools_2.0.1 RColorBrewer_1.1-2 \n", " [4] gplots_3.0.1.1 Matrix_1.2-17 forcats_0.4.0 \n", " [7] stringr_1.4.0 purrr_0.3.2 readr_1.3.1 \n", "[10] tidyr_0.8.3 tibble_2.1.1 ggplot2_3.1.0 \n", "[13] tidyverse_1.2.1 dplyr_0.8.0.1 data.table_1.12.0 \n", "[16] Rsamtools_1.34.1 Biostrings_2.50.2 XVector_0.22.0 \n", "[19] scABC_0.99.0 GenomicRanges_1.34.0 GenomeInfoDb_1.18.2 \n", "[22] IRanges_2.16.0 S4Vectors_0.20.1 BiocGenerics_0.28.0 \n", "\n", "loaded via a namespace (and not attached):\n", " [1] nlme_3.1-137 fs_1.2.7 bitops_1.0-6 \n", " [4] lubridate_1.7.4 httr_1.4.0 rprojroot_1.3-2 \n", " [7] repr_0.19.2 tools_3.5.1 backports_1.1.3 \n", "[10] R6_2.4.0 rpart_4.1-13 KernSmooth_2.23-15 \n", "[13] Hmisc_4.2-0 lazyeval_0.2.2 colorspace_1.4-1 \n", "[16] nnet_7.3-12 withr_2.1.2 prettyunits_1.0.2 \n", "[19] processx_3.3.0 tidyselect_0.2.5 gridExtra_2.3 \n", "[22] curl_3.3 compiler_3.5.1 cli_1.1.0 \n", "[25] rvest_0.3.2 htmlTable_1.13.1 xml2_1.2.0 \n", "[28] desc_1.2.0 caTools_1.17.1.2 scales_1.0.0 \n", "[31] checkmate_1.9.1 callr_3.2.0 pbdZMQ_0.3-3 \n", "[34] digest_0.6.18 foreign_0.8-71 base64enc_0.1-3 \n", "[37] pkgconfig_2.0.2 htmltools_0.3.6 sessioninfo_1.1.1 \n", "[40] htmlwidgets_1.3 rlang_0.3.3 readxl_1.3.1 \n", "[43] rstudioapi_0.10 generics_0.0.2 jsonlite_1.6 \n", "[46] BiocParallel_1.16.6 gtools_3.8.1 acepack_1.4.1 \n", "[49] RCurl_1.95-4.12 magrittr_1.5 GenomeInfoDbData_1.2.0\n", "[52] Formula_1.2-3 Rcpp_1.0.1 IRkernel_0.8.15 \n", "[55] munsell_0.5.0 stringi_1.4.3 zlibbioc_1.28.0 \n", "[58] pkgbuild_1.0.3 plyr_1.8.4 grid_3.5.1 \n", "[61] gdata_2.18.0 crayon_1.3.4 lattice_0.20-38 \n", "[64] IRdisplay_0.7.0 haven_2.1.0 splines_3.5.1 \n", "[67] TraMineR_2.0-11.1 hms_0.4.2 ps_1.3.0 \n", "[70] knitr_1.22 pillar_1.3.1 uuid_0.1-2 \n", "[73] boot_1.3-20 pkgload_1.0.2 glue_1.3.1 \n", "[76] evaluate_0.13 latticeExtra_0.6-28 remotes_2.0.2 \n", "[79] modelr_0.1.4 cellranger_1.1.0 gtable_0.3.0 \n", "[82] assertthat_0.2.1 xfun_0.6 broom_0.5.1 \n", "[85] survival_2.44-1.1 memoise_1.1.0 cluster_2.0.7-1 \n", "[88] WeightedCluster_1.4 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sessionInfo()" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "save.image(file = 'scABC_10xpbmc5k.RData')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "R [conda env:ATACseq_scABC]", "language": "R", "name": "conda-env-ATACseq_scABC-r" }, "language_info": { "codemirror_mode": "r", "file_extension": ".r", "mimetype": "text/x-r-source", "name": "R", "pygments_lexer": "r", "version": "3.5.1" } }, "nbformat": 4, "nbformat_minor": 2 }