{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Introduction to Phylopandas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let me introduce you to PhyloPandas. A Pandas dataframe and interface for phylogenetics." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import phylopandas as ph" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reading data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Phylopandas comes with various `read_` methods to load phylogenetic data into a Pandas DataFrame.\n", "\n", "Check out the various formats by hitting `tab` after `read` in the cell below." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "ename": "AttributeError", "evalue": "module 'phylopandas' has no attribute 'read_'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mph\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m: module 'phylopandas' has no attribute 'read_'" ] } ], "source": [ "ph.read_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Try reading some of the sequence files in the `data` folder." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "with open('PF08793_seed.fasta', 'r') as f:\n", " print(f.read())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ph.read_fasta('PF08793_seed.fasta')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ph.read_phylip('PF08793_seed.phylip')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ph.read_clustal('PF08793_seed.clustal')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Writing data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "PhyloPandas attaches a `phylo` accessor to the standard Pandas DataFrame. Inside this accessor are various writing methods, following Pandas syntax, allowing you to write to various sequence formats.\n", "\n", "To quickly see the writing functions, hit `tab` after `to_` in the cell below." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df = ph.read_fasta('PF08793_seed.fasta')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df.phylo.to_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's write the dataframe back out to fasta. If you don't give a filename, it will return a string." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s = df.phylo.to_fasta()\n", "print(s)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Converting between formats" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Of course, this means you can easily convert between sequence formats. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ">5PosaPz1Ba\n", "KCIAFDK----ND-KINPFTGRPINENNDTYRMIYSMCHG\n", ">nTtjWXLcTL\n", "ACALYYD----DP-TVNPFTDEPLRRYSPIDDLLYRNCES\n", ">Nk9EoqE14T\n", "YCTNFHR----DE-SRNPLTGKKLVPTSPIRKAWHKMCSG\n", ">KrryYldJzG\n", "LCAEYKR----SP-RYNPWTDRTLAPGSPKHNLISGMCGG\n", ">8sH15yS2LJ\n", "VCNDLALCSQHTD-TYNPWTDRALLPDSPVHDMIDYVCNT\n", ">38EkV6VtF1\n", "VCERFAA----DP-TRNPVTGSPLSRNDPLYTDLMEICKG\n", ">goe9RcxcQY\n", "TCEAFCR----DP-TRNPVTGQKMRRNGIEYQMFAEECDC\n", ">zBbStiY22V\n", "KCDEWEKIRLNSS-PKNPFTKRNVKKDGPTYKKIDLICKH\n", ">gUstHy3NWv\n", "KCYEWDIAKKKSPLPKSPLTGRKLKQHGPTWKKITAECAT\n", ">pJSzBTSdyJ\n", "KCSKWHE----QP-LINPLTNRKIKKNGPTYKELERECGP\n", ">hHqmLdOzYk\n", "LCSKWKA----NP-LVNPATGRKIKKDGPVYEKIQKKCS-\n", ">9PhikwhdAD\n", "YCDEFER----NP-TRNPRTGRTIKRGGPVFRALERECSD\n", ">YIM7zb5VSh\n", "-CPEFAR----DP-TRNPRTGRTIKRGGPTYRALEAECAD\n", ">hhFPHo9QRt\n", "ECEQWLA----NK-GINPRTGKAIKIGGPTYKKLEMECKE\n", ">1UAjmKxk2o\n", "VCKKFLA----NK-TVSPYSGRPIKPGKKLYNDLEKHCSG\n", ">AxcIhHg3sO\n", "QCRAFEE----NP-DVNPNTGRRISPTGPIASSMRRRCMN\n", ">yuLFxOOfPi\n", "KCNQLRN----NRYTVNPVSNRAIAPRGDTANTLRRICEQ\n", ">URSmxyxeaW\n", "QCETFKR----NKQAVSPLTNCPIDKFGRTAARFRKECD-\n", "\n" ] } ], "source": [ "df = ph.read_phylip('PF08793_seed.phylip')\n", "\n", "fasta_str = df.phylo.to_fasta()\n", "\n", "print(fasta_str)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reading Tree Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Phylopandas can also read in phylogenetic tree data." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(Q8QUQ5_ISKNN/45-79:0.38376442,Q8QUQ6_ISKNN/37-75:0.93473288,(Q8QUQ5_ISKNN/123-157:1.14582942,(Q0E553_SFAVA/142-176:0.94308689,(Q0E553_SFAVA/184-218:0.98977147,(Q0E553_SFAVA/60-94:0.95706148,(((019R_FRG3G/5-39:0.06723315,(019R_FRG3G/139-172:0.05690376,(019R_FRG3G/249-283:0.95772959,019R_FRG3G/302-336:0.58361302)2.745285:0.61968795)1.680162:0.12814819)8.545520:0.30724093,((VF232_IIV6/64-98:0.77338949,((VF380_IIV6/7-45:0.56133629,VF380_IIV3/8-47:0.64307079)7.484104:0.37367018,(VF378_IIV6/4-38:0.31530205,O41158_PBCV1/63-96:0.46076842)1.909391:0.20522645)0.218717:0.09388521)2.531435:0.20551347,Q0E553_SFAVA/14-48:1.58834786)0.265099:0.00027193)6.209727:0.37908212,(Q8QUQ5_ISKNN/164-198:0.63907222,Q8QUQ5_ISKNN/7-42:0.96743219)2.806276:0.362965)0.677978:0.20054193)0.718698:0.20642561)2.503850:0.27168922)1.162623:0.15868612)6.040602:0.48939921);\n", "\n" ] } ], "source": [ "with open('PF08793_seed.newick', 'r') as f:\n", " print( f.read())" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "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", "
typeidparentlengthlabeldistanceuid
0root0None0.00000000.000000kCIjFBZKXZ
1leafQ8QUQ5_ISKNN/45-7900.383764Q8QUQ5_ISKNN/45-790.383764wKP5pcfIok
2leafQ8QUQ6_ISKNN/37-7500.934733Q8QUQ6_ISKNN/37-750.934733Wi6ARQAOcw
3node100.48939910.489399iKoRLPGtl6
4leafQ8QUQ5_ISKNN/123-15711.145829Q8QUQ5_ISKNN/123-1571.635229RbLr5Hi2L9
5node210.15868620.648085pR3f9C8Ort
6leafQ0E553_SFAVA/142-17620.943087Q0E553_SFAVA/142-1761.5911728wbvqaG3jg
7node320.27168930.919775sCUs3pJLK8
8leafQ0E553_SFAVA/184-21830.989771Q0E553_SFAVA/184-2181.909546Lov4UJif6D
9node430.20642641.1262005yDZXG1tyd
10leafQ0E553_SFAVA/60-9440.957061Q0E553_SFAVA/60-942.0832625vdNmIFPXc
11node540.20054251.326742WBQ9xPajWc
12node650.37908261.705824ghTcY2ffpP
13node760.30724172.013065Jppnt2XML0
14leaf019R_FRG3G/5-3970.067233019R_FRG3G/5-392.080298TDxeDIcFpO
15node870.12814882.1412136iGd5fwhap
16leaf019R_FRG3G/139-17280.056904019R_FRG3G/139-1722.198117hyhVxB9tHU
17node980.61968892.760901QnhYrilQej
18leaf019R_FRG3G/249-28390.957730019R_FRG3G/249-2833.718631V4FBuc6aRj
19leaf019R_FRG3G/302-33690.583613019R_FRG3G/302-3363.344514QKM2XtMt64
20node1060.000272101.706096NIJbhPLOuF
21node11100.205513111.911610lk3EvVgXDt
22leafVF232_IIV6/64-98110.773389VF232_IIV6/64-982.684999FAdWRQzPjL
23node12110.093885122.005495i7efTQ6vir
24node13120.373670132.3791651b9wK0j6kP
25leafVF380_IIV6/7-45130.561336VF380_IIV6/7-452.940501M4uL7HMUUX
26leafVF380_IIV3/8-47130.643071VF380_IIV3/8-473.0222363D2lkpDYdj
27node14120.205226142.210721MPQsyhpHRU
28leafVF378_IIV6/4-38140.315302VF378_IIV6/4-382.526023PpUlPwYDu2
29leafO41158_PBCV1/63-96140.460768O41158_PBCV1/63-962.671490TdWSC3FiL6
30leafQ0E553_SFAVA/14-48101.588348Q0E553_SFAVA/14-483.29444499kd8VpIQk
31node1550.362965151.689707y1TJLF3YJa
32leafQ8QUQ5_ISKNN/164-198150.639072Q8QUQ5_ISKNN/164-1982.3287796MpoaU0KeN
33leafQ8QUQ5_ISKNN/7-42150.967432Q8QUQ5_ISKNN/7-422.657139w84ibjT7xv
\n", "
" ], "text/plain": [ " type id parent length label \\\n", "0 root 0 None 0.000000 0 \n", "1 leaf Q8QUQ5_ISKNN/45-79 0 0.383764 Q8QUQ5_ISKNN/45-79 \n", "2 leaf Q8QUQ6_ISKNN/37-75 0 0.934733 Q8QUQ6_ISKNN/37-75 \n", "3 node 1 0 0.489399 1 \n", "4 leaf Q8QUQ5_ISKNN/123-157 1 1.145829 Q8QUQ5_ISKNN/123-157 \n", "5 node 2 1 0.158686 2 \n", "6 leaf Q0E553_SFAVA/142-176 2 0.943087 Q0E553_SFAVA/142-176 \n", "7 node 3 2 0.271689 3 \n", "8 leaf Q0E553_SFAVA/184-218 3 0.989771 Q0E553_SFAVA/184-218 \n", "9 node 4 3 0.206426 4 \n", "10 leaf Q0E553_SFAVA/60-94 4 0.957061 Q0E553_SFAVA/60-94 \n", "11 node 5 4 0.200542 5 \n", "12 node 6 5 0.379082 6 \n", "13 node 7 6 0.307241 7 \n", "14 leaf 019R_FRG3G/5-39 7 0.067233 019R_FRG3G/5-39 \n", "15 node 8 7 0.128148 8 \n", "16 leaf 019R_FRG3G/139-172 8 0.056904 019R_FRG3G/139-172 \n", "17 node 9 8 0.619688 9 \n", "18 leaf 019R_FRG3G/249-283 9 0.957730 019R_FRG3G/249-283 \n", "19 leaf 019R_FRG3G/302-336 9 0.583613 019R_FRG3G/302-336 \n", "20 node 10 6 0.000272 10 \n", "21 node 11 10 0.205513 11 \n", "22 leaf VF232_IIV6/64-98 11 0.773389 VF232_IIV6/64-98 \n", "23 node 12 11 0.093885 12 \n", "24 node 13 12 0.373670 13 \n", "25 leaf VF380_IIV6/7-45 13 0.561336 VF380_IIV6/7-45 \n", "26 leaf VF380_IIV3/8-47 13 0.643071 VF380_IIV3/8-47 \n", "27 node 14 12 0.205226 14 \n", "28 leaf VF378_IIV6/4-38 14 0.315302 VF378_IIV6/4-38 \n", "29 leaf O41158_PBCV1/63-96 14 0.460768 O41158_PBCV1/63-96 \n", "30 leaf Q0E553_SFAVA/14-48 10 1.588348 Q0E553_SFAVA/14-48 \n", "31 node 15 5 0.362965 15 \n", "32 leaf Q8QUQ5_ISKNN/164-198 15 0.639072 Q8QUQ5_ISKNN/164-198 \n", "33 leaf Q8QUQ5_ISKNN/7-42 15 0.967432 Q8QUQ5_ISKNN/7-42 \n", "\n", " distance uid \n", "0 0.000000 kCIjFBZKXZ \n", "1 0.383764 wKP5pcfIok \n", "2 0.934733 Wi6ARQAOcw \n", "3 0.489399 iKoRLPGtl6 \n", "4 1.635229 RbLr5Hi2L9 \n", "5 0.648085 pR3f9C8Ort \n", "6 1.591172 8wbvqaG3jg \n", "7 0.919775 sCUs3pJLK8 \n", "8 1.909546 Lov4UJif6D \n", "9 1.126200 5yDZXG1tyd \n", "10 2.083262 5vdNmIFPXc \n", "11 1.326742 WBQ9xPajWc \n", "12 1.705824 ghTcY2ffpP \n", "13 2.013065 Jppnt2XML0 \n", "14 2.080298 TDxeDIcFpO \n", "15 2.141213 6iGd5fwhap \n", "16 2.198117 hyhVxB9tHU \n", "17 2.760901 QnhYrilQej \n", "18 3.718631 V4FBuc6aRj \n", "19 3.344514 QKM2XtMt64 \n", "20 1.706096 NIJbhPLOuF \n", "21 1.911610 lk3EvVgXDt \n", "22 2.684999 FAdWRQzPjL \n", "23 2.005495 i7efTQ6vir \n", "24 2.379165 1b9wK0j6kP \n", "25 2.940501 M4uL7HMUUX \n", "26 3.022236 3D2lkpDYdj \n", "27 2.210721 MPQsyhpHRU \n", "28 2.526023 PpUlPwYDu2 \n", "29 2.671490 TdWSC3FiL6 \n", "30 3.294444 99kd8VpIQk \n", "31 1.689707 y1TJLF3YJa \n", "32 2.328779 6MpoaU0KeN \n", "33 2.657139 w84ibjT7xv " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ph.read_newick('PF08793_seed.newick')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Why is PhyloPandas useful? \n", "\n", "We already have BioPython, DendroPy, ete3, etc. right?" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "df = ph.read_newick('PF08793_seed.newick')\n", "\n", "df2 = df.loc[df.type == \"leaf\"]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "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", "
typeidparentlengthlabeldistanceuid
0root0None0.00000000.0000009x4F7nTLnY
1leafQ8QUQ5_ISKNN/45-7900.383764Q8QUQ5_ISKNN/45-790.383764bhUZpMzqaw
2leafQ8QUQ6_ISKNN/37-7500.934733Q8QUQ6_ISKNN/37-750.934733AGoLMJy4qb
3node100.48939910.489399PEr58Pk7IB
4leafQ8QUQ5_ISKNN/123-15711.145829Q8QUQ5_ISKNN/123-1571.635229CQmpogxXrH
5node210.15868620.6480854fGJ1yqAd6
6leafQ0E553_SFAVA/142-17620.943087Q0E553_SFAVA/142-1761.591172W89uwOl3sK
7node320.27168930.919775xCOwZZkfi5
8leafQ0E553_SFAVA/184-21830.989771Q0E553_SFAVA/184-2181.909546gDFNACm9Vx
9node430.20642641.126200BngfjtGSGI
10leafQ0E553_SFAVA/60-9440.957061Q0E553_SFAVA/60-942.083262fRZuaBG9S3
11node540.20054251.326742NmlJLQbDRv
12node650.37908261.705824lrdraHKZPu
13node760.30724172.013065PFW37AvcYM
14leaf019R_FRG3G/5-3970.067233019R_FRG3G/5-392.080298mclkZI6LJJ
15node870.12814882.141213L812ps7kEQ
16leaf019R_FRG3G/139-17280.056904019R_FRG3G/139-1722.1981176qtDyUu3Xx
17node980.61968892.760901jbaGKmQX58
18leaf019R_FRG3G/249-28390.957730019R_FRG3G/249-2833.718631ZM0EOpcIQT
19leaf019R_FRG3G/302-33690.583613019R_FRG3G/302-3363.344514WQi85K0XJ9
20node1060.000272101.706096m5gcndbJ8y
21node11100.205513111.911610HTHRlWWbVk
22leafVF232_IIV6/64-98110.773389VF232_IIV6/64-982.684999HKAm1CcD5f
23node12110.093885122.00549543NfhfKUkH
24node13120.373670132.379165pHJPwh7ew7
25leafVF380_IIV6/7-45130.561336VF380_IIV6/7-452.940501rrJHPnwZSf
26leafVF380_IIV3/8-47130.643071VF380_IIV3/8-473.022236ZvZl8mCP8M
27node14120.205226142.210721uBIkldlUE1
28leafVF378_IIV6/4-38140.315302VF378_IIV6/4-382.526023OBk4WSlGu7
29leafO41158_PBCV1/63-96140.460768O41158_PBCV1/63-962.671490PO4PsryR5V
30leafQ0E553_SFAVA/14-48101.588348Q0E553_SFAVA/14-483.294444P3GhB4vdqL
31node1550.362965151.689707HTXFsynsuZ
32leafQ8QUQ5_ISKNN/164-198150.639072Q8QUQ5_ISKNN/164-1982.32877956dIugXUfd
33leafQ8QUQ5_ISKNN/7-42150.967432Q8QUQ5_ISKNN/7-422.657139G193mLw0d7
\n", "
" ], "text/plain": [ " type id parent length label \\\n", "0 root 0 None 0.000000 0 \n", "1 leaf Q8QUQ5_ISKNN/45-79 0 0.383764 Q8QUQ5_ISKNN/45-79 \n", "2 leaf Q8QUQ6_ISKNN/37-75 0 0.934733 Q8QUQ6_ISKNN/37-75 \n", "3 node 1 0 0.489399 1 \n", "4 leaf Q8QUQ5_ISKNN/123-157 1 1.145829 Q8QUQ5_ISKNN/123-157 \n", "5 node 2 1 0.158686 2 \n", "6 leaf Q0E553_SFAVA/142-176 2 0.943087 Q0E553_SFAVA/142-176 \n", "7 node 3 2 0.271689 3 \n", "8 leaf Q0E553_SFAVA/184-218 3 0.989771 Q0E553_SFAVA/184-218 \n", "9 node 4 3 0.206426 4 \n", "10 leaf Q0E553_SFAVA/60-94 4 0.957061 Q0E553_SFAVA/60-94 \n", "11 node 5 4 0.200542 5 \n", "12 node 6 5 0.379082 6 \n", "13 node 7 6 0.307241 7 \n", "14 leaf 019R_FRG3G/5-39 7 0.067233 019R_FRG3G/5-39 \n", "15 node 8 7 0.128148 8 \n", "16 leaf 019R_FRG3G/139-172 8 0.056904 019R_FRG3G/139-172 \n", "17 node 9 8 0.619688 9 \n", "18 leaf 019R_FRG3G/249-283 9 0.957730 019R_FRG3G/249-283 \n", "19 leaf 019R_FRG3G/302-336 9 0.583613 019R_FRG3G/302-336 \n", "20 node 10 6 0.000272 10 \n", "21 node 11 10 0.205513 11 \n", "22 leaf VF232_IIV6/64-98 11 0.773389 VF232_IIV6/64-98 \n", "23 node 12 11 0.093885 12 \n", "24 node 13 12 0.373670 13 \n", "25 leaf VF380_IIV6/7-45 13 0.561336 VF380_IIV6/7-45 \n", "26 leaf VF380_IIV3/8-47 13 0.643071 VF380_IIV3/8-47 \n", "27 node 14 12 0.205226 14 \n", "28 leaf VF378_IIV6/4-38 14 0.315302 VF378_IIV6/4-38 \n", "29 leaf O41158_PBCV1/63-96 14 0.460768 O41158_PBCV1/63-96 \n", "30 leaf Q0E553_SFAVA/14-48 10 1.588348 Q0E553_SFAVA/14-48 \n", "31 node 15 5 0.362965 15 \n", "32 leaf Q8QUQ5_ISKNN/164-198 15 0.639072 Q8QUQ5_ISKNN/164-198 \n", "33 leaf Q8QUQ5_ISKNN/7-42 15 0.967432 Q8QUQ5_ISKNN/7-42 \n", "\n", " distance uid \n", "0 0.000000 9x4F7nTLnY \n", "1 0.383764 bhUZpMzqaw \n", "2 0.934733 AGoLMJy4qb \n", "3 0.489399 PEr58Pk7IB \n", "4 1.635229 CQmpogxXrH \n", "5 0.648085 4fGJ1yqAd6 \n", "6 1.591172 W89uwOl3sK \n", "7 0.919775 xCOwZZkfi5 \n", "8 1.909546 gDFNACm9Vx \n", "9 1.126200 BngfjtGSGI \n", "10 2.083262 fRZuaBG9S3 \n", "11 1.326742 NmlJLQbDRv \n", "12 1.705824 lrdraHKZPu \n", "13 2.013065 PFW37AvcYM \n", "14 2.080298 mclkZI6LJJ \n", "15 2.141213 L812ps7kEQ \n", "16 2.198117 6qtDyUu3Xx \n", "17 2.760901 jbaGKmQX58 \n", "18 3.718631 ZM0EOpcIQT \n", "19 3.344514 WQi85K0XJ9 \n", "20 1.706096 m5gcndbJ8y \n", "21 1.911610 HTHRlWWbVk \n", "22 2.684999 HKAm1CcD5f \n", "23 2.005495 43NfhfKUkH \n", "24 2.379165 pHJPwh7ew7 \n", "25 2.940501 rrJHPnwZSf \n", "26 3.022236 ZvZl8mCP8M \n", "27 2.210721 uBIkldlUE1 \n", "28 2.526023 OBk4WSlGu7 \n", "29 2.671490 PO4PsryR5V \n", "30 3.294444 P3GhB4vdqL \n", "31 1.689707 HTXFsynsuZ \n", "32 2.328779 56dIugXUfd \n", "33 2.657139 G193mLw0d7 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "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", "
typeidparentlengthlabeldistanceuid
1leafQ8QUQ5_ISKNN/45-7900.383764Q8QUQ5_ISKNN/45-790.383764bhUZpMzqaw
2leafQ8QUQ6_ISKNN/37-7500.934733Q8QUQ6_ISKNN/37-750.934733AGoLMJy4qb
4leafQ8QUQ5_ISKNN/123-15711.145829Q8QUQ5_ISKNN/123-1571.635229CQmpogxXrH
6leafQ0E553_SFAVA/142-17620.943087Q0E553_SFAVA/142-1761.591172W89uwOl3sK
8leafQ0E553_SFAVA/184-21830.989771Q0E553_SFAVA/184-2181.909546gDFNACm9Vx
10leafQ0E553_SFAVA/60-9440.957061Q0E553_SFAVA/60-942.083262fRZuaBG9S3
14leaf019R_FRG3G/5-3970.067233019R_FRG3G/5-392.080298mclkZI6LJJ
16leaf019R_FRG3G/139-17280.056904019R_FRG3G/139-1722.1981176qtDyUu3Xx
18leaf019R_FRG3G/249-28390.957730019R_FRG3G/249-2833.718631ZM0EOpcIQT
19leaf019R_FRG3G/302-33690.583613019R_FRG3G/302-3363.344514WQi85K0XJ9
22leafVF232_IIV6/64-98110.773389VF232_IIV6/64-982.684999HKAm1CcD5f
25leafVF380_IIV6/7-45130.561336VF380_IIV6/7-452.940501rrJHPnwZSf
26leafVF380_IIV3/8-47130.643071VF380_IIV3/8-473.022236ZvZl8mCP8M
28leafVF378_IIV6/4-38140.315302VF378_IIV6/4-382.526023OBk4WSlGu7
29leafO41158_PBCV1/63-96140.460768O41158_PBCV1/63-962.671490PO4PsryR5V
30leafQ0E553_SFAVA/14-48101.588348Q0E553_SFAVA/14-483.294444P3GhB4vdqL
32leafQ8QUQ5_ISKNN/164-198150.639072Q8QUQ5_ISKNN/164-1982.32877956dIugXUfd
33leafQ8QUQ5_ISKNN/7-42150.967432Q8QUQ5_ISKNN/7-422.657139G193mLw0d7
\n", "
" ], "text/plain": [ " type id parent length label \\\n", "1 leaf Q8QUQ5_ISKNN/45-79 0 0.383764 Q8QUQ5_ISKNN/45-79 \n", "2 leaf Q8QUQ6_ISKNN/37-75 0 0.934733 Q8QUQ6_ISKNN/37-75 \n", "4 leaf Q8QUQ5_ISKNN/123-157 1 1.145829 Q8QUQ5_ISKNN/123-157 \n", "6 leaf Q0E553_SFAVA/142-176 2 0.943087 Q0E553_SFAVA/142-176 \n", "8 leaf Q0E553_SFAVA/184-218 3 0.989771 Q0E553_SFAVA/184-218 \n", "10 leaf Q0E553_SFAVA/60-94 4 0.957061 Q0E553_SFAVA/60-94 \n", "14 leaf 019R_FRG3G/5-39 7 0.067233 019R_FRG3G/5-39 \n", "16 leaf 019R_FRG3G/139-172 8 0.056904 019R_FRG3G/139-172 \n", "18 leaf 019R_FRG3G/249-283 9 0.957730 019R_FRG3G/249-283 \n", "19 leaf 019R_FRG3G/302-336 9 0.583613 019R_FRG3G/302-336 \n", "22 leaf VF232_IIV6/64-98 11 0.773389 VF232_IIV6/64-98 \n", "25 leaf VF380_IIV6/7-45 13 0.561336 VF380_IIV6/7-45 \n", "26 leaf VF380_IIV3/8-47 13 0.643071 VF380_IIV3/8-47 \n", "28 leaf VF378_IIV6/4-38 14 0.315302 VF378_IIV6/4-38 \n", "29 leaf O41158_PBCV1/63-96 14 0.460768 O41158_PBCV1/63-96 \n", "30 leaf Q0E553_SFAVA/14-48 10 1.588348 Q0E553_SFAVA/14-48 \n", "32 leaf Q8QUQ5_ISKNN/164-198 15 0.639072 Q8QUQ5_ISKNN/164-198 \n", "33 leaf Q8QUQ5_ISKNN/7-42 15 0.967432 Q8QUQ5_ISKNN/7-42 \n", "\n", " distance uid \n", "1 0.383764 bhUZpMzqaw \n", "2 0.934733 AGoLMJy4qb \n", "4 1.635229 CQmpogxXrH \n", "6 1.591172 W89uwOl3sK \n", "8 1.909546 gDFNACm9Vx \n", "10 2.083262 fRZuaBG9S3 \n", "14 2.080298 mclkZI6LJJ \n", "16 2.198117 6qtDyUu3Xx \n", "18 3.718631 ZM0EOpcIQT \n", "19 3.344514 WQi85K0XJ9 \n", "22 2.684999 HKAm1CcD5f \n", "25 2.940501 rrJHPnwZSf \n", "26 3.022236 ZvZl8mCP8M \n", "28 2.526023 OBk4WSlGu7 \n", "29 2.671490 PO4PsryR5V \n", "30 3.294444 P3GhB4vdqL \n", "32 2.328779 56dIugXUfd \n", "33 2.657139 G193mLw0d7 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Here is where the real magic happens!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reading Sequence *and* Tree Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Phylopandas has the ability to combine sequence and tree data in a single DataFrame." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# Read sequences.\n", "df = ph.read_fasta('PF08793_seed.fasta')\n", "\n", "# Read tree.\n", "df = df.phylo.read_newick('PF08793_seed.newick', combine_on='id')\n", "#df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This enables us to build phylogenetics tools around a single, core dataframe. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## View an interactive Tree" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**You must have PhyloVega installed!**\n", "\n", "https://github.com/Zsailer/phylovega" ] } ], "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.3" } }, "nbformat": 4, "nbformat_minor": 2 }