{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "5271f263-1f26-444b-9653-cbf375fc8eaa", "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "%load_ext autoreload\n", "%aimport gempipe, gempipe.flowchart\n", "%autoreload 1\n" ] }, { "cell_type": "code", "execution_count": 2, "id": "6402893f-e91e-4661-b4cb-c8c27ef11181", "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", "\n", "
\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from gempipe import Flowchart\n", "\n", "file = open('flowcharts/part_2.flowchart', 'r')\n", "header = 'flowchart LR \\n'\n", "flowchart = Flowchart(header + file.read())\n", "file.close()\n", "flowchart.render(height=300, zoom=0.7)" ] }, { "cell_type": "markdown", "id": "779a9bdc-2d3f-49fb-bb03-c31a7344267f", "metadata": { "tags": [] }, "source": [ "# Part 2: manual curation\n", "\n", "[`gempipe recon`](part_1_gempipe_recon.ipynb) produced a draft pan-GSMM: before proceeding with the derivation of strain-specific GSMMs ([`gempipe derive`](part_3_gempipe_derive.ipynb)), the draft pan-GSMM must be curated. Its manual curation consists of several tasks, such as:\n", "\n", "* ensuring the stoichiometric consistency of the model.\n", "* removing eventual erroneous energy-generating cycles (EGCs).\n", "* adding missing reactions, finding unmodeled metabolic genes on the functional annotation table. \n", "* adapting the biomass assembly reaction, for example removing strain-specific biomass precursors. \n", "* and so on...\n", "\n", "The [Gempipe API](https://gempipe.readthedocs.io/en/latest/autoapi/gempipe/interface/index.html) includes handy functions to speed up the manual curation, like for example [check_reactants](https://gempipe.readthedocs.io/en/latest/autoapi/gempipe/interface/gaps/index.html#gempipe.interface.gaps.check_reactants), which indicates the blocked precursors of a reaction, or [perform_gapfilling](https://gempipe.readthedocs.io/en/latest/autoapi/gempipe/interface/gaps/index.html#gempipe.interface.gaps.perform_gapfilling), which suggests reactions to include to enable the biosynthesis of a particular metabolite. Tutorials are available to show the usage of some of the Gempipe API functions:\n", "\n", "* [_Tutorial:_ gap-filling](tutorial_gapfilling.ipynb)\n", "* [_Tutorial:_ sanity check](tutorial_sanity_check.ipynb)\n", "\n", "The provided API is not aimed to replace the community effort [Memote](https://memote.readthedocs.io/en/latest/), but just to provide a quick and convenient way to check the main sanity standards and perform gap-fillings before going on deriving strain-specific GSMMs with `gempipe derive`. \n", "\n", "⏩ **Warning!** An additional command line program [`gempipe autopilot`](gempipe_autopilot.ipynb) is provided, which internally calls [`gempipe recon`](part_1_gempipe_recon.ipynb) and [`gempipe derive`](part_3_gempipe_derive.ipynb), linking them together performing an automated gap-filling on the draft pan-GSMM, as a (_discouraged_) alternative to the manual curation. " ] }, { "cell_type": "code", "execution_count": null, "id": "df57b106-f6c8-4489-b608-acb589571995", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.15" } }, "nbformat": 4, "nbformat_minor": 5 }