EMI-Meshing: High-quality extracellular-membrane-intracellular meshes of the mouse visual cortex
Description
This repository features a family of tetrahedral meshes of a dense reconstruction of the mouse visual cortex at extreme resolution. Both the extracellular space (ECS) and the main cellular structures are explicitly represented and labelled.
The dataset is based on the Cortical MM^3 dataset centred at position 225182-107314-22000 with a resolution of 32 x 32 x 40 nm^3. It contains a total of 20 meshes. The meshed domains are cubes with side lengths 5000, 10000, 20000 and 40000 nm and include the largest 5, 10, 50, 100 and 200 cells in the respective tissue volume, respectively.
Data
The dataset has the following content:
-
surface meshes: The surfaces of the extracted cells in `.ply` format, suitable for visualization with ParaView or usage in other meshing or simulation software
-
volume meshes: The generated volumetric meshes in `.xdmf` format, containing labels for the extracellular space (label 1) and increasing integer values (2,..., N) for all cells. The file `facet.xdmf`contains facet marker, where the label *l* corresponds to the boundary between ECS and cell *l*. The outer boundaries are marked as `l + offset`, where `offset` is the next higher power of ten of the number of cells (`offset=int(10 ** np.ceil(np.log10(N_cells)))`).
Usage
The meshes are intended for usage with FEniCS (see code below), but can equally be read and used with other Software.
from fenics import *
import numpy as np
mesh = Mesh()
infile = XDMFFile("mesh.xdmf")
infile.read(mesh)
gdim = mesh.geometric_dimension()
labels = MeshFunction("size_t", mesh, gdim)
infile.read(labels, "label")
infile.close()
# get all local labels
np.unique(labels.array())
# array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], dtype=uint64)
infile = XDMFFile("facets.xdmf")
infile.read(mesh)
gdim = mesh.geometric_dimension()
boundary_marker = MeshFunction("size_t", mesh, gdim - 1)
infile.read(boundary_marker, "boundaries")
infile.close()
# get all local facet labels
np.unique(boundary_marker.array())
# array([ 0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 101, 102,
# 103, 104, 105, 106, 107, 108, 109, 110, 111], dtype=uint64)