{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Working with multiple files"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"library(tidyverse)\n",
"library(stringr)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Extended example"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Suppose we have the following scenario:\n",
"\n",
"A multi-center experiment is conducted at Duke and UNC.\n",
"\n",
"- Duke has patients `Ann`, `Bob`, `Charle`\n",
"- UNC has patients `David`, `Ed`, `Fiona`\n",
"- Each patient has blood sampled at 2 time points \n",
"- The genomics core at each center measures 3 genes for each patient at each time point\n",
"- The proteomics core at each center measures 3 proteins from each patient at each time point\n",
"- Each center has additional information about patient demographics in a different database"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We have a ten files to work with:\n",
"\n",
"```\n",
"duke_demographics.tsv\n",
"duke_genes_v1.tsv\n",
"duke_genes_v2.tsv\n",
"duke_proteins_v1.tsv\n",
"duke_proteins_v2.tsv\n",
"unc_demographics.tsv\n",
"unc_genes_v1.tsv\n",
"unc_genes_v2.tsv\n",
"unc_proteins_v1.tsv\n",
"unc_proteins_v2.tsv\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Objective\n",
"\n",
"We want to visualize the correlation between the gene and protein expression changes from visit 1 to visit 2 for all patients in the study. We also want to augment the data with demographic variables for each patient.\n",
"\n",
"- Assume that labs within an institution *do not* have batch effects across visits\n",
"- Assume that labs at different institutions *have* batch affects and must be normalized before comparison"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Combine gene expression data from Duke and normalize to zero mean and unit standard deviation "
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Parsed with column specification:\n",
"cols(\n",
" pet = col_character(),\n",
" gene_A = col_double(),\n",
" gene_B = col_double(),\n",
" gene_C = col_double()\n",
")\n",
"Parsed with column specification:\n",
"cols(\n",
" pet = col_character(),\n",
" gene_A = col_double(),\n",
" gene_B = col_double(),\n",
" gene_C = col_double()\n",
")\n"
]
}
],
"source": [
"df_dg1 <- read_tsv('data/duke_genes_v1.tsv')\n",
"df_dg2 <- read_tsv('data/duke_genes_v2.tsv')"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"pet | gene_A | gene_B | gene_C |
\n",
"\n",
"\tAnn | 91.09792 | 64.62166 | 124.4608 |
\n",
"\tBob | 88.81115 | 78.24940 | 113.6644 |
\n",
"\tCharlie | 107.52933 | 70.52984 | 124.5951 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|llll}\n",
" pet & gene\\_A & gene\\_B & gene\\_C\\\\\n",
"\\hline\n",
"\t Ann & 91.09792 & 64.62166 & 124.4608 \\\\\n",
"\t Bob & 88.81115 & 78.24940 & 113.6644 \\\\\n",
"\t Charlie & 107.52933 & 70.52984 & 124.5951 \\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"pet | gene_A | gene_B | gene_C | \n",
"|---|---|---|\n",
"| Ann | 91.09792 | 64.62166 | 124.4608 | \n",
"| Bob | 88.81115 | 78.24940 | 113.6644 | \n",
"| Charlie | 107.52933 | 70.52984 | 124.5951 | \n",
"\n",
"\n"
],
"text/plain": [
" pet gene_A gene_B gene_C \n",
"1 Ann 91.09792 64.62166 124.4608\n",
"2 Bob 88.81115 78.24940 113.6644\n",
"3 Charlie 107.52933 70.52984 124.5951"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_dg1"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"pet | gene_A | gene_B | gene_C |
\n",
"\n",
"\tAnn | 108.67919 | 90.38630 | 137.5395 |
\n",
"\tBob | 113.44700 | 101.52725 | 144.7763 |
\n",
"\tCharlie | 98.12047 | 97.70863 | 131.1964 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|llll}\n",
" pet & gene\\_A & gene\\_B & gene\\_C\\\\\n",
"\\hline\n",
"\t Ann & 108.67919 & 90.38630 & 137.5395 \\\\\n",
"\t Bob & 113.44700 & 101.52725 & 144.7763 \\\\\n",
"\t Charlie & 98.12047 & 97.70863 & 131.1964 \\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"pet | gene_A | gene_B | gene_C | \n",
"|---|---|---|\n",
"| Ann | 108.67919 | 90.38630 | 137.5395 | \n",
"| Bob | 113.44700 | 101.52725 | 144.7763 | \n",
"| Charlie | 98.12047 | 97.70863 | 131.1964 | \n",
"\n",
"\n"
],
"text/plain": [
" pet gene_A gene_B gene_C \n",
"1 Ann 108.67919 90.38630 137.5395\n",
"2 Bob 113.44700 101.52725 144.7763\n",
"3 Charlie 98.12047 97.70863 131.1964"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_dg2"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"visit | pet | gene_A | gene_B | gene_C |
\n",
"\n",
"\t1 | Ann | 91.09792 | 64.62166 | 124.4608 |
\n",
"\t1 | Bob | 88.81115 | 78.24940 | 113.6644 |
\n",
"\t1 | Charlie | 107.52933 | 70.52984 | 124.5951 |
\n",
"\t2 | Ann | 108.67919 | 90.38630 | 137.5395 |
\n",
"\t2 | Bob | 113.44700 | 101.52725 | 144.7763 |
\n",
"\t2 | Charlie | 98.12047 | 97.70863 | 131.1964 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lllll}\n",
" visit & pet & gene\\_A & gene\\_B & gene\\_C\\\\\n",
"\\hline\n",
"\t 1 & Ann & 91.09792 & 64.62166 & 124.4608 \\\\\n",
"\t 1 & Bob & 88.81115 & 78.24940 & 113.6644 \\\\\n",
"\t 1 & Charlie & 107.52933 & 70.52984 & 124.5951 \\\\\n",
"\t 2 & Ann & 108.67919 & 90.38630 & 137.5395 \\\\\n",
"\t 2 & Bob & 113.44700 & 101.52725 & 144.7763 \\\\\n",
"\t 2 & Charlie & 98.12047 & 97.70863 & 131.1964 \\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"visit | pet | gene_A | gene_B | gene_C | \n",
"|---|---|---|---|---|---|\n",
"| 1 | Ann | 91.09792 | 64.62166 | 124.4608 | \n",
"| 1 | Bob | 88.81115 | 78.24940 | 113.6644 | \n",
"| 1 | Charlie | 107.52933 | 70.52984 | 124.5951 | \n",
"| 2 | Ann | 108.67919 | 90.38630 | 137.5395 | \n",
"| 2 | Bob | 113.44700 | 101.52725 | 144.7763 | \n",
"| 2 | Charlie | 98.12047 | 97.70863 | 131.1964 | \n",
"\n",
"\n"
],
"text/plain": [
" visit pet gene_A gene_B gene_C \n",
"1 1 Ann 91.09792 64.62166 124.4608\n",
"2 1 Bob 88.81115 78.24940 113.6644\n",
"3 1 Charlie 107.52933 70.52984 124.5951\n",
"4 2 Ann 108.67919 90.38630 137.5395\n",
"5 2 Bob 113.44700 101.52725 144.7763\n",
"6 2 Charlie 98.12047 97.70863 131.1964"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_dg <- bind_rows(df_dg1, df_dg2, .id = \"visit\")\n",
"df_dg"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"visit | pet | gene_A | gene_B | gene_C |
\n",
"\n",
"\t1 | Ann | -1.0073042 | -1.2805845 | -0.4479685 |
\n",
"\t1 | Bob | -1.2335142 | -0.3723877 | -1.4327190 |
\n",
"\t1 | Charlie | 0.6181059 | -0.8868438 | -0.4357137 |
\n",
"\t2 | Ann | 0.7318518 | 0.4364545 | 0.7449587 |
\n",
"\t2 | Bob | 1.2034879 | 1.1789234 | 1.4050414 |
\n",
"\t2 | Charlie | -0.3126272 | 0.9244382 | 0.1664011 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lllll}\n",
" visit & pet & gene\\_A & gene\\_B & gene\\_C\\\\\n",
"\\hline\n",
"\t 1 & Ann & -1.0073042 & -1.2805845 & -0.4479685\\\\\n",
"\t 1 & Bob & -1.2335142 & -0.3723877 & -1.4327190\\\\\n",
"\t 1 & Charlie & 0.6181059 & -0.8868438 & -0.4357137\\\\\n",
"\t 2 & Ann & 0.7318518 & 0.4364545 & 0.7449587\\\\\n",
"\t 2 & Bob & 1.2034879 & 1.1789234 & 1.4050414\\\\\n",
"\t 2 & Charlie & -0.3126272 & 0.9244382 & 0.1664011\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"visit | pet | gene_A | gene_B | gene_C | \n",
"|---|---|---|---|---|---|\n",
"| 1 | Ann | -1.0073042 | -1.2805845 | -0.4479685 | \n",
"| 1 | Bob | -1.2335142 | -0.3723877 | -1.4327190 | \n",
"| 1 | Charlie | 0.6181059 | -0.8868438 | -0.4357137 | \n",
"| 2 | Ann | 0.7318518 | 0.4364545 | 0.7449587 | \n",
"| 2 | Bob | 1.2034879 | 1.1789234 | 1.4050414 | \n",
"| 2 | Charlie | -0.3126272 | 0.9244382 | 0.1664011 | \n",
"\n",
"\n"
],
"text/plain": [
" visit pet gene_A gene_B gene_C \n",
"1 1 Ann -1.0073042 -1.2805845 -0.4479685\n",
"2 1 Bob -1.2335142 -0.3723877 -1.4327190\n",
"3 1 Charlie 0.6181059 -0.8868438 -0.4357137\n",
"4 2 Ann 0.7318518 0.4364545 0.7449587\n",
"5 2 Bob 1.2034879 1.1789234 1.4050414\n",
"6 2 Charlie -0.3126272 0.9244382 0.1664011"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_dg.scaled <- df_dg %>% mutate_if(is.numeric, scale)\n",
"df_dg.scaled"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Do the same for the other data sets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Duke protein expression"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Parsed with column specification:\n",
"cols(\n",
" pet = col_character(),\n",
" prot_A = col_double(),\n",
" prot_B = col_double(),\n",
" prot_C = col_double()\n",
")\n",
"Parsed with column specification:\n",
"cols(\n",
" pet = col_character(),\n",
" prot_A = col_double(),\n",
" prot_B = col_double(),\n",
" prot_C = col_double()\n",
")\n"
]
}
],
"source": [
"df_dp1 <- read_tsv('data/duke_proteins_v1.tsv')\n",
"df_dp2 <- read_tsv('data/duke_proteins_v2.tsv')\n",
"df_dp <- bind_rows(df_dp1, df_dp2, .id = \"visit\")\n",
"df_dp.scaled <- df_dp %>% mutate_if(is.numeric, scale)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"visit | pet | prot_A | prot_B | prot_C |
\n",
"\n",
"\t1 | Ann | -0.4967020 | 0.9830005 | -1.37774584 |
\n",
"\t1 | Bob | -1.0132844 | -1.1799912 | -1.01496776 |
\n",
"\t1 | Charlie | -0.3455620 | -0.8561590 | 0.60497113 |
\n",
"\t2 | Ann | -0.4191436 | 0.3772850 | 0.88392265 |
\n",
"\t2 | Bob | 1.7870904 | -0.5388750 | -0.05597907 |
\n",
"\t2 | Charlie | 0.4876017 | 1.2147397 | 0.95979888 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lllll}\n",
" visit & pet & prot\\_A & prot\\_B & prot\\_C\\\\\n",
"\\hline\n",
"\t 1 & Ann & -0.4967020 & 0.9830005 & -1.37774584\\\\\n",
"\t 1 & Bob & -1.0132844 & -1.1799912 & -1.01496776\\\\\n",
"\t 1 & Charlie & -0.3455620 & -0.8561590 & 0.60497113\\\\\n",
"\t 2 & Ann & -0.4191436 & 0.3772850 & 0.88392265\\\\\n",
"\t 2 & Bob & 1.7870904 & -0.5388750 & -0.05597907\\\\\n",
"\t 2 & Charlie & 0.4876017 & 1.2147397 & 0.95979888\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"visit | pet | prot_A | prot_B | prot_C | \n",
"|---|---|---|---|---|---|\n",
"| 1 | Ann | -0.4967020 | 0.9830005 | -1.37774584 | \n",
"| 1 | Bob | -1.0132844 | -1.1799912 | -1.01496776 | \n",
"| 1 | Charlie | -0.3455620 | -0.8561590 | 0.60497113 | \n",
"| 2 | Ann | -0.4191436 | 0.3772850 | 0.88392265 | \n",
"| 2 | Bob | 1.7870904 | -0.5388750 | -0.05597907 | \n",
"| 2 | Charlie | 0.4876017 | 1.2147397 | 0.95979888 | \n",
"\n",
"\n"
],
"text/plain": [
" visit pet prot_A prot_B prot_C \n",
"1 1 Ann -0.4967020 0.9830005 -1.37774584\n",
"2 1 Bob -1.0132844 -1.1799912 -1.01496776\n",
"3 1 Charlie -0.3455620 -0.8561590 0.60497113\n",
"4 2 Ann -0.4191436 0.3772850 0.88392265\n",
"5 2 Bob 1.7870904 -0.5388750 -0.05597907\n",
"6 2 Charlie 0.4876017 1.2147397 0.95979888"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"head(df_dp.scaled)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"UNC gene expression"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Parsed with column specification:\n",
"cols(\n",
" pet = col_character(),\n",
" gene_A = col_double(),\n",
" gene_B = col_double(),\n",
" gene_C = col_double()\n",
")\n",
"Parsed with column specification:\n",
"cols(\n",
" pet = col_character(),\n",
" gene_A = col_double(),\n",
" gene_B = col_double(),\n",
" gene_C = col_double()\n",
")\n"
]
}
],
"source": [
"df_ug1 <- read_tsv('data/unc_genes_v1.tsv')\n",
"df_ug2 <- read_tsv('data/unc_genes_v2.tsv')\n",
"df_ug <- bind_rows(df_ug1, df_ug2, .id = \"visit\")\n",
"df_ug.scaled <- df_ug %>% mutate_if(is.numeric, scale)"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"visit | pet | gene_A | gene_B | gene_C |
\n",
"\n",
"\t1 | David | -0.59425311 | -1.2262407 | -0.30771429 |
\n",
"\t1 | Ed | -1.17645232 | -0.5087640 | 0.02835355 |
\n",
"\t1 | Fiona | 0.36658576 | -0.3217073 | -1.82700451 |
\n",
"\t2 | David | 0.08382534 | 0.5735718 | 0.66994801 |
\n",
"\t2 | Ed | -0.40047124 | -0.1817827 | 0.92567540 |
\n",
"\t2 | Fiona | 1.72076557 | 1.6649228 | 0.51074184 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lllll}\n",
" visit & pet & gene\\_A & gene\\_B & gene\\_C\\\\\n",
"\\hline\n",
"\t 1 & David & -0.59425311 & -1.2262407 & -0.30771429\\\\\n",
"\t 1 & Ed & -1.17645232 & -0.5087640 & 0.02835355\\\\\n",
"\t 1 & Fiona & 0.36658576 & -0.3217073 & -1.82700451\\\\\n",
"\t 2 & David & 0.08382534 & 0.5735718 & 0.66994801\\\\\n",
"\t 2 & Ed & -0.40047124 & -0.1817827 & 0.92567540\\\\\n",
"\t 2 & Fiona & 1.72076557 & 1.6649228 & 0.51074184\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"visit | pet | gene_A | gene_B | gene_C | \n",
"|---|---|---|---|---|---|\n",
"| 1 | David | -0.59425311 | -1.2262407 | -0.30771429 | \n",
"| 1 | Ed | -1.17645232 | -0.5087640 | 0.02835355 | \n",
"| 1 | Fiona | 0.36658576 | -0.3217073 | -1.82700451 | \n",
"| 2 | David | 0.08382534 | 0.5735718 | 0.66994801 | \n",
"| 2 | Ed | -0.40047124 | -0.1817827 | 0.92567540 | \n",
"| 2 | Fiona | 1.72076557 | 1.6649228 | 0.51074184 | \n",
"\n",
"\n"
],
"text/plain": [
" visit pet gene_A gene_B gene_C \n",
"1 1 David -0.59425311 -1.2262407 -0.30771429\n",
"2 1 Ed -1.17645232 -0.5087640 0.02835355\n",
"3 1 Fiona 0.36658576 -0.3217073 -1.82700451\n",
"4 2 David 0.08382534 0.5735718 0.66994801\n",
"5 2 Ed -0.40047124 -0.1817827 0.92567540\n",
"6 2 Fiona 1.72076557 1.6649228 0.51074184"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"head(df_ug.scaled)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"UNC protein expression"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Parsed with column specification:\n",
"cols(\n",
" pet = col_character(),\n",
" prot_A = col_double(),\n",
" prot_B = col_double(),\n",
" prot_C = col_double()\n",
")\n",
"Parsed with column specification:\n",
"cols(\n",
" pet = col_character(),\n",
" prot_A = col_double(),\n",
" prot_B = col_double(),\n",
" prot_C = col_double()\n",
")\n"
]
}
],
"source": [
"df_up1 <- read_tsv('data/unc_proteins_v1.tsv')\n",
"df_up2 <- read_tsv('data/unc_proteins_v2.tsv')\n",
"df_up <- bind_rows(df_up1, df_up2, .id = \"visit\")\n",
"df_up.scaled <- df_up %>% mutate_if(is.numeric, scale)"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"visit | pet | prot_A | prot_B | prot_C |
\n",
"\n",
"\t1 | David | 1.04580136 | 0.1280673 | -0.6867668 |
\n",
"\t1 | Ed | -1.65977553 | 0.2117860 | 0.9772767 |
\n",
"\t1 | Fiona | 0.05811210 | -0.6413509 | -1.4593511 |
\n",
"\t2 | David | -0.44575884 | -0.7384114 | 0.9175770 |
\n",
"\t2 | Ed | 0.02765904 | 1.8317201 | 0.6595148 |
\n",
"\t2 | Fiona | 0.97396187 | -0.7918110 | -0.4082508 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lllll}\n",
" visit & pet & prot\\_A & prot\\_B & prot\\_C\\\\\n",
"\\hline\n",
"\t 1 & David & 1.04580136 & 0.1280673 & -0.6867668 \\\\\n",
"\t 1 & Ed & -1.65977553 & 0.2117860 & 0.9772767 \\\\\n",
"\t 1 & Fiona & 0.05811210 & -0.6413509 & -1.4593511 \\\\\n",
"\t 2 & David & -0.44575884 & -0.7384114 & 0.9175770 \\\\\n",
"\t 2 & Ed & 0.02765904 & 1.8317201 & 0.6595148 \\\\\n",
"\t 2 & Fiona & 0.97396187 & -0.7918110 & -0.4082508 \\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"visit | pet | prot_A | prot_B | prot_C | \n",
"|---|---|---|---|---|---|\n",
"| 1 | David | 1.04580136 | 0.1280673 | -0.6867668 | \n",
"| 1 | Ed | -1.65977553 | 0.2117860 | 0.9772767 | \n",
"| 1 | Fiona | 0.05811210 | -0.6413509 | -1.4593511 | \n",
"| 2 | David | -0.44575884 | -0.7384114 | 0.9175770 | \n",
"| 2 | Ed | 0.02765904 | 1.8317201 | 0.6595148 | \n",
"| 2 | Fiona | 0.97396187 | -0.7918110 | -0.4082508 | \n",
"\n",
"\n"
],
"text/plain": [
" visit pet prot_A prot_B prot_C \n",
"1 1 David 1.04580136 0.1280673 -0.6867668\n",
"2 1 Ed -1.65977553 0.2117860 0.9772767\n",
"3 1 Fiona 0.05811210 -0.6413509 -1.4593511\n",
"4 2 David -0.44575884 -0.7384114 0.9175770\n",
"5 2 Ed 0.02765904 1.8317201 0.6595148\n",
"6 2 Fiona 0.97396187 -0.7918110 -0.4082508"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"head(df_up.scaled)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Find the change in each gene from visit 1 to visit 2"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"visit | pet | gene_A | gene_B | gene_C |
\n",
"\n",
"\t1 | Ann | -1.0073042 | -1.2805845 | -0.4479685 |
\n",
"\t1 | Bob | -1.2335142 | -0.3723877 | -1.4327190 |
\n",
"\t1 | Charlie | 0.6181059 | -0.8868438 | -0.4357137 |
\n",
"\t2 | Ann | 0.7318518 | 0.4364545 | 0.7449587 |
\n",
"\t2 | Bob | 1.2034879 | 1.1789234 | 1.4050414 |
\n",
"\t2 | Charlie | -0.3126272 | 0.9244382 | 0.1664011 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lllll}\n",
" visit & pet & gene\\_A & gene\\_B & gene\\_C\\\\\n",
"\\hline\n",
"\t 1 & Ann & -1.0073042 & -1.2805845 & -0.4479685\\\\\n",
"\t 1 & Bob & -1.2335142 & -0.3723877 & -1.4327190\\\\\n",
"\t 1 & Charlie & 0.6181059 & -0.8868438 & -0.4357137\\\\\n",
"\t 2 & Ann & 0.7318518 & 0.4364545 & 0.7449587\\\\\n",
"\t 2 & Bob & 1.2034879 & 1.1789234 & 1.4050414\\\\\n",
"\t 2 & Charlie & -0.3126272 & 0.9244382 & 0.1664011\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"visit | pet | gene_A | gene_B | gene_C | \n",
"|---|---|---|---|---|---|\n",
"| 1 | Ann | -1.0073042 | -1.2805845 | -0.4479685 | \n",
"| 1 | Bob | -1.2335142 | -0.3723877 | -1.4327190 | \n",
"| 1 | Charlie | 0.6181059 | -0.8868438 | -0.4357137 | \n",
"| 2 | Ann | 0.7318518 | 0.4364545 | 0.7449587 | \n",
"| 2 | Bob | 1.2034879 | 1.1789234 | 1.4050414 | \n",
"| 2 | Charlie | -0.3126272 | 0.9244382 | 0.1664011 | \n",
"\n",
"\n"
],
"text/plain": [
" visit pet gene_A gene_B gene_C \n",
"1 1 Ann -1.0073042 -1.2805845 -0.4479685\n",
"2 1 Bob -1.2335142 -0.3723877 -1.4327190\n",
"3 1 Charlie 0.6181059 -0.8868438 -0.4357137\n",
"4 2 Ann 0.7318518 0.4364545 0.7449587\n",
"5 2 Bob 1.2034879 1.1789234 1.4050414\n",
"6 2 Charlie -0.3126272 0.9244382 0.1664011"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_dg.scaled"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [],
"source": [
"# To avoid a bunch or harmless warnigns, we will temprarily suppress them\n",
"\n",
"options(warn=-1)"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"visit | pet | gene | value |
\n",
"\n",
"\t1 | Ann | gene_A | -1.0073042 |
\n",
"\t1 | Bob | gene_A | -1.2335142 |
\n",
"\t1 | Charlie | gene_A | 0.6181059 |
\n",
"\t2 | Ann | gene_A | 0.7318518 |
\n",
"\t2 | Bob | gene_A | 1.2034879 |
\n",
"\t2 | Charlie | gene_A | -0.3126272 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|llll}\n",
" visit & pet & gene & value\\\\\n",
"\\hline\n",
"\t 1 & Ann & gene\\_A & -1.0073042\\\\\n",
"\t 1 & Bob & gene\\_A & -1.2335142\\\\\n",
"\t 1 & Charlie & gene\\_A & 0.6181059\\\\\n",
"\t 2 & Ann & gene\\_A & 0.7318518\\\\\n",
"\t 2 & Bob & gene\\_A & 1.2034879\\\\\n",
"\t 2 & Charlie & gene\\_A & -0.3126272\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"visit | pet | gene | value | \n",
"|---|---|---|---|---|---|\n",
"| 1 | Ann | gene_A | -1.0073042 | \n",
"| 1 | Bob | gene_A | -1.2335142 | \n",
"| 1 | Charlie | gene_A | 0.6181059 | \n",
"| 2 | Ann | gene_A | 0.7318518 | \n",
"| 2 | Bob | gene_A | 1.2034879 | \n",
"| 2 | Charlie | gene_A | -0.3126272 | \n",
"\n",
"\n"
],
"text/plain": [
" visit pet gene value \n",
"1 1 Ann gene_A -1.0073042\n",
"2 1 Bob gene_A -1.2335142\n",
"3 1 Charlie gene_A 0.6181059\n",
"4 2 Ann gene_A 0.7318518\n",
"5 2 Bob gene_A 1.2034879\n",
"6 2 Charlie gene_A -0.3126272"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_dg.scaled %>% \n",
"gather(gene, value, starts_with('gene')) %>% \n",
"head"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"pet | gene | 1 | 2 |
\n",
"\n",
"\tAnn | gene_A | -1.0073042 | 0.7318518 |
\n",
"\tAnn | gene_B | -1.2805845 | 0.4364545 |
\n",
"\tAnn | gene_C | -0.4479685 | 0.7449587 |
\n",
"\tBob | gene_A | -1.2335142 | 1.2034879 |
\n",
"\tBob | gene_B | -0.3723877 | 1.1789234 |
\n",
"\tBob | gene_C | -1.4327190 | 1.4050414 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|llll}\n",
" pet & gene & 1 & 2\\\\\n",
"\\hline\n",
"\t Ann & gene\\_A & -1.0073042 & 0.7318518 \\\\\n",
"\t Ann & gene\\_B & -1.2805845 & 0.4364545 \\\\\n",
"\t Ann & gene\\_C & -0.4479685 & 0.7449587 \\\\\n",
"\t Bob & gene\\_A & -1.2335142 & 1.2034879 \\\\\n",
"\t Bob & gene\\_B & -0.3723877 & 1.1789234 \\\\\n",
"\t Bob & gene\\_C & -1.4327190 & 1.4050414 \\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"pet | gene | 1 | 2 | \n",
"|---|---|---|---|---|---|\n",
"| Ann | gene_A | -1.0073042 | 0.7318518 | \n",
"| Ann | gene_B | -1.2805845 | 0.4364545 | \n",
"| Ann | gene_C | -0.4479685 | 0.7449587 | \n",
"| Bob | gene_A | -1.2335142 | 1.2034879 | \n",
"| Bob | gene_B | -0.3723877 | 1.1789234 | \n",
"| Bob | gene_C | -1.4327190 | 1.4050414 | \n",
"\n",
"\n"
],
"text/plain": [
" pet gene 1 2 \n",
"1 Ann gene_A -1.0073042 0.7318518\n",
"2 Ann gene_B -1.2805845 0.4364545\n",
"3 Ann gene_C -0.4479685 0.7449587\n",
"4 Bob gene_A -1.2335142 1.2034879\n",
"5 Bob gene_B -0.3723877 1.1789234\n",
"6 Bob gene_C -1.4327190 1.4050414"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_dg.scaled %>% \n",
"gather(gene, value, starts_with('gene')) %>% \n",
"spread(visit, value) %>%\n",
"head"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"patient | gene | gene.change |
\n",
"\n",
"\tAnn | A | 1.739156 |
\n",
"\tAnn | B | 1.717039 |
\n",
"\tAnn | C | 1.192927 |
\n",
"\tBob | A | 2.437002 |
\n",
"\tBob | B | 1.551311 |
\n",
"\tBob | C | 2.837760 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lll}\n",
" patient & gene & gene.change\\\\\n",
"\\hline\n",
"\t Ann & A & 1.739156\\\\\n",
"\t Ann & B & 1.717039\\\\\n",
"\t Ann & C & 1.192927\\\\\n",
"\t Bob & A & 2.437002\\\\\n",
"\t Bob & B & 1.551311\\\\\n",
"\t Bob & C & 2.837760\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"patient | gene | gene.change | \n",
"|---|---|---|---|---|---|\n",
"| Ann | A | 1.739156 | \n",
"| Ann | B | 1.717039 | \n",
"| Ann | C | 1.192927 | \n",
"| Bob | A | 2.437002 | \n",
"| Bob | B | 1.551311 | \n",
"| Bob | C | 2.837760 | \n",
"\n",
"\n"
],
"text/plain": [
" patient gene gene.change\n",
"1 Ann A 1.739156 \n",
"2 Ann B 1.717039 \n",
"3 Ann C 1.192927 \n",
"4 Bob A 2.437002 \n",
"5 Bob B 1.551311 \n",
"6 Bob C 2.837760 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_dg.diff <- df_dg.scaled %>% \n",
"gather(gene, value, starts_with('gene')) %>% \n",
"spread(visit, value) %>%\n",
"transmute(patient=pet, \n",
" gene=str_extract(gene, '[^_]+$'), \n",
" gene.change=`2`-`1`)\n",
"head(df_dg.diff)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Combine with UNC data"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"patient | gene | gene.change |
\n",
"\n",
"\tDavid | A | 0.6780785 |
\n",
"\tDavid | B | 1.7998124 |
\n",
"\tDavid | C | 0.9776623 |
\n",
"\tEd | A | 0.7759811 |
\n",
"\tEd | B | 0.3269814 |
\n",
"\tEd | C | 0.8973218 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lll}\n",
" patient & gene & gene.change\\\\\n",
"\\hline\n",
"\t David & A & 0.6780785\\\\\n",
"\t David & B & 1.7998124\\\\\n",
"\t David & C & 0.9776623\\\\\n",
"\t Ed & A & 0.7759811\\\\\n",
"\t Ed & B & 0.3269814\\\\\n",
"\t Ed & C & 0.8973218\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"patient | gene | gene.change | \n",
"|---|---|---|---|---|---|\n",
"| David | A | 0.6780785 | \n",
"| David | B | 1.7998124 | \n",
"| David | C | 0.9776623 | \n",
"| Ed | A | 0.7759811 | \n",
"| Ed | B | 0.3269814 | \n",
"| Ed | C | 0.8973218 | \n",
"\n",
"\n"
],
"text/plain": [
" patient gene gene.change\n",
"1 David A 0.6780785 \n",
"2 David B 1.7998124 \n",
"3 David C 0.9776623 \n",
"4 Ed A 0.7759811 \n",
"5 Ed B 0.3269814 \n",
"6 Ed C 0.8973218 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_ug.diff <- df_ug.scaled %>% \n",
"gather(gene, value, starts_with('gene')) %>% \n",
"spread(visit, value) %>%\n",
"transmute(patient=pet, \n",
" gene=str_extract(gene, '[^_]+$'), \n",
" gene.change=`2`-`1`)\n",
"head(df_ug.diff)"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"site | patient | gene | gene.change |
\n",
"\n",
"\tduke | Ann | A | 1.7391560 |
\n",
"\tduke | Ann | B | 1.7170389 |
\n",
"\tduke | Ann | C | 1.1929272 |
\n",
"\tduke | Bob | A | 2.4370022 |
\n",
"\tduke | Bob | B | 1.5513112 |
\n",
"\tduke | Bob | C | 2.8377604 |
\n",
"\tduke | Charlie | A | -0.9307330 |
\n",
"\tduke | Charlie | B | 1.8112820 |
\n",
"\tduke | Charlie | C | 0.6021148 |
\n",
"\tunc | David | A | 0.6780785 |
\n",
"\tunc | David | B | 1.7998124 |
\n",
"\tunc | David | C | 0.9776623 |
\n",
"\tunc | Ed | A | 0.7759811 |
\n",
"\tunc | Ed | B | 0.3269814 |
\n",
"\tunc | Ed | C | 0.8973218 |
\n",
"\tunc | Fiona | A | 1.3541798 |
\n",
"\tunc | Fiona | B | 1.9866301 |
\n",
"\tunc | Fiona | C | 2.3377464 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|llll}\n",
" site & patient & gene & gene.change\\\\\n",
"\\hline\n",
"\t duke & Ann & A & 1.7391560\\\\\n",
"\t duke & Ann & B & 1.7170389\\\\\n",
"\t duke & Ann & C & 1.1929272\\\\\n",
"\t duke & Bob & A & 2.4370022\\\\\n",
"\t duke & Bob & B & 1.5513112\\\\\n",
"\t duke & Bob & C & 2.8377604\\\\\n",
"\t duke & Charlie & A & -0.9307330\\\\\n",
"\t duke & Charlie & B & 1.8112820\\\\\n",
"\t duke & Charlie & C & 0.6021148\\\\\n",
"\t unc & David & A & 0.6780785\\\\\n",
"\t unc & David & B & 1.7998124\\\\\n",
"\t unc & David & C & 0.9776623\\\\\n",
"\t unc & Ed & A & 0.7759811\\\\\n",
"\t unc & Ed & B & 0.3269814\\\\\n",
"\t unc & Ed & C & 0.8973218\\\\\n",
"\t unc & Fiona & A & 1.3541798\\\\\n",
"\t unc & Fiona & B & 1.9866301\\\\\n",
"\t unc & Fiona & C & 2.3377464\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"site | patient | gene | gene.change | \n",
"|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
"| duke | Ann | A | 1.7391560 | \n",
"| duke | Ann | B | 1.7170389 | \n",
"| duke | Ann | C | 1.1929272 | \n",
"| duke | Bob | A | 2.4370022 | \n",
"| duke | Bob | B | 1.5513112 | \n",
"| duke | Bob | C | 2.8377604 | \n",
"| duke | Charlie | A | -0.9307330 | \n",
"| duke | Charlie | B | 1.8112820 | \n",
"| duke | Charlie | C | 0.6021148 | \n",
"| unc | David | A | 0.6780785 | \n",
"| unc | David | B | 1.7998124 | \n",
"| unc | David | C | 0.9776623 | \n",
"| unc | Ed | A | 0.7759811 | \n",
"| unc | Ed | B | 0.3269814 | \n",
"| unc | Ed | C | 0.8973218 | \n",
"| unc | Fiona | A | 1.3541798 | \n",
"| unc | Fiona | B | 1.9866301 | \n",
"| unc | Fiona | C | 2.3377464 | \n",
"\n",
"\n"
],
"text/plain": [
" site patient gene gene.change\n",
"1 duke Ann A 1.7391560 \n",
"2 duke Ann B 1.7170389 \n",
"3 duke Ann C 1.1929272 \n",
"4 duke Bob A 2.4370022 \n",
"5 duke Bob B 1.5513112 \n",
"6 duke Bob C 2.8377604 \n",
"7 duke Charlie A -0.9307330 \n",
"8 duke Charlie B 1.8112820 \n",
"9 duke Charlie C 0.6021148 \n",
"10 unc David A 0.6780785 \n",
"11 unc David B 1.7998124 \n",
"12 unc David C 0.9776623 \n",
"13 unc Ed A 0.7759811 \n",
"14 unc Ed B 0.3269814 \n",
"15 unc Ed C 0.8973218 \n",
"16 unc Fiona A 1.3541798 \n",
"17 unc Fiona B 1.9866301 \n",
"18 unc Fiona C 2.3377464 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_g <- bind_rows(list(duke=df_dg.diff, unc=df_ug.diff), .id='site')\n",
"df_g"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Now do the same with protein data"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"patient | protein | protein.change |
\n",
"\n",
"\tAnn | A | 0.07755833 |
\n",
"\tAnn | B | -0.60571547 |
\n",
"\tAnn | C | 2.26166848 |
\n",
"\tBob | A | 2.80037479 |
\n",
"\tBob | B | 0.64111624 |
\n",
"\tBob | C | 0.95898869 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lll}\n",
" patient & protein & protein.change\\\\\n",
"\\hline\n",
"\t Ann & A & 0.07755833\\\\\n",
"\t Ann & B & -0.60571547\\\\\n",
"\t Ann & C & 2.26166848\\\\\n",
"\t Bob & A & 2.80037479\\\\\n",
"\t Bob & B & 0.64111624\\\\\n",
"\t Bob & C & 0.95898869\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"patient | protein | protein.change | \n",
"|---|---|---|---|---|---|\n",
"| Ann | A | 0.07755833 | \n",
"| Ann | B | -0.60571547 | \n",
"| Ann | C | 2.26166848 | \n",
"| Bob | A | 2.80037479 | \n",
"| Bob | B | 0.64111624 | \n",
"| Bob | C | 0.95898869 | \n",
"\n",
"\n"
],
"text/plain": [
" patient protein protein.change\n",
"1 Ann A 0.07755833 \n",
"2 Ann B -0.60571547 \n",
"3 Ann C 2.26166848 \n",
"4 Bob A 2.80037479 \n",
"5 Bob B 0.64111624 \n",
"6 Bob C 0.95898869 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_dp.diff <- df_dp.scaled %>% \n",
"gather(protein, value, starts_with('prot')) %>% \n",
"spread(visit, value) %>%\n",
"transmute(patient=pet, \n",
" protein=str_extract(protein, '[^_]+$'), \n",
" protein.change=`2`-`1`)\n",
"head(df_dp.diff)"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"patient | protein | protein.change |
\n",
"\n",
"\tDavid | A | -1.4915602 |
\n",
"\tDavid | B | -0.8664787 |
\n",
"\tDavid | C | 1.6043438 |
\n",
"\tEd | A | 1.6874346 |
\n",
"\tEd | B | 1.6199340 |
\n",
"\tEd | C | -0.3177619 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lll}\n",
" patient & protein & protein.change\\\\\n",
"\\hline\n",
"\t David & A & -1.4915602\\\\\n",
"\t David & B & -0.8664787\\\\\n",
"\t David & C & 1.6043438\\\\\n",
"\t Ed & A & 1.6874346\\\\\n",
"\t Ed & B & 1.6199340\\\\\n",
"\t Ed & C & -0.3177619\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"patient | protein | protein.change | \n",
"|---|---|---|---|---|---|\n",
"| David | A | -1.4915602 | \n",
"| David | B | -0.8664787 | \n",
"| David | C | 1.6043438 | \n",
"| Ed | A | 1.6874346 | \n",
"| Ed | B | 1.6199340 | \n",
"| Ed | C | -0.3177619 | \n",
"\n",
"\n"
],
"text/plain": [
" patient protein protein.change\n",
"1 David A -1.4915602 \n",
"2 David B -0.8664787 \n",
"3 David C 1.6043438 \n",
"4 Ed A 1.6874346 \n",
"5 Ed B 1.6199340 \n",
"6 Ed C -0.3177619 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_up.diff <- df_up.scaled %>% \n",
"gather(protein, value, starts_with('prot')) %>% \n",
"spread(visit, value) %>%\n",
"transmute(patient=pet, \n",
" protein=str_extract(protein, '[^_]+$'), \n",
" protein.change=`2`-`1`)\n",
"head(df_up.diff)"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"site | patient | protein | protein.change |
\n",
"\n",
"\tduke | Ann | A | 0.07755833 |
\n",
"\tduke | Ann | B | -0.60571547 |
\n",
"\tduke | Ann | C | 2.26166848 |
\n",
"\tduke | Bob | A | 2.80037479 |
\n",
"\tduke | Bob | B | 0.64111624 |
\n",
"\tduke | Bob | C | 0.95898869 |
\n",
"\tduke | Charlie | A | 0.83316369 |
\n",
"\tduke | Charlie | B | 2.07089865 |
\n",
"\tduke | Charlie | C | 0.35482775 |
\n",
"\tunc | David | A | -1.49156020 |
\n",
"\tunc | David | B | -0.86647868 |
\n",
"\tunc | David | C | 1.60434377 |
\n",
"\tunc | Ed | A | 1.68743457 |
\n",
"\tunc | Ed | B | 1.61993404 |
\n",
"\tunc | Ed | C | -0.31776193 |
\n",
"\tunc | Fiona | A | 0.91584977 |
\n",
"\tunc | Fiona | B | -0.15046013 |
\n",
"\tunc | Fiona | C | 1.05110029 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|llll}\n",
" site & patient & protein & protein.change\\\\\n",
"\\hline\n",
"\t duke & Ann & A & 0.07755833\\\\\n",
"\t duke & Ann & B & -0.60571547\\\\\n",
"\t duke & Ann & C & 2.26166848\\\\\n",
"\t duke & Bob & A & 2.80037479\\\\\n",
"\t duke & Bob & B & 0.64111624\\\\\n",
"\t duke & Bob & C & 0.95898869\\\\\n",
"\t duke & Charlie & A & 0.83316369\\\\\n",
"\t duke & Charlie & B & 2.07089865\\\\\n",
"\t duke & Charlie & C & 0.35482775\\\\\n",
"\t unc & David & A & -1.49156020\\\\\n",
"\t unc & David & B & -0.86647868\\\\\n",
"\t unc & David & C & 1.60434377\\\\\n",
"\t unc & Ed & A & 1.68743457\\\\\n",
"\t unc & Ed & B & 1.61993404\\\\\n",
"\t unc & Ed & C & -0.31776193\\\\\n",
"\t unc & Fiona & A & 0.91584977\\\\\n",
"\t unc & Fiona & B & -0.15046013\\\\\n",
"\t unc & Fiona & C & 1.05110029\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"site | patient | protein | protein.change | \n",
"|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
"| duke | Ann | A | 0.07755833 | \n",
"| duke | Ann | B | -0.60571547 | \n",
"| duke | Ann | C | 2.26166848 | \n",
"| duke | Bob | A | 2.80037479 | \n",
"| duke | Bob | B | 0.64111624 | \n",
"| duke | Bob | C | 0.95898869 | \n",
"| duke | Charlie | A | 0.83316369 | \n",
"| duke | Charlie | B | 2.07089865 | \n",
"| duke | Charlie | C | 0.35482775 | \n",
"| unc | David | A | -1.49156020 | \n",
"| unc | David | B | -0.86647868 | \n",
"| unc | David | C | 1.60434377 | \n",
"| unc | Ed | A | 1.68743457 | \n",
"| unc | Ed | B | 1.61993404 | \n",
"| unc | Ed | C | -0.31776193 | \n",
"| unc | Fiona | A | 0.91584977 | \n",
"| unc | Fiona | B | -0.15046013 | \n",
"| unc | Fiona | C | 1.05110029 | \n",
"\n",
"\n"
],
"text/plain": [
" site patient protein protein.change\n",
"1 duke Ann A 0.07755833 \n",
"2 duke Ann B -0.60571547 \n",
"3 duke Ann C 2.26166848 \n",
"4 duke Bob A 2.80037479 \n",
"5 duke Bob B 0.64111624 \n",
"6 duke Bob C 0.95898869 \n",
"7 duke Charlie A 0.83316369 \n",
"8 duke Charlie B 2.07089865 \n",
"9 duke Charlie C 0.35482775 \n",
"10 unc David A -1.49156020 \n",
"11 unc David B -0.86647868 \n",
"12 unc David C 1.60434377 \n",
"13 unc Ed A 1.68743457 \n",
"14 unc Ed B 1.61993404 \n",
"15 unc Ed C -0.31776193 \n",
"16 unc Fiona A 0.91584977 \n",
"17 unc Fiona B -0.15046013 \n",
"18 unc Fiona C 1.05110029 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_p <- bind_rows(list(duke=df_dp.diff, unc=df_up.diff), .id='site')\n",
"df_p"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Combine gene and protein data into single data frame\n",
"\n",
"Since the rows are perfectly aligned, we can just bind columns together. If we are not certain that the rows match up exactly, it is safer to use a `join` to combine columns."
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"site | patient | gene | gene.change | site1 | patient1 | protein | protein.change |
\n",
"\n",
"\tduke | Ann | A | 1.7391560 | duke | Ann | A | 0.07755833 |
\n",
"\tduke | Ann | B | 1.7170389 | duke | Ann | B | -0.60571547 |
\n",
"\tduke | Ann | C | 1.1929272 | duke | Ann | C | 2.26166848 |
\n",
"\tduke | Bob | A | 2.4370022 | duke | Bob | A | 2.80037479 |
\n",
"\tduke | Bob | B | 1.5513112 | duke | Bob | B | 0.64111624 |
\n",
"\tduke | Bob | C | 2.8377604 | duke | Bob | C | 0.95898869 |
\n",
"\tduke | Charlie | A | -0.9307330 | duke | Charlie | A | 0.83316369 |
\n",
"\tduke | Charlie | B | 1.8112820 | duke | Charlie | B | 2.07089865 |
\n",
"\tduke | Charlie | C | 0.6021148 | duke | Charlie | C | 0.35482775 |
\n",
"\tunc | David | A | 0.6780785 | unc | David | A | -1.49156020 |
\n",
"\tunc | David | B | 1.7998124 | unc | David | B | -0.86647868 |
\n",
"\tunc | David | C | 0.9776623 | unc | David | C | 1.60434377 |
\n",
"\tunc | Ed | A | 0.7759811 | unc | Ed | A | 1.68743457 |
\n",
"\tunc | Ed | B | 0.3269814 | unc | Ed | B | 1.61993404 |
\n",
"\tunc | Ed | C | 0.8973218 | unc | Ed | C | -0.31776193 |
\n",
"\tunc | Fiona | A | 1.3541798 | unc | Fiona | A | 0.91584977 |
\n",
"\tunc | Fiona | B | 1.9866301 | unc | Fiona | B | -0.15046013 |
\n",
"\tunc | Fiona | C | 2.3377464 | unc | Fiona | C | 1.05110029 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|llllllll}\n",
" site & patient & gene & gene.change & site1 & patient1 & protein & protein.change\\\\\n",
"\\hline\n",
"\t duke & Ann & A & 1.7391560 & duke & Ann & A & 0.07755833\\\\\n",
"\t duke & Ann & B & 1.7170389 & duke & Ann & B & -0.60571547\\\\\n",
"\t duke & Ann & C & 1.1929272 & duke & Ann & C & 2.26166848\\\\\n",
"\t duke & Bob & A & 2.4370022 & duke & Bob & A & 2.80037479\\\\\n",
"\t duke & Bob & B & 1.5513112 & duke & Bob & B & 0.64111624\\\\\n",
"\t duke & Bob & C & 2.8377604 & duke & Bob & C & 0.95898869\\\\\n",
"\t duke & Charlie & A & -0.9307330 & duke & Charlie & A & 0.83316369\\\\\n",
"\t duke & Charlie & B & 1.8112820 & duke & Charlie & B & 2.07089865\\\\\n",
"\t duke & Charlie & C & 0.6021148 & duke & Charlie & C & 0.35482775\\\\\n",
"\t unc & David & A & 0.6780785 & unc & David & A & -1.49156020\\\\\n",
"\t unc & David & B & 1.7998124 & unc & David & B & -0.86647868\\\\\n",
"\t unc & David & C & 0.9776623 & unc & David & C & 1.60434377\\\\\n",
"\t unc & Ed & A & 0.7759811 & unc & Ed & A & 1.68743457\\\\\n",
"\t unc & Ed & B & 0.3269814 & unc & Ed & B & 1.61993404\\\\\n",
"\t unc & Ed & C & 0.8973218 & unc & Ed & C & -0.31776193\\\\\n",
"\t unc & Fiona & A & 1.3541798 & unc & Fiona & A & 0.91584977\\\\\n",
"\t unc & Fiona & B & 1.9866301 & unc & Fiona & B & -0.15046013\\\\\n",
"\t unc & Fiona & C & 2.3377464 & unc & Fiona & C & 1.05110029\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"site | patient | gene | gene.change | site1 | patient1 | protein | protein.change | \n",
"|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
"| duke | Ann | A | 1.7391560 | duke | Ann | A | 0.07755833 | \n",
"| duke | Ann | B | 1.7170389 | duke | Ann | B | -0.60571547 | \n",
"| duke | Ann | C | 1.1929272 | duke | Ann | C | 2.26166848 | \n",
"| duke | Bob | A | 2.4370022 | duke | Bob | A | 2.80037479 | \n",
"| duke | Bob | B | 1.5513112 | duke | Bob | B | 0.64111624 | \n",
"| duke | Bob | C | 2.8377604 | duke | Bob | C | 0.95898869 | \n",
"| duke | Charlie | A | -0.9307330 | duke | Charlie | A | 0.83316369 | \n",
"| duke | Charlie | B | 1.8112820 | duke | Charlie | B | 2.07089865 | \n",
"| duke | Charlie | C | 0.6021148 | duke | Charlie | C | 0.35482775 | \n",
"| unc | David | A | 0.6780785 | unc | David | A | -1.49156020 | \n",
"| unc | David | B | 1.7998124 | unc | David | B | -0.86647868 | \n",
"| unc | David | C | 0.9776623 | unc | David | C | 1.60434377 | \n",
"| unc | Ed | A | 0.7759811 | unc | Ed | A | 1.68743457 | \n",
"| unc | Ed | B | 0.3269814 | unc | Ed | B | 1.61993404 | \n",
"| unc | Ed | C | 0.8973218 | unc | Ed | C | -0.31776193 | \n",
"| unc | Fiona | A | 1.3541798 | unc | Fiona | A | 0.91584977 | \n",
"| unc | Fiona | B | 1.9866301 | unc | Fiona | B | -0.15046013 | \n",
"| unc | Fiona | C | 2.3377464 | unc | Fiona | C | 1.05110029 | \n",
"\n",
"\n"
],
"text/plain": [
" site patient gene gene.change site1 patient1 protein protein.change\n",
"1 duke Ann A 1.7391560 duke Ann A 0.07755833 \n",
"2 duke Ann B 1.7170389 duke Ann B -0.60571547 \n",
"3 duke Ann C 1.1929272 duke Ann C 2.26166848 \n",
"4 duke Bob A 2.4370022 duke Bob A 2.80037479 \n",
"5 duke Bob B 1.5513112 duke Bob B 0.64111624 \n",
"6 duke Bob C 2.8377604 duke Bob C 0.95898869 \n",
"7 duke Charlie A -0.9307330 duke Charlie A 0.83316369 \n",
"8 duke Charlie B 1.8112820 duke Charlie B 2.07089865 \n",
"9 duke Charlie C 0.6021148 duke Charlie C 0.35482775 \n",
"10 unc David A 0.6780785 unc David A -1.49156020 \n",
"11 unc David B 1.7998124 unc David B -0.86647868 \n",
"12 unc David C 0.9776623 unc David C 1.60434377 \n",
"13 unc Ed A 0.7759811 unc Ed A 1.68743457 \n",
"14 unc Ed B 0.3269814 unc Ed B 1.61993404 \n",
"15 unc Ed C 0.8973218 unc Ed C -0.31776193 \n",
"16 unc Fiona A 1.3541798 unc Fiona A 0.91584977 \n",
"17 unc Fiona B 1.9866301 unc Fiona B -0.15046013 \n",
"18 unc Fiona C 2.3377464 unc Fiona C 1.05110029 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bind_cols(df_g, df_p, )"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"site | patient | gene | gene.change | protein.change |
\n",
"\n",
"\tduke | Ann | A | 1.739156 | 0.07755833 |
\n",
"\tduke | Ann | B | 1.717039 | -0.60571547 |
\n",
"\tduke | Ann | C | 1.192927 | 2.26166848 |
\n",
"\tduke | Bob | A | 2.437002 | 2.80037479 |
\n",
"\tduke | Bob | B | 1.551311 | 0.64111624 |
\n",
"\tduke | Bob | C | 2.837760 | 0.95898869 |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lllll}\n",
" site & patient & gene & gene.change & protein.change\\\\\n",
"\\hline\n",
"\t duke & Ann & A & 1.739156 & 0.07755833\\\\\n",
"\t duke & Ann & B & 1.717039 & -0.60571547\\\\\n",
"\t duke & Ann & C & 1.192927 & 2.26166848\\\\\n",
"\t duke & Bob & A & 2.437002 & 2.80037479\\\\\n",
"\t duke & Bob & B & 1.551311 & 0.64111624\\\\\n",
"\t duke & Bob & C & 2.837760 & 0.95898869\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"site | patient | gene | gene.change | protein.change | \n",
"|---|---|---|---|---|---|\n",
"| duke | Ann | A | 1.739156 | 0.07755833 | \n",
"| duke | Ann | B | 1.717039 | -0.60571547 | \n",
"| duke | Ann | C | 1.192927 | 2.26166848 | \n",
"| duke | Bob | A | 2.437002 | 2.80037479 | \n",
"| duke | Bob | B | 1.551311 | 0.64111624 | \n",
"| duke | Bob | C | 2.837760 | 0.95898869 | \n",
"\n",
"\n"
],
"text/plain": [
" site patient gene gene.change protein.change\n",
"1 duke Ann A 1.739156 0.07755833 \n",
"2 duke Ann B 1.717039 -0.60571547 \n",
"3 duke Ann C 1.192927 2.26166848 \n",
"4 duke Bob A 2.437002 2.80037479 \n",
"5 duke Bob B 1.551311 0.64111624 \n",
"6 duke Bob C 2.837760 0.95898869 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_gp <- bind_cols(df_g, df_p %>% select(-site, -patient, -protein))\n",
"head(df_gp)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Combine with demographic data"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Parsed with column specification:\n",
"cols(\n",
" patients = col_character(),\n",
" age = col_integer(),\n",
" sex = col_character()\n",
")\n",
"Parsed with column specification:\n",
"cols(\n",
" patients = col_character(),\n",
" age = col_integer(),\n",
" sex = col_character()\n",
")\n"
]
}
],
"source": [
"df_dd <- read_tsv('data/duke_demographics.tsv')\n",
"df_ud <- read_tsv('data/unc_demographics.tsv')"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"patients | age | sex |
\n",
"\n",
"\tAnn | 16 | F |
\n",
"\tBob | 23 | M |
\n",
"\tBeth | 43 | F |
\n",
"\tCharlie | 53 | M |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lll}\n",
" patients & age & sex\\\\\n",
"\\hline\n",
"\t Ann & 16 & F \\\\\n",
"\t Bob & 23 & M \\\\\n",
"\t Beth & 43 & F \\\\\n",
"\t Charlie & 53 & M \\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"patients | age | sex | \n",
"|---|---|---|---|\n",
"| Ann | 16 | F | \n",
"| Bob | 23 | M | \n",
"| Beth | 43 | F | \n",
"| Charlie | 53 | M | \n",
"\n",
"\n"
],
"text/plain": [
" patients age sex\n",
"1 Ann 16 F \n",
"2 Bob 23 M \n",
"3 Beth 43 F \n",
"4 Charlie 53 M "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"head(df_dd)"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"patients | age | sex |
\n",
"\n",
"\tDavid | 49 | K |
\n",
"\tEdward | 53 | M |
\n",
"\tFiona | 67 | F |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lll}\n",
" patients & age & sex\\\\\n",
"\\hline\n",
"\t David & 49 & K \\\\\n",
"\t Edward & 53 & M \\\\\n",
"\t Fiona & 67 & F \\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"patients | age | sex | \n",
"|---|---|---|\n",
"| David | 49 | K | \n",
"| Edward | 53 | M | \n",
"| Fiona | 67 | F | \n",
"\n",
"\n"
],
"text/plain": [
" patients age sex\n",
"1 David 49 K \n",
"2 Edward 53 M \n",
"3 Fiona 67 F "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"head(df_ud)"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"site | patients | age | sex |
\n",
"\n",
"\tduke | Ann | 16 | F |
\n",
"\tduke | Bob | 23 | M |
\n",
"\tduke | Beth | 43 | F |
\n",
"\tduke | Charlie | 53 | M |
\n",
"\tunc | David | 49 | K |
\n",
"\tunc | Edward | 53 | M |
\n",
"\tunc | Fiona | 67 | F |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|llll}\n",
" site & patients & age & sex\\\\\n",
"\\hline\n",
"\t duke & Ann & 16 & F \\\\\n",
"\t duke & Bob & 23 & M \\\\\n",
"\t duke & Beth & 43 & F \\\\\n",
"\t duke & Charlie & 53 & M \\\\\n",
"\t unc & David & 49 & K \\\\\n",
"\t unc & Edward & 53 & M \\\\\n",
"\t unc & Fiona & 67 & F \\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"site | patients | age | sex | \n",
"|---|---|---|---|---|---|---|\n",
"| duke | Ann | 16 | F | \n",
"| duke | Bob | 23 | M | \n",
"| duke | Beth | 43 | F | \n",
"| duke | Charlie | 53 | M | \n",
"| unc | David | 49 | K | \n",
"| unc | Edward | 53 | M | \n",
"| unc | Fiona | 67 | F | \n",
"\n",
"\n"
],
"text/plain": [
" site patients age sex\n",
"1 duke Ann 16 F \n",
"2 duke Bob 23 M \n",
"3 duke Beth 43 F \n",
"4 duke Charlie 53 M \n",
"5 unc David 49 K \n",
"6 unc Edward 53 M \n",
"7 unc Fiona 67 F "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_d <- bind_rows(list(duke=df_dd, unc=df_ud), .id='site')\n",
"df_d"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"site | patient | gene | gene.change | protein.change | age | sex |
\n",
"\n",
"\tduke | Ann | A | 1.7391560 | 0.07755833 | 16 | F |
\n",
"\tduke | Ann | B | 1.7170389 | -0.60571547 | 16 | F |
\n",
"\tduke | Ann | C | 1.1929272 | 2.26166848 | 16 | F |
\n",
"\tduke | Bob | A | 2.4370022 | 2.80037479 | 23 | M |
\n",
"\tduke | Bob | B | 1.5513112 | 0.64111624 | 23 | M |
\n",
"\tduke | Bob | C | 2.8377604 | 0.95898869 | 23 | M |
\n",
"\tduke | Charlie | A | -0.9307330 | 0.83316369 | 53 | M |
\n",
"\tduke | Charlie | B | 1.8112820 | 2.07089865 | 53 | M |
\n",
"\tduke | Charlie | C | 0.6021148 | 0.35482775 | 53 | M |
\n",
"\tunc | David | A | 0.6780785 | -1.49156020 | 49 | K |
\n",
"\tunc | David | B | 1.7998124 | -0.86647868 | 49 | K |
\n",
"\tunc | David | C | 0.9776623 | 1.60434377 | 49 | K |
\n",
"\tunc | Ed | A | 0.7759811 | 1.68743457 | NA | NA |
\n",
"\tunc | Ed | B | 0.3269814 | 1.61993404 | NA | NA |
\n",
"\tunc | Ed | C | 0.8973218 | -0.31776193 | NA | NA |
\n",
"\tunc | Fiona | A | 1.3541798 | 0.91584977 | 67 | F |
\n",
"\tunc | Fiona | B | 1.9866301 | -0.15046013 | 67 | F |
\n",
"\tunc | Fiona | C | 2.3377464 | 1.05110029 | 67 | F |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lllllll}\n",
" site & patient & gene & gene.change & protein.change & age & sex\\\\\n",
"\\hline\n",
"\t duke & Ann & A & 1.7391560 & 0.07755833 & 16 & F \\\\\n",
"\t duke & Ann & B & 1.7170389 & -0.60571547 & 16 & F \\\\\n",
"\t duke & Ann & C & 1.1929272 & 2.26166848 & 16 & F \\\\\n",
"\t duke & Bob & A & 2.4370022 & 2.80037479 & 23 & M \\\\\n",
"\t duke & Bob & B & 1.5513112 & 0.64111624 & 23 & M \\\\\n",
"\t duke & Bob & C & 2.8377604 & 0.95898869 & 23 & M \\\\\n",
"\t duke & Charlie & A & -0.9307330 & 0.83316369 & 53 & M \\\\\n",
"\t duke & Charlie & B & 1.8112820 & 2.07089865 & 53 & M \\\\\n",
"\t duke & Charlie & C & 0.6021148 & 0.35482775 & 53 & M \\\\\n",
"\t unc & David & A & 0.6780785 & -1.49156020 & 49 & K \\\\\n",
"\t unc & David & B & 1.7998124 & -0.86647868 & 49 & K \\\\\n",
"\t unc & David & C & 0.9776623 & 1.60434377 & 49 & K \\\\\n",
"\t unc & Ed & A & 0.7759811 & 1.68743457 & NA & NA \\\\\n",
"\t unc & Ed & B & 0.3269814 & 1.61993404 & NA & NA \\\\\n",
"\t unc & Ed & C & 0.8973218 & -0.31776193 & NA & NA \\\\\n",
"\t unc & Fiona & A & 1.3541798 & 0.91584977 & 67 & F \\\\\n",
"\t unc & Fiona & B & 1.9866301 & -0.15046013 & 67 & F \\\\\n",
"\t unc & Fiona & C & 2.3377464 & 1.05110029 & 67 & F \\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"site | patient | gene | gene.change | protein.change | age | sex | \n",
"|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
"| duke | Ann | A | 1.7391560 | 0.07755833 | 16 | F | \n",
"| duke | Ann | B | 1.7170389 | -0.60571547 | 16 | F | \n",
"| duke | Ann | C | 1.1929272 | 2.26166848 | 16 | F | \n",
"| duke | Bob | A | 2.4370022 | 2.80037479 | 23 | M | \n",
"| duke | Bob | B | 1.5513112 | 0.64111624 | 23 | M | \n",
"| duke | Bob | C | 2.8377604 | 0.95898869 | 23 | M | \n",
"| duke | Charlie | A | -0.9307330 | 0.83316369 | 53 | M | \n",
"| duke | Charlie | B | 1.8112820 | 2.07089865 | 53 | M | \n",
"| duke | Charlie | C | 0.6021148 | 0.35482775 | 53 | M | \n",
"| unc | David | A | 0.6780785 | -1.49156020 | 49 | K | \n",
"| unc | David | B | 1.7998124 | -0.86647868 | 49 | K | \n",
"| unc | David | C | 0.9776623 | 1.60434377 | 49 | K | \n",
"| unc | Ed | A | 0.7759811 | 1.68743457 | NA | NA | \n",
"| unc | Ed | B | 0.3269814 | 1.61993404 | NA | NA | \n",
"| unc | Ed | C | 0.8973218 | -0.31776193 | NA | NA | \n",
"| unc | Fiona | A | 1.3541798 | 0.91584977 | 67 | F | \n",
"| unc | Fiona | B | 1.9866301 | -0.15046013 | 67 | F | \n",
"| unc | Fiona | C | 2.3377464 | 1.05110029 | 67 | F | \n",
"\n",
"\n"
],
"text/plain": [
" site patient gene gene.change protein.change age sex\n",
"1 duke Ann A 1.7391560 0.07755833 16 F \n",
"2 duke Ann B 1.7170389 -0.60571547 16 F \n",
"3 duke Ann C 1.1929272 2.26166848 16 F \n",
"4 duke Bob A 2.4370022 2.80037479 23 M \n",
"5 duke Bob B 1.5513112 0.64111624 23 M \n",
"6 duke Bob C 2.8377604 0.95898869 23 M \n",
"7 duke Charlie A -0.9307330 0.83316369 53 M \n",
"8 duke Charlie B 1.8112820 2.07089865 53 M \n",
"9 duke Charlie C 0.6021148 0.35482775 53 M \n",
"10 unc David A 0.6780785 -1.49156020 49 K \n",
"11 unc David B 1.7998124 -0.86647868 49 K \n",
"12 unc David C 0.9776623 1.60434377 49 K \n",
"13 unc Ed A 0.7759811 1.68743457 NA NA \n",
"14 unc Ed B 0.3269814 1.61993404 NA NA \n",
"15 unc Ed C 0.8973218 -0.31776193 NA NA \n",
"16 unc Fiona A 1.3541798 0.91584977 67 F \n",
"17 unc Fiona B 1.9866301 -0.15046013 67 F \n",
"18 unc Fiona C 2.3377464 1.05110029 67 F "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"left_join(df_gp, df_d, by = c('site', c('patient'='patients')))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are missing values for Ed because the names don't match. We know that Ed's name in this case is really Edward, so we fix and try again."
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"site | patient | gene | gene.change | protein.change | age | sex |
\n",
"\n",
"\tduke | Ann | A | 1.7391560 | 0.07755833 | 16 | F |
\n",
"\tduke | Ann | B | 1.7170389 | -0.60571547 | 16 | F |
\n",
"\tduke | Ann | C | 1.1929272 | 2.26166848 | 16 | F |
\n",
"\tduke | Bob | A | 2.4370022 | 2.80037479 | 23 | M |
\n",
"\tduke | Bob | B | 1.5513112 | 0.64111624 | 23 | M |
\n",
"\tduke | Bob | C | 2.8377604 | 0.95898869 | 23 | M |
\n",
"\tduke | Charlie | A | -0.9307330 | 0.83316369 | 53 | M |
\n",
"\tduke | Charlie | B | 1.8112820 | 2.07089865 | 53 | M |
\n",
"\tduke | Charlie | C | 0.6021148 | 0.35482775 | 53 | M |
\n",
"\tunc | David | A | 0.6780785 | -1.49156020 | 49 | K |
\n",
"\tunc | David | B | 1.7998124 | -0.86647868 | 49 | K |
\n",
"\tunc | David | C | 0.9776623 | 1.60434377 | 49 | K |
\n",
"\tunc | Edward | A | 0.7759811 | 1.68743457 | 53 | M |
\n",
"\tunc | Edward | B | 0.3269814 | 1.61993404 | 53 | M |
\n",
"\tunc | Edward | C | 0.8973218 | -0.31776193 | 53 | M |
\n",
"\tunc | Fiona | A | 1.3541798 | 0.91584977 | 67 | F |
\n",
"\tunc | Fiona | B | 1.9866301 | -0.15046013 | 67 | F |
\n",
"\tunc | Fiona | C | 2.3377464 | 1.05110029 | 67 | F |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lllllll}\n",
" site & patient & gene & gene.change & protein.change & age & sex\\\\\n",
"\\hline\n",
"\t duke & Ann & A & 1.7391560 & 0.07755833 & 16 & F \\\\\n",
"\t duke & Ann & B & 1.7170389 & -0.60571547 & 16 & F \\\\\n",
"\t duke & Ann & C & 1.1929272 & 2.26166848 & 16 & F \\\\\n",
"\t duke & Bob & A & 2.4370022 & 2.80037479 & 23 & M \\\\\n",
"\t duke & Bob & B & 1.5513112 & 0.64111624 & 23 & M \\\\\n",
"\t duke & Bob & C & 2.8377604 & 0.95898869 & 23 & M \\\\\n",
"\t duke & Charlie & A & -0.9307330 & 0.83316369 & 53 & M \\\\\n",
"\t duke & Charlie & B & 1.8112820 & 2.07089865 & 53 & M \\\\\n",
"\t duke & Charlie & C & 0.6021148 & 0.35482775 & 53 & M \\\\\n",
"\t unc & David & A & 0.6780785 & -1.49156020 & 49 & K \\\\\n",
"\t unc & David & B & 1.7998124 & -0.86647868 & 49 & K \\\\\n",
"\t unc & David & C & 0.9776623 & 1.60434377 & 49 & K \\\\\n",
"\t unc & Edward & A & 0.7759811 & 1.68743457 & 53 & M \\\\\n",
"\t unc & Edward & B & 0.3269814 & 1.61993404 & 53 & M \\\\\n",
"\t unc & Edward & C & 0.8973218 & -0.31776193 & 53 & M \\\\\n",
"\t unc & Fiona & A & 1.3541798 & 0.91584977 & 67 & F \\\\\n",
"\t unc & Fiona & B & 1.9866301 & -0.15046013 & 67 & F \\\\\n",
"\t unc & Fiona & C & 2.3377464 & 1.05110029 & 67 & F \\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"site | patient | gene | gene.change | protein.change | age | sex | \n",
"|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
"| duke | Ann | A | 1.7391560 | 0.07755833 | 16 | F | \n",
"| duke | Ann | B | 1.7170389 | -0.60571547 | 16 | F | \n",
"| duke | Ann | C | 1.1929272 | 2.26166848 | 16 | F | \n",
"| duke | Bob | A | 2.4370022 | 2.80037479 | 23 | M | \n",
"| duke | Bob | B | 1.5513112 | 0.64111624 | 23 | M | \n",
"| duke | Bob | C | 2.8377604 | 0.95898869 | 23 | M | \n",
"| duke | Charlie | A | -0.9307330 | 0.83316369 | 53 | M | \n",
"| duke | Charlie | B | 1.8112820 | 2.07089865 | 53 | M | \n",
"| duke | Charlie | C | 0.6021148 | 0.35482775 | 53 | M | \n",
"| unc | David | A | 0.6780785 | -1.49156020 | 49 | K | \n",
"| unc | David | B | 1.7998124 | -0.86647868 | 49 | K | \n",
"| unc | David | C | 0.9776623 | 1.60434377 | 49 | K | \n",
"| unc | Edward | A | 0.7759811 | 1.68743457 | 53 | M | \n",
"| unc | Edward | B | 0.3269814 | 1.61993404 | 53 | M | \n",
"| unc | Edward | C | 0.8973218 | -0.31776193 | 53 | M | \n",
"| unc | Fiona | A | 1.3541798 | 0.91584977 | 67 | F | \n",
"| unc | Fiona | B | 1.9866301 | -0.15046013 | 67 | F | \n",
"| unc | Fiona | C | 2.3377464 | 1.05110029 | 67 | F | \n",
"\n",
"\n"
],
"text/plain": [
" site patient gene gene.change protein.change age sex\n",
"1 duke Ann A 1.7391560 0.07755833 16 F \n",
"2 duke Ann B 1.7170389 -0.60571547 16 F \n",
"3 duke Ann C 1.1929272 2.26166848 16 F \n",
"4 duke Bob A 2.4370022 2.80037479 23 M \n",
"5 duke Bob B 1.5513112 0.64111624 23 M \n",
"6 duke Bob C 2.8377604 0.95898869 23 M \n",
"7 duke Charlie A -0.9307330 0.83316369 53 M \n",
"8 duke Charlie B 1.8112820 2.07089865 53 M \n",
"9 duke Charlie C 0.6021148 0.35482775 53 M \n",
"10 unc David A 0.6780785 -1.49156020 49 K \n",
"11 unc David B 1.7998124 -0.86647868 49 K \n",
"12 unc David C 0.9776623 1.60434377 49 K \n",
"13 unc Edward A 0.7759811 1.68743457 53 M \n",
"14 unc Edward B 0.3269814 1.61993404 53 M \n",
"15 unc Edward C 0.8973218 -0.31776193 53 M \n",
"16 unc Fiona A 1.3541798 0.91584977 67 F \n",
"17 unc Fiona B 1.9866301 -0.15046013 67 F \n",
"18 unc Fiona C 2.3377464 1.05110029 67 F "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"left_join(df_gp %>% mutate(patient=recode(patient, 'Ed'='Edward')),\n",
" df_d, \n",
" by = c('site', c('patient'='patients')))"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [],
"source": [
"df_all <- left_join(df_gp %>% mutate(patient=recode(patient, 'Ed'='Edward')),\n",
" df_d, \n",
" by = c('site', c('patient'='patients')))"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"site | patient | gene | gene.change | protein.change | age | sex |
\n",
"\n",
"\tduke | Ann | A | 1.739156 | 0.07755833 | 16 | F |
\n",
"\tduke | Ann | B | 1.717039 | -0.60571547 | 16 | F |
\n",
"\tduke | Ann | C | 1.192927 | 2.26166848 | 16 | F |
\n",
"\tduke | Bob | A | 2.437002 | 2.80037479 | 23 | M |
\n",
"\tduke | Bob | B | 1.551311 | 0.64111624 | 23 | M |
\n",
"\tduke | Bob | C | 2.837760 | 0.95898869 | 23 | M |
\n",
"\n",
"
\n"
],
"text/latex": [
"\\begin{tabular}{r|lllllll}\n",
" site & patient & gene & gene.change & protein.change & age & sex\\\\\n",
"\\hline\n",
"\t duke & Ann & A & 1.739156 & 0.07755833 & 16 & F \\\\\n",
"\t duke & Ann & B & 1.717039 & -0.60571547 & 16 & F \\\\\n",
"\t duke & Ann & C & 1.192927 & 2.26166848 & 16 & F \\\\\n",
"\t duke & Bob & A & 2.437002 & 2.80037479 & 23 & M \\\\\n",
"\t duke & Bob & B & 1.551311 & 0.64111624 & 23 & M \\\\\n",
"\t duke & Bob & C & 2.837760 & 0.95898869 & 23 & M \\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"site | patient | gene | gene.change | protein.change | age | sex | \n",
"|---|---|---|---|---|---|\n",
"| duke | Ann | A | 1.739156 | 0.07755833 | 16 | F | \n",
"| duke | Ann | B | 1.717039 | -0.60571547 | 16 | F | \n",
"| duke | Ann | C | 1.192927 | 2.26166848 | 16 | F | \n",
"| duke | Bob | A | 2.437002 | 2.80037479 | 23 | M | \n",
"| duke | Bob | B | 1.551311 | 0.64111624 | 23 | M | \n",
"| duke | Bob | C | 2.837760 | 0.95898869 | 23 | M | \n",
"\n",
"\n"
],
"text/plain": [
" site patient gene gene.change protein.change age sex\n",
"1 duke Ann A 1.739156 0.07755833 16 F \n",
"2 duke Ann B 1.717039 -0.60571547 16 F \n",
"3 duke Ann C 1.192927 2.26166848 16 F \n",
"4 duke Bob A 2.437002 2.80037479 23 M \n",
"5 duke Bob B 1.551311 0.64111624 23 M \n",
"6 duke Bob C 2.837760 0.95898869 23 M "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"head(df_all)"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [],
"source": [
"options(repr.plot.width=8, repr.plot.height=3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plotting the data suggests that there may be an increase in most genes and proteins from visit 1 to visit 2 (since most of the changes are positive), but there is no obvious correlation between the gene and its protein product."
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {},
"outputs": [
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA8AAAAFoCAIAAAAXZAVmAAAACXBIWXMAABJ0AAASdAHeZh94\nAAAgAElEQVR4nOzdeWAU5f348Wdm9ko2FyEEDKdAwo1IUcFWRQp4IyJoOT3A+6Ri0bYKtIq1\nWopoq4AoRbD0iyJ4IZpakHr8qIpYCwgYkCsSjtzJXrPz+2PqNiZhs5vsPpNs3q+/dp+dneez\n88w8+9lnn5lRDMMQAAAAACKjWh0AAAAA0JKQQAMAAABRIIEGAAAAokACDQAAAESBBBoAAACI\nAgk0AAAAEAUSaAAAACAKJNAAAABAFGxWBxC14uLikpISq6MArHH66aef6qX9+/dzXyS0TmGO\nCyHEvn37pEUCNCvhDw00RctLoHVd9/v9VkcBNDt+v58EGqiLrwwAMccUDgAAACAKJNAAAABA\nFEigAQAAgCiQQAMAAABRIIEGAAAAokACDQAAAESBBBoAAACIAgk0AAAAEIWWdyMVWKWqqmrC\nhAm6rv/f//1fWlqa1eEA1nvmmWdeffVV87HL5TrttNPGjBkzduxYa6MCLOfxeF555ZVNmzYd\nPnzYZrN17Nhx6NCh48ePT0lJsTo0IDZIoBGp/Pz8Hj162O32DRs2XHvttVaHAzQLmZmZf/zj\nH4UQHo9n8+bNTz31VGZm5vnnn291XIBlKioq7rnnnqKiosmTJ/fp08ftdu/fv/+tt95KSkri\nuwMJgwQakVq/fv348ePtdvvy5cuvueYaRVGsjgiwnqqqXbp0MR/n5eW98cYbu3btIoFGa/bc\nc88dPnx42bJlHTt2NEt69uw5cuTIkpISawMDYog50IjIV199deTIkeHDh5933nklJSWfffaZ\n1REBzYuu65s2baqoqOjfv7/VsQCW0XX973//+0UXXRTKnkMyMjIsCQmIB0agEZH169cPHz48\nKSlJCDFixIg33nhjyJAhVgcFWO/48eOjR48WQgQCAVVVZ8yYce6551odFGCZo0ePejye7t27\nWx0IEF8k0GhYaWnp5s2bn3zySfPppZdeeuedd544caJt27bWBgZYLjQH2uv17ty589lnn01J\nSRkzZozVcQEA4ogEGg3bsGGD3+//+c9/HirRdf2tt96aNm2ahVEBzUHNOdC5ubl79+594YUX\nSKDRamVnZ7tcroKCAqsDAeKLBBoNMAzjjTfeGD9+/KWXXhoqfP/99998883JkydrmmZhbEAz\n5PP5DMPgLFu0TjabbcSIEe+8884111xTaxp0SUkJ06CRMEig0YBPP/30yJEjY8aM6dy5c6jw\niiuuWLVq1SeffPLjH//YwtgAywWDwQMHDgghfD7fjh07Nm7cOHz4cLJntGa33nrrzp07b731\n1smTJ/fu3TslJcW8jN3QoUO5jB0SBgk0GrB+/fqePXvWzJ6FENnZ2f369Xv99ddJoNHKnTx5\n8rrrrhNC2O327OzsCRMmTJkyxeqgACulpqb++c9/XrNmzXvvvbd8+XK73d6pU6ef/vSnl112\nmdWhATGjGIZhdQzROX78+MmTJ62OArBGXl7eqV7as2dPizucgZgIc1wIIXbv3i0tEqBZCX9o\noCm4DjQAAAAQBRJoAAAAIAok0AAAAEAUSKABAACAKJBAAwAAAFEggQYAAACiQAINAAAARIEE\nGgAAAIgCCTQAAAAQhZZ3K+/k5GRFUcIs4HA4bDZbVVWVtJBUVc3IyPD5fBUVFdIqFUJkZGSU\nlJTIrLGwsLC4uLhXr16apkmrNDk5ORAI+Hw+aTXa7fbU1NTq6urq6mpplWqalpycXF5e3ug1\ntG3bNvydCNPS0ioqKoLBYKOriFZycrLL5SorKwsEAtIqdTqdqqrKbLtAILB79+62bdu2b99e\nWqXCih4gNTXVbrcXFxfLvOel2+32+Xx+v7/Ra2jbtm2YV202m9PprKysbPT6GyEzMzMQCJSV\nlcmsND09vaysTGbbHTt27NixY7m5uXa7XVqlLpdLCOHxeKTVqGlaenq6x+ORmXgoipKWllZa\nWiqtRtTS8hJoIUQkx7/MPsIwDEVRFEX2fdHl16jrupkJyb9ltPxtK7lScy9qSo2GYYR/u7n+\nhN+SJsltFwgEgsFgwvcAoY6uZTVog++1cEtKrlRy25mHRovbYRqhleQAqIkpHAAAAEAUSKAB\nAACAKJBAAwAAAFEggQYAAACiQAINAAAARIEEGgAAAIgCCTQAAAAQBRJoAAAAIAok0AAAAEAU\nWt6dCFVVdTqdYRaw2+0NLhNb5r3WJFdq1iu/RiGE3W632eTtOTJvG24yP52maTI3r6qqDe5C\n4W865XA4wlehKIrD4ZB55yqz7cxDUlqlNptN8qFhfjpLjkfJNZqftME9LbY0TbPb7Wbn0zjh\nt5KmafJ7b2HdDiOzBzBbzbxZurRKzQ5cZo1mRyf5K8O896H8/RYhLS+BVhQlfPZmJiIyMzyz\n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\nvurfv7/k28vHUERjD927d//666/Nx2ecccbq1asNwwgEAn/72986deoUz/AAALFk373T9eZr\nammJEELoum33zuRXVikBefdaB9DSnTx5subToUOH1i0MMS/NUevVadOm+Xy+WbNm1bqbdWiI\ntvmLaAR69OjRL7zwwlNPPWW322fMmHHTTTf17NkzGAzu37//kUceiXeIAIBYcWx6r1aJeuK4\n/csvfIPPsiIcAC1PTk7O5Zdf/qMf/ahjx45FRUXPP/+8pmlTp06td+EzzjjD5XI9/fTTDocj\nIyMjOzt7xIgRd9xxR35+/uLFi7dt23bllVe2a9fu4MGDH3/88fbt2xNqDvQDDzwwefJk8/LP\nM2bMKC0tfeGFF1RVnTt37gMPPBDnCAEAsaEE/P8de/4h9fhR+cEAaKHuu+++TZs2LViwoLS0\nNDs7+6yzznrxxReHDRtW78Lp6ekvv/zyvHnz7r33Xq/Xe8EFF4wYMcJms61fv37p0qXLly9/\n7LHHAoFAhw4dBg0atGDBAsmfpdEiSqDT09PT0/83Q+6+++6777774hYSACAuDM1maDZFD9Qu\ndyVZEg+AlujRRx8N8+rIkSNrTcy46qqrrrrqqlqLqap6yy233HLLLbGPTwrOvwaAVkNR9N79\n6hYHevWVHwsAtFzR3eslGAyWl5fX+mFh3pURAND8eUZclHS8SDtaaD41NM13wUi9/WnWRgUA\nLUtECXQwGFy8ePGiRYsKCgp8Pl+tV41WeftoAGiJDJerasp0+96v1aOFhtMV6JkXzMyyOigA\naGEiSqAfeeSROXPmZGdnX3HFFVlZdLUA0JKpqj+vj8jrY3UcANBSRZRAL126dPDgwVu2bElO\nTo53QAAAAEBzFtFJhEePHp00aRLZMwAAABDRCHTPnj1LS0vjHQoAAECI4qm2/+dLtfhkMDU1\n0GdAkHvONw/BYDC257+pqlrvHb+bs4gS6HvvvXf+/PmzZs1KS0uLd0AAAADasaNJf3tJqa4y\nnzo++sBz2VUB5u43Ax6PR9f1GK4wOTlZ07QYrlCCUybQ69atCz3Ozs7u3LnzwIEDb7vtth49\nethsP3jX2LFj4xggAABobQzD9ebaUPYshFACAdc7b1R26mIkuy2MCzCdMoGue88YIUS9N+7m\nMnYAACCG1BPH1OPHahUqXo+2/5tA34GWhATUdMoEes2aNTLjAAAA+K86N50wKRVbQZMAACAA\nSURBVKcoByQ7ZQI9fvx4mXEAAACYjMwsoWmizkTbYHYHS+IBaonoMnYAAADSGC6X79wLhBCi\nxixRf6++ek4nq0ICaooogX744Yf79+9fa65zMBjs27fvvHnz4hMYAABovbzn/Ngz8pJgRoYQ\nwkh2+875ifeSK60OCviviC5j99prr1100UW1LtGnquqoUaPWrl07Z86c+MQGAABaK0Xxn3mW\n/8yzFF03Wto1zhBbq1evnjJlSiAQCL/Y+PHjbTbb6tWrJYQU0Qj0vn37cnNz65b37t17//79\nMY4IAADge2TPaIYiGoEOBoNlZWV1y8vKyvx+f6xDAgAAQItlGOo3u5Wi74yk5GD3XJGeYXVA\nsRfRCHTv3r03bNhQq9AwjA0bNuTl5cUhKiCOlIDf/vUOx9aP7F/vUBr6PwgAAERO8Xrsyxfb\nVq/Q3n/X9tY6+7ML1S+3RbsSXddnz57drl27lJSUCRMmHD9+PPTS8OHD77333tDTlStXulyu\numvYt29f7969r776ao/HI4T4y1/+MnDgQJfL1a1bt3vuuae8vLxRH+5/Ikqgp0yZsmnTppkz\nZ1ZUVJglFRUV99xzz+bNm6dOndrECACZtGNH3cv+7Hr9FefmfNfrryQv+5N2rMjqoAAASBDa\nO28qhw+GnioBv23DeuVE7dvihDd//vxnn3120aJFX3755dlnn/3QQw9F9fZPP/102LBhF198\n8Zo1a1wu1zPPPDNr1qzZs2fv2LFj1apVH3300Q033BDVCuuKaArHXXfd9fbbby9cuHDx4sW5\nubmGYezdu7e6unr06NF33313EyMQQnz66acvvfTSoUOH0tPTR44cOXHixFonLAKxoeuu119R\nykpDBWpZqev1Vyqvv0Uwxw4AgCbSdXXHl7UL/X71P1/q5/80wnUEg8Enn3xy9uzZEydOFELc\nf//9//rXv9auXRvh2998881JkybNnTv35z//uRBC1/W5c+c+/vjjkydPFkJ07959yZIlgwcP\nPnr0aPv27SNcZ10RjUDb7fYNGzYsWLCgb9++BQUF+/fv79ev38KFC9966y273d7ouk1ff/31\nI4880rdv3wULFkyZMmXt2rWrVq1q4jqBemlHDqknT9QqVE8e1woPWxIPAACJRPH56t7+Rggh\nqqsiX8mhQ4fKysrOO++8UMkFF1wQ4Xu3bNkyduzYZ555xsyehRD79u07ceLEjBkzlO8NHjxY\n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",
"text/plain": [
"plot without title"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ggplot(df_all, aes(x=gene.change, y=protein.change, color=site)) + \n",
"geom_point() + \n",
"geom_hline(yintercept = 0, color='grey') + \n",
"geom_vline(xintercept = 0, color='grey') +\n",
"xlim(c(-3, 3)) +\n",
"ylim(c(-3, 3)) +\n",
"facet_grid(~ gene)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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": "3.4.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}