Astrocyte Microdomains Description

In biology, astrocytic microdomains are defined as the three-dimensional territories of astrocyte morphology. In circuit-building, microdomains are defined as a geometric abstraction that indicates the bounding region each astrocyte should occupy. This information is used throughout the NGV workflow to determine the potential synapses, vasculature sites, and soft boundaries within which astrocyte morphologies are grown. For the rest of this page, whenever the term microdomains is encountered it will refer to the circuit building geometrical abstraction, not the actual biological entities.

Each microdomain is a convex polygon, represented as a collection of points (vertices) linked together by triangles, and has access to its adjacent astrocytic neighbors.

The microdomains are properties of the astrocytic node population. Therefore, there are as many microdomains as astrocytes in the circuit, and they are indexed by the respective astrocyte node id. However, in contrast to regular properties, microdomain information is grouped because there is more than one datum per astrocyte node id (e.g. the points of each domain). Therefore, the grouped properties file layout is used to store these properties. (See here for details)

Group

Field

Type

Requirement

Description

/data

points

float32

Mandatory

Positions (x, y, z) of the triangular domain vertices in µm.

/data

triangle_data

int64

Mandatory

Polygon ids and triangles. Columns : (polygon_id, point_index_i, point_index_j, point_index_k).

/data

neighbors

int64

Mandatory

Ids of either astrocytes (positive) or adjacent walls (negative).

/data

scaling_factors

float64

Mandatory

Scaling factors that were used to uniformly scale the domain points to overlap.

/offsets

points

int64

Mandatory

Ranges for the points dataset.

/offsets

triangle_data

int64

Mandatory

Ranges for the triangle_data dataset.

/offsets

neighbors

int64

Mandatory

Ranges for the neighbors dataset.

Example data of a single microdomain:

points = [
    [-8.,  8., -7.],
    [78.,  7., -7.],
    [58., 78., 23.],
    [78., 78., -7.],
    [-8., 13.,  1.],
    [78., 39., 40.],
    [59., 78., -7.],
    [78., 78., 21.],
    [-8., 13., -7.],
    [16., 37., 47.],
    [44., 36., 45.],
    [78., 29., 34.]
]

triangle_data = [
    [ 0,  1,  0,  4],
    [ 0,  1,  4,  9],
    [ 0,  1,  9, 10],
    [ 0,  1, 10, 11],
    [ 1,  1,  0,  8],
    [ 1,  1,  8,  6],
    [ 1,  1,  6,  3],
    [ 2,  1,  3,  7],
    [ 2,  1,  7,  5],
    [ 2,  1,  5, 11],
    [ 3,  7,  2,  9],
    [ 3,  7,  9, 10],
    [ 3,  7, 10,  5],
    [ 4,  6,  3,  7],
    [ 4,  6,  7,  2],
    [ 5,  8,  6,  2],
    [ 5,  8,  2,  9],
    [ 5,  8,  9,  4],
    [ 6,  4,  0,  8],
    [ 7,  5, 11, 10],
]

neighbors = [ 3,  3,  3,  3, -5, -5, -5, -2, -2, -2,  0,  0,  0, -4, -4,  2,  2,
    2, -1,  4]

scaling_factor = 1.1

Geometry

A microdomain is a polygon mesh, comprised of triangles that are connected by their common edges or corners. This information is stored in /data/points and /data/triangle_data, indexed by the respective /offsets/points and /offsets/triangle_data.

The triangle_data dataset consists of 4 columns corresponding to polygon_id, followed by the triangle indices. Polygon ids allow reconstructing the polygonal face of each domain, which is stored as a collection of triangles with the same polygon id.

Connectivity

The microdomains are calculated as a partition of the 3D space (tessellation) into convex polygons. Therefore, each microdomain is adjacent to either neighboring domains or bounding walls. The neighboring information is stored in the data/neighbors dataset, which is indexed by the respective offsets /offsets/neighbors dataset.

Positive ids stored corresponding to astrocytic node ids, and negative ones corresponding to adjacent walls respectively. A circuit hyperrectangle has six bounding faces or walls. Currently, the respective wall geometry to each negative id is not stored.

Scaling Factors

Microdomains are first calculated as a tessellation during building and are then scaled to slightly overlap, reproducing biological behavior. Only the scaled domains, which are used throughout the building workflow, are stored to file.

It is possible to reconstruct the regular tessellation by using the scaling factor used to scale each domain. The scaling_factors are stored in data/scaling_factors. Note that there are no offsets for the scaling_factors because it’s linear dataset with one value per domain.

The points of the regular microdomain before being scaled, can be reconstructed as follows:

regular_points = (1 / scaling_factor) * (scaled_points - centroid) + centroid

where scaled_points are the points stored in the specification described above, and centroid its the respective mean of these points.