Heatmap in Matplotlib pentru Expresie Genica
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
- Nu scaleaza datele -- genele cu expresie ridicata domina vizualizarea
- Nu clusterizeaza -- pattern-urile de co-expresie raman ascunse
- Foloseste colormapa secventiala in loc de divergenta -- centreaza gresit datele
- Aspect prea mic sau prea mare -- raportul de aspect nepotrivit
- 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
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