Python in Complex Networks

mic_1
Ciao a tutti!
Per un esame devo preparare un algoritmo in python in reti complesse. Premetto che non sono esperta di programmazione e mi sto approcciando ora con il linguaggio.

Sono qui ora per chiedervi un consiglio su come approcciarmi... sebbene abbia studiato la teoria delle reti e algoritmi non so come iniziare il programmino:
non capisco se devo partire dalla rete secondo l'argomento prescelto e quindi in base al tipo ipotizzare un certo numero di nodi e di links oppure fare un import dataset come matrice ed effettuare delle elaborazioni di calcolo statistico.

Potreste darmi dei suggerimenti? Grazie mille!!!

Risposte
gugo82
[xdom="gugo82"]E cosa ci fa ciò in Fisica?

Sposto.

Più attenzione, grazie.[/xdom]

mic_1
E' un esame di fisica applicata!!! c'entra eccome!!

axpgn
Ma è un problema "informatico" non "fisico"
Sarebbe come se chiedessi qual è il metodo per risolvere un'equazione di secondo grado nella sezione d Fisica solo perché devi risolvere un problema relativo al moto parabolico ... :roll: ... e poi il crossposting non si fa

mic_1
Ripeto. Mi era stato spostato il post.
E' necessario perchè è un esame interdisciplinate e al momento ho bisogno di chiedere a chi è di fisica applicata come hanno affrontato questo tipo di progetto.

Gli esami sono RETI COMPLESSE e METODI FISICI DELLA BIOLOGIA CON LABORATORIO!
Devo realizzare un unico progetto in python che assembli questi argomenti.
Al momento non sto chiedendo altro che info sul progetto di FISICA APPLICATA per cui l'ho inserito nella sezione di FISICA APPLICATA.

E' un problema FISICO e non informatico, se analizzi attentamente la tematica senza soffermarti agli strumenti da utilizzare ;)

gugo82
@mic_1: Nello OP non c’è scritto nulla di tutto ciò che hai aggiunto dopo, quindi lo staff non poteva indovinare le tue necessità.
Secondo te chiediamo di essere specifici per farvi perdere tempo?

Detto ciò:
[xdom="gugo82"]Sarebbe bastato un PM per spiegare la situazione ad un moderatore e far tornare tutto come era prima.
Non c’era bisogno di aprire un nuovo thread, non c’era bisogno di fare tutto questo baccano, non c’era bisogno di prendertela con altri utenti che ti facevano notare le mancanze del tuo post.

Che ciò non si ripeta.[/xdom]

apatriarca
Il problema mi sembra comunque ancora molto generico. Non è chiaro l'esatto contenuto del corso e quindi l'approccio da applicare nello svolgere il tuo progetto. A seconda dell'oggetto del tuo studio (sia esso fisico o biologico o qualcosa di puramente teorico come una rete casuale) e del tipo di informazioni che vuoi ottenere la risposta alla tua domanda iniziale potrebbe essere molto diversa.

Non si tratta del forum del tuo corso per cui se vuoi ottenere aiuto il modo migliore è quello di fornire il maggior numero di informazioni sul contenuto del corso e su quali sono le richieste del progetto.

mic_1
Provo a spiegarmi un po di più se riesco :-D :oops:

Devo realizzare un progetto in python su reti complesse e quindi fare uno studio e analisi di una rete che possa essere sociale, biologica etc.

Dal momento che devo fare un progetto simile in big data su Metodi Fisici in Biologia, si è pensato di realizzare un unico progetto su una rete biologica che possa essere una INTERAZIONE TRA PROTEINE o SISTEMA IMMUNITARIO etc...

Il mio problema è che non so proprio come iniziare e il professore è irrintracciabile.

Tutto questo dovrebbe servire, mi pare di aver capito, per rilevare ad esempio una cellula cancerogena (uno dei nodi).
( le malattie/disturbi sono ben collegate tra loro e quindi portate a formare una rete.)

Ho trovato qualcosa in python per la bioinformatica ma trattasi di studio del DNA e geni.
Mi pare di capire che possa essere preso in esame per i big data ma nel caso di reti complesse non trovo riscontro.
Nello studio e analisi di una rete vengono prese in considerazione Interazioni tra Proteine, Interazioni tra geni, Sistema Immunitario, Sistema Nervoso.

Dopo tutto questo, avrei bisogno di un consiglio/aiuto perchè non voglio complicarmi la vita ne sbagliare su come gestire il tutto.

Spero di essere riuscita a farmi capire
Grazie a tutti per l'attenzione!

PS: Tra gli argomenti di Reti Complesse c'è la Teoria dei grafi, grafo diretto e non, Markov, Scale-free, grafi a Random, le varie distribuzioni di Bernoulli, Poisson, Gauss a seconda del tipo di rete... etc
Tra gli argom di Metodi Fisici in Biologia c'è la Biologia Cellulare, Biologia Molecolare, Entropia, Cinetica etc

vict85
Secondo me stai ragionando sull'aspetto meno importante di tutto il progetto: il linguaggio di programmazione che userai. Python potrebbe avere delle librerie utili ma non serve a nulla finché non hai le idee chiare su cosa tu debba implementare.

Il tuo messaggio suona un po' come se tu dovessi scrivere un romanzo in italiano. Che potrebbe essere d'amore o di avventura. Ma sicuramente avrà un lieto fine. E che hai trovato romanzi di formazione in italiano, che potrebbero essere simili a quello che vuoi ma non esattamente. Capisci che non è facile aiutarti.

Ora, supponiamo che tu abbia un grafo di cellule e che una di questa sia cancerogena. Che cellule fanno parte del grafo? Che cosa vuol dire che due cellule sono connesse? La relazione è statica o dinamica? Si tratta di una simulazione? Come le cellule interagiscono l'una con l'altra? Cosa distingue una cellula cancerogena da una che non lo è nel tuo grafo? Che tipo di dati possiedi (insomma il tuo studio si basa su dati reali ricevuti da qualche fonte)? Questi dati vanno elaborati in che modo per essere utilizzabili dal tuo algoritmo? In che modo devi presentare i dati?
Insomma, prima di incominciare a usare python devi eliminare tutti i "forse" e i "dovrebbe essere". A quel punto, e solo allora, sarà opportuno chiedersi "Quel'è il miglior modo per applicare l'algoritmo A sui dati B per produrre C utilizzando python?" oppure "Che struttura dati di python devo usare per gestire questo tipo di dati?".

Quindi il mio suggerimento è prima di tutto capire che cosa devi fare, che dati possiedi, che risultato ti aspetti di dover ottenere e che metodo di risoluzione è necessario per produrre questo risultato.

mic_1
Ma infatti hanno spostato il post nella sezione di informatica ma non mi pare aver chiesto info legate a python o all'installazione. Ho già installato tutto, librerie comprese ma è proprio nell'analisi il mio problema.

Ho studiato gli argomenti, ho tutti gli strumenti ma non so come iniziare :-D :P :oops:

Per questo avevo aperto in FISICA APPLICATA, perchè chi ha la medesima problematica da affrontare o ha in passato affrontato può darmi indicazioni utili.

IO non possiedo alcun dato!!!!
Devo semplicemente applicare la teoria... MA... nella teo dei grafi viene espressamente indicato tra i diversi tipi di grafo quale è usato per un argomento e quale per un altro... come ad esempio nella teoria viene spiegato il PAGERANK di Google e il tipo di grafo dei Social Networks differente dal grafo per una interazione tra proteine.

Cmqsia ogni grafo ha un comportam/studio differente e... cmq un certo numero di nodi e links (come li devo considerare? cerco un esempio reale sul web e lo analizzo? prendo una immagine e da li (se si può fare) estrapolare le info di n. nodi e m. links? o da un dataset scaricato dal web (perchè esempi di file .csv si trovano pubblicamente) ?

Sto prendendo spunto da Cytoscape: software che permette lo studio di una rete biologica.
Per calcolare poi il coeff di clustering, il diametro dei nodi, distribuzione di connettività, shortest path, Markov, l'entropia......etc.. devo cmq partire da un grafo.

Ora, una volta scelto l'argomento a cui è associato un determinato tipo di grafo...cosa devo fare? Caricare un grafico come immagine e da li fare uno studio approfondito oppure caricare i dati da un file o vado per ipotesi?

Premetto che io non ho nulla a livello pratico.

GRAZIE!

vict85
Un grafo è solo una rappresentazione formale di un insieme di relazioni che intercorrono tra gli elementi di un qualche insieme.

Per esempio, in NDS la rete stradale è rappresentata come un grafo orientato i cui vertici sono i segmenti di strada (con una direzione) e gli archi sono le possibili connessioni tra quel segmento e gli altri segmenti "attigui"[nota]Si, lo so, è un po' l'inverso di quello che uno farebbe intuitivamente.[/nota]. Il costo di un arco è il costo di percorrere il segmento e poi entrare nell'altro. Ma la rete stradale e il problema di trovare il miglior percorso tra due segmenti è un problema che nasce ben prima che le persone abbiano sentito il bisogno di costruire una mappa digitale della rete stradale. Nota inoltre che il problema di trovare il percorso minimo (e i problemi connessi) non è un problema "del grafo di una rete stradale" ma può essere posto su ogni grafo.

Suppongo tra l'altro che il termine rete biologica significhi qualcosa come "un grafo che descrive relazioni biologiche", quindi non penso che abbiano poi nulla di così speciale da richiedere implementazioni diverse (seppur i problemi su tali grafi possano essere meno comuni in altri campi).

Sinceramente mi sfugge la relazione tra grafo e immagine (un immagine è una matrice rettangolare i cui elementi sono "colori").

Prima di pensare a come caricare i dati dovresti ragionare sul determinare un insieme di elementi in relazioni tra di loro e un problema su tale insieme che può essere espresso usando la terminologia della teoria dei grafi, Senza questi due elementi non c'è nulla che tu possa risolvere usando un computer o su cui puoi avere supporto.

Se il problema è che tu non sai da dove partire a scegliere questo insieme e questo problema, allora ti invito a pensare a quale parte del corso ti è piaciuta di più e che vorresti approfondire.

mic_1
Ti ringrazio per la risposta ma forse non ci siamo capiti.
Non ti sto chiedendo di spiegarmi la teoria dei grafi.

Ora ipotizzando un sistema biologico che ha uno specifico grafo differente dalla rete stradale, io devo partire da un certo numero di nodi e di links/edge.

Queste info le ipotizzo io??? Le prendo da una immagine di un grafo scaricato dal web? o da un file sempre scaricato dal web???

Su cytoscape ad esempio ci sono immagini di grafi a cui è presente un nome per ogni nodo.
Considerato che ci sono grafi con dei nodi "HUB" che sono quelli con grado più alto a cui sono connessi altri nodi di grado inferiore.

Anche qui non ti sto chiedendo quale grafo usare per un det argomento ma solo come procedere.

Ne approfitto per chiederti una info pratica, di procedura informatica:
Una volta inizializzate le variabili devo associare un valore ai nodi? li ipotizzo un numero infinito? oppure assegno un valore di 1745 nodi?
Una rete non ha una fine... penso... ne ipotizzo io un numero?

oppure devo precedere inversamente realizzando io stessa la grafica del Grafo preso in esame per quel determinato argomento oltre ai calcolo delle varie proprietà di una rete? Magari con una interfaccia grafica che visualizzi i diversi grafici?

Grazie

mic_1
Ho trovato tra le primissime pagine del materiale di studio questo (ovviamente non lo avevo preso in considerazione sbadatamente):

Esame finale
Elaborato (report con dati, algoritmi, riferimenti):
- compilativo (es. commento ad articoli)
- progetto originale (es. analisi e misure su network
empirici, ricostruzione di network da dati reali, modelli
dinamici su network)
Da soli o IN GRUPPO
(in python ed in ambito biologico)


Io sto chiedendo aiuto a voi. Mi potete aiutare a capire come procedere????
Ho provato a contattare il prof ma nulla.
Il progetto si può fare anche in gruppo ma ahimè non ho trovato nessuno per cui me la devo cavare da solo.
Voi potete darmi due dritte su come muovermi? Chiedo tanto?

Grazie mille

apatriarca
"mic_1":
Queste info le ipotizzo io??? Le prendo da una immagine di un grafo scaricato dal web? o da un file sempre scaricato dal web???

Su cytoscape ad esempio ci sono immagini di grafi a cui è presente un nome per ogni nodo.
Considerato che ci sono grafi con dei nodi "HUB" che sono quelli con grado più alto a cui sono connessi altri nodi di grado inferiore.

Anche qui non ti sto chiedendo quale grafo usare per un det argomento ma solo come procedere.

Cercare di ottenere i dati dall'immagine potrebbe essere difficile. È di solito più semplice partire da un qualche formato di più semplice lettura (qualcosa di testuale e possibilmente standard). Suppongo tu possa esportare i tuoi grafi da Cytoscape, ma esistono dati online che puoi liberamente scaricare. Guardando sul sito di Cytoscape sembra che IMEx possa essere un buon punto di partenza per scaricare dei dati. In questo caso caricheresti un grafo già esistente e basato su dati reali e faresti probabilmente delle analisi su di essi. Un'alternativa è quella di fare analisi su grafi generati casualmente seguendo una qualche distribuzione. In questo caso il numero di nodi è probabilmente deciso a priori e dovrai scrivere un algoritmo che genera questa rete.

Una volta importata o generata la tua rete avrai bisogno di decidere che cosa vuoi farci. Puoi implementare qualche algoritmo su di essa per ottenere un qualche tipo di informazione dal tuo grafo (c'è l'imbarazzo della scelta..) oppure simulare un qualche tipo di modello dinamico (in questo caso il grafo suppongo possa essere un po' più piccolo).

C'è un qualche algoritmo o articolo o argomento che ti è piaciuto particolarmente e che potresti voler approfondire nel tuo progetto?

mic_1
Grazie per le dritte!

Allora proverò ad usare i file usati da cytoscape. Ho cmq ricontattaro il prof nella speranza mi risponda. :roll:

Secondo te, siccome vorrei fare un unico progetto per i due esami, e nell'esame di Biologia è richiesta la gestione dei Big Data, posso integrarlo nello studio delle reti complesse?

Ho idea di Big Data con SQL su Database in ambito gestionale :roll: ma con Python e in più le reti... Boh... Mettere insieme tutte queste informazioni... Diciamo che non l'ho mai fatto prima :-D :?
Bisogna in tal caso considerare più tipologie diverse di reti connesse tra loro?

Secondo te si può fare? Grazie!!!

apatriarca
Non credo definirei un database in ambito gestionale "Big Data". Ci possono essere certamente molti dati, ma se è qualcosa che puoi gestire su una singola Workstation (diciamo qualcosa tipo quella su cui sto lavorando adesso - 6 core Xeon con 92GB di RAM) l'uso del termine Big Data è solo marketing e in realtà si sta facendo la stessa cosa che si è fatta negli ultimi 30 anni.

Alcuni Big Data sono in realtà strutturati come reti. Un esempio potrebbero essere social network come Facebook o Twitter. Ma nel campo biologico è per esempio disponibile da qualche parte la rete di neuroni di un ratto (https://people.maths.ox.ac.uk/tillmann/ ... esLevi.pdf). Non ti saprei dire come ottenere quei dati ma a mio parere potrebbe essere un esempio che rientri in entrambi i corsi.

mic_1
ok. grazie mille!!! e Perdona la mia ignoranza..
ora provo a dare un'occhiata al tuo link :)

mic_1
"apatriarca":
Non credo definirei un database in ambito gestionale "Big Data". Ci possono essere certamente molti dati, ma se è qualcosa che puoi gestire su una singola Workstation (diciamo qualcosa tipo quella su cui sto lavorando adesso - 6 core Xeon con 92GB di RAM) l'uso del termine Big Data è solo marketing e in realtà si sta facendo la stessa cosa che si è fatta negli ultimi 30 anni.

Alcuni Big Data sono in realtà strutturati come reti. Un esempio potrebbero essere social network come Facebook o Twitter. Ma nel campo biologico è per esempio disponibile da qualche parte la rete di neuroni di un ratto (https://people.maths.ox.ac.uk/tillmann/ ... esLevi.pdf). Non ti saprei dire come ottenere quei dati ma a mio parere potrebbe essere un esempio che rientri in entrambi i corsi.



Ho contattato uno dei due prof per chiedere info sul file di dati reali... sperando risponda.. :P

Intanto vi ringrazio per i vostri consigli guida.
Appena avrò bisogno di qualche altra dritta provvederò ad aprire una nuova discussione.
Grazie :lol:
.
.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.