Regions

RegionGroup

RegionGroup is the simplest implementation of the Region class. It serves as a container interface for its children. Any transformation operation applied to it will be directly applied to all its children independently.

Parameters

  • name: Name of the RegionGroup region.

  • children: Reference to Regions or Partitions belonging to this region.

Stack

Stack groups its children on top of each other along a defined axis (main axis) and adjust its length accordingly.

This class first place the first of its children at its defined coordinates. Then, each following child of the Stack will see their main axis coordinates set according to its predecessor resolved position and thickness along the main axis. The user can also define a reference child as the origin of the stack (the coordinates will be relative to this child). The order of the children field in the configuration corresponds to the final order of the Stack.

Parameters

  • name: Name of the Stack region.

  • axis: Main axis along which the Stack’s children will be stacked. Should be one of [“x”, “y”, “z”].

  • anchor: Reference to one child of the stack, which origin will become the origin of the stack.

  • children: Reference to Regions or Partitions belonging to this region.

Note

Stack is mainly meant to contain Layer partitions. Indeed, if a Stack and its Layers share the same axis, then each Layer will occupy the whole space of the Region, except on the axis where it will be defined according to their thickness.

Example

Here we create a Stack of Layers along the y axis with the top_layer as anchor:

{
  "regions": {
    "brain_region": {
      "type": "stack",
      "children": ["bottom_layer", "top_layer"],
      "anchor": "top_layer",
      "axis": "y",
    }
  },
  "partitions": {
    "bottom_layer": {
      "type": "layer",
      "thickness": 50,
    },
    "top_layer": {
      "type": "layer",
      "thickness": 100,
    }
  },
}
from bsb import Stack, Layer

top_layer = Layer(name="top_layer", thickness=100, axis="y")
bottom_layer = Layer(name="bottom_layer", thickness=50, axis="y")
stack = Stack(name="stack", children=["bottom_layer","top_layer"], axis="y")

This means that the top_layer and bottom_layer will occupy all space available to brain_region along the x and z axis.

Because top_layer is the anchor of brain_region (despite being the second defined in the children field of brain_region), its origin will be (0, 0, 0) will spread between [0; 100] along the y axis. The bottom_layer arrives before top_layer in the children order so its origin will be (0, -50, 0) will spread between [-50; 0] along the y axis.