Skip to content

Releases: ConnorStoneAstro/caskade

v1.0.0

27 Feb 20:33
bd7e02b

Choose a tag to compare

Caskade is now in stable release!

With version 1.0.0 caskade will work more seriously to maintain backwards compatibility in future updates. Happy simulating everyone!

What's Changed

Minor feature addition coming along with this update, lets you store a calculation that will be called repeatedly.

Full Changelog: v0.15.1...v1.0.0

v0.15.1

10 Feb 14:47
f373afb

Choose a tag to compare

What's Changed

Full Changelog: v0.15.0...v0.15.1

v0.15.0

03 Feb 01:56
892bd28

Choose a tag to compare

What's Changed

Caskade now has "herarchical models" or the ability to place one simulator inside another to support vmap or other featuers which are explicitly required to have access to params at call time.

Caskade also now has param "groups", which allow dividing the params object into sub groups to give control over what call-time functions are used (vmap, jacobian, grad, etc.).

Breaking changes

  • Param shapes are now more solidly defined. If a user sets a shape then it will not change as the value is set. There are three possibilities when setting the value, first it is incompatible with the shape (i.e. a scalar when the shape requires a vector) which will throw an error, second the value matches the shape, third the value has leading batch dimensions (value shape of (4,2) and param shape of (2,) means there is a batch of size 4)
  • Param names must now always be valid python identifiers (my_node is ok, but my node is not). This is also true for linking keys when linking Nodes
  • Param batched is not setable, now one must explicitly provide batch_shape
  • Param.to_pointer now requires that a value is passed (either param or callable)
  • Module no longer tracks dynamic_modules, child_dynamic_params, or all_dynamic_value
  • ActiveContext cannot be nested (not sure who was doing that anyway)
  • Node.active cannot be set by the user (I hope no one was doing this)

Full Changelog: v0.14.1...v0.15.0

v0.14.1

21 Jan 17:05
430cff6

Choose a tag to compare

What's Changed

Full Changelog: v0.14.0...v0.14.1

v0.14.0

05 Dec 21:17
82778a8

Choose a tag to compare

What's Changed

Breaking changes

  • Module.build_params_array is now replaced with Module.get_values with extra functionality to get static values and other attributes besides the values (if possible)
  • Module.fill_dynamic_params is now replaced with Module.set_values with extra functionality to set static values and other attributes besides the values (if possible)

Full Changelog: v0.13.0...v0.14.0

v0.13.0

04 Dec 20:57
1b61d11

Choose a tag to compare

What's Changed

Breaking changes

the functions dynamic_value, static_value, and pointer_func no longer exist. Instead it is now possible to pass a value when calling to_dynamic(val) or to_static(val). For completeness to_pointer(val) now exists where val should be None, a Param, or a callable.

Calling param.to_static(None) will set the param to static and leave the value as None (presumably to be filled later). This will still crash if you try to use it in a simulation, but gives the user some freedom to define the workflow of how the value gets filled.

Full Changelog: v0.12.1...v0.13.0

v0.12.1

03 Dec 02:07
0984e46

Choose a tag to compare

Full Changelog: v0.12.0...v0.12.1

v0.12.0

02 Dec 20:16
dd9b2c7

Choose a tag to compare

What's Changed

Major interface update includes many small changes:

  • param.value = None now clears value and sets dynamic, rather than aliasing to_dynamic
  • param.value = 1.0 or some other value no longer forces static, the param will remain static/dynamic as it was before
  • Printing a simulator will show up to 4 values per param, rather than only showing scalars
  • Param("name", dynamic_value = value) no longer works, now use Param("name", value = value, dynamic=True)
  • Params now have explicit param.batched = True to indicate that param.shape will match then end of param.value.shape. More generally we will have param.shape = (*D) and param.value.shape = (*B, *D)
  • param.dynamic_value = value is now param.dynamic_value(value) to set value and make it dynamic. Also now have param.static_value(value) to set static and provide value. As well as param.pointer_func(value) to set a function or param pointer

Under the hood, the graph will only update for setting a param value if that means changing the node type (static, dynamic, pointer). This should improve the speed of larger simulators when modifying states (ie set whole simulator to static). The runtime use of the graph has always been fast.

Full Changelog: v0.11.0...v0.12.0

v0.11.0

11 Sep 14:04
5608932

Choose a tag to compare

What's Changed

Full Changelog: v0.10.5...v0.11.0

v0.10.5

01 Aug 22:57
83db902

Choose a tag to compare

What's Changed

Full Changelog: v0.10.4...v0.10.5