User Tools

Site Tools


neurali:neuron_esempi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
neurali:neuron_esempi [2015/02/03 17:35] profproneurali:neuron_esempi [2020/06/08 22:20] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== 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++
 +
 +<code>
 +create provasez1
 +create provasez2
 +provasez1.L = 18.8
 +print prvasez1.L
 +create moltesez[2]   // come in ling. C
 +</code>
 +
 +==== Collegare le sezioni ====
 +
 +Il collegamento avviene in certi punti della sezione.
 +
 +Si specifica la percentuale della lunghezza tra parentesi tonde (0.0, ..., 1.0) 
 +
 +<code>
 +connect moltesez[0](0), provasez1(0)
 +connect moltesez[1](0), provasez1(1)
 +</code>
 +<code>
 +-------------------------------   -----------------
 +|(1)    moltesez[0]         (0)---(0) provasez1 (1) 
 +|_____________________________|   |_______________|
 +</code>
 +
 +==== Definire una sezione (un cilindro) predefinita ====
 +
 +In questo modo la sezione non va più specificata per nome (è sottintesa)
 +
 +<code>
 +access provasez2 
 +print L
 +print provasez2.L
 +provasez1 psection()
 +forall psection
 +</code>
 +
 +==== meccanismi delle membrane ====
 +
 +  - **pas (passive channel)**
 +    - aggiungendo pas, si aggiungono due nuove proprietà (e_pas,g_pas)
 +    - <code>
 +provasez2 insert pas        // utile nei dendriti
 +provasez2.g_pas = .0001667
 +provasez2.e_pas = -60.0
 +</code>
 +  - **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)
 +    - <code>
 +provasez2 insert hh         // utile nel soma
 +provasez2.gnabar_hh=0.25
 +provasez2.gl_hh = .0001667
 +provasez2.el_hh = -60.0
 +</code>
 +
 +==== Loop ====
 +Si può automatizzare molto codice usando un for
 +<code>
 +for i = 0, N-1 moltesez[i] {
 +   insert pas
 +   g_pas = .0001667
 +   e_pas = -60.0
 +}
 +</code>
 +==== Point processes ====
 +
 +Alcune proprietà sono distribuite uniformemente sulla sezione (sul cilindro)
 +con unità di misura per unità di superficie (cm<sup>2</sup>). 
 +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)
 +
 +<code>
 +provasez1 objectvar provastimolo
 +provasez1 provastimolo = new IClamp(0.5)
 +</code>
 +
 +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)
 +<code>
 +provasez1 provastimolo.del = 100
 +provasez1 provastimolo.dur = 100
 +provasez1 provastimolo.amp = 0.1
 +</code>
 +
 +==== 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")
 +
 +<code>
 +tstop = 300
 +run()
 +print provasez1.v
 +</code>
 +
 +
 +==== GUI ====
 +
 +grafici mostrano come cambia un valore nel tempo o nello spazio
 +
 +
 +
 +Graph > Voltage axis
 +
 +Tool > RunControl > Init_&_Run
 +
 +
 +==== Procedure ====
 +
 +<code>
 +proc block_sodium() {
 +    provasez2 gnabar_hh = 0
 +}
 +</code>
 +
 +Oppure
 +
 +<code>
 +proc block_sodium() {
 +    provasez2 gnabar_hh = $1 * 0.25
 +}
 +</code>
 +