neurali:neuron_esempi
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
neurali:neuron_esempi [2015/02/03 17:35] – profpro | neurali: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:// | ||
+ | |||
+ | 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:// | ||
+ | |||
+ | {{ : | ||
+ | * **sezione**: | ||
+ | * **segmento**: | ||
+ | |||
+ | 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] | ||
+ | </ | ||
+ | |||
+ | ==== 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), | ||
+ | connect moltesez[1](0), | ||
+ | </ | ||
+ | < | ||
+ | ------------------------------- | ||
+ | |(1) moltesez[0] | ||
+ | |_____________________________| | ||
+ | </ | ||
+ | |||
+ | ==== 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, | ||
+ | - < | ||
+ | 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, | ||
+ | - < | ||
+ | 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] { | ||
+ | | ||
+ | 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 (cm< | ||
+ | Altre proprietà hanno dei valori puntuali e sono espressi in unità assolute | ||
+ | |||
+ | L' | ||
+ | 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(" | ||
+ | |||
+ | < | ||
+ | tstop = 300 | ||
+ | run() | ||
+ | print provasez1.v | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== GUI ==== | ||
+ | |||
+ | grafici mostrano come cambia un valore nel tempo o nello spazio | ||
+ | |||
+ | |||
+ | |||
+ | Graph > Voltage axis | ||
+ | |||
+ | Tool > RunControl > Init_& | ||
+ | |||
+ | |||
+ | ==== Procedure ==== | ||
+ | |||
+ | < | ||
+ | proc block_sodium() { | ||
+ | provasez2 gnabar_hh = 0 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Oppure | ||
+ | |||
+ | < | ||
+ | proc block_sodium() { | ||
+ | provasez2 gnabar_hh = $1 * 0.25 | ||
+ | } | ||
+ | </ | ||
+ | |||