====== Esempi d'uso di Neuron ====== Approfondimento sulle [[http://it.wikipedia.org/wiki/Linea_di_trasmissione|linee di trasmissione]] Anche se la lunghezza di un assone è abbastanza piccola (100 um), i segnali variano molto rapidamente e la lunghezza della linea che viene percorsa non è trascurabile (non si può usare la teoria dei circuiti a costanti concentrate) http://en.wikipedia.org/wiki/Cable_theory {{ :neurali:neurone.png?nolink |}} * **sezione**: è un elemento cilindrico che possiede delle proprietà fisiche (diametro, lunghezza, capacità, resistenza) e che può essere diviso in //segmenti//. Le sezioni possono essere collegate tra loro, ad esempio: nella precedente immagine una sezione costituisce il soma di un neurone, un'altra sezione costituisce un assone di un neurone, un'altra un dendrite. * **segmento**: una sezione composta da un solo segmento, sarebbe simulata come se fosse concentrata in un punto, quindi segmentare una sezione permette di eseguire dei calcoli in modo più accurato. Il modello iniziale si realizza usando solo sezioni. La suddivisione in segmenti può essere fatta dopo, **in modo indipendente** dal modello. una sezione (cilindro) ha delle proprietà * nseg = quante segmenti la compongono * diam = diametro * L = lunghezza * C = capacità membrana per unità di superficie * Ra = resistenza assiale * v = potenziale membrana cellulare, voltage Si possono aggiungere nuove proprietà e meccanismi, usando linguaggio NMODL (model description language) ===== Esempi ===== Per aprire la finestra nrngui Per uscire quit() ==== Creare più sezioni (sinonimo di cilindri) ==== La sintassi e i tipi di dato ricordano il C++ create provasez1 create provasez2 provasez1.L = 18.8 print prvasez1.L create moltesez[2] // come in ling. C ==== Collegare le sezioni ==== Il collegamento avviene in certi punti della sezione. Si specifica la percentuale della lunghezza tra parentesi tonde (0.0, ..., 1.0) connect moltesez[0](0), provasez1(0) connect moltesez[1](0), provasez1(1) ------------------------------- ----------------- |(1) moltesez[0] (0)---(0) provasez1 (1) |_____________________________| |_______________| ==== Definire una sezione (un cilindro) predefinita ==== In questo modo la sezione non va più specificata per nome (è sottintesa) access provasez2 print L print provasez2.L provasez1 psection() forall psection ==== meccanismi delle membrane ==== - **pas (passive channel)** - aggiungendo pas, si aggiungono due nuove proprietà (e_pas,g_pas) - provasez2 insert pas // utile nei dendriti provasez2.g_pas = .0001667 provasez2.e_pas = -60.0 - **hh (Hodgkin-Huxley channels)** - aggiungendo hh, si aggiungono sei nuove proprietà (gnabar_hh,gkbar_hh,gl_hh,ena,ek,el_hh) e sei nuove variabili di stato (m_hh,h_hh,n_hh,ina,ik) - provasez2 insert hh // utile nel soma provasez2.gnabar_hh=0.25 provasez2.gl_hh = .0001667 provasez2.el_hh = -60.0 ==== Loop ==== Si può automatizzare molto codice usando un for for i = 0, N-1 moltesez[i] { insert pas g_pas = .0001667 e_pas = -60.0 } ==== Point processes ==== Alcune proprietà sono distribuite uniformemente sulla sezione (sul cilindro) con unità di misura per unità di superficie (cm2). Altre proprietà hanno dei valori puntuali e sono espressi in unità assolute L'elaborazione per punto prende in considerazione proprietà assolute Questo esempio inserisce nel mezzo della sezione (50% della lunghezza del cilindro) provasez1 objectvar provastimolo provasez1 provastimolo = new IClamp(0.5) IClamp, VClamp e ExpSyn sono tipi puntuali predefiniti, Anche IClamp ha delle proprietà: del, dur, amp (ritardo, durata e ampiezza)(espresso in ms e mA) provasez1 provastimolo.del = 100 provasez1 provastimolo.dur = 100 provasez1 provastimolo.amp = 0.1 ==== Eseguire una simulazione ==== si possono usare le istruzioni in uno script con estensione .hoc. La durata sarà di 300 ms. Per eseguire uno script nrngui myfile.hoc per windows, per assicurare di avere Main Menu aperto aggiungendo PRIMA load_file("nrngui.hoc") tstop = 300 run() print provasez1.v ==== GUI ==== grafici mostrano come cambia un valore nel tempo o nello spazio Graph > Voltage axis Tool > RunControl > Init_&_Run ==== Procedure ==== proc block_sodium() { provasez2 gnabar_hh = 0 } Oppure proc block_sodium() { provasez2 gnabar_hh = $1 * 0.25 }