{ "cells": [ { "cell_type": "markdown", "metadata": { "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "source": [ "# Quick start" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Download sample data" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "%%bash\n", "mkdir -p data\n", "cd data\n", "wget --quiet http://biodatageeks.ii.pw.edu.pl/sequila/data/NA12878.multichrom.md.bam\n", "wget --quiet http://biodatageeks.ii.pw.edu.pl/sequila/data/NA12878.multichrom.md.bam.bai\n", "wget --quiet http://biodatageeks.ii.pw.edu.pl/sequila/data/Homo_sapiens_assembly18_chr1_chrM.small.fasta\n", "wget --quiet http://biodatageeks.ii.pw.edu.pl/sequila/data/Homo_sapiens_assembly18_chr1_chrM.small.fasta.fai\n", "wget --quiet https://raw.githubusercontent.com/bigdatagenomics/mango/master/mango-pileup/examples/data/alignments.ga4gh.chr17.1-250.json" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "import os\n", "base_path = f\"{os.getcwd()}/data\"\n", "\n", "bam_path = f'{base_path}/NA12878.multichrom.md.bam'\n", "ref_path=f'{base_path}/Homo_sapiens_assembly18_chr1_chrM.small.fasta'\n", "sample_id= 'NA12878'\n", "table_name = 'reads'\n", "\n", "app_name = \"sequila\"\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Check if your env variables are properly set" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ensure that:\n", "\n", "* you use Java 11 in have set JAVA_HOME accordingly,\n", "* Apache Spark 3.1.2 in SPARK_HOME,\n", "* SeQuiLa Scala package is in your PYSPARK_SUBMIT_ARGS (i.e. --package parameter)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%%bash\n", "echo \"JAVA_HOME is $JAVA_HOME\"\n", "echo \"SPARK_HOME is $SPARK_HOME\"\n", "echo \"PYSPARK_SUBMIT_ARGS is $PYSPARK_SUBMIT_ARGS\"\n", "java -version\n", "spark-shell --version" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Install pysequila and pandas" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!pip install pysequila==$VERSION pandas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Initialize PySequila Session" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "from pysequila import SequilaSession\n", "ss = SequilaSession \\\n", " .builder \\\n", " .appName(f'{app_name}') \\\n", " .getOrCreate()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create a table over BAM files" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "ss.sql(f'''CREATE TABLE IF NOT EXISTS {table_name} \\\n", " USING org.biodatageeks.sequila.datasources.BAM.BAMDataSource \\\n", " OPTIONS(path \"{bam_path}\")''')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Run a simple select statement" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "import pandas as pd\n", "pd.options.display.max_columns = None\n", "ss.sql(f'''SELECT sample_id, contig, pos, cigar, seq \\\n", " FROM {table_name} LIMIT 5''').toPandas()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Calculate pileup" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "ss.sql(f'''SELECT contig, pos_start, pos_end, ref, coverage, countRef, alts \\\n", " FROM pileup('{table_name}', '{sample_id}', '{ref_path}', true, true ) LIMIT 10''').toPandas()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ss.stop()" ] } ], "metadata": { "kernelspec": { "display_name": "pysequila", "language": "python", "name": "pysequila" }, "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.9" } }, "nbformat": 4, "nbformat_minor": 4 }