Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PDE-based morphology #63

Open
wsphillips opened this issue Mar 28, 2023 · 0 comments
Open

PDE-based morphology #63

wsphillips opened this issue Mar 28, 2023 · 0 comments
Labels

Comments

@wsphillips
Copy link
Owner

wsphillips commented Mar 28, 2023

We should support 1-dimensional branched cable models. This boils down to creating a conversion from a CompartmentSystem to PDESystem in ModelingToolkit.jl. We should be able to convert any CompartmentSystem with a cylindrical Geometry to a discretized PDE, given some delta X and boundary conditions.

MulticompartmentSystem is a thin layer over CompartmentSystem that allows connecting compartments together. Combined with the above, it should be enough to get going with branched cable models.

To support these systems we also need:

  • Spatially dependent parameters (e.g. gbar for dendritic channel types may have a gradient as a function of x)
  • Augment synapses and stimuli so that we can target specific locations (e.g. given a cylindrical span of length 50µm, place a synapse/electrode at x = 40µm etc). This could be done by inserting synapse/stimuli terms to specific compartments post discretization or by using a boolean/dirac delta type term to turn them on at a set location.
  • Support for reading in external data (namely SWC files; to be tracked in a separate issue. I have an MWE of this already)

(Some) possible approaches to implementation:

  1. Discretize compartments ourselves. Divide a CompartmentSystem into many individual compartments, apply modifications (e.g. synapses, parameter values, etc) and then broadcast convert.(ODESystem, comps)
  2. Convert from CompartmentSystem to PDESystem and use MethodOfLines.jl to discretize. This is likely more robust but I'm not sure how to setup branched compartments with this approach.

Finally, it will be interesting to see how performant out-of-the-box code generation is compared to existing domain-specific optimizations (e.g. Hines matrix + many examples of problem-specific decomposition strategies for parallelization etc)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant