Skip to content

Heatmap in Matplotlib pentru Expresie Genica

DodaTech Updated 2025-01-15 2 min read

You will learn how to create a clustered heatmap for gene expression data using Matplotlib.

The Problem

Vizualizarea matricelor de expresie genica necesita un heatmap care sa evidentieze pattern-uri de co-expresie si sa grupeze genele si probele similare. Un heatmap neclustered sau scalat gresit nu dezvaluie structura biologica.

The Wrong Way

Afisarea matricei brute fara scalare sau clustering:

import matplotlib.pyplot as plt
import numpy as np
data = np.random.rand(50, 20)  # 50 gene x 20 probe
plt.imshow(data, cmap='viridis', aspect='auto')
plt.colorbar()
plt.show()

Ce se intampla: Valorile brute nu dezvaluie pattern-uri, iar absenta clustering-ului face graficul greu de interpretat.

The Right Way

Scaleaza datele si aplica clustering ierarhic:

from scipy.cluster.hierarchy import linkage, leaves_list
data = np.random.rand(50, 20)

# Clustering ierarhic
row_link = linkage(data, method='average', metric='euclidean')
col_link = linkage(data.T, method='average', metric='euclidean')
row_order = leaves_list(row_link)
col_order = leaves_list(col_link)

clustered_data = data[row_order][:, col_order]

plt.figure(figsize=(10, 12))
plt.imshow(clustered_data, cmap='RdBu_r', aspect='auto',
           vmin=-2, vmax=2)
plt.colorbar(label='Z-score')
plt.xlabel('Probe')
plt.ylabel('Gene')
plt.title('Heatmap Expresie Genica - Clustering Ierarhic')
plt.tight_layout()
plt.show()

Rezultat asteptat: Un heatmap cu gene si probe grupate, dezvaluind module de co-expresie si clustere de probe similare.

Step-by-Step Fix

1. Scaleaza datele (Z-score)

from scipy.stats import zscore
data_z = zscore(data, axis=1)  # Z-score pe gene

2. Aplica clustering ierarhic

from scipy.cluster.hierarchy import linkage, dendrogram
from scipy.spatial.distance import pdist

row_link = linkage(pdist(data_z, metric='correlation'),
                   method='average')

3. Vizualizeaza cu dendrograma

from scipy.cluster.hierarchy import dendrogram
fig = plt.figure(figsize=(12, 10))
ax_heat = fig.add_axes([0.3, 0.1, 0.6, 0.6])
ax_row = fig.add_axes([0.3, 0.71, 0.6, 0.2])
ax_col = fig.add_axes([0.1, 0.1, 0.2, 0.6])

dendrogram(row_link, ax=ax_row, orientation='top', no_labels=True)
dendrogram(col_link, ax=ax_col, orientation='left', no_labels=True)
ax_heat.imshow(clustered_data, cmap='RdBu_r', aspect='auto')

Prevention Tips

  • Scaleaza intotdeauna datele (Z-score) inainte de clustering si vizualizare
  • Alege metrica de distantă potrivita: corelatia Pearson pentru date biologice
  • Foloseste o colormapa divergenta (RdBu, RdYlBu) pentru date centrate
  • Adauga dendrogramele pentru a arata structura ierarhica
  • Limiteaza numarul de gene afisate la 50-200 pentru lizibilitate

Common Mistakes

  1. Nu scaleaza datele -- genele cu expresie ridicata domina vizualizarea
  2. Nu clusterizeaza -- pattern-urile de co-expresie raman ascunse
  3. Foloseste colormapa secventiala in loc de divergenta -- centreaza gresit datele
  4. Aspect prea mic sau prea mare -- raportul de aspect nepotrivit
  5. Ignora barele de culoare -- scala valorilor este necunoscuta

Practice Exercise

Creaza un heatmap clustering pentru date de expresie genica (100 gene x 30 probe). Aplica Z-score, clustering ierarhic si adauga dendrogramele corespunzatoare.

FAQ

### Ce este un heatmap in bioinformatica?

O reprezentare grafica a unei matrice de expresie unde culorile indica nivelul de expresie, iar clustering-ul dezvaluie gene co-exprimate.

Ce metrica de distantia sa folosesc?

Corelatia Pearson (1 - r) este recomandata pentru date de expresie genica, deoarece captureaza relatii liniare intre gene.

Ce este Z-score?

Z-score-ul standardizeaza fiecare gena la medie 0 si abatere standard 1, facand genele comparabile indiferent de nivelul absolut de expresie.

Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. DodaTech tools integrate seamlessly with Python Data Science workflows for enhanced productivity and security.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro