AccueilIA et apprentissage automatiqueAnalyseur d'expression génique

🧬 Analyseur d'expression génique — ACP en direct

Regardez une véritable analyse en composantes principales (décomposition en valeurs propres de la matrice de covariance) réduire en direct des données simulées d'expression génique à haute dimension, en projetant les échantillons sur les vraies composantes de variance maximale.

IA et apprentissage automatique3DAvancé60 FPS
ai-genomics-expression-pca ↗ Ouvrir en autonome

À propos de l'Analyseur d'expression génique

Les véritables expériences d'expression génique mesurent l'activité de milliers de gènes sur de nombreux échantillons — une matrice bien trop volumineuse pour être examinée directement. L'analyse en composantes principales est l'étape classique de départ de presque tous les pipelines de génomique : elle trouve la poignée de combinaisons linéaires de gènes (« composantes ») qui captent le plus de variance dans les données, afin que les échantillons puissent être tracés en deux ou trois dimensions tout en préservant la structure biologique dominante, telle que des types cellulaires distincts, des sous-types de maladie ou des groupes de traitement.

Cette simulation génère un jeu de données d'expression génique synthétique avec une véritable structure corrélée — un nombre choisi de « programmes d'expression » sous-jacents réels que chaque échantillon active à des degrés variables — puis calcule la véritable matrice de covariance centrée sur les gènes et la diagonalise avec un algorithme des valeurs propres de Jacobi codé de zéro en JavaScript. Les valeurs propres sont triées par magnitude, converties en pourcentage de variance expliquée pour le graphique en éboulis, et les vecteurs propres correspondants sont utilisés pour projeter chaque échantillon sur ses trois premières composantes principales pour le nuage de points 3D en direct. Comme les groupes sous-jacents sont connus par construction, colorer chaque point selon son vrai groupe générateur permet d'observer l'ACP réussir — ou, avec un bruit élevé, commencer à échouer — à séparer la structure réelle du bruit.

Questions fréquentes

Qu'est-ce que l'analyse en composantes principales (ACP) et pourquoi l'utiliser sur des données d'expression génique ?

Les jeux de données d'expression génique mesurent généralement des milliers de gènes sur des dizaines ou des centaines d'échantillons, si bien que chaque échantillon est un point dans un espace de très haute dimension impossible à représenter directement. L'ACP trouve un petit ensemble de nouveaux axes — des combinaisons linéaires des gènes originaux — qui captent autant que possible la variance totale des données, par ordre d'importance. Projeter les échantillons sur les deux ou trois premiers de ces axes (les composantes principales) permet de visualiser la structure dominante des données, comme des groupes d'échantillons partageant des programmes d'expression similaires, tout en écartant les directions qui ne sont essentiellement que du bruit.

Comment la matrice de covariance est-elle calculée et que représente-t-elle ?

Étant donné N échantillons comportant chacun M mesures de gènes, les données sont d'abord centrées en soustrayant l'expression moyenne de chaque gène sur tous les échantillons. La matrice de covariance C est alors la matrice M×M C = (1/(N−1)) XᶜᵀXᶜ, où Xᶜ est la matrice de données centrée N×M. L'entrée C[i][j] mesure comment les gènes i et j varient ensemble entre les échantillons : une grande valeur positive signifie que les deux gènes ont tendance à être régulés à la hausse ou à la baisse ensemble, une grande valeur négative signifie qu'ils évoluent en sens opposés, et une valeur proche de zéro signifie qu'ils varient indépendamment. Les composantes principales de l'ACP sont exactement les vecteurs propres de cette matrice de covariance.

Comment l'algorithme des valeurs propres de Jacobi trouve-t-il les vecteurs propres et les valeurs propres ?

L'algorithme des valeurs propres de Jacobi diagonalise une matrice symétrique réelle en appliquant de manière répétée des rotations qui annulent un élément hors diagonale à la fois. Chaque rotation est choisie avec un angle φ = 0,5·atan2(2a_pq, a_qq − a_pp) de sorte qu'après son application, l'entrée (p,q) devienne exactement nulle, tandis que le produit accumulé de toutes les matrices de rotation converge vers les vecteurs propres et que la diagonale de la matrice transformée converge vers les valeurs propres. Cette simulation exécute des balayages cycliques complets sur chaque paire hors diagonale, en répétant jusqu'à ce que la norme hors diagonale tombe sous une tolérance stricte — il s'agit d'une véritable décomposition numérique en valeurs propres calculée en JavaScript, pas d'une simple recherche ou approximation, et elle converge à la précision machine en quelques dizaines de balayages pour les tailles de matrice utilisées ici.

Que signifie le pourcentage de variance expliquée, et comment lit-on le graphique en éboulis (scree plot) ?

Chaque valeur propre de la matrice de covariance équivaut à la quantité de variance totale capturée par sa composante principale correspondante. Le pourcentage de variance expliquée pour la composante k est simplement la valeur propre k divisée par la somme de toutes les valeurs propres, exprimée en pourcentage. Le graphique en barres en éboulis affiche ces pourcentages classés à partir de PC1 : une chute abrupte après les premières barres signifie que l'essentiel de la structure des données d'expression génique simulées réside dans un sous-espace de faible dimension (cohérent avec un petit nombre de programmes d'expression sous-jacents réels), tandis qu'un déclin lent et plat indiquerait que les données se rapprochent d'un bruit non structuré où aucun petit ensemble de composantes ne capture beaucoup de signal.

Pourquoi les points d'échantillons se regroupent-ils dans l'espace PC1/PC2/PC3 ?

Le jeu de données simulé est généré à partir d'un petit nombre de programmes d'expression génique sous-jacents réels — des vecteurs de charge aléatoires dans l'espace des gènes — et chaque échantillon est construit en activant fortement le programme de son propre groupe plus une petite fuite des autres, puis en ajoutant du bruit par gène. Cela intègre une véritable structure corrélée dans les données brutes plutôt qu'un pur hasard. Comme les composantes principales de l'ACP sont, par construction, les directions de plus grande variance, et que les différences entre groupes créées par les programmes sont la source dominante de variance lorsque le rapport signal/bruit est raisonnable, les 2 à 3 premières composantes s'alignent naturellement sur les axes qui séparent les vrais groupes — ainsi, tracer les échantillons dans l'espace des composantes principales et les colorer selon leur vrai groupe générateur montre visiblement que l'ACP parvient à retrouver cette structure.

Que se passe-t-il si j'augmente le niveau de bruit ou le nombre de programmes réels ?

Augmenter le niveau de bruit ajoute de plus grandes perturbations aléatoires par gène par-dessus le signal du vrai programme de chaque échantillon, ce qui réduit l'écart entre la variance intra-groupe et inter-groupe ; à un niveau de bruit suffisamment élevé, les groupes se brouillent dans l'espace des composantes principales et le graphique en éboulis s'aplatit car aucune direction ne se distingue du niveau de bruit. Augmenter le nombre de programmes sous-jacents réels répartit la même variance de signal totale sur davantage de directions, si bien qu'il faut plus de composantes avant que la variance cumulée expliquée n'approche 100 %, et avec seulement 2 à 3 composantes principales affichées, certains groupes peuvent commencer à se chevaucher une fois que le nombre de programmes réels dépasse le nombre de composantes affichées.

⚙ Sous le capot

Un algorithme des valeurs propres de Jacobi cyclique diagonalise la véritable matrice de covariance centrée d'un jeu de données synthétique et corrélé d'expression génique — les valeurs propres deviennent le pourcentage de variance expliquée, les vecteurs propres deviennent les axes de projection, et les échantillons se retrouvent dans un véritable espace PC1/PC2/PC3.

ACPDécomposition en valeurs propresMatrice de covarianceAlgorithme de JacobiBio-informatique

3D · Moteur de rendu Three.js / WebGL · Cible 60 FPS · fonctionne entièrement côté client, sans installation

Qu'avez-vous trouvé ?

Ajouter des étapes de reproduction (facultatif)