User Tools

Site Tools


neurali:neuron_esempi

Esempi d'uso di Neuron

Approfondimento sulle 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

  • 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

  1. pas (passive channel)
    1. aggiungendo pas, si aggiungono due nuove proprietà (e_pas,g_pas)
    2. provasez2 insert pas        // utile nei dendriti
      provasez2.g_pas = .0001667
      provasez2.e_pas = -60.0
  2. hh (Hodgkin-Huxley channels)
    1. 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)
    2. 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
}
neurali/neuron_esempi.txt · Last modified: 2020/06/08 22:20 by 127.0.0.1