Commit e9ab5fff authored by Morten Brun's avatar Morten Brun
Browse files

adding clustering

parent bbba91a8
%% Cell type:markdown id: tags:
# Explotation of transcriptomics data
The aim of this exercise is to visually divide samples by exposure. The main task here is to find discriminating features. This is what machine learning is about.
%% Cell type:code id: tags:
``` python
# First we load some libraries that we always need
# If you do not know what they are good for I suggest
# three options:
# 1. Do not worry about this for now
# 2. Use google to find information
# 3. Ask somebody who might know
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
```
%% Cell type:markdown id: tags:
First we locate the data files we are going to work with. This is a first major obstacle. If we need only one file it is easy, but for different reasons the data we wish to analyze can be spread around several files. This is the case here, so we need to do some work already at this stage. Unfortunately, this happens more often than not.
%% Cell type:code id: tags:
``` python
# Import tool used to walk throug the files
from os import walk
# In order to make the code cleaner it is often usefull
# to specify values in variables. Here we specify the file
# path, that is, the folder to fetch files from
path = '../rawdata/In vivo II transcriptomics/'
# Now we walk through all filenames in the specified folder
(_, _, filenames) = next(walk(path))
# We only keep the file ending with xlsx, that is, the excel files
filenames = [path + name for name in filenames if name.endswith('.csv')]
```
%% Cell type:markdown id: tags:
Let us list the files and read in the first one of them
%% Cell type:code id: tags:
``` python
filenames
```
%%%% Output: execute_result
['../rawdata/In vivo II transcriptomics/ctr2_lib_norm.csv',
'../rawdata/In vivo II transcriptomics/ctr1_lib_norm.csv',
'../rawdata/In vivo II transcriptomics/wyhigh_lib_norm.csv',
'../rawdata/In vivo II transcriptomics/wylow_lib_norm.csv',
'../rawdata/In vivo II transcriptomics/ttalow_lib_norm.csv',
'../rawdata/In vivo II transcriptomics/gwlow_lib_norm.csv',
'../rawdata/In vivo II transcriptomics/gwhigh_lib_norm.csv',
'../rawdata/In vivo II transcriptomics/ttahigh_lib_norm.csv']
%% Cell type:code id: tags:
``` python
df = pd.read_csv(filenames[0], index_col=0)
```
%% Cell type:markdown id: tags:
To get an idea about the data we look at the first few rows
%% Cell type:code id: tags:
``` python
filenames[0].split()[-1].split('/')[-1][:4]
```
%%%% Output: execute_result
'ctr2'
%% Cell type:code id: tags:
``` python
df.head()
```
%%%% Output: execute_result
sample_532 sample_533 sample_536 sample_538 \
ENSGMOG00000000001 5.895429 7.580259 5.988031 3.197445
ENSGMOG00000000002 5.243531 3.838597 5.961058 2.671838
ENSGMOG00000000003 0.141717 0.000000 0.000000 0.000000
ENSGMOG00000000004 10.912212 17.855290 14.916132 18.089656
ENSGMOG00000000005 0.000000 0.038774 0.000000 0.000000
sample_540 sample_545 sample_546 sample_547
ENSGMOG00000000001 3.664780 6.194208 5.696718 5.078485
ENSGMOG00000000002 4.716152 4.942187 4.970291 3.742042
ENSGMOG00000000003 0.000000 0.032948 0.000000 0.000000
ENSGMOG00000000004 10.543753 13.673385 17.166620 12.128225
ENSGMOG00000000005 0.000000 0.000000 0.000000 0.000000
%% Cell type:markdown id: tags:
Already here we have reason to be suspecious. Lots of zeros in a row is a bad sign. For example, judging by row 4, the sample 533 is very different from the rest of the samples. This is probably an artifact of technical limitations, so we may come back to this if we are unable to find clear patterns in the data.
%% Cell type:markdown id: tags:
The csv files are relatively clean, so we can just read them in and merge them together to one big table. There is one catch, though. The doses are specified in the filenames, so we need to collect that information too. We define a helper function to do this for us.
%% Cell type:code id: tags:
``` python
# Helper method for reading in multiple csv files and
# formatting them for use in the analysis
from itertools import chain
def read_csv_files(filepaths, max_null_columns=None):
'''
Read in excel files.
'''
# Force the filepaths to consist of a list of filepaths also
# when a single filename is given as input
if type(filepaths) == str:
filepaths = [filepaths]
# Read in the content of all csv files
datas = [pd.read_csv(filepath, index_col=0) for filepath
in filepaths]
doses = [[filepath.split()[-1].split('/')[-1][:4]] * df.shape[1]
for filepath, df in zip(filepaths, datas)]
# Format the individual spreadsheets
'''
for idx, df in enumerate(datas):
# Discard empty columns
df = df.dropna(how='all', axis=1)
# Discard columns with no name
df = df[df.index.notnull()]
# Discard duplicate columns keeping biggest values.
df_dup = df.loc[df.index.duplicated(keep=False)]
df = df.loc[~df.index.duplicated(keep=False)]
for name in np.unique(df_dup.index):
df.loc[name] = df_dup.loc[name].max(axis=0).values
datas[idx] = df
'''
# Merge all spreadsheets into one spreadsheet
df = pd.concat(datas, axis=1, sort=False)
# Discard duplicate columns
# df = df.loc[:,~df.columns.duplicated()]
# Discard all rows with more than `max_null_columns` empty entries
df = df.replace(0, pd.np.nan)
if max_null_columns is None:
max_null_columns = df.shape[1]
df = df.loc[df.isnull().sum(axis=1) <= max_null_columns]
# Fill in empty entries with columnwise minima
mins = df.min()
df = df.fillna(value=mins)
# Return then resulting spreadsheet. We will call it a DataFrame from now on.
return df, list(chain.from_iterable(doses))
```
%% Cell type:markdown id: tags:
Now we read in the csv files.
%% Cell type:code id: tags:
``` python
df, doses = read_csv_files(filenames, max_null_columns=0)
```
%% Cell type:markdown id: tags:
If you want to, you can inspect the content of the resulting DataFrame `df`. Since it clutters your screen I have commented the following cell out. You can activate it by seclecting it and changing its type to code. One way to do this is through the "Cell" option on the top of this page.
%% Cell type:raw id: tags:
df
%% Cell type:markdown id: tags:
We are going to work with the doses, so we need to extract them from the dataframe. This has been made a little difficult by the way the columns are named. This is unfortunately quitet realistic.
%% Cell type:markdown id: tags:
Next we flip (transpose) the dataframe (spreadsheet) and, for each gene id, calculate the mean values of the gene expressions with respect to dose.
%% Cell type:raw id: tags:
from sklearn.preprocessing import StandardScaler
%% Cell type:raw id: tags:
scaler = StandardScaler()
scaler.fit(df.values)
df[df.columns] = scaler.transform(df.values)
%% Cell type:code id: tags:
``` python
df[df.columns] = np.arcsinh(df[df.columns].astype(float) / 5)
```
%% Cell type:code id: tags:
``` python
# Construct auxillary dataframes holding the flipped and averaged expressions
df2 = df.transpose()
df2['doses'] = doses
df2groups = df2.groupby('doses')
# Extract the averaged expressions in a numpy array
fit_values = df2groups.mean().values
# Clean up by deleting the auxillary dataframes
del df2
del df2groups
```
%% Cell type:markdown id: tags:
### Magic data manipulation.
We first compute the first 5 principal directions of the gene ids with respect to the samples grouped into dosage. Then we use these principal directions to project the individual samples to 5 dimensional space. We store the result in the variable `X`.
%% Cell type:code id: tags:
``` python
# Import PCA module
from sklearn.decomposition import PCA
# Fit and transform PCA
pca = PCA(n_components=5).fit(fit_values)
print('explained_variance_ratio', np.cumsum(pca.explained_variance_ratio_))
X = pca.transform(df.values.transpose())
```
%%%% Output: stream
explained_variance_ratio [0.43189944 0.63387887 0.769785 0.84857145 0.91671413]
%% Cell type:markdown id: tags:
### Visualization
%% Cell type:markdown id: tags:
We define a helper function for plotting. It takes several inputs.
* X is two-dimensional data that will be plotted by placing abbreviated dose names in the appropritat position on the plane
* y_text holds the dose abbreviations
* y_color specifies the colors. To begin with we want text and color to correspond.
%% Cell type:code id: tags:
``` python
from itertools import cycle, islice
def plot_embedding(X, y_text, y_color=None, title=None, colors=None):
if y_color is None:
y_color = y_text
if colors is None:
palette = np.vstack((plt.cm.tab10(np.arange(10)), plt.cm.Set3(np.arange(12))))
palette = np.array(list(islice(cycle(palette), len(np.unique(y_color)))))
colors = {}
for idx, value in enumerate(np.unique(y_color)):
colors[value] = palette[idx]
x_min, x_max = np.min(X, axis=0), np.max(X, axis=0)
dimensions = x_max - x_min
x_max = x_max + 0.1*dimensions
x_min = x_min - 0.05*dimensions
#plt.figure()
ax = plt.subplot(111)
for i in range(X.shape[0]):
plt.text(X[i, 0], X[i, 1], str(y_text[i]),
color=colors[y_color[i]],
fontdict={'weight': 'bold', 'size': 9})
plt.xlim([x_min[0], x_max[0]])
plt.ylim([x_min[1], x_max[1]])
plt.xticks([]), plt.yticks([])
if title is not None:
plt.title(title)
```
%% Cell type:markdown id: tags:
We make a list of dosage abbreviations
%% Cell type:code id: tags:
``` python
y_dose = np.empty(len(doses), dtype=int)
for idx, dose in enumerate(np.unique(doses)):
y_dose[np.array(doses) == dose] = idx
```
%% Cell type:markdown id: tags:
Compute UMAP embedding intended to visualize the data
%% Cell type:markdown id: tags:
### Plot the data
%% Cell type:markdown id: tags:
We plot the first two principal components
%% Cell type:code id: tags:
``` python
plot_embedding(X[:, :2],
doses,
y_color=y_dose, colors=None)
```
%%%% Output: display_data
![](data:image/png;base64,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)
%% Cell type:markdown id: tags:
Next we compute a fancy embedding of the all principal components.
%% Cell type:code id: tags:
``` python
# Import UMAP module
from umap import UMAP
# Suppress annoying warnings
import warnings
warnings.filterwarnings('ignore')
Y = UMAP(n_components=2).fit_transform(X)
```
%% Cell type:markdown id: tags:
And plot it
%% Cell type:code id: tags:
``` python
plot_embedding(Y,
doses,
y_color=y_dose, colors=None)
```
%%%% Output: display_data
![](data:image/png;base64,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)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment