{ "cells": [ { "cell_type": "markdown", "id": "c20e4d16-52ce-44f7-8353-11c20378b24d", "metadata": {}, "source": [ "# Simple phylogenetic tree in Python" ] }, { "cell_type": "markdown", "id": "54ca7e6e-0ac4-410c-b8e3-852960b2214b", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "8d147913-a097-4aed-821e-477ffbfe3141", "metadata": {}, "source": [ "### Install modules\n", "if necessary, only in colab not in the JGU server" ] }, { "cell_type": "code", "execution_count": 1, "id": "ea868067-4688-46e1-9af4-f5e4d2a2e1a2", "metadata": {}, "outputs": [], "source": [ "# Install and import from biopython\n", "if 0:\n", " try:\n", " #import google.colab\n", " # Running on Google Colab, so install Biopython first\n", " !pip install biopython \n", " except ImportError:\n", " pass\n", "\n", "# Generate and Visualize a Phylogenetic Tree using Bio.Phylo\n", "from Bio import Phylo\n", "from io import StringIO" ] }, { "cell_type": "markdown", "id": "29fd1ec9-0802-4099-b0ac-eee56af5d330", "metadata": {}, "source": [ "# Newick string for the primate tree" ] }, { "cell_type": "code", "execution_count": 2, "id": "ecc97171-46fe-4f45-b390-d9c6f410ce9a", "metadata": {}, "outputs": [], "source": [ "newick_tree = \"(((Homo_sapiens, Pan_troglodytes), Gorilla_gorilla), Pongo_abelii);\"\n", "#newick_tree = \"(((((((Homo_sapiens, Pan_troglodytes), Gorilla_gorilla), Pongo_abelii), (Ateles_geoffroyi, Alouatta_palliata)), (Cercopithecus_aethiops, Macaca_mulatta)), (Callithrix_jacchus, Saimiri_sciureus)));\"\n" ] }, { "cell_type": "markdown", "id": "f07475bc-0308-4df8-9303-7cfe7428f530", "metadata": {}, "source": [ "# Use StringIO to simulate file input" ] }, { "cell_type": "code", "execution_count": 3, "id": "ef58e9a8-3d25-426f-87e2-ed1ad50d2f69", "metadata": {}, "outputs": [], "source": [ "tree = Phylo.read(StringIO(newick_tree), \"newick\")" ] }, { "cell_type": "markdown", "id": "cf917b3f-50cd-4d7f-8680-1c69b26d4aad", "metadata": {}, "source": [ "# Plot the tree using Phylo" ] }, { "cell_type": "code", "execution_count": 4, "id": "e845a75b-bc8a-4f37-9f2c-035ce83610fe", "metadata": {}, "outputs": [ { "data": { "image/png": "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4PZGCAKAfJJ+tuL//u//HOYvX75cH3zwQabrpN+DExsbm+ny5557Ti4uLurfv3+mPy56/PhxvfPOO7dSdp5p0qSJ6tatq08//VRxcXG677777GdtsuORRx6Rp6enlixZoi+//NI+Py0tTc8995yOHTumRo0aqUmTJvZl6cFr4sSJio+Pt88/evSoJk+enOl+nnnmGXl6emrEiBH64osvMiw/e/as3n33XftN+zfrZvryRn8fmXFzc9OIESNkjNEjjzyS4cdvz549m+s/lpoVd3d3Pfvsszp//ry6detmP4N3tV9++UXLli2zTzdp0kQRERFav369RowYYb+fKl1aWprWrl2b7R/cBWA9XA4HAPlk9OjRWrNmjcaOHatPPvlE1apV0/79+7Vz5049++yzmjZtWoZ17r77bnl4eGjGjBn69ddfVbZsWdlsNo0aNUqhoaFq1aqV3nzzTQ0fPlwtW7ZUnTp1VLVqVV26dEl//vmnYmJi5OPjo8GDBzvhHd/Y448/rqeeekpS9h+IkK5ChQqaM2eOBgwYoE6dOql58+YKDg7Wzz//rNjYWAUFBWUIl/369dPy5cv1xRdfKDQ0VBEREfYns7Vt21apqakZnmZXtWpV/e9//9ODDz6o+++/X6GhoapRo4aMMfrzzz+1d+9eXblyRX369JGnp+dNH4ub6ctOnTpp8uTJeuaZZ7Ru3Tr7PTBTp05VQEDAdff13HPPKSoqSqtWrVLVqlXVsmVLlSxZUnFxcfr555/Vs2dPNW/e/KbfS04999xz2rt3r5YsWaLQ0FDVr19fFSpU0OnTp/XHH3/o0KFDioyMVM+ePe3rLF68WHfffbdmzpypDz74QOHh4SpVqpSOHTum2NhY/fXXX5oxY4b9SXEAcDXOBAFAPmnVqpW2bNmiO++8U3/88YdWr14tNzc3rVix4rohpWzZsvrss8/UpEkTbdmyRfPnz9e8efMcPqgPGTJE27dvV9++fXXu3Dl9/vnn+vHHH+Xi4qInnnhCn332WX69xRxLfxx0+fLl1b59+xyv/+CDD2rTpk267777FBMTo+XLl+uff/7Rk08+qV27dql69eoO7W02m5YvX67JkyerZMmS+vLLL7V7924NHz5cH3/8sU6ePJlpeOjatat2796txx9/XMnJyfr666+1YcMGXb58WX379tXq1avl7+9/cwfhKjnt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oEDK6kzD5s2b7R/Y07Vp08b+75iYGAUHB9uDiiSFhYWpWLFiiomJsYeVkJAQh+0EBQWpSJEicnFxcZh36tSpHG33ekaOHKlHH31UH374odq1a6cHHnhAd9xxhyQpNTVVr776qpYtW6Zjx47ZP9teGwabNGkim81mn27atKmmT5+u1NRUFSlSxKHtrl27lJiYqICAAIf5//zzjw4ePGifvvY4lClTxv6e69atq4iICNWuXVvt27fX3Xffre7du6t48eJZvtfCrFA9HW7KlCny9/e3v67+4wQAoKBJSkpy+CADIPsqVaqkKlWqOLxcXf/f9/fGmEzH17Xz0y9FS2ez2TKdl5aWlqPtXs+kSZP022+/6d5779X333+vsLAwrVy5UpI0ffp0zZgxQ6NHj9b333+v6OhotW/fXleuXLnhdq8nLS1NZcqUUXR0tMMrNjZWo0aNsrfL6j0XKVJE69at09dff62wsDC9/fbbCg0N1aFDh266roKuUJ0JGjdunEaOHGmfTkhIIAgBAAqFkydPZnnpD4CcCQsLU1xcnI4cOWL/PLh3715duHBBNWrUcOp2q1WrpmrVqmnEiBHq3bu3FixYoC5dumjz5s2KjIzUgw8+KOnfALN///4M202/P+nq6apVq2Y4CyRJ9evXV3x8vFxdXRUSEnIT7/hfNptNzZs3V/PmzTVx4kRVrFhRK1eudPjsfTspVCHI3d3dfq0jAACFibe3NyEIyEXt2rVTnTp11LdvX82cOVMpKSl66qmn1Lp1azVs2NAp2/3nn380atQode/eXZUqVdLRo0e1Y8cOdevWTZJUpUoVrVixQlu3blXx4sX1xhtvKD4+PkMIOnLkiEaOHKnHH39cP//8s95++21Nnz79uvU2bdpUnTt31tSpUxUaGqrjx4/rq6++UufOnbN1LLZv367vvvtOd999twIDA7V9+3b99ddftxQmC7pCFYIAAAAASfafVxk6dKhatWolFxcX3XPPPXr77bedtt0iRYrozJkzeuihh3Ty5EmVLFlSXbt21YsvvihJmjBhgg4dOqT27dvLy8tLgwYNUufOnXXhwgWH7Tz00EP6559/1LhxYxUpUkRDhw697o+j2mw2ffXVVxo/frwGDhyov/76S6VLl1arVq0UFBSUrffs5+enTZs2aebMmUpISFDFihU1ffr02/oBZjbjxGffJSYm6sCBA5KkevXq6Y033lDbtm1VokQJVahQ4YbrJyQkyN/fXxcuXJCfn19elwsAQI4kJSXZH4qQmJjImSAAN9SmTRuFh4c7/A4Qsicn2cCpZ4J27typtm3b2qfTrzns37+/Fi5c6KSqAAAAANzOnBqC2rRpc1v/CBMAAABuLzVr1tSff/6Z6bL33ntPffv2zeeKcDO4JwgAAADIpq+++krJycmZLsvuPThZ2bBhwy1vAzdGCAIAAACyqWLFis4uAbmgUP1YKgAAAADcKkIQAAAAAEshBAEAAACwFEIQAAAAAEshBAEAAACwFEIQAAAAAEshBAEAAACwFEIQAAAAAEshBAEAAACwFEIQAAAAAEshBAEAAACwFEIQAAAAAEshBAEAAACwFEIQAAAAAEshBAEAAACwFEIQAAAAAEshBAEAAACwFEIQAAAAAEshBAEAAACwFEIQAAAAAEshBAEAAACwFEIQAAAAAEshBAEAAACwFEIQAAAAAEshBAEAAACwFEIQAAAAAEshBAEAAACwFEIQAAAAAEshBAEAAACwFEIQAAAAAEshBAEAAACwFFdnFwDg9pKUlOTsEoACg/EAAAUTIQhArvLx8XF2CQAAAFnicjgAuSIpKUk2m83ZZQAAANwQZ4IA5LqTJ0/K29vb2WUATpeUlKSgoCBnlwEAuAYhCECu8/b2JgQBAIACi8vhAAAAAFgKIQgAAACApRCCAAAAAFgKIQgAAACApRCCAAAAAFgKIQgAAACApRCCAAAAAFgKIQgAAACApRCCAAAAAFgKIQgAAACApRCCAAAAAFgKIQgAAACApRCCAAAAAFgKIQgAAACApRCCAAAAAFgKIQgAAACApRCCAAAAAFgKIQgAAACApRCCAAAAAFgKIQgAAACApRCCAAAAAFgKIQgAAACApRCCAAAAAFgKIQgAAACApRCCAAAAAFgKIQgAAACApRCCAAAAAFgKIQgAAACApRCCAAAAAFgKIQgAAACApRCCAAAAAFgKIQgAAACApRCCAAAAACdq06aNhg8ffkvbWLhwoYoVK5Yr9VgBIQgAAAAFxoYNG2Sz2eyvUqVKqUOHDtq9e3e+7P/w4cOy2WyKjo7Ol/05S/pxPn/+vLNLcQqnhqApU6aoUaNG8vX1VWBgoDp37qzY2FhnlgQAAIACIDY2VidOnNCXX36pc+fO6Z577tGFCxecXZbdlStXnF0CboFTQ9DGjRs1ePBgbdu2TevWrVNKSoruvvtuJSUlObMsAAAAOFlgYKBKly6txo0ba/r06YqPj9e2bdt08OBBRUZGKigoSD4+PmrUqJG+/fZbh3VDQkL0yiuvaODAgfL19VWFChU0Z86cbO23UqVKkqR69erJZrOpTZs2kqQBAwaoc+fOmjJlisqWLatq1apJkvbs2aM777xTnp6eCggI0KBBg5SYmGjfXkpKip5++mkVK1ZMAQEBGjNmjPr376/OnTtft4Zz587poYceUvHixeXl5aUOHTpo//79Dm0WLlyoChUqyMvLS126dNGZM2fsyw4fPiwXFxft3LnTYZ23335bFStW1KFDh9S2bVtJUvHixWWz2TRgwABJkjFGr732mipXrixPT0/VrVtXy5cvd6itb9++KlWqlDw9PVW1alUtWLAgW8e2IHF15s7XrFnjML1gwQIFBgZq165datWqlZOqAgAg9/EFH5CRt7d3ttp5enpKkpKTk5WYmKiOHTvqv//9rzw8PLRo0SJ16tRJsbGxqlChgn2d6dOn66WXXtJzzz2n5cuX68knn1SrVq1UvXr1LPf1008/qXHjxvr2229Vs2ZNubm52Zd999138vPz07p162SM0d9//6177rlHTZo00Y4dO3Tq1Ck9+uijGjJkiBYuXChJmjp1qhYvXqwFCxaoRo0aevPNN7Vq1Sp7CMnMgAEDtH//fn3++efy8/PTmDFj1LFjR+3du1dFixbV9u3bNXDgQL3yyivq2rWr1qxZoxdeeMG+fkhIiNq1a6cFCxaoYcOG9vkLFizQgAEDVKFCBa1YsULdunVTbGys/Pz87Mf4+eef16effqrZs2eratWq2rRpkx588EGVKlVKrVu31oQJE7R37159/fXXKlmypA4cOKB//vknW/1YoJgCZP/+/UaS2bNnT6bLL126ZC5cuGB/HTlyxEgyFy5cyOdKAVwrMTHRSDKSTGJiorPLAQqEq8cFL168Mr4ys379eiPJnDt3zhhjzOnTp839999vfH19zcmTJzNdJywszLz99tv26YoVK5oHH3zQPp2WlmYCAwPN7NmzbzhuDx06ZCSZqKgoh/n9+/c3QUFB5vLly/Z5c+bMMcWLF3f4/96XX35pXFxcTHx8vDHGmKCgIPP666/bl6ekpJgKFSqYyMhI+7zWrVubYcOG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AADAzXPa0+EiIiK0Z88eRUdH218NGzZU3759FR0dzQcBwELq16+vjz/+WEuXLlWtWrU0ceJETZ482eGhCDfi5+enL774QtHR0QoPD9f48eM1ceJESbKfbS5Xrpy++uor/fTTT6pbt66eeOIJPfLII3r++edvuH0XFxctXbpUu3btUq1atTRixAi9/vrrmbZ99dVXNXXqVNWtW1ebN2/WZ599ppIlS0qSypYtqx9++EGpqalq3769atWqpWHDhsnf3/+GQQwAAOQOm8nqLuZ81qZNG4WHhzv8HkZWEhIS5O/vrwsXLjjcXwAAkrR48WI9/PDDunDhgv2R3AAA4PaUk2zABekAbhsffPCBKleurHLlymn37t0aM2aMevToQQACAAAOClQIuvZX1QEgJ+Lj4zVx4kTFx8erTJkyeuCBB/Tyyy9na924uDiFhYVdd/nevXtv+AhtAABQOBSoy+FyisvhAOSWlJQUHT58+LrLeZobAAAFG5fDAUAOubq6qkqVKs4uAwAA5AMeRQQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUghBAAAAACyFEAQAAADAUlydXcCtMMZIkhISEpxcCQAAAABnSs8E6RkhK4U6BF28eFGSFBwc7ORKAAAAABQEFy9elL+/f5ZtbCY7UamASktL0/Hjx+Xr6yubzZZv+01I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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "fig = plt.figure(figsize=(10, 5))\n", "axes = fig.add_subplot(111)\n", "plt.title(\"Primate Phylogenetic Tree\", fontsize=15)\n", "Phylo.draw(tree, axes=axes)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "174d38ca-f678-4d4c-89d1-a90f92933904", "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.12.7" } }, "nbformat": 4, "nbformat_minor": 5 }