API changes
net.IonotropicSynapse.set("IonotropicSynapse_s", 0.2)
must be updated to:
net.set("IonotropicSynapse_s", 0.2)
For a more detailed tutorial on how to index synapses, see
this new tutorial.
- Throughout the codebase, we renamed any occurance of
seg
(forsegment
) tocomp
(forcompartment
). The most notable user-facing changes are:branch = jx.Branch(comp, ncomp=4)
cell = jx.read_swc(fname, ncomp=4)
- New defaults for the SWC reader with
jx.read_swc()
. By default, we now have
assign_groups=True
(previouslyFalse
) andmax_branch_len=None
(previously
300.0
). - We renamed
.view
to.nodes
, e.g.,cell.branch(0).nodes
(#447, #453, @jnsbck). - We renamed
_update_nodes_with_xyz()
tocompute_compartment_centers()
(#520,
@jnsbck) - We updated the way in which transformations are built (#455, @manuelgloeckler).
Previous code such as
tf = jx.ParamTransform(
lower={"radius": 0.1, "length": 2.0},
lower={"radius": 3.0, "length": 20.0},
)
must be updated to:
from jaxley.optimize.transforms import ParamTransform, SigmoidTransform
transforms = [
{"radius": SigmoidTransform(lower=0.1, upper=3.0)},
{"length": SigmoidTransform(lower=2.0, upper=20.0)},
]
tf = jt.ParamTransform(transforms)
New features
- Added a new
delete_channel()
method (#521, @jnsbck) - Allow to write trainables to the module (#470, @michaeldeistler):
net.make_trainable("radius")
params = net.get_parameters()
net.write_trainables(params)
- Expose the step function to allow for fine-grained simulation (#466, @manuelgloeckler)
- More flexible and throrough viewing (#447, #453, @jnsbck)
- Boolean indexing for cells, branches, and comps (@494, @jnsbck):
r_greater_1 = net.nodes.groupby("global_cell_index")["radius"].mean() > 1
net[r_greater_1].nodes.vis()
- check if recordings are empty (#460, @deezer257)
- enable
clamp
to be jitted and vmapped withdata_clamp()
(#374, @kyralianaka)
Bug fixes
- allow for cells that were read from swc to be pickled (#525, @jnsbck)
- fix units of
compute_current()
in channels (#461, @michaeldeistler) - fix issues with plotting when the morphology has a different number of compartments
(#513, @jnsbck)
Documentation
- new tutorial on synapse indexing (#464, @michaeldeistler, @zinaStef)
- new tutorial on parameter sharing (#464, @michaeldeistler, @zinaStef)
- new tutorial on modules and views (#493, @jnsbck)
- improved tutorial on building channel models (#473, @simoneeb)
- get rid of tensorflow dependency by defining our simple dataloader in the tutorial
(#484, @jnsbck) - new FAQ about rate-based networks (#531, @michaeldeistler)
Code health
- refactor tests with fixtures (@479, #499, @fabioseel, @jnsbck)
- make several attributes private (#495, @ntolley)
- move
read_swc.py
to newio
folder (#524, @jnsbck) - faster testing for SWC and plotting (#479, @fabioseel)
- automated tests to check if tutorials can be run (#480, @jnsbck)
- add helpers to deprecate functions and kwargs (#516, @jnsbck)