{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "tumor_feature_mutation_analyses.ipynb", "provenance": [], "collapsed_sections": [], "authorship_tag": "ABX9TyOqUOcSG6QaWCZo1hwI6J0R", "include_colab_link": true }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": { "id": "uBffHFh-KhUj" }, "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: Co-analyzing tumor radiomics features with somatic mutations\n", "Author: Fabian Seidl, Boris Aguilar\n", "Created: 2021-06-15\n", "URL: https://github.com/isb-cgc/Community-Notebooks/blob/master/Notebooks/How_to_compare_tumor_features_with_mutation_data.ipynb\n", "Purpose: To demonstrate multi-omics data analysis using table joins in Google BigQuery\n", "Notes: \n", "```" ] }, { "cell_type": "markdown", "metadata": { "id": "Y3FNO9v6fJ_M" }, "source": [ "# Overview\n", "This notebook showcases an analysis workflow combining tumor radiomics features with mutation data mostly run in Google BigQuery. In this notebook we will:\n", "\n", "\n", "> 1. Select and format mutation data from the Glioblastoma Multiforme TCGA project\n", "> 2. Join these mutation data to tumor features extracted from radiomics data\n", "> 3. Calculate t-test statistics for tumors with or without mutations in specific genes\n", "\n", "The tumor radiomics feature data we used in this notebook are from Bakas et al. Nature Scientific 2017 (https://www.nature.com/articles/sdata2017117) and the mutation data come from the GDC data housed in ISB-CGC BigQuery tables.\n", "\n", "First we initialize our python environment and authenticate our session." ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "5kmelh4wwMWk", "outputId": "7c574f1d-86c9-49b5-f49d-3658faf9aadd" }, "source": [ "from google.colab import auth\n", "import pandas_gbq\n", "import pandas as pd\n", "import numpy\n", "import seaborn\n", "from google.cloud import bigquery\n", "\n", "bq_project=''\n", "auth.authenticate_user()\n", "client = bigquery.Client(project=bq_project)\n", "print('Authenticated')" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "Authenticated\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "gngQSL_ywPg6" }, "source": [ "# Joining the data\n", "The mutation and feature data we will be using in this analysis are already formatted and stored in a dataset; we will be joining them on the unique TCGA barcodes with an SQL query before further downstream analyses." ] }, { "cell_type": "code", "metadata": { "id": "AbX6IdLE6-Kn", "colab": { "base_uri": "https://localhost:8080/", "height": 204 }, "outputId": "f005f23a-bab1-4958-c447-29db252b0295" }, "source": [ "gdc_project = 'GBM'\n", "mutation_table = 'isb-cgc-idc-collaboration.Analysis.{0}_genes_tidy_v1'.format(gdc_project)\n", "feature_table = 'isb-cgc-idc-collaboration.Analysis.unpivoted_tcga_{0}_radiomicFeatures'.format(gdc_project.lower())\n", "\n", "# selecting gene mutation data from a previously generated table\n", "join_query1 = \"\"\"\n", "WITH\n", "table2 AS (\n", " SELECT \n", " '{0}' as Study, gene as symbol, \n", " REPLACE(case_id,'_','-') AS ParticipantBarcode, present\n", " FROM `{1}`\n", "),\"\"\".format(gdc_project, mutation_table)\n", "\n", "# selecting tumor volumes\n", "join_query2 = \"\"\"\n", "table1 AS ( \n", " SELECT \n", " '{0}' as Study, feature as symbol, \n", " value as volume, ID as ParticipantBarcode \n", " FROM `{1}`\n", " WHERE \n", " feature LIKE 'VOLUME%' \n", " AND ID IN (SELECT DISTINCT ParticipantBarcode FROM table2) \n", ")\"\"\".format(gdc_project, feature_table)\n", "\n", "# the join operation for the previous two queries\n", "join_query3 = \"\"\"\n", "SELECT\n", " n1.Study, n1.symbol as symbol1, n1.volume,\n", " n2.symbol as symbol2, n2.present\n", "FROM table1 AS n1\n", "INNER JOIN table2 AS n2\n", "ON\n", " n1.ParticipantBarcode = n2.ParticipantBarcode\n", " AND n1.Study = n2.Study\n", " AND n2.present = 1\n", "GROUP BY\n", " Study, symbol1, present, symbol2, volume\n", "\"\"\"\n", "\n", "query_job = client.query( join_query1 + join_query2 + join_query3 )\n", "joined_data = query_job.result().to_dataframe()\n", "joined_data.head(5)" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "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", "
Studysymbol1volumesymbol2present
0GBMVOLUME_ET50410ENSG000000053391
1GBMVOLUME_ET50410ENSG000000114511
2GBMVOLUME_ET50410ENSG000000487071
3GBMVOLUME_ET50410ENSG000000649611
4GBMVOLUME_ET50410ENSG000000700181
\n", "
" ], "text/plain": [ " Study symbol1 volume symbol2 present\n", "0 GBM VOLUME_ET 50410 ENSG00000005339 1\n", "1 GBM VOLUME_ET 50410 ENSG00000011451 1\n", "2 GBM VOLUME_ET 50410 ENSG00000048707 1\n", "3 GBM VOLUME_ET 50410 ENSG00000064961 1\n", "4 GBM VOLUME_ET 50410 ENSG00000070018 1" ] }, "metadata": { "tags": [] }, "execution_count": 3 } ] }, { "cell_type": "markdown", "metadata": { "id": "NLoyFAFNKdDQ" }, "source": [ "We can \"pipe\" this query directly to the next one by simply appending the next step to our previous ones. With the usage of the `GROUP BY` command we can calculate the SUM() and SUM(squared) values for all cases that have a given mutation." ] }, { "cell_type": "code", "metadata": { "id": "jRjHwkDpzHw4", "colab": { "base_uri": "https://localhost:8080/", "height": 204 }, "outputId": "731d79cd-fd94-4936-bfc0-314cb95718bf" }, "source": [ "# We can amend the third query from the previous cell as below\n", "sum_query = \"\"\",\n", "summ_table AS (\n", " SELECT \n", " n1.Study, n1.symbol as symbol1,\n", " n2.symbol as symbol2,\n", " COUNT( n1.ParticipantBarcode) as n_1,\n", " SUM( n1.volume ) as sumx_1,\n", " SUM( n1.volume * n1.volume ) as sumx2_1\n", " FROM table1 AS n1\n", " INNER JOIN table2 AS n2\n", " ON\n", " n1.ParticipantBarcode = n2.ParticipantBarcode\n", " AND n1.Study = n2.Study\n", " AND n2.present = 1\n", " GROUP BY\n", " Study, symbol1, symbol2\n", ")\n", "\"\"\".format(gdc_project, mutation_table, feature_table)\n", "\n", "select_all = 'SELECT * FROM summ_table'\n", "\n", "#print(join_query1 + join_query2 + sum_query)\n", "sum_query_job = client.query( join_query1 + join_query2 + sum_query + select_all)\n", "sum_table = sum_query_job.result().to_dataframe()\n", "sum_table.head(5)" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "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", "
Studysymbol1symbol2n_1sumx_1sumx2_1
0GBMVOLUME_ETENSG0000007527551923948226812092
1GBMVOLUME_ETENSG0000012187981798745586667456
2GBMVOLUME_ETENSG00000134853622797910828870733
3GBMVOLUME_ETENSG0000018777551742908141915644
4GBMVOLUME_ETENSG0000019862681694165436011400
\n", "
" ], "text/plain": [ " Study symbol1 symbol2 n_1 sumx_1 sumx2_1\n", "0 GBM VOLUME_ET ENSG00000075275 5 192394 8226812092\n", "1 GBM VOLUME_ET ENSG00000121879 8 179874 5586667456\n", "2 GBM VOLUME_ET ENSG00000134853 6 227979 10828870733\n", "3 GBM VOLUME_ET ENSG00000187775 5 174290 8141915644\n", "4 GBM VOLUME_ET ENSG00000198626 8 169416 5436011400" ] }, "metadata": { "tags": [] }, "execution_count": 4 } ] }, { "cell_type": "markdown", "metadata": { "id": "SeMoySArtffq" }, "source": [ "The final step of this workflow is to run t-tests on our groups to calculate whether there are significant differences in expression." ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 204 }, "id": "Nmk02JtFpb9h", "outputId": "e232fed7-8bd4-4f19-a8d9-ccbc28241d25" }, "source": [ "statistics_query = \"\"\",\n", "statistics AS (\n", " SELECT n1.Study, symbol1, symbol2, n_1, \n", " sumx_1 / n_1 as avg1,\n", " ( sumx2_1 - sumx_1*sumx_1/n_1 )/(n_1 -1) as var1, \n", " n_t - n_1 as n_0,\n", " (sumx_t - sumx_1)/(n_t - n_1) as avg0,\n", " (sumx2_t - sumx2_1 - (sumx_t-sumx_1)*(sumx_t-sumx_1)/(n_t - n_1) )/(n_t - n_1 -1 ) as var0\n", " FROM summ_table as n1\n", " LEFT JOIN ( SELECT Study, symbol, COUNT( ParticipantBarcode ) as n_t, SUM( volume ) as sumx_t, SUM( volume*volume ) as sumx2_t\n", " FROM table1 \n", " GROUP BY Study, symbol ) as n2\n", " ON symbol1 = symbol AND n1.Study = n2.Study\n", " GROUP BY 1,2,3,4,5,6,7,8,9\n", " having var1 > 0 AND var0 > 0 AND n_1 > 5 AND n_0 > 5 \n", ")\n", "SELECT Study, symbol1 as radiomic_feature, symbol2 as Ensembl, n_1 as n1, n_0 as n0,\n", " avg1, avg0,\n", " #ABS(avg1 - avg0)/ SQRT( var1 /n_1 + var0/n_0 ) as t,\n", " `cgc-05-0042.functions.jstat_ttest`(ABS(avg1 - avg0)/ SQRT( var1 /n_1 + var0/n_0 ), n_1+n_0-2, 2) as pvalue,\n", "FROM statistics \n", "ORDER BY pvalue ASC\"\"\"\n", "\n", "#print(join_query1 + join_query2 + sum_query)\n", "stat_query_job = client.query( join_query1 + join_query2 + sum_query + statistics_query )\n", "statistics_table = stat_query_job.result().to_dataframe()\n", "statistics_table.head(5)" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "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", "
Studyradiomic_featureEnsembln1n0avg1avg0pvalue
0GBMVOLUME_ET_OVER_BRAINENSG000001890566510.0086672730.0219812890.000143
1GBMVOLUME_NET_OVER_EDENSG0000018114312450.0846488540.3627701220.000157
2GBMVOLUME_NET_OVER_WTENSG0000018114312450.0539040440.1462786820.000259
3GBMVOLUME_ETENSG000001890566511341831740.4509803920.001939
4GBMVOLUME_TC_over_BRAINENSG000001890566510.013474150.0333562120.001946
\n", "
" ], "text/plain": [ " Study radiomic_feature ... avg0 pvalue\n", "0 GBM VOLUME_ET_OVER_BRAIN ... 0.021981289 0.000143\n", "1 GBM VOLUME_NET_OVER_ED ... 0.362770122 0.000157\n", "2 GBM VOLUME_NET_OVER_WT ... 0.146278682 0.000259\n", "3 GBM VOLUME_ET ... 31740.450980392 0.001939\n", "4 GBM VOLUME_TC_over_BRAIN ... 0.033356212 0.001946\n", "\n", "[5 rows x 8 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 5 } ] }, { "cell_type": "markdown", "metadata": { "id": "LVwPZFE1vpJ_" }, "source": [ "We can use these data for further analysis or simply generate a summary plot as below:" ] }, { "cell_type": "code", "metadata": { "id": "5CylvbeBpe1j", "colab": { "base_uri": "https://localhost:8080/", "height": 389 }, "outputId": "4040ac65-bb86-4185-fbd5-88c04a2d59fa" }, "source": [ "statistics_table['neglog10'] = -numpy.log10(statistics_table['pvalue'])\n", "\n", "bxplt = seaborn.boxplot(x=statistics_table['radiomic_feature'], \n", " y=statistics_table['neglog10'], \n", " data=statistics_table\n", " )\n", "labels = [x.get_text().lower() for x in bxplt.get_xticklabels()]\n", "jnk = bxplt.set_xticklabels(labels, rotation=80, size=10)\n", "jnk = bxplt.set(ylabel='-log10(pvalue)')" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "8wlLeT-xxY0W", "outputId": "b4aaaa9f-57b6-40c7-dbb0-63b0db67c99a" }, "source": [ "# The full final query used to generate the data table\n", "print( join_query1 + join_query2 + sum_query + statistics_query )" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "\n", "WITH\n", "table2 AS (\n", " SELECT \n", " 'GBM' as Study, gene as symbol, \n", " REPLACE(case_id,'_','-') AS ParticipantBarcode, present\n", " FROM `isb-cgc-idc-collaboration.Analysis.GBM_genes_tidy_v1`\n", "),\n", "table1 AS ( \n", " SELECT \n", " 'GBM' as Study, feature as symbol, \n", " value as volume, ID as ParticipantBarcode \n", " FROM `isb-cgc-idc-collaboration.Analysis.unpivoted_tcga_gbm_radiomicFeatures`\n", " WHERE \n", " feature LIKE 'VOLUME%' \n", " AND ID IN (SELECT DISTINCT ParticipantBarcode FROM table2) \n", "),\n", "summ_table AS (\n", " SELECT \n", " n1.Study, n1.symbol as symbol1,\n", " n2.symbol as symbol2,\n", " COUNT( n1.ParticipantBarcode) as n_1,\n", " SUM( n1.volume ) as sumx_1,\n", " SUM( n1.volume * n1.volume ) as sumx2_1\n", " FROM table1 AS n1\n", " INNER JOIN table2 AS n2\n", " ON\n", " n1.ParticipantBarcode = n2.ParticipantBarcode\n", " AND n1.Study = n2.Study\n", " AND n2.present = 1\n", " GROUP BY\n", " Study, symbol1, symbol2\n", ")\n", ",\n", "statistics AS (\n", " SELECT n1.Study, symbol1, symbol2, n_1, \n", " sumx_1 / n_1 as avg1,\n", " ( sumx2_1 - sumx_1*sumx_1/n_1 )/(n_1 -1) as var1, \n", " n_t - n_1 as n_0,\n", " (sumx_t - sumx_1)/(n_t - n_1) as avg0,\n", " (sumx2_t - sumx2_1 - (sumx_t-sumx_1)*(sumx_t-sumx_1)/(n_t - n_1) )/(n_t - n_1 -1 ) as var0\n", " FROM summ_table as n1\n", " LEFT JOIN ( SELECT Study, symbol, COUNT( ParticipantBarcode ) as n_t, SUM( volume ) as sumx_t, SUM( volume*volume ) as sumx2_t\n", " FROM table1 \n", " GROUP BY Study, symbol ) as n2\n", " ON symbol1 = symbol AND n1.Study = n2.Study\n", " GROUP BY 1,2,3,4,5,6,7,8,9\n", " having var1 > 0 AND var0 > 0 AND n_1 > 5 AND n_0 > 5 \n", ")\n", "SELECT Study, symbol1 as radiomic_feature, symbol2 as Ensembl, n_1 as n1, n_0 as n0,\n", " avg1, avg0,\n", " #ABS(avg1 - avg0)/ SQRT( var1 /n_1 + var0/n_0 ) as t,\n", " `cgc-05-0042.functions.jstat_ttest`(ABS(avg1 - avg0)/ SQRT( var1 /n_1 + var0/n_0 ), n_1+n_0-2, 2) as pvalue,\n", "FROM statistics \n", "ORDER BY pvalue ASC\n" ], "name": "stdout" } ] } ] }