Geometria w NEURONIE Wpiszmy nastepujący kod (plot_cell1.hoc):
Przyklad z The Neuron Book, Chapter 6
load_file("nrngui.hoc") /////// topology ////////
NDEND = 10
create soma, apical, ap[NDEND], oblique[NDEND]
access soma
connect apical(0), soma(1) connect ap[0](0), apical(1) connect oblique[0](0), apical(1) for i=1,NDEND-1 {
connect ap[i](0), ap[i-1](1) connect oblique[i](0), ap[i-1](1) }
/////// geometry ////////
soma { L = 30 diam = 30 } apical { L = 30 diam = 5 } for i=0,NDEND-1 {
ap[i] { L = 15 diam = 2 }
oblique[i] { L = 15+5*i diam = 1 } }
Po wczytaniu do NEURONA i narysowaniu za pomoca Main
Menu/Graph/ Shape plot (i po wybraniu opcji Shape style/Show
diam) zobaczymy:
Aby uzyskać kontrolę nad wyglądem modelu musimy podać specyfikację geometrii 3D za pomocą poleceń pt3dadd().
pt3dadd(x,y,z,d)
Add the 3d location and diameter point at the end of the current pt3d list. Assume that successive
additions increase the arc length monotonically.
When pt3d points exist in a section they are used to
compute diam and L.
Wpiszmy nastepujący kod (plot_cell2.hoc):
load_file("nrngui.hoc") /////// topology ////////
NDEND = 10
create soma, apical, ap[NDEND], oblique[NDEND]
access soma
connect apical(0), soma(1) connect ap[0](0), apical(1) connect oblique[0](0), apical(1) for i=1,NDEND-1 {
connect ap[i](0), ap[i-1](1) connect oblique[i](0), ap[i-1](1) }
/////// geometry ////////
forall pt3dclear() soma {
pt3dadd(0, 0, 0, 30) pt3dadd(30, 0, 0, 30) }
apical {
pt3dadd(30, 0, 0, 5) pt3dadd(60, 0, 0, 5) }
. .
. . .
for i=0,NDEND-1 { ap[i] {
pt3dadd(60+i*15, 0, 0, 2) pt3dadd(60+(i+1)*15, 0, 0, 2) }
oblique[i] {
pt3dadd(60+i*15, 0, 0, 1)
pt3dadd(60+i*15, 15+5*i, 0, 1) }
}
Main Menu/Graph/ Shape plot (i po wybraniu opcji Shape
style/Show diam) zobaczymy:
Możemy też skorzystać ze współrzędnych względnych. Współrzędne absolutne są podane tylko dla somy, dla pozostałych sekcji podajemy współrzedne względne (względem położenia ‘rodzica’)
(plot_cell3.hoc):
load_file("nrngui.hoc") /////// topology ////////NDEND = 10
create soma, apical, ap[NDEND], oblique[NDEND]
access soma
connect apical(0), soma(1) connect ap[0](0), apical(1) connect oblique[0](0), apical(1) for i=1,NDEND-1 {
connect ap[i](0), ap[i-1](1) connect oblique[i](0), ap[i-1](1) }
. .
////// geometry ////////
forall pt3dclear() soma {
pt3dadd(0, 0, 0, 30) pt3dadd(30, 0, 0, 30) }
apical {
pt3dadd(0, 0, 0, 5) pt3dadd(30, 0, 0, 5) }
for i=0,NDEND-1 { ap[i] {
pt3dadd(0, 0, 0, 2) pt3dadd(15, 0, 0, 2) }
oblique[i] {
pt3dadd(0, 0, 0, 1)
pt3dadd(0, 15+5*i, 0, 1) }