{ "cells": [ { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "ck3BpShLQ-zl" }, "source": [ "# ISB-CGC Community Notebooks\n", "\n", "Check out more notebooks at our [Community Notebooks Repository](https://github.com/isb-cgc/Community-Notebooks)!\n", "\n", "```\n", "Title: Gene Set Scoring using hg38 mutation tables\n", "Author: Lauren Hagen\n", "Created: 2019-07-22\n", "Purpose: To demonstrate how to join two tables in BigQuery to compare the expression of a set of genes between two groups.\n", "URL: https://github.com/isb-cgc/Community-Notebooks/blob/master/Notebooks/How_to_score_gene_sets_with_BigQuery.ipynb\n", "Notes: This notebook was adapted from work by David l Gibbs, January 2018 Query of the Month.\n", "```\n", "***\n", "\n", "In this notebook, we’re going to implement a common bioinformatics task: gene set scoring. In this procedure, we will compare the *joint* expression of a set of genes between two groups.\n", "\n", "Gene sets frequently result from experiments in which, for example, an expression is compared between two groups (e.g. control and treatment), and the genes that are significantly differentially expressed between the two groups form the “gene set”. Given a gene set, numerous approaches have been proposed to assign functional interpretations to a particular list of genes.\n", "\n", "A related approach is to consider pathways as gene sets: each gene set will, therefore, be a canonical representation of a biological process compiled by domain experts. We will use the [WikiPathways](https://www.wikipathways.org/index.php/Download_Pathways) gene sets that have been previously assembled and stored in BigQuery. In total there were 381 pathways downloaded from WikiPathways. In the BQ table, each row contains a pathway and a gene associated with that pathway.\n", "\n", "Our task will be to determine which genesets are differentially expressed when comparing two groups of samples. We will define groups of samples using the new hg38 Somatic Mutations table from the NCI Genomic Data Commons.\n", "\n", "The BigQuery table at ISB-CGC is found at: isb-cgc.TCGA_hg38_data_v0.Somatic_Mutation_DR10\n", "\n", "The BigQuery pathway table is found at: isb-cgc.QotM.WikiPathways_20170425_Annotated\n", "\n", "We will implement a method found in a paper titled “Gene set enrichment analysis made simple” (Rafael A Irrazary et al, PMID 20048385). They propose a simple solution that outperforms a popular and more complex method known as GSEA.\n", "\n", "In short, (I’ll explain later), the gene set score comes from an average of T-tests, where the T-statistics come from testing each gene for differential expression between the two groups. The statistic is then weighted by the square root of the sample size (number of genes in the set), so that with larger gene sets, the ‘significant’ effect size can get pretty small.\n", "\n", "At the end of it, the full query processes 29.8GB in 10.1s and costs ~$0.15.\n", "\n", "First, we will need to import bigquery module, autheticate ourselves, and create a client variable. For more information see ['Quick Start Guide to ISB-CGC'](INSERT LINK) and alternative authentication methods can be found [here](https://googleapis.github.io/google-cloud-python/latest/core/auth.html)." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "nEHzCZ1MQzEi" }, "outputs": [], "source": [ "# Import BigQuery Module\n", "from google.cloud import bigquery" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 360 }, "colab_type": "code", "id": "6JM4sBB6Tfsk", "outputId": "ad3a5101-9c83-4004-8d73-31634a31da1d" }, "outputs": [], "source": [ "# Autheticate ourselves\n", "!gcloud auth application-default login" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "H_ZoX1U8TqF4" }, "outputs": [], "source": [ "# Create a variable for which client to use with BigQuery\n", "project_num = 'your_project_number'# Replace with your project ID\n", "if project_num == 'your_project_number':\n", " print('Please update the project number with your Google Cloud Project')\n", "else:\n", " client = bigquery.Client(project) " ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "wi3LaliGSuhf" }, "source": [ "Let’s get started on creating the full query. First, which tissue type should we focus on? Let’s choose PARP1 as an interesting gene – it encodes an enzyme involved in DNA damage repair and is also the target of some therapeutic drugs – and use the Somatic Mutation table to choose a cancer type:\n", "\n", "** Note: you will need to update 'your_project_number' with your project number before continuing with the notebook **" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 731 }, "colab_type": "code", "id": "AQxiYAEpUFua", "outputId": "ac5e1d42-cd76-43d8-c619-d60f6d275aac" }, "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", "
project_short_namen
0TCGA-UCEC46
1TCGA-COAD22
2TCGA-STAD22
3TCGA-BRCA17
4TCGA-SKCM16
5TCGA-BLCA15
6TCGA-LUSC12
7TCGA-CESC9
8TCGA-GBM8
9TCGA-LUAD6
10TCGA-HNSC5
11TCGA-OV5
12TCGA-KIRC4
13TCGA-LIHC4
14TCGA-PRAD3
15TCGA-KIRP3
16TCGA-ACC3
17TCGA-LGG2
18TCGA-ESCA2
19TCGA-SARC2
20TCGA-READ2
21TCGA-PAAD1
\n", "
" ], "text/plain": [ " project_short_name n\n", "0 TCGA-UCEC 46\n", "1 TCGA-COAD 22\n", "2 TCGA-STAD 22\n", "3 TCGA-BRCA 17\n", "4 TCGA-SKCM 16\n", "5 TCGA-BLCA 15\n", "6 TCGA-LUSC 12\n", "7 TCGA-CESC 9\n", "8 TCGA-GBM 8\n", "9 TCGA-LUAD 6\n", "10 TCGA-HNSC 5\n", "11 TCGA-OV 5\n", "12 TCGA-KIRC 4\n", "13 TCGA-LIHC 4\n", "14 TCGA-PRAD 3\n", "15 TCGA-KIRP 3\n", "16 TCGA-ACC 3\n", "17 TCGA-LGG 2\n", "18 TCGA-ESCA 2\n", "19 TCGA-SARC 2\n", "20 TCGA-READ 2\n", "21 TCGA-PAAD 1" ] }, "execution_count": 226, "metadata": { "tags": [] }, "output_type": "execute_result" } ], "source": [ "# Magic command of bigquery with the project id as your project number and create a Pandas Dataframe\n", "# Change your_project_number to your project ID\n", "%%bigquery --project your_project_number\n", "SELECT\n", " project_short_name,\n", " COUNT(DISTINCT(sample_barcode_tumor)) AS n\n", "FROM\n", " `isb-cgc.TCGA_hg38_data_v0.Somatic_Mutation_DR10`\n", "WHERE\n", " Hugo_Symbol = 'PARP1'\n", "GROUP BY\n", " project_short_name\n", "ORDER BY\n", " n DESC" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "apFRdmeMUsAW" }, "source": [ "The result of that query shows that 46 tumor samples have PARP1 mutations in UCEC, followed by COAD and STAD with 22 each. That’s a big lead by UCEC, so let’s focus our work there.\n", "\n", "Here’s where our main query will begin. Since this is standard SQL, we’ll be naming each subtable, and the full query can be constructed by concatenating each of the following sub-queries. Many of the code lines that run the query at each step will be marked with '%%script false' so that extra queries are not charged." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "LNFIqrBoJx7j" }, "outputs": [], "source": [ "# Create a variable for the first subquery\n", "# This subquery will return sample barcodes with at least one known somatic mutation\n", "s1 = \"\"\"\n", "WITH\n", "s1 AS (\n", " SELECT\n", " sample_barcode_tumor AS sample_barcode\n", " FROM\n", " `isb-cgc.TCGA_hg38_data_v0.Somatic_Mutation_DR10`\n", " WHERE\n", " project_short_name = 'TCGA-UCEC'\n", " GROUP BY\n", " 1\n", ")\n", "\"\"\"\n", "# Create a variable to return the values from the first subquery\n", "query1 = s1 + \"SELECT * FROM s1\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "3XWOXPMRKpeK" }, "outputs": [], "source": [ "%%script false\n", "# Run the subquery \n", "s1_df = client.query(query1).to_dataframe()\n", "# Print the number of rows in the dataframe\n", "len(s1_df)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "8wvwqWKKPYH5" }, "source": [ "This query returns 530 tumor sample barcodes with at least one known somatic mutation. (The TCGA Biospecimen table includes information for a total of 553 UCEC tumor samples, but some may have not been sequenced or may have no somatic mutations – the former being more likely than the latter.) Recall that somatic mutations are variants in the DNA that are found when comparing the tumor sequence to the ‘matched normal’ sequence (typically from a blood sample, but sometimes from adjacent tissue). Next, for all these samples, we’ll want to restrict our analysis to samples for which we also have mRNA expression data:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "tzDkfWj5Qli_" }, "outputs": [], "source": [ "sampleGroup = \"\"\"\n", "sampleGroup AS (\n", " SELECT\n", " sample_barcode\n", " FROM\n", " `isb-cgc.TCGA_hg38_data_v0.RNAseq_Gene_Expression`\n", " WHERE\n", " project_short_name = 'TCGA-UCEC'\n", " AND sample_barcode IN\n", " (select sample_barcode from s1)\n", " GROUP BY\n", " 1\n", ")\"\"\"\n", "# Combine previous subquery with sampleGroup\n", "query2 = s1 + \",\" + sampleGroup + \"SELECT * FROM sampleGroup\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "TSIrnwbRQrxq" }, "outputs": [], "source": [ "%%script false\n", "# Run the query2 subquery \n", "sampleGroup_df = client.query(query2).to_dataframe()\n", "# Print the number of rows in the dataframe\n", "len(sampleGroup_df)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "dIKwJ1qISQ_1" }, "source": [ "Now we have 526 samples for which we have gene expression and somatic mutation calls. We are interested in partitioning this group into two parts: one with a mutation of interest, and one without. So let’s gather barcodes for tumors with non-silent mutations in PARP1." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "wpXfg27pTGYW" }, "outputs": [], "source": [ "groups = \"\"\"\n", "--\n", "-- The first group has non-synonymous mutations in PARP1\n", "--\n", "grp1 AS (\n", " SELECT\n", " sample_barcode_tumor AS sample_barcode\n", " FROM\n", " `isb-cgc.TCGA_hg38_data_v0.Somatic_Mutation_DR10`\n", " WHERE\n", " Hugo_Symbol = 'PARP1'\n", " AND One_Consequence <> 'synonymous_variant'\n", " AND sample_barcode_tumor IN (\n", " SELECT\n", " sample_barcode\n", " FROM\n", " sampleGroup )\n", " GROUP BY sample_barcode\n", " ),\n", "--\n", "-- group 2 is the rest of the samples\n", "--\n", "grp2 AS (\n", " SELECT\n", " sample_barcode\n", " FROM\n", " sampleGroup\n", " WHERE\n", " sample_barcode NOT IN (\n", " SELECT\n", " sample_barcode\n", " FROM\n", " grp1)\n", ")\n", "\"\"\"\n", "query3_grp1 = s1 + \",\" + sampleGroup + \",\" + groups + \"SELECT * FROM grp1\"\n", "query3_grp2 = s1 + \",\" + sampleGroup + \",\" + groups + \"SELECT * FROM grp2\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "TYVp--Q2T7ud" }, "outputs": [], "source": [ "%%script false\n", "# Run the query3 subquery \n", "grp1_df = client.query(query3_grp1).to_dataframe()\n", "# Print the number of rows in the dataframe\n", "len(grp1_df)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "ZsCFeBRCUAmD" }, "outputs": [], "source": [ "%%script false\n", "# Run the query4 subquery \n", "grp2_df = client.query(query3_grp2).to_dataframe()\n", "# Print the number of rows in the dataframe\n", "len(grp2_df)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "7CJHzvzWUPew" }, "source": [ "This results in 41 tumor samples with non-synonymous PARP1 variants and 485 samples without.\n", "\n", "Next we’re going to summarize the gene expression within each of these groups. This will be used for calulating T-statistics in the following portion of the query we are constructing. For each gene, we’ll take the mean, variance, and count of samples." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "M57Qsd2AUVEp" }, "outputs": [], "source": [ "summaries = \"\"\"\n", "-- Summaries for Group 1 (with mutation)\n", "--\n", "summaryGrp1 AS (\n", " select\n", " gene_name as symbol,\n", " AVG(LOG10( HTSeq__FPKM_UQ +1)) as genemean,\n", " VAR_SAMP(LOG10( HTSeq__FPKM_UQ +1)) as genevar,\n", " count(sample_barcode) as genen\n", " FROM\n", " `isb-cgc.TCGA_hg38_data_v0.RNAseq_Gene_Expression`\n", " WHERE\n", " sample_barcode IN (select sample_barcode FROM grp1)\n", " AND gene_name IN (\n", " SELECT\n", " Symbol as gene_name\n", " FROM\n", " `isb-cgc.QotM.WikiPathways_20170425_Annotated`\n", " )\n", " GROUP BY\n", " gene_name\n", "),\n", "--\n", "-- Summaries for Group 2 (without mutation)\n", "--\n", "summaryGrp2 AS (\n", " select\n", " gene_name as symbol,\n", " AVG(LOG10( HTSeq__FPKM_UQ +1)) as genemean,\n", " VAR_SAMP(LOG10( HTSeq__FPKM_UQ +1)) as genevar,\n", " count(sample_barcode) as genen\n", " FROM\n", " `isb-cgc.TCGA_hg38_data_v0.RNAseq_Gene_Expression`\n", " WHERE\n", " sample_barcode IN (select sample_barcode FROM grp2)\n", " AND gene_name IN (\n", " SELECT\n", " Symbol as gene_name\n", " FROM\n", " `isb-cgc.QotM.WikiPathways_20170425_Annotated`\n", " )\n", " GROUP BY\n", " gene_name\n", ")\n", "--\n", "\"\"\"\n", "query4_grp1 = s1 + \",\" + sampleGroup + \",\" + groups + \",\" + summaries + \"SELECT * FROM summaryGrp1\"\n", "query4_grp2 = s1 + \",\" + sampleGroup + \",\" + groups + \",\" + summaries + \"SELECT * FROM summaryGrp2\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 34 }, "colab_type": "code", "id": "cuOjZFc0UoX9", "outputId": "3061641d-856a-48e7-e2fe-745b63c78965" }, "outputs": [ { "data": { "text/plain": [ "6505" ] }, "execution_count": 11, "metadata": { "tags": [] }, "output_type": "execute_result" } ], "source": [ "%%script false\n", "# Run the query5 subquery \n", "summaryGrp1_df = client.query(query4_grp1).to_dataframe()\n", "# Print the number of rows in the dataframe\n", "len(summaryGrp1_df)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "2IwH35lxUzKG" }, "outputs": [], "source": [ "%%script false\n", "# Run the query6 subquery \n", "summaryGrp2_df = client.query(query4_grp2).to_dataframe()\n", "# Print the number of rows in the dataframe\n", "len(summaryGrp2_df)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "NJUjQlhPVS_I" }, "source": [ "This results in two sets of summaries for 4,822 genes. (There are 4,962 unique gene symbols in the WikiPathways table, but 140 of them do not match any of the symbols in the TCGA hg38 expression table.) With this, we are ready to calculate T-statistics. Here we’re going to use a two sample T-test assuming independent variance (and that we have enough samples to assume that). The T-statistic is found by taking the difference in means (of gene expression between our two groups), and normalizing it by measures of variance and sample size. Here, we want to keep T-statistics that are zero, which might come from having zero variance, because having a T-stat for each gene is important in the gene set score, even if it’s a zero. To do that, you’ll see the use of an IF statement below." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "2wPLVTNBVZtq" }, "outputs": [], "source": [ "tStatsPerGene = \"\"\"\n", "tStatsPerGene AS (\n", "SELECT\n", " grp1.symbol as symbol,\n", " grp1.genen as grp1_n,\n", " grp2.genen AS grp2_n,\n", " grp1.genemean AS grp1_mean,\n", " grp2.genemean AS grp2_mean,\n", " grp1.genemean - grp2.genemean as meandiff,\n", " IF ((grp1.genevar > 0\n", " AND grp2.genevar > 0\n", " AND grp1.genen > 0\n", " AND grp2.genen > 0),\n", " (grp1.genemean - grp2.genemean) / SQRT( (POW(grp1.genevar,2)/grp1.genen)+ (POW(grp2.genevar,2)/grp2.genen) ),\n", " 0.0) AS tstat\n", "FROM\n", " summaryGrp1 as grp1\n", " JOIN\n", " summaryGrp2 AS grp2\n", " ON\n", " grp1.symbol = grp2.symbol\n", "GROUP BY\n", " grp1.symbol,\n", " grp1.genemean,\n", " grp2.genemean,\n", " grp1.genevar,\n", " grp2.genevar,\n", " grp1.genen,\n", " grp2.genen\n", ")\n", "\"\"\"\n", "query5 = s1 + \",\" + sampleGroup + \",\" + groups + \",\" + summaries + \",\" + tStatsPerGene + \"SELECT * FROM tStatsPerGene\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 204 }, "colab_type": "code", "id": "PzVFFZgFVpwL", "outputId": "c8e50299-37c8-4a55-c278-6187b217fd10" }, "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", "
symbolgrp1_ngrp2_ngrp1_meangrp2_meanmeandifftstat
0OR2H2414890.9395601.560230-0.620669-1.678449
1AKR1C2414893.5602563.648247-0.087991-0.223780
2PRKAA2414894.2829694.369887-0.086918-2.168308
3B4GALT1414896.2734556.323255-0.049801-3.030482
4ETF1414895.7874715.7265430.06092824.259761
\n", "
" ], "text/plain": [ " symbol grp1_n grp2_n grp1_mean grp2_mean meandiff tstat\n", "0 OR2H2 41 489 0.939560 1.560230 -0.620669 -1.678449\n", "1 AKR1C2 41 489 3.560256 3.648247 -0.087991 -0.223780\n", "2 PRKAA2 41 489 4.282969 4.369887 -0.086918 -2.168308\n", "3 B4GALT1 41 489 6.273455 6.323255 -0.049801 -3.030482\n", "4 ETF1 41 489 5.787471 5.726543 0.060928 24.259761" ] }, "execution_count": 15, "metadata": { "tags": [] }, "output_type": "execute_result" } ], "source": [ "# Run the query5 subquery \n", "tStatsPerGene_df = client.query(query5).to_dataframe()\n", "tStatsPerGene_df.head()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "8iuc-uM8XGVT" }, "source": [ "We are now going plot the t-statistic using [matplotlib](https://matplotlib.org/) and [seaborn](https://seaborn.pydata.org/) with [numpy](https://numpy.org/) and [pandas](https://pandas.pydata.org/)." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "Vznlya7kYovD" }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 283 }, "colab_type": "code", "id": "O-6Oqne-Y0li", "outputId": "e0ea3fdc-8170-45ec-df68-a4d066eb8a64" }, "outputs": [ { "data": { "image/png": "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\nzsjIyBhh/A+qZFl0vZ8I2wAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] }, "output_type": "display_data" } ], "source": [ "# Set x as the t statistic for each gene\n", "x1 = tStatsPerGene_df.tstat\n", "# Set y as the absolute value of the mean difference\n", "y1 = abs(tStatsPerGene_df.meandiff)\n", "# Set the color of the dots of the absolute value of the t statistic \n", "color = abs(tStatsPerGene_df.tstat)\n", "# Create the scatter plot\n", "plt.scatter(x1,y1,c=color)\n", "# Add a legend for the colors\n", "plt.colorbar()\n", "# Add labels\n", "plt.xlabel('T Stat')\n", "plt.ylabel('Mean Absolute Difference')\n", "# Display the scatter plot\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 300 }, "colab_type": "code", "id": "KN4HYAkxKMqS", "outputId": "0f81ece1-5f49-40e0-8db7-13cba6464445" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 243, "metadata": { "tags": [] }, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] }, "output_type": "display_data" } ], "source": [ "# Create a Density Plot of the Data \n", "sns.distplot(x1, hist=False, kde=True)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "4WWmmXYUNum6" }, "source": [ "OK! We have a distribution of T statistics. The question is whether there’s some hidden structure to these values. Are there gene sets with unusually high T-statistics? And do these gene sets make any sort of biological sense? Let’s find out!\n", "\n", "Now we are going to integrate our gene set table. This is as easy as doing a table join." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "V2y-tOXyPKg1" }, "outputs": [], "source": [ "geneSetTable = \"\"\"geneSetTable AS (\n", "SELECT\n", " gs.pathway,\n", " gs.wikiID,\n", " gs.Symbol,\n", " st.grp1_n,\n", " st.grp2_n,\n", " st.grp1_mean,\n", " st.grp2_mean,\n", " st.meandiff,\n", " st.tstat\n", "FROM\n", " `isb-cgc.QotM.WikiPathways_20170425_Annotated` as gs\n", "JOIN\n", " tStatsPerGene as st\n", "ON\n", " st.symbol = gs.symbol\n", "GROUP BY\n", " gs.pathway,\n", " gs.wikiID,\n", " gs.Symbol,\n", " st.grp1_n,\n", " st.grp2_n,\n", " st.grp1_mean,\n", " st.grp2_mean,\n", " st.meandiff,\n", " st.tstat\n", ")\n", "\"\"\"\n", "query6 = s1 + \",\" + sampleGroup + \",\" + groups + \",\" + summaries + \",\" + tStatsPerGene + \",\" + geneSetTable + \"SELECT * FROM geneSetTable\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "UaqjMIK7PPFE" }, "outputs": [], "source": [ "%%script false\n", "# Run the query6 subquery \n", "geneSetTable_df = client.query(query6).to_dataframe()\n", "geneSetTable_df.head()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "oGxo1kTDP39E" }, "source": [ "That’s it! For each gene in the pathways (gene sets) table, we have joined in the T-statistic comparing our two groups. Now for the gene set score! To get this, we’re going to simply average over the T’s within each pathway, and scale the result by the square root of the number of genes. When the number of genes gets large (reasonably so), the value approximates a Z-score. In this way, using R for example, we could get a p-value and perform multiple testing correction in order to control the false discovery rate." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "ePhAsbFyQD6w" }, "outputs": [], "source": [ "geneSetScores = \"\"\"geneSetScores AS (\n", "SELECT\n", " pathway,\n", " wikiID,\n", " COUNT(symbol) AS n_genes,\n", " AVG(ABS(meandiff)) AS avgAbsDiff,\n", " (SQRT(COUNT(symbol))/COUNT(symbol)) * SUM(tstat) AS score\n", "FROM\n", " geneSetTable\n", "GROUP BY\n", " pathway,\n", " wikiID )\n", "--\n", "--\n", "SELECT\n", " *\n", "FROM\n", " geneSetScores\n", "ORDER BY\n", " score DESC \"\"\"\n", "query7 = s1 + \",\" + sampleGroup + \",\" + groups + \",\" + summaries + \",\" + tStatsPerGene + \",\" + geneSetTable + \",\" + geneSetScores" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 204 }, "colab_type": "code", "id": "HfzRaVEYQXTM", "outputId": "a1ed8260-db99-4da9-df68-59443702b299" }, "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", "
pathwaywikiIDn_genesavgAbsDiffscore
0Retinoblastoma (RB) in CancerWikiPathways_20170410850.090741100.586657
1DNA ReplicationWikiPathways_20170410410.09638787.290089
2Cell CycleWikiPathways_20170410980.08078562.985939
3Eukaryotic Transcription InitiationWikiPathways_20170410370.04666255.004553
4Glycolysis and GluconeogenesisWikiPathways_20170410480.13057054.367318
\n", "
" ], "text/plain": [ " pathway ... score\n", "0 Retinoblastoma (RB) in Cancer ... 100.586657\n", "1 DNA Replication ... 87.290089\n", "2 Cell Cycle ... 62.985939\n", "3 Eukaryotic Transcription Initiation ... 55.004553\n", "4 Glycolysis and Gluconeogenesis ... 54.367318\n", "\n", "[5 rows x 5 columns]" ] }, "execution_count": 247, "metadata": { "tags": [] }, "output_type": "execute_result" } ], "source": [ "# Run the query9 subquery \n", "geneSetScores = client.query(query7).to_dataframe()\n", "geneSetScores.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 286 }, "colab_type": "code", "id": "iDfRx7PXRM9t", "outputId": "d5476455-f473-423b-9803-8e8b96fbae3e" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 250, "metadata": { "tags": [] }, "output_type": "execute_result" }, { "data": { "image/png": "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\nQmCC\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] }, "output_type": "display_data" } ], "source": [ "x2 = geneSetScores.avgAbsDiff\n", "y2 = geneSetScores.score\n", "s = geneSetScores.n_genes\n", "plt.annotate(geneSetScores.iloc[0,0],[geneSetScores.iloc[0,3],geneSetScores.iloc[0,4]])\n", "plt.annotate(geneSetScores.iloc[1,0],[geneSetScores.iloc[1,3],geneSetScores.iloc[1,4]])\n", "plt.annotate(geneSetScores.iloc[2,0],[geneSetScores.iloc[2,3],geneSetScores.iloc[2,4]])\n", "plt.scatter(x2,y2,s,c=s)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "HD1QmAtsUaew" }, "source": [ "So, we see that ‘Retinoblastoma (RB) in Cancer’ is in the top spot with a score way above the #2 position. Why might that be? Well, PARP1 is involved in DNA damage repair, specifically through the non-homologous endjoining (NHEJ) mechanism. Samples that are deficient in PARP1 are going to have a hard time repairing DNA breaks, which makes cancer more likely. So, RB1 might need to take up the slack, and indeed it’s known as a ‘tumor suppressor protein’: when DNA is damaged, the cell cycle needs to freeze, which happens to be one of RB1’s special tricks, and also probably why we see the next two top ranked pathways ‘DNA Replication’ and ‘Cell Cycle’.\n", "\n", "For more on this topic see:\n", "\n", "* Retinoblastoma (RB) in Cancer (Homo sapiens) ([Wiki pathway WP2446](https://www.wikipathways.org/index.php/Pathway:WP2446))\n", "* RB1 gene ([Wikipedia entry](https://en.wikipedia.org/wiki/Retinoblastoma_protein))\n", "* Direct involvement of retinoblastoma family proteins in DNA repair by non-homologous end-joining. ([Cook et al, 2015](https://www.ncbi.nlm.nih.gov/pubmed/25818292))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "h-7WayKuWA56" }, "source": [ "The full query is written below and called upon with the BigQuery python magic command to ease the readablity of the SQL. It has been set not to run to save money by not running the same query a second time." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "FNoLYbA-WECt" }, "outputs": [], "source": [ "%%script false\n", "%%bigquery final_query --project your_project_number\n", "WITH\n", "s1 AS (\n", " SELECT\n", " sample_barcode_tumor AS sample_barcode\n", " FROM\n", " `isb-cgc.TCGA_hg38_data_v0.Somatic_Mutation_DR10`\n", " WHERE\n", " project_short_name = 'TCGA-UCEC'\n", " GROUP BY\n", " 1\n", "),\n", "---\n", "sampleGroup AS (\n", "SELECT\n", " sample_barcode\n", "FROM\n", " `isb-cgc.TCGA_hg38_data_v0.RNAseq_Gene_Expression`\n", "WHERE\n", " project_short_name = 'TCGA-UCEC'\n", " AND sample_barcode IN\n", " (select sample_barcode from s1)\n", "GROUP BY\n", " 1 \n", "),\n", "--\n", "-- The first group has non-synonymous mutations in PARP1\n", "--\n", "grp1 AS (\n", "SELECT\n", " sample_barcode_tumor AS sample_barcode\n", "FROM\n", " `isb-cgc.TCGA_hg38_data_v0.Somatic_Mutation_DR10`\n", "WHERE\n", " Hugo_Symbol = 'PARP1'\n", " AND One_Consequence <> 'synonymous_variant'\n", " AND sample_barcode_tumor IN (\n", " SELECT\n", " sample_barcode\n", " FROM\n", " sampleGroup )\n", " GROUP BY sample_barcode\n", "),\n", "--\n", "-- group 2 is the rest of the samples\n", "--\n", "grp2 AS (\n", "SELECT\n", " sample_barcode\n", "FROM\n", " sampleGroup\n", "WHERE\n", " sample_barcode NOT IN (\n", " SELECT\n", " sample_barcode\n", " FROM\n", " grp1)\n", "),\n", "---\n", "-- Summaries for Group 1 (with mutation)\n", "--\n", "summaryGrp1 AS (\n", " select\n", " gene_name as symbol,\n", " AVG(LOG10( HTSeq__FPKM_UQ +1)) as genemean,\n", " VAR_SAMP(LOG10( HTSeq__FPKM_UQ +1)) as genevar,\n", " count(sample_barcode) as genen\n", " FROM\n", " `isb-cgc.TCGA_hg38_data_v0.RNAseq_Gene_Expression`\n", " WHERE\n", " sample_barcode IN (select sample_barcode FROM grp1)\n", " AND gene_name IN (\n", " SELECT\n", " Symbol as gene_name\n", " FROM\n", " `isb-cgc.QotM.WikiPathways_20170425_Annotated`\n", " )\n", " GROUP BY\n", " gene_name\n", "),\n", "--\n", "-- Summaries for Group 2 (without mutation)\n", "--\n", "summaryGrp2 AS (\n", " select\n", " gene_name as symbol,\n", " AVG(LOG10( HTSeq__FPKM_UQ +1)) as genemean,\n", " VAR_SAMP(LOG10( HTSeq__FPKM_UQ +1)) as genevar,\n", " count(sample_barcode) as genen\n", " FROM\n", " `isb-cgc.TCGA_hg38_data_v0.RNAseq_Gene_Expression`\n", " WHERE\n", " sample_barcode IN (select sample_barcode FROM grp2)\n", " AND gene_name IN (\n", " SELECT\n", " Symbol as gene_name\n", " FROM\n", " `isb-cgc.QotM.WikiPathways_20170425_Annotated`\n", " )\n", " GROUP BY\n", " gene_name\n", "),\n", "---\n", "tStatsPerGene AS (\n", "SELECT\n", " grp1.symbol as symbol,\n", " grp1.genen as grp1_n,\n", " grp2.genen AS grp2_n,\n", " grp1.genemean AS grp1_mean,\n", " grp2.genemean AS grp2_mean,\n", " grp1.genemean - grp2.genemean as meandiff,\n", " IF ((grp1.genevar > 0\n", " AND grp2.genevar > 0\n", " AND grp1.genen > 0\n", " AND grp2.genen > 0),\n", " (grp1.genemean - grp2.genemean) / SQRT( (POW(grp1.genevar,2)/grp1.genen)+ (POW(grp2.genevar,2)/grp2.genen) ),\n", " 0.0) AS tstat\n", "FROM\n", " summaryGrp1 as grp1\n", " JOIN\n", " summaryGrp2 AS grp2\n", " ON\n", " grp1.symbol = grp2.symbol\n", "GROUP BY\n", " grp1.symbol,\n", " grp1.genemean,\n", " grp2.genemean,\n", " grp1.genevar,\n", " grp2.genevar,\n", " grp1.genen,\n", " grp2.genen\n", "),\n", "---\n", "geneSetTable AS (\n", "SELECT\n", " gs.pathway,\n", " gs.wikiID,\n", " gs.Symbol,\n", " st.grp1_n,\n", " st.grp2_n,\n", " st.grp1_mean,\n", " st.grp2_mean,\n", " st.meandiff,\n", " st.tstat\n", "FROM\n", " `isb-cgc.QotM.WikiPathways_20170425_Annotated` as gs\n", "JOIN\n", " tStatsPerGene as st\n", "ON\n", " st.symbol = gs.symbol\n", "GROUP BY\n", " gs.pathway,\n", " gs.wikiID,\n", " gs.Symbol,\n", " st.grp1_n,\n", " st.grp2_n,\n", " st.grp1_mean,\n", " st.grp2_mean,\n", " st.meandiff,\n", " st.tstat\n", "),\n", "---\n", "geneSetScores AS (\n", "SELECT\n", " pathway,\n", " wikiID,\n", " COUNT(symbol) AS n_genes,\n", " AVG(ABS(meandiff)) AS avgAbsDiff,\n", " (SQRT(COUNT(symbol))/COUNT(symbol)) * SUM(tstat) AS score\n", "FROM\n", " geneSetTable\n", "GROUP BY\n", " pathway,\n", " wikiID )\n", "--\n", "--\n", "SELECT\n", " *\n", "FROM\n", " geneSetScores\n", "ORDER BY\n", " score DESC" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "Oh9IMU24WXNZ" }, "outputs": [], "source": [ "%%script false\n", "final_query.head()" ] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "Gene_Set_Scoring.ipynb", "provenance": [], "version": "0.3.2" }, "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 }