2013-08-22 18 views
7

Sto usando NetworkX per generare grafici di alcuni dati rumorosi. Mi piacerebbe "ripulire" il grafico rimuovendo i rami spuri e sperando di evitare di reinventare la ruota.Funzioni per l'eliminazione di un grafico NetworkX?

Ad esempio, l'immagine collegata mostra un esempio di grafici, come nodi colorati collegati da linee grigie. Vorrei sfoltire i nodi/i bordi indicati dalle caselle bianche: http://www.broadinstitute.org/~mbray/example_tree.png

In sostanza, i nodi/i bordi da rimuovere sono rami in genere solo pochi nodi (< 3) di lunghezza. Rimuovendoli, spero di avere un albero con un minimo di ramificazione, ma i rami che rimangono sono "opportunamente" lunghi.

Prima di iniziare la creazione del codice per esaminare i sottoalberi per la rimozione, ci sono funzioni NetworkX che possono essere utilizzate per questo scopo?

risposta

0

È possibile utilizzare il punteggio betweenness_centrality dei nodi. Se il nodo con un punteggio di centralità basso è connesso a un nodo con punteggio di centralità notevolmente più alto e presenta 3 spigoli, è possibile rimuovere il nodo di centralità basso. (il resto dei nodi connessi < non sono più collegati al grafico principale.).

Avrete bisogno di sperimentare con la frase "notevolmente più alta".

+0

Mi piace, almeno come inizio. I rami sono di solito abbastanza asimmetrici, quindi trovare una soglia di potatura non dovrebbe essere troppo difficile. Grazie! – braymp

Problemi correlati