List of placement strategies

RandomPlacement

This class assigns a random position to each cell within their related partition. Below is an example with 10 cells.

"cell_types": {
    "my_cell": {
        "spatial": {
            "count": 10,
            "radius": 5
        }
    }
},

"placement": {
    "place_randomly":{
        "strategy": "bsb.placement.particle.RandomPlacement",
        "partitions": ["my_layer"],
        "cell_types": ["my_cell"]
    }
},
config.cell_types.add(
  "my_cell",
  spatial=dict(radius=5, count=10)
)
config.placement.add(
  "place_randomly",
  strategy="bsb.placement.RandomPlacement",
  partitions=["my_layer"],
  cell_types=["my_cell"],
)

Note

This strategy will ensure that the cell somas (represented as sphere) do not occupy an excessive volume with respect to their containing partition. Therefore, the ratio of the total cell soma volume to the partition volume, referred as the packing factor, should not exceed 0.4.

ParallelArrayPlacement

This class places a single layer of cells on the xy plane in an aligned array fashion. To this end, it create a lattice with fixed spacing between cell positions for each of its row (spacing_x in µm). The lattice can be additionally rotated along the z axis (angle defined in degrees).

"cell_types": {
    "my_cell": {
        "spatial": {
            "count": 100,
            "radius": 1
        }
    }
},

"placement": {
    "place_on_flat_array":{
        "strategy": "bsb.placement.ParallelArrayPlacement",
        "partitions": ["my_layer"],
        "cell_types": ["my_cell"],
        "spacing_x": 10,
        "angle": 0
    }
},
config.cell_types.add(
  "my_cell",
  spatial=dict(radius=1, count=100)
)
config.placement.add(
  "place_on_flat_array",
  strategy="bsb.placement.ParallelArrayPlacement",
  partitions=["my_layer"],
  cell_types=["my_cell"],
  spacing_x=10,
  angle=0
)

FixedPositions

This class places the cells at fixed positions specified by the attribute positions.

  • positions: a list of 3D points where the neurons should be placed. For example:

"cell_types": {
    "my_cell": {
        "spatial": {
            "count": 2,
            "radius": 2
        }
    }
},

"placement": {
    "place_in_fixed_position":{
        "strategy": "bsb.placement.FixedPositions",
        "partitions": ["my_layer"],
        "cell_types": ["my_cell"],
        "positions": [[0, 0, 0], [20, 20, 20]]
    }
},
config.cell_types.add(
  "my_cell",
  spatial=dict(radius=2, count=2)
)
config.placement.add(
  "place_in_fixed_position",
  strategy="bsb.placement.FixedPositions",
  partitions=["my_layer"],
  cell_types=["my_cell"],
  positions=[[0, 0, 0], [20, 20, 20]]
)

In this case, we place two cells of type my_cell at fixed positions with coordinates [0, 0, 0] and [20, 20, 20].