Cilia, microscopic hairs lining nearly every cell surface in your body, play a major role in developmental and sinopulmonary health. As such, deriving quantitative properties of their motion is compelling for both clinical and research purposes. Here we demonstrate a computational pipeline built entirely in Python for analyzing ciliary motion using a variety of machine learning techniques.
Python For Public Health:
Building Statistical Models
Of Ciliary Motion
University of Georgia
Part I: Cilia and their pathologies
What are cilia?
Scale bars: 10µm
Why do we care about cilia?
u Association with
congenital heart disease
u Nodal flow
u Left-right asymmetry
How do we diagnose ciliopathies?
Cheap, fast, inaccurate Slow, expensive, accurate (?)
What is our goal?
u Input: high-speed video of ciliary biopsy
u Output: quantitative properties of observed motion
Part II: Quantitative features of
Strategy for quantifying motion
From videos to features
Features describing motion
Scaling (zoom) Deformation
Not useful in
“Novel use of differential image velocity invariants to categorize ciliary
motion defects.” Quinn SP, Francis R, Lo C, Chennubhotla CS. Proceedings
of the Biomedical Science and Engineering Conference (BSEC) 2011.
What do these features look like?
How do we represent these
xt 1 +
xt 2 +
What can we do with these
Automated identification of abnormal respiratory
ciliary motion in nasal biopsies. Quinn SP, Zahid
M, Durkin J, Francis R, Lo C, Chennubhotla CS.
Science Translational Medicine 2015.
Part III: The Python ecosystem
Collecting data from collaborators
1. Upload to django website
2. Annotate manually
3. Save annotations in
database using SQLAlchemy
Processing raw video data
1. Videos in AVI format
2. Convert to NumPy arrays
3. Compute optical flow with
4. Compute rotation with SciPy
signal processing filters
Derivation of time series models
u …custom code!
u Cross-validation for model
fitting and testing using
u joblib / PySpark for
u matplotlib + seaborn /
bokeh for visualization
Part IV: Conclusions and future
u 93% classification: methods are
u Dynamic texture representation is
u Blackbox tool for clinicians
u Web front-end + Python
middleware + Spark back-end
u Upload video -> Get analysis
u Assist experts with diagnostics
u Expert input
u Phenotype annotations, regions of
u Normal / Abnormal is an
u Unsupervised motion
u Associate specific motion