diff --git a/micom_2023.ipynb b/micom_2023.ipynb new file mode 100644 index 0000000..73d7e12 --- /dev/null +++ b/micom_2023.ipynb @@ -0,0 +1,8614 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "C0vqP4LJ9y6K" + }, + "source": [ + "# 🧫🦠 Modeling microbiota-wide metabolism with MICOM\n", + "\n", + "This notebook will accompany the second session of the 2023 ISB Microbiome Course. The presentation slides can be [found here](https://gibbons-lab.github.io/isb_course_2023/micom).\n", + "\n", + "You can save your own local copy of this notebook by using `File > Save a copy in Drive`. You may be promted to cetify the notebook is safe. We promise that it is 🀞\n", + "\n", + "**Disclaimer:**\n", + "The linear and quadratic programming problems MICOM has to solve are very large and very complicated. There are some very good commercial solvers that are very expensive (even though they are often free for academic use). To make this tutorial as accessible as possible we will use the Open Source solver [OSQP](https://osqp.org/), which is installed along with MICOM. OSQP is amazing with quadratic programming problems (kudos!) but not as accurate for linear problems. Solvers usually only guarantee a solution within a certain numerical tolerance of the real solution. In order to make everything work with OSQP this tolerance has to be relaxed to about 10-3. This means that any result with an absolute value smaller than that might very well be zero so we should look at larger values only. Installing cost-free academic versions of commercial solvers like [IBM CPLEX](https://www.ibm.com/analytics/cplex-optimizer) or [Gurobi](https://www.gurobi.com/) would alow you to lower the tolerance to 10-6.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qgBBl4GtuTuX" + }, + "source": [ + "# πŸ“ Setup\n", + "\n", + "MICOM installation is is usually pretty straight-forward and can be as easy as typing `pip install micom` into your Terminal.\n", + "\n", + "First let's start by downloading the materials again and switching to the folder." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ckON4xr3_bW5" + }, + "outputs": [], + "source": [ + "!git clone https://github.com/gibbons-lab/isb_course_2023 materials\n", + "!cd materials\n", + "!ls" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "is6fmBUeorwv" + }, + "source": [ + "## Basic Installation\n", + "\n", + "Installing MICOM is straight-forward in Python. OSQP itself will be installed automatically along with it." + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "M_TeC5yrst3h", + "outputId": "c3cb59af-6caf-4eda-f0f4-b20f4d19ae49" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m832.5/832.5 kB\u001b[0m \u001b[31m9.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m31.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m37.4/37.4 MB\u001b[0m \u001b[31m22.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m45.5/45.5 kB\u001b[0m \u001b[31m3.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.7/75.7 kB\u001b[0m \u001b[31m7.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m138.3/138.3 kB\u001b[0m \u001b[31m12.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m8.0/8.0 MB\u001b[0m \u001b[31m71.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m112.9/112.9 kB\u001b[0m \u001b[31m9.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.3/2.3 MB\u001b[0m \u001b[31m49.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m76.0/76.0 kB\u001b[0m \u001b[31m6.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m526.7/526.7 kB\u001b[0m \u001b[31m28.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m4.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDone! πŸŽ‰ \n" + ] + } + ], + "source": [ + "!pip install -q micom\n", + "\n", + "print(\"Done! πŸŽ‰ \")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6oJrxxz6tV9T" + }, + "source": [ + "## Enable QIIME 2 interactions\n", + "\n", + "Before we start, we also need to install packages to read the \"biom\" file format used by QIIME 2 to save tables. This is only necessary if you want to read QIIME 2 FeatureTable artifacts (like the ones we constructed yesterday)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5rZX7SK_toLp", + "outputId": "9cc5af18-c4de-486e-cb03-8f01bacf92a5" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m12.0/12.0 MB\u001b[0m \u001b[31m41.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDone! πŸŽ‰ \n" + ] + } + ], + "source": [ + "!pip install -q numpy Cython biom-format\n", + "\n", + "print(\"Done! πŸŽ‰ \")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oPy1f-WLI0lZ" + }, + "source": [ + "Okay, all done. So let's get started building some models πŸ¦ΊπŸ› d😁.\n", + "\n", + "# πŸ’» MICOM\n", + "\n", + "We will use the Python interface to MICOM since it plays nicely with Colaboratory. However, you could run the same steps within the QIIME 2 MICOM plugin ([q2-micom](https://library.qiime2.org/plugins/q2-micom/26/)).\n", + "\n", + "Here is an overview of all the steps and functions across both interfaces:\n", + "![micom overview](https://github.com/micom-dev/q2-micom/raw/706f583a060b91c12c0cec7acea2354fdd0dd320/docs/assets/overview.png)\n", + "\n", + "The process of building a metabolic model in MICOM begins with constructing a combined abundance/taxonomy table, referred to hereafter as a taxonomy table. Let's load a sample taxonomy table to see what it looks like:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "UV9SObSQkSZh", + "outputId": "2b3f71ac-8873-45fb-9352-961177f76c6a" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " id genus species reactions \\\n", + "0 Escherichia_coli_1 Escherichia Escherichia coli 0 95 \n", + "1 Escherichia_coli_2 Escherichia Escherichia coli 1 95 \n", + "2 Escherichia_coli_3 Escherichia Escherichia coli 2 95 \n", + "3 Escherichia_coli_4 Escherichia Escherichia coli 3 95 \n", + "0 Escherichia_coli_1 Escherichia Escherichia coli 0 95 \n", + "\n", + " metabolites sample_id abundance \n", + "0 72 sample_1 96 \n", + "1 72 sample_1 48 \n", + "2 72 sample_1 708 \n", + "3 72 sample_1 622 \n", + "0 72 sample_2 120 " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idgenusspeciesreactionsmetabolitessample_idabundance
0Escherichia_coli_1EscherichiaEscherichia coli 09572sample_196
1Escherichia_coli_2EscherichiaEscherichia coli 19572sample_148
2Escherichia_coli_3EscherichiaEscherichia coli 29572sample_1708
3Escherichia_coli_4EscherichiaEscherichia coli 39572sample_1622
0Escherichia_coli_1EscherichiaEscherichia coli 09572sample_2120
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 51 + } + ], + "source": [ + "from micom.data import test_data\n", + "\n", + "test_data().head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "AEk7yfd1lbYp" + }, + "source": [ + "In this taxonomy table, we see four identical strains of _E. coli_ (1 through 4), across two samples (sample_1 and sample_2). We can see that each row represents a single taxon in a single sample, and the `abundance` column identifies the abundance of that taxon in the sample.\n", + "\n", + "The `id` column specifies identifiers for the taxa and should be expressive and not include spaces or special characters. Since we are using a taxonomy database to build our models (more on that soon), we don't need a `file` column.\n", + "\n", + "You might notice that this dataframe looks very different from what we generated in yesterday's tutorial, where we ended up with separate QIIME 2 artifacts 😱\n", + "\n", + "No worries, we can deal with that.\n", + "\n", + "## Importing data from QIIME 2\n", + "\n", + "MICOM can read QIIME 2 artifacts. You don't even need to have QIIME 2 installed for that! But before we do so, let's resolve one issue. We discussed that MICOM summarizes genome-scale models into pangenome-scale models as a first step, but our data are on the ASV level...so how will we know what to summarize?\n", + "\n", + "Basically, a specific model database can be used to quickly summarize pangenome-scale models for use within MICOM. So, before we read our data we have to decide which model database to use. We will go with the [AGORA database](https://pubmed.ncbi.nlm.nih.gov/27893703/), which is a curated database of more than 800 bacterial strains that commonly live in the human gut. In particular, we will use a version of this database summarized on the genus rank which can be downloaded from the [MICOM data repository](https://doi.org/10.5281/zenodo.3755182), which contains a whole lot of prebuilt databases. This database is available from the materials folder that we previously cloned." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_57iya0D3L6-" + }, + "source": [ + "Now we're all set to start building models! The data we previously collected can be found in the `treasure_chest` folder, so we can use those files to build our taxonomy for MICOM." + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "id": "o0vBAiiqqPLC" + }, + "outputs": [], + "source": [ + "from micom.taxonomy import qiime_to_micom\n", + "\n", + "tax = qiime_to_micom(\n", + " \"dada2/table.qza\",\n", + " \"taxa.qza\",\n", + " collapse_on=\"genus\"\n", + ")" + ] + }, + { + "cell_type": "code", + "source": [ + "tax.sample_id.unique()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TkOm89mQbwXa", + "outputId": "a6093f5e-a2c8-4bf3-9e3f-bb925b81bf98" + }, + "execution_count": 53, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array(['ERR1883195', 'ERR1883207', 'ERR1883214', 'ERR1883240',\n", + " 'ERR1883250', 'ERR1883212', 'ERR1883225', 'ERR1883294'],\n", + " dtype=object)" + ] + }, + "metadata": {}, + "execution_count": 53 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-TQ6Zp7wouk4" + }, + "source": [ + "Notice the `collapse_on` argument. That will specify the rank on which to sumarize and can be a list of several ranks. When matching taxonomy you can either match by the particular rank of interest (for example, just comparing genus names here), or you could compare the entire taxonomy, which will require all taxonomic ranks prior to the target rank to match. For that you cloud specify `collapse_on=[\"kingdom\", \"phylum\", \"class\", \"order\", \"family\", \"genus\"]`.\n", + "\n", + "Taxonomic names will often not match 100% between databases. For instance, the genus name \"Prevotella\" in one database may be \"Prevotella_6\" in another. The more ranks you use for matching the more likely you are to run into these issues. However, the more taxonomic ranks you use to match the more confident you can be that your observed taxon really is the same taxon as the one in the model database.\n", + "\n", + "The resulting table will contain the same abundances but it will include more ranks if `collapse_on` is a list. All ranks present in the taxonomy will be used when matching to the database. We will stick with the \"lax\" option of only matching on genus ranks.\n", + "\n", + "Let's now take a look at the taxonomy table we generated:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "R5zwLVFcNTbq" + }, + "source": [ + "That looks more like the example! Again, we have a row for each taxon in each sample, so we're good to go.\n", + "\n", + "One helpful thing to do is to merge in our metadata, so we'll have it at hand for the following steps. In our case, the metadata will include the ethnic group, region, and subsistence type of each of the study participants." + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 548 + }, + "id": "X9hqoO4go0h1", + "outputId": "6d3ff6a9-7c37-4c52-ff4f-5ae39aef4cd7", + "collapsed": true + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " sample_id abundance genus id relative \\\n", + "0 ERR1883195 6.0 Akkermansia Akkermansia 0.000116 \n", + "1 ERR1883195 17971.0 Phocaeicola Phocaeicola 0.346522 \n", + "2 ERR1883195 5.0 Veillonella Veillonella 0.000096 \n", + "3 ERR1883195 4741.0 Faecalibacterium Faecalibacterium 0.091417 \n", + "4 ERR1883195 576.0 Mediterraneibacter Mediterraneibacter 0.011107 \n", + ".. ... ... ... ... ... \n", + "344 ERR1883294 5.0 Stomatobaculum Stomatobaculum 0.000926 \n", + "345 ERR1883294 3.0 Lancefieldella Lancefieldella 0.000556 \n", + "346 ERR1883294 3.0 Tumebacillus Tumebacillus 0.000556 \n", + "347 ERR1883294 3.0 Tropheryma Tropheryma 0.000556 \n", + "348 ERR1883294 2.0 Mogibacterium Mogibacterium 0.000370 \n", + "\n", + " Unnamed: 0 collection_timestamp day_relative_to_fmt description \\\n", + "0 12 2011-10-24 26 Donor 11 \n", + "1 12 2011-10-24 26 Donor 11 \n", + "2 12 2011-10-24 26 Donor 11 \n", + "3 12 2011-10-24 26 Donor 11 \n", + "4 12 2011-10-24 26 Donor 11 \n", + ".. ... ... ... ... \n", + "344 112 2011-09-29 0 Day 0 CD3 \n", + "345 112 2011-09-29 0 Day 0 CD3 \n", + "346 112 2011-09-29 0 Day 0 CD3 \n", + "347 112 2011-09-29 0 Day 0 CD3 \n", + "348 112 2011-09-29 0 Day 0 CD3 \n", + "\n", + " disease_state host_age host_age_units host_body_mass_index \\\n", + "0 healthy Restricted access years Restricted access \n", + "1 healthy Restricted access years Restricted access \n", + "2 healthy Restricted access years Restricted access \n", + "3 healthy Restricted access years Restricted access \n", + "4 healthy Restricted access years Restricted access \n", + ".. ... ... ... ... \n", + "344 Pre-FMT 61 years 32.5 \n", + "345 Pre-FMT 61 years 32.5 \n", + "346 Pre-FMT 61 years 32.5 \n", + "347 Pre-FMT 61 years 32.5 \n", + "348 Pre-FMT 61 years 32.5 \n", + "\n", + " host_height host_height_units host_subject_id host_weight \\\n", + "0 Restricted access m Donor Restricted access \n", + "1 Restricted access m Donor Restricted access \n", + "2 Restricted access m Donor Restricted access \n", + "3 Restricted access m Donor Restricted access \n", + "4 Restricted access m Donor Restricted access \n", + ".. ... ... ... ... \n", + "344 1.727 m CD3 97.3 \n", + "345 1.727 m CD3 97.3 \n", + "346 1.727 m CD3 97.3 \n", + "347 1.727 m CD3 97.3 \n", + "348 1.727 m CD3 97.3 \n", + "\n", + " host_weight_units race sex \n", + "0 kg Restricted access Restricted access \n", + "1 kg Restricted access Restricted access \n", + "2 kg Restricted access Restricted access \n", + "3 kg Restricted access Restricted access \n", + "4 kg Restricted access Restricted access \n", + ".. ... ... ... \n", + "344 kg white male \n", + "345 kg white male \n", + "346 kg white male \n", + "347 kg white male \n", + "348 kg white male \n", + "\n", + "[349 rows x 20 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sample_idabundancegenusidrelativeUnnamed: 0collection_timestampday_relative_to_fmtdescriptiondisease_statehost_agehost_age_unitshost_body_mass_indexhost_heighthost_height_unitshost_subject_idhost_weighthost_weight_unitsracesex
0ERR18831956.0AkkermansiaAkkermansia0.000116122011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
1ERR188319517971.0PhocaeicolaPhocaeicola0.346522122011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
2ERR18831955.0VeillonellaVeillonella0.000096122011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
3ERR18831954741.0FaecalibacteriumFaecalibacterium0.091417122011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
4ERR1883195576.0MediterraneibacterMediterraneibacter0.011107122011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
...............................................................
344ERR18832945.0StomatobaculumStomatobaculum0.0009261122011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
345ERR18832943.0LancefieldellaLancefieldella0.0005561122011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
346ERR18832943.0TumebacillusTumebacillus0.0005561122011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
347ERR18832943.0TropherymaTropheryma0.0005561122011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
348ERR18832942.0MogibacteriumMogibacterium0.0003701122011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
\n", + "

349 rows Γ— 20 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 55 + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "metadata = pd.read_table(\"metadata.tsv\").rename(columns={\"id\": \"sample_id\"})\n", + "tax = pd.merge(tax, metadata, on=\"sample_id\")\n", + "tax" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Ok, now we want to invade our samples with C. diff. The goal is to predict susceptibility to invasion and see how disease context can influence predicted engraftment. To do this we will introduce 10% C. diff to all the samples! You can read more about this approach and its applications [here](https://www.biorxiv.org/content/10.1101/2023.04.28.538771v2) " + ], + "metadata": { + "id": "ZsFgo_CRjvsr" + } + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "vHyvSZJJ-iIi", + "outputId": "0f934995-8bd5-4c03-ddda-491fb5d5bd4f" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " sample_id abundance genus id \\\n", + "1 ERR1883195 17971.000000 Phocaeicola Phocaeicola \n", + "3 ERR1883195 4741.000000 Faecalibacterium Faecalibacterium \n", + "8 ERR1883195 6805.000000 Bacteroides Bacteroides \n", + "11 ERR1883195 3076.000000 Parabacteroides Parabacteroides \n", + "5 ERR1883195 3621.444444 Clostridioides Clostridioides \n", + "71 ERR1883207 16983.000000 Phocaeicola Phocaeicola \n", + "73 ERR1883207 3717.000000 Faecalibacterium Faecalibacterium \n", + "77 ERR1883207 2956.000000 Barnesiella Barnesiella \n", + "78 ERR1883207 6984.000000 Bacteroides Bacteroides \n", + "79 ERR1883207 2901.000000 Blautia Blautia \n", + "81 ERR1883207 3413.000000 Parabacteroides Parabacteroides \n", + "7 ERR1883207 4106.000000 Clostridioides Clostridioides \n", + "222 ERR1883212 8393.000000 Phocaeicola Phocaeicola \n", + "224 ERR1883212 10841.000000 Faecalibacterium Faecalibacterium \n", + "227 ERR1883212 4038.000000 Fusicatenibacter Fusicatenibacter \n", + "229 ERR1883212 3286.000000 Bacteroides Bacteroides \n", + "230 ERR1883212 3198.000000 Blautia Blautia \n", + "234 ERR1883212 5106.000000 Streptococcus Streptococcus \n", + "7 ERR1883212 3873.555556 Clostridioides Clostridioides \n", + "152 ERR1883214 54726.000000 Akkermansia Akkermansia \n", + "161 ERR1883214 3968.000000 Clostridium Clostridium \n", + "3 ERR1883214 6521.555556 Clostridioides Clostridioides \n", + "291 ERR1883225 3734.000000 Phocaeicola Phocaeicola \n", + "295 ERR1883225 492.000000 Barnesiella Barnesiella \n", + "296 ERR1883225 1475.000000 Bacteroides Bacteroides \n", + "299 ERR1883225 911.000000 Parabacteroides Parabacteroides \n", + "5 ERR1883225 734.666667 Clostridioides Clostridioides \n", + "174 ERR1883240 35554.000000 Akkermansia Akkermansia \n", + "176 ERR1883240 15517.000000 Veillonella Veillonella \n", + "180 ERR1883240 5555.000000 Fusobacterium Fusobacterium \n", + "4 ERR1883240 6291.777778 Clostridioides Clostridioides \n", + "188 ERR1883250 11467.000000 Akkermansia Akkermansia \n", + "190 ERR1883250 9955.000000 Mediterraneibacter Mediterraneibacter \n", + "191 ERR1883250 11923.000000 Erysipelatoclostridium Erysipelatoclostridium \n", + "193 ERR1883250 13975.000000 Blautia Blautia \n", + "196 ERR1883250 3282.000000 Ruthenibacterium Ruthenibacterium \n", + "6 ERR1883250 5622.444444 Clostridioides Clostridioides \n", + "321 ERR1883294 619.000000 Veillonella Veillonella \n", + "325 ERR1883294 591.000000 Fusobacterium Fusobacterium \n", + "329 ERR1883294 1866.000000 Anaerosinus Anaerosinus \n", + "330 ERR1883294 580.000000 Megasphaera Megasphaera \n", + "332 ERR1883294 734.000000 Phytobacter Phytobacter \n", + "333 ERR1883294 294.000000 Morganella Morganella \n", + "7 ERR1883294 520.444444 Clostridioides Clostridioides \n", + "\n", + " relative Unnamed: 0 collection_timestamp day_relative_to_fmt \\\n", + "1 0.496238 12.0 2011-10-24 26 \n", + "3 0.130915 12.0 2011-10-24 26 \n", + "8 0.187908 12.0 2011-10-24 26 \n", + "11 0.084938 12.0 2011-10-24 26 \n", + "5 0.100000 12.0 2011-10-24 26 \n", + "71 0.413614 24.0 2012-01-12 44 \n", + "73 0.090526 24.0 2012-01-12 44 \n", + "77 0.071992 24.0 2012-01-12 44 \n", + "78 0.170093 24.0 2012-01-12 44 \n", + "79 0.070653 24.0 2012-01-12 44 \n", + "81 0.083122 24.0 2012-01-12 44 \n", + "7 0.100000 24.0 2012-01-12 44 \n", + "222 0.216674 30.0 2012-10-10 135 \n", + "224 0.279872 30.0 2012-10-10 135 \n", + "227 0.104245 30.0 2012-10-10 135 \n", + "229 0.084832 30.0 2012-10-10 135 \n", + "230 0.082560 30.0 2012-10-10 135 \n", + "234 0.131817 30.0 2012-10-10 135 \n", + "7 0.100000 30.0 2012-10-10 135 \n", + "152 0.839156 32.0 2011-07-26 0 \n", + "161 0.060844 32.0 2011-07-26 0 \n", + "3 0.100000 32.0 2011-07-26 0 \n", + "291 0.508258 43.0 2011-07-26 54 \n", + "295 0.066969 43.0 2011-07-26 54 \n", + "296 0.200771 43.0 2011-07-26 54 \n", + "299 0.124002 43.0 2011-07-26 54 \n", + "5 0.100000 43.0 2011-07-26 54 \n", + "174 0.565087 58.0 2012-02-14 pre-FMT \n", + "176 0.246623 58.0 2012-02-14 pre-FMT \n", + "180 0.088290 58.0 2012-02-14 pre-FMT \n", + "4 0.100000 58.0 2012-02-14 pre-FMT \n", + "188 0.203950 68.0 2011-12-23 pre-FMT \n", + "190 0.177058 68.0 2011-12-23 pre-FMT \n", + "191 0.212061 68.0 2011-12-23 pre-FMT \n", + "193 0.248557 68.0 2011-12-23 pre-FMT \n", + "196 0.058373 68.0 2011-12-23 pre-FMT \n", + "6 0.100000 68.0 2011-12-23 pre-FMT \n", + "321 0.118937 112.0 2011-09-29 0 \n", + "325 0.113557 112.0 2011-09-29 0 \n", + "329 0.358540 112.0 2011-09-29 0 \n", + "330 0.111443 112.0 2011-09-29 0 \n", + "332 0.141033 112.0 2011-09-29 0 \n", + "333 0.056490 112.0 2011-09-29 0 \n", + "7 0.100000 112.0 2011-09-29 0 \n", + "\n", + " description disease_state host_age host_age_units \\\n", + "1 Donor 11 healthy Restricted access years \n", + "3 Donor 11 healthy Restricted access years \n", + "8 Donor 11 healthy Restricted access years \n", + "11 Donor 11 healthy Restricted access years \n", + "5 Donor 11 healthy Restricted access years \n", + "71 Donor 12 healthy Restricted access years \n", + "73 Donor 12 healthy Restricted access years \n", + "77 Donor 12 healthy Restricted access years \n", + "78 Donor 12 healthy Restricted access years \n", + "79 Donor 12 healthy Restricted access years \n", + "81 Donor 12 healthy Restricted access years \n", + "7 Donor 12 healthy Restricted access years \n", + "222 Donor 14 healthy Restricted access years \n", + "224 Donor 14 healthy Restricted access years \n", + "227 Donor 14 healthy Restricted access years \n", + "229 Donor 14 healthy Restricted access years \n", + "230 Donor 14 healthy Restricted access years \n", + "234 Donor 14 healthy Restricted access years \n", + "7 Donor 14 healthy Restricted access years \n", + "152 Day 0 CD1 Pre-FMT 39 years \n", + "161 Day 0 CD1 Pre-FMT 39 years \n", + "3 Day 0 CD1 Pre-FMT 39 years \n", + "291 Donor CD1 healthy Restricted access years \n", + "295 Donor CD1 healthy Restricted access years \n", + "296 Donor CD1 healthy Restricted access years \n", + "299 Donor CD1 healthy Restricted access years \n", + "5 Donor CD1 healthy Restricted access years \n", + "174 CD9 pre-FMT Pre-FMT 47 years \n", + "176 CD9 pre-FMT Pre-FMT 47 years \n", + "180 CD9 pre-FMT Pre-FMT 47 years \n", + "4 CD9 pre-FMT Pre-FMT 47 years \n", + "188 CD13 pre-FMT Pre-FMT 53 years \n", + "190 CD13 pre-FMT Pre-FMT 53 years \n", + "191 CD13 pre-FMT Pre-FMT 53 years \n", + "193 CD13 pre-FMT Pre-FMT 53 years \n", + "196 CD13 pre-FMT Pre-FMT 53 years \n", + "6 CD13 pre-FMT Pre-FMT 53 years \n", + "321 Day 0 CD3 Pre-FMT 61 years \n", + "325 Day 0 CD3 Pre-FMT 61 years \n", + "329 Day 0 CD3 Pre-FMT 61 years \n", + "330 Day 0 CD3 Pre-FMT 61 years \n", + "332 Day 0 CD3 Pre-FMT 61 years \n", + "333 Day 0 CD3 Pre-FMT 61 years \n", + "7 Day 0 CD3 Pre-FMT 61 years \n", + "\n", + " host_body_mass_index host_height host_height_units host_subject_id \\\n", + "1 Restricted access Restricted access m Donor \n", + "3 Restricted access Restricted access m Donor \n", + "8 Restricted access Restricted access m Donor \n", + "11 Restricted access Restricted access m Donor \n", + "5 Restricted access Restricted access m Donor \n", + "71 Restricted access Restricted access m Donor \n", + "73 Restricted access Restricted access m Donor \n", + "77 Restricted access Restricted access m Donor \n", + "78 Restricted access Restricted access m Donor \n", + "79 Restricted access Restricted access m Donor \n", + "81 Restricted access Restricted access m Donor \n", + "7 Restricted access Restricted access m Donor \n", + "222 Restricted access Restricted access m Donor \n", + "224 Restricted access Restricted access m Donor \n", + "227 Restricted access Restricted access m Donor \n", + "229 Restricted access Restricted access m Donor \n", + "230 Restricted access Restricted access m Donor \n", + "234 Restricted access Restricted access m Donor \n", + "7 Restricted access Restricted access m Donor \n", + "152 29.3 165.1 m CD1 \n", + "161 29.3 165.1 m CD1 \n", + "3 29.3 165.1 m CD1 \n", + "291 Restricted access Restricted access m Donor \n", + "295 Restricted access Restricted access m Donor \n", + "296 Restricted access Restricted access m Donor \n", + "299 Restricted access Restricted access m Donor \n", + "5 Restricted access Restricted access m Donor \n", + "174 35.5 1.55 m CD9 \n", + "176 35.5 1.55 m CD9 \n", + "180 35.5 1.55 m CD9 \n", + "4 35.5 1.55 m CD9 \n", + "188 34.4 1.56 m CD13 \n", + "190 34.4 1.56 m CD13 \n", + "191 34.4 1.56 m CD13 \n", + "193 34.4 1.56 m CD13 \n", + "196 34.4 1.56 m CD13 \n", + "6 34.4 1.56 m CD13 \n", + "321 32.5 1.727 m CD3 \n", + "325 32.5 1.727 m CD3 \n", + "329 32.5 1.727 m CD3 \n", + "330 32.5 1.727 m CD3 \n", + "332 32.5 1.727 m CD3 \n", + "333 32.5 1.727 m CD3 \n", + "7 32.5 1.727 m CD3 \n", + "\n", + " host_weight host_weight_units race sex \n", + "1 Restricted access kg Restricted access Restricted access \n", + "3 Restricted access kg Restricted access Restricted access \n", + "8 Restricted access kg Restricted access Restricted access \n", + "11 Restricted access kg Restricted access Restricted access \n", + "5 Restricted access kg Restricted access Restricted access \n", + "71 Restricted access kg Restricted access Restricted access \n", + "73 Restricted access kg Restricted access Restricted access \n", + "77 Restricted access kg Restricted access Restricted access \n", + "78 Restricted access kg Restricted access Restricted access \n", + "79 Restricted access kg Restricted access Restricted access \n", + "81 Restricted access kg Restricted access Restricted access \n", + "7 Restricted access kg Restricted access Restricted access \n", + "222 Restricted access kg Restricted access Restricted access \n", + "224 Restricted access kg Restricted access Restricted access \n", + "227 Restricted access kg Restricted access Restricted access \n", + "229 Restricted access kg Restricted access Restricted access \n", + "230 Restricted access kg Restricted access Restricted access \n", + "234 Restricted access kg Restricted access Restricted access \n", + "7 Restricted access kg Restricted access Restricted access \n", + "152 80.1 kg white female \n", + "161 80.1 kg white female \n", + "3 80.1 kg white female \n", + "291 Restricted access kg Restricted access Restricted access \n", + "295 Restricted access kg Restricted access Restricted access \n", + "296 Restricted access kg Restricted access Restricted access \n", + "299 Restricted access kg Restricted access Restricted access \n", + "5 Restricted access kg Restricted access Restricted access \n", + "174 85.1 kg white female \n", + "176 85.1 kg white female \n", + "180 85.1 kg white female \n", + "4 85.1 kg white female \n", + "188 83.9 kg white female \n", + "190 83.9 kg white female \n", + "191 83.9 kg white female \n", + "193 83.9 kg white female \n", + "196 83.9 kg white female \n", + "6 83.9 kg white female \n", + "321 97.3 kg white male \n", + "325 97.3 kg white male \n", + "329 97.3 kg white male \n", + "330 97.3 kg white male \n", + "332 97.3 kg white male \n", + "333 97.3 kg white male \n", + "7 97.3 kg white male " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sample_idabundancegenusidrelativeUnnamed: 0collection_timestampday_relative_to_fmtdescriptiondisease_statehost_agehost_age_unitshost_body_mass_indexhost_heighthost_height_unitshost_subject_idhost_weighthost_weight_unitsracesex
1ERR188319517971.000000PhocaeicolaPhocaeicola0.49623812.02011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
3ERR18831954741.000000FaecalibacteriumFaecalibacterium0.13091512.02011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
8ERR18831956805.000000BacteroidesBacteroides0.18790812.02011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
11ERR18831953076.000000ParabacteroidesParabacteroides0.08493812.02011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
5ERR18831953621.444444ClostridioidesClostridioides0.10000012.02011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
71ERR188320716983.000000PhocaeicolaPhocaeicola0.41361424.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
73ERR18832073717.000000FaecalibacteriumFaecalibacterium0.09052624.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
77ERR18832072956.000000BarnesiellaBarnesiella0.07199224.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
78ERR18832076984.000000BacteroidesBacteroides0.17009324.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
79ERR18832072901.000000BlautiaBlautia0.07065324.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
81ERR18832073413.000000ParabacteroidesParabacteroides0.08312224.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
7ERR18832074106.000000ClostridioidesClostridioides0.10000024.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
222ERR18832128393.000000PhocaeicolaPhocaeicola0.21667430.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
224ERR188321210841.000000FaecalibacteriumFaecalibacterium0.27987230.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
227ERR18832124038.000000FusicatenibacterFusicatenibacter0.10424530.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
229ERR18832123286.000000BacteroidesBacteroides0.08483230.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
230ERR18832123198.000000BlautiaBlautia0.08256030.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
234ERR18832125106.000000StreptococcusStreptococcus0.13181730.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
7ERR18832123873.555556ClostridioidesClostridioides0.10000030.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
152ERR188321454726.000000AkkermansiaAkkermansia0.83915632.02011-07-260Day 0 CD1Pre-FMT39years29.3165.1mCD180.1kgwhitefemale
161ERR18832143968.000000ClostridiumClostridium0.06084432.02011-07-260Day 0 CD1Pre-FMT39years29.3165.1mCD180.1kgwhitefemale
3ERR18832146521.555556ClostridioidesClostridioides0.10000032.02011-07-260Day 0 CD1Pre-FMT39years29.3165.1mCD180.1kgwhitefemale
291ERR18832253734.000000PhocaeicolaPhocaeicola0.50825843.02011-07-2654Donor CD1healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
295ERR1883225492.000000BarnesiellaBarnesiella0.06696943.02011-07-2654Donor CD1healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
296ERR18832251475.000000BacteroidesBacteroides0.20077143.02011-07-2654Donor CD1healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
299ERR1883225911.000000ParabacteroidesParabacteroides0.12400243.02011-07-2654Donor CD1healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
5ERR1883225734.666667ClostridioidesClostridioides0.10000043.02011-07-2654Donor CD1healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
174ERR188324035554.000000AkkermansiaAkkermansia0.56508758.02012-02-14pre-FMTCD9 pre-FMTPre-FMT47years35.51.55mCD985.1kgwhitefemale
176ERR188324015517.000000VeillonellaVeillonella0.24662358.02012-02-14pre-FMTCD9 pre-FMTPre-FMT47years35.51.55mCD985.1kgwhitefemale
180ERR18832405555.000000FusobacteriumFusobacterium0.08829058.02012-02-14pre-FMTCD9 pre-FMTPre-FMT47years35.51.55mCD985.1kgwhitefemale
4ERR18832406291.777778ClostridioidesClostridioides0.10000058.02012-02-14pre-FMTCD9 pre-FMTPre-FMT47years35.51.55mCD985.1kgwhitefemale
188ERR188325011467.000000AkkermansiaAkkermansia0.20395068.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56mCD1383.9kgwhitefemale
190ERR18832509955.000000MediterraneibacterMediterraneibacter0.17705868.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56mCD1383.9kgwhitefemale
191ERR188325011923.000000ErysipelatoclostridiumErysipelatoclostridium0.21206168.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56mCD1383.9kgwhitefemale
193ERR188325013975.000000BlautiaBlautia0.24855768.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56mCD1383.9kgwhitefemale
196ERR18832503282.000000RuthenibacteriumRuthenibacterium0.05837368.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56mCD1383.9kgwhitefemale
6ERR18832505622.444444ClostridioidesClostridioides0.10000068.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56mCD1383.9kgwhitefemale
321ERR1883294619.000000VeillonellaVeillonella0.118937112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
325ERR1883294591.000000FusobacteriumFusobacterium0.113557112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
329ERR18832941866.000000AnaerosinusAnaerosinus0.358540112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
330ERR1883294580.000000MegasphaeraMegasphaera0.111443112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
332ERR1883294734.000000PhytobacterPhytobacter0.141033112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
333ERR1883294294.000000MorganellaMorganella0.056490112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
7ERR1883294520.444444ClostridioidesClostridioides0.100000112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 106 + } + ], + "source": [ + "invader='Clostridioides' # choose your favorite invader, here we have chosen C. diff\n", + "invader_rel=0.1 # set the fraction of total relative abundance you want it to invade with\n", + "invaded=pd.DataFrame() # set up results dataframe\n", + "\n", + "for smp,df in tax.groupby(by='sample_id'): # loop through data, one sample at a time\n", + " df=df[df.relative>0.05].copy() # filter out genera below 5% (this is a high threshold, which will make simulation run faster)\n", + " df=df[df.genus!='Clostridioides'] # some samples already have C. diff, so lets remove it and then re-introduce\n", + " abund=df.abundance.sum()*invader_rel/(1-invader_rel) # calculate the abundance needed to achieve desired relative abundance\n", + "\n", + " info=df.iloc[0,:].copy() # get necessary sample info\n", + " info.genus=invader # add invader name\n", + " info.id=invader\n", + " info.abundance=abund # add invader abundance\n", + " df.loc[df.shape[0]+1,info.index]=info.values #append invader info\n", + " df.relative=df.abundance.apply(lambda x:x/df.abundance.sum()) # re-calculate relative abundance\n", + " invaded=pd.concat([invaded,df]) # append results to output dataframe\n", + "invaded\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RTbYBR8cJfup" + }, + "source": [ + "With our taxonomy table ready to go, and our metadata merged, its finally time to get to the model building! πŸŽ‰\n", + "\n", + "## Building community models\n", + "\n", + "With the data we have now, building our models is pretty easy. We just pass our taxonomy table and model database to MICOM. We will remove all taxa that make up less than 5% of the community to keep the models small and speed up this tutorial. We will also have to specify where to write the models. For simplicity, we'll run this process in parallel over two threads. It should take around 10 minutes to finish." + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51, + "referenced_widgets": [ + "37b0134de4bd4fe38c1afe7bc2bbdc59", + "bc2776a5195f4a8c8dda0e22e2fd9ea3" + ] + }, + "id": "kDbSN71SmCZr", + "outputId": "e51c2208-4536-4f90-804c-442d884549bf" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Output()" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "37b0134de4bd4fe38c1afe7bc2bbdc59" + } + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "WARNING:micom.logger:Less than 50% of the abundance could be matched to the model database. Model `ERR1883294` may not be representative of the sample\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [], + "text/html": [ + "
\n"
+            ]
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "\n"
+            ],
+            "text/html": [
+              "
\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "from micom.workflows import build\n", + "from micom import Community\n", + "import pandas as pd\n", + "\n", + "manifest = build(invaded, \"agora103_genus.qza\", \"models\", solver=\"osqp\",\n", + " cutoff=0.05, threads=2)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Kwya6vbZZSUo" + }, + "source": [ + "You'll see a warning pop up indicating that less than 50% of the abundances can be matched to the database for one of the samples. This can happen with some data, and may indicate the models may not be completely representative of the samples.Typically a fraction of 80% or more is considered great. We'll continue, but remember to keep an eye out for this in future projects!\n", + "\n", + "In lower-biomass 16S amplicon sequencing samples from stool, many reads can match to food components or to host mitochondria and these hits probably do not contribute much to bacterial community metabolism. These hits will be excluded from MICOM.\n", + "\n", + "Let's take a look what we got back from the `build` process." + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 454 + }, + "id": "r9qwglr88Ise", + "outputId": "168ee50d-23c5-4dfe-e3fb-bc733ec82188" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " sample_id Unnamed: 0 collection_timestamp day_relative_to_fmt \\\n", + "0 ERR1883195 12.0 2011-10-24 26 \n", + "1 ERR1883207 24.0 2012-01-12 44 \n", + "2 ERR1883212 30.0 2012-10-10 135 \n", + "3 ERR1883214 32.0 2011-07-26 0 \n", + "4 ERR1883225 43.0 2011-07-26 54 \n", + "5 ERR1883240 58.0 2012-02-14 pre-FMT \n", + "6 ERR1883250 68.0 2011-12-23 pre-FMT \n", + "7 ERR1883294 112.0 2011-09-29 0 \n", + "\n", + " description disease_state host_age host_age_units \\\n", + "0 Donor 11 healthy Restricted access years \n", + "1 Donor 12 healthy Restricted access years \n", + "2 Donor 14 healthy Restricted access years \n", + "3 Day 0 CD1 Pre-FMT 39 years \n", + "4 Donor CD1 healthy Restricted access years \n", + "5 CD9 pre-FMT Pre-FMT 47 years \n", + "6 CD13 pre-FMT Pre-FMT 53 years \n", + "7 Day 0 CD3 Pre-FMT 61 years \n", + "\n", + " host_body_mass_index host_height ... host_subject_id \\\n", + "0 Restricted access Restricted access ... Donor \n", + "1 Restricted access Restricted access ... Donor \n", + "2 Restricted access Restricted access ... Donor \n", + "3 29.3 165.1 ... CD1 \n", + "4 Restricted access Restricted access ... Donor \n", + "5 35.5 1.55 ... CD9 \n", + "6 34.4 1.56 ... CD13 \n", + "7 32.5 1.727 ... CD3 \n", + "\n", + " host_weight host_weight_units race sex \\\n", + "0 Restricted access kg Restricted access Restricted access \n", + "1 Restricted access kg Restricted access Restricted access \n", + "2 Restricted access kg Restricted access Restricted access \n", + "3 80.1 kg white female \n", + "4 Restricted access kg Restricted access Restricted access \n", + "5 85.1 kg white female \n", + "6 83.9 kg white female \n", + "7 97.3 kg white male \n", + "\n", + " file found_taxa total_taxa found_fraction \\\n", + "0 ERR1883195.pickle 5.0 5.0 1.000000 \n", + "1 ERR1883207.pickle 7.0 7.0 1.000000 \n", + "2 ERR1883212.pickle 6.0 7.0 0.857143 \n", + "3 ERR1883214.pickle 6.0 6.0 1.000000 \n", + "4 ERR1883225.pickle 5.0 5.0 1.000000 \n", + "5 ERR1883240.pickle 4.0 4.0 1.000000 \n", + "6 ERR1883250.pickle 5.0 6.0 0.833333 \n", + "7 ERR1883294.pickle 5.0 7.0 0.714286 \n", + "\n", + " found_abundance_fraction \n", + "0 1.000000 \n", + "1 1.000000 \n", + "2 0.895755 \n", + "3 1.000000 \n", + "4 1.000000 \n", + "5 1.000000 \n", + "6 0.941627 \n", + "7 0.500427 \n", + "\n", + "[8 rows x 21 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sample_idUnnamed: 0collection_timestampday_relative_to_fmtdescriptiondisease_statehost_agehost_age_unitshost_body_mass_indexhost_height...host_subject_idhost_weighthost_weight_unitsracesexfilefound_taxatotal_taxafound_fractionfound_abundance_fraction
0ERR188319512.02011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883195.pickle5.05.01.0000001.000000
1ERR188320724.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883207.pickle7.07.01.0000001.000000
2ERR188321230.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883212.pickle6.07.00.8571430.895755
3ERR188321432.02011-07-260Day 0 CD1Pre-FMT39years29.3165.1...CD180.1kgwhitefemaleERR1883214.pickle6.06.01.0000001.000000
4ERR188322543.02011-07-2654Donor CD1healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883225.pickle5.05.01.0000001.000000
5ERR188324058.02012-02-14pre-FMTCD9 pre-FMTPre-FMT47years35.51.55...CD985.1kgwhitefemaleERR1883240.pickle4.04.01.0000001.000000
6ERR188325068.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56...CD1383.9kgwhitefemaleERR1883250.pickle5.06.00.8333330.941627
7ERR1883294112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727...CD397.3kgwhitemaleERR1883294.pickle5.07.00.7142860.500427
\n", + "

8 rows Γ— 21 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 63 + } + ], + "source": [ + "manifest" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y4KAJkhIdspQ" + }, + "source": [ + "This will tell you how many taxa were found in the database and what fraction of the total abundance was represented by the database. For most samples, this looks okay (i.e., >70% of abundance represented).\n", + "\n", + "So we now have our community models and can leverage MICOM fully by simulating community growth - let's discuss what we want to look at.\n", + "\n", + "### Microbiome Context\n", + "\n", + "Now that our models are ready to go, let's think about some of the insights we might gain from these samples. First and foremost, we want to investigate the invasion potential of C. diff. How does its ability to invade vary in samples from healthy donors versus individuals with dysbiotic gut microbiomes (pre-FMT)?\n", + "\n", + "Additionally, we can use MICOM to take a mechanistic look at what metabolic strategies are leveraged by C. diff (e.g., what niche(s) does it occupy) in these different contexts.\n", + "\n", + "All that and more, coming up. Stay tuned!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "etrvjwBLkKdR" + }, + "source": [ + "First we need to import our dietary context. For simplicity we will be using a formulation that represents an average western diet, but if information about host diet is known other formulations can be used (e.g., vegetarian or vegan diet). Additional dietary formulations can be found [here]( https://github.com/micom-dev/media/tree/main/media)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 455 + }, + "id": "aJwXAR4PPAkA", + "outputId": "4397913a-b2b6-4059-e355-4226d29a0a90" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " reaction metabolite global_id flux\n", + "reaction \n", + "EX_4abz_m EX_4abz_m 4abz_m EX_4abz(e) 0.1\n", + "EX_4hbz_m EX_4hbz_m 4hbz_m EX_4hbz(e) 0.1\n", + "EX_ac_m EX_ac_m ac_m EX_ac(e) 0.1\n", + "EX_acgam_m EX_acgam_m acgam_m EX_acgam(e) 0.1\n", + "EX_ala_L_m EX_ala_L_m ala_L_m EX_ala_L(e) 0.1\n", + "... ... ... ... ...\n", + "EX_octa_m EX_octa_m octa_m EX_octa(e) 0.0\n", + "EX_adpcbl_m EX_adpcbl_m adpcbl_m EX_adpcbl(e) 0.0\n", + "EX_fe3dcit_m EX_fe3dcit_m fe3dcit_m EX_fe3dcit(e) 0.0\n", + "EX_pydx5p_m EX_pydx5p_m pydx5p_m EX_pydx5p(e) 0.0\n", + "EX_glu_D_m EX_glu_D_m glu_D_m EX_glu_D(e) 0.0\n", + "\n", + "[171 rows x 4 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
reactionmetaboliteglobal_idflux
reaction
EX_4abz_mEX_4abz_m4abz_mEX_4abz(e)0.1
EX_4hbz_mEX_4hbz_m4hbz_mEX_4hbz(e)0.1
EX_ac_mEX_ac_mac_mEX_ac(e)0.1
EX_acgam_mEX_acgam_macgam_mEX_acgam(e)0.1
EX_ala_L_mEX_ala_L_mala_L_mEX_ala_L(e)0.1
...............
EX_octa_mEX_octa_mocta_mEX_octa(e)0.0
EX_adpcbl_mEX_adpcbl_madpcbl_mEX_adpcbl(e)0.0
EX_fe3dcit_mEX_fe3dcit_mfe3dcit_mEX_fe3dcit(e)0.0
EX_pydx5p_mEX_pydx5p_mpydx5p_mEX_pydx5p(e)0.0
EX_glu_D_mEX_glu_D_mglu_D_mEX_glu_D(e)0.0
\n", + "

171 rows Γ— 4 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 64 + } + ], + "source": [ + "from micom.qiime_formats import load_qiime_medium\n", + "medium = load_qiime_medium(\"western_diet_gut_agora.qza\")\n", + "medium" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4s8R4WYUez4g" + }, + "source": [ + "### Growing the models\n", + "Great, now we have our media & our models, it's time to get growing. This will take some time, so we'll use that time as an opportunity to discuss more in depth what these processes do, and what to look for in the results. First, let's run the `grow()` command. This will take the models we've built, and find an optimal solution to the fluxes based upon the medium that's been applied." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3WH8VVrVS4mv" + }, + "source": [ + "If that takes too long or was aborted, we can read it in from the treasure chest." + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34, + "referenced_widgets": [ + "59428de9a88b4204885d03de441cbde3", + "901fb7e8d8c844a8b2e86735ca2bead3" + ] + }, + "id": "IjDguZEcWGjG", + "outputId": "03508c5b-c7fc-46dd-c53b-bbd88dc5c236" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Output()" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "59428de9a88b4204885d03de441cbde3" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [], + "text/html": [ + "
\n"
+            ]
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "\n"
+            ],
+            "text/html": [
+              "
\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "from micom.workflows import grow, save_results\n", + "\n", + "growth = grow(manifest, \"models\",medium, tradeoff=0.8, threads=2)\n", + "\n", + "# We'll save the results to a file\n", + "save_results(growth, \"growth.zip\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rHedHJxHWkjy" + }, + "source": [ + "Again, if that takes too long or was aborted, we can read it in from the treasure chest." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "rcPNBkDpWGrQ" + }, + "outputs": [], + "source": [ + "from micom.workflows import load_results\n", + "\n", + "try: # Will only run if the previous step failed\n", + " growth\n", + "except NameError:\n", + " growth = load_results(\"treasure_chest/growth.zip\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "69gq9QfAzqxq" + }, + "source": [ + "What kind of results did we get? Well, `grow` returns a tuple of 3 data sets:\n", + "\n", + "1. The predicted growth rate for all taxa in all samples\n", + "2. The import and export fluxes for each taxon and the external environment\n", + "3. Annotations for the fluxes mapping to other databases\n", + "\n", + "### πŸ“ˆ Growth Rates\n", + "\n", + "The growth rates are pretty straightforward." + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "2r_XUm7U-HSm", + "outputId": "2ef89987-13a9-48a6-85b0-26dcdcf7ff92" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " abundance growth_rate reactions metabolites taxon \\\n", + "0 0.187908 0.147278 3293 1883 Bacteroides \n", + "1 0.100000 0.078512 1844 1401 Clostridioides \n", + "2 0.130915 0.102472 1986 1472 Faecalibacterium \n", + "3 0.084938 0.066644 2879 1747 Parabacteroides \n", + "4 0.496238 0.389606 2712 1656 Phocaeicola \n", + "5 0.170093 0.248553 3293 1883 Bacteroides \n", + "6 0.071992 0.108048 2235 1371 Barnesiella \n", + "7 0.070653 0.101473 2808 1732 Blautia \n", + "8 0.100000 0.143653 1844 1401 Clostridioides \n", + "9 0.090526 0.129872 1986 1472 Faecalibacterium \n", + "10 0.083122 0.122119 2879 1747 Parabacteroides \n", + "11 0.413614 0.607244 2712 1656 Phocaeicola \n", + "12 0.759954 0.300619 2274 1386 Akkermansia \n", + "13 0.100000 0.144461 1844 1401 Clostridioides \n", + "14 0.055102 0.041183 3532 2001 Clostridium \n", + "15 0.013039 0.009244 2826 1639 Erysipelatoclostridium \n", + "16 0.035175 0.025067 1274 1138 Paeniclostridium \n", + "17 0.036730 0.031724 1652 1308 Veillonella \n", + "18 0.094704 0.133863 3293 1883 Bacteroides \n", + "19 0.092168 0.130290 2808 1732 Blautia \n", + "20 0.111638 0.157821 1844 1401 Clostridioides \n", + "21 0.312443 0.441683 1986 1472 Faecalibacterium \n", + "22 0.241890 0.341913 2712 1656 Phocaeicola \n", + "23 0.147157 0.208032 2860 1805 Streptococcus \n", + "24 0.565087 0.128835 2274 1386 Akkermansia \n", + "25 0.100000 0.377698 1844 1401 Clostridioides \n", + "26 0.088290 0.323804 2197 1602 Fusobacterium \n", + "27 0.246623 0.928642 1652 1308 Veillonella \n", + "28 0.202085 0.267660 2274 1386 Akkermansia \n", + "29 0.246283 0.412257 2808 1732 Blautia \n", + "30 0.105784 0.176446 1844 1401 Clostridioides \n", + "31 0.020161 0.033840 1966 1392 Coprobacillus \n", + "32 0.012706 0.023217 1187 1056 Dialister \n", + "33 0.210121 0.353430 2826 1639 Erysipelatoclostridium \n", + "34 0.014204 0.022333 1207 1105 Flavonifractor \n", + "35 0.013217 0.021691 1369 1170 Lachnospira \n", + "36 0.175438 0.295404 2681 1578 Mediterraneibacter \n", + "37 0.045896 0.069084 2650 1613 Alistipes \n", + "38 0.012559 0.017830 2034 1491 Anaerostipes \n", + "39 0.168400 0.243903 3293 1883 Bacteroides \n", + "40 0.056172 0.083090 2235 1371 Barnesiella \n", + "41 0.027401 0.039184 2808 1732 Blautia \n", + "42 0.100000 0.141583 1844 1401 Clostridioides \n", + "43 0.021236 0.029938 2073 1577 Eubacterium \n", + "44 0.027287 0.038572 1986 1472 Faecalibacterium \n", + "45 0.104009 0.151023 2879 1747 Parabacteroides \n", + "46 0.010732 0.012497 1080 1019 Parasutterella \n", + "47 0.426310 0.619569 2712 1656 Phocaeicola \n", + "48 0.192591 0.360678 1844 1401 Clostridioides \n", + "49 0.197835 0.370503 2197 1602 Fusobacterium \n", + "50 0.194153 0.363601 1206 1068 Megasphaera \n", + "51 0.098416 0.184309 1577 1286 Morganella \n", + "52 0.025775 0.042924 1080 1019 Parasutterella \n", + "53 0.084021 0.156784 2860 1805 Streptococcus \n", + "54 0.207208 0.388049 1652 1308 Veillonella \n", + "\n", + " tradeoff sample_id Unnamed: 0 collection_timestamp day_relative_to_fmt \\\n", + "0 0.8 ERR1883195 12 2011-10-24 26 \n", + "1 0.8 ERR1883195 12 2011-10-24 26 \n", + "2 0.8 ERR1883195 12 2011-10-24 26 \n", + "3 0.8 ERR1883195 12 2011-10-24 26 \n", + "4 0.8 ERR1883195 12 2011-10-24 26 \n", + "5 0.8 ERR1883207 24 2012-01-12 44 \n", + "6 0.8 ERR1883207 24 2012-01-12 44 \n", + "7 0.8 ERR1883207 24 2012-01-12 44 \n", + "8 0.8 ERR1883207 24 2012-01-12 44 \n", + "9 0.8 ERR1883207 24 2012-01-12 44 \n", + "10 0.8 ERR1883207 24 2012-01-12 44 \n", + "11 0.8 ERR1883207 24 2012-01-12 44 \n", + "12 0.8 ERR1883214 32 2011-07-26 0 \n", + "13 0.8 ERR1883214 32 2011-07-26 0 \n", + "14 0.8 ERR1883214 32 2011-07-26 0 \n", + "15 0.8 ERR1883214 32 2011-07-26 0 \n", + "16 0.8 ERR1883214 32 2011-07-26 0 \n", + "17 0.8 ERR1883214 32 2011-07-26 0 \n", + "18 0.8 ERR1883212 30 2012-10-10 135 \n", + "19 0.8 ERR1883212 30 2012-10-10 135 \n", + "20 0.8 ERR1883212 30 2012-10-10 135 \n", + "21 0.8 ERR1883212 30 2012-10-10 135 \n", + "22 0.8 ERR1883212 30 2012-10-10 135 \n", + "23 0.8 ERR1883212 30 2012-10-10 135 \n", + "24 0.8 ERR1883240 58 2012-02-14 pre-FMT \n", + "25 0.8 ERR1883240 58 2012-02-14 pre-FMT \n", + "26 0.8 ERR1883240 58 2012-02-14 pre-FMT \n", + "27 0.8 ERR1883240 58 2012-02-14 pre-FMT \n", + "28 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "29 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "30 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "31 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "32 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "33 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "34 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "35 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "36 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "37 0.8 ERR1883225 43 2011-07-26 54 \n", + "38 0.8 ERR1883225 43 2011-07-26 54 \n", + "39 0.8 ERR1883225 43 2011-07-26 54 \n", + "40 0.8 ERR1883225 43 2011-07-26 54 \n", + "41 0.8 ERR1883225 43 2011-07-26 54 \n", + "42 0.8 ERR1883225 43 2011-07-26 54 \n", + "43 0.8 ERR1883225 43 2011-07-26 54 \n", + "44 0.8 ERR1883225 43 2011-07-26 54 \n", + "45 0.8 ERR1883225 43 2011-07-26 54 \n", + "46 0.8 ERR1883225 43 2011-07-26 54 \n", + "47 0.8 ERR1883225 43 2011-07-26 54 \n", + "48 0.8 ERR1883294 112 2011-09-29 0 \n", + "49 0.8 ERR1883294 112 2011-09-29 0 \n", + "50 0.8 ERR1883294 112 2011-09-29 0 \n", + "51 0.8 ERR1883294 112 2011-09-29 0 \n", + "52 0.8 ERR1883294 112 2011-09-29 0 \n", + "53 0.8 ERR1883294 112 2011-09-29 0 \n", + "54 0.8 ERR1883294 112 2011-09-29 0 \n", + "\n", + " ... host_age host_age_units host_body_mass_index \\\n", + "0 ... Restricted access years Restricted access \n", + "1 ... Restricted access years Restricted access \n", + "2 ... Restricted access years Restricted access \n", + "3 ... Restricted access years Restricted access \n", + "4 ... Restricted access years Restricted access \n", + "5 ... Restricted access years Restricted access \n", + "6 ... Restricted access years Restricted access \n", + "7 ... Restricted access years Restricted access \n", + "8 ... Restricted access years Restricted access \n", + "9 ... Restricted access years Restricted access \n", + "10 ... Restricted access years Restricted access \n", + "11 ... Restricted access years Restricted access \n", + "12 ... 39 years 29.3 \n", + "13 ... 39 years 29.3 \n", + "14 ... 39 years 29.3 \n", + "15 ... 39 years 29.3 \n", + "16 ... 39 years 29.3 \n", + "17 ... 39 years 29.3 \n", + "18 ... Restricted access years Restricted access \n", + "19 ... Restricted access years Restricted access \n", + "20 ... Restricted access years Restricted access \n", + "21 ... Restricted access years Restricted access \n", + "22 ... Restricted access years Restricted access \n", + "23 ... Restricted access years Restricted access \n", + "24 ... 47 years 35.5 \n", + "25 ... 47 years 35.5 \n", + "26 ... 47 years 35.5 \n", + "27 ... 47 years 35.5 \n", + "28 ... 53 years 34.4 \n", + "29 ... 53 years 34.4 \n", + "30 ... 53 years 34.4 \n", + "31 ... 53 years 34.4 \n", + "32 ... 53 years 34.4 \n", + "33 ... 53 years 34.4 \n", + "34 ... 53 years 34.4 \n", + "35 ... 53 years 34.4 \n", + "36 ... 53 years 34.4 \n", + "37 ... Restricted access years Restricted access \n", + "38 ... Restricted access years Restricted access \n", + "39 ... Restricted access years Restricted access \n", + "40 ... Restricted access years Restricted access \n", + "41 ... Restricted access years Restricted access \n", + "42 ... Restricted access years Restricted access \n", + "43 ... Restricted access years Restricted access \n", + "44 ... Restricted access years Restricted access \n", + "45 ... Restricted access years Restricted access \n", + "46 ... Restricted access years Restricted access \n", + "47 ... Restricted access years Restricted access \n", + "48 ... 61 years 32.5 \n", + "49 ... 61 years 32.5 \n", + "50 ... 61 years 32.5 \n", + "51 ... 61 years 32.5 \n", + "52 ... 61 years 32.5 \n", + "53 ... 61 years 32.5 \n", + "54 ... 61 years 32.5 \n", + "\n", + " host_height host_height_units host_subject_id host_weight \\\n", + "0 Restricted access m Donor Restricted access \n", + "1 Restricted access m Donor Restricted access \n", + "2 Restricted access m Donor Restricted access \n", + "3 Restricted access m Donor Restricted access \n", + "4 Restricted access m Donor Restricted access \n", + "5 Restricted access m Donor Restricted access \n", + "6 Restricted access m Donor Restricted access \n", + "7 Restricted access m Donor Restricted access \n", + "8 Restricted access m Donor Restricted access \n", + "9 Restricted access m Donor Restricted access \n", + "10 Restricted access m Donor Restricted access \n", + "11 Restricted access m Donor Restricted access \n", + "12 165.1 m CD1 80.1 \n", + "13 165.1 m CD1 80.1 \n", + "14 165.1 m CD1 80.1 \n", + "15 165.1 m CD1 80.1 \n", + "16 165.1 m CD1 80.1 \n", + "17 165.1 m CD1 80.1 \n", + "18 Restricted access m Donor Restricted access \n", + "19 Restricted access m Donor Restricted access \n", + "20 Restricted access m Donor Restricted access \n", + "21 Restricted access m Donor Restricted access \n", + "22 Restricted access m Donor Restricted access \n", + "23 Restricted access m Donor Restricted access \n", + "24 1.55 m CD9 85.1 \n", + "25 1.55 m CD9 85.1 \n", + "26 1.55 m CD9 85.1 \n", + "27 1.55 m CD9 85.1 \n", + "28 1.56 m CD13 83.9 \n", + "29 1.56 m CD13 83.9 \n", + "30 1.56 m CD13 83.9 \n", + "31 1.56 m CD13 83.9 \n", + "32 1.56 m CD13 83.9 \n", + "33 1.56 m CD13 83.9 \n", + "34 1.56 m CD13 83.9 \n", + "35 1.56 m CD13 83.9 \n", + "36 1.56 m CD13 83.9 \n", + "37 Restricted access m Donor Restricted access \n", + "38 Restricted access m Donor Restricted access \n", + "39 Restricted access m Donor Restricted access \n", + "40 Restricted access m Donor Restricted access \n", + "41 Restricted access m Donor Restricted access \n", + "42 Restricted access m Donor Restricted access \n", + "43 Restricted access m Donor Restricted access \n", + "44 Restricted access m Donor Restricted access \n", + "45 Restricted access m Donor Restricted access \n", + "46 Restricted access m Donor Restricted access \n", + "47 Restricted access m Donor Restricted access \n", + "48 1.727 m CD3 97.3 \n", + "49 1.727 m CD3 97.3 \n", + "50 1.727 m CD3 97.3 \n", + "51 1.727 m CD3 97.3 \n", + "52 1.727 m CD3 97.3 \n", + "53 1.727 m CD3 97.3 \n", + "54 1.727 m CD3 97.3 \n", + "\n", + " host_weight_units race sex \n", + "0 kg Restricted access Restricted access \n", + "1 kg Restricted access Restricted access \n", + "2 kg Restricted access Restricted access \n", + "3 kg Restricted access Restricted access \n", + "4 kg Restricted access Restricted access \n", + "5 kg Restricted access Restricted access \n", + "6 kg Restricted access Restricted access \n", + "7 kg Restricted access Restricted access \n", + "8 kg Restricted access Restricted access \n", + "9 kg Restricted access Restricted access \n", + "10 kg Restricted access Restricted access \n", + "11 kg Restricted access Restricted access \n", + "12 kg white female \n", + "13 kg white female \n", + "14 kg white female \n", + "15 kg white female \n", + "16 kg white female \n", + "17 kg white female \n", + "18 kg Restricted access Restricted access \n", + "19 kg Restricted access Restricted access \n", + "20 kg Restricted access Restricted access \n", + "21 kg Restricted access Restricted access \n", + "22 kg Restricted access Restricted access \n", + "23 kg Restricted access Restricted access \n", + "24 kg white female \n", + "25 kg white female \n", + "26 kg white female \n", + "27 kg white female \n", + "28 kg white female \n", + "29 kg white female \n", + "30 kg white female \n", + "31 kg white female \n", + "32 kg white female \n", + "33 kg white female \n", + "34 kg white female \n", + "35 kg white female \n", + "36 kg white female \n", + "37 kg Restricted access Restricted access \n", + "38 kg Restricted access Restricted access \n", + "39 kg Restricted access Restricted access \n", + "40 kg Restricted access Restricted access \n", + "41 kg Restricted access Restricted access \n", + "42 kg Restricted access Restricted access \n", + "43 kg Restricted access Restricted access \n", + "44 kg Restricted access Restricted access \n", + "45 kg Restricted access Restricted access \n", + "46 kg Restricted access Restricted access \n", + "47 kg Restricted access Restricted access \n", + "48 kg white male \n", + "49 kg white male \n", + "50 kg white male \n", + "51 kg white male \n", + "52 kg white male \n", + "53 kg white male \n", + "54 kg white male \n", + "\n", + "[55 rows x 22 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
abundancegrowth_ratereactionsmetabolitestaxontradeoffsample_idUnnamed: 0collection_timestampday_relative_to_fmt...host_agehost_age_unitshost_body_mass_indexhost_heighthost_height_unitshost_subject_idhost_weighthost_weight_unitsracesex
00.1879080.14727832931883Bacteroides0.8ERR1883195122011-10-2426...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
10.1000000.07851218441401Clostridioides0.8ERR1883195122011-10-2426...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
20.1309150.10247219861472Faecalibacterium0.8ERR1883195122011-10-2426...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
30.0849380.06664428791747Parabacteroides0.8ERR1883195122011-10-2426...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
40.4962380.38960627121656Phocaeicola0.8ERR1883195122011-10-2426...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
50.1700930.24855332931883Bacteroides0.8ERR1883207242012-01-1244...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
60.0719920.10804822351371Barnesiella0.8ERR1883207242012-01-1244...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
70.0706530.10147328081732Blautia0.8ERR1883207242012-01-1244...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
80.1000000.14365318441401Clostridioides0.8ERR1883207242012-01-1244...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
90.0905260.12987219861472Faecalibacterium0.8ERR1883207242012-01-1244...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
100.0831220.12211928791747Parabacteroides0.8ERR1883207242012-01-1244...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
110.4136140.60724427121656Phocaeicola0.8ERR1883207242012-01-1244...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
120.7599540.30061922741386Akkermansia0.8ERR1883214322011-07-260...39years29.3165.1mCD180.1kgwhitefemale
130.1000000.14446118441401Clostridioides0.8ERR1883214322011-07-260...39years29.3165.1mCD180.1kgwhitefemale
140.0551020.04118335322001Clostridium0.8ERR1883214322011-07-260...39years29.3165.1mCD180.1kgwhitefemale
150.0130390.00924428261639Erysipelatoclostridium0.8ERR1883214322011-07-260...39years29.3165.1mCD180.1kgwhitefemale
160.0351750.02506712741138Paeniclostridium0.8ERR1883214322011-07-260...39years29.3165.1mCD180.1kgwhitefemale
170.0367300.03172416521308Veillonella0.8ERR1883214322011-07-260...39years29.3165.1mCD180.1kgwhitefemale
180.0947040.13386332931883Bacteroides0.8ERR1883212302012-10-10135...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
190.0921680.13029028081732Blautia0.8ERR1883212302012-10-10135...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
200.1116380.15782118441401Clostridioides0.8ERR1883212302012-10-10135...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
210.3124430.44168319861472Faecalibacterium0.8ERR1883212302012-10-10135...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
220.2418900.34191327121656Phocaeicola0.8ERR1883212302012-10-10135...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
230.1471570.20803228601805Streptococcus0.8ERR1883212302012-10-10135...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
240.5650870.12883522741386Akkermansia0.8ERR1883240582012-02-14pre-FMT...47years35.51.55mCD985.1kgwhitefemale
250.1000000.37769818441401Clostridioides0.8ERR1883240582012-02-14pre-FMT...47years35.51.55mCD985.1kgwhitefemale
260.0882900.32380421971602Fusobacterium0.8ERR1883240582012-02-14pre-FMT...47years35.51.55mCD985.1kgwhitefemale
270.2466230.92864216521308Veillonella0.8ERR1883240582012-02-14pre-FMT...47years35.51.55mCD985.1kgwhitefemale
280.2020850.26766022741386Akkermansia0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
290.2462830.41225728081732Blautia0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
300.1057840.17644618441401Clostridioides0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
310.0201610.03384019661392Coprobacillus0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
320.0127060.02321711871056Dialister0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
330.2101210.35343028261639Erysipelatoclostridium0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
340.0142040.02233312071105Flavonifractor0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
350.0132170.02169113691170Lachnospira0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
360.1754380.29540426811578Mediterraneibacter0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
370.0458960.06908426501613Alistipes0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
380.0125590.01783020341491Anaerostipes0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
390.1684000.24390332931883Bacteroides0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
400.0561720.08309022351371Barnesiella0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
410.0274010.03918428081732Blautia0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
420.1000000.14158318441401Clostridioides0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
430.0212360.02993820731577Eubacterium0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
440.0272870.03857219861472Faecalibacterium0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
450.1040090.15102328791747Parabacteroides0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
460.0107320.01249710801019Parasutterella0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
470.4263100.61956927121656Phocaeicola0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
480.1925910.36067818441401Clostridioides0.8ERR18832941122011-09-290...61years32.51.727mCD397.3kgwhitemale
490.1978350.37050321971602Fusobacterium0.8ERR18832941122011-09-290...61years32.51.727mCD397.3kgwhitemale
500.1941530.36360112061068Megasphaera0.8ERR18832941122011-09-290...61years32.51.727mCD397.3kgwhitemale
510.0984160.18430915771286Morganella0.8ERR18832941122011-09-290...61years32.51.727mCD397.3kgwhitemale
520.0257750.04292410801019Parasutterella0.8ERR18832941122011-09-290...61years32.51.727mCD397.3kgwhitemale
530.0840210.15678428601805Streptococcus0.8ERR18832941122011-09-290...61years32.51.727mCD397.3kgwhitemale
540.2072080.38804916521308Veillonella0.8ERR18832941122011-09-290...61years32.51.727mCD397.3kgwhitemale
\n", + "

55 rows Γ— 22 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 112 + } + ], + "source": [ + "growth_rates=pd.merge(growth.growth_rates,metadata,on='sample_id')\n", + "growth_rates" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "F5BK7DDv0UfA" + }, + "source": [ + "### ↔️ Exchange Fluxes\n", + "\n", + "More interesting are the exchange fluxes. These reactions represent the import and export of metabolites from the system Let's look at those now:" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 + }, + "id": "lQW2BBS10jdN", + "outputId": "d0ebb86e-549a-4727-8f9c-4461c25eeeca" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " taxon sample_id tolerance reaction flux \\\n", + "0 Bacteroides ERR1883195 0.0001 EX_MGlcn150(e) -0.001865 \n", + "1 Bacteroides ERR1883195 0.0001 EX_MGlcn180(e) -0.001879 \n", + "4 Bacteroides ERR1883195 0.0001 EX_MGlcn81_rl(e) 0.002123 \n", + "5 Bacteroides ERR1883195 0.0001 EX_MGlcn24(e) -0.002457 \n", + "6 Bacteroides ERR1883195 0.0001 EX_MGlcn165(e) 0.004506 \n", + "... ... ... ... ... ... \n", + "22046 medium ERR1883294 0.0001 EX_MGlcn170_rl_m -0.000192 \n", + "22050 medium ERR1883294 0.0001 EX_nmn_m -0.100040 \n", + "22056 medium ERR1883294 0.0001 EX_akg_m 0.000115 \n", + "22070 medium ERR1883294 0.0001 EX_oaa_m 0.000154 \n", + "22078 medium ERR1883294 0.0001 EX_xtsn_m 0.000457 \n", + "\n", + " abundance metabolite direction \n", + "0 0.208787 MGlcn150[e] import \n", + "1 0.208787 MGlcn180[e] import \n", + "4 0.208787 MGlcn81_rl[e] export \n", + "5 0.208787 MGlcn24[e] import \n", + "6 0.208787 MGlcn165[e] export \n", + "... ... ... ... \n", + "22046 NaN MGlcn170_rl_m import \n", + "22050 NaN nmn_m import \n", + "22056 NaN akg_m export \n", + "22070 NaN oaa_m export \n", + "22078 NaN xtsn_m export \n", + "\n", + "[10597 rows x 8 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
taxonsample_idtolerancereactionfluxabundancemetabolitedirection
0BacteroidesERR18831950.0001EX_MGlcn150(e)-0.0018650.208787MGlcn150[e]import
1BacteroidesERR18831950.0001EX_MGlcn180(e)-0.0018790.208787MGlcn180[e]import
4BacteroidesERR18831950.0001EX_MGlcn81_rl(e)0.0021230.208787MGlcn81_rl[e]export
5BacteroidesERR18831950.0001EX_MGlcn24(e)-0.0024570.208787MGlcn24[e]import
6BacteroidesERR18831950.0001EX_MGlcn165(e)0.0045060.208787MGlcn165[e]export
...........................
22046mediumERR18832940.0001EX_MGlcn170_rl_m-0.000192NaNMGlcn170_rl_mimport
22050mediumERR18832940.0001EX_nmn_m-0.100040NaNnmn_mimport
22056mediumERR18832940.0001EX_akg_m0.000115NaNakg_mexport
22070mediumERR18832940.0001EX_oaa_m0.000154NaNoaa_mexport
22078mediumERR18832940.0001EX_xtsn_m0.000457NaNxtsn_mexport
\n", + "

10597 rows Γ— 8 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 102 + } + ], + "source": [ + "growth.exchanges" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Pu5XtkUl1YG1" + }, + "source": [ + "So we see how much of each metabolite is either consumed or produced by each taxon in each sample. `tolerance` denotes the accuracy of the solver and tells you the smallest absolute flux that is likely different form zero (i.e., substantial flux). *All of the fluxes are normalized to 1g dry weight of bacteria*. So, you can directly compare fluxes between taxa, even if they are present at very different abundances.\n", + "\n", + "If you're curious what the abbreviation for each of these metabolites represents, that can be found in the annotations dataframe. For instance, let's find out what `\"tre[e]\"` represents." + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 112 + }, + "id": "DphXa9hw1yxM", + "outputId": "4bf58c2c-2cc4-47b0-e4af-e7e7b827e54d" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " metabolite name molecular_weight C_number N_number \\\n", + "reaction \n", + "EX_tre(e) tre[e] Trehalose 342.29648 12 0 \n", + "\n", + " hmdb inchi kegg.compound pubchem.compound chebi reaction \n", + "reaction \n", + "EX_tre(e) HMDB00975 NaN C01083 7427 NaN EX_tre(e) " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metabolitenamemolecular_weightC_numberN_numberhmdbinchikegg.compoundpubchem.compoundchebireaction
reaction
EX_tre(e)tre[e]Trehalose342.29648120HMDB00975NaNC010837427NaNEX_tre(e)
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 83 + } + ], + "source": [ + "anns = growth.annotations\n", + "anns[anns.metabolite == \"tre[e]\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GVHLD2dm4a6B" + }, + "source": [ + "Trehalose! Interesting, [that's an important metabolite](https://pubmed.ncbi.nlm.nih.gov/34277467/) in the context of CDI! All of these annotations and more information at are also available at https://vmh.life, maintained by Dr. Ines Thiele's lab." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CImtzqRJbbGj" + }, + "source": [ + "\n", + "# πŸ“Š Visualizations\n", + "\n", + "Let's visualize our results. Because of the rich output of these models, it can be overwhelming to represent it all, but don't worry! There are tools in place for this already.\n", + "\n", + "We will use the standard visualizations included in MICOM. These tools take in the growth results we obtained before and create visualizations in standalone HTML files that bundle the plots and raw data and can be viewed directly in your browser.\n", + "\n", + "First, let's look at the growth rates of each taxon across samples." + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": { + "id": "EaplMHFLcMT7" + }, + "outputs": [], + "source": [ + "from micom.viz import *\n", + "\n", + "viz = plot_growth(growth, filename=\"growthrates.html\")" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Normally, we could call `viz.view()` afterwards and it would open it in our web browser. However, this will not work in Colab. However, the plot function creates the file `growth_rates_[DATE].html` in your `materials` folder. To open it, simply download that file and view it in your web browser. We can see that there are many things going on, but it's not super clear. Let's continue." + ], + "metadata": { + "id": "_sjNIuCSXkyb" + } + }, + { + "cell_type": "markdown", + "source": [ + "We're interested in understanding the invasion potential of C. diff so lets extract the predicted C. diff growth rates. In addition to C. diff growth rate we can also look at what fraction of the community growth rate this represents.\n", + "\n" + ], + "metadata": { + "id": "qPTCyw-7RqFm" + } + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 436 + }, + "id": "9YlWytSp-yKI", + "outputId": "c77dda37-1dd1-4ccf-a99c-cdb1519c5e8a" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " abundance growth_rate reactions metabolites taxon tradeoff \\\n", + "1 0.100000 0.078512 1844 1401 Clostridioides 0.8 \n", + "8 0.100000 0.143653 1844 1401 Clostridioides 0.8 \n", + "13 0.100000 0.144461 1844 1401 Clostridioides 0.8 \n", + "20 0.111638 0.157821 1844 1401 Clostridioides 0.8 \n", + "25 0.100000 0.377698 1844 1401 Clostridioides 0.8 \n", + "30 0.105784 0.176446 1844 1401 Clostridioides 0.8 \n", + "42 0.100000 0.141583 1844 1401 Clostridioides 0.8 \n", + "48 0.192591 0.360678 1844 1401 Clostridioides 0.8 \n", + "\n", + " sample_id Unnamed: 0 collection_timestamp day_relative_to_fmt ... \\\n", + "1 ERR1883195 12 2011-10-24 26 ... \n", + "8 ERR1883207 24 2012-01-12 44 ... \n", + "13 ERR1883214 32 2011-07-26 0 ... \n", + "20 ERR1883212 30 2012-10-10 135 ... \n", + "25 ERR1883240 58 2012-02-14 pre-FMT ... \n", + "30 ERR1883250 68 2011-12-23 pre-FMT ... \n", + "42 ERR1883225 43 2011-07-26 54 ... \n", + "48 ERR1883294 112 2011-09-29 0 ... \n", + "\n", + " host_age_units host_body_mass_index host_height host_height_units \\\n", + "1 years Restricted access Restricted access m \n", + "8 years Restricted access Restricted access m \n", + "13 years 29.3 165.1 m \n", + "20 years Restricted access Restricted access m \n", + "25 years 35.5 1.55 m \n", + "30 years 34.4 1.56 m \n", + "42 years Restricted access Restricted access m \n", + "48 years 32.5 1.727 m \n", + "\n", + " host_subject_id host_weight host_weight_units race \\\n", + "1 Donor Restricted access kg Restricted access \n", + "8 Donor Restricted access kg Restricted access \n", + "13 CD1 80.1 kg white \n", + "20 Donor Restricted access kg Restricted access \n", + "25 CD9 85.1 kg white \n", + "30 CD13 83.9 kg white \n", + "42 Donor Restricted access kg Restricted access \n", + "48 CD3 97.3 kg white \n", + "\n", + " sex abundance_weighted_growth_rate \n", + "1 Restricted access 0.007851 \n", + "8 Restricted access 0.014365 \n", + "13 female 0.014446 \n", + "20 Restricted access 0.017619 \n", + "25 female 0.037770 \n", + "30 female 0.018665 \n", + "42 Restricted access 0.014158 \n", + "48 male 0.069463 \n", + "\n", + "[8 rows x 23 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
abundancegrowth_ratereactionsmetabolitestaxontradeoffsample_idUnnamed: 0collection_timestampday_relative_to_fmt...host_age_unitshost_body_mass_indexhost_heighthost_height_unitshost_subject_idhost_weighthost_weight_unitsracesexabundance_weighted_growth_rate
10.1000000.07851218441401Clostridioides0.8ERR1883195122011-10-2426...yearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access0.007851
80.1000000.14365318441401Clostridioides0.8ERR1883207242012-01-1244...yearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access0.014365
130.1000000.14446118441401Clostridioides0.8ERR1883214322011-07-260...years29.3165.1mCD180.1kgwhitefemale0.014446
200.1116380.15782118441401Clostridioides0.8ERR1883212302012-10-10135...yearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access0.017619
250.1000000.37769818441401Clostridioides0.8ERR1883240582012-02-14pre-FMT...years35.51.55mCD985.1kgwhitefemale0.037770
300.1057840.17644618441401Clostridioides0.8ERR1883250682011-12-23pre-FMT...years34.41.56mCD1383.9kgwhitefemale0.018665
420.1000000.14158318441401Clostridioides0.8ERR1883225432011-07-2654...yearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access0.014158
480.1925910.36067818441401Clostridioides0.8ERR18832941122011-09-290...years32.51.727mCD397.3kgwhitemale0.069463
\n", + "

8 rows Γ— 23 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 121 + } + ], + "source": [ + "cdiff = growth_rates[growth_rates.taxon=='Clostridioides'].copy()\n", + "cdiff" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Now that we've extracted the C. diff specific growth rates lets take a look at how they compare between patients with healthy and disbiotic gut microbiomes" + ], + "metadata": { + "id": "bQKYxSZTSPk1" + } + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 468 + }, + "id": "AWG3U094-_OI", + "outputId": "ef7e9ff0-9348-48ba-af7f-d05c65ad91d6" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 122 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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AABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMp1EEoIULFyo2NlY2m03Jycnatm3beduuWrVKSUlJCg0NVWBgoBITE7Vy5UqXNoZhKCsrS5GRkfL391dKSoq++uqrhj4NAABwhfB6AMrNzVVmZqZmzpypHTt2qHv37kpNTdWhQ4dqbd+qVSs9/vjjys/P12effaaMjAxlZGTogw8+cLaZN2+eXnjhBS1evFhbt25VYGCgUlNTVVlZeblOCwAANGJeD0ALFizQxIkTlZGRoWuvvVaLFy9WQECAXn755VrbDxw4UCNGjFDXrl3VqVMnPfzww0pISNDmzZslnR79ycnJ0R//+EcNGzZMCQkJWrFihQ4cOKA1a9ZcxjMDAACNlVcDUFVVlbZv366UlBTnOh8fH6WkpCg/P/+i+xuGIbvdrj179uimm26SJO3du1fFxcUufYaEhCg5Ofm8fTocDpWVlbksAACg6fJqADpy5Iiqq6sVHh7usj48PFzFxcXn3a+0tFRBQUHy8/PTLbfcohdffFG/+tWvJMm5X336zM7OVkhIiHOJiYm5lNMCAACNnNcvgbmjRYsW2rlzpz7++GM99dRTyszMVF5entv9TZ8+XaWlpc5l3759nisWAAA0Os28efCwsDD5+vqqpKTEZX1JSYkiIiLOu5+Pj4/i4uIkSYmJidq9e7eys7M1cOBA534lJSWKjIx06TMxMbHW/qxWq6xW6yWeDQAAuFJ4dQTIz89PvXr1kt1ud66rqamR3W7XDTfcUOd+ampq5HA4JEkdOnRQRESES59lZWXaunVrvfoEAABNl1dHgCQpMzNTd911l5KSktSnTx/l5OSooqJCGRkZkqT09HRFR0crOztb0un5OklJSerUqZMcDofef/99rVy5UosWLZIkWSwWTZkyRU8++aQ6d+6sDh06aMaMGYqKitLw4cO9dZoAAKAR8XoAGjNmjA4fPqysrCwVFxcrMTFR69atc05iLiwslI/PTwNVFRUVeuCBB1RUVCR/f3916dJFr776qsaMGeNs89hjj6miokL33Xefjh8/rn79+mndunWy2WyX/fwAAEDjYzEMw/B2EY1NWVmZQkJCVFpaquDgYG+XA+AKcvLkSQ0ZMkSStGTAUVl9vVwQ0Ag4qqWJm1pLktauXSt/f/8GOU59/n5fkd8CAwAAuBQEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDrNvF0AADQlhmE4XzuqvVgI0Iic/Vk4+zPiTQQgAPAgh8PhfD1pc2svVgI0Tg6HQwEBAd4ug0tgAADAfBgBAgAPslqtztcv9Tsqq68XiwEaCUf1TyOiZ39GvIkABAAeZLFYnK+tviIAAT9z9mfEm7gEBgAATIcABAAATIcABAAATOeSAlBVVZX27NmjU6dOeaoeAACABudWAPrhhx90zz33KCAgQN26dVNhYaEk6aGHHtLcuXM9WiAAAICnuRWApk+frk8//VR5eXmy2WzO9SkpKcrNzfVYcQAAAA3Bra/Br1mzRrm5ubr++utdvs7WrVs3FRQUeKw4AACAhuDWCNDhw4fVtm3bc9ZXVFQ0mu/3AwAAnI9bASgpKUnvvfee8/2Z0LN06VLdcMMNnqkMAACggbh1Cezpp5/WkCFDtGvXLp06dUp/+tOftGvXLm3ZskWbNm3ydI0AAAAe5dYIUL9+/bRz506dOnVK8fHxWr9+vdq2bav8/Hz16tXL0zUCAAB4lNvPAuvUqZOWLFniyVoAAAAuC7dGgHx9fXXo0KFz1h89elS+vjz5DwAANG5uBSDDMGpd73A45Ofnd0kFAQAANLR6XQJ74YUXJJ3+1tfSpUsVFBTk3FZdXa1//OMf6tKlS72LWLhwoZ599lkVFxere/fuevHFF9WnT59a2y5ZskQrVqzQv//9b0lSr1699PTTT7u0nzBhgl555RWX/VJTU7Vu3bp61wYAAJqeegWg559/XtLpEaDFixe7XO7y8/NTbGysFi9eXK8CcnNzlZmZqcWLFys5OVk5OTlKTU3Vnj17ar3XUF5enm6//Xb17dtXNptNzzzzjAYPHqwvvvhC0dHRznZpaWlatmyZ873Vaq1XXQAAoOmqVwDau3evJOkXv/iFVq1apZYtW15yAQsWLNDEiROVkZEhSVq8eLHee+89vfzyy/r9739/TvvXXnvN5f3SpUv19ttvy263Kz093bnearUqIiLikusDAABNj1tzgP7+9797JPxUVVVp+/btSklJ+akgHx+lpKQoPz+/Tn388MMP+vHHH9WqVSuX9Xl5eWrbtq2uueYa3X///Tp69Oh5+3A4HCorK3NZAABA0+X21+CLior0zjvvqLCwUFVVVS7bFixYUKc+jhw5ourqaoWHh7usDw8P15dfflmnPn73u98pKirKJUSlpaXptttuU4cOHVRQUKA//OEPGjJkiPLz82v9llp2draeeOKJOh0PAABc+dwKQHa7Xbfeeqs6duyoL7/8Utddd52+/fZbGYahnj17errG85o7d67eeOONc55KP3bsWOfr+Ph4JSQkqFOnTsrLy9OgQYPO6Wf69OnKzMx0vi8rK1NMTEzDFg8AALzGrUtg06dP17Rp0/T555/LZrPp7bff1r59+zRgwACNHj26zv2EhYXJ19dXJSUlLutLSkouOn9n/vz5mjt3rtavX6+EhIQLtu3YsaPCwsL09ddf17rdarUqODjYZQEAAE2XWwFo9+7dzgnHzZo108mTJxUUFKTZs2frmWeeqXM/fn5+6tWrl+x2u3NdTU2N7Hb7BR+qOm/ePM2ZM0fr1q1TUlLSRY9TVFSko0ePKjIyss61AQCApsutABQYGOic9xMZGamCggLntiNHjtSrr8zMTC1ZskSvvPKKdu/erfvvv18VFRXOb4Wlp6dr+vTpzvbPPPOMZsyYoZdfflmxsbEqLi5WcXGxysvLJUnl5eV69NFH9c9//lPffvut7Ha7hg0bpri4OKWmprpzugAAoIlxaw7Q9ddfr82bN6tr1666+eabNXXqVH3++edatWqVrr/++nr1NWbMGB0+fFhZWVkqLi5WYmKi1q1b55wYXVhYKB+fn3LaokWLVFVVpVGjRrn0M3PmTM2aNUu+vr767LPP9Morr+j48eOKiorS4MGDNWfOHO4FBAAAJEkW43zPtbiAb775RuXl5UpISFBFRYWmTp2qLVu2qHPnzlqwYIHat2/fELVe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zNy5c/XGG28oLy9PNpvN7X6mT5+uzMxM5/uysjJCEAAATZhbAei///u/FRoaqu3bt2v79u0u2ywWS50DUFhYmHx9fVVSUuKyvqSkRBERERfcd/78+Zo7d642btzo8hT6M/uVlJQoMjLSpc/ExMRa+7JarbJarXWqGQAAXPncCkB79+71yMH9/PzUq1cv2e12DR8+XNLpSdB2u12TJk06737z5s3TU089pQ8++EBJSUku2zp06KCIiAjZ7XZn4CkrK9PWrVt1//33e6RuAABwZXMrAJ19uehsFotFNptNcXFxGjZsmHNi8sX6uuuuu5SUlKQ+ffooJydHFRUVysjIkCSlp6crOjpa2dnZkqRnnnlGWVlZev311xUbG+uc1xMUFKSgoCBZLBZNmTJFTz75pDp37qwOHTpoxowZioqKcoYsAABgbm4FoH/961/asWOHqqurdc0110iS/vOf/8jX11ddunTRn//8Z02dOlWbN2/Wtddee8G+xowZo8OHDysrK0vFxcVKTEzUunXrnJOYCwsL5ePz01ztRYsWqaqqSqNGjXLpZ+bMmZo1a5Yk6bHHHlNFRYXuu+8+HT9+XP369dO6desuaZ4QAABoOup9HyBJysnJ0Ycffqhly5Y5v2dfWlqqe++9V/369dPEiRM1btw4nTx5Uh988IHHi25o3AcIgLu4DxBwriZxHyBJevbZZzVnzhyXzkNCQjRr1izNmzdPAQEBysrKOmeCNAAAQGPgVgAqLS2t9VEVhw8fdt5EMDQ0VFVVVZdWHQAAQANwKwANGzZMd999t1avXq2ioiIVFRVp9erVuueee5wTjbdt26arr77ak7UCAAB4hFuToP/yl7/okUce0dixY3Xq1KnTHTVrprvuukvPP/+8JKlLly5aunSp5yoFAADwELcCUFBQkJYsWaLnn39e33zzjSSpY8eOCgoKcrY5300HAQAAvM2tAHRGUFCQy12YAQAArgRuzQECAAC4khGAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6TTzdgEA0FQ5qi2SDG+XYVqGIVXVnH7t5yNZLN6tx8xOfxYaFwIQADSQSZtbebsEAOfBJTAAAGA6jAABgAfZbDatXbvW22VAUmVlpUaMGCFJWr16tWw2m5crgqRG83MgAAGAB1ksFvn7+3u7DPyMzWbj5wIXXAIDAACmQwACAACmQwACAACmQwACAACmQwACAACmQwACAACmQwACAACmw32A4DbDMFRZWentMi6JYRhyOBySJKvVKksTeFiQzWZrEucBAA2JAAS3VVZWasiQId4uAz+zdu1abvgGABfBJTAAAGA6jADBbU3hmUdN8VlBTeEcAKChEYDgtqb2zCOeFQQA5sElMAAAYDqNIgAtXLhQsbGxstlsSk5O1rZt287b9osvvtDIkSMVGxsri8WinJycc9rMmjVLFovFZenSpUsDngEAALiSeD0A5ebmKjMzUzNnztSOHTvUvXt3paam6tChQ7W2/+GHH9SxY0fNnTtXERER5+23W7duOnjwoHPZvHlzQ50CAAC4wng9AC1YsEATJ05URkaGrr32Wi1evFgBAQF6+eWXa23fu3dvPfvssxo7dqysVut5+23WrJkiIiKcS1hYWEOdAgAAuMJ4NQBVVVVp+/btSklJca7z8fFRSkqK8vPzL6nvr776SlFRUerYsaPGjx+vwsLC87Z1OBwqKytzWQAAQNPl1QB05MgRVVdXKzw83GV9eHi4iouL3e43OTlZy5cv17p167Ro0SLt3btX/fv314kTJ2ptn52drZCQEOcSExPj9rEBAEDj5/VLYA1hyJAhGj16tBISEpSamqr3339fx48f15tvvllr++nTp6u0tNS57Nu37zJXDAAALiev3gcoLCxMvr6+KikpcVlfUlJywQnO9RUaGqqrr75aX3/9da3brVbrBecTeVpTeIZWU3H2z4GfSePB88wANDSvBiA/Pz/16tVLdrtdw4cPlyTV1NTIbrdr0qRJHjtOeXm5CgoKdOedd3qsz0vBM7QapzN3hIb38TwzAA3N63eCzszM1F133aWkpCT16dNHOTk5qqioUEZGhiQpPT1d0dHRys7OlnR64vSuXbucr/fv36+dO3cqKChIcXFxkqRp06Zp6NChat++vQ4cOKCZM2fK19dXt99+u3dOEgAANCpeD0BjxozR4cOHlZWVpeLiYiUmJmrdunXOidGFhYXy8flpqtKBAwfUo0cP5/v58+dr/vz5GjBggPLy8iRJRUVFuv3223X0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y4MABNTCYrFozZo13i4DaNImTJggi8Uii8UiPz8/xcXFafbs2Tp16lSDHefs5euvv3bZ/tvf/vacfR988EFZLBZNmDBBkmrt5+xl1qxZHq0dDYcbIQIAvCYtLU3Lli2Tw+HQ+++/rwcffFDNmzfX9OnTXdpVVVXJz8/vko9ztjZt2jhfx8TE6I033tDzzz8vf39/SVJlZaVef/11tWvXztnu4MGDzte5ubnKysrSnj17nOuCgoLcrhGXFyNAuCLU1NToscceU6tWrRQREeHyf1nHjx/XvffeqzZt2ig4OFi//OUv9emnnzq3FxQUaNiwYQoPD1dQUJB69+6tjRs3nvdYsbGxkqQRI0bIYrE435+xcuVKxcbGKiQkRGPHjnU+O27FihVq3bq1HA6HS/vhw4frzjvvvLR/AKCJslqtioiIUPv27XX//fcrJSVF77zzjiZMmKDhw4frqaeeUlRUlK655hpJ0r59+/TrX/9aoaGhatWqlYYNG6Zvv/22zsc5e/H19XVu79mzp2JiYrRq1SrnulWrVqldu3bq0aOHc93Z+4eEhMhisbisIwBdOQhAuCK88sorCgwM1NatWzVv3jzNnj1bGzZskCSNHj1ahw4d0tq1a7V9+3b17NlTgwYN0vfffy9JKi8v18033yy73a5//etfSktL09ChQ1VYWFjrsT7++GNJ0rJly3Tw4EHne+l0mFqzZo3effddvfvuu9q0aZPmzp3rrKO6ulrvvPOOs/2hQ4f03nvv6e67726QfxegqfH391dVVZUkyW63a8+ePdqwYYPeffdd/fjjj0pNTVWLFi304Ycf6qOPPlJQUJDS0tKc+1yKu+++22WU6OWXX1ZGRsYl94vGiQCEK0JCQoJmzpypzp07Kz09XUlJSbLb7dq8ebO2bdumv/3tb0pKSlLnzp01f/58hYaG6q233pIkde/eXb/5zW903XXXqXPnzpozZ446derkElTOdmZYPDQ0VBERES7D5DU1NVq+fLmuu+469e/fX3feeafsdruk07+4x40b5/IL9NVXX1W7du00cODABvqXAZoGwzC0ceNGffDBB/rlL38pSQoMDNTSpUvVrVs3devWTbm5uaqpqdHSpUsVHx+vrl27atmyZSosLFReXt4F+3/33XcVFBTkXEaPHn1OmzvuuEObN2/Wd999p++++04fffSR7rjjjoY4XTQCzAHCFSEhIcHlfWRkpA4dOqRPP/1U5eXlat26tcv2kydPqqCgQNLpEaBZs2bpvffe08GDB3Xq1CmdPHnyvCNAFxIbG6sWLVqcU8cZEydOVO/evbV//35FR0dr+fLlzgmWAM51Jpj8+OOPqqmp0bhx4zRr1iw9+OCDio+Pd5n38+mnn+rrr792+QxKp+fqFBQU6MMPP9SQIUOc6//yl79o/PjxkqRf/OIXWrRokXNbYGDgObW0adNGt9xyi5YvXy7DMHTLLbcoLCzM06eMRoIAhCtC8+bNXd5bLBbV1NSovLxckZGRtf7fX2hoqCRp2rRp2rBhg+bPn6+4uDj5+/tr1KhRbg2Zn6+OM3r06KHu3btrxYoVGjx4sL744gu999579T4OYBZngomfn5+ioqLUrNlPf5Z+HlLKy8vVq1cvvfbaa+f006ZNG/n5+Wnnzp3OdeHh4S59xcXFXbSeu+++W5MmTZIkLVy4sL6ngysIAQhXtJ49e6q4uFjNmjU7Z7LyGR999JEmTJigESNGSDr9S/RikyabN2+u6upqt2q69957lZOTo/379yslJUUxMTFu9QOYQV2DiXT6856bm6u2bdsqODi41jZ17et8zswnslgsSk1NvaS+0LgxBwhXtJSUFN1www0aPny41q9fr2+//VZbtmzR448/rk8++USS1LlzZ61atUo7d+7Up59+qnHjxrmM2tQmNjZWdrtdxcXFOnbsWL1qGjdunIqKirRkyRImPwMeNH78eIWFhWnYsGH68MMPtXfvXuXl5Wny5MkqKiryyDF8fX21e/du7dq1y+VbYmh6CEC4olksFr3//vu66aablJGRoauvvlpjx47Vd9995xz+XrBggVq2bKm+fftq6NChSk1NVc+ePS/Y73PPPacNGzYoJibG5SuwdRESEqKRI0cqKChIw4cPd/fUAPxMQECA/vGPf6hdu3a67bbb1LVrV91zzz2qrKw874iQO4KDgz3aHxonngYPNIBBgwapW7dueuGFF7xdCgCgFgQgwIOOHTumvLw8jRo1Srt27XLevA0A0LgwCRrwoB49eujYsWN65plnCD8A0IgxAgQAAEyHSdAAAMB0CEAAAMB0CEAAAMB0CEAAAMB0CEAAAMB0CEAAPGrgwIGaMmWKpNOPFMnJyfFqPQBQGwIQgAbz8ccf67777vN2GQ3OYrFozZo19d6PgAh4DzdCBNBg2rRp4+0SAKBWjAABcFtFRYXS09MVFBSkyMhIPffccy7bzx7hMAxDs2bNUrt27WS1WhUVFaXJkyc72zocDk2bNk3R0dEKDAxUcnKy8vLynNuPHj2q22+/XdHR0QoICFB8fLz+53/+x+V4b731luLj4+Xv76/WrVsrJSVFFRUVzu1Lly5V165dZbPZ1KVLF/35z3+u03lWVVVp0qRJioyMlM1mU/v27ZWdne08R0kaMWKELBaL831BQYGGDRum8PBwBQUFqXfv3tq4caOzz4EDB+q7777TI488IovFIovF4ty2efNm9e/fX/7+/oqJidHkyZNdzgPApSMAAXDbo48+qk2bNul///d/tX79euXl5WnHjh21tn377bf1/PPP6y9/+Yu++uorrVmzRvHx8c7tkyZNUn5+vt544w199tlnGj16tNLS0vTVV19JkiorK9WrVy+99957+ve//6377rtPd955p7Zt2yZJOnjwoG6//Xbdfffd2r17t/Ly8nTbbbfpzM3uX3vtNWVlZempp57S7t279fTTT2vGjBl65ZVXLnqeL7zwgt555x29+eab2rNnj1577TVn0Pn4448lScuWLdPBgwed78vLy3XzzTfLbrfrX//6l9LS0jR06FAVFhZKklatWqWrrrpKs2fP1sGDB3Xw4EFJp4NTWlqaRo4cqc8++0y5ubnavHmzJk2aVN8fD4ALMQDADSdOnDD8/PyMN99807nu6NGjhr+/v/Hwww8bhmEY7du3N55//nnDMAzjueeeM66++mqjqqrqnL6+++47w9fX19i/f7/L+kGDBhnTp08/bw233HKLMXXqVMMwDGP79u2GJOPbb7+ttW2nTp2M119/3WXdnDlzjBtuuOGi5/rQQw8Zv/zlL42amppat0syVq9efdF+unXrZrz44ovO92f/+5xxzz33GPfdd5/Lug8//NDw8fExTp48edFjAKgbRoAAuKWgoEBVVVVKTk52rmvVqtV5HwI7evRonTx5Uh07dtTEiRO1evVqnTp1SpL0+eefq7q6WldffbWCgoKcy6ZNm1RQUCBJqq6u1pw5cxQfH69WrVopKChIH3zwgXNEpXv37ho0aJDi4+M1evRoLVmyRMeOHZN0+lJdQUGB7rnnHpf+n3zySWf/FzJhwgTt3LlT11xzjSZPnqz169dfdJ/y8nJNmzZNXbt2VWhoqIKCgrR7925nvefz6aefavny5S51pqamqqamRnv37r3ocQHUDZOgAVwWMTEx2rNnjzZu3KgNGzbogQce0LPPPqtNmzapvLxcvr6+2r59u3x9fV32CwoKkiQ9++yz+tOf/qScnBzFx8crMDBQU6ZMUVVVlSTJ19dXGzZs0JYtW7R+/Xq9+OKLevzxx7V161YFBARIkpYsWeIS2M7sdzE9e/bU3r17tXbtWm3cuFG//vWvlZKSorfeeuu8+0ybNk0bNmzQ/PnzFRcXJ39/f40aNcpZ7/mUl5frN7/5jcv8qDPatWt30VoB1A0BCIBbOnXqpObNm2vr1q3OP8zHjh3Tf/7zHw0YMKDWffz9/TV06FANHTpUDz74oLp06aLPP/9cPXr0UHV1tQ4dOqT+/fvXuu9HH32kYcOG6Y477pAk1dTU6D//+Y+uvfZaZxuLxaIbb7xRN954o7KystS+fXutXr1amZmZioqK0jfffKPx48e7db7BwcEaM2aMxowZo1GjRiktLU3ff/+9WrVqpebNm6u6uvqceidMmKARI0ZIOh1svv32W5c2fn5+5+zXs2dP7dq1S3FxcW7VCaBuCEAA3BIUFKR77rlHjz76qFq3bq22bdvq8ccfl49P7VfWly9frurqaiUnJysgIECvvvqq/P391b59e7Vu3Vrjx49Xenq6nnvuOfXo0UOHDx+W3W5XQkKCbrnlFnXu3FlvvfWWtmzZopYtW2rBggUqKSlxBqCtW7fKbrdr8ODBatu2rbZu3arDhw+ra9eukqQnnnhCkydPVkhIiNLS0uRwOPTJJ5/o2LFjyszMvOC5LliwQJGRkerRo4d8fHz0t7/9TREREQoNDZV0+ptgdrtdN954o6xWq1q2bKnOnTtr1apVGjp0qCwWi2bMmKGamhqXfmNjY/WPf/xDY8eOldVqVVhYmH73u9/p+uuv16RJk3TvvfcqMDBQu3bt0oYNG/TSSy9d4k8NgJO3JyEBuHKdOHHCuOOOO4yAgAAjPDzcmDdvnjFgwIBaJ0GvXr3aSE5ONoKDg43AwEDj+uuvNzZu3Ojsq6qqysjKyjJiY2ON5s2bG5GRkcaIESOMzz77zDCM0xOshw0bZgQFBRlt27Y1/vjHPxrp6enGsGHDDMMwjF27dhmpqalGmzZtDKvValx99dUuE44NwzBee+01IzEx0fDz8zNatmxp3HTTTcaqVasuep5//etfjcTERCMwMNAIDg42Bg0aZOzYscO5/Z133jHi4uKMZs2aGe3btzcMwzD27t1r/OIXvzD8/f2NmJgY46WXXnL5tzEMw8jPzzcSEhIMq9VqnP3reNu2bcavfvUrIygoyAgMDDQSEhKMp556qq4/FgB1YDGM//uOKAAAgEnwLTAAAGA6BCAApvf000+7fO387GXIkCHeLg9AA+ASGADT+/777/X999/Xus3f31/R0dGXuSIADY0ABAAATIdLYAAAwHQIQAAAwHQIQAAAwHQIQAAAwHQIQAAAwHQIQAAAwHQIQAAAwHQIQAAAwHT+P1ttMFgeFqLpAAAAAElFTkSuQmCC\n" + }, + "metadata": {} + } + ], + "source": [ + "import seaborn as sns\n", + "sns.boxplot(x='disease_state',y='growth_rate',data=cdiff)" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Looks like C. diff is predicted to grow in all samples but its predicted growth rate is ~2x higher in the Pre-FMT samples. You can see there is also a decent amount of variation in the Pre-FMT results." + ], + "metadata": { + "id": "MEuym_PVui-k" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "G1JbbKrLcVye" + }, + "source": [ + "## Growth niches\n", + "\n", + "Another thing we can look at is whether individual taxa inhabit different growth niches across different disease contexts. Here we can use the `plot_exchanges_per_taxon` function to see how exchanges differ within and between taxa, within and across human populations." + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": { + "id": "NlZrfv38esj8", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "6df836fd-71ac-4cfd-fd1c-883e9d31f311" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 89 + } + ], + "source": [ + "plot_exchanges_per_taxon(growth, perplexity=4, direction=\"import\", filename=\"niche.html\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qXnbUCCs2yVG" + }, + "source": [ + "\n", + "This function projects the full set of import or export fluxes onto a two dimensional plane, and arranges taxa so that more similar flux patterns lie nearer together. Taxa closer to one another compete for a more similar set of resources (and/or produce a more similar set of metabolites). The center of the plot signifies a more competitive nutrient space, whereas clusters on the outskirts denote more isolated niches.\n", + "\n", + "You can tune [TSNE parameters](https://distill.pub/2016/misread-tsne/), such as perplexity, to get a more meaningful grouping. We will lower the perplexity here since we don't have a lot of data points.\n" + ] + }, + { + "cell_type": "markdown", + "source": [ + "One small take away from this analysis is the speration between C. diff pre- and post- FMT samples, suggesting that C. diff may leverage different metabolic strategies in these contexts. Lets take a closer look at this..." + ], + "metadata": { + "id": "weoSaLDPZYAK" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4Y_XfHkB4sO8" + }, + "source": [ + "## Comparative Metabolomics\n", + "\n", + "Now let's compare the metabolomic imports between the two disease contexts. We're interested to see how the metabolomic profile of the microbiome changes when the disease state changes, as changes in microbiome context can lead to changes in host succeptibility to infection. To look into this deeper, we'll transform the microbiome import data and then plot the metabolite exports on a heatmap." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pAtec3I78DJJ" + }, + "source": [ + "We can use the `consumption_rates` function in MICOM to calculate consumption rates from the growth results. This will tell us what the patient microbiomes are consuming and provide additional insight into available niches. To visualize the results we'll run a centered log ratio transformation on the data, to account for the compositional nature of these data and compare all the fluxes against each other. Importantly, here we consider the consumption rates for samples with no C. diff present to understand how the initial state of the patient microbiomes may influence invasion potential." + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": { + "id": "DJAsxjnFdajN", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 486 + }, + "outputId": "59b69294-cdef-4fdf-a5fa-5f1d8cab1cde" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "disease_state Pre-FMT healthy \\\n", + "sample_id ERR1883214 ERR1883240 ERR1883250 ERR1883294 ERR1883195 \n", + "name \n", + "D-glucose -3.253101 -3.564477 -2.064038 -3.972573 4.450353 \n", + "acetate 2.572101 3.594739 4.306373 4.539524 -2.642172 \n", + "Water 2.966225 -3.584166 3.043172 -3.972573 4.497614 \n", + "D-Fructose 3.219760 -3.584166 -0.695070 -3.972573 3.268810 \n", + "pyruvate -3.404889 3.505223 -3.497278 3.022735 -2.642172 \n", + "... ... ... ... ... ... \n", + "Thiamin -3.404889 -2.773089 -2.982110 -3.403379 -2.388275 \n", + "Spermidine -3.404889 -2.445104 -2.992604 -3.250518 -2.374584 \n", + "Fe2+ -2.838896 -2.091063 -2.203376 -2.370595 -1.778976 \n", + "Putrescine -3.404889 -2.848543 -3.087577 -3.295817 -2.353273 \n", + "Menaquinone 8 -2.873638 -3.295815 -2.979719 -3.351557 -2.276149 \n", + "\n", + "disease_state \n", + "sample_id ERR1883207 ERR1883212 ERR1883225 \n", + "name \n", + "D-glucose 4.493531 3.416515 4.569671 \n", + "acetate -2.772490 -3.668369 -2.625105 \n", + "Water 4.280483 3.763363 4.354428 \n", + "D-Fructose 3.253561 2.612354 3.276231 \n", + "pyruvate -2.772490 -3.668369 -2.625105 \n", + "... ... ... ... \n", + "Thiamin -2.444364 -2.939826 -2.378889 \n", + "Spermidine -2.445049 -2.936479 -2.376260 \n", + "Fe2+ -1.820472 -2.611296 -1.668659 \n", + "Putrescine -2.438953 -2.912851 -2.400161 \n", + "Menaquinone 8 -2.471199 -3.185775 -2.625105 \n", + "\n", + "[647 rows x 8 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disease_statePre-FMThealthy
sample_idERR1883214ERR1883240ERR1883250ERR1883294ERR1883195ERR1883207ERR1883212ERR1883225
name
D-glucose-3.253101-3.564477-2.064038-3.9725734.4503534.4935313.4165154.569671
acetate2.5721013.5947394.3063734.539524-2.642172-2.772490-3.668369-2.625105
Water2.966225-3.5841663.043172-3.9725734.4976144.2804833.7633634.354428
D-Fructose3.219760-3.584166-0.695070-3.9725733.2688103.2535612.6123543.276231
pyruvate-3.4048893.505223-3.4972783.022735-2.642172-2.772490-3.668369-2.625105
...........................
Thiamin-3.404889-2.773089-2.982110-3.403379-2.388275-2.444364-2.939826-2.378889
Spermidine-3.404889-2.445104-2.992604-3.250518-2.374584-2.445049-2.936479-2.376260
Fe2+-2.838896-2.091063-2.203376-2.370595-1.778976-1.820472-2.611296-1.668659
Putrescine-3.404889-2.848543-3.087577-3.295817-2.353273-2.438953-2.912851-2.400161
Menaquinone 8-2.873638-3.295815-2.979719-3.351557-2.276149-2.471199-3.185775-2.625105
\n", + "

647 rows Γ— 8 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 103 + } + ], + "source": [ + "from micom.measures import consumption_rates\n", + "import numpy as np\n", + "no_cdiff_growth = load_results(\"treasure_chest/no-cdiff-growth.zip\") # Load growth results with no C. diff invasion\n", + "exchanges = consumption_rates(no_cdiff_growth) # extract consumption rates\n", + "exchanges=pd.merge(exchanges,metadata,on='sample_id') # add metadata\n", + "exchanges = pd.pivot_table( # convert to a matrix of samples vs. metabolites\n", + " exchanges, # that contains the production rates\n", + " index = ['disease_state','sample_id'],\n", + " columns = 'name',\n", + " values = 'flux'\n", + ")\n", + "exchanges = exchanges.T.fillna(0.0) # if a metabolite is not produced its flux is zero\n", + "exchanges = exchanges.apply( # ...and a CLR transform again, normalizes the fluxes\n", + " lambda xs: np.log(xs + 0.001) - np.log(xs.mean() + 0.001),\n", + " axis=0)\n", + "exchanges = exchanges.reindex( # sort by variance, highest variance fluxes first\n", + " exchanges.var(axis = 1).sort_values(ascending=False).index\n", + ")\n", + "\n", + "exchanges" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nYuc7Wu38nYd" + }, + "source": [ + "We can use seaborn to plot our heatmap:" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": { + "id": "YHnKeFuF3qAt", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "outputId": "06c5b995-06e9-48ca-fd7e-25e5998af6e0" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 104 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAASmCAYAAABY5IZfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdfVzN9/8/8McpnK6FdcXSEZWkVLQNQyyKsTDLLJLrq7SiseaiYjqYy2YuZpTr2AX2cZHR5CJGmGQlFsks18NCp4vT7w8/7++Oik7n1KnT4367ndut83q/Xq/38318P/ue53ldiUpKSkpARERERERUSTqaDoCIiIiIiGo3JhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKSSespUlt+yr6o41ELH8rKmQ6BaIjw8HPn5+ZoOg4jUSE9PD1KpVNNhEBHVScolFZBXVRxqwWEXqqj8/HwsXbpU02EQkRqFhoZqOgQiojpLqaSiuKRmJxVKPQwREREREamFUt/Di1BcVXGohVjTARARERER1UFKjlSUVFUcRERERERUSym5poJJBRERERERKVJupIJJBRERERERvYQjFUREREREpBKlkopCrqkgIiIiIqKXcPoTERERERGpRKnz4opLavarsubPnw+RSISQkJDKd0JEREREVEcpuaZC+6SkpGDNmjVwcXHRdChERERERLWSciMVENXol7Ly8vLg7++PtWvXolGjRkq3JyIiIiIipRdqK//FvTrJZDLIZDKFMrFYDLG47LO2J02ahPfffx9eXl748ssvqyNEIiIiIiKto1UjFVKpFA0bNlR4SaXSMp8lPj4e586dK/c6ERERERFVjHJrKmr4SEV4eDimTJmiUFbWKMWNGzfw6aef4uDBg9DT06uu8IiIiIiItJKSW8rW7KTiVVOd/uvs2bO4c+cO3N3dhbLi4mIcPXoUK1asgEwmg66ublWGSkRERESkNZRMKpSaLVVjvffee0hLS1MoGzFiBFq3bo3p06czoSAiIiIiUoJWTX+qKGNjY7Rt21ahzNDQEE2aNClVTkREREREr6ZUUlFQwl/wiYiIiIhIkZKH32nH9KeyJCUlaToEIiIiIqJaSasWahMRERERUfVTLqko0d6RCiIiIiIiqhwlpz9xpIKIiIiIiBQpuVBbqepERERERFQHcKE2ERERERGpRMk1FZz+REREREREiurkidpERERERKQ+Sp6ozaSCiIiIiIgUcaSCiIiIiIhUolRSUViiW1VxEBERERFRLcXD74iIiIiISCU8/I6IiIiIiFTCkQoiIiIiIlIJF2oTEREREZFKuFCbiIiIiIhUwnMqiIiIiIhIJUpOf+JCbSIiIiIiUsSRCiIiIiIiUglHKoiI6qDw8HDk5+drOgy1unPnDkJDQzUdhlrp6elBKpVqOgwiotdSbqG2XKnqRERUQ+Xn52Pp0qWaDoNeQ9uSJCLSXjz8joiIiIiIVMLD74iIiIiISCVKLtTmSAURERERESniidpERERERKQSjlQQEREREZFKlNv9qUS3quIgIiIiIqJaiiMVRERERESkEp6oTUREREREKuGJ2kREREREpBJOfyIiIiIiIpUolVQUcaE2ERERERG9RMkTtTlSQUREREREirhQm4iIiIiIVMI1FUREREREpBLlkgru/kRERERERC/hSAUREREREalEud2f5Nz9iYiIiIiIFHH6ExERERERqYTTn4iIiIiISCVK7RErLxHV6JcypFIpPDw8YGxsDHNzc/Tv3x+ZmZlK9UFERERERHU4qThy5AgmTZqE3377DQcPHkRhYSF69eqFJ0+eKNUPEREREVFdp9xCbS06/C4hIUHhfVxcHMzNzXH27Fl07dpVQ1EREREREdU+XFPx/z169AgA0LhxYw1HQkRERERUu2hVUiGTySCTyRTKxGIxxGLxK9vJ5XKEhISgc+fOaNu2bVWGSERERESkdbRqTYVUKkXDhg0VXlKp9LXPNWnSJFy8eBHx8fGV/iCJiIiIiOoqrRqpCA8Px5QpUxTKXjdKERQUhD179uDo0aN48803qzI8IiIiIiKtpFRSUVzDF2pXZKrTCyUlJZg8eTJ27tyJpKQktGjRooqjIyIiIiLSTlo1UqGMSZMmYevWrdi9ezeMjY1x69YtAEDDhg2hr6+v4eiIiIiIiGoPpZKKEi1KKlatWgUA8PT0VCiPjY1FYGBg9QdERERERFRL1dmRipKSEk2HQERERESkFersSAUREREREalHnR2pINWFh4cjPz9f02FUyp07dxAaGqrpMJSmp6dXoW2SiYiIiKqTkrs/Mamg/5Ofn4+lS5dqOow6pTYmQkRERKT9OP2JiIiIiIhUwulPRERERESkEiVHKqoqDCIiIiIiqq04/YmIiIiIiFSi3EJtuU5VxUFERERERLUUpz8REREREZFKOP2JiIiIiIhUwqSCiIiIiIhUolxSUVVREBERERFRrcWRCiIiIiIiUolySYWcSQURERERESni7k9ERERERKQSTn8iIiIiIiKVKJVUgEkFERERwsPDkZ+fX+X3uXPnDkJDQ6v8PgCgp6cHqVRaLfciIu3D6U9ERERKys/Px9KlSzUdhlpVV/JCRNqJC7WJiIiIiEglSk5/qqIoiIiIiIio1uJCbSIiIiIiUglHKoiIiIiISCXKJRXgSAURERERESlSLqmQV1EURERERERUa/GcCiIiIiIiUgnPqSAiIiIiIpVwoTYRUQ1RXac0A9V3UjNPaSYiqhs4/YmIqIbgKc1ERFRbKZVUiDhSQUREREREL1Fy9yeOVBARERERkSKuqSAiIiIiIpUwqSAiIiIiIpUwqSAiIiIiIpVw9yciIiIiIlKJcrs/yasqDCIiIiIiqq10NB0AERERERHVbjyngugl1XmqsbKq6xTkyuLpyURERHUT11QQvUQbTzWuLjU54SEiIqKqw92fiIiIiIhIJUwqiIiIiIhIJUot1BbJa/arMr755htIJBLo6enh7bffxunTpyvXERERERFRHaXc7k8lNfylpO3bt2PKlCmIiIjAuXPn0K5dO3h7e+POnTvKd0ZEREREVEcpN1JRUrNfylqyZAnGjBmDESNGoE2bNli9ejUMDAywfv165TsjIiIiIqqjlBypENXslxIKCgpw9uxZeHl5/d+HoaMDLy8vnDx5Uqm+iIiIiIjqMq1aqC2TySCTyRTKxGIxxGJxqbr37t1DcXExLCwsFMotLCxw6dKlKo2TiIiIiEibaNVCbalUioYNGyq8eBAXEREREVHV0qoTtcPDwzFlyhSFsrJGKQDgjTfegK6uLm7fvq1Qfvv2bVhaWlZZjERERERE2kardn8Si8UwMTFReJWXVDRo0ADt27dHYmKiUCaXy5GYmIiOHTsq9bEQEREREdVlWrWmQllTpkzB8OHD0aFDB7z1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APbu3YvLly8jLCwMADBx4kQMHz4cPj4+aNWqFbKysnDgwAFcv34do0aNemzX2bNnIzAwEHXq1IHRaMT333+PUqVKmT5dL1++PGJjY9GoUSO4uLigWLFiCA0NRUxMDKKjo2EwGDBu3LiHPuUvX748duzYgW7dusHFxQXFixfHW2+9hfr162PYsGEYMGAAPDw8cOzYMWzatAnz5s2z+rnNz8+Hs7MzPvnkEwwePBhHjhzB5MmTrXmpH+vs2bMYNWoUBg0ahIMHD+KTTz556C5g90VGRqJBgwbo0KEDZsyYgcqVK+PChQtYu3YtOnbsaPXUpTfffBPTp09HaGgoqlatitmzZyM9Pb0QWhER0dOK11QQaWjmzJl4/vnnER0djcjISDRu3BgREREFPtbX1xcLFixAo0aNULNmTWzevBk///wz/P39Ady7e1KfPn0wevRoVKlSBR06dMD+/ftNZ0H++9//Ijw8HFFRUWjWrBlKlSpltnKyt7c3duzYgTZt2qBy5cr473//i1mzZqF169YAgAEDBmDhwoVYvHgxatSogaZNm2LJkiWoUKHCE3t6eXlhxowZqFu3Lp599lmcOXMG69atMw2gZs2ahU2bNiE4OBh16tQBcG8gUqxYMTRs2BDR0dGIiop66BP0SZMm4cyZM6hYsaJpTY+aNWti+/btSExMxPPPP486depg/PjxCAoKemS+xz23JUqUwJIlS/D999+jWrVqmD59Oj788MMndrZUnz59kJmZieeeew5Dhw7Fm2+++cgFDw0GA9atW4cmTZrg1VdfReXKldGtWzekpKSgZMmSVv/Zo0ePRu/evdG3b180aNAAXl5epjNDRESkJ4MQvHk4EZFOmjVrhtq1a3NVcCIiKjI8U0FERERERHbhoIKInlp/vU3rg7/uT5+iv98zzzzzyNfhm2++kR2PiIieApz+RERPrWvXrj1yRWc3NzeULl26iBP9M6WkpCAnJ6fAYyVLloSXl1cRJyIioqcNBxVERERERGQXTn8iIiIiIiK7cFBBRERERER24aCCiIiIiIjswkEFERERERHZhYMKIiIiIiKyCwcVRERERERkFw4qiIiIiIjILhxUEBERERGRXf4fCHvBvS4HZqoAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ], + "source": [ + "import seaborn as sns\n", + "import numpy as np\n", + "\n", + "sns.clustermap(\n", + " exchanges.head(50), # take 50 highest fluxes\n", + " cmap = 'viridis',\n", + " yticklabels = True, # show all metabolite names\n", + " figsize = (8, 12) # size of the heatmap\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b1i2LStZiUst" + }, + "source": [ + "We can see here that the disease context is important - there are significant differences in consumption rates between the healthy and pre-fmt microbiomes. These differences may why C. diff can exploit the pre-FMT microbiomes and achieve higher predicted growth rates." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "l8maOr3w2bOo" + }, + "source": [ + "# 🏫 Exercises" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Time for you to try your hand at some analysis, lets take a closer looks at the metabolic strategies used by C. diff" + ], + "metadata": { + "id": "XZt3ojssnCzz" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VjUustQG2_bX" + }, + "source": [ + "## Metabolic strategies used by C. diff\n", + "We've alread looked at the community wide consumption fluxes in the absencence of C. diff and found that they differ between disease contexts. What about the import fluxes of C. diff specifically? Can you develop a visualization to look at those?" + ] + }, + { + "cell_type": "code", + "source": [ + "# Your code here" + ], + "metadata": { + "id": "zrUZSSp62uUt" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CsqIRTbC7doD" + }, + "source": [ + "# πŸ”΅ Addendum\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hycoXNTi5xsH" + }, + "source": [ + "## Choosing a tradeoff value\n", + "\n", + "Even if you don't have growth rates available you can still use your data to choose a decent tradeoff value. This can be done by choosing the largest tradeoff value that still allows growth for the majority of the taxa that you observed in the sample (if they are present at an appreciable abundance, they should be able to grow). This can be done with the `tradeoff` workflow in MICOM that will run cooperative tradeoff with varying tradeoff values, which can be visualized with the `plot_tradeoff` function." + ] + }, + { + "cell_type": "code", + "source": [ + "manifest" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 454 + }, + "id": "I8NnkbnymxoE", + "outputId": "41feea98-0cfb-4fe5-c0d6-3fa11631782e" + }, + "execution_count": 123, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " sample_id Unnamed: 0 collection_timestamp day_relative_to_fmt \\\n", + "0 ERR1883195 12.0 2011-10-24 26 \n", + "1 ERR1883207 24.0 2012-01-12 44 \n", + "2 ERR1883212 30.0 2012-10-10 135 \n", + "3 ERR1883214 32.0 2011-07-26 0 \n", + "4 ERR1883225 43.0 2011-07-26 54 \n", + "5 ERR1883240 58.0 2012-02-14 pre-FMT \n", + "6 ERR1883250 68.0 2011-12-23 pre-FMT \n", + "7 ERR1883294 112.0 2011-09-29 0 \n", + "\n", + " description disease_state host_age host_age_units \\\n", + "0 Donor 11 healthy Restricted access years \n", + "1 Donor 12 healthy Restricted access years \n", + "2 Donor 14 healthy Restricted access years \n", + "3 Day 0 CD1 Pre-FMT 39 years \n", + "4 Donor CD1 healthy Restricted access years \n", + "5 CD9 pre-FMT Pre-FMT 47 years \n", + "6 CD13 pre-FMT Pre-FMT 53 years \n", + "7 Day 0 CD3 Pre-FMT 61 years \n", + "\n", + " host_body_mass_index host_height ... host_subject_id \\\n", + "0 Restricted access Restricted access ... Donor \n", + "1 Restricted access Restricted access ... Donor \n", + "2 Restricted access Restricted access ... Donor \n", + "3 29.3 165.1 ... CD1 \n", + "4 Restricted access Restricted access ... Donor \n", + "5 35.5 1.55 ... CD9 \n", + "6 34.4 1.56 ... CD13 \n", + "7 32.5 1.727 ... CD3 \n", + "\n", + " host_weight host_weight_units race sex \\\n", + "0 Restricted access kg Restricted access Restricted access \n", + "1 Restricted access kg Restricted access Restricted access \n", + "2 Restricted access kg Restricted access Restricted access \n", + "3 80.1 kg white female \n", + "4 Restricted access kg Restricted access Restricted access \n", + "5 85.1 kg white female \n", + "6 83.9 kg white female \n", + "7 97.3 kg white male \n", + "\n", + " file found_taxa total_taxa found_fraction \\\n", + "0 ERR1883195.pickle 4.0 4.0 1.000000 \n", + "1 ERR1883207.pickle 6.0 6.0 1.000000 \n", + "2 ERR1883212.pickle 5.0 6.0 0.833333 \n", + "3 ERR1883214.pickle 2.0 2.0 1.000000 \n", + "4 ERR1883225.pickle 4.0 4.0 1.000000 \n", + "5 ERR1883240.pickle 3.0 3.0 1.000000 \n", + "6 ERR1883250.pickle 4.0 5.0 0.800000 \n", + "7 ERR1883294.pickle 4.0 6.0 0.666667 \n", + "\n", + " found_abundance_fraction \n", + "0 1.000000 \n", + "1 1.000000 \n", + "2 0.884172 \n", + "3 1.000000 \n", + "4 1.000000 \n", + "5 1.000000 \n", + "6 0.935141 \n", + "7 0.444919 \n", + "\n", + "[8 rows x 21 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sample_idUnnamed: 0collection_timestampday_relative_to_fmtdescriptiondisease_statehost_agehost_age_unitshost_body_mass_indexhost_height...host_subject_idhost_weighthost_weight_unitsracesexfilefound_taxatotal_taxafound_fractionfound_abundance_fraction
0ERR188319512.02011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883195.pickle4.04.01.0000001.000000
1ERR188320724.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883207.pickle6.06.01.0000001.000000
2ERR188321230.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883212.pickle5.06.00.8333330.884172
3ERR188321432.02011-07-260Day 0 CD1Pre-FMT39years29.3165.1...CD180.1kgwhitefemaleERR1883214.pickle2.02.01.0000001.000000
4ERR188322543.02011-07-2654Donor CD1healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883225.pickle4.04.01.0000001.000000
5ERR188324058.02012-02-14pre-FMTCD9 pre-FMTPre-FMT47years35.51.55...CD985.1kgwhitefemaleERR1883240.pickle3.03.01.0000001.000000
6ERR188325068.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56...CD1383.9kgwhitefemaleERR1883250.pickle4.05.00.8000000.935141
7ERR1883294112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727...CD397.3kgwhitemaleERR1883294.pickle4.06.00.6666670.444919
\n", + "

8 rows Γ— 21 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 123 + } + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": { + "id": "8_1jesZTHYra", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51, + "referenced_widgets": [ + "d450a2f0b9de425990f12bc7a5631782", + "af7b0c394a064469a6f7e8216b197336" + ] + }, + "outputId": "b86ed405-c9b6-499c-b124-0915e21af8fa" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Output()" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "d450a2f0b9de425990f12bc7a5631782" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [], + "text/html": [ + "
\n"
+            ]
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "\n"
+            ],
+            "text/html": [
+              "
\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 149 + } + ], + "source": [ + "from micom.workflows import tradeoff\n", + "import micom\n", + "\n", + "tradeoff_results = tradeoff(manifest, \"models\", medium, threads=2)\n", + "tradeoff_results.to_csv(\"tradeoff.csv\", index=False)\n", + "\n", + "plot_tradeoff(tradeoff_results, tolerance=1e-4)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y9703vhK6d6c" + }, + "source": [ + "After opeing `tradeoff_[DATE].html` you will see that, for our example here, all tradeoff values work great. This is because we modeled very few taxa, which keeps the compettion down. If you would allow for fewer abundant taxa in the models, this would change drastically. For instance, here is an example from a colorectal cancer data set:\n", + "\n", + "[![tradeoff example](https://micom-dev.github.io/micom/_images/tradeoff.png)](https://micom-dev.github.io/micom/_static/tradeoff.html)\n", + "\n", + "You can see how not using the cooperative tradeoff would give you nonsense results where only 10% of all observed taxa grew. A tradeoff value of 0.6-0.8 would probably be a good choice for this particular data set." + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "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" + }, + "vscode": { + "interpreter": { + "hash": "c991a7ed881363492957ff225bb30af9d5174cd8515a21cbef71fcaa303e4050" + } + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "37b0134de4bd4fe38c1afe7bc2bbdc59": { + "model_module": "@jupyter-widgets/output", + "model_name": "OutputModel", + "model_module_version": "1.0.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/output", + "_model_module_version": "1.0.0", + "_model_name": "OutputModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/output", + "_view_module_version": "1.0.0", + "_view_name": "OutputView", + "layout": "IPY_MODEL_bc2776a5195f4a8c8dda0e22e2fd9ea3", + "msg_id": "", + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "Running \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:05:08\u001b[0m\n", + "text/html": "
Running ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:05:08\n
\n" + }, + "metadata": {} + } + ] + } + }, + "bc2776a5195f4a8c8dda0e22e2fd9ea3": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "59428de9a88b4204885d03de441cbde3": { + "model_module": "@jupyter-widgets/output", + "model_name": "OutputModel", + "model_module_version": "1.0.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/output", + "_model_module_version": "1.0.0", + "_model_name": "OutputModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/output", + "_view_module_version": "1.0.0", + "_view_name": "OutputView", + "layout": "IPY_MODEL_901fb7e8d8c844a8b2e86735ca2bead3", + "msg_id": "", + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "Running \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:09:32\u001b[0m\n", + "text/html": "
Running ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:09:32\n
\n" + }, + "metadata": {} + } + ] + } + }, + "901fb7e8d8c844a8b2e86735ca2bead3": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d450a2f0b9de425990f12bc7a5631782": { + "model_module": "@jupyter-widgets/output", + "model_name": "OutputModel", + "model_module_version": "1.0.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/output", + "_model_module_version": "1.0.0", + "_model_name": "OutputModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/output", + "_view_module_version": "1.0.0", + "_view_name": "OutputView", + "layout": "IPY_MODEL_af7b0c394a064469a6f7e8216b197336", + "msg_id": "", + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "Running \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:32:42\u001b[0m\n", + "text/html": "
Running ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:32:42\n
\n" + }, + "metadata": {} + } + ] + } + }, + "af7b0c394a064469a6f7e8216b197336": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/micom_2023_solutions.ipynb b/micom_2023_solutions.ipynb new file mode 100644 index 0000000..ec7efaa --- /dev/null +++ b/micom_2023_solutions.ipynb @@ -0,0 +1,9112 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "C0vqP4LJ9y6K" + }, + "source": [ + "# 🧫🦠 Modeling microbiota-wide metabolism with MICOM\n", + "\n", + "This notebook will accompany the second session of the 2023 ISB Microbiome Course. The presentation slides can be [found here](https://gibbons-lab.github.io/isb_course_2023/micom).\n", + "\n", + "You can save your own local copy of this notebook by using `File > Save a copy in Drive`. You may be promted to cetify the notebook is safe. We promise that it is 🀞\n", + "\n", + "**Disclaimer:**\n", + "The linear and quadratic programming problems MICOM has to solve are very large and very complicated. There are some very good commercial solvers that are very expensive (even though they are often free for academic use). To make this tutorial as accessible as possible we will use the Open Source solver [OSQP](https://osqp.org/), which is installed along with MICOM. OSQP is amazing with quadratic programming problems (kudos!) but not as accurate for linear problems. Solvers usually only guarantee a solution within a certain numerical tolerance of the real solution. In order to make everything work with OSQP this tolerance has to be relaxed to about 10-3. This means that any result with an absolute value smaller than that might very well be zero so we should look at larger values only. Installing cost-free academic versions of commercial solvers like [IBM CPLEX](https://www.ibm.com/analytics/cplex-optimizer) or [Gurobi](https://www.gurobi.com/) would alow you to lower the tolerance to 10-6.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qgBBl4GtuTuX" + }, + "source": [ + "# πŸ“ Setup\n", + "\n", + "MICOM installation is is usually pretty straight-forward and can be as easy as typing `pip install micom` into your Terminal.\n", + "\n", + "First let's start by downloading the materials again and switching to the folder." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ckON4xr3_bW5" + }, + "outputs": [], + "source": [ + "!git clone https://github.com/gibbons-lab/isb_course_2023 materials\n", + "!cd materials\n", + "!ls" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "is6fmBUeorwv" + }, + "source": [ + "## Basic Installation\n", + "\n", + "Installing MICOM is straight-forward in Python. OSQP itself will be installed automatically along with it." + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "M_TeC5yrst3h", + "outputId": "c3cb59af-6caf-4eda-f0f4-b20f4d19ae49" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m832.5/832.5 kB\u001b[0m \u001b[31m9.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m31.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m37.4/37.4 MB\u001b[0m \u001b[31m22.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m45.5/45.5 kB\u001b[0m \u001b[31m3.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.7/75.7 kB\u001b[0m \u001b[31m7.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m138.3/138.3 kB\u001b[0m \u001b[31m12.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m8.0/8.0 MB\u001b[0m \u001b[31m71.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m112.9/112.9 kB\u001b[0m \u001b[31m9.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.3/2.3 MB\u001b[0m \u001b[31m49.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m76.0/76.0 kB\u001b[0m \u001b[31m6.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m526.7/526.7 kB\u001b[0m \u001b[31m28.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m4.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDone! πŸŽ‰ \n" + ] + } + ], + "source": [ + "!pip install -q micom\n", + "\n", + "print(\"Done! πŸŽ‰ \")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6oJrxxz6tV9T" + }, + "source": [ + "## Enable QIIME 2 interactions\n", + "\n", + "Before we start, we also need to install packages to read the \"biom\" file format used by QIIME 2 to save tables. This is only necessary if you want to read QIIME 2 FeatureTable artifacts (like the ones we constructed yesterday)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5rZX7SK_toLp", + "outputId": "9cc5af18-c4de-486e-cb03-8f01bacf92a5" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m12.0/12.0 MB\u001b[0m \u001b[31m41.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDone! πŸŽ‰ \n" + ] + } + ], + "source": [ + "!pip install -q numpy Cython biom-format\n", + "\n", + "print(\"Done! πŸŽ‰ \")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oPy1f-WLI0lZ" + }, + "source": [ + "Okay, all done. So let's get started building some models πŸ¦ΊπŸ› d😁.\n", + "\n", + "# πŸ’» MICOM\n", + "\n", + "We will use the Python interface to MICOM since it plays nicely with Colaboratory. However, you could run the same steps within the QIIME 2 MICOM plugin ([q2-micom](https://library.qiime2.org/plugins/q2-micom/26/)).\n", + "\n", + "Here is an overview of all the steps and functions across both interfaces:\n", + "![micom overview](https://github.com/micom-dev/q2-micom/raw/706f583a060b91c12c0cec7acea2354fdd0dd320/docs/assets/overview.png)\n", + "\n", + "The process of building a metabolic model in MICOM begins with constructing a combined abundance/taxonomy table, referred to hereafter as a taxonomy table. Let's load a sample taxonomy table to see what it looks like:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "UV9SObSQkSZh", + "outputId": "2b3f71ac-8873-45fb-9352-961177f76c6a" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " id genus species reactions \\\n", + "0 Escherichia_coli_1 Escherichia Escherichia coli 0 95 \n", + "1 Escherichia_coli_2 Escherichia Escherichia coli 1 95 \n", + "2 Escherichia_coli_3 Escherichia Escherichia coli 2 95 \n", + "3 Escherichia_coli_4 Escherichia Escherichia coli 3 95 \n", + "0 Escherichia_coli_1 Escherichia Escherichia coli 0 95 \n", + "\n", + " metabolites sample_id abundance \n", + "0 72 sample_1 96 \n", + "1 72 sample_1 48 \n", + "2 72 sample_1 708 \n", + "3 72 sample_1 622 \n", + "0 72 sample_2 120 " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idgenusspeciesreactionsmetabolitessample_idabundance
0Escherichia_coli_1EscherichiaEscherichia coli 09572sample_196
1Escherichia_coli_2EscherichiaEscherichia coli 19572sample_148
2Escherichia_coli_3EscherichiaEscherichia coli 29572sample_1708
3Escherichia_coli_4EscherichiaEscherichia coli 39572sample_1622
0Escherichia_coli_1EscherichiaEscherichia coli 09572sample_2120
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 51 + } + ], + "source": [ + "from micom.data import test_data\n", + "\n", + "test_data().head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "AEk7yfd1lbYp" + }, + "source": [ + "In this taxonomy table, we see four identical strains of _E. coli_ (1 through 4), across two samples (sample_1 and sample_2). We can see that each row represents a single taxon in a single sample, and the `abundance` column identifies the abundance of that taxon in the sample.\n", + "\n", + "The `id` column specifies identifiers for the taxa and should be expressive and not include spaces or special characters. Since we are using a taxonomy database to build our models (more on that soon), we don't need a `file` column.\n", + "\n", + "You might notice that this dataframe looks very different from what we generated in yesterday's tutorial, where we ended up with separate QIIME 2 artifacts 😱\n", + "\n", + "No worries, we can deal with that.\n", + "\n", + "## Importing data from QIIME 2\n", + "\n", + "MICOM can read QIIME 2 artifacts. You don't even need to have QIIME 2 installed for that! But before we do so, let's resolve one issue. We discussed that MICOM summarizes genome-scale models into pangenome-scale models as a first step, but our data are on the ASV level...so how will we know what to summarize?\n", + "\n", + "Basically, a specific model database can be used to quickly summarize pangenome-scale models for use within MICOM. So, before we read our data we have to decide which model database to use. We will go with the [AGORA database](https://pubmed.ncbi.nlm.nih.gov/27893703/), which is a curated database of more than 800 bacterial strains that commonly live in the human gut. In particular, we will use a version of this database summarized on the genus rank which can be downloaded from the [MICOM data repository](https://doi.org/10.5281/zenodo.3755182), which contains a whole lot of prebuilt databases. This database is available from the materials folder that we previously cloned." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_57iya0D3L6-" + }, + "source": [ + "Now we're all set to start building models! The data we previously collected can be found in the `treasure_chest` folder, so we can use those files to build our taxonomy for MICOM." + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "id": "o0vBAiiqqPLC" + }, + "outputs": [], + "source": [ + "from micom.taxonomy import qiime_to_micom\n", + "\n", + "tax = qiime_to_micom(\n", + " \"dada2/table.qza\",\n", + " \"taxa.qza\",\n", + " collapse_on=\"genus\"\n", + ")" + ] + }, + { + "cell_type": "code", + "source": [ + "tax.sample_id.unique()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TkOm89mQbwXa", + "outputId": "a6093f5e-a2c8-4bf3-9e3f-bb925b81bf98" + }, + "execution_count": 53, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array(['ERR1883195', 'ERR1883207', 'ERR1883214', 'ERR1883240',\n", + " 'ERR1883250', 'ERR1883212', 'ERR1883225', 'ERR1883294'],\n", + " dtype=object)" + ] + }, + "metadata": {}, + "execution_count": 53 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-TQ6Zp7wouk4" + }, + "source": [ + "Notice the `collapse_on` argument. That will specify the rank on which to sumarize and can be a list of several ranks. When matching taxonomy you can either match by the particular rank of interest (for example, just comparing genus names here), or you could compare the entire taxonomy, which will require all taxonomic ranks prior to the target rank to match. For that you cloud specify `collapse_on=[\"kingdom\", \"phylum\", \"class\", \"order\", \"family\", \"genus\"]`.\n", + "\n", + "Taxonomic names will often not match 100% between databases. For instance, the genus name \"Prevotella\" in one database may be \"Prevotella_6\" in another. The more ranks you use for matching the more likely you are to run into these issues. However, the more taxonomic ranks you use to match the more confident you can be that your observed taxon really is the same taxon as the one in the model database.\n", + "\n", + "The resulting table will contain the same abundances but it will include more ranks if `collapse_on` is a list. All ranks present in the taxonomy will be used when matching to the database. We will stick with the \"lax\" option of only matching on genus ranks.\n", + "\n", + "Let's now take a look at the taxonomy table we generated:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "R5zwLVFcNTbq" + }, + "source": [ + "That looks more like the example! Again, we have a row for each taxon in each sample, so we're good to go.\n", + "\n", + "One helpful thing to do is to merge in our metadata, so we'll have it at hand for the following steps. In our case, the metadata will include the ethnic group, region, and subsistence type of each of the study participants." + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 548 + }, + "id": "X9hqoO4go0h1", + "outputId": "6d3ff6a9-7c37-4c52-ff4f-5ae39aef4cd7", + "collapsed": true + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " sample_id abundance genus id relative \\\n", + "0 ERR1883195 6.0 Akkermansia Akkermansia 0.000116 \n", + "1 ERR1883195 17971.0 Phocaeicola Phocaeicola 0.346522 \n", + "2 ERR1883195 5.0 Veillonella Veillonella 0.000096 \n", + "3 ERR1883195 4741.0 Faecalibacterium Faecalibacterium 0.091417 \n", + "4 ERR1883195 576.0 Mediterraneibacter Mediterraneibacter 0.011107 \n", + ".. ... ... ... ... ... \n", + "344 ERR1883294 5.0 Stomatobaculum Stomatobaculum 0.000926 \n", + "345 ERR1883294 3.0 Lancefieldella Lancefieldella 0.000556 \n", + "346 ERR1883294 3.0 Tumebacillus Tumebacillus 0.000556 \n", + "347 ERR1883294 3.0 Tropheryma Tropheryma 0.000556 \n", + "348 ERR1883294 2.0 Mogibacterium Mogibacterium 0.000370 \n", + "\n", + " Unnamed: 0 collection_timestamp day_relative_to_fmt description \\\n", + "0 12 2011-10-24 26 Donor 11 \n", + "1 12 2011-10-24 26 Donor 11 \n", + "2 12 2011-10-24 26 Donor 11 \n", + "3 12 2011-10-24 26 Donor 11 \n", + "4 12 2011-10-24 26 Donor 11 \n", + ".. ... ... ... ... \n", + "344 112 2011-09-29 0 Day 0 CD3 \n", + "345 112 2011-09-29 0 Day 0 CD3 \n", + "346 112 2011-09-29 0 Day 0 CD3 \n", + "347 112 2011-09-29 0 Day 0 CD3 \n", + "348 112 2011-09-29 0 Day 0 CD3 \n", + "\n", + " disease_state host_age host_age_units host_body_mass_index \\\n", + "0 healthy Restricted access years Restricted access \n", + "1 healthy Restricted access years Restricted access \n", + "2 healthy Restricted access years Restricted access \n", + "3 healthy Restricted access years Restricted access \n", + "4 healthy Restricted access years Restricted access \n", + ".. ... ... ... ... \n", + "344 Pre-FMT 61 years 32.5 \n", + "345 Pre-FMT 61 years 32.5 \n", + "346 Pre-FMT 61 years 32.5 \n", + "347 Pre-FMT 61 years 32.5 \n", + "348 Pre-FMT 61 years 32.5 \n", + "\n", + " host_height host_height_units host_subject_id host_weight \\\n", + "0 Restricted access m Donor Restricted access \n", + "1 Restricted access m Donor Restricted access \n", + "2 Restricted access m Donor Restricted access \n", + "3 Restricted access m Donor Restricted access \n", + "4 Restricted access m Donor Restricted access \n", + ".. ... ... ... ... \n", + "344 1.727 m CD3 97.3 \n", + "345 1.727 m CD3 97.3 \n", + "346 1.727 m CD3 97.3 \n", + "347 1.727 m CD3 97.3 \n", + "348 1.727 m CD3 97.3 \n", + "\n", + " host_weight_units race sex \n", + "0 kg Restricted access Restricted access \n", + "1 kg Restricted access Restricted access \n", + "2 kg Restricted access Restricted access \n", + "3 kg Restricted access Restricted access \n", + "4 kg Restricted access Restricted access \n", + ".. ... ... ... \n", + "344 kg white male \n", + "345 kg white male \n", + "346 kg white male \n", + "347 kg white male \n", + "348 kg white male \n", + "\n", + "[349 rows x 20 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sample_idabundancegenusidrelativeUnnamed: 0collection_timestampday_relative_to_fmtdescriptiondisease_statehost_agehost_age_unitshost_body_mass_indexhost_heighthost_height_unitshost_subject_idhost_weighthost_weight_unitsracesex
0ERR18831956.0AkkermansiaAkkermansia0.000116122011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
1ERR188319517971.0PhocaeicolaPhocaeicola0.346522122011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
2ERR18831955.0VeillonellaVeillonella0.000096122011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
3ERR18831954741.0FaecalibacteriumFaecalibacterium0.091417122011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
4ERR1883195576.0MediterraneibacterMediterraneibacter0.011107122011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
...............................................................
344ERR18832945.0StomatobaculumStomatobaculum0.0009261122011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
345ERR18832943.0LancefieldellaLancefieldella0.0005561122011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
346ERR18832943.0TumebacillusTumebacillus0.0005561122011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
347ERR18832943.0TropherymaTropheryma0.0005561122011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
348ERR18832942.0MogibacteriumMogibacterium0.0003701122011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
\n", + "

349 rows Γ— 20 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 55 + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "metadata = pd.read_table(\"metadata.tsv\").rename(columns={\"id\": \"sample_id\"})\n", + "tax = pd.merge(tax, metadata, on=\"sample_id\")\n", + "tax" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Ok, now we want to invade our samples with C. diff. The goal is to predict susceptibility to invasion and see how disease context can influence predicted engraftment. To do this we will introduce 10% C. diff to all the samples! You can read more about this approach and its applications [here](https://www.biorxiv.org/content/10.1101/2023.04.28.538771v2) " + ], + "metadata": { + "id": "ZsFgo_CRjvsr" + } + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "vHyvSZJJ-iIi", + "outputId": "0f934995-8bd5-4c03-ddda-491fb5d5bd4f" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " sample_id abundance genus id \\\n", + "1 ERR1883195 17971.000000 Phocaeicola Phocaeicola \n", + "3 ERR1883195 4741.000000 Faecalibacterium Faecalibacterium \n", + "8 ERR1883195 6805.000000 Bacteroides Bacteroides \n", + "11 ERR1883195 3076.000000 Parabacteroides Parabacteroides \n", + "5 ERR1883195 3621.444444 Clostridioides Clostridioides \n", + "71 ERR1883207 16983.000000 Phocaeicola Phocaeicola \n", + "73 ERR1883207 3717.000000 Faecalibacterium Faecalibacterium \n", + "77 ERR1883207 2956.000000 Barnesiella Barnesiella \n", + "78 ERR1883207 6984.000000 Bacteroides Bacteroides \n", + "79 ERR1883207 2901.000000 Blautia Blautia \n", + "81 ERR1883207 3413.000000 Parabacteroides Parabacteroides \n", + "7 ERR1883207 4106.000000 Clostridioides Clostridioides \n", + "222 ERR1883212 8393.000000 Phocaeicola Phocaeicola \n", + "224 ERR1883212 10841.000000 Faecalibacterium Faecalibacterium \n", + "227 ERR1883212 4038.000000 Fusicatenibacter Fusicatenibacter \n", + "229 ERR1883212 3286.000000 Bacteroides Bacteroides \n", + "230 ERR1883212 3198.000000 Blautia Blautia \n", + "234 ERR1883212 5106.000000 Streptococcus Streptococcus \n", + "7 ERR1883212 3873.555556 Clostridioides Clostridioides \n", + "152 ERR1883214 54726.000000 Akkermansia Akkermansia \n", + "161 ERR1883214 3968.000000 Clostridium Clostridium \n", + "3 ERR1883214 6521.555556 Clostridioides Clostridioides \n", + "291 ERR1883225 3734.000000 Phocaeicola Phocaeicola \n", + "295 ERR1883225 492.000000 Barnesiella Barnesiella \n", + "296 ERR1883225 1475.000000 Bacteroides Bacteroides \n", + "299 ERR1883225 911.000000 Parabacteroides Parabacteroides \n", + "5 ERR1883225 734.666667 Clostridioides Clostridioides \n", + "174 ERR1883240 35554.000000 Akkermansia Akkermansia \n", + "176 ERR1883240 15517.000000 Veillonella Veillonella \n", + "180 ERR1883240 5555.000000 Fusobacterium Fusobacterium \n", + "4 ERR1883240 6291.777778 Clostridioides Clostridioides \n", + "188 ERR1883250 11467.000000 Akkermansia Akkermansia \n", + "190 ERR1883250 9955.000000 Mediterraneibacter Mediterraneibacter \n", + "191 ERR1883250 11923.000000 Erysipelatoclostridium Erysipelatoclostridium \n", + "193 ERR1883250 13975.000000 Blautia Blautia \n", + "196 ERR1883250 3282.000000 Ruthenibacterium Ruthenibacterium \n", + "6 ERR1883250 5622.444444 Clostridioides Clostridioides \n", + "321 ERR1883294 619.000000 Veillonella Veillonella \n", + "325 ERR1883294 591.000000 Fusobacterium Fusobacterium \n", + "329 ERR1883294 1866.000000 Anaerosinus Anaerosinus \n", + "330 ERR1883294 580.000000 Megasphaera Megasphaera \n", + "332 ERR1883294 734.000000 Phytobacter Phytobacter \n", + "333 ERR1883294 294.000000 Morganella Morganella \n", + "7 ERR1883294 520.444444 Clostridioides Clostridioides \n", + "\n", + " relative Unnamed: 0 collection_timestamp day_relative_to_fmt \\\n", + "1 0.496238 12.0 2011-10-24 26 \n", + "3 0.130915 12.0 2011-10-24 26 \n", + "8 0.187908 12.0 2011-10-24 26 \n", + "11 0.084938 12.0 2011-10-24 26 \n", + "5 0.100000 12.0 2011-10-24 26 \n", + "71 0.413614 24.0 2012-01-12 44 \n", + "73 0.090526 24.0 2012-01-12 44 \n", + "77 0.071992 24.0 2012-01-12 44 \n", + "78 0.170093 24.0 2012-01-12 44 \n", + "79 0.070653 24.0 2012-01-12 44 \n", + "81 0.083122 24.0 2012-01-12 44 \n", + "7 0.100000 24.0 2012-01-12 44 \n", + "222 0.216674 30.0 2012-10-10 135 \n", + "224 0.279872 30.0 2012-10-10 135 \n", + "227 0.104245 30.0 2012-10-10 135 \n", + "229 0.084832 30.0 2012-10-10 135 \n", + "230 0.082560 30.0 2012-10-10 135 \n", + "234 0.131817 30.0 2012-10-10 135 \n", + "7 0.100000 30.0 2012-10-10 135 \n", + "152 0.839156 32.0 2011-07-26 0 \n", + "161 0.060844 32.0 2011-07-26 0 \n", + "3 0.100000 32.0 2011-07-26 0 \n", + "291 0.508258 43.0 2011-07-26 54 \n", + "295 0.066969 43.0 2011-07-26 54 \n", + "296 0.200771 43.0 2011-07-26 54 \n", + "299 0.124002 43.0 2011-07-26 54 \n", + "5 0.100000 43.0 2011-07-26 54 \n", + "174 0.565087 58.0 2012-02-14 pre-FMT \n", + "176 0.246623 58.0 2012-02-14 pre-FMT \n", + "180 0.088290 58.0 2012-02-14 pre-FMT \n", + "4 0.100000 58.0 2012-02-14 pre-FMT \n", + "188 0.203950 68.0 2011-12-23 pre-FMT \n", + "190 0.177058 68.0 2011-12-23 pre-FMT \n", + "191 0.212061 68.0 2011-12-23 pre-FMT \n", + "193 0.248557 68.0 2011-12-23 pre-FMT \n", + "196 0.058373 68.0 2011-12-23 pre-FMT \n", + "6 0.100000 68.0 2011-12-23 pre-FMT \n", + "321 0.118937 112.0 2011-09-29 0 \n", + "325 0.113557 112.0 2011-09-29 0 \n", + "329 0.358540 112.0 2011-09-29 0 \n", + "330 0.111443 112.0 2011-09-29 0 \n", + "332 0.141033 112.0 2011-09-29 0 \n", + "333 0.056490 112.0 2011-09-29 0 \n", + "7 0.100000 112.0 2011-09-29 0 \n", + "\n", + " description disease_state host_age host_age_units \\\n", + "1 Donor 11 healthy Restricted access years \n", + "3 Donor 11 healthy Restricted access years \n", + "8 Donor 11 healthy Restricted access years \n", + "11 Donor 11 healthy Restricted access years \n", + "5 Donor 11 healthy Restricted access years \n", + "71 Donor 12 healthy Restricted access years \n", + "73 Donor 12 healthy Restricted access years \n", + "77 Donor 12 healthy Restricted access years \n", + "78 Donor 12 healthy Restricted access years \n", + "79 Donor 12 healthy Restricted access years \n", + "81 Donor 12 healthy Restricted access years \n", + "7 Donor 12 healthy Restricted access years \n", + "222 Donor 14 healthy Restricted access years \n", + "224 Donor 14 healthy Restricted access years \n", + "227 Donor 14 healthy Restricted access years \n", + "229 Donor 14 healthy Restricted access years \n", + "230 Donor 14 healthy Restricted access years \n", + "234 Donor 14 healthy Restricted access years \n", + "7 Donor 14 healthy Restricted access years \n", + "152 Day 0 CD1 Pre-FMT 39 years \n", + "161 Day 0 CD1 Pre-FMT 39 years \n", + "3 Day 0 CD1 Pre-FMT 39 years \n", + "291 Donor CD1 healthy Restricted access years \n", + "295 Donor CD1 healthy Restricted access years \n", + "296 Donor CD1 healthy Restricted access years \n", + "299 Donor CD1 healthy Restricted access years \n", + "5 Donor CD1 healthy Restricted access years \n", + "174 CD9 pre-FMT Pre-FMT 47 years \n", + "176 CD9 pre-FMT Pre-FMT 47 years \n", + "180 CD9 pre-FMT Pre-FMT 47 years \n", + "4 CD9 pre-FMT Pre-FMT 47 years \n", + "188 CD13 pre-FMT Pre-FMT 53 years \n", + "190 CD13 pre-FMT Pre-FMT 53 years \n", + "191 CD13 pre-FMT Pre-FMT 53 years \n", + "193 CD13 pre-FMT Pre-FMT 53 years \n", + "196 CD13 pre-FMT Pre-FMT 53 years \n", + "6 CD13 pre-FMT Pre-FMT 53 years \n", + "321 Day 0 CD3 Pre-FMT 61 years \n", + "325 Day 0 CD3 Pre-FMT 61 years \n", + "329 Day 0 CD3 Pre-FMT 61 years \n", + "330 Day 0 CD3 Pre-FMT 61 years \n", + "332 Day 0 CD3 Pre-FMT 61 years \n", + "333 Day 0 CD3 Pre-FMT 61 years \n", + "7 Day 0 CD3 Pre-FMT 61 years \n", + "\n", + " host_body_mass_index host_height host_height_units host_subject_id \\\n", + "1 Restricted access Restricted access m Donor \n", + "3 Restricted access Restricted access m Donor \n", + "8 Restricted access Restricted access m Donor \n", + "11 Restricted access Restricted access m Donor \n", + "5 Restricted access Restricted access m Donor \n", + "71 Restricted access Restricted access m Donor \n", + "73 Restricted access Restricted access m Donor \n", + "77 Restricted access Restricted access m Donor \n", + "78 Restricted access Restricted access m Donor \n", + "79 Restricted access Restricted access m Donor \n", + "81 Restricted access Restricted access m Donor \n", + "7 Restricted access Restricted access m Donor \n", + "222 Restricted access Restricted access m Donor \n", + "224 Restricted access Restricted access m Donor \n", + "227 Restricted access Restricted access m Donor \n", + "229 Restricted access Restricted access m Donor \n", + "230 Restricted access Restricted access m Donor \n", + "234 Restricted access Restricted access m Donor \n", + "7 Restricted access Restricted access m Donor \n", + "152 29.3 165.1 m CD1 \n", + "161 29.3 165.1 m CD1 \n", + "3 29.3 165.1 m CD1 \n", + "291 Restricted access Restricted access m Donor \n", + "295 Restricted access Restricted access m Donor \n", + "296 Restricted access Restricted access m Donor \n", + "299 Restricted access Restricted access m Donor \n", + "5 Restricted access Restricted access m Donor \n", + "174 35.5 1.55 m CD9 \n", + "176 35.5 1.55 m CD9 \n", + "180 35.5 1.55 m CD9 \n", + "4 35.5 1.55 m CD9 \n", + "188 34.4 1.56 m CD13 \n", + "190 34.4 1.56 m CD13 \n", + "191 34.4 1.56 m CD13 \n", + "193 34.4 1.56 m CD13 \n", + "196 34.4 1.56 m CD13 \n", + "6 34.4 1.56 m CD13 \n", + "321 32.5 1.727 m CD3 \n", + "325 32.5 1.727 m CD3 \n", + "329 32.5 1.727 m CD3 \n", + "330 32.5 1.727 m CD3 \n", + "332 32.5 1.727 m CD3 \n", + "333 32.5 1.727 m CD3 \n", + "7 32.5 1.727 m CD3 \n", + "\n", + " host_weight host_weight_units race sex \n", + "1 Restricted access kg Restricted access Restricted access \n", + "3 Restricted access kg Restricted access Restricted access \n", + "8 Restricted access kg Restricted access Restricted access \n", + "11 Restricted access kg Restricted access Restricted access \n", + "5 Restricted access kg Restricted access Restricted access \n", + "71 Restricted access kg Restricted access Restricted access \n", + "73 Restricted access kg Restricted access Restricted access \n", + "77 Restricted access kg Restricted access Restricted access \n", + "78 Restricted access kg Restricted access Restricted access \n", + "79 Restricted access kg Restricted access Restricted access \n", + "81 Restricted access kg Restricted access Restricted access \n", + "7 Restricted access kg Restricted access Restricted access \n", + "222 Restricted access kg Restricted access Restricted access \n", + "224 Restricted access kg Restricted access Restricted access \n", + "227 Restricted access kg Restricted access Restricted access \n", + "229 Restricted access kg Restricted access Restricted access \n", + "230 Restricted access kg Restricted access Restricted access \n", + "234 Restricted access kg Restricted access Restricted access \n", + "7 Restricted access kg Restricted access Restricted access \n", + "152 80.1 kg white female \n", + "161 80.1 kg white female \n", + "3 80.1 kg white female \n", + "291 Restricted access kg Restricted access Restricted access \n", + "295 Restricted access kg Restricted access Restricted access \n", + "296 Restricted access kg Restricted access Restricted access \n", + "299 Restricted access kg Restricted access Restricted access \n", + "5 Restricted access kg Restricted access Restricted access \n", + "174 85.1 kg white female \n", + "176 85.1 kg white female \n", + "180 85.1 kg white female \n", + "4 85.1 kg white female \n", + "188 83.9 kg white female \n", + "190 83.9 kg white female \n", + "191 83.9 kg white female \n", + "193 83.9 kg white female \n", + "196 83.9 kg white female \n", + "6 83.9 kg white female \n", + "321 97.3 kg white male \n", + "325 97.3 kg white male \n", + "329 97.3 kg white male \n", + "330 97.3 kg white male \n", + "332 97.3 kg white male \n", + "333 97.3 kg white male \n", + "7 97.3 kg white male " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sample_idabundancegenusidrelativeUnnamed: 0collection_timestampday_relative_to_fmtdescriptiondisease_statehost_agehost_age_unitshost_body_mass_indexhost_heighthost_height_unitshost_subject_idhost_weighthost_weight_unitsracesex
1ERR188319517971.000000PhocaeicolaPhocaeicola0.49623812.02011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
3ERR18831954741.000000FaecalibacteriumFaecalibacterium0.13091512.02011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
8ERR18831956805.000000BacteroidesBacteroides0.18790812.02011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
11ERR18831953076.000000ParabacteroidesParabacteroides0.08493812.02011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
5ERR18831953621.444444ClostridioidesClostridioides0.10000012.02011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
71ERR188320716983.000000PhocaeicolaPhocaeicola0.41361424.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
73ERR18832073717.000000FaecalibacteriumFaecalibacterium0.09052624.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
77ERR18832072956.000000BarnesiellaBarnesiella0.07199224.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
78ERR18832076984.000000BacteroidesBacteroides0.17009324.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
79ERR18832072901.000000BlautiaBlautia0.07065324.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
81ERR18832073413.000000ParabacteroidesParabacteroides0.08312224.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
7ERR18832074106.000000ClostridioidesClostridioides0.10000024.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
222ERR18832128393.000000PhocaeicolaPhocaeicola0.21667430.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
224ERR188321210841.000000FaecalibacteriumFaecalibacterium0.27987230.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
227ERR18832124038.000000FusicatenibacterFusicatenibacter0.10424530.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
229ERR18832123286.000000BacteroidesBacteroides0.08483230.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
230ERR18832123198.000000BlautiaBlautia0.08256030.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
234ERR18832125106.000000StreptococcusStreptococcus0.13181730.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
7ERR18832123873.555556ClostridioidesClostridioides0.10000030.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
152ERR188321454726.000000AkkermansiaAkkermansia0.83915632.02011-07-260Day 0 CD1Pre-FMT39years29.3165.1mCD180.1kgwhitefemale
161ERR18832143968.000000ClostridiumClostridium0.06084432.02011-07-260Day 0 CD1Pre-FMT39years29.3165.1mCD180.1kgwhitefemale
3ERR18832146521.555556ClostridioidesClostridioides0.10000032.02011-07-260Day 0 CD1Pre-FMT39years29.3165.1mCD180.1kgwhitefemale
291ERR18832253734.000000PhocaeicolaPhocaeicola0.50825843.02011-07-2654Donor CD1healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
295ERR1883225492.000000BarnesiellaBarnesiella0.06696943.02011-07-2654Donor CD1healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
296ERR18832251475.000000BacteroidesBacteroides0.20077143.02011-07-2654Donor CD1healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
299ERR1883225911.000000ParabacteroidesParabacteroides0.12400243.02011-07-2654Donor CD1healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
5ERR1883225734.666667ClostridioidesClostridioides0.10000043.02011-07-2654Donor CD1healthyRestricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
174ERR188324035554.000000AkkermansiaAkkermansia0.56508758.02012-02-14pre-FMTCD9 pre-FMTPre-FMT47years35.51.55mCD985.1kgwhitefemale
176ERR188324015517.000000VeillonellaVeillonella0.24662358.02012-02-14pre-FMTCD9 pre-FMTPre-FMT47years35.51.55mCD985.1kgwhitefemale
180ERR18832405555.000000FusobacteriumFusobacterium0.08829058.02012-02-14pre-FMTCD9 pre-FMTPre-FMT47years35.51.55mCD985.1kgwhitefemale
4ERR18832406291.777778ClostridioidesClostridioides0.10000058.02012-02-14pre-FMTCD9 pre-FMTPre-FMT47years35.51.55mCD985.1kgwhitefemale
188ERR188325011467.000000AkkermansiaAkkermansia0.20395068.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56mCD1383.9kgwhitefemale
190ERR18832509955.000000MediterraneibacterMediterraneibacter0.17705868.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56mCD1383.9kgwhitefemale
191ERR188325011923.000000ErysipelatoclostridiumErysipelatoclostridium0.21206168.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56mCD1383.9kgwhitefemale
193ERR188325013975.000000BlautiaBlautia0.24855768.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56mCD1383.9kgwhitefemale
196ERR18832503282.000000RuthenibacteriumRuthenibacterium0.05837368.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56mCD1383.9kgwhitefemale
6ERR18832505622.444444ClostridioidesClostridioides0.10000068.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56mCD1383.9kgwhitefemale
321ERR1883294619.000000VeillonellaVeillonella0.118937112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
325ERR1883294591.000000FusobacteriumFusobacterium0.113557112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
329ERR18832941866.000000AnaerosinusAnaerosinus0.358540112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
330ERR1883294580.000000MegasphaeraMegasphaera0.111443112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
332ERR1883294734.000000PhytobacterPhytobacter0.141033112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
333ERR1883294294.000000MorganellaMorganella0.056490112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
7ERR1883294520.444444ClostridioidesClostridioides0.100000112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727mCD397.3kgwhitemale
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 106 + } + ], + "source": [ + "invader='Clostridioides' # choose your favorite invader, here we have chosen C. diff\n", + "invader_rel=0.1 # set the fraction of total relative abundance you want it to invade with\n", + "invaded=pd.DataFrame() # set up results dataframe\n", + "\n", + "for smp,df in tax.groupby(by='sample_id'): # loop through data, one sample at a time\n", + " df=df[df.relative>0.05].copy() # filter out genera below 5% (this is a high threshold, which will make simulation run faster)\n", + " df=df[df.genus!='Clostridioides'] # some samples already have C. diff, so lets remove it and then re-introduce\n", + " abund=df.abundance.sum()*invader_rel/(1-invader_rel) # calculate the abundance needed to achieve desired relative abundance\n", + "\n", + " info=df.iloc[0,:].copy() # get necessary sample info\n", + " info.genus=invader # add invader name\n", + " info.id=invader\n", + " info.abundance=abund # add invader abundance\n", + " df.loc[df.shape[0]+1,info.index]=info.values #append invader info\n", + " df.relative=df.abundance.apply(lambda x:x/df.abundance.sum()) # re-calculate relative abundance\n", + " invaded=pd.concat([invaded,df]) # append results to output dataframe\n", + "invaded\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RTbYBR8cJfup" + }, + "source": [ + "With our taxonomy table ready to go, and our metadata merged, its finally time to get to the model building! πŸŽ‰\n", + "\n", + "## Building community models\n", + "\n", + "With the data we have now, building our models is pretty easy. We just pass our taxonomy table and model database to MICOM. We will remove all taxa that make up less than 5% of the community to keep the models small and speed up this tutorial. We will also have to specify where to write the models. For simplicity, we'll run this process in parallel over two threads. It should take around 10 minutes to finish." + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51, + "referenced_widgets": [ + "37b0134de4bd4fe38c1afe7bc2bbdc59", + "bc2776a5195f4a8c8dda0e22e2fd9ea3" + ] + }, + "id": "kDbSN71SmCZr", + "outputId": "e51c2208-4536-4f90-804c-442d884549bf" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Output()" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "37b0134de4bd4fe38c1afe7bc2bbdc59" + } + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "WARNING:micom.logger:Less than 50% of the abundance could be matched to the model database. Model `ERR1883294` may not be representative of the sample\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [], + "text/html": [ + "
\n"
+            ]
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "\n"
+            ],
+            "text/html": [
+              "
\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "from micom.workflows import build\n", + "from micom import Community\n", + "import pandas as pd\n", + "\n", + "manifest = build(invaded, \"agora103_genus.qza\", \"models\", solver=\"osqp\",\n", + " cutoff=0.05, threads=2)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Kwya6vbZZSUo" + }, + "source": [ + "You'll see a warning pop up indicating that less than 50% of the abundances can be matched to the database for one of the samples. This can happen with some data, and may indicate the models may not be completely representative of the samples.Typically a fraction of 80% or more is considered great. We'll continue, but remember to keep an eye out for this in future projects!\n", + "\n", + "In lower-biomass 16S amplicon sequencing samples from stool, many reads can match to food components or to host mitochondria and these hits probably do not contribute much to bacterial community metabolism. These hits will be excluded from MICOM.\n", + "\n", + "Let's take a look what we got back from the `build` process." + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 454 + }, + "id": "r9qwglr88Ise", + "outputId": "168ee50d-23c5-4dfe-e3fb-bc733ec82188" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " sample_id Unnamed: 0 collection_timestamp day_relative_to_fmt \\\n", + "0 ERR1883195 12.0 2011-10-24 26 \n", + "1 ERR1883207 24.0 2012-01-12 44 \n", + "2 ERR1883212 30.0 2012-10-10 135 \n", + "3 ERR1883214 32.0 2011-07-26 0 \n", + "4 ERR1883225 43.0 2011-07-26 54 \n", + "5 ERR1883240 58.0 2012-02-14 pre-FMT \n", + "6 ERR1883250 68.0 2011-12-23 pre-FMT \n", + "7 ERR1883294 112.0 2011-09-29 0 \n", + "\n", + " description disease_state host_age host_age_units \\\n", + "0 Donor 11 healthy Restricted access years \n", + "1 Donor 12 healthy Restricted access years \n", + "2 Donor 14 healthy Restricted access years \n", + "3 Day 0 CD1 Pre-FMT 39 years \n", + "4 Donor CD1 healthy Restricted access years \n", + "5 CD9 pre-FMT Pre-FMT 47 years \n", + "6 CD13 pre-FMT Pre-FMT 53 years \n", + "7 Day 0 CD3 Pre-FMT 61 years \n", + "\n", + " host_body_mass_index host_height ... host_subject_id \\\n", + "0 Restricted access Restricted access ... Donor \n", + "1 Restricted access Restricted access ... Donor \n", + "2 Restricted access Restricted access ... Donor \n", + "3 29.3 165.1 ... CD1 \n", + "4 Restricted access Restricted access ... Donor \n", + "5 35.5 1.55 ... CD9 \n", + "6 34.4 1.56 ... CD13 \n", + "7 32.5 1.727 ... CD3 \n", + "\n", + " host_weight host_weight_units race sex \\\n", + "0 Restricted access kg Restricted access Restricted access \n", + "1 Restricted access kg Restricted access Restricted access \n", + "2 Restricted access kg Restricted access Restricted access \n", + "3 80.1 kg white female \n", + "4 Restricted access kg Restricted access Restricted access \n", + "5 85.1 kg white female \n", + "6 83.9 kg white female \n", + "7 97.3 kg white male \n", + "\n", + " file found_taxa total_taxa found_fraction \\\n", + "0 ERR1883195.pickle 5.0 5.0 1.000000 \n", + "1 ERR1883207.pickle 7.0 7.0 1.000000 \n", + "2 ERR1883212.pickle 6.0 7.0 0.857143 \n", + "3 ERR1883214.pickle 6.0 6.0 1.000000 \n", + "4 ERR1883225.pickle 5.0 5.0 1.000000 \n", + "5 ERR1883240.pickle 4.0 4.0 1.000000 \n", + "6 ERR1883250.pickle 5.0 6.0 0.833333 \n", + "7 ERR1883294.pickle 5.0 7.0 0.714286 \n", + "\n", + " found_abundance_fraction \n", + "0 1.000000 \n", + "1 1.000000 \n", + "2 0.895755 \n", + "3 1.000000 \n", + "4 1.000000 \n", + "5 1.000000 \n", + "6 0.941627 \n", + "7 0.500427 \n", + "\n", + "[8 rows x 21 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sample_idUnnamed: 0collection_timestampday_relative_to_fmtdescriptiondisease_statehost_agehost_age_unitshost_body_mass_indexhost_height...host_subject_idhost_weighthost_weight_unitsracesexfilefound_taxatotal_taxafound_fractionfound_abundance_fraction
0ERR188319512.02011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883195.pickle5.05.01.0000001.000000
1ERR188320724.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883207.pickle7.07.01.0000001.000000
2ERR188321230.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883212.pickle6.07.00.8571430.895755
3ERR188321432.02011-07-260Day 0 CD1Pre-FMT39years29.3165.1...CD180.1kgwhitefemaleERR1883214.pickle6.06.01.0000001.000000
4ERR188322543.02011-07-2654Donor CD1healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883225.pickle5.05.01.0000001.000000
5ERR188324058.02012-02-14pre-FMTCD9 pre-FMTPre-FMT47years35.51.55...CD985.1kgwhitefemaleERR1883240.pickle4.04.01.0000001.000000
6ERR188325068.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56...CD1383.9kgwhitefemaleERR1883250.pickle5.06.00.8333330.941627
7ERR1883294112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727...CD397.3kgwhitemaleERR1883294.pickle5.07.00.7142860.500427
\n", + "

8 rows Γ— 21 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 63 + } + ], + "source": [ + "manifest" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y4KAJkhIdspQ" + }, + "source": [ + "This will tell you how many taxa were found in the database and what fraction of the total abundance was represented by the database. For most samples, this looks okay (i.e., >70% of abundance represented).\n", + "\n", + "So we now have our community models and can leverage MICOM fully by simulating community growth - let's discuss what we want to look at.\n", + "\n", + "### Microbiome Context\n", + "\n", + "Now that our models are ready to go, let's think about some of the insights we might gain from these samples. First and foremost, we want to investigate the invasion potential of C. diff. How does its ability to invade vary in samples from healthy donors versus individuals with dysbiotic gut microbiomes (pre-FMT)?\n", + "\n", + "Additionally, we can use MICOM to take a mechanistic look at what metabolic strategies are leveraged by C. diff (e.g., what niche(s) does it occupy) in these different contexts.\n", + "\n", + "All that and more, coming up. Stay tuned!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "etrvjwBLkKdR" + }, + "source": [ + "First we need to import our dietary context. For simplicity we will be using a formulation that represents an average western diet, but if information about host diet is known other formulations can be used (e.g., vegetarian or vegan diet). Additional dietary formulations can be found [here]( https://github.com/micom-dev/media/tree/main/media)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 455 + }, + "id": "aJwXAR4PPAkA", + "outputId": "4397913a-b2b6-4059-e355-4226d29a0a90" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " reaction metabolite global_id flux\n", + "reaction \n", + "EX_4abz_m EX_4abz_m 4abz_m EX_4abz(e) 0.1\n", + "EX_4hbz_m EX_4hbz_m 4hbz_m EX_4hbz(e) 0.1\n", + "EX_ac_m EX_ac_m ac_m EX_ac(e) 0.1\n", + "EX_acgam_m EX_acgam_m acgam_m EX_acgam(e) 0.1\n", + "EX_ala_L_m EX_ala_L_m ala_L_m EX_ala_L(e) 0.1\n", + "... ... ... ... ...\n", + "EX_octa_m EX_octa_m octa_m EX_octa(e) 0.0\n", + "EX_adpcbl_m EX_adpcbl_m adpcbl_m EX_adpcbl(e) 0.0\n", + "EX_fe3dcit_m EX_fe3dcit_m fe3dcit_m EX_fe3dcit(e) 0.0\n", + "EX_pydx5p_m EX_pydx5p_m pydx5p_m EX_pydx5p(e) 0.0\n", + "EX_glu_D_m EX_glu_D_m glu_D_m EX_glu_D(e) 0.0\n", + "\n", + "[171 rows x 4 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
reactionmetaboliteglobal_idflux
reaction
EX_4abz_mEX_4abz_m4abz_mEX_4abz(e)0.1
EX_4hbz_mEX_4hbz_m4hbz_mEX_4hbz(e)0.1
EX_ac_mEX_ac_mac_mEX_ac(e)0.1
EX_acgam_mEX_acgam_macgam_mEX_acgam(e)0.1
EX_ala_L_mEX_ala_L_mala_L_mEX_ala_L(e)0.1
...............
EX_octa_mEX_octa_mocta_mEX_octa(e)0.0
EX_adpcbl_mEX_adpcbl_madpcbl_mEX_adpcbl(e)0.0
EX_fe3dcit_mEX_fe3dcit_mfe3dcit_mEX_fe3dcit(e)0.0
EX_pydx5p_mEX_pydx5p_mpydx5p_mEX_pydx5p(e)0.0
EX_glu_D_mEX_glu_D_mglu_D_mEX_glu_D(e)0.0
\n", + "

171 rows Γ— 4 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 64 + } + ], + "source": [ + "from micom.qiime_formats import load_qiime_medium\n", + "medium = load_qiime_medium(\"western_diet_gut_agora.qza\")\n", + "medium" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4s8R4WYUez4g" + }, + "source": [ + "### Growing the models\n", + "Great, now we have our media & our models, it's time to get growing. This will take some time, so we'll use that time as an opportunity to discuss more in depth what these processes do, and what to look for in the results. First, let's run the `grow()` command. This will take the models we've built, and find an optimal solution to the fluxes based upon the medium that's been applied." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3WH8VVrVS4mv" + }, + "source": [ + "If that takes too long or was aborted, we can read it in from the treasure chest." + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34, + "referenced_widgets": [ + "59428de9a88b4204885d03de441cbde3", + "901fb7e8d8c844a8b2e86735ca2bead3" + ] + }, + "id": "IjDguZEcWGjG", + "outputId": "03508c5b-c7fc-46dd-c53b-bbd88dc5c236" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Output()" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "59428de9a88b4204885d03de441cbde3" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [], + "text/html": [ + "
\n"
+            ]
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "\n"
+            ],
+            "text/html": [
+              "
\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "from micom.workflows import grow, save_results\n", + "\n", + "growth = grow(manifest, \"models\",medium, tradeoff=0.8, threads=2)\n", + "\n", + "# We'll save the results to a file\n", + "save_results(growth, \"growth.zip\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rHedHJxHWkjy" + }, + "source": [ + "Again, if that takes too long or was aborted, we can read it in from the treasure chest." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "rcPNBkDpWGrQ" + }, + "outputs": [], + "source": [ + "from micom.workflows import load_results\n", + "\n", + "try: # Will only run if the previous step failed\n", + " growth\n", + "except NameError:\n", + " growth = load_results(\"treasure_chest/growth.zip\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "69gq9QfAzqxq" + }, + "source": [ + "What kind of results did we get? Well, `grow` returns a tuple of 3 data sets:\n", + "\n", + "1. The predicted growth rate for all taxa in all samples\n", + "2. The import and export fluxes for each taxon and the external environment\n", + "3. Annotations for the fluxes mapping to other databases\n", + "\n", + "### πŸ“ˆ Growth Rates\n", + "\n", + "The growth rates are pretty straightforward." + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "2r_XUm7U-HSm", + "outputId": "2ef89987-13a9-48a6-85b0-26dcdcf7ff92" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " abundance growth_rate reactions metabolites taxon \\\n", + "0 0.187908 0.147278 3293 1883 Bacteroides \n", + "1 0.100000 0.078512 1844 1401 Clostridioides \n", + "2 0.130915 0.102472 1986 1472 Faecalibacterium \n", + "3 0.084938 0.066644 2879 1747 Parabacteroides \n", + "4 0.496238 0.389606 2712 1656 Phocaeicola \n", + "5 0.170093 0.248553 3293 1883 Bacteroides \n", + "6 0.071992 0.108048 2235 1371 Barnesiella \n", + "7 0.070653 0.101473 2808 1732 Blautia \n", + "8 0.100000 0.143653 1844 1401 Clostridioides \n", + "9 0.090526 0.129872 1986 1472 Faecalibacterium \n", + "10 0.083122 0.122119 2879 1747 Parabacteroides \n", + "11 0.413614 0.607244 2712 1656 Phocaeicola \n", + "12 0.759954 0.300619 2274 1386 Akkermansia \n", + "13 0.100000 0.144461 1844 1401 Clostridioides \n", + "14 0.055102 0.041183 3532 2001 Clostridium \n", + "15 0.013039 0.009244 2826 1639 Erysipelatoclostridium \n", + "16 0.035175 0.025067 1274 1138 Paeniclostridium \n", + "17 0.036730 0.031724 1652 1308 Veillonella \n", + "18 0.094704 0.133863 3293 1883 Bacteroides \n", + "19 0.092168 0.130290 2808 1732 Blautia \n", + "20 0.111638 0.157821 1844 1401 Clostridioides \n", + "21 0.312443 0.441683 1986 1472 Faecalibacterium \n", + "22 0.241890 0.341913 2712 1656 Phocaeicola \n", + "23 0.147157 0.208032 2860 1805 Streptococcus \n", + "24 0.565087 0.128835 2274 1386 Akkermansia \n", + "25 0.100000 0.377698 1844 1401 Clostridioides \n", + "26 0.088290 0.323804 2197 1602 Fusobacterium \n", + "27 0.246623 0.928642 1652 1308 Veillonella \n", + "28 0.202085 0.267660 2274 1386 Akkermansia \n", + "29 0.246283 0.412257 2808 1732 Blautia \n", + "30 0.105784 0.176446 1844 1401 Clostridioides \n", + "31 0.020161 0.033840 1966 1392 Coprobacillus \n", + "32 0.012706 0.023217 1187 1056 Dialister \n", + "33 0.210121 0.353430 2826 1639 Erysipelatoclostridium \n", + "34 0.014204 0.022333 1207 1105 Flavonifractor \n", + "35 0.013217 0.021691 1369 1170 Lachnospira \n", + "36 0.175438 0.295404 2681 1578 Mediterraneibacter \n", + "37 0.045896 0.069084 2650 1613 Alistipes \n", + "38 0.012559 0.017830 2034 1491 Anaerostipes \n", + "39 0.168400 0.243903 3293 1883 Bacteroides \n", + "40 0.056172 0.083090 2235 1371 Barnesiella \n", + "41 0.027401 0.039184 2808 1732 Blautia \n", + "42 0.100000 0.141583 1844 1401 Clostridioides \n", + "43 0.021236 0.029938 2073 1577 Eubacterium \n", + "44 0.027287 0.038572 1986 1472 Faecalibacterium \n", + "45 0.104009 0.151023 2879 1747 Parabacteroides \n", + "46 0.010732 0.012497 1080 1019 Parasutterella \n", + "47 0.426310 0.619569 2712 1656 Phocaeicola \n", + "48 0.192591 0.360678 1844 1401 Clostridioides \n", + "49 0.197835 0.370503 2197 1602 Fusobacterium \n", + "50 0.194153 0.363601 1206 1068 Megasphaera \n", + "51 0.098416 0.184309 1577 1286 Morganella \n", + "52 0.025775 0.042924 1080 1019 Parasutterella \n", + "53 0.084021 0.156784 2860 1805 Streptococcus \n", + "54 0.207208 0.388049 1652 1308 Veillonella \n", + "\n", + " tradeoff sample_id Unnamed: 0 collection_timestamp day_relative_to_fmt \\\n", + "0 0.8 ERR1883195 12 2011-10-24 26 \n", + "1 0.8 ERR1883195 12 2011-10-24 26 \n", + "2 0.8 ERR1883195 12 2011-10-24 26 \n", + "3 0.8 ERR1883195 12 2011-10-24 26 \n", + "4 0.8 ERR1883195 12 2011-10-24 26 \n", + "5 0.8 ERR1883207 24 2012-01-12 44 \n", + "6 0.8 ERR1883207 24 2012-01-12 44 \n", + "7 0.8 ERR1883207 24 2012-01-12 44 \n", + "8 0.8 ERR1883207 24 2012-01-12 44 \n", + "9 0.8 ERR1883207 24 2012-01-12 44 \n", + "10 0.8 ERR1883207 24 2012-01-12 44 \n", + "11 0.8 ERR1883207 24 2012-01-12 44 \n", + "12 0.8 ERR1883214 32 2011-07-26 0 \n", + "13 0.8 ERR1883214 32 2011-07-26 0 \n", + "14 0.8 ERR1883214 32 2011-07-26 0 \n", + "15 0.8 ERR1883214 32 2011-07-26 0 \n", + "16 0.8 ERR1883214 32 2011-07-26 0 \n", + "17 0.8 ERR1883214 32 2011-07-26 0 \n", + "18 0.8 ERR1883212 30 2012-10-10 135 \n", + "19 0.8 ERR1883212 30 2012-10-10 135 \n", + "20 0.8 ERR1883212 30 2012-10-10 135 \n", + "21 0.8 ERR1883212 30 2012-10-10 135 \n", + "22 0.8 ERR1883212 30 2012-10-10 135 \n", + "23 0.8 ERR1883212 30 2012-10-10 135 \n", + "24 0.8 ERR1883240 58 2012-02-14 pre-FMT \n", + "25 0.8 ERR1883240 58 2012-02-14 pre-FMT \n", + "26 0.8 ERR1883240 58 2012-02-14 pre-FMT \n", + "27 0.8 ERR1883240 58 2012-02-14 pre-FMT \n", + "28 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "29 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "30 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "31 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "32 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "33 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "34 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "35 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "36 0.8 ERR1883250 68 2011-12-23 pre-FMT \n", + "37 0.8 ERR1883225 43 2011-07-26 54 \n", + "38 0.8 ERR1883225 43 2011-07-26 54 \n", + "39 0.8 ERR1883225 43 2011-07-26 54 \n", + "40 0.8 ERR1883225 43 2011-07-26 54 \n", + "41 0.8 ERR1883225 43 2011-07-26 54 \n", + "42 0.8 ERR1883225 43 2011-07-26 54 \n", + "43 0.8 ERR1883225 43 2011-07-26 54 \n", + "44 0.8 ERR1883225 43 2011-07-26 54 \n", + "45 0.8 ERR1883225 43 2011-07-26 54 \n", + "46 0.8 ERR1883225 43 2011-07-26 54 \n", + "47 0.8 ERR1883225 43 2011-07-26 54 \n", + "48 0.8 ERR1883294 112 2011-09-29 0 \n", + "49 0.8 ERR1883294 112 2011-09-29 0 \n", + "50 0.8 ERR1883294 112 2011-09-29 0 \n", + "51 0.8 ERR1883294 112 2011-09-29 0 \n", + "52 0.8 ERR1883294 112 2011-09-29 0 \n", + "53 0.8 ERR1883294 112 2011-09-29 0 \n", + "54 0.8 ERR1883294 112 2011-09-29 0 \n", + "\n", + " ... host_age host_age_units host_body_mass_index \\\n", + "0 ... Restricted access years Restricted access \n", + "1 ... Restricted access years Restricted access \n", + "2 ... Restricted access years Restricted access \n", + "3 ... Restricted access years Restricted access \n", + "4 ... Restricted access years Restricted access \n", + "5 ... Restricted access years Restricted access \n", + "6 ... Restricted access years Restricted access \n", + "7 ... Restricted access years Restricted access \n", + "8 ... Restricted access years Restricted access \n", + "9 ... Restricted access years Restricted access \n", + "10 ... Restricted access years Restricted access \n", + "11 ... Restricted access years Restricted access \n", + "12 ... 39 years 29.3 \n", + "13 ... 39 years 29.3 \n", + "14 ... 39 years 29.3 \n", + "15 ... 39 years 29.3 \n", + "16 ... 39 years 29.3 \n", + "17 ... 39 years 29.3 \n", + "18 ... Restricted access years Restricted access \n", + "19 ... Restricted access years Restricted access \n", + "20 ... Restricted access years Restricted access \n", + "21 ... Restricted access years Restricted access \n", + "22 ... Restricted access years Restricted access \n", + "23 ... Restricted access years Restricted access \n", + "24 ... 47 years 35.5 \n", + "25 ... 47 years 35.5 \n", + "26 ... 47 years 35.5 \n", + "27 ... 47 years 35.5 \n", + "28 ... 53 years 34.4 \n", + "29 ... 53 years 34.4 \n", + "30 ... 53 years 34.4 \n", + "31 ... 53 years 34.4 \n", + "32 ... 53 years 34.4 \n", + "33 ... 53 years 34.4 \n", + "34 ... 53 years 34.4 \n", + "35 ... 53 years 34.4 \n", + "36 ... 53 years 34.4 \n", + "37 ... Restricted access years Restricted access \n", + "38 ... Restricted access years Restricted access \n", + "39 ... Restricted access years Restricted access \n", + "40 ... Restricted access years Restricted access \n", + "41 ... Restricted access years Restricted access \n", + "42 ... Restricted access years Restricted access \n", + "43 ... Restricted access years Restricted access \n", + "44 ... Restricted access years Restricted access \n", + "45 ... Restricted access years Restricted access \n", + "46 ... Restricted access years Restricted access \n", + "47 ... Restricted access years Restricted access \n", + "48 ... 61 years 32.5 \n", + "49 ... 61 years 32.5 \n", + "50 ... 61 years 32.5 \n", + "51 ... 61 years 32.5 \n", + "52 ... 61 years 32.5 \n", + "53 ... 61 years 32.5 \n", + "54 ... 61 years 32.5 \n", + "\n", + " host_height host_height_units host_subject_id host_weight \\\n", + "0 Restricted access m Donor Restricted access \n", + "1 Restricted access m Donor Restricted access \n", + "2 Restricted access m Donor Restricted access \n", + "3 Restricted access m Donor Restricted access \n", + "4 Restricted access m Donor Restricted access \n", + "5 Restricted access m Donor Restricted access \n", + "6 Restricted access m Donor Restricted access \n", + "7 Restricted access m Donor Restricted access \n", + "8 Restricted access m Donor Restricted access \n", + "9 Restricted access m Donor Restricted access \n", + "10 Restricted access m Donor Restricted access \n", + "11 Restricted access m Donor Restricted access \n", + "12 165.1 m CD1 80.1 \n", + "13 165.1 m CD1 80.1 \n", + "14 165.1 m CD1 80.1 \n", + "15 165.1 m CD1 80.1 \n", + "16 165.1 m CD1 80.1 \n", + "17 165.1 m CD1 80.1 \n", + "18 Restricted access m Donor Restricted access \n", + "19 Restricted access m Donor Restricted access \n", + "20 Restricted access m Donor Restricted access \n", + "21 Restricted access m Donor Restricted access \n", + "22 Restricted access m Donor Restricted access \n", + "23 Restricted access m Donor Restricted access \n", + "24 1.55 m CD9 85.1 \n", + "25 1.55 m CD9 85.1 \n", + "26 1.55 m CD9 85.1 \n", + "27 1.55 m CD9 85.1 \n", + "28 1.56 m CD13 83.9 \n", + "29 1.56 m CD13 83.9 \n", + "30 1.56 m CD13 83.9 \n", + "31 1.56 m CD13 83.9 \n", + "32 1.56 m CD13 83.9 \n", + "33 1.56 m CD13 83.9 \n", + "34 1.56 m CD13 83.9 \n", + "35 1.56 m CD13 83.9 \n", + "36 1.56 m CD13 83.9 \n", + "37 Restricted access m Donor Restricted access \n", + "38 Restricted access m Donor Restricted access \n", + "39 Restricted access m Donor Restricted access \n", + "40 Restricted access m Donor Restricted access \n", + "41 Restricted access m Donor Restricted access \n", + "42 Restricted access m Donor Restricted access \n", + "43 Restricted access m Donor Restricted access \n", + "44 Restricted access m Donor Restricted access \n", + "45 Restricted access m Donor Restricted access \n", + "46 Restricted access m Donor Restricted access \n", + "47 Restricted access m Donor Restricted access \n", + "48 1.727 m CD3 97.3 \n", + "49 1.727 m CD3 97.3 \n", + "50 1.727 m CD3 97.3 \n", + "51 1.727 m CD3 97.3 \n", + "52 1.727 m CD3 97.3 \n", + "53 1.727 m CD3 97.3 \n", + "54 1.727 m CD3 97.3 \n", + "\n", + " host_weight_units race sex \n", + "0 kg Restricted access Restricted access \n", + "1 kg Restricted access Restricted access \n", + "2 kg Restricted access Restricted access \n", + "3 kg Restricted access Restricted access \n", + "4 kg Restricted access Restricted access \n", + "5 kg Restricted access Restricted access \n", + "6 kg Restricted access Restricted access \n", + "7 kg Restricted access Restricted access \n", + "8 kg Restricted access Restricted access \n", + "9 kg Restricted access Restricted access \n", + "10 kg Restricted access Restricted access \n", + "11 kg Restricted access Restricted access \n", + "12 kg white female \n", + "13 kg white female \n", + "14 kg white female \n", + "15 kg white female \n", + "16 kg white female \n", + "17 kg white female \n", + "18 kg Restricted access Restricted access \n", + "19 kg Restricted access Restricted access \n", + "20 kg Restricted access Restricted access \n", + "21 kg Restricted access Restricted access \n", + "22 kg Restricted access Restricted access \n", + "23 kg Restricted access Restricted access \n", + "24 kg white female \n", + "25 kg white female \n", + "26 kg white female \n", + "27 kg white female \n", + "28 kg white female \n", + "29 kg white female \n", + "30 kg white female \n", + "31 kg white female \n", + "32 kg white female \n", + "33 kg white female \n", + "34 kg white female \n", + "35 kg white female \n", + "36 kg white female \n", + "37 kg Restricted access Restricted access \n", + "38 kg Restricted access Restricted access \n", + "39 kg Restricted access Restricted access \n", + "40 kg Restricted access Restricted access \n", + "41 kg Restricted access Restricted access \n", + "42 kg Restricted access Restricted access \n", + "43 kg Restricted access Restricted access \n", + "44 kg Restricted access Restricted access \n", + "45 kg Restricted access Restricted access \n", + "46 kg Restricted access Restricted access \n", + "47 kg Restricted access Restricted access \n", + "48 kg white male \n", + "49 kg white male \n", + "50 kg white male \n", + "51 kg white male \n", + "52 kg white male \n", + "53 kg white male \n", + "54 kg white male \n", + "\n", + "[55 rows x 22 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
abundancegrowth_ratereactionsmetabolitestaxontradeoffsample_idUnnamed: 0collection_timestampday_relative_to_fmt...host_agehost_age_unitshost_body_mass_indexhost_heighthost_height_unitshost_subject_idhost_weighthost_weight_unitsracesex
00.1879080.14727832931883Bacteroides0.8ERR1883195122011-10-2426...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
10.1000000.07851218441401Clostridioides0.8ERR1883195122011-10-2426...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
20.1309150.10247219861472Faecalibacterium0.8ERR1883195122011-10-2426...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
30.0849380.06664428791747Parabacteroides0.8ERR1883195122011-10-2426...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
40.4962380.38960627121656Phocaeicola0.8ERR1883195122011-10-2426...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
50.1700930.24855332931883Bacteroides0.8ERR1883207242012-01-1244...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
60.0719920.10804822351371Barnesiella0.8ERR1883207242012-01-1244...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
70.0706530.10147328081732Blautia0.8ERR1883207242012-01-1244...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
80.1000000.14365318441401Clostridioides0.8ERR1883207242012-01-1244...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
90.0905260.12987219861472Faecalibacterium0.8ERR1883207242012-01-1244...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
100.0831220.12211928791747Parabacteroides0.8ERR1883207242012-01-1244...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
110.4136140.60724427121656Phocaeicola0.8ERR1883207242012-01-1244...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
120.7599540.30061922741386Akkermansia0.8ERR1883214322011-07-260...39years29.3165.1mCD180.1kgwhitefemale
130.1000000.14446118441401Clostridioides0.8ERR1883214322011-07-260...39years29.3165.1mCD180.1kgwhitefemale
140.0551020.04118335322001Clostridium0.8ERR1883214322011-07-260...39years29.3165.1mCD180.1kgwhitefemale
150.0130390.00924428261639Erysipelatoclostridium0.8ERR1883214322011-07-260...39years29.3165.1mCD180.1kgwhitefemale
160.0351750.02506712741138Paeniclostridium0.8ERR1883214322011-07-260...39years29.3165.1mCD180.1kgwhitefemale
170.0367300.03172416521308Veillonella0.8ERR1883214322011-07-260...39years29.3165.1mCD180.1kgwhitefemale
180.0947040.13386332931883Bacteroides0.8ERR1883212302012-10-10135...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
190.0921680.13029028081732Blautia0.8ERR1883212302012-10-10135...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
200.1116380.15782118441401Clostridioides0.8ERR1883212302012-10-10135...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
210.3124430.44168319861472Faecalibacterium0.8ERR1883212302012-10-10135...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
220.2418900.34191327121656Phocaeicola0.8ERR1883212302012-10-10135...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
230.1471570.20803228601805Streptococcus0.8ERR1883212302012-10-10135...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
240.5650870.12883522741386Akkermansia0.8ERR1883240582012-02-14pre-FMT...47years35.51.55mCD985.1kgwhitefemale
250.1000000.37769818441401Clostridioides0.8ERR1883240582012-02-14pre-FMT...47years35.51.55mCD985.1kgwhitefemale
260.0882900.32380421971602Fusobacterium0.8ERR1883240582012-02-14pre-FMT...47years35.51.55mCD985.1kgwhitefemale
270.2466230.92864216521308Veillonella0.8ERR1883240582012-02-14pre-FMT...47years35.51.55mCD985.1kgwhitefemale
280.2020850.26766022741386Akkermansia0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
290.2462830.41225728081732Blautia0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
300.1057840.17644618441401Clostridioides0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
310.0201610.03384019661392Coprobacillus0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
320.0127060.02321711871056Dialister0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
330.2101210.35343028261639Erysipelatoclostridium0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
340.0142040.02233312071105Flavonifractor0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
350.0132170.02169113691170Lachnospira0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
360.1754380.29540426811578Mediterraneibacter0.8ERR1883250682011-12-23pre-FMT...53years34.41.56mCD1383.9kgwhitefemale
370.0458960.06908426501613Alistipes0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
380.0125590.01783020341491Anaerostipes0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
390.1684000.24390332931883Bacteroides0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
400.0561720.08309022351371Barnesiella0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
410.0274010.03918428081732Blautia0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
420.1000000.14158318441401Clostridioides0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
430.0212360.02993820731577Eubacterium0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
440.0272870.03857219861472Faecalibacterium0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
450.1040090.15102328791747Parabacteroides0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
460.0107320.01249710801019Parasutterella0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
470.4263100.61956927121656Phocaeicola0.8ERR1883225432011-07-2654...Restricted accessyearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access
480.1925910.36067818441401Clostridioides0.8ERR18832941122011-09-290...61years32.51.727mCD397.3kgwhitemale
490.1978350.37050321971602Fusobacterium0.8ERR18832941122011-09-290...61years32.51.727mCD397.3kgwhitemale
500.1941530.36360112061068Megasphaera0.8ERR18832941122011-09-290...61years32.51.727mCD397.3kgwhitemale
510.0984160.18430915771286Morganella0.8ERR18832941122011-09-290...61years32.51.727mCD397.3kgwhitemale
520.0257750.04292410801019Parasutterella0.8ERR18832941122011-09-290...61years32.51.727mCD397.3kgwhitemale
530.0840210.15678428601805Streptococcus0.8ERR18832941122011-09-290...61years32.51.727mCD397.3kgwhitemale
540.2072080.38804916521308Veillonella0.8ERR18832941122011-09-290...61years32.51.727mCD397.3kgwhitemale
\n", + "

55 rows Γ— 22 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 112 + } + ], + "source": [ + "growth_rates=pd.merge(growth.growth_rates,metadata,on='sample_id')\n", + "growth_rates" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "F5BK7DDv0UfA" + }, + "source": [ + "### ↔️ Exchange Fluxes\n", + "\n", + "More interesting are the exchange fluxes. These reactions represent the import and export of metabolites from the system Let's look at those now:" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 + }, + "id": "lQW2BBS10jdN", + "outputId": "d0ebb86e-549a-4727-8f9c-4461c25eeeca" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " taxon sample_id tolerance reaction flux \\\n", + "0 Bacteroides ERR1883195 0.0001 EX_MGlcn150(e) -0.001865 \n", + "1 Bacteroides ERR1883195 0.0001 EX_MGlcn180(e) -0.001879 \n", + "4 Bacteroides ERR1883195 0.0001 EX_MGlcn81_rl(e) 0.002123 \n", + "5 Bacteroides ERR1883195 0.0001 EX_MGlcn24(e) -0.002457 \n", + "6 Bacteroides ERR1883195 0.0001 EX_MGlcn165(e) 0.004506 \n", + "... ... ... ... ... ... \n", + "22046 medium ERR1883294 0.0001 EX_MGlcn170_rl_m -0.000192 \n", + "22050 medium ERR1883294 0.0001 EX_nmn_m -0.100040 \n", + "22056 medium ERR1883294 0.0001 EX_akg_m 0.000115 \n", + "22070 medium ERR1883294 0.0001 EX_oaa_m 0.000154 \n", + "22078 medium ERR1883294 0.0001 EX_xtsn_m 0.000457 \n", + "\n", + " abundance metabolite direction \n", + "0 0.208787 MGlcn150[e] import \n", + "1 0.208787 MGlcn180[e] import \n", + "4 0.208787 MGlcn81_rl[e] export \n", + "5 0.208787 MGlcn24[e] import \n", + "6 0.208787 MGlcn165[e] export \n", + "... ... ... ... \n", + "22046 NaN MGlcn170_rl_m import \n", + "22050 NaN nmn_m import \n", + "22056 NaN akg_m export \n", + "22070 NaN oaa_m export \n", + "22078 NaN xtsn_m export \n", + "\n", + "[10597 rows x 8 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
taxonsample_idtolerancereactionfluxabundancemetabolitedirection
0BacteroidesERR18831950.0001EX_MGlcn150(e)-0.0018650.208787MGlcn150[e]import
1BacteroidesERR18831950.0001EX_MGlcn180(e)-0.0018790.208787MGlcn180[e]import
4BacteroidesERR18831950.0001EX_MGlcn81_rl(e)0.0021230.208787MGlcn81_rl[e]export
5BacteroidesERR18831950.0001EX_MGlcn24(e)-0.0024570.208787MGlcn24[e]import
6BacteroidesERR18831950.0001EX_MGlcn165(e)0.0045060.208787MGlcn165[e]export
...........................
22046mediumERR18832940.0001EX_MGlcn170_rl_m-0.000192NaNMGlcn170_rl_mimport
22050mediumERR18832940.0001EX_nmn_m-0.100040NaNnmn_mimport
22056mediumERR18832940.0001EX_akg_m0.000115NaNakg_mexport
22070mediumERR18832940.0001EX_oaa_m0.000154NaNoaa_mexport
22078mediumERR18832940.0001EX_xtsn_m0.000457NaNxtsn_mexport
\n", + "

10597 rows Γ— 8 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 102 + } + ], + "source": [ + "growth.exchanges" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Pu5XtkUl1YG1" + }, + "source": [ + "So we see how much of each metabolite is either consumed or produced by each taxon in each sample. `tolerance` denotes the accuracy of the solver and tells you the smallest absolute flux that is likely different form zero (i.e., substantial flux). *All of the fluxes are normalized to 1g dry weight of bacteria*. So, you can directly compare fluxes between taxa, even if they are present at very different abundances.\n", + "\n", + "If you're curious what the abbreviation for each of these metabolites represents, that can be found in the annotations dataframe. For instance, let's find out what `\"tre[e]\"` represents." + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 112 + }, + "id": "DphXa9hw1yxM", + "outputId": "4bf58c2c-2cc4-47b0-e4af-e7e7b827e54d" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " metabolite name molecular_weight C_number N_number \\\n", + "reaction \n", + "EX_tre(e) tre[e] Trehalose 342.29648 12 0 \n", + "\n", + " hmdb inchi kegg.compound pubchem.compound chebi reaction \n", + "reaction \n", + "EX_tre(e) HMDB00975 NaN C01083 7427 NaN EX_tre(e) " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metabolitenamemolecular_weightC_numberN_numberhmdbinchikegg.compoundpubchem.compoundchebireaction
reaction
EX_tre(e)tre[e]Trehalose342.29648120HMDB00975NaNC010837427NaNEX_tre(e)
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 83 + } + ], + "source": [ + "anns = growth.annotations\n", + "anns[anns.metabolite == \"tre[e]\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GVHLD2dm4a6B" + }, + "source": [ + "Trehalose! Interesting, [that's an important metabolite](https://pubmed.ncbi.nlm.nih.gov/34277467/) in the context of CDI! All of these annotations and more information at are also available at https://vmh.life, maintained by Dr. Ines Thiele's lab." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CImtzqRJbbGj" + }, + "source": [ + "\n", + "# πŸ“Š Visualizations\n", + "\n", + "Let's visualize our results. Because of the rich output of these models, it can be overwhelming to represent it all, but don't worry! There are tools in place for this already.\n", + "\n", + "We will use the standard visualizations included in MICOM. These tools take in the growth results we obtained before and create visualizations in standalone HTML files that bundle the plots and raw data and can be viewed directly in your browser.\n", + "\n", + "First, let's look at the growth rates of each taxon across samples." + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": { + "id": "EaplMHFLcMT7" + }, + "outputs": [], + "source": [ + "from micom.viz import *\n", + "\n", + "viz = plot_growth(growth, filename=\"growthrates.html\")" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Normally, we could call `viz.view()` afterwards and it would open it in our web browser. However, this will not work in Colab. However, the plot function creates the file `growth_rates_[DATE].html` in your `materials` folder. To open it, simply download that file and view it in your web browser. We can see that there are many things going on, but it's not super clear. Let's continue." + ], + "metadata": { + "id": "_sjNIuCSXkyb" + } + }, + { + "cell_type": "markdown", + "source": [ + "We're interested in understanding the invasion potential of C. diff so lets extract the predicted C. diff growth rates. In addition to C. diff growth rate we can also look at what fraction of the community growth rate this represents.\n", + "\n" + ], + "metadata": { + "id": "qPTCyw-7RqFm" + } + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 436 + }, + "id": "9YlWytSp-yKI", + "outputId": "c77dda37-1dd1-4ccf-a99c-cdb1519c5e8a" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " abundance growth_rate reactions metabolites taxon tradeoff \\\n", + "1 0.100000 0.078512 1844 1401 Clostridioides 0.8 \n", + "8 0.100000 0.143653 1844 1401 Clostridioides 0.8 \n", + "13 0.100000 0.144461 1844 1401 Clostridioides 0.8 \n", + "20 0.111638 0.157821 1844 1401 Clostridioides 0.8 \n", + "25 0.100000 0.377698 1844 1401 Clostridioides 0.8 \n", + "30 0.105784 0.176446 1844 1401 Clostridioides 0.8 \n", + "42 0.100000 0.141583 1844 1401 Clostridioides 0.8 \n", + "48 0.192591 0.360678 1844 1401 Clostridioides 0.8 \n", + "\n", + " sample_id Unnamed: 0 collection_timestamp day_relative_to_fmt ... \\\n", + "1 ERR1883195 12 2011-10-24 26 ... \n", + "8 ERR1883207 24 2012-01-12 44 ... \n", + "13 ERR1883214 32 2011-07-26 0 ... \n", + "20 ERR1883212 30 2012-10-10 135 ... \n", + "25 ERR1883240 58 2012-02-14 pre-FMT ... \n", + "30 ERR1883250 68 2011-12-23 pre-FMT ... \n", + "42 ERR1883225 43 2011-07-26 54 ... \n", + "48 ERR1883294 112 2011-09-29 0 ... \n", + "\n", + " host_age_units host_body_mass_index host_height host_height_units \\\n", + "1 years Restricted access Restricted access m \n", + "8 years Restricted access Restricted access m \n", + "13 years 29.3 165.1 m \n", + "20 years Restricted access Restricted access m \n", + "25 years 35.5 1.55 m \n", + "30 years 34.4 1.56 m \n", + "42 years Restricted access Restricted access m \n", + "48 years 32.5 1.727 m \n", + "\n", + " host_subject_id host_weight host_weight_units race \\\n", + "1 Donor Restricted access kg Restricted access \n", + "8 Donor Restricted access kg Restricted access \n", + "13 CD1 80.1 kg white \n", + "20 Donor Restricted access kg Restricted access \n", + "25 CD9 85.1 kg white \n", + "30 CD13 83.9 kg white \n", + "42 Donor Restricted access kg Restricted access \n", + "48 CD3 97.3 kg white \n", + "\n", + " sex abundance_weighted_growth_rate \n", + "1 Restricted access 0.007851 \n", + "8 Restricted access 0.014365 \n", + "13 female 0.014446 \n", + "20 Restricted access 0.017619 \n", + "25 female 0.037770 \n", + "30 female 0.018665 \n", + "42 Restricted access 0.014158 \n", + "48 male 0.069463 \n", + "\n", + "[8 rows x 23 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
abundancegrowth_ratereactionsmetabolitestaxontradeoffsample_idUnnamed: 0collection_timestampday_relative_to_fmt...host_age_unitshost_body_mass_indexhost_heighthost_height_unitshost_subject_idhost_weighthost_weight_unitsracesexabundance_weighted_growth_rate
10.1000000.07851218441401Clostridioides0.8ERR1883195122011-10-2426...yearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access0.007851
80.1000000.14365318441401Clostridioides0.8ERR1883207242012-01-1244...yearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access0.014365
130.1000000.14446118441401Clostridioides0.8ERR1883214322011-07-260...years29.3165.1mCD180.1kgwhitefemale0.014446
200.1116380.15782118441401Clostridioides0.8ERR1883212302012-10-10135...yearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access0.017619
250.1000000.37769818441401Clostridioides0.8ERR1883240582012-02-14pre-FMT...years35.51.55mCD985.1kgwhitefemale0.037770
300.1057840.17644618441401Clostridioides0.8ERR1883250682011-12-23pre-FMT...years34.41.56mCD1383.9kgwhitefemale0.018665
420.1000000.14158318441401Clostridioides0.8ERR1883225432011-07-2654...yearsRestricted accessRestricted accessmDonorRestricted accesskgRestricted accessRestricted access0.014158
480.1925910.36067818441401Clostridioides0.8ERR18832941122011-09-290...years32.51.727mCD397.3kgwhitemale0.069463
\n", + "

8 rows Γ— 23 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 121 + } + ], + "source": [ + "cdiff = growth_rates[growth_rates.taxon=='Clostridioides'].copy()\n", + "cdiff" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Now that we've extracted the C. diff specific growth rates lets take a look at how they compare between patients with healthy and disbiotic gut microbiomes" + ], + "metadata": { + "id": "bQKYxSZTSPk1" + } + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 468 + }, + "id": "AWG3U094-_OI", + "outputId": "ef7e9ff0-9348-48ba-af7f-d05c65ad91d6" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 122 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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AABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMp1EEoIULFyo2NlY2m03Jycnatm3beduuWrVKSUlJCg0NVWBgoBITE7Vy5UqXNoZhKCsrS5GRkfL391dKSoq++uqrhj4NAABwhfB6AMrNzVVmZqZmzpypHTt2qHv37kpNTdWhQ4dqbd+qVSs9/vjjys/P12effaaMjAxlZGTogw8+cLaZN2+eXnjhBS1evFhbt25VYGCgUlNTVVlZeblOCwAANGJeD0ALFizQxIkTlZGRoWuvvVaLFy9WQECAXn755VrbDxw4UCNGjFDXrl3VqVMnPfzww0pISNDmzZslnR79ycnJ0R//+EcNGzZMCQkJWrFihQ4cOKA1a9ZcxjMDAACNlVcDUFVVlbZv366UlBTnOh8fH6WkpCg/P/+i+xuGIbvdrj179uimm26SJO3du1fFxcUufYaEhCg5Ofm8fTocDpWVlbksAACg6fJqADpy5Iiqq6sVHh7usj48PFzFxcXn3a+0tFRBQUHy8/PTLbfcohdffFG/+tWvJMm5X336zM7OVkhIiHOJiYm5lNMCAACNnNcvgbmjRYsW2rlzpz7++GM99dRTyszMVF5entv9TZ8+XaWlpc5l3759nisWAAA0Os28efCwsDD5+vqqpKTEZX1JSYkiIiLOu5+Pj4/i4uIkSYmJidq9e7eys7M1cOBA534lJSWKjIx06TMxMbHW/qxWq6xW6yWeDQAAuFJ4dQTIz89PvXr1kt1ud66rqamR3W7XDTfcUOd+ampq5HA4JEkdOnRQRESES59lZWXaunVrvfoEAABNl1dHgCQpMzNTd911l5KSktSnTx/l5OSooqJCGRkZkqT09HRFR0crOztb0un5OklJSerUqZMcDofef/99rVy5UosWLZIkWSwWTZkyRU8++aQ6d+6sDh06aMaMGYqKitLw4cO9dZoAAKAR8XoAGjNmjA4fPqysrCwVFxcrMTFR69atc05iLiwslI/PTwNVFRUVeuCBB1RUVCR/f3916dJFr776qsaMGeNs89hjj6miokL33Xefjh8/rn79+mndunWy2WyX/fwAAEDjYzEMw/B2EY1NWVmZQkJCVFpaquDgYG+XA+AKcvLkSQ0ZMkSStGTAUVl9vVwQ0Ag4qqWJm1pLktauXSt/f/8GOU59/n5fkd8CAwAAuBQEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDrNvF0AADQlhmE4XzuqvVgI0Iic/Vk4+zPiTQQgAPAgh8PhfD1pc2svVgI0Tg6HQwEBAd4ug0tgAADAfBgBAgAPslqtztcv9Tsqq68XiwEaCUf1TyOiZ39GvIkABAAeZLFYnK+tviIAAT9z9mfEm7gEBgAATIcABAAATIcABAAATOeSAlBVVZX27NmjU6dOeaoeAACABudWAPrhhx90zz33KCAgQN26dVNhYaEk6aGHHtLcuXM9WiAAAICnuRWApk+frk8//VR5eXmy2WzO9SkpKcrNzfVYcQAAAA3Bra/Br1mzRrm5ubr++utdvs7WrVs3FRQUeKw4AACAhuDWCNDhw4fVtm3bc9ZXVFQ0mu/3AwAAnI9bASgpKUnvvfee8/2Z0LN06VLdcMMNnqkMAACggbh1Cezpp5/WkCFDtGvXLp06dUp/+tOftGvXLm3ZskWbNm3ydI0AAAAe5dYIUL9+/bRz506dOnVK8fHxWr9+vdq2bav8/Hz16tXL0zUCAAB4lNvPAuvUqZOWLFniyVoAAAAuC7dGgHx9fXXo0KFz1h89elS+vjz5DwAANG5uBSDDMGpd73A45Ofnd0kFAQAANLR6XQJ74YUXJJ3+1tfSpUsVFBTk3FZdXa1//OMf6tKlS72LWLhwoZ599lkVFxere/fuevHFF9WnT59a2y5ZskQrVqzQv//9b0lSr1699PTTT7u0nzBhgl555RWX/VJTU7Vu3bp61wYAAJqeegWg559/XtLpEaDFixe7XO7y8/NTbGysFi9eXK8CcnNzlZmZqcWLFys5OVk5OTlKTU3Vnj17ar3XUF5enm6//Xb17dtXNptNzzzzjAYPHqwvvvhC0dHRznZpaWlatmyZ873Vaq1XXQAAoOmqVwDau3evJOkXv/iFVq1apZYtW15yAQsWLNDEiROVkZEhSVq8eLHee+89vfzyy/r9739/TvvXXnvN5f3SpUv19ttvy263Kz093bnearUqIiLikusDAABNj1tzgP7+9797JPxUVVVp+/btSklJ+akgHx+lpKQoPz+/Tn388MMP+vHHH9WqVSuX9Xl5eWrbtq2uueYa3X///Tp69Oh5+3A4HCorK3NZAABA0+X21+CLior0zjvvqLCwUFVVVS7bFixYUKc+jhw5ourqaoWHh7usDw8P15dfflmnPn73u98pKirKJUSlpaXptttuU4cOHVRQUKA//OEPGjJkiPLz82v9llp2draeeOKJOh0PAABc+dwKQHa7Xbfeeqs6duyoL7/8Utddd52+/fZbGYahnj17errG85o7d67eeOONc55KP3bsWOfr+Ph4JSQkqFOnTsrLy9OgQYPO6Wf69OnKzMx0vi8rK1NMTEzDFg8AALzGrUtg06dP17Rp0/T555/LZrPp7bff1r59+zRgwACNHj26zv2EhYXJ19dXJSUlLutLSkouOn9n/vz5mjt3rtavX6+EhIQLtu3YsaPCwsL09ddf17rdarUqODjYZQEAAE2XWwFo9+7dzgnHzZo108mTJxUUFKTZs2frmWeeqXM/fn5+6tWrl+x2u3NdTU2N7Hb7BR+qOm/ePM2ZM0fr1q1TUlLSRY9TVFSko0ePKjIyss61AQCApsutABQYGOic9xMZGamCggLntiNHjtSrr8zMTC1ZskSvvPKKdu/erfvvv18VFRXOb4Wlp6dr+vTpzvbPPPOMZsyYoZdfflmxsbEqLi5WcXGxysvLJUnl5eV69NFH9c9//lPffvut7Ha7hg0bpri4OKWmprpzugAAoIlxaw7Q9ddfr82bN6tr1666+eabNXXqVH3++edatWqVrr/++nr1NWbMGB0+fFhZWVkqLi5WYmKi1q1b55wYXVhYKB+fn3LaokWLVFVVpVGjRrn0M3PmTM2aNUu+vr767LPP9Morr+j48eOKiorS4MGDNWfOHO4FBAAAJEkW43zPtbiAb775RuXl5UpISFBFRYWmTp2qLVu2qHPnzlqwYIHat2/fELVeNmVlZQoJCVFpaSnzgQDUy8mTJzVkyBBJ0pIBR2Xl8YiAHNXSxE2tJUlr166Vv79/gxynPn+/6z0CVF1draKiIufE48DAwHrf/RkAAMCb6j0HyNfXV4MHD9axY8caoh4AAIAG59Yk6Ouuu07ffPONp2sBAAC4LNwKQE8++aSmTZumd999VwcPHuQxEgAA4Iri1rfAbr75ZknSrbfeKovF4lxvGIYsFouqq6s9Ux0AAEADcCsA/f3vf/d0HQAAAJeNWwFowIABdWr3wAMPaPbs2QoLC3PnMAAAAA3CrTlAdfXqq68yJwgAADQ6DRqA3LjHIgAAQINr0AAEAADQGBGAAACA6RCAAACA6RCAAACA6TRoALrjjjt4mjoAAGh03LoPkCQdP35c27Zt06FDh1RTU+OyLT09XZK0aNGiS6sOAACgAbgVgP7f//t/Gj9+vMrLyxUcHOzyOAyLxeIMQAAAAI2RW5fApk6dqrvvvlvl5eU6fvy4jh075ly+//57T9cIAADgUW4FoP3792vy5MkKCAjwdD0AAAANzq0AlJqaqk8++cTTtQAAAFwWdZ4D9M477zhf33LLLXr00Ue1a9cuxcfHq3nz5i5tb731Vs9VCAAA4GF1DkDDhw8/Z93s2bPPWWexWFRdXX1JRQEAADSkOgegn3/VHQAA4Erl1hygFStWyOFwnLO+qqpKK1asuOSiAAAAGpJbASgjI0OlpaXnrD9x4oQyMjIuuSgAAICG5FYAMgzD5eaHZxQVFSkkJOSSiwIAAGhI9boTdI8ePWSxWGSxWDRo0CA1a/bT7tXV1dq7d6/S0tI8XiQAAIAn1SsAnfkm2M6dO5WamqqgoCDnNj8/P8XGxmrkyJEeLRAAAMDT6hWAZs6cKUmKjY3V2LFjZbVaG6QoAACAhuTWHKCCggJt2bJFlZWVnq4HAACgwbkVgPLz8zV06FCFhoaqf//++uMf/6iNGzfq5MmTnq4PAADA49wKQBs2bNDx48dlt9t1880365NPPtFtt92m0NBQ9evXz9M1AgAAeFS95gC57NismW688Ua1adNGrVq1UosWLbRmzRp9+eWXnqwPAADA49waAfrrX/+qcePGKTo6Wn379tW6devUr18/ffLJJzp8+LCnawQAAPAot0aAfvvb36pNmzaaOnWqHnjgAZevwwMAADR2bo0ArVq1SuPHj9cbb7yhNm3aqG/fvvrDH/6g9evX64cffvB0jQAAAB7l1gjQ8OHDnTdFLC0t1Ycffqi//e1v+q//+i/5+Pjw9XgAANCouT0J+ujRo9q0aZPy8vKUl5enL774Qi1btlT//v09WR8AAIDHuRWA4uPjtXv3brVs2VI33XSTJk6cqAEDBighIcHT9QEAAHic25OgBwwYoOuuu87T9QAAADQ4twLQgw8+6HxtGIYkyWKxeKYiAACABubWt8AkacWKFYqPj5e/v7/8/f2VkJCglStXerI2AACABuHWCNCCBQs0Y8YMTZo0STfeeKMkafPmzfrtb3+rI0eO6JFHHvFokQAAAJ7kVgB68cUXtWjRIqWnpzvX3XrrrerWrZtmzZpFAAIAAI2aW5fADh48qL59+56zvm/fvjp48OAlFwUAANCQ3ApAcXFxevPNN89Zn5ubq86dO19yUQAAAA3JrQD0xBNPKCsrS2lpaZozZ47mzJmjtLQ0PfHEE5o9e3a9+1u4cKFiY2Nls9mUnJysbdu2nbftkiVL1L9/f7Vs2VItW7ZUSkrKOe0Nw1BWVpYiIyPl7++vlJQUffXVV/WuCwAANE1uBaCRI0dq27ZtCgsL05o1a7RmzRqFhYVp27ZtGjFiRL36ys3NVWZmpmbOnKkdO3aoe/fuSk1N1aFDh2ptn5eXp9tvv11///vflZ+fr5iYGA0ePFj79+93tpk3b55eeOEFLV68WFu3blVgYKBSU1N5RAcAAJAkWYwzN/Kpox9//FG/+c1vNGPGDHXo0OGSC0hOTlbv3r310ksvSZJqamoUExOjhx56SL///e8vun91dbVatmypl156Senp6TIMQ1FRUZo6daqmTZsm6fTzysLDw7V8+XKNHTv2on2WlZUpJCREpaWlCg4OvrQTBGAqJ0+e1JAhQyRJSwYcldXXywUBjYCjWpq4qbUkae3atfL392+Q49Tn73e9R4CaN2+ut99+2+3izlZVVaXt27crJSXlp4J8fJSSkqL8/Pw69fHDDz/oxx9/VKtWrSRJe/fuVXFxsUufISEhSk5OPm+fDodDZWVlLgsAAGi63LoENnz4cK1Zs+aSD37kyBFVV1crPDzcZX14eLiKi4vr1Mfvfvc7RUVFOQPPmf3q02d2drZCQkKcS0xMTH1PBQAAXEHcug9Q586dNXv2bH300Ufq1auXAgMDXbZPnjzZI8VdzNy5c/XGG28oLy9PNpvN7X6mT5+uzMxM5/uysjJCEAAATZhbAei///u/FRoaqu3bt2v79u0u2ywWS50DUFhYmHx9fVVSUuKyvqSkRBERERfcd/78+Zo7d642btzo8hT6M/uVlJQoMjLSpc/ExMRa+7JarbJarXWqGQAAXPncCkB79+71yMH9/PzUq1cv2e12DR8+XNLpSdB2u12TJk06737z5s3TU089pQ8++EBJSUku2zp06KCIiAjZ7XZn4CkrK9PWrVt1//33e6RuAABwZXMrAJ19uehsFotFNptNcXFxGjZsmHNi8sX6uuuuu5SUlKQ+ffooJydHFRUVysjIkCSlp6crOjpa2dnZkqRnnnlGWVlZev311xUbG+uc1xMUFKSgoCBZLBZNmTJFTz75pDp37qwOHTpoxowZioqKcoYsAABgbm4FoH/961/asWOHqqurdc0110iS/vOf/8jX11ddunTRn//8Z02dOlWbN2/Wtddee8G+xowZo8OHDysrK0vFxcVKTEzUunXrnJOYCwsL5ePz01ztRYsWqaqqSqNGjXLpZ+bMmZo1a5Yk6bHHHlNFRYXuu+8+HT9+XP369dO6desuaZ4QAABoOup9HyBJysnJ0Ycffqhly5Y5v2dfWlqqe++9V/369dPEiRM1btw4nTx5Uh988IHHi25o3AcIgLu4DxBwriZxHyBJevbZZzVnzhyXzkNCQjRr1izNmzdPAQEBysrKOmeCNAAAQGPgVgAqLS2t9VEVhw8fdt5EMDQ0VFVVVZdWHQAAQANwKwANGzZMd999t1avXq2ioiIVFRVp9erVuueee5wTjbdt26arr77ak7UCAAB4hFuToP/yl7/okUce0dixY3Xq1KnTHTVrprvuukvPP/+8JKlLly5aunSp5yoFAADwELcCUFBQkJYsWaLnn39e33zzjSSpY8eOCgoKcrY5300HAQAAvM2tAHRGUFCQy12YAQAArgRuzQECAAC4khGAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6RCAAACA6TTzdgEA0FQ5qi2SDG+XYVqGIVXVnH7t5yNZLN6tx8xOfxYaFwIQADSQSZtbebsEAOfBJTAAAGA6jAABgAfZbDatXbvW22VAUmVlpUaMGCFJWr16tWw2m5crgqRG83MgAAGAB1ksFvn7+3u7DPyMzWbj5wIXXAIDAACmQwACAACmQwACAACmQwACAACmQwACAACmQwACAACmQwACAACmw32A4DbDMFRZWentMi6JYRhyOBySJKvVKksTeFiQzWZrEucBAA2JAAS3VVZWasiQId4uAz+zdu1abvgGABfBJTAAAGA6jADBbU3hmUdN8VlBTeEcAKChEYDgtqb2zCOeFQQA5sElMAAAYDqNIgAtXLhQsbGxstlsSk5O1rZt287b9osvvtDIkSMVGxsri8WinJycc9rMmjVLFovFZenSpUsDngEAALiSeD0A5ebmKjMzUzNnztSOHTvUvXt3paam6tChQ7W2/+GHH9SxY0fNnTtXERER5+23W7duOnjwoHPZvHlzQ50CAAC4wng9AC1YsEATJ05URkaGrr32Wi1evFgBAQF6+eWXa23fu3dvPfvssxo7dqysVut5+23WrJkiIiKcS1hYWEOdAgAAuMJ4NQBVVVVp+/btSklJca7z8fFRSkqK8vPzL6nvr776SlFRUerYsaPGjx+vwsLC87Z1OBwqKytzWQAAQNPl1QB05MgRVVdXKzw83GV9eHi4iouL3e43OTlZy5cv17p167Ro0SLt3btX/fv314kTJ2ptn52drZCQEOcSExPj9rEBAEDj5/VLYA1hyJAhGj16tBISEpSamqr3339fx48f15tvvllr++nTp6u0tNS57Nu37zJXDAAALiev3gcoLCxMvr6+KikpcVlfUlJywQnO9RUaGqqrr75aX3/9da3brVbrBecTeVpTeIZWU3H2z4GfSePB88wANDSvBiA/Pz/16tVLdrtdw4cPlyTV1NTIbrdr0qRJHjtOeXm5CgoKdOedd3qsz0vBM7QapzN3hIb38TwzAA3N63eCzszM1F133aWkpCT16dNHOTk5qqioUEZGhiQpPT1d0dHRys7OlnR64vSuXbucr/fv36+dO3cqKChIcXFxkqRp06Zp6NChat++vQ4cOKCZM2fK19dXt99+u3dOEgAANCpeD0BjxozR4cOHlZWVpeLiYiUmJmrdunXOidGFhYXy8flpqtKBAwfUo0cP5/v58+dr/vz5GjBggPLy8iRJRUVFuv3223X0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y4MABNTCYrFozZo13i4DaNImTJggi8Uii8UiPz8/xcXFafbs2Tp16lSDHefs5euvv3bZ/tvf/vacfR988EFZLBZNmDBBkmrt5+xl1qxZHq0dDYcbIQIAvCYtLU3Lli2Tw+HQ+++/rwcffFDNmzfX9OnTXdpVVVXJz8/vko9ztjZt2jhfx8TE6I033tDzzz8vf39/SVJlZaVef/11tWvXztnu4MGDzte5ubnKysrSnj17nOuCgoLcrhGXFyNAuCLU1NToscceU6tWrRQREeHyf1nHjx/XvffeqzZt2ig4OFi//OUv9emnnzq3FxQUaNiwYQoPD1dQUJB69+6tjRs3nvdYsbGxkqQRI0bIYrE435+xcuVKxcbGKiQkRGPHjnU+O27FihVq3bq1HA6HS/vhw4frzjvvvLR/AKCJslqtioiIUPv27XX//fcrJSVF77zzjiZMmKDhw4frqaeeUlRUlK655hpJ0r59+/TrX/9aoaGhatWqlYYNG6Zvv/22zsc5e/H19XVu79mzp2JiYrRq1SrnulWrVqldu3bq0aOHc93Z+4eEhMhisbisIwBdOQhAuCK88sorCgwM1NatWzVv3jzNnj1bGzZskCSNHj1ahw4d0tq1a7V9+3b17NlTgwYN0vfffy9JKi8v18033yy73a5//etfSktL09ChQ1VYWFjrsT7++GNJ0rJly3Tw4EHne+l0mFqzZo3effddvfvuu9q0aZPmzp3rrKO6ulrvvPOOs/2hQ4f03nvv6e67726QfxegqfH391dVVZUkyW63a8+ePdqwYYPeffdd/fjjj0pNTVWLFi304Ycf6qOPPlJQUJDS0tKc+1yKu+++22WU6OWXX1ZGRsYl94vGiQCEK0JCQoJmzpypzp07Kz09XUlJSbLb7dq8ebO2bdumv/3tb0pKSlLnzp01f/58hYaG6q233pIkde/eXb/5zW903XXXqXPnzpozZ446derkElTOdmZYPDQ0VBERES7D5DU1NVq+fLmuu+469e/fX3feeafsdruk07+4x40b5/IL9NVXX1W7du00cODABvqXAZoGwzC0ceNGffDBB/rlL38pSQoMDNTSpUvVrVs3devWTbm5uaqpqdHSpUsVHx+vrl27atmyZSosLFReXt4F+3/33XcVFBTkXEaPHn1OmzvuuEObN2/Wd999p++++04fffSR7rjjjoY4XTQCzAHCFSEhIcHlfWRkpA4dOqRPP/1U5eXlat26tcv2kydPqqCgQNLpEaBZs2bpvffe08GDB3Xq1CmdPHnyvCNAFxIbG6sWLVqcU8cZEydOVO/evbV//35FR0dr+fLlzgmWAM51Jpj8+OOPqqmp0bhx4zRr1iw9+OCDio+Pd5n38+mnn+rrr792+QxKp+fqFBQU6MMPP9SQIUOc6//yl79o/PjxkqRf/OIXWrRokXNbYGDgObW0adNGt9xyi5YvXy7DMHTLLbcoLCzM06eMRoIAhCtC8+bNXd5bLBbV1NSovLxckZGRtf7fX2hoqCRp2rRp2rBhg+bPn6+4uDj5+/tr1KhRbg2Zn6+OM3r06KHu3btrxYoVGjx4sL744gu999579T4OYBZngomfn5+ioqLUrNlPf5Z+HlLKy8vVq1cvvfbaa+f006ZNG/n5+Wnnzp3OdeHh4S59xcXFXbSeu+++W5MmTZIkLVy4sL6ngysIAQhXtJ49e6q4uFjNmjU7Z7LyGR999JEmTJigESNGSDr9S/RikyabN2+u6upqt2q69957lZOTo/379yslJUUxMTFu9QOYQV2DiXT6856bm6u2bdsqODi41jZ17et8zswnslgsSk1NvaS+0LgxBwhXtJSUFN1www0aPny41q9fr2+//VZbtmzR448/rk8++USS1LlzZ61atUo7d+7Up59+qnHjxrmM2tQmNjZWdrtdxcXFOnbsWL1qGjdunIqKirRkyRImPwMeNH78eIWFhWnYsGH68MMPtXfvXuXl5Wny5MkqKiryyDF8fX21e/du7dq1y+VbYmh6CEC4olksFr3//vu66aablJGRoauvvlpjx47Vd9995xz+XrBggVq2bKm+fftq6NChSk1NVc+ePS/Y73PPPacNGzYoJibG5SuwdRESEqKRI0cqKChIw4cPd/fUAPxMQECA/vGPf6hdu3a67bbb1LVrV91zzz2qrKw874iQO4KDgz3aHxonngYPNIBBgwapW7dueuGFF7xdCgCgFgQgwIOOHTumvLw8jRo1Srt27XLevA0A0LgwCRrwoB49eujYsWN65plnCD8A0IgxAgQAAEyHSdAAAMB0CEAAAMB0CEAAAMB0CEAAAMB0CEAAAMB0CEAAPGrgwIGaMmWKpNOPFMnJyfFqPQBQGwIQgAbz8ccf67777vN2GQ3OYrFozZo19d6PgAh4DzdCBNBg2rRp4+0SAKBWjAABcFtFRYXS09MVFBSkyMhIPffccy7bzx7hMAxDs2bNUrt27WS1WhUVFaXJkyc72zocDk2bNk3R0dEKDAxUcnKy8vLynNuPHj2q22+/XdHR0QoICFB8fLz+53/+x+V4b731luLj4+Xv76/WrVsrJSVFFRUVzu1Lly5V165dZbPZ1KVLF/35z3+u03lWVVVp0qRJioyMlM1mU/v27ZWdne08R0kaMWKELBaL831BQYGGDRum8PBwBQUFqXfv3tq4caOzz4EDB+q7777TI488IovFIovF4ty2efNm9e/fX/7+/oqJidHkyZNdzgPApSMAAXDbo48+qk2bNul///d/tX79euXl5WnHjh21tn377bf1/PPP6y9/+Yu++uorrVmzRvHx8c7tkyZNUn5+vt544w199tlnGj16tNLS0vTVV19JkiorK9WrVy+99957+ve//6377rtPd955p7Zt2yZJOnjwoG6//Xbdfffd2r17t/Ly8nTbbbfpzM3uX3vtNWVlZempp57S7t279fTTT2vGjBl65ZVXLnqeL7zwgt555x29+eab2rNnj1577TVn0Pn4448lScuWLdPBgwed78vLy3XzzTfLbrfrX//6l9LS0jR06FAVFhZKklatWqWrrrpKs2fP1sGDB3Xw4EFJp4NTWlqaRo4cqc8++0y5ubnavHmzJk2aVN8fD4ALMQDADSdOnDD8/PyMN99807nu6NGjhr+/v/Hwww8bhmEY7du3N55//nnDMAzjueeeM66++mqjqqrqnL6+++47w9fX19i/f7/L+kGDBhnTp08/bw233HKLMXXqVMMwDGP79u2GJOPbb7+ttW2nTp2M119/3WXdnDlzjBtuuOGi5/rQQw8Zv/zlL42amppat0syVq9efdF+unXrZrz44ovO92f/+5xxzz33GPfdd5/Lug8//NDw8fExTp48edFjAKgbRoAAuKWgoEBVVVVKTk52rmvVqtV5HwI7evRonTx5Uh07dtTEiRO1evVqnTp1SpL0+eefq7q6WldffbWCgoKcy6ZNm1RQUCBJqq6u1pw5cxQfH69WrVopKChIH3zwgXNEpXv37ho0aJDi4+M1evRoLVmyRMeOHZN0+lJdQUGB7rnnHpf+n3zySWf/FzJhwgTt3LlT11xzjSZPnqz169dfdJ/y8nJNmzZNXbt2VWhoqIKCgrR7925nvefz6aefavny5S51pqamqqamRnv37r3ocQHUDZOgAVwWMTEx2rNnjzZu3KgNGzbogQce0LPPPqtNmzapvLxcvr6+2r59u3x9fV32CwoKkiQ9++yz+tOf/qScnBzFx8crMDBQU6ZMUVVVlSTJ19dXGzZs0JYtW7R+/Xq9+OKLevzxx7V161YFBARIkpYsWeIS2M7sdzE9e/bU3r17tXbtWm3cuFG//vWvlZKSorfeeuu8+0ybNk0bNmzQ/PnzFRcXJ39/f40aNcpZ7/mUl5frN7/5jcv8qDPatWt30VoB1A0BCIBbOnXqpObNm2vr1q3OP8zHjh3Tf/7zHw0YMKDWffz9/TV06FANHTpUDz74oLp06aLPP/9cPXr0UHV1tQ4dOqT+/fvXuu9HH32kYcOG6Y477pAk1dTU6D//+Y+uvfZaZxuLxaIbb7xRN954o7KystS+fXutXr1amZmZioqK0jfffKPx48e7db7BwcEaM2aMxowZo1GjRiktLU3ff/+9WrVqpebNm6u6uvqceidMmKARI0ZIOh1svv32W5c2fn5+5+zXs2dP7dq1S3FxcW7VCaBuCEAA3BIUFKR77rlHjz76qFq3bq22bdvq8ccfl49P7VfWly9frurqaiUnJysgIECvvvqq/P391b59e7Vu3Vrjx49Xenq6nnvuOfXo0UOHDx+W3W5XQkKCbrnlFnXu3FlvvfWWtmzZopYtW2rBggUqKSlxBqCtW7fKbrdr8ODBatu2rbZu3arDhw+ra9eukqQnnnhCkydPVkhIiNLS0uRwOPTJJ5/o2LFjyszMvOC5LliwQJGRkerRo4d8fHz0t7/9TREREQoNDZV0+ptgdrtdN954o6xWq1q2bKnOnTtr1apVGjp0qCwWi2bMmKGamhqXfmNjY/WPf/xDY8eOldVqVVhYmH73u9/p+uuv16RJk3TvvfcqMDBQu3bt0oYNG/TSSy9d4k8NgJO3JyEBuHKdOHHCuOOOO4yAgAAjPDzcmDdvnjFgwIBaJ0GvXr3aSE5ONoKDg43AwEDj+uuvNzZu3Ojsq6qqysjKyjJiY2ON5s2bG5GRkcaIESOMzz77zDCM0xOshw0bZgQFBRlt27Y1/vjHPxrp6enGsGHDDMMwjF27dhmpqalGmzZtDKvValx99dUuE44NwzBee+01IzEx0fDz8zNatmxp3HTTTcaqVasuep5//etfjcTERCMwMNAIDg42Bg0aZOzYscO5/Z133jHi4uKMZs2aGe3btzcMwzD27t1r/OIXvzD8/f2NmJgY46WXXnL5tzEMw8jPzzcSEhIMq9VqnP3reNu2bcavfvUrIygoyAgMDDQSEhKMp556qq4/FgB1YDGM//uOKAAAgEnwLTAAAGA6BCAApvf000+7fO387GXIkCHeLg9AA+ASGADT+/777/X999/Xus3f31/R0dGXuSIADY0ABAAATIdLYAAAwHQIQAAAwHQIQAAAwHQIQAAAwHQIQAAAwHQIQAAAwHQIQAAAwHQIQAAAwHT+P1ttMFgeFqLpAAAAAElFTkSuQmCC\n" + }, + "metadata": {} + } + ], + "source": [ + "import seaborn as sns\n", + "sns.boxplot(x='disease_state',y='growth_rate',data=cdiff)" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Looks like C. diff is predicted to grow in all samples but its predicted growth rate is ~2x higher in the Pre-FMT samples. You can see there is also a decent amount of variation in the Pre-FMT results." + ], + "metadata": { + "id": "MEuym_PVui-k" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "G1JbbKrLcVye" + }, + "source": [ + "## Growth niches\n", + "\n", + "Another thing we can look at is whether individual taxa inhabit different growth niches across different disease contexts. Here we can use the `plot_exchanges_per_taxon` function to see how exchanges differ within and between taxa, within and across human populations." + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": { + "id": "NlZrfv38esj8", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "6df836fd-71ac-4cfd-fd1c-883e9d31f311" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 89 + } + ], + "source": [ + "plot_exchanges_per_taxon(growth, perplexity=4, direction=\"import\", filename=\"niche.html\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qXnbUCCs2yVG" + }, + "source": [ + "\n", + "This function projects the full set of import or export fluxes onto a two dimensional plane, and arranges taxa so that more similar flux patterns lie nearer together. Taxa closer to one another compete for a more similar set of resources (and/or produce a more similar set of metabolites). The center of the plot signifies a more competitive nutrient space, whereas clusters on the outskirts denote more isolated niches.\n", + "\n", + "You can tune [TSNE parameters](https://distill.pub/2016/misread-tsne/), such as perplexity, to get a more meaningful grouping. We will lower the perplexity here since we don't have a lot of data points.\n" + ] + }, + { + "cell_type": "markdown", + "source": [ + "One small take away from this analysis is the speration between C. diff pre- and post- FMT samples, suggesting that C. diff may leverage different metabolic strategies in these contexts. Lets take a closer look at this..." + ], + "metadata": { + "id": "weoSaLDPZYAK" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4Y_XfHkB4sO8" + }, + "source": [ + "## Comparative Metabolomics\n", + "\n", + "Now let's compare the metabolomic imports between the two disease contexts. We're interested to see how the metabolomic profile of the microbiome changes when the disease state changes, as changes in microbiome context can lead to changes in host succeptibility to infection. To look into this deeper, we'll transform the microbiome import data and then plot the metabolite exports on a heatmap." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pAtec3I78DJJ" + }, + "source": [ + "We can use the `consumption_rates` function in MICOM to calculate consumption rates from the growth results. This will tell us what the patient microbiomes are consuming and provide additional insight into available niches. To visualize the results we'll run a centered log ratio transformation on the data, to account for the compositional nature of these data and compare all the fluxes against each other. Importantly, here we consider the consumption rates for samples with no C. diff present to understand how the initial state of the patient microbiomes may influence invasion potential." + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": { + "id": "DJAsxjnFdajN", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 486 + }, + "outputId": "59b69294-cdef-4fdf-a5fa-5f1d8cab1cde" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "disease_state Pre-FMT healthy \\\n", + "sample_id ERR1883214 ERR1883240 ERR1883250 ERR1883294 ERR1883195 \n", + "name \n", + "D-glucose -3.253101 -3.564477 -2.064038 -3.972573 4.450353 \n", + "acetate 2.572101 3.594739 4.306373 4.539524 -2.642172 \n", + "Water 2.966225 -3.584166 3.043172 -3.972573 4.497614 \n", + "D-Fructose 3.219760 -3.584166 -0.695070 -3.972573 3.268810 \n", + "pyruvate -3.404889 3.505223 -3.497278 3.022735 -2.642172 \n", + "... ... ... ... ... ... \n", + "Thiamin -3.404889 -2.773089 -2.982110 -3.403379 -2.388275 \n", + "Spermidine -3.404889 -2.445104 -2.992604 -3.250518 -2.374584 \n", + "Fe2+ -2.838896 -2.091063 -2.203376 -2.370595 -1.778976 \n", + "Putrescine -3.404889 -2.848543 -3.087577 -3.295817 -2.353273 \n", + "Menaquinone 8 -2.873638 -3.295815 -2.979719 -3.351557 -2.276149 \n", + "\n", + "disease_state \n", + "sample_id ERR1883207 ERR1883212 ERR1883225 \n", + "name \n", + "D-glucose 4.493531 3.416515 4.569671 \n", + "acetate -2.772490 -3.668369 -2.625105 \n", + "Water 4.280483 3.763363 4.354428 \n", + "D-Fructose 3.253561 2.612354 3.276231 \n", + "pyruvate -2.772490 -3.668369 -2.625105 \n", + "... ... ... ... \n", + "Thiamin -2.444364 -2.939826 -2.378889 \n", + "Spermidine -2.445049 -2.936479 -2.376260 \n", + "Fe2+ -1.820472 -2.611296 -1.668659 \n", + "Putrescine -2.438953 -2.912851 -2.400161 \n", + "Menaquinone 8 -2.471199 -3.185775 -2.625105 \n", + "\n", + "[647 rows x 8 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disease_statePre-FMThealthy
sample_idERR1883214ERR1883240ERR1883250ERR1883294ERR1883195ERR1883207ERR1883212ERR1883225
name
D-glucose-3.253101-3.564477-2.064038-3.9725734.4503534.4935313.4165154.569671
acetate2.5721013.5947394.3063734.539524-2.642172-2.772490-3.668369-2.625105
Water2.966225-3.5841663.043172-3.9725734.4976144.2804833.7633634.354428
D-Fructose3.219760-3.584166-0.695070-3.9725733.2688103.2535612.6123543.276231
pyruvate-3.4048893.505223-3.4972783.022735-2.642172-2.772490-3.668369-2.625105
...........................
Thiamin-3.404889-2.773089-2.982110-3.403379-2.388275-2.444364-2.939826-2.378889
Spermidine-3.404889-2.445104-2.992604-3.250518-2.374584-2.445049-2.936479-2.376260
Fe2+-2.838896-2.091063-2.203376-2.370595-1.778976-1.820472-2.611296-1.668659
Putrescine-3.404889-2.848543-3.087577-3.295817-2.353273-2.438953-2.912851-2.400161
Menaquinone 8-2.873638-3.295815-2.979719-3.351557-2.276149-2.471199-3.185775-2.625105
\n", + "

647 rows Γ— 8 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 103 + } + ], + "source": [ + "from micom.measures import consumption_rates\n", + "import numpy as np\n", + "no_cdiff_growth = load_results(\"treasure_chest/no-cdiff-growth.zip\") # Load growth results with no C. diff invasion\n", + "exchanges = consumption_rates(no_cdiff_growth) # extract consumption rates\n", + "exchanges=pd.merge(exchanges,metadata,on='sample_id') # add metadata\n", + "exchanges = pd.pivot_table( # convert to a matrix of samples vs. metabolites\n", + " exchanges, # that contains the production rates\n", + " index = ['disease_state','sample_id'],\n", + " columns = 'name',\n", + " values = 'flux'\n", + ")\n", + "exchanges = exchanges.T.fillna(0.0) # if a metabolite is not produced its flux is zero\n", + "exchanges = exchanges.apply( # ...and a CLR transform again, normalizes the fluxes\n", + " lambda xs: np.log(xs + 0.001) - np.log(xs.mean() + 0.001),\n", + " axis=0)\n", + "exchanges = exchanges.reindex( # sort by variance, highest variance fluxes first\n", + " exchanges.var(axis = 1).sort_values(ascending=False).index\n", + ")\n", + "\n", + "exchanges" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nYuc7Wu38nYd" + }, + "source": [ + "We can use seaborn to plot our heatmap:" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": { + "id": "YHnKeFuF3qAt", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "outputId": "06c5b995-06e9-48ca-fd7e-25e5998af6e0" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 104 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAASmCAYAAABY5IZfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdfVzN9/8/8McpnK6FdcXSEZWkVLQNQyyKsTDLLJLrq7SiseaiYjqYy2YuZpTr2AX2cZHR5CJGmGQlFsks18NCp4vT7w8/7++Oik7n1KnT4367ndut83q/Xq/38318P/ue53ldiUpKSkpARERERERUSTqaDoCIiIiIiGo3JhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKQSJhVERERERKSSespUlt+yr6o41ELH8rKmQ6BaIjw8HPn5+ZoOg4jUSE9PD1KpVNNhEBHVScolFZBXVRxqwWEXqqj8/HwsXbpU02EQkRqFhoZqOgQiojpLqaSiuKRmJxVKPQwREREREamFUt/Di1BcVXGohVjTARARERER1UFKjlSUVFUcRERERERUSym5poJJBRERERERKVJupIJJBRERERERvYQjFUREREREpBKlkopCrqkgIiIiIqKXcPoTERERERGpRKnz4opLavarsubPnw+RSISQkJDKd0JEREREVEcpuaZC+6SkpGDNmjVwcXHRdChERERERLWSciMVENXol7Ly8vLg7++PtWvXolGjRkq3JyIiIiIipRdqK//FvTrJZDLIZDKFMrFYDLG47LO2J02ahPfffx9eXl748ssvqyNEIiIiIiKto1UjFVKpFA0bNlR4SaXSMp8lPj4e586dK/c6ERERERFVjHJrKmr4SEV4eDimTJmiUFbWKMWNGzfw6aef4uDBg9DT06uu8IiIiIiItJKSW8rW7KTiVVOd/uvs2bO4c+cO3N3dhbLi4mIcPXoUK1asgEwmg66ublWGSkRERESkNZRMKpSaLVVjvffee0hLS1MoGzFiBFq3bo3p06czoSAiIiIiUoJWTX+qKGNjY7Rt21ahzNDQEE2aNClVTkREREREr6ZUUlFQwl/wiYiIiIhIkZKH32nH9KeyJCUlaToEIiIiIqJaSasWahMRERERUfVTLqko0d6RCiIiIiIiqhwlpz9xpIKIiIiIiBQpuVBbqepERERERFQHcKE2ERERERGpRMk1FZz+REREREREiurkidpERERERKQ+Sp6ozaSCiIiIiIgUcaSCiIiIiIhUolRSUViiW1VxEBERERFRLcXD74iIiIiISCU8/I6IiIiIiFTCkQoiIiIiIlIJF2oTEREREZFKuFCbiIiIiIhUwnMqiIiIiIhIJUpOf+JCbSIiIiIiUsSRCiIiIiIiUglHKoiI6qDw8HDk5+drOgy1unPnDkJDQzUdhlrp6elBKpVqOgwiotdSbqG2XKnqRERUQ+Xn52Pp0qWaDoNeQ9uSJCLSXjz8joiIiIiIVMLD74iIiIiISCVKLtTmSAURERERESniidpERERERKQSjlQQEREREZFKlNv9qUS3quIgIiIiIqJaiiMVRERERESkEp6oTUREREREKuGJ2kREREREpBJOfyIiIiIiIpUolVQUcaE2ERERERG9RMkTtTlSQUREREREirhQm4iIiIiIVMI1FUREREREpBLlkgru/kRERERERC/hSAUREREREalEud2f5Nz9iYiIiIiIFHH6ExERERERqYTTn4iIiIiISCVK7RErLxHV6JcypFIpPDw8YGxsDHNzc/Tv3x+ZmZlK9UFERERERHU4qThy5AgmTZqE3377DQcPHkRhYSF69eqFJ0+eKNUPEREREVFdp9xCbS06/C4hIUHhfVxcHMzNzXH27Fl07dpVQ1EREREREdU+XFPx/z169AgA0LhxYw1HQkRERERUu2hVUiGTySCTyRTKxGIxxGLxK9vJ5XKEhISgc+fOaNu2bVWGSERERESkdbRqTYVUKkXDhg0VXlKp9LXPNWnSJFy8eBHx8fGV/iCJiIiIiOoqrRqpCA8Px5QpUxTKXjdKERQUhD179uDo0aN48803qzI8IiIiIiKtpFRSUVzDF2pXZKrTCyUlJZg8eTJ27tyJpKQktGjRooqjIyIiIiLSTlo1UqGMSZMmYevWrdi9ezeMjY1x69YtAEDDhg2hr6+v4eiIiIiIiGoPpZKKEi1KKlatWgUA8PT0VCiPjY1FYGBg9QdERERERFRL1dmRipKSEk2HQERERESkFersSAUREREREalHnR2pINWFh4cjPz9f02FUyp07dxAaGqrpMJSmp6dXoW2SiYiIiKqTkrs/Mamg/5Ofn4+lS5dqOow6pTYmQkRERKT9OP2JiIiIiIhUwulPRERERESkEiVHKqoqDCIiIiIiqq04/YmIiIiIiFSi3EJtuU5VxUFERERERLUUpz8REREREZFKOP2JiIiIiIhUwqSCiIiIiIhUolxSUVVREBERERFRrcWRCiIiIiIiUolySYWcSQURERERESni7k9ERERERKQSTn8iIiIiIiKVKJVUgEkFERERwsPDkZ+fX+X3uXPnDkJDQ6v8PgCgp6cHqVRaLfciIu3D6U9ERERKys/Px9KlSzUdhlpVV/JCRNqJC7WJiIiIiEglSk5/qqIoiIiIiIio1uJCbSIiIiIiUglHKoiIiIiISCXKJRXgSAURERERESlSLqmQV1EURERERERUa/GcCiIiIiIiUgnPqSAiIiIiIpVwoTYRUQ1RXac0A9V3UjNPaSYiqhs4/YmIqIbgKc1ERFRbKZVUiDhSQUREREREL1Fy9yeOVBARERERkSKuqSAiIiIiIpUwqSAiIiIiIpUwqSAiIiIiIpVw9yciIiIiIlKJcrs/yasqDCIiIiIiqq10NB0AERERERHVbjyngugl1XmqsbKq6xTkyuLpyURERHUT11QQvUQbTzWuLjU54SEiIqKqw92fiIiIiIhIJUwqiIiIiIhIJUot1BbJa/arMr755htIJBLo6enh7bffxunTpyvXERERERFRHaXc7k8lNfylpO3bt2PKlCmIiIjAuXPn0K5dO3h7e+POnTvKd0ZEREREVEcpN1JRUrNfylqyZAnGjBmDESNGoE2bNli9ejUMDAywfv165TsjIiIiIqqjlBypENXslxIKCgpw9uxZeHl5/d+HoaMDLy8vnDx5Uqm+iIiIiIjqMq1aqC2TySCTyRTKxGIxxGJxqbr37t1DcXExLCwsFMotLCxw6dKlKo2TiIiIiEibaNVCbalUioYNGyq8eBAXEREREVHV0qoTtcPDwzFlyhSFsrJGKQDgjTfegK6uLm7fvq1Qfvv2bVhaWlZZjERERERE2kardn8Si8UwMTFReJWXVDRo0ADt27dHYmKiUCaXy5GYmIiOHTsq9bEQEREREdVlWrWmQllTpkzB8OHD0aFDB7z1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APbu3YvLly8jLCwMADBx4kQMHz4cPj4+aNWqFbKysnDgwAFcv34do0aNemzX2bNnIzAwEHXq1IHRaMT333+PUqVKmT5dL1++PGJjY9GoUSO4uLigWLFiCA0NRUxMDKKjo2EwGDBu3LiHPuUvX748duzYgW7dusHFxQXFixfHW2+9hfr162PYsGEYMGAAPDw8cOzYMWzatAnz5s2z+rnNz8+Hs7MzPvnkEwwePBhHjhzB5MmTrXmpH+vs2bMYNWoUBg0ahIMHD+KTTz556C5g90VGRqJBgwbo0KEDZsyYgcqVK+PChQtYu3YtOnbsaPXUpTfffBPTp09HaGgoqlatitmzZyM9Pb0QWhER0dOK11QQaWjmzJl4/vnnER0djcjISDRu3BgREREFPtbX1xcLFixAo0aNULNmTWzevBk///wz/P39Ady7e1KfPn0wevRoVKlSBR06dMD+/ftNZ0H++9//Ijw8HFFRUWjWrBlKlSpltnKyt7c3duzYgTZt2qBy5cr473//i1mzZqF169YAgAEDBmDhwoVYvHgxatSogaZNm2LJkiWoUKHCE3t6eXlhxowZqFu3Lp599lmcOXMG69atMw2gZs2ahU2bNiE4OBh16tQBcG8gUqxYMTRs2BDR0dGIiop66BP0SZMm4cyZM6hYsaJpTY+aNWti+/btSExMxPPPP486depg/PjxCAoKemS+xz23JUqUwJIlS/D999+jWrVqmD59Oj788MMndrZUnz59kJmZieeeew5Dhw7Fm2+++cgFDw0GA9atW4cmTZrg1VdfReXKldGtWzekpKSgZMmSVv/Zo0ePRu/evdG3b180aNAAXl5epjNDRESkJ4MQvHk4EZFOmjVrhtq1a3NVcCIiKjI8U0FERERERHbhoIKInlp/vU3rg7/uT5+iv98zzzzzyNfhm2++kR2PiIieApz+RERPrWvXrj1yRWc3NzeULl26iBP9M6WkpCAnJ6fAYyVLloSXl1cRJyIioqcNBxVERERERGQXTn8iIiIiIiK7cFBBRERERER24aCCiIiIiIjswkEFERERERHZhYMKIiIiIiKyCwcVRERERERkFw4qiIiIiIjILhxUEBERERGRXf4fCHvBvS4HZqoAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ], + "source": [ + "import seaborn as sns\n", + "import numpy as np\n", + "\n", + "sns.clustermap(\n", + " exchanges.head(50), # take 50 highest fluxes\n", + " cmap = 'viridis',\n", + " yticklabels = True, # show all metabolite names\n", + " figsize = (8, 12) # size of the heatmap\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b1i2LStZiUst" + }, + "source": [ + "We can see here that the disease context is important - there are significant differences in consumption rates between the healthy and pre-fmt microbiomes. These differences may why C. diff can exploit the pre-FMT microbiomes and achieve higher predicted growth rates." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "l8maOr3w2bOo" + }, + "source": [ + "# 🏫 Exercises" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Time for you to try your hand at some analysis, lets take a closer looks at the metabolic strategies used by C. diff" + ], + "metadata": { + "id": "XZt3ojssnCzz" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VjUustQG2_bX" + }, + "source": [ + "## Metabolic strategies used by C. diff\n", + "We've alread looked at the community wide consumption fluxes in the absencence of C. diff and found that they differ between disease contexts. What about the import fluxes of C. diff specifically? Can you develop a visualization to look at those?" + ] + }, + { + "cell_type": "code", + "source": [ + "exchanges=growth.exchanges # extract exchanges from growth data\n", + "cdiff_exchanges=exchanges[exchanges.taxon=='Clostridioides'] # get cdiff specific exchanges\n", + "cdiff_imports=cdiff_exchanges[cdiff_exchanges.direction=='import'] # specifically look at imports\n", + "cdiff_imports=pd.merge(cdiff_imports,metadata,on='sample_id') # add metadata\n", + "cdiff_imports = pd.pivot_table( # convert to a matrix of samples vs. metabolites\n", + " cdiff_imports, # that contains the production rates\n", + " index = ['disease_state','sample_id'],\n", + " columns = 'reaction',\n", + " values = 'flux'\n", + ")\n", + "cdiff_imports = abs(cdiff_imports.T.fillna(0.0)) # fill nans with 0s\n", + "\n", + "annot=growth.annotations # optionally map reactions to metabolite names\n", + "annot.index=annot.reaction\n", + "cdiff_imports.index=cdiff_imports.index.map(annot.name.to_dict()) # not necessary but makes results more human readible\n", + "\n", + "cdiff_imports = cdiff_imports.apply( # ...and a CLR transform again, normalizes the fluxes\n", + " lambda xs: np.log(xs + 0.001) - np.log(xs.mean() + 0.001),\n", + " axis=0)\n", + "cdiff_imports = cdiff_imports.reindex( # sort by variance, highest variance fluxes first\n", + " cdiff_imports.var(axis = 1).sort_values(ascending=False).index\n", + ")\n", + "\n", + "cdiff_imports\n", + "\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 486 + }, + "id": "eIyRahJbn4hc", + "outputId": "65c9debc-66ea-44bb-f725-dc18d3df66af" + }, + "execution_count": 147, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "disease_state Pre-FMT \\\n", + "sample_id ERR1883214 ERR1883240 ERR1883250 ERR1883294 \n", + "reaction \n", + "D-Mannitol -5.804770 -4.420214 -1.034209 -4.012576 \n", + "D-glucose -5.804770 -4.420214 -3.732151 -4.012576 \n", + "L-aspartate(1-) -5.804770 -4.420214 0.734590 3.142715 \n", + "Formate 3.603973 -4.420214 -3.965938 -4.012576 \n", + "(R)-3-hydroxybutyrate -5.804770 3.427428 -2.999371 2.600317 \n", + "... ... ... ... ... \n", + "Co2+ -5.032875 -3.060466 -3.113042 -2.668395 \n", + "O2 -5.566462 -4.232652 -3.799558 -3.812628 \n", + "Hexadecanoate (n-C16:0) -3.015255 -4.162366 -3.965938 -4.012576 \n", + "Hypoxanthine -0.457435 -0.330558 0.006263 0.048169 \n", + "L-valine 0.714780 0.474769 0.203827 0.859942 \n", + "\n", + "disease_state healthy \n", + "sample_id ERR1883195 ERR1883207 ERR1883212 ERR1883225 \n", + "reaction \n", + "D-Mannitol 3.467234 3.488661 3.020506 3.115883 \n", + "D-glucose 3.013143 3.070334 2.663872 2.791790 \n", + "L-aspartate(1-) 1.986893 1.851587 3.110281 -3.445003 \n", + "Formate 1.981723 1.819535 -3.348525 2.981770 \n", + "(R)-3-hydroxybutyrate -2.852466 -3.347560 1.757644 -3.445003 \n", + "... ... ... ... ... \n", + "Co2+ -2.374232 -2.584710 -2.540125 -2.703519 \n", + "O2 -2.852466 -3.347560 -3.348525 -3.445003 \n", + "Hexadecanoate (n-C16:0) -2.852466 -3.347560 -3.348525 -3.445003 \n", + "Hypoxanthine -0.257878 -0.179446 -0.093329 0.309034 \n", + "L-valine 0.526749 0.618198 0.705706 0.547314 \n", + "\n", + "[237 rows x 8 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disease_statePre-FMThealthy
sample_idERR1883214ERR1883240ERR1883250ERR1883294ERR1883195ERR1883207ERR1883212ERR1883225
reaction
D-Mannitol-5.804770-4.420214-1.034209-4.0125763.4672343.4886613.0205063.115883
D-glucose-5.804770-4.420214-3.732151-4.0125763.0131433.0703342.6638722.791790
L-aspartate(1-)-5.804770-4.4202140.7345903.1427151.9868931.8515873.110281-3.445003
Formate3.603973-4.420214-3.965938-4.0125761.9817231.819535-3.3485252.981770
(R)-3-hydroxybutyrate-5.8047703.427428-2.9993712.600317-2.852466-3.3475601.757644-3.445003
...........................
Co2+-5.032875-3.060466-3.113042-2.668395-2.374232-2.584710-2.540125-2.703519
O2-5.566462-4.232652-3.799558-3.812628-2.852466-3.347560-3.348525-3.445003
Hexadecanoate (n-C16:0)-3.015255-4.162366-3.965938-4.012576-2.852466-3.347560-3.348525-3.445003
Hypoxanthine-0.457435-0.3305580.0062630.048169-0.257878-0.179446-0.0933290.309034
L-valine0.7147800.4747690.2038270.8599420.5267490.6181980.7057060.547314
\n", + "

237 rows Γ— 8 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 147 + } + ] + }, + { + "cell_type": "code", + "source": [ + "sns.clustermap(\n", + " cdiff_imports.head(50), # take 50 highest fluxes\n", + " cmap = 'viridis',\n", + " yticklabels = True, # show all metabolite names\n", + " figsize = (8, 12) # size of the heatmap\n", + ")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "vWVMA7o1pGGD", + "outputId": "05feed82-9fd4-49c6-f9b7-b1ca5e726446" + }, + "execution_count": 148, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 148 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAASmCAYAAABY5IZfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVyN6f8/8NcpdVqJpESLtAhJIYOxLzWWj2XIWIvsazXN0IxRMWSJiBmMpYzJ0gxjzFAGI0uGbEXDFI1kiOyEc0r1+8PP/Z1b6+mU0/J6Ph7n8ehc93Vf9/u+5/OZud/n2iT5+fn5ICIiIiIiKiM1VQdARERERERVG5MKIiIiIiJSCpMKIiIiIiJSCpMKIiIiIiJSCpMKIiIiIiJSCpMKIiIiIiJSCpMKIiIiIiJSCpMKIiIiIiJSCpMKIiIiIiJSCpMKIiIiIiJSCpMKIiIiIiJSCpMKIiIiIiJSCpMKIiIiIiJSCpMKIiIiIiJSCpMKIiIiIiJSCpMKIiIiIiJSCpMKIiIiIiJSCpMKIiIiIiJSSi1FKufdta2oOMqFmkmKqkOosvz9/SGTyVQdBlVCWlpaCA4OVnUYREREVIkpllQgr6LiKBfsdik7mUyG0NBQVYdBlZCPj4+qQyAiIqJKTqGkIje/cicVCt0MERERERGVC4Xew18jt6LiKBdSVQdARERERFQDKdhTkV9RcRARERERURWl4JwKJhVERERERCSmWE8FkwoiIiIiInoHeyqIiIiIiEgpCiUVOZxTQURERERE7+DwJyIiIiIiUoqCqz9VVBhERERERFRVKTingoiIiIiISEzB4U+SioqDiIiIiIiqKAUnajOpICIiIiIiMfZUEBERERGRUhSbU8GeCiIiIiIiegd7KoiIiIiISCkKJhVqFRUHERERERFVURz+RERERERESlEoqcjOV6+oOIiIiIiIqIpScPM7Dn8iIiIiIiIxTtQmIiIiIiKlKJZU5LOngoiIiIiIxBQc/sSeCiIiIiIiElNworZC1YmIiIiIqAbgRG2q8vz9/SGTyVQdRrWVmZkJHx8fVYdRbWlpaSE4OFjVYRARESlFwTkVHP5ElY9MJkNoaKiqwyAqEyZsRERUHXBHbSIiIiIiUoqCO2ozqSAiIiIiIjH2VBARERERkVIUSipy8tUrKg4iIiIiIqqiuPkdEREREREphZvfERERERGRUthTQURERERESuFEbSIiIiIiUgonahMRERERkVK4TwURERERESlFweFPnKhNRERERERiCnU95OWrVeqPIoKDg9GuXTvo6+ujQYMGGDRoEJKTkxVqg4iIiIiIFEwqciGp1B9FHDt2DNOnT8fp06dx6NAh5OTkoE+fPnjx4oVC7RARERER1XSKTdTOU6h6pRYTEyP6HhERgQYNGuD8+fPo0qWLiqIiIiIiIqp6uPnd//f06VMAQL169VQcCRERERFR1VKtNr+Ty+WQy+WiMqlUCqlUWux5eXl58Pb2RqdOndCyZcuKDJGIiIiIqNpRcKK2pFJ/goODUadOHdEnODi4xPuaPn06kpKSsHPnzjI/SCIiIiKimqpa7ag9398fvr6+orKSeilmzJiB3377DcePH0fjxo0rMjwiIiIiompJwc3vKvecitIMdXorPz8fM2fOxM8//4zY2Fg0adKkgqMjIiIiIqqeFFv9KV+9ouJ476ZPn47t27fjl19+gb6+Pu7evQsAqFOnDrS1tVUcHRERERFR1VGteioUsW7dOgBAt27dROXh4eHw9PR8/wEREREREVVRCiYVlXtOhSLy8/NVHQIRERERUbWg4ETt6tNTQURERERE5aPGDn8iIiIiIqLyoVBS8boaTdQmIiIiIqLyoeCO2uypICIiIiIisRo7UZuIiIiIiMoH51QQEREREZFSFEsquPoTERERERG9gz0VRFQq/v7+kMlkqg6j2snMzISPj4+qw6iWtLS0EBwcrOowiIhqBMVWf8rj6k9ENZVMJkNoaKiqwyAqNSZrRETvD4c/ERERERGRUjj8iYiIiIiIlMKkgoiIiIiIlMKkgoiIiIiIlKLYRG1ufkdERERERO9gTwURERERESmFSQURERERESmFSQURERERESmFSQURERERESlFoaQilxO1iYionPj7+0Mmk1VY+5mZmRW6q7aWlhaCg4MrrH0ioqqEPRVEKlbRL1blpaJf0MoLX/SqDplMhtDQUFWHUWZV4f8PRETvi0JJRT6TCqJyV9VfrCobvugRERG9f+ypICIiIiIipbCngoiIiIiIlMKeCiIiIiIiUoqCqz8xqSAiIiIiIjEOfyIiIiIiIqVw+BMRERERESlFwZ6KigqDiIiIiIiqKg5/IiIiIiIipSg2UTtPraLiICIiIiKiKorDn4iIiIiISCkc/kREREREREphUkFEREREREpRLKmoqCiIiIiIiKjKUmjmdX6+pFJ/yuKbb76BpaUltLS00L59e8THx5epHSIiIiKimkqxpCJPUqk/itq1axd8fX0REBCACxcuwNHREa6ursjMzFS4LSIiIiKimkrBnorK/VHUypUrMXHiRIwbNw7NmzfH+vXroaOjgy1btijeGBERERFRDVWtJmrL5XLI5XJRmVQqhVQqLVA3Ozsb58+fh7+/v1CmpqaGXr164c8//6zwWImIiIiIqgvFdrPLl1TqT3BwMOrUqSP6BAcHF3orDx48QG5uLoyNjUXlxsbGuHv3bpkfKBERERFRTVOtNr/z9/eHr6+vqKywXgoiIiIiIio/iiUVZZgM/T4VNdSpMPXr14e6ujru3bsnKr937x5MTEwqIjwiIiIiompJweFPlfyjAE1NTbRp0wZHjhwRyvLy8nDkyBF06NBBscaIiIiIiGqwajVRW1G+vr7w8PBA27Zt4eLiglWrVuHFixcYN26cqkMjIiIiIqoyFEoqqtuW2sOHD8f9+/cxf/583L17F61bt0ZMTEyBydtEVDR/f3/IZDJVhyHIzMyEj4+PqsMAAGhpaRW5WAQREVF1olhSgerVUwEAM2bMwIwZM1QdBlGVJZPJEBoaquowKqXKktwQERFVNMWSirwKioKIiIiIiKosBYc/Vb+eCiIiIiIiUk612qeCiIiIiIjevxo9UZuIiIiIiJTH4U9ERERERKQUhZIKCXsqiIiIiIjoHQqu/sSeCiIiIiIiEuOcCiIiIiIiUgqTCiIiIiIiUgqTCiIiIiIiUgpXfyIiIiIiIqUotvpTXkWFQUREREREVZWaqgMgIiIiIqKqjftUEBERERGRUjingoiIiIiIlMLVn4iIiIiISClMKoiIiIiISClc/YmIiIiIiJTCngoiIiIiIlIKV38iIiIiIiKlcPUnIiIiIiJSCoc/ERERERGRUjhRm4iIiIiIlMI5FUREREREpBQOfyIiIiIiIqUwqSAiIiIiIqVw+BMRERERESmFPRVERERERKQU9lQQEREREZFS2FNBRERERERKYVJBRERERERK4fAnIiIiIiJSCnsqiIiIiIhIKWqKVJbkVe5PRUhLS4OXlxeaNGkCbW1tNG3aFAEBAcjOzq6YCxIRERERVTHsqSjB33//jby8PGzYsAHW1tZISkrCxIkT8eLFC4SEhKg6PCIiIiIileOcihK4ubnBzc1N+G5lZYXk5GSsW7eOSQUREREREdhTUSZPnz5FvXr1VB0GEREREVGlUK2SCrlcDrlcLiqTSqWQSqXldo3r169jzZo17KUgIiIiIvr/qtVE7eDgYNSpU0f0CQ4OLvRe5s6dC4lEUuzn77//Fp1z+/ZtuLm5YdiwYZg4cWLZnzoRERERUTVSreZU+Pv7w9fXV1RWVC/Fp59+Ck9Pz2Lbs7KyEv6+c+cOunfvjo4dO+K7775TOlYiIiIiouqiWg1/UmSok5GREYyMjEpV9/bt2+jevTvatGmD8PBwqKkp1MFDRERERFStVaukoiLcvn0b3bp1g4WFBUJCQnD//n3hmImJiQojIyIiIiKqHBQb/lRRUVRihw4dwvXr13H9+nU0btxYdCw/vwZmWURERERE72BPRQk8PT1LnHtBRFWXv78/ZDJZhbSdmZkJHx+fCmkbALS0tIpcjIKIiOh9UqynIq+iwiAiUg2ZTIbQ0FBVh1EmFZmwEBERKYI9FUREREREpJRqtaQsERERERG9f+ypICIiIiIipbCngoiIiIiIlMKJ2kREREREpBQOfyIiIiIiIqUwqSAiIiIiIqVwTgURERERESmFPRVERERERKQUBSdqM6sgIiIiIiIxDn8iIiIiIiKlcPgTEREREREphT0VRERERESkFPZUEBERERGRUthTQURERERESlFw9aeKCoOIiIiIiKoqBYc/sauCiIiIiIjEOPyJiIiIiIiUwonaRERERESkFM6pICIiIiIipTCpICIiIiIipXCiNhERERERKYUTtYmIiIiISCmcqE1EREREREphTwURERERESmFcyqIiIiIiEgpXP2JiIiIiIiUwuFPRERERESkFMWGP+UxqyAiIiIiIjGu/kRERERERErh8CciIiIiIlKKghO1mVUQEREREZGYmkK18yv5p4LJ5XK0bt0aEokECQkJFX9BIiIiIqIqQKGkQpKfX6k/Fe3zzz+HqalphV+HiIiIiKgqUaynIq+SfypQdHQ0fv/9d4SEhFTshYiIiIiIqhgFJ2rXzDkV9+7dw8SJE7F3717o6OioOhwiIiIiokqlWu1TIZfLIZfLRWVSqRRSqbTMbebn58PT0xNTpkxB27ZtkZaWpmSURERERETVi4JzKir3Jzg4GHXq1BF9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LKmpqUycOFH17f8777zD+fPnVceze1nCw8Np1aoVenp6dOjQgWvXrqnqvDykKPsaixYtwtTUFGNjYz755BPS0tLUruvj40OdOnXQ19enbdu2RERE5PnsIiMj+ffff1m7di329vZYWFjQuXNngoODsbCwAHIfUrRr1648X+79/f3p06cPABoaGqp6mZmZzJkzh7p166JUKmnRogUHDx4EICsri27duuHs7Ez2tmMPHz6kbt26zJ49W+2ZvTj8KTQ0lHr16qGnp0f//v158OBBjnh2796Ng4MDOjo6NGjQgICAANLT0/N8JkJIUiGEEEK8hUaOHMmJEyeIj48HYPv27Zibm+Pg4KBWLy4ujh49ejBw4EAuX77M1q1bOXnyJJ6engDs2LGDunXrMmfOHBISEtSShuTkZBYtWsTGjRs5fvw48fHx+Pj45BnTtGnT2L59O2FhYfz0009YWlri7OzMw4cP1erNnDmToKAgLly4QKVKlRgzZky+93r06FHi4uI4evQoYWFhhIaGqg278vT05PTp02zZsoXLly8zePBgevTowY0bN3Jtz8TEhPT0dHbu3Ekx9hBW4+PjQ0hICIDac1y6dClBQUEsWrSIy5cv4+zszAcffMCNGzdQKBSEhYVx/vx5li1bBsD48eOpU6eOKql42dmzZ3F3d8fT05OoqCg6d+7MF198oVbnxIkTuLq6MmnSJK5evcrq1asJDQ1l3rx5JXKvomKSpEIIIYQog1JTU3n8+LHaT2pqaom1X7NmTXr27Kl6uV6/fn2uL+eBgYG4uLgwefJkrKys6NChA8uWLWPDhg2kpKRQrVo1NDU1MTQ0xMTEBBOT/+3EnpaWxqpVq2jVqhUODg54enrmOd8hKSmJlStX8tVXX9GzZ08aN27MmjVr0NXVZd26dWp1582bR8eOHWncuDEzZszg1KlT+S4HX7VqVVasWEGjRo3o3bs377//viqO+Ph4QkJC+O6773BycqJhw4b4+PjwzjvvqF7yX9auXTs+++wzRowYQfXq1enZsydfffUVd+/ezfeZ58fAwEDVs/Hic1y0aBHTp09n2LBh2NjY8OWXX9KiRQvVHJY6deqwevVqZsyYga+vL/v37+fbb7+lUqXcF/hcunQpPXr0YNq0aVhbWzNx4kScnZ3V6gQEBDBjxgxGjRpFgwYN6N69O3PnzmX16tVFvj9R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\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CsqIRTbC7doD" + }, + "source": [ + "# πŸ”΅ Addendum\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hycoXNTi5xsH" + }, + "source": [ + "## Choosing a tradeoff value\n", + "\n", + "Even if you don't have growth rates available you can still use your data to choose a decent tradeoff value. This can be done by choosing the largest tradeoff value that still allows growth for the majority of the taxa that you observed in the sample (if they are present at an appreciable abundance, they should be able to grow). This can be done with the `tradeoff` workflow in MICOM that will run cooperative tradeoff with varying tradeoff values, which can be visualized with the `plot_tradeoff` function." + ] + }, + { + "cell_type": "code", + "source": [ + "manifest" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 454 + }, + "id": "I8NnkbnymxoE", + "outputId": "41feea98-0cfb-4fe5-c0d6-3fa11631782e" + }, + "execution_count": 123, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " sample_id Unnamed: 0 collection_timestamp day_relative_to_fmt \\\n", + "0 ERR1883195 12.0 2011-10-24 26 \n", + "1 ERR1883207 24.0 2012-01-12 44 \n", + "2 ERR1883212 30.0 2012-10-10 135 \n", + "3 ERR1883214 32.0 2011-07-26 0 \n", + "4 ERR1883225 43.0 2011-07-26 54 \n", + "5 ERR1883240 58.0 2012-02-14 pre-FMT \n", + "6 ERR1883250 68.0 2011-12-23 pre-FMT \n", + "7 ERR1883294 112.0 2011-09-29 0 \n", + "\n", + " description disease_state host_age host_age_units \\\n", + "0 Donor 11 healthy Restricted access years \n", + "1 Donor 12 healthy Restricted access years \n", + "2 Donor 14 healthy Restricted access years \n", + "3 Day 0 CD1 Pre-FMT 39 years \n", + "4 Donor CD1 healthy Restricted access years \n", + "5 CD9 pre-FMT Pre-FMT 47 years \n", + "6 CD13 pre-FMT Pre-FMT 53 years \n", + "7 Day 0 CD3 Pre-FMT 61 years \n", + "\n", + " host_body_mass_index host_height ... host_subject_id \\\n", + "0 Restricted access Restricted access ... Donor \n", + "1 Restricted access Restricted access ... Donor \n", + "2 Restricted access Restricted access ... Donor \n", + "3 29.3 165.1 ... CD1 \n", + "4 Restricted access Restricted access ... Donor \n", + "5 35.5 1.55 ... CD9 \n", + "6 34.4 1.56 ... CD13 \n", + "7 32.5 1.727 ... CD3 \n", + "\n", + " host_weight host_weight_units race sex \\\n", + "0 Restricted access kg Restricted access Restricted access \n", + "1 Restricted access kg Restricted access Restricted access \n", + "2 Restricted access kg Restricted access Restricted access \n", + "3 80.1 kg white female \n", + "4 Restricted access kg Restricted access Restricted access \n", + "5 85.1 kg white female \n", + "6 83.9 kg white female \n", + "7 97.3 kg white male \n", + "\n", + " file found_taxa total_taxa found_fraction \\\n", + "0 ERR1883195.pickle 4.0 4.0 1.000000 \n", + "1 ERR1883207.pickle 6.0 6.0 1.000000 \n", + "2 ERR1883212.pickle 5.0 6.0 0.833333 \n", + "3 ERR1883214.pickle 2.0 2.0 1.000000 \n", + "4 ERR1883225.pickle 4.0 4.0 1.000000 \n", + "5 ERR1883240.pickle 3.0 3.0 1.000000 \n", + "6 ERR1883250.pickle 4.0 5.0 0.800000 \n", + "7 ERR1883294.pickle 4.0 6.0 0.666667 \n", + "\n", + " found_abundance_fraction \n", + "0 1.000000 \n", + "1 1.000000 \n", + "2 0.884172 \n", + "3 1.000000 \n", + "4 1.000000 \n", + "5 1.000000 \n", + "6 0.935141 \n", + "7 0.444919 \n", + "\n", + "[8 rows x 21 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sample_idUnnamed: 0collection_timestampday_relative_to_fmtdescriptiondisease_statehost_agehost_age_unitshost_body_mass_indexhost_height...host_subject_idhost_weighthost_weight_unitsracesexfilefound_taxatotal_taxafound_fractionfound_abundance_fraction
0ERR188319512.02011-10-2426Donor 11healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883195.pickle4.04.01.0000001.000000
1ERR188320724.02012-01-1244Donor 12healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883207.pickle6.06.01.0000001.000000
2ERR188321230.02012-10-10135Donor 14healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883212.pickle5.06.00.8333330.884172
3ERR188321432.02011-07-260Day 0 CD1Pre-FMT39years29.3165.1...CD180.1kgwhitefemaleERR1883214.pickle2.02.01.0000001.000000
4ERR188322543.02011-07-2654Donor CD1healthyRestricted accessyearsRestricted accessRestricted access...DonorRestricted accesskgRestricted accessRestricted accessERR1883225.pickle4.04.01.0000001.000000
5ERR188324058.02012-02-14pre-FMTCD9 pre-FMTPre-FMT47years35.51.55...CD985.1kgwhitefemaleERR1883240.pickle3.03.01.0000001.000000
6ERR188325068.02011-12-23pre-FMTCD13 pre-FMTPre-FMT53years34.41.56...CD1383.9kgwhitefemaleERR1883250.pickle4.05.00.8000000.935141
7ERR1883294112.02011-09-290Day 0 CD3Pre-FMT61years32.51.727...CD397.3kgwhitemaleERR1883294.pickle4.06.00.6666670.444919
\n", + "

8 rows Γ— 21 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 123 + } + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": { + "id": "8_1jesZTHYra", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51, + "referenced_widgets": [ + "d450a2f0b9de425990f12bc7a5631782", + "af7b0c394a064469a6f7e8216b197336" + ] + }, + "outputId": "b86ed405-c9b6-499c-b124-0915e21af8fa" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Output()" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "d450a2f0b9de425990f12bc7a5631782" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [], + "text/html": [ + "
\n"
+            ]
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "\n"
+            ],
+            "text/html": [
+              "
\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 149 + } + ], + "source": [ + "from micom.workflows import tradeoff\n", + "import micom\n", + "\n", + "tradeoff_results = tradeoff(manifest, \"models\", medium, threads=2)\n", + "tradeoff_results.to_csv(\"tradeoff.csv\", index=False)\n", + "\n", + "plot_tradeoff(tradeoff_results, tolerance=1e-4)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y9703vhK6d6c" + }, + "source": [ + "After opeing `tradeoff_[DATE].html` you will see that, for our example here, all tradeoff values work great. This is because we modeled very few taxa, which keeps the compettion down. If you would allow for fewer abundant taxa in the models, this would change drastically. For instance, here is an example from a colorectal cancer data set:\n", + "\n", + "[![tradeoff example](https://micom-dev.github.io/micom/_images/tradeoff.png)](https://micom-dev.github.io/micom/_static/tradeoff.html)\n", + "\n", + "You can see how not using the cooperative tradeoff would give you nonsense results where only 10% of all observed taxa grew. A tradeoff value of 0.6-0.8 would probably be a good choice for this particular data set." + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "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" + }, + "vscode": { + "interpreter": { + "hash": "c991a7ed881363492957ff225bb30af9d5174cd8515a21cbef71fcaa303e4050" + } + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "37b0134de4bd4fe38c1afe7bc2bbdc59": { + "model_module": "@jupyter-widgets/output", + "model_name": "OutputModel", + "model_module_version": "1.0.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/output", + "_model_module_version": "1.0.0", + "_model_name": "OutputModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/output", + "_view_module_version": "1.0.0", + "_view_name": "OutputView", + "layout": "IPY_MODEL_bc2776a5195f4a8c8dda0e22e2fd9ea3", + "msg_id": "", + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "Running \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:05:08\u001b[0m\n", + "text/html": "
Running ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:05:08\n
\n" + }, + "metadata": {} + } + ] + } + }, + "bc2776a5195f4a8c8dda0e22e2fd9ea3": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "59428de9a88b4204885d03de441cbde3": { + "model_module": "@jupyter-widgets/output", + "model_name": "OutputModel", + "model_module_version": "1.0.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/output", + "_model_module_version": "1.0.0", + "_model_name": "OutputModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/output", + "_view_module_version": "1.0.0", + "_view_name": "OutputView", + "layout": "IPY_MODEL_901fb7e8d8c844a8b2e86735ca2bead3", + "msg_id": "", + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "Running \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:09:32\u001b[0m\n", + "text/html": "
Running ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:09:32\n
\n" + }, + "metadata": {} + } + ] + } + }, + "901fb7e8d8c844a8b2e86735ca2bead3": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d450a2f0b9de425990f12bc7a5631782": { + "model_module": "@jupyter-widgets/output", + "model_name": "OutputModel", + "model_module_version": "1.0.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/output", + "_model_module_version": "1.0.0", + "_model_name": "OutputModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/output", + "_view_module_version": "1.0.0", + "_view_name": "OutputView", + "layout": "IPY_MODEL_af7b0c394a064469a6f7e8216b197336", + "msg_id": "", + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "Running \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:32:42\u001b[0m\n", + "text/html": "
Running ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:32:42\n
\n" + }, + "metadata": {} + } + ] + } + }, + "af7b0c394a064469a6f7e8216b197336": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file