Add python 3.10 tests, and update GitHub actions.
Add pickling to classes with caching, to reduce chances of blowup on cached methods
Remove NeuroM and lazy-object-proxy dependency leftovers.
Teach schemas to return datatypes for attributes for the nodes and edges.
Add support for spatial indices:
node_populations now have a “spatial_segment_index” property which gives access to the segment index
edge_populations now have a “spatial_synapse_index” property which gives access to the synapse index
Set recursive autodoc generation to include ‘nodes’ and ‘edges’.
Renamed population_config to config for backwards compatibility
Access the population configs for node/edge populations via population_config property
Spatial index for segments and synapses
jsonschema based validation of h5 files and circuit configuration
checks for required attributes and data types of attributes (in h5 files)
Add black & isort to handle formatting
Use libsonata to provide more of the functionality
parsing config files
accessing data in Circuit and Simulation
Circuit validation changed to be more config-driven
it now only validates objects defined in the circuit configuration file
Improved performance when loading nodes and edges from a circuit.
Fixed warnings with Pandas 1.5.0
run and condition properties return libsonata classes instead of dictionaries
non-BBP Sonata circuit validation was removed
The NodeStorage & EdgeStorage classes were removed
point_neuron is no longer supported
Some column data types in the nodes and edges DataFrames returned by the get() method may be float or int instead of object.
Add python 3.9 tests.
Ensure that ids in frame reports are always np.int64 even when using libsonata 0.1.10.
Fix deprecation warnings.
Drop python 3.6 support.
Sonata BBP spec:
Node/edge populations are now supported in config
Population type available in NodePopulation/EdgePopulation
Population config (if given) overwrites the “components” config for that population
Alternate morphology directories (.h5, .asc) are now supported
Update circuit validation for the current BBP sonata spec
Fix circuit validation. Validation of morphologies was skipped when no rotations fields were present.
Adding the h5 and csv file accessors to the Node/EdgeStorage classes.
Fix the morphology/model access using a numpy int (using a numpy integer to access the morphology/model used to fail).
Update the copyright.
removing the MORPH_CACHE_SIZE
removing neurom as the main reader for morphologies
adding morphio as the main reader for the morphologies
Implement queries mechanism for edges
Pinned major versions of dependencies.
Pinned major versions of neuroM to <2.0.0.
Added NeuronModelsHelper to access nodes neuron models
Moved nodes query mechanism to a separate module
Ensure the dtypes as int64 for the node/edge ids (#121).
Added a Edges interface to query edges regardless of the population names (#112)
Added a CircuitEdgeIds object to contain the edge circuit ids (#112)
Added a ids function to the EdgePopulation class to keep the Edge/Node class homogeneous (#112, #115)
Added a get function to replace the properties function to the EdgePopulation class to keep the Edge/Node class homogeneous (#113)
Added a network.py module with a NetworkObject abstract class to factorize the Nodes and Edges classes (#113, #114)
Added a _doctool.py module with a DocSubstitutionMeta class to update inherited class docstrings (#113)
Deprecated the properties function from the EdgePopulation (#113)
Added the python3.8 toxenv
Dropped Python2 support (#109)
Removed python2 tox
Removed python2 dependencies and bump deps version
Removed the python2 switches in setup.py
Removed all deprecated functions
Removed six dependency (#110)
Fixed circuit validation for h5py>=3.0.0
Allowed usage of config dict instead of file only (#108)
Added a circuit node interface (#99)
Added the CircuitNodeId/CircuitNodeIds
Added Nodes class
All functions can use the CircuitNodeId/CircuitNodeIds
Update of the example notebooks (#88)
Improved _check_ids performance (#92)
Added information about the python3.7 support (#93)
Moved the CI from travis to GH Actions (#100, #101, #102, #103)
Fixed unit tests on Mac, fix doc indentation (#91)
Fixed validation of required datasets of virtual node groups (#98)
Fixed h5py dependency to be less than 3.0 (#98)
Improved the configuration paths handling (#85)
Can use all the “.” + something (i.e: ., ./dir, ../, ./../, ../../something, etc) as paths
Added raises to avoid errors
Manifest not mandatory anymore (if no anchors in the config)
Config strings resolved as paths only if they contain $ or start by .
Improved circuit validation for virtual nodes (#86)
“components” is mandatory by the validation only if the circuit contains nodes other than virtual nodes
Fixed error when sampling an empty group in NodePopulation.ids (#83)
Propagated changes from the new libsonata.ElementReport API (#62)
Bumped the libsonata version to 0.1.4 (#62)
Generalized multiple sonata groups validation of edges and nodes (#79)
Adapted validation to the sonata original repository examples (#81)
Improved validation for edge_group_id, edge_group_index and node_population edge’s attributes (#82)
Added ‘$node_set’ to nodes queries
Reduced memory usage for fields from @library
Fixed circuit validation of implicit node ids
Added the source/target_in_edges that returns set of edge population names that use this node population as source/target
Checked morphology and model_template fields in both @library or normal group.
Removed some dependencies to NodePopulation mocks in the different tests
Removed the mechanisms_dir as a mandatory directory for the circuit validation
Added source/target node ids to the available properties for edges
Checked if a node population contains biophysical nodes before calling .morph
Improved testing for the morph.py module (removed unneeded mocks)
Fixed circuit validation when edge_group_id/index are missing (allow missing edge_group_id/index for single group population)
Fixed circuit validation when model_type is part of @library
Added the FilteredFrameReport and FilteredSpikeReport classes used as lazy and cached results for simulation queries.
Added plots to the filtered spike/frame reports
Added the filtered class for the spike and frame reports
Used categoritical values for attr in @library
Fixed empty dict / array for reports query
Fixed edge iter_connection with unique_node_ids
Fixed the empty list/array/dict in simulation reports and in node.ids()
Added complete support of the node sets
Added population and node_id keys in node sets and node’s queries
Added the $and and $or operators to the node’s queries
Added node sets class
Added support for compound node sets in the node sets files
Added the node_sets_file in the circuit_config and remove it from the node storage
Added the Simulation support
Simulation config support
Spike reports support
Frame reports support
Added the multi-population support for circuits
Added a sonata circuit validator
Implement “node_id” in node set files
Updated the constant containers
Added “@dynamics:” parameters for edges.
Always use the node_id naming convention in code docstrings.
Run deploy step in Travis only for Python 3.6