Giter Site home page Giter Site logo

abrahamnunes / bddg-neuron Goto Github PK

View Code? Open in Web Editor NEW

This project forked from modeldbrepository/185355

0.0 2.0 1.0 167.57 MB

Dentate gyrus network model pattern separation and granule cell scaling in epilepsy (Yim et al 2015)

Home Page: https://modeldb.yale.edu/185355

AMPL 64.56% Shell 0.64% Julia 18.88% Python 15.92%

bddg-neuron's Introduction

Biophysical Model of Dentate Gyrus

This is a reimplementation of the dentate gyrus model from which the following papers are based:

  1. Santhakumar et al. (2005)
  2. Yim et al. (2015)

Our model is modified primarily from the Yim et al. (2005) implementation. Changes are listed at the end of this file.

Contributing

Please see the CONTRIBUTING.md file.

Usage

Scripts were tested on Windows 10 and Arch Linux.

I recommend using Linux, and using the shell scripts, since this will create the necessary results/output directories.

Unix machines

sh run.sh

Windows

Note that here you will need to create the directories to store results. See run.sh for the directory names.

nrnivmodl mods 
.\main.hoc 

Writing a Script

...[load templates here (see main.hoc) for example ]...

strdef netlabel
netlabel = "MyDG"

random_seed = 1

objref dg
dg = new DentateGyrus(netlabel, random_seed)
dg.run() 

Changes

Here we do not list all specific changes implemented, but rather a high-level overview of how the Yim et al. (2015) code was modified.

  1. Network is now encapsulated as a template to facilitate batch simulations
  2. NEURON code was (largely) rewritten to achieve several goals
    • Making code more modular, packing routines into smaller functions
    • Making variable names more expressive (still work to do here)
    • Attempting to maximize local scope for variables, rather than allowing for global definitions
  3. Development of functions to "transform" network in order to test different effects
  4. Analysis code written in Julia
  5. Added capability for spontaneous action potential discharge of granule cells

bddg-neuron's People

Contributors

abrahamnunes avatar selenasingh avatar tommorse avatar

Watchers

 avatar  avatar

Forkers

selenasingh

bddg-neuron's Issues

Need a way to automatically tune the spontaneous activity of GCs

As it stands, I have been trying to tune the spontaneous_activity_strength parameter in the set_connectivity_params() file of DentateGyrus.hoc. But if we modify anything about the network afterward, we may need to re-tune. It would be good to have a method that will do this automatically.

Parallel Runs

As it stands, this runs slowly due to lack of parallelism. We should figure out a way to implement it in parallel.

TODO: Update docstrings

BDDG-NEURON/objects/DentateGyrus.hoc

line 17

Update docstrings on nc_append_rec() and nc_append()

TODO: Adress 'KillMC'

BDDG-NEURON/objects/DentateGyrus.hoc
line 23
Address the KillMC aspects that are not integrated in Yim, but from Santhakumar

Devise organization for root directory

Right now, the root directory is implementing the analysis for our first DG paper. However, I would like this to be more flexible. NEURON is not particularly good at this, as much of the code needs to be specifically written for a given experiment.

My thought is to have the directory structure look like this...

root/
    |- mods/
    |- objects/
        |- {objects that are shared and general across models/projects}...
    |- analysis-scripts/
        |- {julia scripts including general functions for analysis}...
    |- project-1-folder/
        |- objects/
            |- {objects specific to this project}
        |- main.hoc 
        |- {other project specific scripts}... 
    |- project-2-folder/ 
        |- objects/
            |- {objects specific to this project}
        |- main.hoc 
        |- {other project specific scripts}... 

TODO: cleanup input arguments

BDDG-NEURON/objects/GC.hoc

lines 45,46

// Process input arguments
// This is ridiculous. There must be a cleaner way. [ TODO ]

TODO: Changing Locations

BDDG-NEURON/clamps.py

line 116 (similar to line 28)

TODO:
[ ] Allow for changing the stimulation/recording location

TODO: Changing Locations

BDDG-NEURON/clamps.py

Line 28

TODO:
- [ ] Allow for changing the stimulation/recording location
"""

TODO: Rename Variables

BDDG-NEURON/objects/DentateGyrus.hoc

lines 29-34

  • Variables to be renamed for consistent style:
    - PP_box_startid_
    - PP_box_nr_
    - DGVt_name_
    - print_Vtrace
    - print_Raster

TODO: File output naming

BDDG-NEURON/objects/DentateGyrus.hoc
line 5
Account for different networks in file output names

TODO: Proc/func cleanup

BDDG-NEURON/objects/DentateGyrus.hoc

lines 18 -21

Clean the following procs/funcs, which were not changed much from Yim et al.:
- onnect_pp_to_gc()
- connect_pp_to_bc()
- connect_pp_to_hipp()

TODO: Rename Functions

BDDG-NEURON/objects/DentateGyrus.hoc

line 25

  • Functions to be renamed for consistent style:
    - nc_append()
    - nc_append_rec()

TODOs out of date

It would be great to go through the TODOs in the files and put them here as issues so that we can track progress more easily. Then we can look at what has been done or not done.

Add AUC for pattern separation

Instead of the pattern separation index defined as the output correlation at an input correlation of 0.6 , we can define the area under the pattern separation curve, which is as follows:

$$ AUC_{PS} = -\frac{2 a b-b+1}{2 \left(1+b\right)} $$

The $0\leq a \leq 1$ and $0 \leq b$ parameters are estimated from the ordinary least squares optimization of the following equation:

$$ y = a + (1-a) x^b $$

TODO: consider locations for debug objects

BDDG-NEURON/objects/DentateGyrus.hoc

lines 9-16

  • Where to put the following?
    // for debug purpose only...
    objref netcon, nil
    objref vec_debug_
    objref PP_init_rnd // random number generator to select an PP stimulus site..
    objref nslist, rslist, rs_noiselist
    objref ns, rs

TODO: Types of Currents

BDDG-NEURON/clamps.py

line 66

[ ] Make it so that you can record many other types of currentsTODO

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.