{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Cookbook recipe: Access and plot ipyrad stats in R" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Jupyter notebooks provide a convenient interface for sharing data and functions between Python and R through use of the Python `rpy2` module. By combining all of your code from across multiple languages inside a single notebook your workflow from analyses to plots is easy to follow and reproduce. In this notebook, I show an example of exporting data from an ipyrad JSON object into R so that we can create high quality plots using plotting libraries in R. \n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Why do this?\n", "A large motivation for creating the JSON storage object for ipyrad Assemblies is that this object stores all of the information for an entire assembly, and thus provides a useful portable format. This way you can execute very large assemblies on a remote HPC cluster and simply import the small JSON file onto your laptop to analyze and compare its size and other stats. It is of course easiest to analyze the stats in Python since ipyrad has a built-in parser for these JSON objects. However, many users may prefer to use R for plotting, and so here we show how to easily transfer results from ipyrad to R. \n", "\n", "\n", "### Two ways of accessing data in the ipyrad JSON file:\n", "1. Load the data in with the ipyrad API and save to CSV. \n", "2. Load the data in with the ipyrad API and export to R using rpy2." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Start by importing ipyrad" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "## import ipyrad and give it a shorter name\n", "import ipyrad as ip" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Either create a new ipyrad assembly or load an existing one:\n", "Here we use the API to run the example RAD data set, which only takes about 3 minutes on a 4-core laptop. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " New Assembly: data\n", "\n", " Assembly: data\n", " [####################] 100% chunking large files | 0:00:00 | s1 | \n", " [####################] 100% sorting reads | 0:00:02 | s1 | \n", " [####################] 100% writing/compressing | 0:00:00 | s1 | \n" ] } ], "source": [ "## create a test assembly\n", "data = ip.Assembly(\"data\")\n", "data.set_params('project_dir', 'test')\n", "data.set_params('raw_fastq_path', 'ipsimdata/rad_example_R1_.fastq.gz')\n", "data.set_params('barcodes_path', 'ipsimdata/rad_example_barcodes.txt')\n", "\n", "## Assemble data set; runs steps 1-7\n", "data.run('1')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Or load a finished assembly from its JSON file" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " loading Assembly: data\n", " from saved path: ~/Documents/ipyrad/tests/test/data.json\n" ] } ], "source": [ "## load the JSON file for this assembly\n", "data = ip.load_json(\"test/data.json\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Look at the stats summary for this assembly" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " state reads_raw\n", "1A_0 1 19862\n", "1B_0 1 20043\n", "1C_0 1 20136\n", "1D_0 1 19966\n", "2E_0 1 20017\n", "2F_0 1 19933\n", "2G_0 1 20030\n", "2H_0 1 20199\n", "3I_0 1 19885\n", "3J_0 1 19822\n", "3K_0 1 19965\n", "3L_0 1 20008\n" ] } ], "source": [ "## Data can be accessed from the object's stats and stats_df attributes\n", "print data.stats" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load R-language extension" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "## This requires that you have the Python module `rpy2` installed. \n", "## If you do not, it can be installed in anaconda with: \n", "\n", "## conda install rpy2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Transfer Python object to R\n", "There are a few odd tricks to using this module. One being that you shouldn't try to transfer objects with '.' in their names. R doesn't like that. So simply rename these objects before passing them. Below I rename the stats data frame and then use the '-i' flag in R to import it into R namespace. The \"%R\" at the beginning of the line tells IPyhton to execute just that line as R code. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "ename": "ImportError", "evalue": "No module named simplegeneric", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mImportError\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[0mget_ipython\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmagic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mu'load_ext rpy2.ipython'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/home/deren/miniconda2/lib/python2.7/site-packages/IPython/core/interactiveshell.pyc\u001b[0m in \u001b[0;36mmagic\u001b[0;34m(self, arg_s)\u001b[0m\n\u001b[1;32m 2156\u001b[0m \u001b[0mmagic_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmagic_arg_s\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0marg_s\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpartition\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m' '\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2157\u001b[0m \u001b[0mmagic_name\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmagic_name\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlstrip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprefilter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mESC_MAGIC\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2158\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_line_magic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmagic_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmagic_arg_s\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2159\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2160\u001b[0m \u001b[0;31m#-------------------------------------------------------------------------\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/home/deren/miniconda2/lib/python2.7/site-packages/IPython/core/interactiveshell.pyc\u001b[0m in \u001b[0;36mrun_line_magic\u001b[0;34m(self, magic_name, line)\u001b[0m\n\u001b[1;32m 2077\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'local_ns'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getframe\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstack_depth\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf_locals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2078\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuiltin_trap\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2079\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2080\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2081\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m\u001b[0m in \u001b[0;36mload_ext\u001b[0;34m(self, module_str)\u001b[0m\n", "\u001b[0;32m/home/deren/miniconda2/lib/python2.7/site-packages/IPython/core/magic.pyc\u001b[0m in \u001b[0;36m\u001b[0;34m(f, *a, **k)\u001b[0m\n\u001b[1;32m 186\u001b[0m \u001b[0;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 187\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 188\u001b[0;31m \u001b[0mcall\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 189\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 190\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/home/deren/miniconda2/lib/python2.7/site-packages/IPython/core/magics/extension.pyc\u001b[0m in \u001b[0;36mload_ext\u001b[0;34m(self, module_str)\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mmodule_str\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mUsageError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Missing module name.'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 37\u001b[0;31m \u001b[0mres\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshell\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mextension_manager\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload_extension\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodule_str\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 38\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mres\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'already loaded'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/home/deren/miniconda2/lib/python2.7/site-packages/IPython/core/extensions.pyc\u001b[0m in \u001b[0;36mload_extension\u001b[0;34m(self, module_str)\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmodule_str\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodules\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 82\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mprepended_to_syspath\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mipython_extension_dir\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 83\u001b[0;31m \u001b[0m__import__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodule_str\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 84\u001b[0m \u001b[0mmod\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodules\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmodule_str\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 85\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_load_ipython_extension\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmod\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/home/deren/miniconda2/lib/python2.7/site-packages/rpy2-2.5.6-py2.7-linux-x86_64.egg/rpy2/ipython/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mrmagic\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mload_ipython_extension\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/home/deren/miniconda2/lib/python2.7/site-packages/rpy2-2.5.6-py2.7-linux-x86_64.egg/rpy2/ipython/rmagic.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 73\u001b[0m \u001b[0margument\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmagic_arguments\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparse_argstring\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margument_group\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 74\u001b[0m )\n\u001b[0;32m---> 75\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mIPython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexternal\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msimplegeneric\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mgeneric\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 76\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mIPython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpy3compat\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mstr_to_unicode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0municode_to_str\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mPY3\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 77\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mImportError\u001b[0m: No module named simplegeneric" ] } ], "source": [ "%load_ext rpy2.ipython" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [], "source": [ "## rename data.stats as statsDF\n", "statsDF = data.stats\n", "\n", "## import statsDF into R namespace\n", "%R -i statsDF" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Now R knows about statsDF\n", "We can access it just like a normal R DataFrame, and even create plots. Using the cell header %%R everything in the cell will execute as R code. " ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ " state reads_raw reads_filtered clusters_total clusters_hidepth hetero_est\n", "1A_0 6 20093 20093 1000 1000 0.001965305\n", "1B_0 6 19938 19938 1000 1000 0.001865104\n", "1C_0 6 20054 20054 1000 1000 0.001968599\n", "1D_0 6 20066 20066 1000 1000 0.001934149\n", "2E_0 6 19838 19838 1000 1000 0.002077262\n", "2F_0 6 20033 20033 1000 1000 0.001886744\n", "2G_0 6 20145 20145 1000 1000 0.001898473\n", "2H_0 6 20158 20158 1000 1000 0.001931724\n", "3I_0 6 20010 20010 1000 1000 0.001865512\n", "3J_0 6 19977 19977 1000 1000 0.002291394\n", "3K_0 6 20061 20061 1000 1000 0.001808438\n", "3L_0 6 19975 19975 1000 1000 0.001990599\n", " error_est reads_consens\n", "1A_0 0.0007549364 1000\n", "1B_0 0.0007512644 1000\n", "1C_0 0.0007436178 1000\n", "1D_0 0.0007661128 1000\n", "2E_0 0.0007511313 1000\n", "2F_0 0.0007386290 1000\n", "2G_0 0.0007652827 1000\n", "2H_0 0.0007361525 1000\n", "3I_0 0.0007643904 1000\n", "3J_0 0.0007778005 1000\n", "3K_0 0.0007410198 1000\n", "3L_0 0.0007273741 1000\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%R \n", "print(statsDF)\n" ] }, { "cell_type": "code", "execution_count": 92, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV4AAAFeCAMAAAD69YcoAAAC61BMVEUAAAABAQECAgIDAwMEBAQF\nBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUWFhYXFxcY\nGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgqKiorKyss\nLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/\nPz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBRUVFS\nUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBhYWFiYmJjY2NkZGRl\nZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1wcHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6\nenp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyN\njY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJyenp6fn5+goKCh\noaGioqKkpKSlpaWmpqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1\ntbW2tra3t7e4uLi5ubm6urq7u7u8vLy+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJ\nycnLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd\n3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w\n8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///9cMkkZAAAQ+klE\nQVR4nO2de3gU1RXAB5BGMCgkBEQLSJBoFbGCCoHKQ1CEBCIiChEBlWAtIuKjUrBYivEF2KoobRFQ\nBPEttkApGLWGp0FIfJKkkEQgIAnkye75szu7s7uT3ZnNnbn3TGZmz+/7YJa79565+/uW2Xtn5p6R\n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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%R -w 350 -h 350\n", "## the dimensions above tell IPython how big to make the embedded figure\n", "## alternatively you can adjust the size when you save the figure\n", "\n", "plot(statsDF$reads_raw, \n", " statsDF$reads_filtered, \n", " pch=20, cex=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Let's transfer more data from Python to R" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "### Other stats from our assembly are also available.\n", "### First store names and then import into R\n", "s5 = data.stats_dfs.s5\n", "s7L = data.stats_dfs.s7_loci\n", "s7S = data.stats_dfs.s7_snps\n", "s7N = data.stats_dfs.s7_samples\n", "\n", "## no spaces allowed between comma-separated names when \n", "## transferring multiple objects to R\n", "%R -i s5,s7L,s7S,s7N" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot coverage among samples \n", "Kinda boring in this example..." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAFACAMAAABzxegpAAACzVBMVEUAAAABAQECAgIDAwMEBAQF\nBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUWFhYXFxcY\nGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKior\nKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/\nPz9AQEBBQUFCQkJDQ0NERERFRUVGRkZISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBRUVFSUlJT\nU1NUVFRVVVVWVlZZWVlaWlpbW1tcXFxdXV1eXl5hYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlq\nampra2tsbGxubm5vb29wcHBxcXFycnJ0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/\nf3+AgICBgYGCgoKDg4OEhISGhoaIiIiJiYmLi4uNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWW\nlpaYmJiZmZmampqbm5ucnJydnZ2enp6fn5+hoaGioqKjo6OkpKSlpaWmpqanp6eoqKipqamqqqqr\nq6usrKytra2urq6wsLCxsbGysrKzs7O0tLS2tra3t7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/A\nwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU\n1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn\n5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6\n+vr7+/v8/Pz9/f3+/v7///861VlyAAAQdklEQVR4nO3d+X8U5R3A8ZGgKCaQEPDCo0CLJ8ZWUfDA\nE+/irWirtVhbtHiDR4u11tpWRdtaahWVWuuthSpotVQRRLGgBQVWlMsEc5J9/obu7sxshs13nv0+\nwZDdyef9A81r3K/P7M5+XiRP6qxnAMTyevoEgFJGIIAFgQAWBAJYEAhgQSCABYEAFgQCWBAIYEEg\n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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%R -w 800 -h 320\n", "## \n", "barplot(s7N$sample_coverage, \n", " col='grey30', names=rownames(s7N),\n", " ylab=\"N loci\",\n", " xlab=\"Sample\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the distribution of SNPs among loci" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ " var sum_var pis sum_pis\n", "0 9 0 316 0\n", "1 44 44 369 369\n", "2 117 278 204 777\n", "3 174 800 84 1029\n", "4 182 1528 19 1105\n", "5 165 2353 5 1130\n", "6 143 3211 2 1142\n", "7 76 3743 1 1149\n", "8 45 4103 0 1149\n", "9 25 4328 0 1149\n", "10 14 4468 0 1149\n", "11 5 4523 0 1149\n", "12 0 4523 0 1149\n", "13 1 4536 0 1149\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nIv8f/skqp9uajhAAAAAASUVORK5CYII=\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%R -w 450 -h 400\n", "print(s7S)\n", "\n", "barplot(s7S$var, \n", " col=rgb(0,0,1,1/4), \n", " names=rownames(s7S),\n", " ylab=\"N loci\", ylim=c(0, 400),\n", " xlab=\"N variable sites\")\n", "\n", "barplot(s7S$pis, \n", " col=rgb(1,0,0,1/4), \n", " names=rownames(s7S),\n", " ylab=\"N loci\", ylim=c(0, 400),\n", " xlab=\"N variable sites\", \n", " add=TRUE)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Future \n", "You can of course make much more complex figures with the data for your own Assembly. And you can also create figures to compare stats among multiple Assemblies. See also the R package RADami which has some functions for analysis and plotting using the .loci output file from ipyrad. \n", "\n", "If you're an R afficionado please contribute to the ipyrad cookbooks with more advanced plots or analyses, and add your notebooks to the cookbook collection by submitting them to the ipyrad github repo. " ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.12" } }, "nbformat": 4, "nbformat_minor": 0 }