Git Product home page Git Product logo

sg-s / xolotl Goto Github PK

View Code? Open in Web Editor NEW
43.0 7.0 8.0 21.13 MB

A MATLAB neuron simulator. Very fast (written in C++). Flexible (fully object oriented). Immediate (live manipulation in MATLAB). Comes with a powerful parameter optimizer. Get started ➡️

Home Page: https://go.brandeis.edu/xolotl

License: GNU General Public License v3.0

C++ 67.02% Shell 0.07% MATLAB 31.37% Python 1.50% Objective-C 0.03%
neuron simulation conductance-based-neuron hodgkin-huxley ion-channel neuron-simulator matlab matlab-neuron-simulator

xolotl's Introduction

xolotl: a fast and flexible neuronal simulator

Documentation Status View xolotl on File Exchange

xolotl is a fast single-compartment and multi-compartment simulator written in C++ with a MATLAB interface that you'll actually enjoy using.

Why use xolotl? This is why:


xolotl is FAST

xolotl is written in C++, and it's fast. In our testing, it's more than 3 times faster than NEURON for single compartment neurons.


xolotl is easy to use

Want to set up a Hodgkin-Huxley model, inject current, integrate it and plot the voltage trace? This is all you need:

x = xolotl;
x.add('compartment', 'HH','A', 0.01);
x.HH.add('liu/NaV', 'gbar', 1000);
x.HH.add('liu/Kd', 'gbar', 300);
x.HH.add('Leak', 'gbar', 1);
x.I_ext = .2;
x.plot;

xolotl has documentation

Unlike certain widely used NEURON simulators that shall remain nameless, xolotl has documentation that actually... exists.

This is what it looks like:


xolotl is fully programmable

xolotl is designed to be used from within MATLAB. It gives you the best of both worlds: the high performance of C++ compiled code with the rich power of all the toolboxes MATLAB has to offer. You can:

  • write functions that pass models as arguments
  • optimize parameters of neuron models using the Global Optimization Toolbox
  • run simulations in parallel across multiple computers
  • have a single script to run the simulation and analyze results

Hooked? Get started here.

Where do I get this?

Click here to download, and click on the downloaded file to install.

How do I cite this?

We've published a technology report in Frontiers in Neuroinformatics.

@ARTICLE{10.3389/fninf.2018.00087,
AUTHOR={Gorur-Shandilya, Srinivas and Hoyland, Alec and Marder, Eve},   
TITLE={Xolotl: An Intuitive and Approachable Neuron and Network Simulator for Research and Teaching},      
JOURNAL={Frontiers in Neuroinformatics},      
VOLUME={12},      
PAGES={87},     
YEAR={2018},      
URL={https://www.frontiersin.org/article/10.3389/fninf.2018.00087},       
DOI={10.3389/fninf.2018.00087},      
ISSN={1662-5196},   
}

Papers and projects that use xolotl

  1. Regulation of Eag by Ca2+/calmodulin controls presynaptic excitability in Drosophila
  2. Homeostatic plasticity rules that compensate for cell size are susceptible to channel deletion
  3. NBIO140 Lab 5 Lab for NBIO140 taught by Steven van Hooser
  4. BlackBoxNeuron Neuron simulator designed for teaching and undergraduate research. Used for the Brandeis QBREC program
  5. Core Course in Integrative Biosciences (BIMS 6000)

xolotl's People

Contributors

alec-hoyland avatar cosmojg avatar eomorozova avatar luadam4c avatar sg-s avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

xolotl's Issues

make a global optimizer

the idea is, given some neuron or network, one should be able to tune the parameters of this model so that some target behaviour is reached.

Relational parameters

xolotl will introduce type of constructing models using what I call "relational parameters". Instead of parameters being scalars, they can be functions of other parameters. This means that:

  1. Changing them by hand breaks the relationship they have to other parameters
  2. They cannot be manipulated, since they are functions of other parameters
  3. Changing other parameters automatically updates these parameters

For now, we're going to avoid the problem of nested relational parameters (so if y = f(x), where x and y are parameters, then there can be no z: z = g(y))

xolotl does not degrade gracefully

progressively setting gbar of all conductances in a neuron causes voltage integration to explode --

because sigma_gE = 0, and sigma_g =0, and 0/0 is not defined, and yeilds a NaN

it's worse -- because the voltage of this step is NaN, the integration is ruined for all time steps in the future, and also for all compartments/neurons connected to this.

add a hash method to xolotl

so that we can quickly check if binaries match the current state

then we would have to label binaries with the hash too

write a serialization method

that converts a xolotl object into a cell array of vectors that can be fed as arguments into the linked binary, and a corresponding cell array of strings with parameter/value names

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.