Skip to content
Snippets Groups Projects
  1. Sep 05, 2022
    • Thorsten Hater's avatar
      Remove explicit generator (#1962) · 55aac4a9
      Thorsten Hater authored
      - Remove the old, multi-target `event_generator` class in favour of `schedule_generator(tgt, weight, explicit_schedule)`
      - Much simplification ensues, `event_generator` is no longer a type-erasing container, but just what 
         `schedule_generator` was before
      - Make the label resolution in generators a bit more eager, no longer at simulation time, 
         but now during setup (bit give a wee bit of perf as well)
      
      Closes #1488 
    • Thorsten Hater's avatar
      Mutable connection table (#1919) · 07e0bb62
      Thorsten Hater authored
      Add functionality, docs, and examples on editing the connection table.  This is a first, small PR
      on the topic, further functionality will come as requested.
      
      Teaser example
      ```cxx
          // This recipe -- omitted -- implements a mutable connection table 
          // and returns it via the `connections_on` callback. New entries are
          // added using `add_connection` which makes one link from a central 
          // `spike_source_cell` to the given `gid`
          auto rec = recipe();
          rec.add_connection(1);
      
          auto sim = arb::simulation(rec, ctx);
      
          // Record spikes
          std::vector<arb::spike> spikes;
          sim.set_local_spike_callback([&spikes](const auto& s) { spikes.insert(spikes.end(), s.begin(), s.end()); });
      
          // Run and print all spikes per gid
          sim.run(0.25, 0.025);
          show_spikes(spikes);
      
          // Add a new connection
          rec.add_connection(2);
          sim.update_connections(rec);
      
          // Run and print all spikes per gid
          sim.run(0.5, 0.025);
          show_spikes(spikes);
      ```
      
      # Update July '22
      
      - added re-wiring of Event Generators
      - implemented a split between a recipe and a recipe-update (cheekily dubbed `topping` until further notice)
      - `recipes` are `toppings` via inheritance
    • Thorsten Hater's avatar
      :squid: Excise `time` (#1967) · 0644cf87
      Thorsten Hater authored
      **BREAKING** Remove access to time `t` in NMODL.
  2. Sep 01, 2022
    • Thorsten Hater's avatar
      Add spike counts to pre-commit tests. (#1965) · ccb25fcd
      Thorsten Hater authored
      - Enhance `run_cpp_examples.sh` to do some very basic checking of spikes counts
      - Add a script to check all releases
      - The former must succeed for all commits to master
      
      Here's the expected spike counts as of 0.7
      - brunel 6998
      - bench 972
      - ring 94 (19 pre-v0.7)
      - gap_junctions 30
  3. Aug 26, 2022
  4. Aug 25, 2022
  5. Aug 23, 2022
  6. Aug 22, 2022
  7. Aug 11, 2022
  8. Aug 10, 2022
    • Thorsten Hater's avatar
      Add portable stacktraces · de83a0fa
      Thorsten Hater authored
      - Add stacktraces to
         1. arbor_exception (and all derived) as `where`
         2. arbor_internal_error as `where`
         3. arb_assert
      - Propagate stacktraces to Python exceptions derived from the above.
      - Expand dev/doc on debugging
  9. Aug 09, 2022
  10. Aug 05, 2022
  11. Aug 04, 2022
  12. Aug 02, 2022
  13. Aug 01, 2022
  14. Jul 28, 2022
  15. Jul 20, 2022
  16. Jul 19, 2022
  17. Jul 18, 2022
  18. Jul 04, 2022
    • Brent Huisman's avatar
      Move Python build to `pyproject.toml`, bump Python minver to 3.7, fix macos... · 8af6bd27
      Brent Huisman authored
      Move Python build to `pyproject.toml`, bump Python minver to 3.7, fix macos wheel generation (#1916)
      
      * Failing Macos Python wheel builds fixed.
      * Macos Python wheels now come with dual-arch (x86-64 and arm64)
      * Moved (nearly) all Python build instructions to `pyproject.toml`
        * Enables 'build isolation', and need to specify build-deps only once, no need for users or CI scripts to pre-install them.
        * Enables editable `pip` installs (`pip install -e ./arbor`)
        * Compatible with 'build frontends' `pip` and `build`.
        * Passing CMake options actually got shorter
      * Drop Python 3.6 support.
  19. Jun 30, 2022
    • Brent Huisman's avatar
      Fix line numbers in tutorials and assorted doc corrections (#1917) · c38db013
      Brent Huisman authored
      - Fix line numbers in tutorials, fallout from #1906
      - Mention arbor-contrib in a few relevant places
      - Correct some fallout from #1904
      - A new hardware and profiling tutorial, and covers things moved out of other examples in #1904
      - Various other documentation fixes
    • Simon Frasch's avatar
      Inhomogeneous parameters (#1887) · 257e625d
      Simon Frasch authored
      Adds the ability to scale parameters of (density) mechanisms based on inhomogeneous properties along a cell.
      Two new types are added:
      - iexpr: An expression describing the scaling factor computation.
      - scaled_mechanism: A wrapper struct around a mechanisms with iexpr attached to selected parameters.
      
      Closes #1650
  20. Jun 23, 2022
  21. Jun 21, 2022
    • Brent Huisman's avatar
    • Thorsten Hater's avatar
      Adopt flake8 (#1908) · f685f0e3
      Thorsten Hater authored
    • Thorsten Hater's avatar
      Add some convenience to simulation creation. (#1904) · d15afd39
      Thorsten Hater authored
      Encapsulates 80% of cases:
      ```cxx
       rec = recipe()
       ctx = make_context()
       dec = partition_load_balance(rec, ctx)
       sim = simulation(rec, dec, ctx)
      ```
      is now written as
      ```cxx
       rec = recipe()
       sim = simulation(rec)
      ```
      In python we use keyword args to allow
      both to be specified separatly.
      
      Partially fixes #1862 
    • Thorsten Hater's avatar
      Ionic Diffusion along the Morphology · 4a305b4f
      Thorsten Hater authored
      # Introduction
      
      Plasticity processes are mediated by signalling ions, eg Ca++, which are generated by 
      synapses upon reception of a spike. This adds a quantity `Xd` for any ion `X`
      - initialised as `Xi`
      - read from and written to by NMODL density and point mechanisms.
      - propagates according to a diffusion law `∂_t Xd = ∂_z c X ∂_z Xd + iX/qi`.
      - in contrast to `Xi` and `Xo` there's no buffering and the update in mechanisms
        occurs atomically (and at a different time)
      
      More details can be found in the documentation.
      
      For the future there are some low hanging optimisations
      - per-ion conductivity for the matrix solver could be disabled if no diffusion is computed
      - cable and diffusion solvers store duplicates of the solver state, could be merged
      
      Closes #1651 
  22. Jun 20, 2022