Die Topologie ist ein Bereich der Mathematik, der sich mit "Formen" befasst. Eine Datenanalysemethode namens Topologische Datenanalyse (TDA) erfasst die Form, die durch eine große Anzahl von Daten in einem hochdimensionalen Raum dargestellt wird, als Merkmal der Daten und analysiert sie. TDA wird in verschiedenen Bereichen wie der Verarbeitung natürlicher Sprache und der Bilderkennung angewendet. Ich habe versucht, die scRNA-seq-Daten mit dieser TDA zu analysieren. Single cell RNA-seq(scRNA-seq) Innerhalb eines einzelnen mehrzelligen Organismus tragen alle Zellen grundsätzlich das gleiche Gen. Die darin exprimierten Gene unterscheiden sich jedoch von Zelle zu Zelle. RNA-seq ist eine Technologie, die alle in Zellen exprimierten Gene nachweist, und Einzelzell-RNA-seq (scRNA-seq) ist eine Technologie, die diese RNA-seq auf Einzelzellebene ausführt. scRNA-seq ist eine geeignete Technik zur Analyse der Zelldiversität auf Genexpressionsebene. In jüngster Zeit wurden die Vielfalt von Krebsstammzellen und die Vielfalt von Zellen im Differenzierungsprozess gut untersucht.
Derzeit wurden beim Menschen mehr als 20.000 Gene identifiziert. RNA-seq kann verwendet werden, um die Expressionsniveaus aller Gene zu erhalten. Da scRNA-seq Daten von Tausenden bis Zehntausenden von Zellen verarbeitet, ist es erforderlich, Daten von Tausenden bis Zehntausenden von etwa 20.000 Dimensionen zu analysieren. TDA ist eine gute Methode zur Analyse einer so großen Menge hochdimensionaler Daten.
Bei dieser Analyse wurden Daten verwendet, die in einer öffentlichen Datenbank veröffentlicht wurden. Die in der GEO-Datenbank veröffentlichte Zugangsnummer lautet GSE67310 ) ist. Sie können die Daten abrufen, die die Ausdrucksebene GSE67310_iN_data_log2FPKM_annotated.txt.gz in den FPKM-Wert konvertiert. Informationen wie das Expressionsniveau jedes Gens, der Zeitpunkt (Zeitpunkt) und der Zelltyp (Zuordnung) werden beschrieben. iNeuron Die erzwungene Expression des Ascl1-Gens im embryonalen Fibroblasten der Maus bewirkt eine Neuprogrammierung der Zellen, die Rückkehr in einen undifferenzierten Zustand und die Differenzierung in Nervenzellen. Die Zellen werden zu 5 Zeitpunkten (Tag 0, Tag 2, Tag 5, Tag 20, Tag 22) ab dem Beginn der Differenzierung gesammelt und die scRNA-Sequenz wird durchgeführt.
Führen Sie eine Vietris-Rips-Filtration durch, um einen einzelnen Komplex zu erhalten. Eine primäre Einheit ist eine Linie, die Datenpunkte verbindet. Ich habe versucht, dies mit networkx als ungerichteten Graphen darzustellen.
Load libraries
import numpy as np
import pandas as pd
import gudhi as gd
import networkx as nx
Reading data
x = pd.read_csv('GSE67310_iN_data_log2FPKM_annotated.txt', delimiter = '\t')
Triming data
y = x.drop('cell_name', axis = 1)
y = y.drop('assignment', axis = 1)
y = y.drop('log_tauGFP_intensity', axis = 1)
y = y.drop('experiment', axis = 1)
y = y.drop('time_point', axis = 1)
y.index = x.cell_name
Creating color table by day
day_color = pd.DataFrame()
for i in range(len(x)):
if x.time_point[i] == 0:
day_color[y.index[i]] = 'red'
elif x.time_point[i] == 2:
day_color[y.index[i]] = 'yellow'
elif x.time_point[i] == 5:
day_color[y.index[i]] = 'green'
elif x.time_point[i] == 20:
day_color[y.index[i]] = 'purple'
else:
day_color[y.index[i]] = 'blue'
Creating color table by cell type
type_color = pd.Series()
for i in range(len(x)):
if x.assignment[i] == 'MEF':
type_color[y.index[i]] = 'red'
elif x.assignment[i] == 'd2_induced':
type_color[y.index[i]] = 'yellow'
elif x.assignment[i] == 'd2_intermediate':
type_color[y.index[i]] = 'orange'
elif x.assignment[i] == 'd5_earlyiN':
type_color[y.index[i]] = 'skyblue'
elif x.assignment[i] == 'd5_earlyMyocyte':
type_color[y.index[i]] = 'lightgeen'
elif x.assignment[i] == 'd5_intermediate':
type_color[y.index[i]] = 'brown'
elif x.assignment[i] == 'd5_failedReprog':
type_color[y.index[i]] = 'gray'
elif x.assignment[i] == 'd22_failedReprog':
type_color[y.index[i]] = 'black'
elif x.assignment[i] == 'Neuron':
type_color[y.index[i]] = 'blue'
elif x.assignment[i] == 'Myocyte':
type_color[y.index[i]] = 'green'
else:
type_color[y.index[i]] = 'white'
Computing Vietris-Rips complex
rips = gd.RipsComplex(y.values, max_edge_length = 250)
Computing simplex tree
simplex_tree = rips.create_simplex_tree(max_dimension = 2)
Computing skeleton
skeleton = simplex_tree.get_skeleton(2)
Getting persistence diagram
diag = simplex_tree.persistence()
Plotting persistence diagram
gd.plot_persistence_diagram(diag)
Plotting persistence density
gd.plot_persistence_density(diag)
Constructing netowrk
g = nx.Graph()
for i in range(len(skeleton)):
if len(skeleton[i][0]) == 2:
g.add_edge(y.index[skeleton[i][0][0]], y.index[skeleton[i][0][1]])
layout = nx.kamada_kawai_layout(g)
nx.draw_networkx_nodes(g,layout,lineidths=0.2, edgecolors='black', node_size=20, node_color = day_color[list(g.nodes())].values)
nx.draw_networkx_edges(g, layout, width = 0.2, edge_color = 'gray')
nx.draw_networkx_nodes(g,layout,lineidths=0.2, edgecolors='black', node_size=20, node_color = type_color[list(g.nodes())].values)
nx.draw_networkx_edges(g, layout, width = 0.2, edge_color = 'gray')
Wenn es nach Zeitpunkt farbcodiert ist, breitet es sich von Tag 0 (rot) bis Tag 22 (blau) aus, und es ist ersichtlich, dass sich das Genexpressionsmuster diversifiziert. Wenn Sie nach Zelltyp farblich kennzeichnen, können Sie sehen, dass die Zellen am 22. Tag in Neuron (blau) und Myocyte (grün) unterteilt sind.
Ich habe die scRNA-seq-Daten mit TDA analysiert. Die Zellen sind nach Zeitpunkt und Zelltyp getrennt, und ich denke, wir konnten sie ordentlich gruppieren. Ich denke, TDA ist effektiv für die Analyse von scRNA-seq-Daten.
GUDHI Python modules documentation Treutlein B, Lee QY, Camp JG, Mall M et al. Dissecting direct reprogramming from fibroblast to neuron using single-cell RNA-seq. Nature 2016 Jun 16;534(7607):391-5. GSE67310
Recommended Posts