Skip to content

FLaTNNBio/GRN-Hypergraph-Classifier

Repository files navigation

Framework per l'Inferenza di Gene Regulatory Networks (GRN)

Cos'è questo progetto?

Questo progetto cerca di capire chi controlla chi tra i geni. I geni sono come persone in un'azienda: alcuni (chiamati Fattori di Trascrizione o TF) danno ordini, altri (i geni target) ricevono ordini. Il nostro obiettivo è costruire una mappa di chi dà ordini a chi.

Come funziona?

Il framework è diviso in 7 fasi principali:

FASE 0: Caricamento Dati

  • Carichiamo i dati dal dataset DREAM5
  • Prendiamo le misure di quanto ogni gene è "attivo" (espressione genica)
  • Carichiamo i nomi di tutti i geni e quali sono i "capi" (TF)
  • Carichiamo le relazioni vere che già conosciamo per fare controlli

FASE 1: Preparazione Dati

  • Calcoliamo statistiche utili per ogni gene:
    • Varianza: quanto cambia l'attività del gene
    • Skewness: se il gene è sempre attivo o sempre spento
    • Autocorrelazione: se l'attività è costante nel tempo
  • Normalizziamo tutto per mettere i dati sulla stessa scala
  • Aggiungiamo un'etichetta che dice se un gene è un "capo" (TF) o no

FASE 2: Costruzione del Grafo

  • Costruiamo una rete che collega i geni simili
  • Per ogni gene, troviamo i 5 geni che si comportano in modo più simile
  • Usiamo due misure di somiglianza:
    • Correlazione di Pearson: se i geni si accendono/spengono insieme
    • Similarità Coseno: se i pattern di attività sono simili
  • Calcoliamo quanto ogni gene è "centrale" nella rete

FASE 3: Modello (ResidualGAT)

  • Usiamo una rete neurale speciale che sa lavorare con grafi
  • Il modello GAT (Graph Attention Network) guarda i geni vicini e decide quali sono più importanti
  • Ha due livelli per imparare pattern semplici e complessi
  • Produce una "carta d'identità" numerica per ogni gene (embedding)

FASE 4: Predittore di Relazioni (PairwiseMLPDecoder)

  • Prende due "carte d'identità" (un TF e un gene normale)
  • Le combina e predice se il TF controlla quel gene
  • È una rete neurale semplice a 3 livelli

FASE 5: Esempi "difficili"

  • Per insegnare meglio al modello, gli diamo esempi difficili
  • Trova coppie TF-gene che NON sono collegate ma che potrebbero sembrarlo
  • Questo aiuta il modello a non confondersi

FASE 6: Allenamento

  • Il modello impara dai dati per 100 epoche
  • Ad ogni epoch il modello fa predizioni e vede dove sbaglia
  • Corregge i suoi errori e migliora le prestazioni
  • Usiamo una "focal loss function" custom che si concentra sugli esempi difficili

FASE 7: Creazione della Mappa Finale

  • Il modello crea gli "iperarchi" - gruppi di geni controllati dallo stesso TF
  • Per ogni TF, trova tutti i geni che controlla
  • Calcola un punteggio di fiducia per ogni predizione

Cosa Produce?

Il risultato finale sono iperarchi:

  • Ogni iperarco è un gruppo con 1 TF (il capo) e diversi geni (i subordinati)
  • Esempio: {TF_A, Gene1, Gene2, Gene3} significa che TF_A controlla Gene1, Gene2 e Gene3

File Principali

  • enhaced_Hygrn_model.py: Contiene tutto il codice del framework
  • test_Hygrn_model.ipynb: Notebook per testare il modello
  • Cartella Dati/: Contiene tutti i dataset necessari

PROBLEMI

Problema (1): Il framework lavora creando in realtà grafi normali da cui poi deterministicamente si estraggono gruppi (iperarchi).

Problema (2) Hard Negative Sampling troppo lento: Per ogni TF, calcola punteggi per TUTTI i geni

Problema (3) Il decoder usa solo una rete neurale semplice che potrebbe non catturare interazioni complesse tra TF e geni.

Problema (4) Le metriche valutano solo coppie TF-gene, non la qualità degli iperarchi.

Possibili miglioramenti

  1. Vera gestione di ipergrafi: Usare librerie specializzate come DHG
  2. Preprocessing avanzato: Rimuovere outliers e geni con bassa varianza
  3. Learning rate scheduling: Adattare la velocità di apprendimento
  4. Ensemble methods: Combinare più modelli per risultati migliori

About

Framework that allows you to perform GRN inference using hypergraphs as a data structure

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published