{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Introduction " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is a demo of some of the features implemented in the package PhyloNetwork." ] }, { "cell_type": "markdown", "source": [ "## Basic functionality\n" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } } }, { "cell_type": "markdown", "metadata": {}, "source": [ "We import the main module and create a phylogenetic network given by its eNewick representation.\n", "\n", "Note that branch lengths and metadata are allowed." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "pycharm": { "is_executing": false } }, "outputs": [], "source": [ "import phylonetwork as pn" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "pycharm": { "is_executing": false } }, "outputs": [], "source": [ "net = pn.PhylogeneticNetwork(eNewick='((D[&Theta=0.005]:0.01034,(C[&Theta=0.005]:0.0098)#H1[&Theta=0.005,gamma=0.4051]:4.9969E-4)[&Theta=0.005]:0.04069,(A[&Theta=0.005]:0.0339,(#H1[&Theta=0.005]:0.00489,B[&Theta=0.005]:0.01474)S4[&Theta=0.005]:0.01918)[&Theta=0.005]:0.01710);')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A graphical representation can be given (if the optional packages matplotlib and pygraphviz are available). The labels are shown, and reticulations are indicated by square nodes, while tree nodes are indicated by circle nodes." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "pycharm": { "is_executing": false } }, "outputs": [ { "data": { "text/plain": "
", "image/png": "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0DgIugAsMWvWLL322mt677339Lvf/U6TJk2yuiUg5gSDQa1Zs8YctS0tLTVrDodDaWlpZri98MILWUiGJoegC8ASLVq00DPPPKOrrrpKM2bM0JVXXqmUlBSr2wKiXkVFhQoKCpSbm6v8/HxVVlaatVatWikrK0s+n0/Z2dlq166dhZ0C1iPoArDMFVdcobFjx6qgoED33XefXnzxRatbAqKOYRjatGmTuZBs7dq1CoVCZv388883F5Klp6crLi7Owm6B6ELQBWAZh8OhZ599Vr1799bixYt14403avjw4Va3BViuurpaK1euNMPt9u3bzVpcXJwyMjLk9Xrl9XrVvXt3CzsFohtBF4ClunXrpvvvv18PPfSQJk+erPXr1zMihSZpx44d5kKy5cuXq7q62qylpKSYwTYzM1OtWrWysFMgdhB0AVhu+vTpevnll7Vp0yY988wzmjZtmtUtARFXV1enkpISM9xu2LDhmPqAAQPME8kGDhwop9NpUadA7CLoArBcQkKC5s+fr+zsbD300EO6+uqrdc4551jdFhB2Bw8eVGFhofx+v/Lz87V3716z1rx5c2VmZpp723bo0MHCTgF7IOgCiApjx47VlVdeqSVLluiee+7R3/72N6tbAsKirKzMnGu7atUqBYNBs9a5c2dz1HbEiBFKSEiwsFPAfgi6AKLGb37zGxUUFGjJkiXKz89Xdna21S0BpywQCGjVqlVmuN28ebNZc7lcGj58uLlLQo8ePdjbFogggi6AqHHOOefooYce0r333qs77rhDGzduVLNmzaxuCzip3bt3Kz8/X36/X4WFhTp06JBZS05OVnZ2trxer7KyspScnGxhp0DTQtAFEFXuuusuvfjii9q0aZMee+wxPfTQQ1a3BPyIYRhav369uZBs3bp1x9R79+5tnkiWlpYmt5tft4AV+M4DEFXi4uK0YMECDR8+XHPmzNF1113HPqGICocPH9by5cuVm5ur3Nxc7dy506zFx8crIyPDDLfnnXeehZ0C+BZBF0DUGTZsmG644QYtXrxYd955p/Lz85nHCEts3brVDLYrVqxQbW2tWevYsaM51zYjI0OJiYkWdgrgeAi6AKLS448/rjfeeENLly7VkiVLdNVVV1ndEpqAYDCotWvXmgvJSktLzZrD4VBaWpoZbi+88EL+AAOiHEEXQFRKSUnRo48+qkmT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\n" }, "metadata": { "image/png": { "width": 349, "height": 231 } }, "output_type": "display_data" } ], "source": [ "net.draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We obtain some basic information from the network provided by the underlying networkx class" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "pycharm": { "is_executing": false } }, "outputs": [ { "data": { "text/plain": "NodeView(('_1', '_2', '_3', '#1', '_4', '_5', '_6', '_7', '_8'))" }, "metadata": {}, "output_type": "execute_result", "execution_count": 4 } ], "source": [ "net.nodes" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "pycharm": { "is_executing": false } }, "outputs": [ { "data": { "text/plain": "NodeDataView({'_1': {}, '_2': {'metadata': {'Theta': '0.005'}}, '_3': {'metadata': {'Theta': '0.005'}, 'label': 'D'}, '#1': {'metadata': {'Theta': '0.005'}}, '_4': {'metadata': {'Theta': '0.005'}, 'label': 'C'}, '_5': {'metadata': {'Theta': '0.005'}}, '_6': {'metadata': {'Theta': '0.005'}, 'label': 'A'}, '_7': {'metadata': {'Theta': '0.005'}, 'label': 'S4'}, '_8': {'metadata': {'Theta': '0.005'}, 'label': 'B'}})" }, "metadata": {}, "output_type": "execute_result", "execution_count": 5 } ], "source": [ "net.nodes(data=True)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "pycharm": { "is_executing": false } }, "outputs": [ { "data": { "text/plain": "OutEdgeDataView([('_1', '_2', {'length': 0.04069}), ('_1', '_5', {'length': 0.0171}), ('_2', '_3', {'length': 0.01034}), ('_2', '#1', {'length': 0.00049969}), ('#1', '_4', {'length': 0.0098}), ('_5', '_6', {'length': 0.0339}), ('_5', '_7', {'length': 0.01918}), ('_7', '#1', {'length': 0.00489}), ('_7', '_8', {'length': 0.01474})])" }, "metadata": {}, "output_type": "execute_result", "execution_count": 6 } ], "source": [ "net.edges(data=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some other information is specific to the module" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "pycharm": { "is_executing": false } }, "outputs": [ { "data": { "text/plain": "{'_3', '_4', '_6', '_8'}" }, "metadata": {}, "output_type": "execute_result", "execution_count": 7 } ], "source": [ "net.leaves" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "pycharm": { "is_executing": false } }, "outputs": [ { "data": { "text/plain": "{'_3': 'D', '_4': 'C', '_6': 'A', '_7': 'S4', '_8': 'B'}" }, "metadata": {}, "output_type": "execute_result", "execution_count": 8 } ], "source": [ "net.labeling_dict" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "pycharm": { "is_executing": false } }, "outputs": [ { "data": { "text/plain": "{'A', 'B', 'C', 'D', 'S4'}" }, "metadata": {}, "output_type": "execute_result", "execution_count": 9 } ], "source": [ "net.taxa" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "pycharm": { "is_executing": false } }, "outputs": [ { "data": { "text/plain": "True" }, "metadata": {}, "output_type": "execute_result", "execution_count": 10 } ], "source": [ "net.is_tree_child()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "pycharm": { "is_executing": false } }, "outputs": [ { "data": { "text/plain": "'_1'" }, "metadata": {}, "output_type": "execute_result", "execution_count": 11 } ], "source": [ "net.root" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "pycharm": { "is_executing": false } }, "outputs": [ { "data": { "text/plain": "{'_3': array([0, 0, 0, 1, 0]),\n '_4': array([0, 0, 1, 0, 0]),\n '#1': array([0, 0, 1, 0, 0]),\n '_2': array([0, 0, 1, 1, 0]),\n '_6': array([1, 0, 0, 0, 0]),\n '_8': array([0, 1, 0, 0, 0]),\n '_7': array([0, 1, 1, 0, 1]),\n '_5': array([1, 1, 1, 0, 1]),\n '_1': array([1, 1, 2, 1, 1])}" }, "metadata": {}, "output_type": "execute_result", "execution_count": 12 } ], "source": [ "net.mu_dict" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "pycharm": { "is_executing": false } }, "outputs": [ { "data": { "text/plain": "{'A', 'B', 'C', 'D', 'S4'}" }, "metadata": {}, "output_type": "execute_result", "execution_count": 13 } ], "source": [ "net.cluster(net.root)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "pycharm": { "is_executing": false } }, "outputs": [ { "name": "stdout", "text": [ "#1 {'C'}\n" ], "output_type": "stream" } ], "source": [ "for h in net.reticulations:\n", " print(h, net.cluster(h))" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" } }, "source": [ "## Generation of trees" ] }, { "cell_type": "code", "execution_count": 14, "outputs": [], "source": [ "\n" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n", "is_executing": false } } } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.6" }, "pycharm": { "stem_cell": { "cell_type": "raw", "source": [], "metadata": { "collapsed": false } } } }, "nbformat": 4, "nbformat_minor": 4 }