🧬 Analizator ekspresji genów — redukcja wymiarowości PCA na żywo
Obserwuj, jak prawdziwa analiza głównych składowych (dekompozycja własna macierzy kowariancji) redukuje na żywo symulowane wielowymiarowe dane ekspresji genów, rzutując próbki na rzeczywiste składowe o największej wariancji.
O Analizatorze ekspresji genów
Prawdziwe eksperymenty ekspresji genów mierzą aktywność tysięcy genów w wielu próbkach — macierz zbyt dużą, by przyjrzeć jej się bezpośrednio. Analiza głównych składowych to klasyczny pierwszy krok niemal w każdym pipeline'ie genomicznym: znajduje garść liniowych kombinacji genów ("składowych"), które przechwytują najwięcej wariancji w danych, dzięki czemu próbki można narysować w dwóch lub trzech wymiarach, wciąż zachowując dominującą strukturę biologiczną, taką jak odrębne typy komórek, podtypy choroby czy grupy leczenia.
Ta symulacja generuje syntetyczny zbiór danych ekspresji genów z prawdziwą skorelowaną strukturą — wybraną liczbą prawdziwych, leżących u podstaw "programów ekspresji", które każda próbka aktywuje w różnym stopniu — a następnie oblicza rzeczywistą, centrowaną średnią macierz kowariancji genów i diagonalizuje ją napisanym od podstaw algorytmem wartości własnych Jacobiego działającym w JavaScript. Wartości własne są sortowane według wielkości, przeliczane na procent wyjaśnionej wariancji dla wykresu osypiska, a odpowiadające im wektory własne służą do rzutowania każdej próbki na jej trzy najważniejsze główne składowe dla wykresu 3D na żywo. Ponieważ prawdziwe grupy są znane z konstrukcji, kolorowanie każdego punktu według jego prawdziwej grupy generującej pozwala obserwować, jak PCA odnosi sukces — lub przy wysokim szumie zaczyna zawodzić — w oddzielaniu prawdziwej struktury od szumu.
Najczęściej zadawane pytania
Czym jest analiza głównych składowych (PCA) i dlaczego stosuje się ją na danych ekspresji genów?
Zbiory danych ekspresji genów zwykle mierzą tysiące genów w kilkudziesięciu lub kilkuset próbkach, więc każda próbka jest punktem w bardzo wielowymiarowej przestrzeni, której nie da się bezpośrednio narysować. PCA znajduje niewielki zestaw nowych osi — liniowych kombinacji oryginalnych genów — które przechwytują jak najwięcej całkowitej wariancji w danych, w kolejności ważności. Rzutowanie próbek na pierwsze dwie lub trzy z tych osi (główne składowe) pozwala zwizualizować dominującą strukturę danych, taką jak skupienia próbek o podobnych programach ekspresji, jednocześnie odrzucając kierunki będące w większości szumem.
Jak oblicza się macierz kowariancji i co ona reprezentuje?
Mając N próbek, każda z M pomiarami genów, dane są najpierw centrowane średnią przez odjęcie średniej ekspresji każdego genu we wszystkich próbkach. Macierz kowariancji C to wtedy macierz M×M dana wzorem C = (1/(N−1)) XᶜᵀXᶜ, gdzie Xᶜ to wycentrowana macierz danych N×M. Wpis C[i][j] mierzy, jak gen i i gen j zmieniają się razem w próbkach: duża wartość dodatnia oznacza, że oba geny mają tendencję do wspólnej regulacji w górę lub w dół, duża wartość ujemna oznacza, że poruszają się w przeciwnych kierunkach, a wartość bliska zeru oznacza, że zmieniają się niezależnie. Główne składowe PCA to dokładnie wektory własne tej macierzy kowariancji.
Jak algorytm wartości własnych Jacobiego znajduje wektory własne i wartości własne?
Algorytm wartości własnych Jacobiego diagonalizuje rzeczywistą macierz symetryczną, wielokrotnie stosując obroty, które zerują jeden element pozadiagonalny na raz. Każdy obrót jest wybierany z kątem φ = 0,5·atan2(2a_pq, a_qq − a_pp), tak aby po jego zastosowaniu wpis (p,q) stał się dokładnie zerem, podczas gdy skumulowany iloczyn wszystkich macierzy obrotu zbiega do wektorów własnych, a przekątna przekształconej macierzy zbiega do wartości własnych. Ta symulacja wykonuje pełne cykliczne przebiegi po każdej parze pozadiagonalnej, powtarzając je, aż norma pozadiagonalna spadnie poniżej ścisłej tolerancji — to prawdziwa numeryczna dekompozycja własna obliczana w JavaScript, a nie tabela ani przybliżenie, i zbiega do precyzji maszynowej w ciągu kilkudziesięciu przebiegów dla rozmiarów macierzy używanych tutaj.
Co oznacza procent wyjaśnionej wariancji i jak odczytać wykres osypiska?
Każda wartość własna macierzy kowariancji równa się ilości całkowitej wariancji przechwyconej przez odpowiadającą jej główną składową. Procent wyjaśnionej wariancji dla składowej k to po prostu wartość_własna_k podzielona przez sumę wszystkich wartości własnych, wyrażona jako procent. Wykres słupkowy osypiska pokazuje te procenty uszeregowane od PC1 w dół: gwałtowny spadek po kilku pierwszych słupkach oznacza, że większość struktury w symulowanych danych ekspresji genów mieści się w podprzestrzeni o niskiej wymiarowości (zgodnie z niewielką liczbą prawdziwych, leżących u podstaw programów ekspresji), podczas gdy powolny, płaski spadek wskazywałby, że dane są bliższe nieustrukturyzowanemu szumowi, gdzie żaden mały zestaw składowych nie przechwytuje wiele sygnału.
Dlaczego punkty próbek grupują się w przestrzeni PC1/PC2/PC3?
Symulowany zbiór danych jest generowany z niewielkiej liczby prawdziwych, leżących u podstaw programów ekspresji genów — losowych wektorów ładunków w przestrzeni genów — a każda próbka jest budowana przez silną aktywację własnego programu grupy plus niewielki wyciek z innych, a następnie dodanie szumu dla każdego genu. To zaszywa prawdziwą skorelowaną strukturę w surowych danych zamiast czystej losowości. Ponieważ główne składowe PCA są z definicji kierunkami największej wariancji, a różnice między grupami tworzone przez programy są dominującym źródłem wariancji, gdy stosunek sygnału do szumu jest rozsądny, górne 2–3 składowe naturalnie wyrównują się z osiami, które oddzielają prawdziwe grupy — więc rysowanie próbek w przestrzeni PC i kolorowanie ich według prawdziwej grupy generującej widocznie pokazuje, że PCA skutecznie odzyskuje tę strukturę.
Co się dzieje, gdy zwiększę poziom szumu lub liczbę prawdziwych programów?
Zwiększenie poziomu szumu dodaje większe losowe zaburzenia dla każdego genu na wierzchu prawdziwego sygnału programu każdej próbki, co zmniejsza lukę między wariancją wewnątrzgrupową a międzygrupową; przy wystarczająco wysokim szumie skupienia w przestrzeni PC zlewają się, a wykres osypiska spłaszcza się, ponieważ żaden pojedynczy kierunek nie wyróżnia się z poziomu szumu. Zwiększenie liczby prawdziwych, leżących u podstaw programów rozprasza tę samą całkowitą wariancję sygnału na więcej kierunków, więc potrzeba więcej składowych, zanim skumulowana wyjaśniona wariancja zbliży się do 100%, a przy tylko 2–3 wykreślonych PC niektóre grupy mogą zacząć się nakładać, gdy liczba prawdziwych programów przekroczy liczbę pokazanych składowych.
Cykliczny algorytm wartości własnych Jacobiego diagonalizuje rzeczywistą, centrowaną średnią macierz kowariancji syntetycznego, skorelowanego zbioru danych ekspresji genów — wartości własne stają się procentem wyjaśnionej wariancji, wektory własne stają się osiami rzutowania, a próbki lądują w rzeczywistej przestrzeni PC1/PC2/PC3.
3D · silnik Three.js / WebGL · cel 60 FPS · działa w pełni po stronie klienta, bez instalacji