{
"cells": [
{
"cell_type": "markdown",
"id": "6aac19d1",
"metadata": {},
"source": [
"# Beta Diversity\n",
"\n",
"## What is beta diversity?\n",
"\n",
"- Beta diversity is a distance or dissimilarity between two samples. Just like we can calculate the (Euclidean) distance between two cities based on their latitude and longitude, we can calculate the distance between two microbial communities based on the composition. However, when investigating microbial communities, there are more dimensions than just latitude and longitude, so the math becomes a little more difficult, and having code to help us calculate the distances is helpful! This chapter will walk you through these steps."
]
},
{
"cell_type": "markdown",
"id": "766797a5",
"metadata": {},
"source": [
"## Why do we care about beta diversity?\n",
"\n",
"Beta diversity gives us ways to quantify how similar or dissimilar two samples are. We can then extrapolate this to comparing microbial communities across metadata variables. For example, are gut microbiome samples generally more similar to other gut microbiome samples or to oral microbiome samples?"
]
},
{
"cell_type": "markdown",
"id": "8a1104eb",
"metadata": {},
"source": [
"## Quantifying beta diversity"
]
},
{
"cell_type": "markdown",
"id": "f38c78a6",
"metadata": {},
"source": [
"### Beta diversity as a pairwise metric\n",
"\n",
"Beta diversity is a **pairwise** metric, meaning each value exists for comparing a pair of samples. Each value is the distance (or dissimilarity) between the two samples.\n",
"\n",
"For example, we can consider the pairwise distances between cities in the Colorado Front Range:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "3f2fa8e5",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "700acfc5",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Boulder \n",
" Denver \n",
" Golden \n",
" Fort Collins \n",
" Colorado Springs \n",
" \n",
" \n",
" \n",
" \n",
" Boulder \n",
" 0 \n",
" 24 \n",
" 18 \n",
" 39 \n",
" 85 \n",
" \n",
" \n",
" Denver \n",
" 24 \n",
" 0 \n",
" 13 \n",
" 56 \n",
" 63 \n",
" \n",
" \n",
" Golden \n",
" 18 \n",
" 13 \n",
" 0 \n",
" 56 \n",
" 67 \n",
" \n",
" \n",
" Fort Collins \n",
" 39 \n",
" 56 \n",
" 56 \n",
" 0 \n",
" 119 \n",
" \n",
" \n",
" Colorado Springs \n",
" 85 \n",
" 63 \n",
" 67 \n",
" 119 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Boulder Denver Golden Fort Collins Colorado Springs\n",
"Boulder 0 24 18 39 85\n",
"Denver 24 0 13 56 63\n",
"Golden 18 13 0 56 67\n",
"Fort Collins 39 56 56 0 119\n",
"Colorado Springs 85 63 67 119 0"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cities = [\"Boulder\", \"Denver\", \"Golden\", \"Fort Collins\", \"Colorado Springs\"]\n",
"\n",
"# distances are given in miles\n",
"distances = np.array([[0, 24, 18, 39, 85],\n",
" [24, 0, 13, 56, 63],\n",
" [18, 13, 0, 56, 67],\n",
" [39, 56, 56, 0, 119],\n",
" [85, 63, 67, 119, 0]])\n",
"\n",
"distances_df = pd.DataFrame(distances,\n",
" columns=cities,\n",
" index=cities)\n",
"\n",
"distances_df"
]
},
{
"cell_type": "markdown",
"id": "67046fc6",
"metadata": {},
"source": [
"In this case, because we have pairwise distances, we can't ask \"What's the distance of Boulder?\" Likewise, in a microbiome setting, we can't ask \"What's the beta diversity of sample A?\" Instead, we have to ask the question relative to another city/sample. For example, we can ask \"What's the distance from Boulder to Fort Collins?\" or \"What's the the beta diversity between samples A and B?\""
]
},
{
"cell_type": "markdown",
"id": "fa9a7769",
"metadata": {},
"source": [
"We can view distance matrices as heatmaps for a nice visual. You can see below that the color of each square represents the distance between the two corresponding cities. "
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "d75c571b",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.heatmap(distances_df, annot=True)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "5b958c19",
"metadata": {},
"source": [
"### Quantitative vs qualitative beta diversity metrics"
]
},
{
"cell_type": "markdown",
"id": "818f7431",
"metadata": {},
"source": [
"Some beta diversity metrics look at what taxa are present, but others look at how much of each taxon is there. These are referred to as qualitative and quantitative metrics, respectively. Two common examples are Jaccard distance and Bray-Curtis distance.\n",
"\n",
"**Jaccard distance** is typically used on presence-absence data, and it is the portion of detected taxa that are shared between samples. The equation to calculate Jaccard distance can be seen below, where $J(A,B)$ is the number of taxa shared between the two samples divided by the total number of unique taxa in the two samples.\n",
"$$J(A,B) = 1 - \\frac{A \\cap B}{A \\cup B}$$\n",
"\n",
"- Note: if all taxa are shared between the two samples, Jaccard distance will be 0, regardless of the number of taxa. This is why Jaccard is considered a qualitative metric.\n",
"\n",
"**Bray-Curtis distance**, however takes taxa abundances into account. The equation to calculate Bray-Curtis distance can be seen below, where the Bray-Curtis distance between samples A and B is the sum of difference between taxon $i$ in samples A and B divided by the total abundance of taxon $i$ across both samples for all taxa present in the two samples.\n",
"\n",
"$$BC(A,B) = \\sum_{i=1}^n \\frac{|x_{A,i}-x_{B,i}|}{|x_{A,i}|+|x_{B,i}|}$$\n",
"\n",
"- Q: What happens when there is no difference between the abundances of any taxa in samples A and B?\n",
" - A: The numerator of all terms is 0, meaning that the Bray-Curtis distance is 0!\n",
"- Note: Even if all taxa are shared, if they have different abundances, Bray-Curtis distance will not be zero! This is why it can be considered a quantitative metric."
]
},
{
"cell_type": "markdown",
"id": "4e6e0739",
"metadata": {},
"source": [
"### A simple example"
]
},
{
"cell_type": "markdown",
"id": "e9fce973",
"metadata": {},
"source": [
"Let's consider an example where we've collected data on how many cats, fish, and bird that Will, Micaela, and Quinn have as pets."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "a6fdac24",
"metadata": {},
"outputs": [],
"source": [
"from scipy import sparse\n",
"from scipy.spatial.distance import pdist, squareform"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "10717eba",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" cats \n",
" fish \n",
" birds \n",
" \n",
" \n",
" \n",
" \n",
" Will \n",
" 1 \n",
" 0 \n",
" 3 \n",
" \n",
" \n",
" Micaela \n",
" 9 \n",
" 0 \n",
" 3 \n",
" \n",
" \n",
" Quinn \n",
" 0 \n",
" 2 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" cats fish birds\n",
"Will 1 0 3\n",
"Micaela 9 0 3\n",
"Quinn 0 2 0"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = [1, 0, 3]\n",
"b = [9, 0, 3]\n",
"c = [0, 2, 0]\n",
"\n",
"pet_types = [\"cats\", \"fish\", \"birds\"]\n",
"names = [\"Will\", \"Micaela\", \"Quinn\"]\n",
"\n",
"pets = pd.DataFrame([a,b,c],\n",
" columns=pet_types,\n",
" index=names)\n",
"pets"
]
},
{
"cell_type": "markdown",
"id": "cb75df2e",
"metadata": {},
"source": [
"**Stop here to answer these questions!**\n",
"- Q: From looking at the data, what would you expect the Jaccard distance between Will and Micaela to be? \n",
"- What about the Jaccard distance from Will to Quinn? \n",
"- Will Jaccard(Will, Micaela) = BC(Will, Micaela) ?\n",
"\n",
"Let's investigate:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "6be04936",
"metadata": {},
"outputs": [],
"source": [
"def create_and_show_dist_mat(data, ids, metric, annot=False):\n",
" \"\"\"\n",
" This function makes a distance matrix and shows a heatmap of it.\n",
" \n",
"Parameters\n",
" ----------\n",
" data : pd.DataFrame or NumPy array/matrix\n",
" The data to calculate the distance matrix from.\n",
" ids : list\n",
" The list of sample IDs\n",
" metric: str\n",
" The distance metric to be used when creating the distance matrix.\n",
" See https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.pdist.html\n",
" for list of compatible metrics\n",
" annot: Bool\n",
" Provide True if the distances should be written in the heatmap.\n",
" \n",
" Returns\n",
" -------\n",
" dist: pd.DataFrame\n",
" The generated distance matrix\n",
" \"\"\"\n",
" dist = squareform(pdist(data, metric))\n",
" dist = pd.DataFrame(dist,\n",
" columns=ids,\n",
" index=ids)\n",
" \n",
" ax = sns.heatmap(dist, linewidths=1, annot=annot)\n",
" ax.set_title(f\"{metric} distance\")\n",
" plt.show()\n",
" return dist"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "aaecd693",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"presence_absence_pets = pets.apply(lambda x: x > 0)\n",
"jaccard = create_and_show_dist_mat(presence_absence_pets, names, \n",
" metric=\"jaccard\", annot=True)\n",
"\n",
"bray_curt = create_and_show_dist_mat(pets, names, \n",
" metric=\"braycurtis\", annot=True)"
]
},
{
"cell_type": "markdown",
"id": "16d9c991",
"metadata": {},
"source": [
"**Answers:**\n",
"\n",
"- Jaccard distance from Will to Micaela is 0, since they share the same types of pets\n",
"- Jaccard distance from Will to Quinn is 1, since they share none of the same types of pets\n",
"- Jaccard(Will,Micaela) is not equal to BC(Will,Micaela)! This is because Jaccard only cares that they both have cats and birds, but Bray-Curtis is taking into account the fact that Micaela has 9 cats while Will only has 1."
]
},
{
"cell_type": "markdown",
"id": "1e1be3bd",
"metadata": {},
"source": [
"### A more complex example"
]
},
{
"cell_type": "markdown",
"id": "5a3b1704",
"metadata": {},
"source": [
"For a more complex example, let's imagine we look for common ingredients in 10 people's shopping carts at the grocery store..."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "0927c12f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" apples \n",
" bananas \n",
" broccoli \n",
" spinach \n",
" chicken \n",
" beef \n",
" milk \n",
" orange juice \n",
" apple juice \n",
" cookies \n",
" \n",
" \n",
" \n",
" \n",
" Person 1 \n",
" 1 \n",
" 4 \n",
" 0 \n",
" 7 \n",
" 2 \n",
" 0 \n",
" 0 \n",
" 8 \n",
" 9 \n",
" 3 \n",
" \n",
" \n",
" Person 2 \n",
" 0 \n",
" 7 \n",
" 0 \n",
" 7 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 3 \n",
" 0 \n",
" \n",
" \n",
" Person 3 \n",
" 0 \n",
" 8 \n",
" 9 \n",
" 0 \n",
" 7 \n",
" 0 \n",
" 4 \n",
" 6 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" Person 4 \n",
" 0 \n",
" 9 \n",
" 0 \n",
" 6 \n",
" 0 \n",
" 7 \n",
" 0 \n",
" 7 \n",
" 2 \n",
" 2 \n",
" \n",
" \n",
" Person 5 \n",
" 6 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 9 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" Person 6 \n",
" 9 \n",
" 4 \n",
" 1 \n",
" 9 \n",
" 6 \n",
" 2 \n",
" 7 \n",
" 0 \n",
" 6 \n",
" 2 \n",
" \n",
" \n",
" Person 7 \n",
" 0 \n",
" 6 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 6 \n",
" 4 \n",
" 0 \n",
" 9 \n",
" \n",
" \n",
" Person 8 \n",
" 5 \n",
" 0 \n",
" 4 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 10 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" Person 9 \n",
" 0 \n",
" 4 \n",
" 5 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 3 \n",
" 0 \n",
" \n",
" \n",
" Person 10 \n",
" 5 \n",
" 9 \n",
" 0 \n",
" 7 \n",
" 3 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" apples bananas broccoli spinach chicken beef milk \\\n",
"Person 1 1 4 0 7 2 0 0 \n",
"Person 2 0 7 0 7 0 0 0 \n",
"Person 3 0 8 9 0 7 0 4 \n",
"Person 4 0 9 0 6 0 7 0 \n",
"Person 5 6 0 0 1 9 0 0 \n",
"Person 6 9 4 1 9 6 2 7 \n",
"Person 7 0 6 0 0 0 0 6 \n",
"Person 8 5 0 4 0 1 0 0 \n",
"Person 9 0 4 5 0 0 0 0 \n",
"Person 10 5 9 0 7 3 0 1 \n",
"\n",
" orange juice apple juice cookies \n",
"Person 1 8 9 3 \n",
"Person 2 0 3 0 \n",
"Person 3 6 0 0 \n",
"Person 4 7 2 2 \n",
"Person 5 0 0 0 \n",
"Person 6 0 6 2 \n",
"Person 7 4 0 9 \n",
"Person 8 10 0 0 \n",
"Person 9 0 3 0 \n",
"Person 10 0 0 0 "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"foods = [\"apples\", \"bananas\",\n",
" \"broccoli\",\"spinach\",\n",
" \"chicken\", \"beef\",\n",
" \"milk\", \"orange juice\",\"apple juice\",\n",
" \"cookies\"\n",
"]\n",
"\n",
"people = [f\"Person {x}\" for x in np.arange(1,11)]\n",
"\n",
"# make some sparse data\n",
"data = sparse.random(10,10, density=0.5, random_state=42)\n",
"# turn that data to integers from 1 to 10\n",
"data = round((data*10))\n",
"\n",
"# make a dataframe where rows are people\n",
"# and columns are foods\n",
"data = pd.DataFrame(data.A,\n",
" columns=foods,\n",
" index=people)\n",
"\n",
"#convert to integers\n",
"data = data.astype(int)\n",
"\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "c97b9377",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"presence_absence_data = data.apply(lambda x: x > 0)\n",
"jaccard = create_and_show_dist_mat(presence_absence_data, people, metric=\"jaccard\")\n",
"\n",
"bray_curt = create_and_show_dist_mat(data, people, metric=\"braycurtis\")"
]
},
{
"cell_type": "markdown",
"id": "b7256289",
"metadata": {},
"source": [
"These look pretty similar, but they aren't exactly the same. \n",
"\n",
"For example, look at the color for the distance between individuals 1 and 5. Jaccard gives them a moderate distance (\\~0.5) because they share roughly half of the same items in their carts, but Bray-Curtis gives them a high distance (\\~0.9) because they have very different quantities of each item in their carts. Specifically, both have apples, but Person 1 has 1 whereas Person 5 has 6. "
]
},
{
"cell_type": "markdown",
"id": "e903aa68",
"metadata": {},
"source": [
"### UniFrac"
]
},
{
"cell_type": "markdown",
"id": "4c33f9f7",
"metadata": {},
"source": [
"One issue with Bray-Curtis and Jaccard distances is that they don't take phylogeny into account. For example, in our grocery cart study, if someone traded out a gala apple for a granny smith apple, Jaccard and Bray-Curtis would pick that up as the same difference as switching the gala apple for a spatula. There's no context of how related two taxa are. \n",
"\n",
"Thinking about this in terms of bacteria, we know that *Bifidobacterium longum* is more similar to *Bifidobacterium brevis* than it is to *Escherichia coli*. Shouldn't our distance metrics reflect this knowledge?\n",
"\n",
"This is why microbiome studies will often use UniFrac distances! UniFrac distances (including weighted and unweighted UniFrac) incorporate phylogeny by quantifying the length of shared branches in the phylogenetic tree between samples. \n",
"\n",
"Unweighted UniFrac, a qualitative metric (similar to Jacccard distance), is the sum of the shared branch length between two samples divided by the total branch length between the two samples. An equation for unweighted UniFrac can be seen below.\n",
"\n",
"$$Unweighted\\ UniFrac = 1 - \\frac{\\sum shared\\ branch\\ lengths}{\\sum total\\ branch\\ lengths}$$\n",
"\n",
"- **Q:** What happens as the shared branch lengths between two samples approaches the total branch lengths? \n",
"- **A:** The second term approaches 1, and the distance approaches 0. With two identical samples, the value would be zero.\n",
"\n",
"On the other hand, weighted UniFrac is a quantative metric (similar to Bray-Curtis). Weighted UniFrac is similar to its unweighted counterpart, but it weights each shared branch according to the relative abundance of each taxon.\n",
"\n",
"\n",
"\n",
"#### An example\n",
"\n",
"Let's investigate! First, we have to create a phylogenetic tree. Often you will use another program, such as FastTree or SATé-Enabled Phylogenetic Placement (SEPP) to do so, but we've created one for the food example by hand.\n",
"\n",
"The string seen in the code block below is a Newick formatted phylogenetic tree. You can see that around all branches at the same level, there are parentheses to group those branches. We can read this into a `skbio.TreeNode` object using `TreeNode.read()`. Typically, you will be reading a Newick formatted file, and you can just provide the filepath, but we have specified the string here, so it's read using StringIO. We can view this `TreeNode` object in our notebook using `.ascii_art()`, but this might be unmanageable for larger trees, so we recommend using another program, such as [Interactive Tree of Life](https://itol.embl.de/)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "0ce11526",
"metadata": {},
"outputs": [],
"source": [
"from skbio import TreeNode\n",
"from skbio.diversity import beta_diversity\n",
"from io import StringIO"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "1c76c179",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" /-apples\n",
" /fruit---|\n",
" | \\-bananas\n",
" /produce-|\n",
" | | /-broccoli\n",
" | \\vegetables\n",
" | \\-spinach\n",
" |\n",
" | /-chicken\n",
" |-meat----|\n",
"-items---| \\-beef\n",
" |\n",
" | /-milk\n",
" |-beverages\n",
" | | /-orange juice\n",
" | \\juice---|\n",
" | \\-apple juice\n",
" |\n",
" \\sweets-- /-cookies\n"
]
}
],
"source": [
"food_tree_str = \"\"\"(((apples,bananas)fruit,(broccoli,spinach)vegetables)produce,\n",
" (chicken,beef)meat,(milk,(orange_juice,apple_juice)juice)beverages,\n",
" (cookies)sweets)items;\"\"\"\n",
"\n",
"food_tree = TreeNode.read(StringIO(food_tree_str))\n",
"\n",
"print(food_tree.ascii_art())"
]
},
{
"cell_type": "markdown",
"id": "fe4c60d4",
"metadata": {},
"source": [
"In the code block below, we set each branch length equal to 1. In reality, each branch can be a different distance, but this keeps our example simple."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "14c98463",
"metadata": {},
"outputs": [],
"source": [
"for node in food_tree.postorder():\n",
" node.length = 1"
]
},
{
"cell_type": "markdown",
"id": "aaa12f97",
"metadata": {},
"source": [
"Below, we use scikit-bio to calculate the UniFrac distance matrices for our data. Note that unlike with Jaccard and Bray-Curtis, we now need to provide the phylogenetic tree. \n",
"\n",
"This returns objects of the scikit-bio's `DistanceMatrix` class. This is different from when we calculated Jaccard and Bray-Curtis distance using SciPy's `pdist` function, which returns an array that we turned into a square numpy array using the `squareform` function. If we just call the `DistanceMatrix` object by typing u_uni (such as in line 17 of the code below), it prints a heatmap of the distance matrix. However, if we want the data, we can call `DistanceMatrix.data` such as in line 16, which returns an array. "
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "28a2d7db",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEkCAYAAADAYy0DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAuyElEQVR4nO3df5hV1X3v8fenCAEHf4bUqIAxQpoaI0hFa1tRSU0lWjGlP8S0qE1EeitNbq9eNbZ58lybNlzSp6aNqQ+mXKiV2ogp/qJBE0VoFR2JI2gMBn8kEkkVaVUMUWb43j/2mvF4cmZmz8w++5w5fF7Psx/P3med/V0b8Kyz9lp7fRURmJmZAfxcoytgZmbNw42CmZn1cKNgZmY93CiYmVkPNwpmZtbDjYKZmfVwo2BmNkxJOkvSFklbJV1V4/2DJN0p6XFJT0q6uN9z+jkFM7PhR9II4GngTGAb0A7MjYjvVpT5LHBQRFwp6T3AFuC9EfFWb+d1T8HMbHg6CdgaEc+mL/lbgNlVZQI4QJKAscBOoLOvk7pRMDMbno4EXqjY35aOVfoK8IvAi8Bm4NMRsbevk+5XZA2Ho1F6V4ymre5x3pxQ/xiNMOq18m4/vnVoOXFGvqpyAgF7Dijvz0+d5V2XRneVFit+OqKUOG/+aNuOiHjPUM7xG2e0xSs78/3ZbNz05pPATysOLYmIJRX7tf5Cq/9B/QbQAcwEjgHulbQ+Il7rLe4+3yiMpo2T9ZG6x3nm8l+ue4xuUWL/b8K9ff7oKNQLv9tnr7cwh60eVUocgO0zy/vyHPnKyPJiTe71O6dwe75/YClxnrnyT38w1HPs2NnFw2vG5yo78vBnfhoRJ/ZRZBswoWJ/PFmPoNLFwBcjGzzeKuk54IPAI72d1LePzMxKE3TF3lxbDu3AZElHSxoFnA/cUVXmh8BHACQdBvwC8GxfJ93newpmZmUJoJNieocR0SnpMmANMAJYGhFPSlqQ3r8BuBZYJmkz2e2mKyNiR1/ndaNgZlaSIOgq8DGAiFgNrK46dkPF6xeBjw7knG4UzMxKtPdnxoKbixsFM7OSBNDV5I3CkAaaJXVJ6pD0hKRbJe1fVMUGWZ8PSnpI0puSLm9kXczMatlL5NoaZaizj3ZHxNSIOA54C1iQ50OS6tVD2Qn8CfClOp3fzGzQAtgTkWtrlCKnpK4HJklqk7RUUrukxyTNBpB0UepN3AncI+lwSesqehqnpnJzJW1OxxZ1n1zSLklfSAs7bUjTq94hIl6KiHZgT4HXZWZWiCDoyrk1SiGNQvrlP4vsMeprgPsiYjpwBrBYUvfjvKcAF0bETOACYE1ETAWmAB2SjgAWkT19NxWYLum89Nk2YENETAHWAZcUUXczs9IEdOXcGmWot3HGSOpIr9cD/wA8CJxbcU9/NDAxvb43Inam1+3AUkkjgVUR0SFpJrA2Il4GkHQzMANYRXZ76q702Y1kKwMOiqT5wPyscg0dBjGzfUgA5a0BMDhDbRR2p1/6PdJqfHMiYkvV8ZOBN7r3I2KdpBnA2cBNkhYDfT0bvyfeXue7ayh1T+uHLAE4UIc291QAM2shoqvmkkXNox7LXKwBFqbGAUkn1Cok6SjgpYi4kayHMQ14GDhN0ri0Vvhc4IE61NHMrHQB7I18W6PUYxbQtcB1wKbUMDwPnFOj3OnAFZL2ALuAeRGxXdLVwP1kj2Svjojb8waW9F7gUeBAYK+kzwDH9rUioJlZWQJ4q8mXnBtSoxARY2sc2w1cWuP4MmBZxf5yYHmNciuAFX3FioiVwMoaZX5MtlKgmVlT2hvNffvITzSbmZUke6LZjYKZmQGB6Grl20dmZjYwvn1kZmaAbx+ZmVmFQOyJ5v7abe7amZm1GPcUmtybE9p45vJfrnucYz6zoe4xum277bjSYv14ejlJ0wGmHf1cKXEeO7u8Wc1HjCvvEZpDJ/+ktFivfnli/4UKsu28N0uLNVQRoiuae6C5uWtnZtZi9qJcWx6SzpK0RdJWSVfVeP+KtBJ192rUXZIO7eucbhTMzEqSDTT/XK6tP2kpoOvJVqg+Fpgr6dh3xItYnHLeTAWuBh6oWJS0pn3+9pGZWVkKHmg+CdgaEc8CSLoFmA18t5fyc4F/7u+k7imYmZWoK5Rry+FI4IWK/W3p2M9IqZLPAm7r76TuKZiZlWSATzSPk/Roxf6StOx/t1otR2/rq/4m8B/93ToCNwpmZqXam3/20Y6IOLGP97cBEyr2xwMv9lL2fHLcOoIh3j5KI9ndo9q3pi5Kw0j6hKRNaXtQ0pRG1sfMrFKRA81k2SsnSzpa0iiyL/47qgtJOgg4DciVhmCoYwq708j2cWTpMhfk+VDK6VwPzwGnRcTxZHkdlvRT3sysNEG+8YQ8YwoR0QlcRpbY7Cng6xHxpKQFkiq/iz8O3BMRb9Q6T7Uiv5zXA8dLagP+DvhwOv/nI+J2SReRpd4cDbRJ+gTwL2QJcfYD/igi1kuaC3yW7H7Z3RFxJYCkXcCXyRL27AZmR8R/VlYgIh6s2N2AcyuYWROJoNBlLiJiNbC66tgNVfvLqMhl059CZh+lX/6zgM3ANcB9ETEdOANYnBoKgFOACyNiJnABsCbNn50CdEg6AlgEzASmAtMlnZc+2wZsiIgpwDrgkn6q9Ung34q4PjOzYuR7cC3vw2v1MNQma4ykjvR6PVmu5QeBcyVdno6PBrqfeb+3YvS7HVgqaSSwKiI6JM0E1kbEywCSbgZmAKvIbk/dlT67ETizt0pJOoOsUfi1Xt6fD8wHGHHIIQO5XjOzQQto+mUuhtoo7E6/9HukvMxzImJL1fGTgZ57WhGxTtIMsltKN0laDPS1EMyeiOiebtXVW90lHQ98DZgVEa/UKpOmdS0BeNfECQ1MkW1m+5pmT7JTj9qtARamxgFJJ9QqJOko4KWIuJGshzENeBg4TdK49Aj3XOCBvIElTQS+AfxBRDw9tMswMytWIPZGvq1R6jEL6FrgOmBTahieJxscrnY6cIWkPcAuYF5EbJd0NXA/2UDz6ojINY0q+RzwbuCrqU3q7Geer5lZqZq9pzCkRiEixtY4thu4tMbxZVSMgEfEcmB5jXIrgBV9xYqIlcDKGmU+BXwqb/3NzMqUrX00otHV6JOfaDYzK0kwoCeaG8KNgplZiZx5zczMgCzzmnsKZmbWo9WfUzAzs5w80DxMlNFwb7vtuPoHScbPeaK0WM/8U83HUOrip53l/HPVj0eXEgdg+66RpcXau/7nS4u141dKC8WoH7yrvGBDlA00e0zBzMySln5OwczM8ut+ormZuVEwMyvRXvcUzMwMsnwKeRLoNJIbBTOzkgSic69nH5mZWeInms3MDBgeU1KHNOIhqUtSh6QnJN0qaf+iKjbI+syWtCnV6VFJNTOvmZk1RrbMRZ4t19mksyRtkbRV0lW9lDk9fSc+Kanf/DRDHQbfHRFTI+I4snSZC/J8KOV0rodvA1NSNrg/JMvAZmbWNIrK0ZwSkV0PzAKOBeZKOraqzMHAV4FzI+JDwO/0d94i50atByZJapO0VFK7pMckzU6Vuyj1Ju4E7pF0uKR1FT2NU1O5uZI2p2OLKi5ul6QvSHpc0gZJh1VXICJ2VaTsbCPrrZmZNYUI2LN3RK4th5OArRHxbES8BdwCzK4qcwHwjYj4YRY/XurvpIU0CumX/yxgM3ANcF9ETAfOABZLaktFTwEujIiZqbJr0q/6KUCHpCOARcBMYCowXdJ56bNtwIaImAKsAy7ppS4fl/Q94G6y3kKtMvPT7aVHu3a9UauImVnhBpiOc1z391Ta5led7kjghYr9belYpQ8Ah0haK2mjpHn91XGot3HGSOpIr9eT5Vp+EDhX0uXp+GhgYnp9b0TsTK/bgaWSRgKrIqJD0kxgbUS8DCDpZmAGsIrs9tRd6bMbgTNrVSgi/hX4V0kzyFKD/nqNMkuAJQDvmjjBvQkzK02eW0PJjn7SCdc6UfX32X7ALwEfAcYAD0na0FcO+6E2CrvTL/23a5klR54TEVuqjp8M9Pwsj4h16Yv7bOAmSYuB1/qItafi1lBXf3VP5z9G0riI2JH7iszM6qTg2UfbgAkV++OBF2uU2RERbwBvSFpHdmem10ahHs9brwEWpsYBSTWX0ZR0FPBSRNxI1sOYBjwMnCZpXBpEmQv0O1pecc5JFXGnAaOAV4ZyMWZmRSpw9lE7MFnS0ZJGAecDd1SVuR04VdJ+aXboycBTfZ20HrOArgWuAzalL+jngXNqlDsduELSHmAXMC8itku6GrifrGu0OiJuH0DsOcC8dM7dwO9V9C7MzBorilsQLyI6JV1G9kN8BLA0Ip6UtCC9f0NEPCXpm8AmYC/wtYjoc239ITUKETG2xrHdwKU1ji8DllXsLweW1yi3AljRV6yIWAmsrFFmEdlAtZlZ0wmgs8AELhGxGlhddeyGqv3FwOK85/QTzWZmJRkOTzS7UTAzK5EbBTMzA5xkx8zMqgzgOYWGcKNgZlaW8O2jpjfqtWDCvXvrHufH0w+se4xuz/xTzUdD6uKY33+stFgf+E45yUl+9OzRpcQBeO0D5aVm3HtBec9w7t15QGmxDj309dJiDVUAnXudjtPMzPCYgpmZVQk3CmZm1s0DzWZmBmT5FHz7yMzMEtHlgWYzM+vW7GMKQ2qyJHVVpNO8NS3N2nCSpqe6/Xaj62Jm1q177aOcmdcaYqj9mN0RMTUijiPLjLYgz4dS+s66SHkYFpEtJ2tm1jwiG1fIszVKkTe31gOTJLVJWiqpXdJjkmYDSLoo9SbuBO6RdLikdRU9jVNTubmSNqdjPctgS9ol6QuSHpe0QdJhvdRjIXAb0G+CajOzsu1FubZGKaRRSL/8ZwGbgWuA+yJiOnAGsFhSWyp6CnBhRMwELgDWpHSeU4AOSUeQ/cqfCUwFpks6L322DdgQEVOAdcAlNepxJPBx4Ibq98zMGi3IxhTybI0y1Ns4YyR1pNfrydJqPgicK+nydHw0MDG9vjcidqbX7cBSSSOBVRHRIWkmsDYiXgaQdDMwA1hFdnvqrvTZjcCZNepzHXBlRHSlrJw1SZoPzAd415iDB3C5ZmZDIbr2NvdA81Abhd3pl36PlIJzTkRsqTp+MvBG935ErJM0AzgbuEnSYuC1PmLtqUit2dVL3U8EbkkNwjjgY5I6I2JVZaGIWAIsATjg4PFO12lmpWnp2Ue9WAMsTI0DkmquzibpKOCliLiRrIcxDXgYOE3SuDRgPBd4IG/giDg6It4XEe8jS9f5P6obBDOzRskGkYu7fSTpLElbJG2VdFWN90+X9Goau+2Q9Ln+zlmPWUDXkt3G2ZQahueBc2qUOx24QtIeYBcwLyK2S7oauB8QsDoibq9DHc3MGqKo6abph/P1ZLfStwHtku6IiO9WFV0fEbW+g2saUqMQEWNrHNsNXFrj+DJgWcX+cmB5jXIrgBV9xYqIlWQ9gb7qdlFf75uZNUKB001PArZGxLMAkm4BZgPVjcKANPfz1mZmLabA20dHAi9U7G9Lx6qdkqby/5ukD/V3Ui9zYWZWkgHmUxgn6dGK/SVpkky3Wieq7od8BzgqInZJ+hjZTM7JfQV1o2BmVpYY0OyjHRFxYh/vbwMmVOyPB158R7iI1yper5b0VUnjIqLXNHy+fWRmVqbIufWvHZgs6WhJo4DzgTsqC0h6b8VM0JPIvvNf6euk7imYmZWoqOcUIqJT0mVkjwGMAJZGxJOSFqT3bwB+G/gjSZ3AbuD8iue9anKjYGZWoiIXu4uI1cDqqmM3VLz+CvCVgZxzn28U3joUXvjdzrrHmXb0c3WP0e2nneX9tX7gOyNKi/XEtK5S4oy8++VS4gBsPaHPmdWFev835pcW6y8/emtpsRb/zfmlxRqqCAgn2TEzs26NXBY7DzcKZmZlcqNgZmaZxi6LnYcbBTOzMrmnYGZmwEAfXmsINwpmZmVq8kZhSHOjJHVV5Fi+VdL+RVVskPUZ8NrhZmalKu6J5roY6oTZ3RExNSKOI0uXuSDPh1JO53pZn+o0NSL+Tx3jmJkNXIs3CpXWA5MktUlaKqld0mOSZgNIuij1Ju4E7pF0uKR1FT2NU1O5uZI2p2OLuk8uaZekL6QlYDdIOqzAupuZ1V+Q3T7KszVIIY1C+uU/C9gMXAPcFxHTgTOAxZLaUtFTgAsjYiZwAbAm5XieAnRIOgJYBMwEpgLTJZ2XPtsGbIiIKcA64JJeqjOgtcPNzMqUpeTsf2uUod7GGSOpI71eT5Zr+UHgXEmXp+OjgYnp9b0RsTO9bgeWShoJrIqIDkkzgbUR8TKApJuBGWRrgL8F3JU+u5EsBV21XGuHS5oPzAcY8e6DB37VZmaD1eJTUnenX/o90jKtcyJiS9Xxk4E3uvcjYp2kGcDZwE2SFgOv0bs9Fav7ddWqe961w1OiiiUA73r/+Cb/KzKzVqK9LTz7qBdrgIUVa3ifUKuQpKOAlyLiRrIexjTgYeA0SeNSUuq5wAN5Aw9m7XAzs9LkHWQexreParkWuA7YlL6gnwfOqVHudOAKSXuAXcC8iNgu6WrgfrJUc6sj4vYBxB7w2uFmZuVp7CByHkNqFCJibI1ju4FLaxxfBiyr2F8OLK9RbgWwoq9YEbES+Jk1hwezdriZWama/Geqn2g2MyuTGwUzMwOyBmEfHGg2M7NeKPJtuc4lnSVpi6Stkq7qo9z0tCzRb/d3TjcKZmZlKmj2UZqheT3Zg8PHAnMlHdtLuUVkM0P75UbBzGx4OgnYGhHPRsRbwC3A7BrlFgK3AS/lOakbBTOzEhV4++hI4IWK/W3p2NuxpCOBjwM35K3fPj/QPPJVcdjqUXWP89jZ4+seo5t+PLq0WD969ujSYo28++VS4hx89vdLiQPwods+UVosxuwtLdSfPVLrB2t9jHxvaaGKkf85hXGSHq3YX5JWY+hW60TVzcl1wJUR0ZWe6+3XPt8omJmVJoD8bfOOiDixj/e3ARMq9scDL1aVORG4JTUI44CPSeqMiFW9ndSNgplZifLOLMqhHZgs6WjgR8D5ZKtP94iInq68pGXAXX01COBGwcysXAU1ChHRKekysllFI4ClEfGkpAXp/dzjCJXcKJiZlanAJ5ojYjWwuupYzcYgIi7Kc043CmZmJRnIg2mN4kbBzKxMrbzMRXpsujvH8q2S9i+qYkOo0+mpTk9Kyp2LwcysDEUuc1EPQ314bXdETI2I48jSZS7I86GU07lwkg4GvgqcGxEfAn6nHnHMzAatyZPsFPlE83pgkqQ2SUsltUt6TNJsAEkXpd7EncA9kg6XtK6ip3FqKjdX0uZ0bFH3ySXtkvQFSY9L2iDpsBp1uAD4RkT8ECAicj3WbWZWipy9hOHcUwB6fvnPAjYD1wD3RcR04AxgsaS2VPQU4MKImEn2Bb4m5XieAnRIOoJs4aaZwFRguqTz0mfbgA0RMQVYB1xSoyofAA6RtFbSRknzirg+M7PCNHlPYai3ccZI6kiv15PlWn4QOFfS5en4aGBien1vROxMr9uBpZJGAqsiokPSTGBtRLwMIOlmYAawiuz21F3psxuBM3u5nl8CPgKMAR6StCEinq4sJGk+MB9g1P6HDPLSzcwGocVnH+1Ov/R7pLzMcyJiS9Xxk4E3uvcjYp2kGcDZwE2SFgOv9RFrT0W+5a5e6r6N7NHwN4A3JK0j64W8o1FI64csARj77glN/ldkZq2k2aek1mOV1DXAwtQ4IOmEWoUkHQW8FBE3kvUwpgEPA6dJGpfWAJ8LDGQG0e3AqZL2SzOhTgaeGvylmJkVrMVvH9VyLdnKfJtSw/A8cE6NcqcDV0jaA+wC5kXEdklXA/eTrQC4OiJuzxs4Ip6S9E1gE9myU1+LiCeGcC1mZsVp9YfXImJsjWO7gUtrHF8GLKvYXw4sr1FuBbCir1gRsRJY2UudFgOL89TfzKx0rdwomJnZALlRMDMzyO6Jt/TtIzMzG4AAlZcAb1DcKJiZlck9BTMz6+FGobntOSDYPrOr7nGOGNfXc3nF2r5rZGmxXvtAPR51qW3rCTUnnBXuQ7d9opQ4AOPnlDdj+r0PHVRarK2vjist1qRjni0lztOfK+Y8HlMwM7O3NXmjUN7PPDOzfV0aaM6z5SHpLElbJG2VdFWN92dL2pRWo35U0q/1d073FMzMylRQTyEtBXQ92eKg24B2SXdExHcrin0buCMiQtLxwNeBD/Z1XvcUzMxKVGA+hZOArRHxbES8BdwCzK4sEBG7KhYSbSNHk+RGwcysTMUtiHck8ELF/rZ07B0kfVzS94C7gT/s76RuFMzMypK3QcgahXFpHKB7m191NvUS4Z0HIv41Ij4InEe2YGmfPKZgZlYSUfubvBc7IuLEPt7fBkyo2B8PvNhb4ZTD5hhJ4yJiR2/lhtRTkNRVkWP51pTDoGEkXZHq012nLkmHNrJOZmaVCpx91A5MlnS0pFHA+cAd74glTarIbTMNGAW80tdJh3r7aHdETI2I48jSZS7I86GU07lwEbE41WcqcDXwQEX6TzOzxitoTCEiOoHLyBKbPQV8PSKelLRAUvd38RzgiZQ2+Xrg9yoGnmsq8st5PXC8pDbg74APp/N/PiJul3QRWerN0UCbpE8A/wIcmMr9UUSslzQX+CxZL+vuiLgSQNIu4MtkCXt2A7Mj4j/7qM9c4J8LvD4zs6Er8OG1iFgNrK46dkPF60XAooGcs5CB5vTLfxawGbgGuC8ipgNnAItTQwFwCnBhRMwELgDWpF/1U4AOSUekC5gJTAWmSzovfbYN2BARU4B1wCV91Gd/4Czgtl7en989eNP1+hu1ipiZFS/ndNRGLoUx1EZhTOqWPAr8kCzX8keBq9LxtWQ9g4mp/L0Vt3PagYslfR74cES8DkwH1kbEy6lrdDMwI5V/C7grvd4IvK+Pev0m8B+93TqKiCURcWJEnDjigLZaRczM6qPFczTvTr/0e6RBjTkRsaXq+MlAz8/yNBI+g+yW0k2SFgN9rRq3p+JeWFc/dT8f3zoysybU7Avi1eM5hTXAwooR7xNqFZJ0FPBSRNxI1sOYBjwMnCZpXHqEey7wwECCSzoIOA24ffCXYGZWH0WufVQP9ZgFdC1wHbApNQzPkw0OVzsduELSHmAXMC8itku6GrifbKB5dUQM9Mv948A9EeHBAjNrLg2+NZTHkBqFiBhb49hu4NIax5cByyr2lwPLa5RbAazoK1ZErARqLq5fHcfMrKm0cqNgZmb5ieYfU3CjYGZWJjcKZmYGpCQ7zd0quFEwMyuRbx+Zmdnb3Cg0N3WKka+MrHucQyf/pO4xuu1d//Plxbqg1xV4C/f+b1QvJ18nY8qbJP7ehw4qLdaPT3m1tFjbl08qL9bz7y4tVhHcUzAzs7e5UTAzM6BnQbxm5kbBzKwkorFLWOThRsHMrEx957hpODcKZmYl8u0jMzPLDIMF8Ya0dLakLkkdkp6QdGvKeNYwkg6SdKekxyU9KeniRtbHzKxakUtnSzpL0hZJWyVdVeP9T0jalLYHJU3p75xDzaewOyKmRsRxZJnRFvT3gVTRevVQ/hj4bkrZeTrw15JG1SmWmdnAFZR5LeWcuZ4sFfKxwFxJx1YVew44LSKOJ0trsKS/8xaZZGc9MElSm6SlktolPSZpdrqAi1Jv4k7gHkmHS1pX0dM4NZWbK2lzOtaTcFrSLklfSL2ADZIOq1GHAA5IeRzGAjuBzgKv0cxs8NLaR3m2HE4CtkbEsxHxFnALMPsd4SIejIj/SrsbgPH9nbSQRiH98p8FbAauAe6LiOnAGcBiSd2JkE8BLoyImcAFwJqUznMK0CHpCGARMBOYCkyXdF76bBuwIfUC1gGX1KjKV4BfBF5Mdfl0RDT5BDAz25co8m05HAm8ULG/LR3rzSeBf+vvpEO9jTNGUkd6vZ4sreaDwLmSLk/HRwMT0+t7I2Jnet0OLJU0ElgVER2SZgJrI+JlAEk3AzOAVWS3p+5Kn90InFmjPr8BdJA1KscA90paHxHvyP0saT4wH2C/gw8Z3JWbmQ1G/oHmcZIerdhfEhGVt3+U9+ySziBrFH6tv6BDbRR2p1/6lcEFzImILVXHTwZ6UmRGxDpJM4CzgZskLQbe8eVdZU9EzwTfrl7qfjHwxVRuq6TngA8Cj1QWSn+wSwBGj5/Q5HMBzKxVDDDJzo6IOLGP97cBEyr2x5PdJXlnTOl44GvArIh4pb+gRY4pdFsDLEyNA5JOqFVI0lHASxFxI1kPYxrwMHCapHFpEGUu8MAAYv8Q+Eg6/2HALwDPDvZCzMwKFZF/6187MFnS0WlCzfnAHZUFJE0EvgH8QUQ8neek9ZgFdC1wHbApNQzPA+fUKHc6cIWkPcAuYF5EbJd0NXA/WaO6OiJuH2DsZZI2p89fGRHlLeNpZtaPopa5iIhOSZeR/RAfASyNiCclLUjv3wB8Dng38NX0O72zn97H0BqFiBhb49hu4NIax5cByyr2lwPLa5RbAazoK1ZErARW1ijzIvDRvPU3MytbkU80R8RqYHXVsRsqXn8K+NRAzuknms3MyhKA03GamVmP5m4T3CiYmZXJC+KZmdnbvHS2mZkBaZmLRleib24UzMxKkj285p5CU9PoLkZO7utB6mK8+uWJ/RcqyI5fKS0Ue3ceUFqsv/zoraXE+bNHZvdfqCBbXx1XWqztyyeVFmvyhRtLizVq7eGlxPlBUSdyT8HMzLq5p2BmZplhkHnNjYKZWWlyr2vUMG4UzMxKlDOBTsO4UTAzK4unpJqZ2Ts0+e2jIeVTkNRVkWP5Vkn7F1WxQdbnEEn/KmmTpEckHdfI+piZ/YzIuTXIUJPs7I6IqRFxHFm6zAV5PpRyOtfDZ4GOiDgemAd8uU5xzMwGRRG5tkYpMvPaemCSpDZJSyW1S3pM0mwASRel3sSdwD2SDpe0rqKncWoqN1fS5nRsUffJJe2S9AVJj0vakDKrVTsW+DZARHwPeF8v5czMyhdAV+TbGqSQRiH98p8FbAauAe6LiOnAGcBiSW2p6CnAhRExE7gAWJNyPE8BOiQdASwCZgJTgemSzkufbQM2RMQUYB1wSY2qPA78VqrTScBRZHlLzcwaTuTrJQznnsIYSR3Ao2T5kf+BLPPZVen4WmA00L3Gw70RsTO9bgculvR54MMR8TowHVgbES9HRCdwMzAjlX8LuCu93gi8r0Z9vggckmIvBB4DOqsLSZov6VFJj3a+9pNBXbiZ2aAUl6O5LooaU5gaEQsj4i2yNZ/mVByfGBFPpfJvdH8wItaRfeH/CLhJ0rz02d7siej5k+qixsypiHgtIi5OvY95wHuA52qUWxIRJ0bEifsd2NCxcTPb1xTYKEg6S9IWSVslXVXj/Q9KekjSm5Iuz3POIscUuq0BFipliZZ0Qq1Cko4CXoqIG8l6GNOAh4HTJI2TNAKYCzyQN7CkgyWNSrufAtZFRP1XuzMzyyPIFsTLs/UjfUdeT3br/lhgrqRjq4rtBP4E+FLeKtZjFtC1wHXAptQwPA+cU6Pc6cAVkvYAu4B5EbFd0tXA/WS9htURcfsAYv8i8I+SuoDvAp8c7EWYmdVDgeMFJwFbI+JZAEm3ALPJvvsAiIiXgJcknZ33pENqFCJibI1ju4FLaxxfBiyr2F8OLK9RbgWwoq9YEbESWFmjzEPA5Lz1NzMrV8Dewh5pPhJ4oWJ/G3DyUE/qJ5rNzMoSDGQQeZykRyv2l0TEkor9WmOwQ+6GuFEwMytT/o7Cjog4sY/3twETKvbHAy8OslY96jHQbGZmvSjwOYV2YLKko9MEm/OBO4ZaP/cUzMzKVNBAc0R0SrqMbMbnCGBpRDwpaUF6/wZJ7yV7juxAYK+kzwDH9jUr042CmVlZIqCruLWzI2I1sLrq2A0Vr3/MAFd1cKNgZlamJl86e59vFOKnI9jz/QPrHmfbeW/WPUa3UT94V2mxDj309dJiLf6b80uJM/K9pYQBYNIxz5YWa/vz7y4t1qi1h5cW663Tt5cWqxBuFMzMDEhPNLtRMDMzAAKiufNxulEwMyuTbx+ZmRmQkuy4p2BmZt3cUzAzs0xjE+jk0e8yF5K6KvIo3yqpoVlp+koa0V/CCTOzhgqyVVLzbA2SZ+2j7uxqx5GlxFyQ58Qpb3M91EwakTPhhJlZY7VYOs71wCRJbZKWSmqX9Jik2QCSLkq9iTuBeyQdLmldRU/j1FRurqTN6dii7pNL2iXpC5Iel7RB0mHVFYiIlyKiHdhT9VZPwomUFrQ74YSZWfNolUYh/fKfBWwGrgHui4jpwBnAYkltqegpwIURMRO4AFiTciZPATokHQEsAmYCU4Hpks5Ln20DNkTEFGAdcMkArqVWwokjB/B5M7P6iiC6unJtjZLnFs8YSR3p9XqyfMoPAudW3NMfDUxMr++NiJ3pdTuwVNJIYFVEdEiaCayNiJcBJN0MzABWkd2euit9diNw5gCuJXfCCUnzgfkA+x18yABCmJkNUQs80bw7/dLvkXIvz4mILVXHTwbe6N6PiHWSZgBnAzdJWgz0umQrsCeip9/UlbN+3XInnEjZi5YAjB4/obn/hsystQz32Ue9WAMsTI0Dkk6oVUjSUcBLEXEjWQ9jGvAwcJqkcWlweC7wwCDrUakuCSfMzAoT0fSzjwY7Q+ha4DpgU2oYngfOqVHudOAKSXuAXcC8iNgu6WrgfrJbPqsj4va8gftKGlEr4cTgLs/MrE6avKfQb6MQEWNrHNsNXFrj+DJgWcX+cmB5jXIrgBV9xYqIlcDKGmV6TRpRK+GEmVnziIYOIufhJ5rNzMripbPNzOwdmnzp7MEONJuZ2QAFEHsj15ZHf0v7KPO36f1Nkqb1d043CmZmZYmUZCfP1o+cS/vMAianbT7w9/2d142CmVmJCuwp5FnaZzbwj5HZABwsqc8E2vv8mMKbP9q245kr//QHA/zYOGBHPeqzj8RqxWsaVKynP1derDLjDPR/qKHEGqTBxDpqqEFf57/WfGvv18flLD5a0qMV+0vSg7fdai3tc3LVOXpb/md7b0H3+UYhIt4z0M9IejQiTqxHffaFWK14Ta0aqxWvqexYlSLirAJPl2dpn9zL/3Tz7SMzs+Epz9I+uZf/6eZGwcxseMqztM8dwLw0C+mXgVcjotdbR+DbR4O1pP8ijtUEcRxr+MRp5Vh1ERGdtZb2kbQgvX8D2QoPHwO2Aj8BLu7vvIomX4fDzMzK49tHZmbWw42CmZn1cKNgZmY9PNA8SJLGRsSuRtejKJIOrUijWs8450ZEKcmPSrymSWQ5yJ+KiO8WfO6DI+K/izxnH7H2i4jO9Hos8EHg2Xr9GUp6D9kUyU7guXr9/yTpg2RP9h5JNkf/ReCOiHiqHvGGO/cUBq/o//k/LGmDpBckLZF0SMV7jxQc61clPSXpSUknS7oXeDTFPqXAOL9Vtc0BlnTvFxUnxfqzitfHSnoa2Cjp+ZQmtshY90sal17/AdkMj1nAv0haWGQsYIekb0n6pKSDCz53D0kXAf8p6WlJs4BNwCLgcUlzC451rKRvAQ+RZWL8GrBZ0jJJBxUc60qy5R8EPEI2jVPAP9daQM6AiPDWywb8aS/b/wJ2Fhzr34GzgIOBy4EngWPSe48VHOsR4MPAKWSP+v9aOj4N+I8C43QCdwFLgf+XttfTf5cWfE3fqXh9NzArvT4JeLDgWE9UvG4H3p1e7w9sKjjWZrKshjcDrwC3k81HH1OHOOOAo8nyqHf/2zusDte0AfiFir+f5en1JcDKgmM9DYyscXwU8P0iY7XK5p5C3/4SOAQ4oGobS/G9rLER8c2I+O+I+BJwGfDN9MBJ0fOGR0bE5oh4CHg5Iv4dICK+A4wpMM4p6XztwB9GxMXAjoi4OCL+sMA41Y6IiH8DiIhHKPaaAPZIOjK93gW8kV6/STZfvNBYEXFXRHyC7FbLzcDvAtsk/Uz2wiHoiogdEfEcsCsingGIiP8sMEa3MRGxJZ2/+wcKkeVyr17lc6j2AkfUOH54es+qeEyhb98BVkXExuo3JH2q4FiSdFBEvAoQEfen2y23AYcWHKuyQbu66r1RRQWJiHZJZwILgftSV75eD8a8X9IdZLcGxkvaPyJ+kt4bWXCs/wncI+k2sh7dfZK+CZxK1gsqUs/aNZGlwf068PV0m+W8AuP8UNJfkf3o+Z6kvwa+Afw6fSyeNkjPSPpz4NvAbwEdAJJGUvx30meAb0v6Pm8vDDcRmET2w8uq+OG1Pkj6BeCViPiZ1RQlHVbkryhJF5AN6m2oOj4R+POIuKTAWOcC36r40uw+fgwwJyL+b1GxKs59BHAdcGJEvL8O5z+t6tDGiNgl6TDgtyPi+oLjHQRcAHyA7ItsG3B7RHyv4DiXp55jXUk6EPhjskb7K8BvkD39+gPgL6KfpREGGOtg4LNkvYLHgS9GxOvpz/QXq/8fKCDez5HdpjqSrJHdBrRHRHMnS24QNwpmtk9qtRmERfGYgpntqwqdQdgqPKZgZi1L0p/29hbZhBGr4p6CmbWyMmcQtgT3FHJIT15eAryPij+zekyrbMVYrXhNrRqrBa+pzBmELcGNQj63A+uBbwH1nrHQirFa8ZpaNVarXdPFZA/91VJ6Os7hwLOPcpDUERFTHau54zjW8IlTdizLz/fU8rlL0sccq+njONbwiVN2LMvJPYUcJL0OtAFvAXvS4YiIAx2reeI41vCJU3Ysy8+NgpmZ9fBAc05paYgZaXdtRNzlWM0Xx7GGT5wyY5U5q2q4c08hB0lfBKaTrVAJMJdsbZ3C12NvxViteE2tGqsVrynFepBsptNGKmY6RcRtRcca7two5CBpEzA1Ivam/RFkOQ6Od6zmieNYwydOA2J5plNOnn2U38EVrwvNDrWPxCorjmMNnzhlxvJMp5w8ppDPXwGPSbqfbM2UGfxsHgLHanwcxxo+ccqO9Wngs5I806kfvn2Uk6TDye5/Cng4In7sWM0Xx7GGT5yyY1k+vn2Ug6RfBV6LiDvIFtP635KOcqzmiuNYwydO2bFSvHMlfSlt59QrznDnRiGfvwd+ImkKcAVZNqp/dKymi+NYwydOqbHSTKdPk+VQ+C7w6XTMqrhRyKczsvtss4G/jYgvk/2ycazmiuNYwydO2bE+BpwZEUsjYilwVjpmVTzQnM/rkq4Gfh+YkabOFZ0MvpVjteI1tWqsVrymbgcDO9Pres+qGrbcU8jn94A3gU+mgbAjgcWO1XRxHGv4xCk7VvdMp2WSlpM9xPaXdYo1rHn2UT/Sr5c1EfHrjtW8cRxr+MQpO1ZFTM90ysE9hX5ERBfZYFjdu5utGKsVr6lVY7XiNXUre6bTcOYxhXx+CmyWdC/wRvfBiPgTx2qqOI41fOKUHevvgSkVM52Wks10Oq0OsYY1Nwr53J02x2ruOI41fOKUHaszIkJS90ynf5B0YUmxhxWPKeQkaQwwMSK2OFbzxnGs4ROnzFiSHgC+SZazeQbwMtARER+uZ9zhyGMKOUj6TaCD7B8VkqZKusOxmiuOYw2fOGXHotyZTsNbRHjrZyObvnYQ2bK+3cc2O1ZzxXGs4ROn5GsaAXyrHtfQipt7Cvl0RsSrVcfqdd+tFWO14jW1aqyWu6YoeabTcOeB5nyekHQBMELSZOBPgAcdq+niONbwiVN2rDJnOg1r7inksxD4ENk9yRXAq8BnHKvp4jjW8IlTdqy7gT8H1pHdturerIp7Cn2QNBpYAEwCNgOnRESnYzVXHMcaPnHKjtUtIpaXOatqOHNPoW/LgRPJ/uHOAr7kWE0Zx7GGT5yyYwGlz3Qa3ho90t3MGxUzIch6Vd9xrOaL41jDJ07ZsSrilDararhv7in0rTuXK1Hn7m2LxmrFa2rVWK14TZXKnFU1rPmJ5j5I6uLtmQoCxgA/Sa8jCkz63YqxWvGaWjVWK15TVcx/AL4NXAXMIZvpNDIiFhQda7hzo2BmLU/S/sA1wEfToTXAX0TETxtXq+bk2Udm1rIaMdNpuHNPwcxalqR/IRvDWE820+n5iPhMQyvV5NwomFnLkrQ50kqokvYDHomIaQ2uVlPz7CMza2WNmOk0rLmnYGYtqxEznYY7NwpmZtbDt4/MzKyHGwUzM+vhRsHMzHq4UTAzsx5uFMzMrIcbBTMz6/H/AUShfifMlvspAAAAAElFTkSuQmCC\n",
"image/svg+xml": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" 2021-11-29T18:07:39.455280 \n",
" image/svg+xml \n",
" \n",
" \n",
" Matplotlib v3.4.2, https://matplotlib.org/ \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n"
],
"text/plain": [
""
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u_uni = beta_diversity(metric=\"unweighted_unifrac\",\n",
" counts=data,\n",
" validate=False,\n",
" tree=food_tree,\n",
" ids=data.index,\n",
" otu_ids=data.columns)\n",
"\n",
"w_uni = beta_diversity(metric=\"weighted_unifrac\",\n",
" counts=data,\n",
" validate=False,\n",
" tree=food_tree,\n",
" ids=data.index,\n",
" otu_ids=data.columns)\n",
"\n",
"print(type(u_uni)) # should be DistanceMatrix\n",
"print(type(u_uni.data)) # should be a ndarray\n",
"u_uni # prints the heatmap"
]
},
{
"cell_type": "markdown",
"id": "512da1ea",
"metadata": {},
"source": [
"Now, we can look at how Jaccard, Bray-Curtis, Unweighted UniFrac, and Weighted UniFrac compare. \n",
"\n",
"Do they generally match each other? Are there any distances that are particularly different when using different metrics? Can you deduce why based on the initial data and our phylogenetic tree?\n",
"\n",
"Additionally, note that the left column of plots is for qualitative distance metrics, whereas the right column is for quantitative metrics. Likewise, the top row is non-phylogenetic, whereas the bottom row is phylogenetic."
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "ddb55b08",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"titles = np.array([[\"Jaccard\", \"Bray-Curtis\"],\n",
" [\"Unweighted UniFrac\", \"Weighted UniFrac\"]])\n",
"\n",
"matrices = np.array([[jaccard, bray_curt],\n",
" [u_uni.data, w_uni.data]])\n",
"\n",
"fig, ax = plt.subplots(2,2, figsize=(10,10))\n",
"\n",
"for i in [0,1]:\n",
" for j in [0,1]:\n",
" ax[i,j].set_title(titles[i,j])\n",
" sns.heatmap(matrices[i,j], \n",
" xticklabels=range(1,11),\n",
" yticklabels=range(1,11),\n",
" ax=ax[i,j])\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "e9585022",
"metadata": {},
"source": [
"## Stats with beta diversity"
]
},
{
"cell_type": "markdown",
"id": "2de4f853",
"metadata": {},
"source": [
"### Correlations between distance matrices"
]
},
{
"cell_type": "markdown",
"id": "d15f5e10",
"metadata": {},
"source": [
"How could we quantify how well these distance matrices using different metrics match each other? \n",
"\n",
"One way would be to look at the correlation between the values across the matrices. This is called a mantel test! We can perform a mantel test using Pearson or Spearman (non-parametric) correlations. \n",
"\n",
"Often, researchers use a mantel test to see how well beta diversity correlates with some metadata variable, which informs us of the strength of the relationship between microbiome composition and that variable. An example could be looking at the correlation between microbial community composition and pH of the sampling environment. \n",
"\n",
"Note: There are popular implementations of the mantel test in both Python (via scikit-bio) and R (via the vegan package). The mantel test "
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "7c585b00",
"metadata": {},
"outputs": [],
"source": [
"from skbio.stats.distance import DistanceMatrix, mantel, permanova"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "151c65d4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Correlation coefficient = 0.7817190130125696, \n",
"p = 0.001\n"
]
}
],
"source": [
"corr, p, n = mantel(jaccard, bray_curt)\n",
"print(f\"Correlation coefficient = {corr}, \\np = {p}\")"
]
},
{
"cell_type": "markdown",
"id": "68ce6a1c",
"metadata": {},
"source": [
"Imagine that we also had the participants in our study give us a score for how much they like meat on a scale from 1 to 10. We could then run a mantel test to see how well that score correlates with beta diversity. Note that we need to create a distance matrix to pass to mantel - we can't run `mantel(DistanceMatrix, list)` because Mantel requires 2 distance matrices! (Feel free to verify this yourself)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "9e3df1f5",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Our distance matrix:\n",
" [[ 0. 5. 2. 2. 5. 4. 5. 1. 4. 1.]\n",
" [ 5. 0. 7. 7. 10. 9. 0. 4. 1. 6.]\n",
" [ 2. 7. 0. 0. 3. 2. 7. 3. 6. 1.]\n",
" [ 2. 7. 0. 0. 3. 2. 7. 3. 6. 1.]\n",
" [ 5. 10. 3. 3. 0. 1. 10. 6. 9. 4.]\n",
" [ 4. 9. 2. 2. 1. 0. 9. 5. 8. 3.]\n",
" [ 5. 0. 7. 7. 10. 9. 0. 4. 1. 6.]\n",
" [ 1. 4. 3. 3. 6. 5. 4. 0. 3. 2.]\n",
" [ 4. 1. 6. 6. 9. 8. 1. 3. 0. 5.]\n",
" [ 1. 6. 1. 1. 4. 3. 6. 2. 5. 0.]] \n",
"\n",
"Jaccard correlation coefficient = 0.18769283253745744, \n",
"p = 0.247\n",
"\n",
"Bray-Curtis correlation coefficient = 0.28011598595536796, \n",
"p = 0.095\n",
"\n",
"Unweighted UniFrac correlation coefficient = 0.36828540678677346, \n",
"p = 0.021\n",
"\n",
"Weighted UniFrac correlation coefficient = 0.299360946507893, \n",
"p = 0.063\n",
"\n"
]
}
],
"source": [
"# Create our data\n",
"like_meat = [5,0,7,7,10,9,0,4,1,6]\n",
"\n",
"# Create a distance matrix for our metadata\n",
"# Each entry [i,j] in the matrix corresponds to \n",
"# The difference between like_meat for sample i and like_meat for sample j\n",
"# We're effectively taking the Euclidean distance here, but since there are\n",
"# only 2 values, we can just take the absolute value of a-b.\n",
"meat_distmat = np.zeros(shape=(len(people),len(people)))\n",
"for i, num_1 in enumerate(like_meat):\n",
" for j, num_2 in enumerate(like_meat):\n",
" meat_distmat[i,j] = np.abs(num_1-num_2)\n",
" \n",
"print(\"Our distance matrix:\\n\", meat_distmat, \"\\n\")\n",
"\n",
"# Convert it to type DistanceMatrix\n",
"meat_distmat = DistanceMatrix(meat_distmat, ids=people)\n",
"\n",
"dists_and_mats = [(\"Jaccard\", jaccard),\n",
" (\"Bray-Curtis\", bray_curt),\n",
" (\"Unweighted UniFrac\", u_uni),\n",
" (\"Weighted UniFrac\", w_uni)]\n",
"\n",
"# Run mantel on each distance\n",
"for dist, matrix in dists_and_mats:\n",
" corr, p, n = mantel(DistanceMatrix(matrix, ids=people), \n",
" meat_distmat)\n",
" print(f\"{dist} correlation coefficient = {corr}, \\np = {p}\\n\")"
]
},
{
"cell_type": "markdown",
"id": "44224231",
"metadata": {},
"source": [
"### Group difference testing with beta diversity"
]
},
{
"cell_type": "markdown",
"id": "a0f85709",
"metadata": {},
"source": [
"Similarly, imagine that we also collected data on vegetarianism in our sample population. What if we wanted to test for an association of this categorical variable with microbiome composition? \n",
"\n",
"We could use a permutational analysis of variance (PERMANOVA), which is a non-parametric version of the ANOVA test that is well-suited for distance matrices. Whereas an ANOVA calculates a p value through the assumption of normality, the PERMANOVA permutes the datapoints and compares the pseduo-F statistic of the actual data to the pseduo-F values that occur with random permutations of the data.\n",
"\n",
"With a PERMANOVA, our metadata should be formatted like a list or a column in a dataframe. We don't need to create a distance matrix in this case, which contrasts the mantel test."
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "a8123756",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Person 1 False\n",
"Person 2 True\n",
"Person 3 False\n",
"Person 4 False\n",
"Person 5 False\n",
"Person 6 False\n",
"Person 7 True\n",
"Person 8 False\n",
"Person 9 True\n",
"Person 10 False\n",
"dtype: bool\n",
"\n",
" Jaccard\n",
"method name PERMANOVA\n",
"test statistic name pseudo-F\n",
"sample size 10\n",
"number of groups 2\n",
"test statistic 2.007408\n",
"p-value 0.076\n",
"number of permutations 999\n",
"Name: PERMANOVA results, dtype: object\n",
"\n",
" Bray-Curtis\n",
"method name PERMANOVA\n",
"test statistic name pseudo-F\n",
"sample size 10\n",
"number of groups 2\n",
"test statistic 1.895251\n",
"p-value 0.096\n",
"number of permutations 999\n",
"Name: PERMANOVA results, dtype: object\n",
"\n",
" Unweighted UniFrac\n",
"method name PERMANOVA\n",
"test statistic name pseudo-F\n",
"sample size 10\n",
"number of groups 2\n",
"test statistic 2.842222\n",
"p-value 0.027\n",
"number of permutations 999\n",
"Name: PERMANOVA results, dtype: object\n",
"\n",
" Weighted UniFrac\n",
"method name PERMANOVA\n",
"test statistic name pseudo-F\n",
"sample size 10\n",
"number of groups 2\n",
"test statistic 1.622954\n",
"p-value 0.159\n",
"number of permutations 999\n",
"Name: PERMANOVA results, dtype: object\n"
]
}
],
"source": [
"# Use a pd.Series so we can see how the data match up with the index\n",
"vegetarian = [False, True, False, False, False,\n",
" False, True, False, True, False]\n",
"\n",
"vegetarian = pd.Series(vegetarian, index=people)\n",
"\n",
"print(vegetarian)\n",
"\n",
"for dist, matrix in dists_and_mats:\n",
" \n",
" print(\"\\n\", dist)\n",
" print(permanova(DistanceMatrix(matrix, ids=people), \n",
" vegetarian))"
]
},
{
"cell_type": "markdown",
"id": "1bb07a78",
"metadata": {},
"source": [
"### Different results with different distances\n",
"\n",
"There will almost always be different statistical results when using different distance metrics. This does not mean that one distance is better or more accurate than the others. It just means that they tell you different things. When planning an experiment, one should identify the distance metrics that will be used before statistical testing occurs, and all results should be reported. In the case of our vegetarianism example, only unweighted UniFrac had significant results, but that doesn't mean that Jaccard, Bray-Curtis, and Weighted UniFrac results should not be reported. "
]
},
{
"cell_type": "markdown",
"id": "601e2b2b",
"metadata": {},
"source": [
"## Ordinations"
]
},
{
"cell_type": "markdown",
"id": "095a7bee",
"metadata": {},
"source": [
"It's often useful to visualize our samples' composition. However, it can be difficult to visualize the whole dataset at once. For example, condsider our gorcery store example - even a simple dataset like that has 10 dimensions! We could maybe get creative with showing multiple 3D scatterplots, but when we scale up to microbiome datasets with hundreds to thousands of taxa, that becomes unmanageable. \n",
"\n",
"Luckily, dimension reduction techniques exist! Other fields (including classical ecology) often use a technique called Principal Components Analysis (PCA). This allows us to scale a large dataset into just a few important dimensions (or principal components). For our math-inclined readers, these principal components are the eigenvectors of the covariance marix.\n",
"\n",
"Though PCA preserves Euclidean distances well, microbiome data are compositional, and [compositional data do not exist in Euclidean space](https://rss.onlinelibrary.wiley.com/doi/abs/10.1111/j.2517-6161.1982.tb01195.x). Thus, we need some dimensionality reduction technique that works with non-Euclidean distances, such as Jaccard, Bray-Curtis, and UniFrac distances.\n",
"\n",
"For non-Euclidean distances, we can use a similar technique called Principal **Coordinates** Analysis (PCoA; components -> coordinates, C -> Co). There are functions to implement PCoA in Python through scikit-bio and R through the vegan package."
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "971c3c4a",
"metadata": {},
"outputs": [],
"source": [
"from skbio.stats.ordination import pcoa"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "ee1cdd09",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/anaconda3/envs/Int_MEX/lib/python3.9/site-packages/skbio/stats/ordination/_principal_coordinate_analysis.py:143: RuntimeWarning: The result contains negative eigenvalues. Please compare their magnitude with the magnitude of some of the largest positive eigenvalues. If the negative ones are smaller, it's probably safe to ignore them, but if they are large in magnitude, the results won't be useful. See the Notes section for more details. The smallest eigenvalue is -0.03304581294149358 and the largest is 0.44030598149431005.\n",
" warn(\n"
]
}
],
"source": [
"u_uni_pcoa = pcoa(u_uni, number_of_dimensions=3)\n",
"u_uni_coords = u_uni_pcoa.samples"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "9a6f8350",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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VEpJXFycKzs7O6/1ellZWWErVqwYZLFYVHBwcOPatWtPtWy/qJSSqVOnXuxI+8UDBw4EzZkzZ5jJZFKJiYmX165dm6/VfunSfrG7sf0iEVHHaNF+sbBwre1U/u/s9fVlVqs1un5Ywg+L4uK+z+5PrRit/SIREfUycXHfv8AA7jxeQyYiIjIABjIREZEBMJCJiIgMgIFMRERkAAxkIiIiA2AgExGRYRmt/eL+/fuDxowZ47BarWMXLVoU03LZxo0bwxMSElKGDh2a8vTTTw/q6LYZyEREZFhGa784cOBA9/Lly0/PmzfvXMtxt9uNH//4x0M3b9584sSJE0feeecd2759+zrUK5mBTEREmlhdVG4b/dnh1NjsA+mjPzucurqovNe1X7Tb7e7JkydfCggIuGJWrW3btoXEx8e7nE5nfVBQkPrud797YePGjf07sn8MZCIi6rLVReW2RXlF8efq3VYF4Fy927ooryheq1A2SvvFtpw5c8Zqt9u/mbc7Li6uvqioqEONNRjIRETUZb/NL7G7POqKTHF5lOm3+SW9qv1iW3xNQy0iHZqbmlNnEhFRl5XWu32GV1vj7WW09ottGTp06BVHxIWFhdbBgwd36EI2j5CJiKjLBlotPtsstjXeFXq2X2zL5MmTa/Pz84Nyc3Otly9flnfffdd29913V3ZkGzxCJiKiLns8YVDRoryi+JanrQNN4nk8YVCvar94+vRpS2ZmprO2ttYsImrVqlUxx44dO2yz2TxLly49PX369JGNjY343ve+V56RkXG5I/vF9otERKRJ+8XVReW23+aX2Evr3daBVkv94wmDih6yR7H7Uytsv0hERN3qIXvUBQZw5/EaMhERkQEwkImIqC0ej8fT7juN6fq830+Pr2UMZCIiasvhsrKyCIayNjwej5SVlUUAOOxrOa8hExGRT263++GSkpJXS0pKUsADOC14ABx2u90P+1rIQCYiIp/S09NLAfyb3nX0FfyNh4iIyAAYyERERAbAQCYiIjIAXQJZRGwi8omInPR+jfSxzhARyRaRYyJyREQW6FErERGRP+h1hPwUgK1KqUQAW72vW3MD+IlSKhnAeAD/LSJOP9ZIRETkN3oF8l0AVnufrwbw7dYrKKWKlVJfeJ9XAzgGoEt9NYmIiIxKr0COUUoVA03BC2DgtVYWkQQANwLYfY115opIjojk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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax = sns.scatterplot(x=\"PC1\", y=\"PC2\", \n",
" hue=u_uni_coords.index, \n",
" data=u_uni_coords, s=60)\n",
"\n",
"ax.legend(bbox_to_anchor=(1,1))\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "109242df",
"metadata": {},
"source": [
"We can color this ordination according to metadata variables, such as our score for how much each individual likes meat. In this case, we can see that individuals who reported not liking meat tended to be toward the left side of the plot, whereas individuals who reported liking meat tended to be toward the right side of the plot. Through this, we can visualize the results of our mantel test."
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "dbab5c64",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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Pe9xgYuIRUQ2isgh99eYTtZ7WUROi0inH3QnIiIKVFp9eP8hAJ8qpdIBfOp+7cmrAKb5KhQREZGeaFXis9F65TvcX+d4Wkkp9TkAzlZDRETkgVYlnqCUKgcA99eBGuUgIiLSrYtd2NZjIrIJwCAPix7uo/dbBGARACQnJ/fFWxAREfmVPitxpdT1nS0TkQoRGayUKheRwQBOe+H9VgJYCQAFBQWqt9sjIiLyd1odTl8LYKH7+UIA72uUg4iISLe0KvHHAEwRkUMAprhfQ0SGiMi6tpVE5A0AXwEYKSKl7ilQiYiICH14OL0rSqlqANd5GC8DMKPd6x/6MhcREZGecJJ3IiIinWKJExER6RRLnIiISKdY4kRERDrFEiciItIpljgREZFOscSJiIh0iiVORESkUyxxIiIinWKJExER6RRLnIiISKdY4kRERDrFEiciItIpljgREZFOscSJiIh0iiVORESkUyxxIiIinWKJExER6RRLnIiISKdY4kRERDrFEiciItIpljgREZFOscSJiIh0iiVORESkUyxxIiIinWKJExER6RRLnIiISKdY4kRERDrFEiciItIpljgREZFOscSJiIh0iiVORESkUyxxIiIindKkxEXEIiIbReSQ+2uMh3WGishmESkSkf0i8nMtshIREfkrrfbEHwLwqVIqHcCn7tcdOQA8oJTKAjAewBIRyfZhRiIiIr+mVYnPBvCa+/lrAOZ0XEEpVa6U2ul+XgegCECirwISERH5O61KPEEpVQ60ljWAgV2tLCKpAK4AsK2LdRaJSKGIFFZWVnozKxERkV8K6qsNi8gmAIM8LHr4ErcTDmANgGVKKWtn6ymlVgJYCQAFBQXqUt6DiIhIj/qsxJVS13e2TEQqRGSwUqpcRAYDON3JesFoLfDXlVLv9FFU8gKX0wnldEDEAENwsNZxiIgCglaH09cCWOh+vhDA+x1XEBEBsApAkVLqv32YjS6BUgqOpkY0nDgM63cHYD18EC1na+By2LWORkTU72lV4o8BmCIihwBMcb+GiAwRkXXuda4C8CMAk0Vkl/sxQ5u41BlnSzOsJcWwW2uhXE64WprRcPwwWqqroFwureMREfVrfXY4vStKqWoA13kYLwMww/38SwDi42h0CZTLiebKCkBdWNZNp8tgio6B0RyiQTIiosDAO7ZRjymnC47Guk4WKiin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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax = sns.scatterplot(x=\"PC1\", y=\"PC2\", \n",
" hue=like_meat, \n",
" data=u_uni_coords, s=60)\n",
"\n",
"ax.legend(bbox_to_anchor=(1,1),\n",
" title=\"'Likes meat' score\")\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "67b4ed02",
"metadata": {},
"source": [
"## Clustering"
]
},
{
"cell_type": "markdown",
"id": "69c0f7dd",
"metadata": {},
"source": [
"## Real world example"
]
},
{
"cell_type": "markdown",
"id": "9712841d",
"metadata": {},
"source": [
"## Interactive example/homework"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}