Change Log¶
Version 2.1.0¶
- Features
Support morphio.Collection to be able to also read from morphology containers.
Version 2.0.0¶
We’ve removed one method. It seems unlikely that users would be affected by this. Migration instructions are provided in the corresponding bullet point.
- Features
CLI supports –verbose which prints log messages of any severity.
Infrastructure for creating indexes with randomly placed elements.
Support adding spheres to in-memory SphereIndex.
Support indexes of points PointIndex.
- Improvements
Create in-memory indexes “in bulk”. The internal structure of an R-tree is much better if all elements are known upfront; as opposed to being inserted one-by-one. This commit ensures that in-memory indexes are created via bulk creation.
It optionally, old in-memory indexes should be recreated to benefit from this optimization. However, old indexes can still be read. Multi-indexes aren’t affected at all by this change.
Use std::filesystem instead of boost::filesystem.
General restructuring of code and CI.
Added test to ensure consistency of morphology IDs between BrainIndexer and libsonata.
- Deprecation
We’ve deprecated the certain constructors of core.MorphIndex and core.SynapseIndex. Users of BrainIndexer aren’t expected to be using these classes directly.
- Removal
We’ve removed a method add_sphere from the SphereBuilder. Instead please create all spheres upfront and then create the index. If upfront creation of all spheres doesn’t work, the in-memory SphereIndex supports adding spheres interatively.
- Fixes
Improved error message for missing files.
Warn if in-memory indexes are large.
Improved documentation.
Progress bar is only shown when in a TTY.
Version 1.2.1¶
December 2022
- Improvements
Fix publishing documentation.
Version 1.2.0¶
December 2022
- Features
Ability to optimize the order in which queries should be performed to improve cache reuse of multi-indexes.
- Improvements
Document BrainIndexer environment variables.
Document important performance tricks.
Fix morphology builder to return SONATA enabled indexes.
Relax the minimum number of synapses in a multi-index.
Improvements to the overall code quality.
Version 1.1.0¶
November 2022
- Features
Integrates
section_typein index. This allows to retrieve information on the type of section (i.e.soma,axon,basal_dendrite,apical_dendrite) directly from the query.Add
box_emptyandsphere_emptyfunctions to check if a specific area is empty.
- Improvements
Ignore
virtualpopulations in circuit config files.Populations with unsupported types are not allowed anymore.
Relaxed requirement on number of MPI ranks: now can be in the form
2**n * 3**m * 5**l + 1.Workaround for
BOOST_STATIC_CONSTANTbuild issue.Multiple improvements to CI.
Removed memory mapped files support entirely.
Multiple fixes and improvements to the implementation.
Version 1.0.0¶
October 2022
No changes since version 0.9.0.
Version 0.9.0¶
October 2022
- Breaking Changes
Implementation details w.r.t
boost::serializerequire a breaking change in how indexes are stored. Old indexes cannot be loaded anymore and need to be recreated.Remove MVD3 support. Only SONATA is supported. If you need MVD3 you must convert the circuit to the new format.
The keyword argument
target_gidsforMorphologyBuilder.from_sonata_filehas been renamedgids. Please update your code before version 1.0 as the old name will be removed.The key
gidforgroup_byhas been renamedpost_gidto reflect that the grouping is happening according to the value ofpost_gid. Please update your code before version 1.0 as the old name will be removed.
- Features
accuracy="best_effort"is now the default.The radius of a segment is equal to the average of the radius at the two endpoints.
- Improvements
Improves documentation.
Improvements due to QA feedback.
Bug fixes.
Improve unit-testing with MPI.
Improve CI: checking wheels and sdist.
Improve integration tests: all usecases1-5
Version 0.8.3¶
September 2022
- Improvements
Improves documentation.
Version 0.8.2¶
September 2022
- Improvements
Improves documentation.
Fixes OOM issue for synapse indexes that select by target GID.
Fixes assert of radii during construction of morphology indexes.
Version 0.8.1¶
September 2022
- Improvements
Improves help and error messages.
Version 0.8.0¶
September 2022
- Features
Implemented multi-population support for indexes
- Improvements
Boxes are defined through any two opposing corners, not just the min- and max-corners.
“window_query” and “vicinity_query” are now “box_query” and “sphere_query”, respectively; and analogously for “{window,vicinity}_counts”.
“endpoints” are now exported as a tuples and not as two separate objects
“kind” field has been replaced by “is_soma”
Removed support for memory mapped files from the Python API
The multi-index cache usage statistics report has been deactivated by default, available on-demand by setting the environment variable “SI_REPORT_USAGE_STATS” to “1” or “On”
Consistency improvements for the code
Bug fix for multi-index creation.
Version 0.7.0¶
September 2022
- Features
Overhaul of the Python APIs: API v2 (more info here: https://bbpteam.epfl.ch/project/spaces/x/MBStBg)
Aligns internal identifier packing with TouchDetector. Requires rebuilding of existing indexes.
Opening indexes from disk now requires a single command for every kind of index
New Python logging infrastructure
- Improvements
Fixed issue in radius calculation
Clean-up of the code base from unused code
Improved validation using BluePy cross-checks
Lots of bug fixes
Version 0.6.0¶
August 2022
- Features
Introduced MultiIndex for parallel indexing
Queries can now be performed in bounding box or best-effort mode
Bulk return of values from queries as a dictionary of numpy arrays
Support for .json file for CLI tools
A full-fledged tutorial written in a Jupyter Notebook
- Improvements
Big improvements to CI
Optimizations to collision detection
C++ backend now upgraded to C++17
Improved documentation
Lots of bug fixes
Version 0.5.x¶
April 2022
- Features
Out-of-core support for node indexing
Support for pre and post synaptic gids
- Improvements
Renamed NodeMorphIndexer to MorphIndexBuilder for clarity
Introduced free space check for memory mapped files
Improved documentation
Version 0.4.x¶
November 2021
- Features
Support for SONATA Selections for NodeMorphIndexer
Add API to support counting elements and aggregate synapses by GID
Chunked Synapse indexer feat progress monitor
More flexible ranges: python-style (start, end, [step])
- Improvements
New CI (Gitlab): tests, wheels & docs, fix tox, drop custom setup.py docs
Building and distributing wheels
Added more examples and benchmarking scripts
Added new classes to documentation API
Version 0.3.0¶
August 2021
A major, and long waited, update since the previous release. This is the first version effectively validated against FLAT index results. It would take a lot of time to reconstruct everything that has changed from the first release so we’ll just give a brief overview of the changes made in this new shiny version.
- Major changes
Morph object Indices are now tuples (gid, section, segment)
New High level API/CLI for loading nodes and edges
Initial IndexGrid and bindings, for future very large circuits
- Features
Added support for Section IDs
Added support for Synapses Indexer
Now supports CLI for indexing circuits
Easier installation and interoperability with Sonata
Gids, Section and Segment IDs are now ensured to be compliant with FLAT (0/1-based)
Lots of validation fixes
Improved installation experience
Introduced IndexGrid/MultiIndex
- Improvements
Refactoring internal index intities, less inheritance
Extensive validation against FLAT
Many fixes for robustness and stability
Version 0.2.0¶
- Features
Point API
Support for window queries
has_Soma flag (default=true) in add_neuron to allow the API to add segments only.
Version 0.1.0¶
- Features
Support saving and loading dumps
- Improvements
Also some refactoring in the way we collect ids, automatic using id_getter_for*
Docs and tests
Version 0.0.1¶
- Features
Initial Spatial-Index based on boost.geometry.index.
- IndexTree handling both generic geometries and boost variants implementing the protocol:- Base Geometries: Spheres and Cylinders.- Extended types: IndexedSphere, Soma and Segment.- Variant types: variant<Soma, Segment>
- Created Python API for the two possibly most useful trees:- SphereIndex: IndexTree<IndexedSphere> - memory and cpu efficient.- MorphIndex: IndexTree<variant<Soma, Segment>> - capable of handling entire morphologies.