"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Harmony is a framework for data visualization, trajectory detection and interpretation for scRNA-seq data measured at discrete timepoints. Harmony constructs an augmented affinity matrix by augmenting the kNN graph affinity matrix with mutually nearest neighbors between successive time points. This augmented affinity matrix forms the basis for generated a force directed layout for visualization and also serves as input for computing the diffusion operator which can be used for trajectory detection using Palantir"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"
Loading and normalizing data
"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Harmony reads in csv files of counts matrices from multiple time points. Please ensure that replicates of the same time point are consecutive in order"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-27T04:30:45.032144Z",
"start_time": "2018-07-27T04:30:43.570491Z"
},
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"import harmony\n",
"import palantir\n",
"\n",
"# Plotting and miscellaneous imports\n",
"import os\n",
"import pandas as pd\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Initialize random seed\n",
"import random\n",
"random.seed(101)\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Sample csv files are available at `/data/`. This folder contains two replicates each of the mouse embryonic development cells at E3.5 and E4.5 stages.\n",
"\n",
"These cells represent a subset of the mouse endoderm dataset and are the cells used for Palantir trajectory detection in Figure 2 of the manuscript.\n",
"\n",
"Assuming that Harmony was downloaded at `~/repositories/Harmony`, the following snippet can be used to load the counts matrices. `sample_names` parameter is used to set a prefix for the barcodes."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-27T04:31:14.287272Z",
"start_time": "2018-07-27T04:30:45.035158Z"
},
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Loading count matrices...\n",
"E3.5_Rep1\n",
"E3.5_Rep2\n",
"E4.5_Rep1\n",
"E4.5_Rep2\n",
"Concatenating data..\n"
]
}
],
"source": [
"# Load sample data\n",
"harmony_dir = os.path.expanduser('~/repositories/Harmony/data/')\n",
"csv_files = [harmony_dir + 'Lib1-3_E3.5.csv',\n",
" harmony_dir + 'Lib1-4_E3.5.csv',\n",
" harmony_dir + 'Lib1-1_E4.5.csv',\n",
" harmony_dir + 'Lib1-2_E4.5.csv',]\n",
"sample_names = ['E3.5_Rep1', 'E3.5_Rep2', 'E4.5_Rep1', 'E4.5_Rep2']\n",
"\n",
"counts = harmony.utils.load_from_csvs(csv_files, sample_names)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Note: Harmony assumes that the cells from the same time point are consecutive to each other in the counts matrix. "
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"
Normalization
"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The next step is to correct for molecule count distribution. Harmony divides the counts of each cell by the total molecules detected as a normalization technique"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-27T04:31:22.712735Z",
"start_time": "2018-07-27T04:31:20.544804Z"
},
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"norm_df = harmony.utils.normalize_counts(counts)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
Gene selection
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Highly variable genes can be selected using the `hvg_genes` function of Harmony"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"hvg_genes = harmony.utils.hvg_genes(norm_df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
Log tranform
"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Data can be optionally log transformed. Note that, some datasets show better signal in the linear scale while others show stronger signal in the log scale. We use log transformation for this dataset and use the highly variable genes in the above step as the input data"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-27T04:31:24.076510Z",
"start_time": "2018-07-27T04:31:22.715368Z"
},
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"data_df = harmony.utils.log_transform(norm_df.loc[:,hvg_genes])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"
Harmony augmented affinity matrix
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The following metadata information is necessary for Harmony\n",
"1. Timepoint at which each cell was measured\n",
"2. Connections between timepoints for computation of mutually nearest neighbors\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The timepoint at which each cell was measured for this dataset can be determined by string matching since the information has been added to the barcode name"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"tp = pd.Series(index=data_df.index)\n",
"for t in ['E3.5', 'E4.5']:\n",
" cells = data_df.index[data_df.index.str.contains(t)]\n",
" tp[cells] = t"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The connection between E3.5 and E4.5 can be added as follows"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
0
\n",
"
1
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
E3.5
\n",
"
E4.5
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0 1\n",
"0 E3.5 E4.5"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"timepoint_connections = pd.DataFrame(columns=[0, 1])\n",
"index = 0\n",
"timepoint_connections.loc[index, :] = ['E3.5', 'E4.5']; index += 1\n",
"timepoint_connections"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using the above information, the augmented and non-augmented affinity matrices can be computed using"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Running PCA with 235 components\n",
"Nearest neighbor computation...\n",
"Constucting affinities between E3.5 and E4.5...\n",
"t+1 neighbors of t...\n",
"t neighbors of t+1...\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/usr/local/lib/python3.6/site-packages/scipy/linalg/basic.py:1226: RuntimeWarning: internal gelsd driver lwork query error, required iwork dimension not returned. This is likely the result of LAPACK bug 0038, fixed in LAPACK 3.2.2 (released July 21, 2010). Falling back to 'gelss' driver.\n",
" warnings.warn(mesg, RuntimeWarning)\n"
]
}
],
"source": [
"aug_aff, aff = harmony.core.augmented_affinity_matrix(data_df, tp, timepoint_connections)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
Visualization using force directed layouts
"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The relationships between timepoints can be visualized using a force directed layout. This layout can be computed using the following function"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 500/500 [00:02<00:00, 166.70it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"BarnesHut Approximation took 0.99 seconds\n",
"Repulsion forces took 1.62 seconds\n",
"Gravitational forces took 0.02 seconds\n",
"Attraction forces took 0.12 seconds\n",
"AdjustSpeedAndApplyForces step took 0.12 seconds\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"layout = harmony.plot.force_directed_layout(aug_aff, data_df.index)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For consistency, tmhe following snippet loads the precomputed tSNE projections."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"layout = pd.read_pickle(harmony_dir + '/e35_e45_layout.p')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The different timepoints can be visualized using"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-27T04:31:32.591980Z",
"start_time": "2018-07-27T04:31:24.079286Z"
},
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"image/png": "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\nRU5ErkJggg==\n",
"text/plain": [
"