Populate Nerves/Fascicles with Axon Trajectories

The Python interface can be used to automatize the creations of axonal trajectories within nerves/fascicles to execute EM-Neuronal simulations.
For example, let's assume that the user wants to populate a cylindrical fascicle with R=1mm and L=100mm with N=100 axonal trajectories randomly distributed. In order to maintain the 'Model' panel clean, a 'Axonal Trajectories' folder is created as well.
The following code does the job:

import s4l_v1 as s4l
import numpy as np
from s4l_v1 import Vec3

# Parameters definition
R=1   # Radius (mm)
L=100 # Length of the cylinder (mm)
N=100 # Number of axons

## Creates a folder in the Model Panel
folder=s4l.model.CreateGroup('Axon Trajectories')

# Initialization
points=[]; cnt=0

while cnt<N:
	# Creates Randomly Distributed Points in the cross section
	x=2*R*(-0.5+np.random.rand()); 	
	y=2*R*(-0.5+np.random.rand())
	# only the axons within the cylinders are taken 
	if (x*x+y*y<R*R):
                pin=Vec3(x,y,-0.5*L); pend=Vec3(x,y,-0.5*L)
		axon=s4l.model.CreatePolyLine([pin,pend])
		axon.Name='Axon_'+str(cnt)
		folder.Add(axon)
		cnt+=1

The code can be modified to permit arbitrary distributions of fibers within the fascicle entity.