[PYTHON] Ich habe versucht, scRNA-seq-Daten mithilfe der topologischen Datenanalyse (TDA) zu analysieren.

Was ist topologische Datenanalyse?

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.

Analyse von scRNA-seq-Daten

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.

Datensatz

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.

Python-Code

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')

iNeuron_Persistence_diagram.tiff iNeuron_Persistence_density.tiff iNeuron_Network_time_point_samll.tiff iNeuron_Network_cell_type_small.tiff 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.

Fazit

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.

Referenz

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

Ich habe versucht, scRNA-seq-Daten mithilfe der topologischen Datenanalyse (TDA) zu analysieren.
Ich habe versucht, eine Clusteranalyse von Kunden anhand von Kaufdaten durchzuführen
Ich habe versucht, das Spiel in der J League vorherzusagen (Datenanalyse)
Ich habe versucht, Videos mit der Youtube Data API (Anfänger) zu suchen.
Ich habe versucht, mit pypyodbc schnell Daten von AS / 400 abzurufen
Ich habe versucht, meinen Lieblingssänger (SHISHAMO) mit der Spotify-API zu analysieren
Ich habe versucht, BigQuery-Daten mit Jupyter Lab mit GCP zu visualisieren
[Python] Ich habe versucht, mithilfe der YouTube-Daten-API verschiedene Informationen abzurufen!
Ich habe versucht, mit pypyodbc Preparation 1 schnell Daten von AS / 400 abzurufen
Ich habe versucht, Azure Speech to Text zu verwenden.
Ich habe versucht, YOUTUBE Data API V3 zu verwenden
Ich habe versucht, Faktoren mit Titanic-Daten zu analysieren!
Ich habe versucht, Text mit TensorFlow zu klassifizieren
Ich habe versucht, fMRI-Daten mit Python zu analysieren (Einführung in die Dekodierung von Gehirninformationen)
Ich habe versucht, die Neujahrskarte selbst mit Python zu analysieren
Ich habe Web Scraping versucht, um die Texte zu analysieren.
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, WAV-Dateien mit Pydub zu synthetisieren.
Ich habe versucht, die Hauptkomponenten mit Titanic-Daten zu analysieren!
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Qiita Job Ich habe versucht, den Job zu analysieren
Ich habe DBM mit Pylearn 2 unter Verwendung künstlicher Daten ausprobiert
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich habe versucht, die multiple Regressionsanalyse anhand konkreter Beispiele so einfach wie möglich zu erklären.
Ich habe versucht, eine verdächtige Person mithilfe von Geolonia-Adressdaten schnell zu einem MAP zu machen
Ich habe versucht, parametrisiert zu verwenden
Datenanalyse mit xarray
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
Ich habe versucht, aiomysql zu verwenden
Ich habe versucht, Summpy zu verwenden
Ich fing an zu analysieren
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, Ipython zu verwenden
Ich habe versucht zu debuggen.
Ich habe versucht, PyCaret zu verwenden
Ich habe versucht, Cron zu verwenden
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, doctest zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, jinja2 zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, das Zeitfenster zu verwenden
Ich habe versucht, EKG-Daten mit der K-Shape-Methode zu gruppieren
Ich habe versucht, mit AWS Lambda einen AMI zu erhalten
Ich habe versucht, die Sündenfunktion mit Chainer zu approximieren
Ich habe versucht, mit OpenCV Ann Man zu werden