- Changes:
- Use a JSON or YAML based recipe definition.
- Changes:
- Use
pyproject.toml
to build the project. See also FUNCZ-351.
- Use
- Bugfix:
- Bugfix:
- Properly utilize source and target node populations. See also FUNCZ-345.
- Changes:
- Upgrade Pybind11 dependency, remove MorphoKit as a dependency. Most functionality is present in MorphIO.
- Changes:
- Improved pathway handling for SBO. See also FUNCZ-337.
- Changes:
- Hotfix for metadata loading.
- Changes:
- Don't use the full recipe for provenance, only provide path and checksums. See also FUNCZ-341.
- Tune configuration for large connectome processing. See also BBPP134-564.
- Changes:
- Set parallelism very early to improve SONATA data partitioning. See also FUNCZ-340.
- Changes:
- Changes:
- Do not require the recipe by default. See also FUNCZ-318.
- Fixes:
- Load metadata correctly for Parquet input.
- Do not encode filenames when passing to
libsonata
.
Warning
This release deprecates the sm_*
commands, please switch to the new
functionalizer
command.
- Changes:
- Introduce a new
functionalizer
command, wheresrun functionalizer
replacessm_run spykfunc
. The newfunctionalizer
command accepts all options from Spykfunc, too. See also FUNCZ-325.
- Introduce a new
Warning
Changes in this release may require an additional --
after the
--morphologies
flag for proper command line argument parsing.
- Changes:
- Add a new filter that allows to assign morphologies to spines. See also FUNCZ-301.
- Add the column
edge_type_id
to gap-junction output to conform with the SONATA specification. - Load all node attributes and make them conditional at the same time. Should avoid having to specify bogus attributes when using projections. See also FUNCZ-307.
- Breaking Changes:
- Write section types out with the correct MorphIO convention. See also FUNCZ-289.
- Changes:
- Allow unsigned integer types for SONATA input. Restricted to a maximum of 32 bits. See also FUNCZ-291.
Warning
Changes in this release will yield different results compared to previous versions when re-running circuits.
- Breaking Changes:
- Replace the random number generating library. Switch to using the tried and tested Random123 library. See also HPCTM-1294.
- Run the TouchRules filter by default in structural mode. See also FUNCZ-255.
- Changes:
- Fix a regression that led to duplicated gap-junction ids. See also FUNCZ-287.
- Breaking Changes:
- Drop the SynapseProperties filter by default in structural mode. Space savings are small, but time savings seem worthwhile. See also FUNCZ-265.
- Changes:
Produce debug output by default. See also FUNCZ-281.
Reduce the output of the cluster startup script to display important information more prominently. Spykfunc will not require the flag
-p spark.master=…
any longer when launched withsm_run
. See also FUNCZ-275.Generalize :class:`~recipe.parts.touch_connections.ConnectionRule`, where
<mTypeRule to="…" …
is now superseded by<rule toMType="…" …
and additional selection criteria may be specified.Store metadata about previous tool invocations and add recipe, filters used. See also HPCTM-1425.
Track touches dropped and raise an exception if touches are removed filters like synaptic property generation. See also FUNCZ-274.
Rework user interface to require the flags
--recipe
and--morphologies
, previously positional arguments, when using filters. Drop--parquet
and--touches
and use positional arguments instead, auto-detecting the input file type.Allow to not specify any filters or use the
--merge
flag to process several inputs of non-overlapping edge populations. See also FUNCZ-279.Note
If a source—target connection appears in more than one input, synapses for this input may not be sorted in a reproducible way.
- Changes:
- Fix a bug where the afferent section type of too many sections was changed. See also FUNCZ-269.
- Factor some recipe reading code out into its own module. See also FUNCZ-183.
- Sort within each output partition to have completely reproducible output. See also FUNCZ-262.
- Change the input parameters to require
--from <circuit_file> <population>
and--to <circuit_file> <population>
. Both source and target parameters can differ, allowing to specify different circuit files and/or populations. Note that the--circuit <circuit_file>
is replaced by this feature. - Add support for NodeSets with
--from-nodeset <nodesets_file> <nodeset>
and--to-nodeset <nodesets_file> <nodeset>
, filtering the populations specified by the--from
/--to
parameters. Both source and target parameters can differ, allowing different nodesets files and/or nodesets. - Change: Refactoring to introduce support for SONATA files natively through Libsonata. Note that MVD and/or other legacy files are no longer supported. See also FUNCZ-263.
- Changes:
- Shuffle the data loading order to perform almost all I/O after recipe
parsing and setup.
Added an option
--dry-run
to read minimal data and verify the recipe. See also FUNCZ-248.
- Shuffle the data loading order to perform almost all I/O after recipe
parsing and setup.
Added an option
- Fixes:
- Changes:
- The SONATA input will now create the field synapse_id, hence deprecating the AddID filter.
- The plotting utilities have been removed as our ability to obtain performance data has been crippled. See also FUNCZ-244.
- Fixes:
- The parameter nrrp was off by one.
- Changes:
- Added a AddID filter to be able to process SONATA without the synapse_id field. Also skip the generating the axonal_delay field if distance_soma is not present in the input. See also FUNCZ-212.
- Fixes:
- Multi-population support had source and target populations swapped
- Changes:
- Fixes:
- More robust filter loading
- Changes:
- Process uHillCoefficient and gsynSRSF attributes of SynapseClassification. See FUNCZ-238.
- Added filters DenseID to compress the ids of gap junctions (to be run before GapJunction, and GapJunctionProperties to set the conductance of gap junctions. These filters are active by default when running with --gap-junctions.
- Changes:
- Split of repositioning of synapses into a separate filter. See FUNCZ-226.
- Fix branch type matching in TouchRules. Allow axon to be matched, and do no longer match axon values when using the dendrite value. This should not have a user impact, as the default TouchDetector touch space is axon-dendrite connections. See also FUNCZ-216.
- Activate spine length filtering if recipe component is present.
- Changes:
- Improved the determination of fields to write to the output
- Changes:
- Warn if entries in the classification matrix don't cover values. Also
adds option
--strict
to abort execution if any warnings are issued. See FUNCZ-86. - Use MorphIO/MorphoKit to read in morphologies. See FUNCZ-199.
- Add additional output columns to gap-junction runs. See FUNCZ-211.
- Fix executions for circuits with only one synapse class. See FUNCZ-218.
- Add preliminary SONATA support. See FUNCZ-217.
- Add support for
{from,to}BranchType
in TouchRules. See FUNCZ-223.
- Warn if entries in the classification matrix don't cover values. Also
adds option
- Changes:
- Warn when synapse classification does not cover all values. See FUNCZ-209.
- Changes:
- Display intermittent touch count after checkpoints. See also FUNCZ-201.
- Changes:
- Add the fractional position along sections to the output.
- Changes:
Allow touch rules to filter for more than soma, !soma. The following values are valid in the TouchRule XML nodes (for the attribute type):
- * accepts everything
- soma matches soma branches (type 0)
- dendrite matches everything that is not a soma (this reproduces the old behavior. Since TouchDetector does not consider touches towards axons in normal operation, this matches dendrites only normally)
- basal matches branches of type 2 (basal dendrites)
- apical matches branches of type 3 (apical dendrites)
Note that the notations correspond to the convention used for morphologies saved as H5.
Output touch positions: contour for efferent, center position for afferent side.
Output section type for the afferent side of touches.
Output spine length
Compare statistical properties of the resulting circuits in the CI
Added a --debug command line flag to produce additional output
- Changes:
- Ensure that properties drawn from a truncated gaussian are always positive: truncate the normal distribution at ±1σ and 0.
- Changes:
- Fix random number generation for determining active connections
- Changes:
- Support post- and pre- neuron ordering of the output.
- Reordering of the command line options and help
- Changes:
- Fix the morphology output to use floats consistently
- Add ability to process morphologies stored in nested directories
- Changes:
- Switched to new unique seeding for random numbers: breaks backwards-compatibility on a bitwise comparison
- Improved gap-junctions support: * unique junction ID ready to consume by Neurodamus * added bi-directionality to dendro-somatic touches
- Changes:
- Initial support for gap-junctions
- Control filters run with --filters command-line option
- One of --structural, --functional, or --gap-junctions has to be passed to the executable to define filters
- Save neuron ids as 64 bit integers in the final export
- Add the following information to report.json: * the largest shuffle size * the number of rows seen last * the largest number of rows seen
- Documented filters
- Changes:
- Read the layers from circuit files rather than inferring them from morphologies
- Changes:
- Save _mvd directory in the output directory by default
- Save checkpoints in HDFS automatically
- Documentation improvements
- Drop Python 2 support
- Changes:
- Add parquet-compare to compare output
- Add missing package directory
- Changes:
- Circuits are now reproducible by using the seed specified in the recipe for sampling and filtering of touches
- The default output has been renamed from nrn.parquet to circuit.parquet
- Changes:
- Allow to build both py2 and py3 versions from the source tree with nix
- Make the synapse repositioning in the recipe optional
- Changes include, but are not limited to:
- Proper seeding of random numbers to guarantee reproducibility
- Changes include, but are not limited to:
- Provide a module to run the software
- Perform synapse shifts
- First working version with 3 base filters:
- BoutonDistance
- TouchRules
- ReduceAndCut