{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# morar\n", "\n", "morar is a python package for working with tabular phenotypic screening data.\n", "\n", "### Example data\n", "\n", "This example data only has untreated (DMSO control) Cellprofiler measurements for three cell-lines (CPAP53, FLO1 & KYSE30)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3115 rows \n", "175 columns\n" ] }, { "data": { "text/html": [ "<div>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Metadata_compound</th>\n", " <th>Metadata_concentration</th>\n", " <th>Metadata_platename</th>\n", " <th>Metadata_platenum</th>\n", " <th>Metadata_site</th>\n", " <th>Metadata_well</th>\n", " <th>Cells_AreaShape_Area</th>\n", " <th>Cells_AreaShape_Compactness</th>\n", " <th>Cells_AreaShape_Eccentricity</th>\n", " <th>Cells_AreaShape_Extent</th>\n", " <th>...</th>\n", " <th>Nuclei_Intensity_MaxIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_MaxIntensity_W1</th>\n", " <th>Nuclei_Intensity_MeanIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_MeanIntensity_W1</th>\n", " <th>Nuclei_Intensity_MedianIntensity_W1</th>\n", " <th>Nuclei_Intensity_MinIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_MinIntensity_W1</th>\n", " <th>Nuclei_Intensity_StdIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_StdIntensity_W1</th>\n", " <th>Nuclei_Intensity_UpperQuartileIntensity_W1</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>CPAP53</td>\n", " <td>6119</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " <td>7313</td>\n", " <td>1.452288</td>\n", " <td>0.859793</td>\n", " <td>0.541102</td>\n", " <td>...</td>\n", " <td>0.046601</td>\n", " <td>0.146944</td>\n", " <td>0.035183</td>\n", " <td>0.090561</td>\n", " <td>0.099413</td>\n", " <td>0.025620</td>\n", " <td>0.025620</td>\n", " <td>0.005066</td>\n", " <td>0.030142</td>\n", " <td>0.113756</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>CPAP53</td>\n", " <td>6119</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " <td>6723</td>\n", " <td>1.045362</td>\n", " <td>0.542282</td>\n", " <td>0.673377</td>\n", " <td>...</td>\n", " <td>0.035859</td>\n", " <td>0.171115</td>\n", " <td>0.022758</td>\n", " <td>0.094423</td>\n", " <td>0.106592</td>\n", " <td>0.017548</td>\n", " <td>0.017548</td>\n", " <td>0.003269</td>\n", " <td>0.045302</td>\n", " <td>0.133967</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>CPAP53</td>\n", " <td>6119</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " <td>2545</td>\n", " <td>1.567167</td>\n", " <td>0.859639</td>\n", " <td>0.398216</td>\n", " <td>...</td>\n", " <td>0.109331</td>\n", " <td>0.189944</td>\n", " <td>0.054827</td>\n", " <td>0.105230</td>\n", " <td>0.108217</td>\n", " <td>0.038651</td>\n", " <td>0.038651</td>\n", " <td>0.016095</td>\n", " <td>0.035619</td>\n", " <td>0.129328</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>CPAP53</td>\n", " <td>6119</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " <td>5248</td>\n", " <td>2.244958</td>\n", " <td>0.968322</td>\n", " <td>0.711207</td>\n", " <td>...</td>\n", " <td>0.029175</td>\n", " <td>0.164858</td>\n", " <td>0.021538</td>\n", " <td>0.087355</td>\n", " <td>0.095712</td>\n", " <td>0.017075</td>\n", " <td>0.017075</td>\n", " <td>0.002364</td>\n", " <td>0.043820</td>\n", " <td>0.125116</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>CPAP53</td>\n", " <td>6119</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " <td>6290</td>\n", " <td>1.227357</td>\n", " <td>0.794636</td>\n", " <td>0.555850</td>\n", " <td>...</td>\n", " <td>0.107851</td>\n", " <td>0.219272</td>\n", " <td>0.052124</td>\n", " <td>0.127815</td>\n", " <td>0.138277</td>\n", " <td>0.036500</td>\n", " <td>0.036500</td>\n", " <td>0.015603</td>\n", " <td>0.046839</td>\n", " <td>0.166781</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "<p>5 rows × 175 columns</p>\n", "</div>" ], "text/plain": [ " Metadata_compound Metadata_concentration Metadata_platename \\\n", "0 DMSO 0 CPAP53 \n", "1 DMSO 0 CPAP53 \n", "2 DMSO 0 CPAP53 \n", "3 DMSO 0 CPAP53 \n", "4 DMSO 0 CPAP53 \n", "\n", " Metadata_platenum Metadata_site Metadata_well Cells_AreaShape_Area \\\n", "0 6119 1 A01 7313 \n", "1 6119 1 A01 6723 \n", "2 6119 1 A01 2545 \n", "3 6119 1 A01 5248 \n", "4 6119 1 A01 6290 \n", "\n", " Cells_AreaShape_Compactness Cells_AreaShape_Eccentricity \\\n", "0 1.452288 0.859793 \n", "1 1.045362 0.542282 \n", "2 1.567167 0.859639 \n", "3 2.244958 0.968322 \n", "4 1.227357 0.794636 \n", "\n", " Cells_AreaShape_Extent ... \\\n", "0 0.541102 ... \n", "1 0.673377 ... \n", "2 0.398216 ... \n", "3 0.711207 ... \n", "4 0.555850 ... \n", "\n", " Nuclei_Intensity_MaxIntensityEdge_W1 Nuclei_Intensity_MaxIntensity_W1 \\\n", "0 0.046601 0.146944 \n", "1 0.035859 0.171115 \n", "2 0.109331 0.189944 \n", "3 0.029175 0.164858 \n", "4 0.107851 0.219272 \n", "\n", " Nuclei_Intensity_MeanIntensityEdge_W1 Nuclei_Intensity_MeanIntensity_W1 \\\n", "0 0.035183 0.090561 \n", "1 0.022758 0.094423 \n", "2 0.054827 0.105230 \n", "3 0.021538 0.087355 \n", "4 0.052124 0.127815 \n", "\n", " Nuclei_Intensity_MedianIntensity_W1 Nuclei_Intensity_MinIntensityEdge_W1 \\\n", "0 0.099413 0.025620 \n", "1 0.106592 0.017548 \n", "2 0.108217 0.038651 \n", "3 0.095712 0.017075 \n", "4 0.138277 0.036500 \n", "\n", " Nuclei_Intensity_MinIntensity_W1 Nuclei_Intensity_StdIntensityEdge_W1 \\\n", "0 0.025620 0.005066 \n", "1 0.017548 0.003269 \n", "2 0.038651 0.016095 \n", "3 0.017075 0.002364 \n", "4 0.036500 0.015603 \n", "\n", " Nuclei_Intensity_StdIntensity_W1 \\\n", "0 0.030142 \n", "1 0.045302 \n", "2 0.035619 \n", "3 0.043820 \n", "4 0.046839 \n", "\n", " Nuclei_Intensity_UpperQuartileIntensity_W1 \n", "0 0.113756 \n", "1 0.133967 \n", "2 0.129328 \n", "3 0.125116 \n", "4 0.166781 \n", "\n", "[5 rows x 175 columns]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import os\n", "import pandas as pd\n", "import numpy as np\n", "import morar\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "# load in example single cell data\n", "data = pd.read_csv(\"/home/scott/Dropbox/single_cell_example_data.csv\")\n", "n_rows, n_cols = data.shape\n", "print(\"{} rows \\n{} columns\".format(n_rows, n_cols))\n", "data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The ~~pandas~~ morar DataFrame\n", "\n", "### featuredata and metadata\n", "\n", "Just like a pandas DataFrame, with a few extras. The main difference is the distinction of featuredata and metadata columns within the dataframe, and a number of methods such as aggregation, scaling and normalisation that need this distinction." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "data = morar.DataFrame(data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To get the names of the featuredata columns:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['Cells_AreaShape_Area',\n", " 'Cells_AreaShape_Compactness',\n", " 'Cells_AreaShape_Eccentricity',\n", " 'Cells_AreaShape_Extent',\n", " 'Cells_AreaShape_FormFactor',\n", " 'Cells_AreaShape_MajorAxisLength',\n", " 'Cells_AreaShape_MaxFeretDiameter',\n", " 'Cells_AreaShape_MaximumRadius',\n", " 'Cells_AreaShape_MeanRadius',\n", " 'Cells_AreaShape_MedianRadius']" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.featurecols[:10] # first 10" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To get the actual featuredata:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Cells_AreaShape_Area</th>\n", " <th>Cells_AreaShape_Compactness</th>\n", " <th>Cells_AreaShape_Eccentricity</th>\n", " <th>Cells_AreaShape_Extent</th>\n", " <th>Cells_AreaShape_FormFactor</th>\n", " <th>Cells_AreaShape_MajorAxisLength</th>\n", " <th>Cells_AreaShape_MaxFeretDiameter</th>\n", " <th>Cells_AreaShape_MaximumRadius</th>\n", " <th>Cells_AreaShape_MeanRadius</th>\n", " <th>Cells_AreaShape_MedianRadius</th>\n", " <th>...</th>\n", " <th>Nuclei_Intensity_MaxIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_MaxIntensity_W1</th>\n", " <th>Nuclei_Intensity_MeanIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_MeanIntensity_W1</th>\n", " <th>Nuclei_Intensity_MedianIntensity_W1</th>\n", " <th>Nuclei_Intensity_MinIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_MinIntensity_W1</th>\n", " <th>Nuclei_Intensity_StdIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_StdIntensity_W1</th>\n", " <th>Nuclei_Intensity_UpperQuartileIntensity_W1</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>7313</td>\n", " <td>1.452288</td>\n", " <td>0.859793</td>\n", " <td>0.541102</td>\n", " <td>0.400085</td>\n", " <td>146.210894</td>\n", " <td>165.411608</td>\n", " <td>35.057096</td>\n", " <td>12.083201</td>\n", " <td>10.440307</td>\n", " <td>...</td>\n", " <td>0.046601</td>\n", " <td>0.146944</td>\n", " <td>0.035183</td>\n", " <td>0.090561</td>\n", " <td>0.099413</td>\n", " <td>0.025620</td>\n", " <td>0.025620</td>\n", " <td>0.005066</td>\n", " <td>0.030142</td>\n", " <td>0.113756</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>6723</td>\n", " <td>1.045362</td>\n", " <td>0.542282</td>\n", " <td>0.673377</td>\n", " <td>0.687665</td>\n", " <td>102.271033</td>\n", " <td>107.837841</td>\n", " <td>41.000000</td>\n", " <td>14.219288</td>\n", " <td>12.649111</td>\n", " <td>...</td>\n", " <td>0.035859</td>\n", " <td>0.171115</td>\n", " <td>0.022758</td>\n", " <td>0.094423</td>\n", " <td>0.106592</td>\n", " <td>0.017548</td>\n", " <td>0.017548</td>\n", " <td>0.003269</td>\n", " <td>0.045302</td>\n", " <td>0.133967</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>2545</td>\n", " <td>1.567167</td>\n", " <td>0.859639</td>\n", " <td>0.398216</td>\n", " <td>0.406467</td>\n", " <td>89.634503</td>\n", " <td>97.637083</td>\n", " <td>18.027756</td>\n", " <td>6.673246</td>\n", " <td>6.000000</td>\n", " <td>...</td>\n", " <td>0.109331</td>\n", " <td>0.189944</td>\n", " <td>0.054827</td>\n", " <td>0.105230</td>\n", " <td>0.108217</td>\n", " <td>0.038651</td>\n", " <td>0.038651</td>\n", " <td>0.016095</td>\n", " <td>0.035619</td>\n", " <td>0.129328</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>5248</td>\n", " <td>2.244958</td>\n", " <td>0.968322</td>\n", " <td>0.711207</td>\n", " <td>0.402723</td>\n", " <td>167.740973</td>\n", " <td>157.003185</td>\n", " <td>22.000000</td>\n", " <td>8.529908</td>\n", " <td>8.000000</td>\n", " <td>...</td>\n", " <td>0.029175</td>\n", " <td>0.164858</td>\n", " <td>0.021538</td>\n", " <td>0.087355</td>\n", " <td>0.095712</td>\n", " <td>0.017075</td>\n", " <td>0.017075</td>\n", " <td>0.002364</td>\n", " <td>0.043820</td>\n", " <td>0.125116</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>6290</td>\n", " <td>1.227357</td>\n", " <td>0.794636</td>\n", " <td>0.555850</td>\n", " <td>0.446626</td>\n", " <td>119.665209</td>\n", " <td>122.102416</td>\n", " <td>32.000000</td>\n", " <td>11.435842</td>\n", " <td>10.000000</td>\n", " <td>...</td>\n", " <td>0.107851</td>\n", " <td>0.219272</td>\n", " <td>0.052124</td>\n", " <td>0.127815</td>\n", " <td>0.138277</td>\n", " <td>0.036500</td>\n", " <td>0.036500</td>\n", " <td>0.015603</td>\n", " <td>0.046839</td>\n", " <td>0.166781</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "<p>5 rows × 169 columns</p>\n", "</div>" ], "text/plain": [ " Cells_AreaShape_Area Cells_AreaShape_Compactness \\\n", "0 7313 1.452288 \n", "1 6723 1.045362 \n", "2 2545 1.567167 \n", "3 5248 2.244958 \n", "4 6290 1.227357 \n", "\n", " Cells_AreaShape_Eccentricity Cells_AreaShape_Extent \\\n", "0 0.859793 0.541102 \n", "1 0.542282 0.673377 \n", "2 0.859639 0.398216 \n", "3 0.968322 0.711207 \n", "4 0.794636 0.555850 \n", "\n", " Cells_AreaShape_FormFactor Cells_AreaShape_MajorAxisLength \\\n", "0 0.400085 146.210894 \n", "1 0.687665 102.271033 \n", "2 0.406467 89.634503 \n", "3 0.402723 167.740973 \n", "4 0.446626 119.665209 \n", "\n", " Cells_AreaShape_MaxFeretDiameter Cells_AreaShape_MaximumRadius \\\n", "0 165.411608 35.057096 \n", "1 107.837841 41.000000 \n", "2 97.637083 18.027756 \n", "3 157.003185 22.000000 \n", "4 122.102416 32.000000 \n", "\n", " Cells_AreaShape_MeanRadius Cells_AreaShape_MedianRadius \\\n", "0 12.083201 10.440307 \n", "1 14.219288 12.649111 \n", "2 6.673246 6.000000 \n", "3 8.529908 8.000000 \n", "4 11.435842 10.000000 \n", "\n", " ... \\\n", "0 ... \n", "1 ... \n", "2 ... \n", "3 ... \n", "4 ... \n", "\n", " Nuclei_Intensity_MaxIntensityEdge_W1 Nuclei_Intensity_MaxIntensity_W1 \\\n", "0 0.046601 0.146944 \n", "1 0.035859 0.171115 \n", "2 0.109331 0.189944 \n", "3 0.029175 0.164858 \n", "4 0.107851 0.219272 \n", "\n", " Nuclei_Intensity_MeanIntensityEdge_W1 Nuclei_Intensity_MeanIntensity_W1 \\\n", "0 0.035183 0.090561 \n", "1 0.022758 0.094423 \n", "2 0.054827 0.105230 \n", "3 0.021538 0.087355 \n", "4 0.052124 0.127815 \n", "\n", " Nuclei_Intensity_MedianIntensity_W1 Nuclei_Intensity_MinIntensityEdge_W1 \\\n", "0 0.099413 0.025620 \n", "1 0.106592 0.017548 \n", "2 0.108217 0.038651 \n", "3 0.095712 0.017075 \n", "4 0.138277 0.036500 \n", "\n", " Nuclei_Intensity_MinIntensity_W1 Nuclei_Intensity_StdIntensityEdge_W1 \\\n", "0 0.025620 0.005066 \n", "1 0.017548 0.003269 \n", "2 0.038651 0.016095 \n", "3 0.017075 0.002364 \n", "4 0.036500 0.015603 \n", "\n", " Nuclei_Intensity_StdIntensity_W1 \\\n", "0 0.030142 \n", "1 0.045302 \n", "2 0.035619 \n", "3 0.043820 \n", "4 0.046839 \n", "\n", " Nuclei_Intensity_UpperQuartileIntensity_W1 \n", "0 0.113756 \n", "1 0.133967 \n", "2 0.129328 \n", "3 0.125116 \n", "4 0.166781 \n", "\n", "[5 rows x 169 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.featuredata.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The same works with metadata..." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['Metadata_compound',\n", " 'Metadata_concentration',\n", " 'Metadata_platename',\n", " 'Metadata_platenum',\n", " 'Metadata_site',\n", " 'Metadata_well']" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.metacols" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By default any column that begins with \"`Metadata_`\" is metadata, and everything else is classed as featuredata.\n", "\n", "-----------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Aggregation\n", "\n", "At the moment the example data is at the single cell level, with a row per cell. Most of the time we want to aggregate this down to an image or well average.\n", "\n", "As we only have three wells (A01 for three plates), we should get a row per DMSO treatment for each cell-line." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Metadata_compound</th>\n", " <th>Metadata_concentration</th>\n", " <th>Metadata_platename</th>\n", " <th>Metadata_platenum</th>\n", " <th>Metadata_site</th>\n", " <th>Metadata_well</th>\n", " <th>Cells_AreaShape_Area</th>\n", " <th>Cells_AreaShape_Compactness</th>\n", " <th>Cells_AreaShape_Eccentricity</th>\n", " <th>Cells_AreaShape_Extent</th>\n", " <th>...</th>\n", " <th>Nuclei_Intensity_MaxIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_MaxIntensity_W1</th>\n", " <th>Nuclei_Intensity_MeanIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_MeanIntensity_W1</th>\n", " <th>Nuclei_Intensity_MedianIntensity_W1</th>\n", " <th>Nuclei_Intensity_MinIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_MinIntensity_W1</th>\n", " <th>Nuclei_Intensity_StdIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_StdIntensity_W1</th>\n", " <th>Nuclei_Intensity_UpperQuartileIntensity_W1</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>CPAP53</td>\n", " <td>6119</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " <td>6659.5</td>\n", " <td>1.401312</td>\n", " <td>0.849465</td>\n", " <td>0.514216</td>\n", " <td>...</td>\n", " <td>0.052392</td>\n", " <td>0.179820</td>\n", " <td>0.036169</td>\n", " <td>0.107214</td>\n", " <td>0.116831</td>\n", " <td>0.026741</td>\n", " <td>0.026741</td>\n", " <td>0.005556</td>\n", " <td>0.039872</td>\n", " <td>0.136389</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>FLO1</td>\n", " <td>6116</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " <td>7297.0</td>\n", " <td>1.180151</td>\n", " <td>0.744776</td>\n", " <td>0.566198</td>\n", " <td>...</td>\n", " <td>0.073434</td>\n", " <td>0.317884</td>\n", " <td>0.050400</td>\n", " <td>0.167128</td>\n", " <td>0.172324</td>\n", " <td>0.035851</td>\n", " <td>0.035851</td>\n", " <td>0.007712</td>\n", " <td>0.069057</td>\n", " <td>0.221981</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>KYSE30</td>\n", " <td>6114</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " <td>5910.0</td>\n", " <td>1.352440</td>\n", " <td>0.806265</td>\n", " <td>0.513757</td>\n", " <td>...</td>\n", " <td>0.011398</td>\n", " <td>0.012161</td>\n", " <td>0.009667</td>\n", " <td>0.009799</td>\n", " <td>0.009766</td>\n", " <td>0.008148</td>\n", " <td>0.007935</td>\n", " <td>0.000497</td>\n", " <td>0.000534</td>\n", " <td>0.010147</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "<p>3 rows × 175 columns</p>\n", "</div>" ], "text/plain": [ " Metadata_compound Metadata_concentration Metadata_platename \\\n", "0 DMSO 0 CPAP53 \n", "1 DMSO 0 FLO1 \n", "2 DMSO 0 KYSE30 \n", "\n", " Metadata_platenum Metadata_site Metadata_well Cells_AreaShape_Area \\\n", "0 6119 1 A01 6659.5 \n", "1 6116 1 A01 7297.0 \n", "2 6114 1 A01 5910.0 \n", "\n", " Cells_AreaShape_Compactness Cells_AreaShape_Eccentricity \\\n", "0 1.401312 0.849465 \n", "1 1.180151 0.744776 \n", "2 1.352440 0.806265 \n", "\n", " Cells_AreaShape_Extent ... \\\n", "0 0.514216 ... \n", "1 0.566198 ... \n", "2 0.513757 ... \n", "\n", " Nuclei_Intensity_MaxIntensityEdge_W1 Nuclei_Intensity_MaxIntensity_W1 \\\n", "0 0.052392 0.179820 \n", "1 0.073434 0.317884 \n", "2 0.011398 0.012161 \n", "\n", " Nuclei_Intensity_MeanIntensityEdge_W1 Nuclei_Intensity_MeanIntensity_W1 \\\n", "0 0.036169 0.107214 \n", "1 0.050400 0.167128 \n", "2 0.009667 0.009799 \n", "\n", " Nuclei_Intensity_MedianIntensity_W1 Nuclei_Intensity_MinIntensityEdge_W1 \\\n", "0 0.116831 0.026741 \n", "1 0.172324 0.035851 \n", "2 0.009766 0.008148 \n", "\n", " Nuclei_Intensity_MinIntensity_W1 Nuclei_Intensity_StdIntensityEdge_W1 \\\n", "0 0.026741 0.005556 \n", "1 0.035851 0.007712 \n", "2 0.007935 0.000497 \n", "\n", " Nuclei_Intensity_StdIntensity_W1 \\\n", "0 0.039872 \n", "1 0.069057 \n", "2 0.000534 \n", "\n", " Nuclei_Intensity_UpperQuartileIntensity_W1 \n", "0 0.136389 \n", "1 0.221981 \n", "2 0.010147 \n", "\n", "[3 rows x 175 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.agg(on=\"Metadata_platename\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can aggregate on multiple columns by passing a list such as `[\"Metadata_well\", \"Metadata_platename\"]`.\n", "\n", "We can also choose to average by a median (default) or median, with the `method` argument." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Metadata_compound</th>\n", " <th>Metadata_concentration</th>\n", " <th>Metadata_platename</th>\n", " <th>Metadata_platenum</th>\n", " <th>Metadata_site</th>\n", " <th>Metadata_well</th>\n", " <th>Cells_AreaShape_Area</th>\n", " <th>Cells_AreaShape_Compactness</th>\n", " <th>Cells_AreaShape_Eccentricity</th>\n", " <th>Cells_AreaShape_Extent</th>\n", " <th>...</th>\n", " <th>Nuclei_Intensity_MaxIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_MaxIntensity_W1</th>\n", " <th>Nuclei_Intensity_MeanIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_MeanIntensity_W1</th>\n", " <th>Nuclei_Intensity_MedianIntensity_W1</th>\n", " <th>Nuclei_Intensity_MinIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_MinIntensity_W1</th>\n", " <th>Nuclei_Intensity_StdIntensityEdge_W1</th>\n", " <th>Nuclei_Intensity_StdIntensity_W1</th>\n", " <th>Nuclei_Intensity_UpperQuartileIntensity_W1</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>CPAP53</td>\n", " <td>6119</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " <td>6924.574271</td>\n", " <td>1.658188</td>\n", " <td>0.812143</td>\n", " <td>0.500624</td>\n", " <td>...</td>\n", " <td>0.052693</td>\n", " <td>0.178927</td>\n", " <td>0.035780</td>\n", " <td>0.102651</td>\n", " <td>0.111341</td>\n", " <td>0.025760</td>\n", " <td>0.025755</td>\n", " <td>0.005930</td>\n", " <td>0.040513</td>\n", " <td>0.134633</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>FLO1</td>\n", " <td>6116</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " <td>8380.209003</td>\n", " <td>1.250192</td>\n", " <td>0.721066</td>\n", " <td>0.577295</td>\n", " <td>...</td>\n", " <td>0.085844</td>\n", " <td>0.327951</td>\n", " <td>0.051686</td>\n", " <td>0.168493</td>\n", " <td>0.172363</td>\n", " <td>0.036072</td>\n", " <td>0.036071</td>\n", " <td>0.011810</td>\n", " <td>0.074594</td>\n", " <td>0.227802</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>KYSE30</td>\n", " <td>6114</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " <td>10470.664175</td>\n", " <td>1.484766</td>\n", " <td>0.770031</td>\n", " <td>0.513447</td>\n", " <td>...</td>\n", " <td>0.013575</td>\n", " <td>0.015417</td>\n", " <td>0.011248</td>\n", " <td>0.011733</td>\n", " <td>0.011744</td>\n", " <td>0.009092</td>\n", " <td>0.008876</td>\n", " <td>0.000881</td>\n", " <td>0.001034</td>\n", " <td>0.012416</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "<p>3 rows × 175 columns</p>\n", "</div>" ], "text/plain": [ " Metadata_compound Metadata_concentration Metadata_platename \\\n", "0 DMSO 0 CPAP53 \n", "1 DMSO 0 FLO1 \n", "2 DMSO 0 KYSE30 \n", "\n", " Metadata_platenum Metadata_site Metadata_well Cells_AreaShape_Area \\\n", "0 6119 1 A01 6924.574271 \n", "1 6116 1 A01 8380.209003 \n", "2 6114 1 A01 10470.664175 \n", "\n", " Cells_AreaShape_Compactness Cells_AreaShape_Eccentricity \\\n", "0 1.658188 0.812143 \n", "1 1.250192 0.721066 \n", "2 1.484766 0.770031 \n", "\n", " Cells_AreaShape_Extent ... \\\n", "0 0.500624 ... \n", "1 0.577295 ... \n", "2 0.513447 ... \n", "\n", " Nuclei_Intensity_MaxIntensityEdge_W1 Nuclei_Intensity_MaxIntensity_W1 \\\n", "0 0.052693 0.178927 \n", "1 0.085844 0.327951 \n", "2 0.013575 0.015417 \n", "\n", " Nuclei_Intensity_MeanIntensityEdge_W1 Nuclei_Intensity_MeanIntensity_W1 \\\n", "0 0.035780 0.102651 \n", "1 0.051686 0.168493 \n", "2 0.011248 0.011733 \n", "\n", " Nuclei_Intensity_MedianIntensity_W1 Nuclei_Intensity_MinIntensityEdge_W1 \\\n", "0 0.111341 0.025760 \n", "1 0.172363 0.036072 \n", "2 0.011744 0.009092 \n", "\n", " Nuclei_Intensity_MinIntensity_W1 Nuclei_Intensity_StdIntensityEdge_W1 \\\n", "0 0.025755 0.005930 \n", "1 0.036071 0.011810 \n", "2 0.008876 0.000881 \n", "\n", " Nuclei_Intensity_StdIntensity_W1 \\\n", "0 0.040513 \n", "1 0.074594 \n", "2 0.001034 \n", "\n", " Nuclei_Intensity_UpperQuartileIntensity_W1 \n", "0 0.134633 \n", "1 0.227802 \n", "2 0.012416 \n", "\n", "[3 rows x 175 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.agg(on=\"Metadata_platename\", method=\"mean\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Normalising\n", "\n", "To remove batch effects, such as different staining intensities per plate, or to compare treatment effects across cell-lines we have to normalise the data.\n", "\n", "We can do this with the `.normalise()` method, which subtracts the negative control values per plate from each feature.\n", "\n", "It takes the arguments:\n", "- `plate_id`, which is the column containing the label for each plate.\n", "- `neg_compound`, name of the negative control compound (default = \"DMSO\")\n", "- `compound`, name of the column containing compound names (default = \"Metadata_compound\"" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x7fcdf436df60>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# function to plot nuclei eccentricity per plate\n", "def norm_plot(dat, title):\n", " names, vals = [], []\n", " grouping = dat.groupby(\"Metadata_platename\")\n", " for name, group in grouping:\n", " tmp = group.Nuclei_AreaShape_Eccentricity.values.tolist()\n", " vals.append(tmp)\n", " names.append(name)\n", "\n", " plt.boxplot(vals)\n", " plt.xticks(range(1, len(names)+1), names)\n", " plt.xlabel(\"plate name\")\n", " plt.title(title, fontweight=\"bold\")\n", " \n", "\n", "\n", "plt.figure(figsize=[8,6])\n", "\n", "plt.subplot(221)\n", "norm_plot(data, \"Un-normalised data\")\n", "plt.ylabel(\"nuclei eccentricity\")\n", "\n", "plt.subplot(222)\n", "\n", "# normalise data per plate (cell-line)\n", "data_norm = data.normalise(plate_id=\"Metadata_platename\")\n", "\n", "norm_plot(data_norm, \"Normalised data\")\n", "\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Feature scaling\n", "\n", "Many of the feature measurements are in very different scales. For instance cells area is measured in pixels and might have values in the thousands, whereas eccentricity is bound between 0 and 1. \n", "\n", "This might interfere with downstream methods, so it's typical to scale all the feature values to 0 with unit variance with a z score.\n", "\n", "We can do this with the `.scale_features()` method." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x7fcdf436da58>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# function to make plots\n", "def scale_plot(dat, title):\n", " \"\"\"make a plot of cell-area and nuclei-eccentricity\"\"\"\n", " plt.figure(figsize=[8, 4])\n", " plt.subplot(221)\n", " plt.title(\"Cell Area\")\n", " plt.hist(dat[\"Cells_AreaShape_Area\"], bins=100, normed=1)\n", "\n", " plt.subplot(222)\n", " plt.title(\"Nuclei Eccentricity\")\n", " plt.hist(dat[\"Nuclei_AreaShape_Eccentricity\"], bins=100, normed=1)\n", " plt.tight_layout()\n", " plt.subplots_adjust(top=0.85)\n", " plt.suptitle(title, fontweight=\"bold\")\n", " plt.show()\n", " \n", "\n", " \n", "scale_plot(data, \"Unscaled data\")" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj8AAACsCAYAAACUwc3zAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGz1JREFUeJzt3XucHGWd7/HPlyAgF+WSrCLkgpDdFZEDOgK+RMAjQlAh\nKKsERC4CkT1EXV3dDYsLbDi4EV5eOAtHiJoFdgVEJDgs4UC4ZOEIaIaFFUgEAhtIcgIEwv0STPid\nP+oZUun0TFfP9PStvu/Xq1/TXfVU1a96Zp7+9e95uloRgZmZmVlZbNTqAMzMzMyaycmPmZmZlYqT\nHzMzMysVJz9mZmZWKk5+zMzMrFSc/JiZmVmpOPkxs4aRFOk2YYjbH5+2v6+ObS5J2/xoKMc0s/Jx\n8mNWIpLeK+kaSU9Lel3SMkn/R9LOrY6tWSRN6E/SWh2LmbXGxq0OwMyaag6wO3Ar8DCwI7AfsD3w\naAvjMjNrGld+zEpC0rZkic/zwIER8ZcRcSjwJ8B/5NrtI+kmSSslvSzpbkmbS3qbpHmSnpT0hqTn\nJfVKGjvIMbeTdLGkJZJekvQbSR/LrX9POtYrku4AdipwHvtKuj9tcxmwWcX63VPMz0n6o6QVki6Q\ntEkajvuvXNu3hukkHSNpYYrzDUkPS/ofRZ9fM+scrvyYlcdLwMvA1sC9km4FbgfmRcQrAJJ2A+YD\nmwJ3AI8A+wObAGvJKkQ3pv18BDg0rZtUeTBJGwG/Bj6a9nUL8HngJkl7RMRDwOVp/38gS0r+drAT\nkLQ1cF06h1uB0cDBFc3GAG8Av0oxfxo4FVgGzAL+GTghtT0//XwRGA88Bvw7sCVwBHCBpHsj4q7B\n4jKzzuLKj1lJRMQfgROBF4D/BnyDbBjsUUkfTs1OIUt8eiNiv4g4Efgz4MWIWA18FvhP4BXg/rTN\n/pJU5ZAfIkt8XiKrLL0ELCar1JwgaUeyxAfgoIg4Friwxml8hizxWUxWvfoUsN7k6Ii4BfgO2TDe\nK8BDadV/j4hVwIxc279Kt1XAecAlwJPAM8BSQMDHa8RkZh3GlR+zEomIqyT1kiUdHwNOBt4F/D1w\nGOuGne7ObbMWIA1X3QaMqtjtZsA7yJKqvAnp51bA1yvW7QLskO6/FhFL0/2Ha5xC/zaPxLpvZX4Y\n+GB/A0mnAd+tsu2YGvu+DjhoCNuZWYdx5cesJNKcnX0j4vWIuDEivgP8Y1q9VfrZPx9m79x2G6XK\nzhFkic/1wBb5NmQVkkpL0s8VwGYRoYgQsDkwDVie1r89N2/oT2ucRv82E3PVpsptjkw/v0P2Bq9/\nKK2//dr8uaWfW7Mu8dmPrG+8YZBzM7MO5sqPWXlsCtwhaRFwL/Aq2TAWwLz08yLgJGCypPlkc372\nJZvf81Rqsw/wT6wbshrIPcBdadsFku4E3p22+0ZEXCLpdrJk4yZJC1iXuAzkerIK0y7AzZJWA3tW\ntOmP84up3eFV1r9BNlfpckmPkyVKL5PN9TmLbA7QJ2rEYmYdypUfs/J4HfghsBr4FPAlsk9+nQ2c\nCxARDwAHADcDuwFHkyUbb5AlPNcCbydLWM4Z7GAR8SYwmSyhegdwPFmicj3rhtW+mI41nqyC84Ma\n+3yObHjuQbKk6kWyic153yBLvN4L7Fy5z4h4g6watJIs2To1zYc6DniCLLl7Hrh6sFjMrHNp3bC5\nmZmZWfdz5cfMzMxKxcmPmZmZlYqTHzMzMysVJz9mZmZWKk5+zMzMrFSc/JiZmVmpOPkxMzOzUnHy\nY2ZmZqXi5MfMzMxKxcmPmZmZlYqTHzMzMysVJz/WUJImSApJG6fH8yWd1Oq4zKx1JC2RdGCBduMk\nvSxpVDPiagZJF0n6+wLtbpB0XDNiMic/NgBJR0vqSx3RivSPue8IHev4lDAdORL7N7PaUoLytKQt\ncstOkjS/WTFExBMRsWVErB0kxtdSv9R/u6BZ8VXEcryk/1urXUScEhFnF2h3SERcWs++beic/NgG\nJH0T+BHwXeBdwDjgfwOTR+iQxwGrgGNrxLXxCB3fzDKjgK+3OogaDk0JUv9tWqsDGkg3VbC6jZMf\nW4+kdwIzgFMj4pqIeCUi/hgR10XEt1ObjSRNl/SopGclXSVp2yEebzywPzAVOFjSu3PrDpC0TNLf\nSnoS+Oe0/DOS7pP0vKQ7Je2e26Y/rpckLZT02aE/G2alcx7wLUlbV66oHNJOy9Yb1pZ0sqRFuf+/\nD1bZz4D9R7Vj1GOg40saK+kaSSvTMS/IbfPltM1zkm5MfVL/upB0iqRHUn9zoTLvAy4CPpKqT8+n\n9pdI+rGkuZJeAT6elv3P3D4np/7rxfQcTMo/l9X2LenDkp7KJ1OSPifpP4fyPJmTH9vQR4DNgDmD\ntPkqcDhZ0vIe4DngwiEe71igLyJ+BSwCvlix/t3AtsB4YKqkPYHZwFeA7YCLgV5Jm6b2jwIfA94J\n/APwr5K2H2JsZmXTB8wHvlXvhpI+D5xF9j/9DuAw4NkqTRvZf9Q8fkoY/g14HJgA7ABcmbaZDPwd\n8DlgDHAHcEXFrj8DfBjYHfgCcHBELAJOAe5K1ad8sng0cA6wFbDe0JWkvYDLgG8DWwP7AUvybart\nOyIWkD2XB+Wafinty4bAyY9V2g54JiLWDNLmFOD0iFgWEavJOpy/GOK7tWOBy9P9y9lw6OtN4MyI\nWB0Rr5FViC6OiN9GxNo0Rr4a2AcgIn4ZEf8vIt6MiF8AjwB7DSEus7I6A/iqpDF1bncScG5ELIjM\n4oh4vEq74fYf16ZqSP/t5BrH34ssyfp2qmS/HhH9SckpwD9GxKLU530X2CNf/QFmRsTzEfEEcBuw\nR434fh0Rv0l90OsV604EZkfEvLR+eUT8oeB5XwocA5AqZQezru+0Ojn5sUrPAqNrdETjgTn9nQ9Z\nxWYt2fygwiR9FNiJ9C6M7B/5A5LyncvKig5kPPDX+c4PGEvWuSHp2NyQ2PPAbsDoeuIyK7OIeICs\nUjK9zk3HklVeaxlu/3F4qob0335S4/hjgccHeEM3Hjg/F8sqQGTVoX5P5u6/CmxZI76lg6wr+hxV\n86/AocompH8BuCMiVgxxX6Xn5Mcq3UVWSTl8kDZLgUMqOqDNImJ5ncc6jqyjuS/N6fltbnm/qHLs\ncyqOvXlEXJHerf0EmAZsl0rRD6RjmFlxZwIns34S8Er6uXlu2btz95cCOxfYd6P6j2r7rXb8pcC4\nAd7QLQW+UhHL2yPizgLHq+ybai0fLMaa+0jPz11kQ3RfAv6lwH5sAE5+bD0R8QJZ2ftCSYdL2lzS\n2yQdIunc1Owi4Jz+0rCkMWnsvDBJm5G9e5lKVkbuv30VOHqQytNPgFMk7Z0mHm4h6dOStgK2IOs0\nVqZjnEBW+TGzOkTEYuAXwNdyy1YCy4FjJI2S9GXWfyH/Kdlk6Q+l/81dKoaP+g27/xjAQMf/HbAC\nmJn6i81S1bk/ltMkvT/F8s40d6iIp4AdJW1SR4w/A06Q9AllE793kPTndez7MuBvgA8A19RxXKvg\n5Mc2EBHfB74JfIcskVhKVk25NjU5H+gFbpL0EnA3sHedhzkceA24LCKe7L+RTWbeGJg0QGx9ZO9I\nLyCbKLkYOD6tWwh8n+zd0VNkHcRv6ozLzDIzyN5Q5J1MNln3WeD9wFsVkoj4JdlE38uBl8j6i2qf\nAh1u/3Gd1r/Oz5zBjp+uGXQosAvwBLAMODJtMwf4HnClpBfJKsWHFIzjVuBB4ElJzxTZICJ+B5wA\n/BB4Afh3sqG3ovuek9rPiYhXC8ZpVShisAqdmZmZtQtJj5IN1d3c6lg6mSs/ZmZmHUDSEWRD+7e2\nOpZO5yvmmpmZtTllXzOyK/CliHizxeF0PA97mZmZWal42MvMzMxKpe2GvUaPHh0TJkxodRhm1kD3\n3HPPMxFR7xWDR5T7GrPuUk8/03bJz4QJE+jr62t1GGbWQJKqfc1BS7mvMesu9fQzHvYyMzOzUnHy\nY2ZmZqXi5MfMzMxKpeuSnwnTr2fC9OtbHYaZmVnD+TWuMbou+TEzMzMbjJMfMzMzKxUnP2ZmZlYq\nTn7MzMysVJz8mJmZWak4+TEzM7NScfJjZmZmpeLkx8zMzErFyY+ZmZmVSs3kR9JsSU9LemCA9ZL0\nvyQtlvR7SR/MrTtO0iPpdlwjAzczM+t2zbqic/9xynL16CKVn0uASYOsPwSYmG5TgR8DSNoWOBPY\nG9gLOFPSNsMJ1szMzGy4aiY/EXE7sGqQJpOByyJzN7C1pO2Bg4F5EbEqIp4D5jF4EmVmZmY24jZu\nwD52AJbmHi9LywZavgFJU8mqRowbN64BIZmZmVmlymGtJTM/Paz9DHX7VmuLCc8RMSsieiKiZ8yY\nMa0Ox8zajKRJkh5KcwunD9LuCEkhqaeZ8Zn1K9O8mU7WiORnOTA293jHtGyg5WZmhUkaBVxINr9w\nV+AoSbtWabcV8HXgt82N0Mw6TSOSn17g2PSpr32AFyJiBXAjcJCkbdJE54PSMjOzeuwFLI6IxyLi\nDeBKsrmGlc4Gvge83szgzKzz1JzzI+kK4ABgtKRlZJ/gehtARFwEzAU+BSwGXgVOSOtWSTobWJB2\nNSMiBps4bWZWTbX5g3vnG6RLbIyNiOslfXugHXl+obVafkhspOfLFJmXU9YhuprJT0QcVWN9AKcO\nsG42MHtooZmZ1SZpI+AHwPG12kbELGAWQE9PT4xsZGatUdaEph5tMeHZzGwQteYPbgXsBsyXtATY\nB+j1pGczG0gjPurelppZWjSzEbUAmChpJ7KkZwpwdP/KiHgBGN3/WNJ84FsR0dfkOM2sQ3Rt8mNm\n3SEi1kiaRvaBiVHA7Ih4UNIMoC8ielsboVl78zDYhpz8mFnbi4i5ZB+uyC87Y4C2BzQjJrORUi1Z\nqVxWrY1HOYrrmuTHma2ZmbWrwRIaJy3N5wnPZmZmdWj0VZx9Vejm65rKj5mZWSdrtwSomytTrvyY\nmZlZqTj5MTMzs1Jx8mNmZmal4uTHzMzMSsXJj5mZmZWKkx8zMzMrlUIfdZc0CTif7NLyP42ImRXr\nfwh8PD3cHPiTiNg6rVsL3J/WPRERhzUicDMzs2aq56Po3fwx8W5QM/mRNAq4EPgksAxYIKk3Ihb2\nt4mIb+TafxXYM7eL1yJij8aFbGZmZjZ0RSo/ewGLI+IxAElXApOBhQO0Pwo4szHhmZmZda5mXriw\n3S6S2M6KJD87AEtzj5cBe1drKGk8sBNwa27xZpL6gDXAzIi4tsp2U4GpAOPGjSsWuZmZ2TDkkwUP\nT5VLoyc8TwGujoi1uWXjI6IHOBr4kaSdKzeKiFkR0RMRPWPGjGlwSGZmZmbrFEl+lgNjc493TMuq\nmQJckV8QEcvTz8eA+aw/H8jMzMysqYoMey0AJkraiSzpmUJWxVmPpD8HtgHuyi3bBng1IlZLGg18\nFDi3EYGbmZm1A8+16Tw1k5+IWCNpGnAj2UfdZ0fEg5JmAH0R0ZuaTgGujIjIbf4+4GJJb5JVmWbm\nPyVmZmbWjop8VN1JT+cqdJ2fiJgLzK1YdkbF47OqbHcn8IFhxGdmZmZNVIakrlDyY2ZmZuVWLSmq\nrJB1ysUd/fUWZmZmVipOfszMzKxUPOxlZmaWlGG+S72KPCed9ryVIvnplDFIMzNrL532om7FeNjL\nzMzMSqXjKz/Oys3MzKwervyYmZlZqTj5MTMzs1Jx8mNmZmal4uTHzMxKYcL06z1P1AAnP2Zm1gWc\n2Fg9CiU/kiZJekjSYknTq6w/XtJKSfel20m5dcdJeiTdjmtk8GZmZmb1qvlRd0mjgAuBTwLLgAWS\neiNiYUXTX0TEtIpttwXOBHqAAO5J2z7XkOjNzMxqqKwIuUJkRSo/ewGLI+KxiHgDuBKYXHD/BwPz\nImJVSnjmAZOGFqqZlVWB6vM3JS2U9HtJt0ga34o4bWR4SMsarUjyswOwNPd4WVpW6YjU8VwtaWw9\n20qaKqlPUt/KlSsLhm5mZZCrPh8C7AocJWnXimb3Aj0RsTtwNXBuc6M0s07SqAnP1wETUsczD7i0\nno0jYlZE9EREz5gxYxoUkpl1iZrV54i4LSJeTQ/vBnZscoxmNoCBKnf9y1tR1Svy9RbLgbG5xzum\nZW+JiGdzD3/Kunddy4EDKradX2+QZlZq1SrIew/S/kTghmorJE0FpgKMGzeuUfFZF/CwWrkUqfws\nACZK2knSJsAUoDffQNL2uYeHAYvS/RuBgyRtI2kb4KC0zMys4SQdQ/YBi/OqrXeV2cygQOUnItZI\nmkaWtIwCZkfEg5JmAH0R0Qt8TdJhwBpgFXB82naVpLPJEiiAGRGxagTOw8y6V83qM4CkA4HTgf0j\nYnWTYjOzDlToW90jYi4wt2LZGbn7pwGnDbDtbGD2MGI0s3J7q/pMlvRMAY7ON5C0J3AxMCkinm5+\niNYu8sNXS2Z+uoWRWKX+3007/F58hWcza2sRsQborz4vAq7qrz6nijNkw1xbAr9MF1rtHWB3ZmbF\nKj9mZq1UoPp8YNODMrOO5cqPmZmZlYorP2Zm1pb88fPO1e6/Oyc/ZmbWsdr9Rdbak4e9zMzMrFSc\n/JiZmVmpOPkxMzOzUilV8tOqL1AzMzOz9uEJz2Zm1nK+MrM1k5MfMzPrSq7020Cc/JiZWUdwdcga\npdCcH0mTJD0kabGk6VXWf1PSQkm/l3SLpPG5dWvTd+34+3bMzMxsQM2am1uz8iNpFHAh8ElgGbBA\nUm9ELMw1uxfoiYhXJf0lcC5wZFr3WkTs0eC4zczMzIakyLDXXsDiiHgMQNKVwGTgreQnIm7Ltb8b\nOKaRQZqZWecZ6jCV5+p0t3b4/RZJfnYAluYeLwP2HqT9icANucebSeoD1gAzI+Layg0kTQWmAowb\nN65ASGZm1kqef2OdrKETniUdA/QA++cWj4+I5ZLeC9wq6f6IeDS/XUTMAmYB9PT0RCNjMjOz4etP\ndhqV6DR6f9bZml0NKjLheTkwNvd4x7RsPZIOBE4HDouI1f3LI2J5+vkYMB/YcxjxmpmZmQ1LkcrP\nAmCipJ3Ikp4pwNH5BpL2BC4GJkXE07nl2wCvRsRqSaOBj5JNhjYzsxJqh/keZjWTn4hYI2kacCMw\nCpgdEQ9KmgH0RUQvcB6wJfBLSQBPRMRhwPuAiyW9SVZlmlnxKTEzMzOzpio05yci5gJzK5adkbt/\n4ADb3Ql8YDgBmplZ+xiscuOqjnWKUl7h2RPtzMyaa6DEaKgJkxMtG45SJj9mZrahagmF3yRaN3Ly\nY2Zmw+IqjHWaQt/tZWZmZtYtnPyYmZlZqZQ6+WnWt8eambUT931Wdp7zY2bWxYab5DhJsm5U6sqP\nmZmZlY8rP/jbic2sswx2rbJ6rmPma55ZWbnyY2ZmZqXiyk+FyvFtvyMyMzNrrpGuSjr5MTNrknqG\nq4bb+dczUdmTmq1snPzU4Mu9m9lQjfS7V8/ZMRsaRUTtRtIk4HxgFPDTiJhZsX5T4DLgQ8CzwJER\nsSStOw04EVgLfC0ibhzsWD09PdHX11f4BNrhHYs7HrPBSbonInqGsf2Q+6CB1NvXFNUOfZJZt6jn\n9bWefqZm5UfSKOBC4JPAMmCBpN6IWJhrdiLwXETsImkK8D3gSEm7AlOA9wPvAW6W9KcRsbbw2XSA\nwapDfmdmNjzD6YOaH62ZdYIiw157AYsj4jEASVcCk4F8xzMZOCvdvxq4QJLS8isjYjXwX5IWp/3d\n1Zjw21dlQlTPROoiCZOTKiuRIfdBUaS0XUC1/zf/D5p1riLJzw7A0tzjZcDeA7WJiDWSXgC2S8vv\nrth2h8oDSJoKTE0PX5b0UKHoixsNPNPgfQ6LvjeibdrufJugbOfcaec7fhjbDqcPWu85Gm5fU+3/\nrcj/aUGd8jvthDg7IUZwnDXV8f81mjr6mbaY8BwRs4BZI7V/SX3DmW/Qacp2vlC+cy7b+TbKSPc1\nw9Epv9NOiLMTYgTH2UgpxglF2xe5yOFyYGzu8Y5pWdU2kjYG3kk26bDItmZmgxlOH2RmtoEiyc8C\nYKKknSRtQjaBubeiTS9wXLr/F8Ctaay9F5giaVNJOwETgd81JnQzK4nh9EFmZhuoOeyVxs+nATeS\nfcx0dkQ8KGkG0BcRvcDPgH9JE5pXkXVOpHZXkU1MXAOc2qJPerVlmXsEle18oXznXJrzHU4f1GE6\n5XfaCXF2QozgOBuprhgLXefHzMzMrFv4i03NzMysVJz8mJmZWal0ffIjaZKkhyQtljS91fGMNElL\nJN0v6T5Jjb92f4tJmi3paUkP5JZtK2mepEfSz21aGWOjDXDOZ0lann7P90n6VCtjtMaQdLak36ff\n6U2S3tPqmCpJOk/SH1KccyRt3eqYqpH0eUkPSnpTUlt9TLtTXpeq9T3tRtJYSbdJWph+318vsl1X\nJz+5y+IfAuwKHJW+cqPbfTwi9mj36zIM0SXApIpl04FbImIicEt63E0uYcNzBvhh+j3vERFzmxyT\njYzzImL3iNgD+DfgjFYHVMU8YLeI2B14GDitxfEM5AHgc8DtrQ4kr8Nely6het/TTtYAfx0RuwL7\nAKcWeT67Ovkhd1n8iHgD6L8svnWoiLid7NM8eZOBS9P9S4HDmxrUCBvgnK0LRcSLuYdbAG33iZSI\nuCki1qSHd5Ndd6ntRMSiiGj0twU0Qse8LnVC3xMRKyLiP9L9l4BFVPkmiUrdnvxUuyx+zSelwwVw\nk6R70qX8y+BdEbEi3X8SeFcrg2miaWnoYXa3DfWVmaRzJC0Fvkh7Vn7yvgzc0OogOkwZX5eaQtIE\nYE/gt7XadnvyU0b7RsQHyUqqp0rar9UBNVO6sF3bvVseAT8Gdgb2AFYA329tOFaUpJslPVDlNhkg\nIk6PiLHAz4Fp7RhjanM62ZDDz1sRY9E4rRwkbQn8CvirigpqVW3x3V4jqHRfrxERy9PPpyXNISux\nttWY9wh4StL2EbFC0vbA060OaKRFxFP99yX9hGx+iHWAiDiwYNOfA3OBM0cwnKpqxSjpeOAzwCda\neSXtOp7LdlK616WRJultZInPzyPimiLbdHvlp8hl8buGpC0kbdV/HziIbNJft8t/tcFxwK9bGEtT\npCSv32cpx++560mamHs4GfhDq2IZiKRJwN8Ah0XEq62OpwOV6nVppEkS2RXeF0XEDwpv1+1XeE4f\nAf4R6y6Lf06LQxoxkt4LzEkPNwYu77bzlXQFcAAwGniK7F3xtcBVwDjgceALEdHWk/TqMcA5H0A2\n5BXAEuAruXlP1qEk/Qr4M+BNsr/lU/qrue0ifYXIpqz74ti7I+KUFoZUlaTPAv8EjAGeB+6LiINb\nG1WmU16XqvU9EfGzlgZVQdK+wB3A/WT/NwB/V+sTsF2f/JiZmZnldfuwl5mZmdl6nPyYmZlZqTj5\nMTMzs1Jx8mNmZmal4uTHzMzMSsXJj5mZmZWKkx8zMzMrlf8PFevafoFJSmYAAAAASUVORK5CYII=\n", "text/plain": [ "<matplotlib.figure.Figure at 0x7fce345c2320>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data_scaled = data.scale_features()\n", "\n", "scale_plot(data_scaled, \"Scaled data\")" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mean = -0.00\n", "standard deviation = 1.00\n" ] } ], "source": [ "area_mean = data_scaled.Cells_AreaShape_Area.mean()\n", "area_std = data_scaled.Cells_AreaShape_Area.std()\n", "print(\"mean = {:.2f}\\n\\\n", "standard deviation = {:.2f}\".format(area_mean, area_std))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Principal components\n", "\n", "Since calcualting the principal components of a dataset is such a common operation, there is a `.pca()` method for morar dataframes.\n", "\n", "This returns a dataframe of principal components with the associated metadata, as well as the explained variance." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# first remove missing data, can't have NaN values in the PCA calculation\n", "missing = data_scaled.isnull().sum()\n", "data_scaled = data_scaled.drop(missing[missing > 0].index, axis=1)\n", "\n", "pca_df, pca_var = data_scaled.pca()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>PC1</th>\n", " <th>PC2</th>\n", " <th>PC3</th>\n", " <th>PC4</th>\n", " <th>PC5</th>\n", " <th>PC6</th>\n", " <th>PC7</th>\n", " <th>PC8</th>\n", " <th>PC9</th>\n", " <th>PC10</th>\n", " <th>...</th>\n", " <th>PC160</th>\n", " <th>PC161</th>\n", " <th>PC162</th>\n", " <th>PC163</th>\n", " <th>Metadata_compound</th>\n", " <th>Metadata_concentration</th>\n", " <th>Metadata_platename</th>\n", " <th>Metadata_platenum</th>\n", " <th>Metadata_site</th>\n", " <th>Metadata_well</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>0.892394</td>\n", " <td>-5.027810</td>\n", " <td>1.848411</td>\n", " <td>-0.844165</td>\n", " <td>0.453647</td>\n", " <td>0.111056</td>\n", " <td>0.509544</td>\n", " <td>-1.760124</td>\n", " <td>1.689087</td>\n", " <td>3.040456</td>\n", " <td>...</td>\n", " <td>-0.000450</td>\n", " <td>0.002858</td>\n", " <td>-0.003976</td>\n", " <td>0.002758</td>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>CPAP53</td>\n", " <td>6119</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>1.532934</td>\n", " <td>-5.931854</td>\n", " <td>2.057423</td>\n", " <td>-2.275006</td>\n", " <td>0.930320</td>\n", " <td>0.783315</td>\n", " <td>1.259424</td>\n", " <td>1.488056</td>\n", " <td>-0.534312</td>\n", " <td>1.826376</td>\n", " <td>...</td>\n", " <td>0.001523</td>\n", " <td>-0.002552</td>\n", " <td>0.000463</td>\n", " <td>-0.003439</td>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>CPAP53</td>\n", " <td>6119</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>4.913065</td>\n", " <td>-2.134422</td>\n", " <td>-2.722417</td>\n", " <td>5.353066</td>\n", " <td>-1.349470</td>\n", " <td>2.371191</td>\n", " <td>-0.451264</td>\n", " <td>-1.268996</td>\n", " <td>-4.387346</td>\n", " <td>-0.169706</td>\n", " <td>...</td>\n", " <td>-0.003100</td>\n", " <td>-0.002865</td>\n", " <td>-0.001382</td>\n", " <td>-0.003420</td>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>CPAP53</td>\n", " <td>6119</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>0.924419</td>\n", " <td>-6.267590</td>\n", " <td>1.299768</td>\n", " <td>1.443804</td>\n", " <td>0.443817</td>\n", " <td>-2.715458</td>\n", " <td>3.595639</td>\n", " <td>-0.919689</td>\n", " <td>0.265012</td>\n", " <td>0.140926</td>\n", " <td>...</td>\n", " <td>0.001229</td>\n", " <td>0.009523</td>\n", " <td>-0.001668</td>\n", " <td>-0.000444</td>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>CPAP53</td>\n", " <td>6119</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>6.063763</td>\n", " <td>-2.678332</td>\n", " <td>0.144865</td>\n", " <td>2.995934</td>\n", " <td>-0.326641</td>\n", " <td>2.347589</td>\n", " <td>0.425272</td>\n", " <td>-3.152036</td>\n", " <td>-3.636349</td>\n", " <td>-1.353622</td>\n", " <td>...</td>\n", " <td>-0.003887</td>\n", " <td>-0.012992</td>\n", " <td>0.002697</td>\n", " <td>0.006550</td>\n", " <td>DMSO</td>\n", " <td>0</td>\n", " <td>CPAP53</td>\n", " <td>6119</td>\n", " <td>1</td>\n", " <td>A01</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "<p>5 rows × 169 columns</p>\n", "</div>" ], "text/plain": [ " PC1 PC2 PC3 PC4 PC5 PC6 PC7 \\\n", "0 0.892394 -5.027810 1.848411 -0.844165 0.453647 0.111056 0.509544 \n", "1 1.532934 -5.931854 2.057423 -2.275006 0.930320 0.783315 1.259424 \n", "2 4.913065 -2.134422 -2.722417 5.353066 -1.349470 2.371191 -0.451264 \n", "3 0.924419 -6.267590 1.299768 1.443804 0.443817 -2.715458 3.595639 \n", "4 6.063763 -2.678332 0.144865 2.995934 -0.326641 2.347589 0.425272 \n", "\n", " PC8 PC9 PC10 ... PC160 PC161 PC162 \\\n", "0 -1.760124 1.689087 3.040456 ... -0.000450 0.002858 -0.003976 \n", "1 1.488056 -0.534312 1.826376 ... 0.001523 -0.002552 0.000463 \n", "2 -1.268996 -4.387346 -0.169706 ... -0.003100 -0.002865 -0.001382 \n", "3 -0.919689 0.265012 0.140926 ... 0.001229 0.009523 -0.001668 \n", "4 -3.152036 -3.636349 -1.353622 ... -0.003887 -0.012992 0.002697 \n", "\n", " PC163 Metadata_compound Metadata_concentration Metadata_platename \\\n", "0 0.002758 DMSO 0 CPAP53 \n", "1 -0.003439 DMSO 0 CPAP53 \n", "2 -0.003420 DMSO 0 CPAP53 \n", "3 -0.000444 DMSO 0 CPAP53 \n", "4 0.006550 DMSO 0 CPAP53 \n", "\n", " Metadata_platenum Metadata_site Metadata_well \n", "0 6119 1 A01 \n", "1 6119 1 A01 \n", "2 6119 1 A01 \n", "3 6119 1 A01 \n", "4 6119 1 A01 \n", "\n", "[5 rows x 169 columns]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pca_df.head()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x7fcdf4130c18>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot the calculated principal components\n", "plt.figure(figsize=[12, 9])\n", "plt.suptitle(\"Plot of first 2 principal components\", fontweight=\"bold\")\n", "plt.subplot(221)\n", "plt.scatter(pca_df.PC1, pca_df.PC2, s=3, alpha=0.3)\n", "plt.xlim([-10, 25]); plt.ylim([-10, 20])\n", "plt.subplot(222)\n", "for name, group in pca_df.groupby(\"Metadata_platename\"):\n", " plt.scatter(group.PC1, group.PC2, label=name, s=3, alpha=0.5)\n", "plt.xlim([-10, 25]); plt.ylim([-10, 20])\n", "plt.legend()\n", "plt.subplots_adjust(top=0.95)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Variance explained by principal components\n", "\n", "This is often useful for calculated how many principal components to use." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x7fcdf42d99e8>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=[10, 6])\n", "plt.subplot(221)\n", "plt.plot(pca_var, \".\")\n", "plt.vlines(x=range(len(pca_var)), ymin=0, ymax=pca_var)\n", "plt.ylabel(\"proportion of variance\")\n", "plt.xlabel(\"principal component\")\n", "plt.title(\"Proportion of variance explained \\nby each principal component\")\n", "\n", "plt.subplot(222)\n", "cumulative_var = np.cumsum(pca_var) / np.sum(pca_var)\n", "plt.plot(cumulative_var)\n", "plt.title(\"Cumulative variation explained by \\nsuccessive principal components\")\n", "plt.xlabel(\"principal component\")\n", "plt.ylabel(\"cumulative proportion of variance\")\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To find out how many principal components are needed to account for a certain proportion of variance within the data:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "27" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wanted_proportion = 0.8\n", "# returns the first index of where `cumulative_var` exceeds or equals the wanted_proportion\n", "# as False == 1\n", "np.argmax(cumulative_var >= wanted_proportion) + 1 # as zero indexed" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Although the ability to pre-select the number of principal components based on explained variance in the data is built into the `.pca()` method.\n", "\n", "If we pass `n_components` argument, we can either specify an integer which will return that many principal components, or a float < 0, which will return the number of principal components to statisfy that proportion of variance.\n", "\n", "By default it will return all the principal components." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "Index(['PC1', 'PC2', 'PC3', 'PC4', 'PC5', 'PC6', 'PC7', 'PC8', 'PC9', 'PC10',\n", " 'PC11', 'PC12', 'PC13', 'PC14', 'PC15', 'PC16', 'PC17', 'PC18', 'PC19',\n", " 'PC20', 'PC21', 'PC22', 'PC23', 'PC24', 'PC25', 'PC26', 'PC27',\n", " 'Metadata_compound', 'Metadata_concentration', 'Metadata_platename',\n", " 'Metadata_platenum', 'Metadata_site', 'Metadata_well'],\n", " dtype='object')" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pca_df2, pca_var2 = data_scaled.pca(n_components=0.8)\n", "pca_df2.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Feature selection\n", "\n", "Rather than principal components to reduce dimensionality, one option is to remove features that are not providing any useful information.\n", "\n", "One method to do this is to find redundant features, for example those that are highly correlated with other features. morar has the `find_correlation()` function that returns column names that should be removed." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "['Cells_AreaShape_MedianRadius',\n", " 'Cells_AreaShape_MaximumRadius',\n", " 'Cells_Intensity_IntegratedIntensity_W2',\n", " 'Cells_Intensity_LowerQuartileIntensity_W2',\n", " 'Cells_Intensity_LowerQuartileIntensity_W3',\n", " 'Cells_Intensity_MedianIntensity_W2',\n", " 'Cells_Intensity_MedianIntensity_W4',\n", " 'Cells_Intensity_LowerQuartileIntensity_W4',\n", " 'Cells_Intensity_UpperQuartileIntensity_W2',\n", " 'Cells_Intensity_MADIntensity_W2',\n", " 'Cells_Intensity_UpperQuartileIntensity_W3',\n", " 'Cells_Intensity_MADIntensity_W3',\n", " 'Cells_Intensity_MADIntensity_W5',\n", " 'Cells_Intensity_MassDisplacement_W5',\n", " 'Cells_Intensity_MassDisplacement_W3',\n", " 'Cells_Intensity_MaxIntensityEdge_W2',\n", " 'Cells_Intensity_MaxIntensityEdge_W3',\n", " 'Cells_Intensity_MaxIntensityEdge_W4',\n", " 'Cells_Intensity_MaxIntensityEdge_W5',\n", " 'Cells_Intensity_MaxIntensity_W3',\n", " 'Cells_Intensity_MaxIntensity_W4',\n", " 'Cells_Intensity_MaxIntensity_W5',\n", " 'Cells_Intensity_MeanIntensityEdge_W2',\n", " 'Cells_Intensity_UpperQuartileIntensity_W3',\n", " 'Cells_Intensity_MeanIntensity_W3',\n", " 'Cells_Intensity_UpperQuartileIntensity_W5',\n", " 'Cells_Intensity_MeanIntensity_W5',\n", " 'Cells_Intensity_MinIntensityEdge_W2',\n", " 'Cells_Intensity_MinIntensityEdge_W3',\n", " 'Cells_Intensity_MinIntensityEdge_W4',\n", " 'Cells_Intensity_MinIntensityEdge_W5',\n", " 'Cells_Intensity_StdIntensity_W2',\n", " 'Nuclei_AreaShape_MajorAxisLength',\n", " 'Nuclei_AreaShape_MaximumRadius',\n", " 'Nuclei_AreaShape_MinFeretDiameter',\n", " 'Nuclei_Intensity_MedianIntensity_W1',\n", " 'Nuclei_Intensity_LowerQuartileIntensity_W1',\n", " 'Nuclei_Intensity_MADIntensity_W1',\n", " 'Nuclei_Intensity_MedianIntensity_W1',\n", " 'Nuclei_Intensity_StdIntensity_W1',\n", " 'Nuclei_Intensity_UpperQuartileIntensity_W1',\n", " 'Nuclei_Intensity_MaxIntensity_W1',\n", " 'Nuclei_Intensity_MinIntensity_W1',\n", " 'Nuclei_Intensity_MeanIntensityEdge_W1']" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from morar import feature_selection\n", "\n", "# find one of pairs of features that have a correlation > 0.95\n", "features_to_rm = feature_selection.find_correlation(data_scaled, threshold=0.95)\n", "\n", "features_to_rm" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# remove features\n", "data_scaled = data_scaled.drop(features_to_rm, axis=1)" ] } ], "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.5.2" } }, "nbformat": 4, "nbformat_minor": 2 }