ModelDB is moving. Check out our new site at https://modeldb.science. The corresponding page is https://modeldb.science/267018.

Efficient simulation of 3D reaction-diffusion in models of neurons (McDougal et al, 2022)

 Download zip file 
Help downloading and running models
Accession:267018
Validation, visualization, and analysis scripts for NEURON's 3D reaction-diffusion support.
Reference:
1 . McDougal RA, Conte C, Eggleston L, Newton AJH, Galijasevic H (2022) Efficient Simulation of 3D Reaction-Diffusion in Models of Neurons and Networks Front. Neuroinform.
Model Information (Click on a link to find other models with that property)
Model Type:
Brain Region(s)/Organism:
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON; Python;
Model Concept(s): Methods; Reaction-diffusion;
Implementer(s):
import sqlite3
import pandas as pd
from math import pi
import plotnine as p9

with sqlite3.connect("cylinder_convergence.db") as conn:
    data = pd.read_sql("SELECT * FROM data", conn)

true_volume = pi * 5
true_surface_area = pi * 2 * 5 + 2 * pi

data["rel_volume_error"] = 100 * (data["volume"] - true_volume) / true_volume
data["rel_surface_error"] = 100 * (data["area"] - true_surface_area) / true_surface_area

print(data)

for dx in data["dx"].unique():
    my_data = data[data["dx"] == dx]
    (
        p9.ggplot(p9.aes(x="rel_volume_error")) + p9.geom_histogram(my_data, position="identity")
        + p9.ggtitle(f"dx = {dx}")
        + p9.xlab("Relative Volume Error (%)")
    ).save(f"cylinder_convergence_volume_error_{dx}.pdf")

    (
        p9.ggplot(p9.aes(x="rel_surface_error")) + p9.geom_histogram(my_data, position="identity")
        + p9.ggtitle(f"dx = {dx}")
        + p9.xlab("Relative Surface Area Error (%)")
    ).save(f"cylinder_convergence_surface_error_{dx}.pdf")

for dx in data["dx"].unique():
    my_data = data[data["dx"] == dx]
    print(f"At dx={dx}, average % volume error = {my_data['rel_volume_error'].abs().mean()} ± {my_data['rel_volume_error'].abs().std()}")
    print(f"At dx={dx}, average % surface error = {my_data['rel_surface_error'].abs().mean()} ± {my_data['rel_surface_error'].abs().std()}")


Loading data, please wait...