3D Cell Parameterization

Spherical harmonics coefficients-based parameterization of the cytoplasm and nucleoplasm for 3D cells

Installation
Stable Release: pip install aicscytoparam
Development Head: pip install git+https://github.com/AllenCell/aics-cytoparam.git
How to use
Here we outline an example of how to use aicscytoparam
to create a parameterization of a 3D cell. In this case, the 3D cells will be represented by a cell segementation, nuclear segmentation and a fluorescent protein (FP) image representing the fluorescent signal of a tagged protein.
import numpy as np
import matplotlib.pyplot as plt
from aicscytoparam import cytoparam
from skimage import morphology as skmorpho
w = 100
mem = np.zeros((w, w, w), dtype = np.uint8)
mem[20:80, 20:80, 20:80] = 1
nuc = np.zeros((w, w, w), dtype = np.uint8)
nuc[40:60, 40:60, 30:50] = 1
gfp = np.random.rand(w**3).reshape(w,w,w)
gfp[mem==0] = 0
gfp[:, w//2:] = 0
gfp[nuc>0] = 0
plt.imshow((mem + nuc)[w//2], cmap='gray')
plt.imshow(gfp[w // 2], cmap='gray', alpha=0.25)
plt.axis('off')

coords, coeffs_centroid = cytoparam.parameterize_image_coordinates(
seg_mem=mem,
seg_nuc=nuc,
lmax=16,
nisos=[32, 32]
)
coeffs_mem, centroid_mem, coeffs_nuc, centroid_nuc = coeffs_centroid
gfp_representation = cytoparam.cellular_mapping(
coeffs_mem=coeffs_mem,
centroid_mem=centroid_mem,
coeffs_nuc=coeffs_nuc,
centroid_nuc=centroid_nuc,
nisos=[32, 32],
images_to_probe=[('gfp', gfp)]
).data.squeeze()
print(gfp_representation.shape)
(65, 8194)
from skimage import morphology as skmorpho
mem_round = skmorpho.ball(w // 3)
nuc_round = skmorpho.ball( w// 3)
nuc_round = skmorpho.binary_erosion(
nuc_round, selem=np.ones((20, 20, 20))
).astype(np.uint8)
plt.imshow((mem_round + nuc_round)[w // 3], cmap='gray')
plt.axis('off')

coords_round, _ = cytoparam.parameterize_image_coordinates(
seg_mem=mem_round,
seg_nuc=nuc_round,
lmax=16,
nisos=[32, 32]
)
gfp_morphed = cytoparam.morph_representation_on_shape(
img=mem_round + nuc_round,
param_img_coords=coords_round,
representation=gfp_representation
)
plt.imshow((mem_round + nuc_round)[w // 3], cmap='gray')
plt.imshow(gfp_morphed[w // 3], cmap='gray', alpha=0.25)
plt.axis('off')

Reference
For an example of how this package was used to analyse a dataset of over 200k single-cell images at the Allen Institute for Cell Science, please check out our paper in bioaRxiv.
Development
See CONTRIBUTING.md for information related to developing the code.
Questions?
If you have any questions, feel free to leave a comment in our Allen Cell forum: https://forum.allencell.org/.
Free software: Allen Institute Software License