🧬 Genexpressions-Analysator — PCA-Dimensionsreduktion live
Beobachte, wie eine echte Hauptkomponentenanalyse (Eigenzerlegung der Kovarianzmatrix) live hochdimensionale simulierte Genexpressionsdaten reduziert und Proben auf die echten Komponenten höchster Varianz projiziert.
Über den Genexpressions-Analysator
Echte Genexpressionsexperimente messen die Aktivität Tausender Gene über viele Proben hinweg — eine Matrix, die viel zu groß ist, um sie direkt zu betrachten. Die Hauptkomponentenanalyse ist der klassische erste Schritt in fast jeder Genomik-Pipeline: Sie findet die wenigen Linearkombinationen von Genen ("Komponenten"), die die meiste Varianz in den Daten erfassen, sodass Proben in zwei oder drei Dimensionen dargestellt werden können, während die dominante biologische Struktur erhalten bleibt, etwa unterschiedliche Zelltypen, Krankheitssubtypen oder Behandlungsgruppen.
Diese Simulation erzeugt einen synthetischen Genexpressions-Datensatz mit echter korrelierter Struktur — einer gewählten Anzahl echter zugrunde liegender "Expressionsprogramme", die jede Probe in unterschiedlichem Maß aktiviert — und berechnet dann die echte mittelwertzentrierte Kovarianzmatrix über die Gene und diagonalisiert sie mit einem von Grund auf in JavaScript laufenden Jacobi-Eigenwertalgorithmus. Eigenwerte werden nach Größe sortiert, in prozentual erklärte Varianz für das Scree-Diagramm umgewandelt, und die zugehörigen Eigenvektoren werden verwendet, um jede Probe auf ihre obersten drei Hauptkomponenten für das Live-3D-Streudiagramm zu projizieren. Da die zugrunde liegenden Gruppen konstruktionsbedingt bekannt sind, macht es die Einfärbung jedes Punkts nach seiner wahren Erzeugungsgruppe möglich zu beobachten, wie PCA erfolgreich ist — oder bei hohem Rauschen beginnt zu scheitern —, echte Struktur vom Rauschen zu trennen.
Häufig gestellte Fragen
Was ist die Hauptkomponentenanalyse (PCA) und warum wird sie bei Genexpressionsdaten eingesetzt?
Genexpressions-Datensätze messen typischerweise Tausende von Genen über Dutzende oder Hunderte von Proben, sodass jede Probe ein Punkt in einem sehr hochdimensionalen Raum ist, der sich nicht direkt darstellen lässt. PCA findet einen kleinen Satz neuer Achsen — Linearkombinationen der ursprünglichen Gene —, die so viel wie möglich von der Gesamtvarianz der Daten erfassen, geordnet nach Wichtigkeit. Die Projektion der Proben auf die ersten zwei oder drei dieser Achsen (die Hauptkomponenten) erlaubt es, die dominante Struktur in den Daten zu visualisieren, etwa Cluster von Proben mit ähnlichen Expressionsprogrammen, während Richtungen verworfen werden, die größtenteils Rauschen sind.
Wie wird die Kovarianzmatrix berechnet und was stellt sie dar?
Bei N Proben mit jeweils M Genmessungen werden die Daten zunächst mittelwertzentriert, indem die durchschnittliche Expression jedes Gens über alle Proben abgezogen wird. Die Kovarianzmatrix C ist dann die M×M-Matrix C = (1/(N−1)) XᶜᵀXᶜ, wobei Xᶜ die zentrierte N×M-Datenmatrix ist. Eintrag C[i][j] misst, wie Gen i und Gen j gemeinsam über die Proben variieren: ein großer positiver Wert bedeutet, dass beide Gene tendenziell gemeinsam hoch- oder herunterreguliert werden, ein großer negativer Wert bedeutet, dass sie sich in entgegengesetzte Richtungen bewegen, und ein Wert nahe null bedeutet, dass sie unabhängig voneinander variieren. Die Hauptkomponenten der PCA sind genau die Eigenvektoren dieser Kovarianzmatrix.
Wie findet der Jacobi-Eigenwertalgorithmus die Eigenvektoren und Eigenwerte?
Der Jacobi-Eigenwertalgorithmus diagonalisiert eine reelle symmetrische Matrix, indem er wiederholt Rotationen anwendet, die jeweils ein Off-Diagonal-Element auf null setzen. Jede Rotation wird mit dem Winkel φ = 0,5·atan2(2a_pq, a_qq − a_pp) gewählt, sodass nach ihrer Anwendung der Eintrag (p,q) exakt null wird, während das akkumulierte Produkt aller Rotationsmatrizen gegen die Eigenvektoren konvergiert und die Diagonale der transformierten Matrix gegen die Eigenwerte konvergiert. Diese Simulation führt vollständige zyklische Durchläufe über jedes Off-Diagonal-Paar aus und wiederholt dies, bis die Off-Diagonal-Norm eine enge Toleranz unterschreitet — dies ist eine echte, in JavaScript berechnete numerische Eigenzerlegung, kein Nachschlagen oder eine Näherung, und sie konvergiert innerhalb weniger Dutzend Durchläufe auf Maschinenpräzision bei den hier verwendeten Matrixgrößen.
Was bedeutet der prozentuale erklärte Varianzanteil, und wie liest man das Scree-Diagramm?
Jeder Eigenwert der Kovarianzmatrix entspricht der Menge an Gesamtvarianz, die von seiner zugehörigen Hauptkomponente erfasst wird. Der prozentuale erklärte Varianzanteil für Komponente k ist einfach eigenwert_k geteilt durch die Summe aller Eigenwerte, ausgedrückt als Prozentsatz. Das Scree-Diagramm-Balkendiagramm zeigt diese Prozentsätze absteigend von PC1: ein steiler Abfall nach den ersten Balken bedeutet, dass der Großteil der Struktur in den simulierten Genexpressionsdaten in einem niedrigdimensionalen Unterraum liegt (konsistent mit einer kleinen Anzahl echter zugrunde liegender Expressionsprogramme), während ein langsamer, flacher Abfall darauf hindeuten würde, dass die Daten eher unstrukturiertem Rauschen ähneln, bei dem kein kleiner Satz von Komponenten viel Signal erfasst.
Warum clustern sich die Probenpunkte im PC1/PC2/PC3-Raum?
Der simulierte Datensatz wird aus einer kleinen Anzahl echter zugrunde liegender Genexpressionsprogramme erzeugt — zufälliger Ladungsvektoren im Genraum — und jede Probe wird aufgebaut, indem das Programm ihrer eigenen Gruppe stark aktiviert wird, plus eine kleine Menge Übersprechen von den anderen, dann wird Genrauschen hinzugefügt. Dies bäckt echte korrelierte Struktur in die Rohdaten ein, statt purer Zufälligkeit. Da die obersten Komponenten der PCA konstruktionsbedingt die Richtungen der größten Varianz sind und die durch die Programme erzeugten Unterschiede zwischen den Gruppen die dominante Varianzquelle sind, wenn das Signal-Rausch-Verhältnis angemessen ist, richten sich die obersten 2–3 Komponenten natürlich an den Achsen aus, die die echten Gruppen trennen — das Auftragen von Proben im PC-Raum und ihre Einfärbung nach ihrer wahren Erzeugungsgruppe zeigt also sichtbar, dass PCA diese Struktur erfolgreich wiederherstellt.
Was passiert, wenn ich den Rauschpegel oder die Anzahl der echten Programme erhöhe?
Ein höherer Rauschpegel fügt größere zufällige Störungen pro Gen zusätzlich zum wahren Programmsignal jeder Probe hinzu, was den Abstand zwischen Innerhalb-Gruppen- und Zwischen-Gruppen-Varianz verringert; bei ausreichend hohem Rauschen verschwimmen die Cluster im PC-Raum, und das Scree-Diagramm flacht ab, weil sich keine einzelne Richtung vom Rauschgrund abhebt. Eine Erhöhung der Anzahl echter zugrunde liegender Programme verteilt dieselbe Gesamtsignalvarianz auf mehr Richtungen, sodass mehr Komponenten benötigt werden, bevor sich die kumulative erklärte Varianz 100% annähert, und bei nur 2–3 dargestellten PCs können sich manche Gruppen überlappen, sobald die Anzahl der echten Programme die Anzahl der gezeigten Komponenten übersteigt.
Ein zyklischer Jacobi-Eigenwertalgorithmus diagonalisiert die echte mittelwertzentrierte Kovarianzmatrix eines synthetischen, korrelierten Genexpressions-Datensatzes — Eigenwerte werden zu prozentual erklärter Varianz, Eigenvektoren werden zu den Projektionsachsen, und Proben landen im echten PC1/PC2/PC3-Raum.
3D · Three.js / WebGL-Renderer · 60 FPS Ziel · läuft vollständig clientseitig, keine Installation