cranio¶
Cranio is a Python package used for force measurements, data analysis and visualization in posterior calvarial vault osteodistraction (PCVO). PCVO is used to treat patients with craniosynostosis.
Craniosynostosis is a condition occurring in infants where bones in the skull are prematurely fused resulting in abnormal head shape, decreased intracranial volume (ICV) and increased intracranial pressure (ICP). Fibrous sutures bones of the skull are prematurely fused by turning into bone. This prevents the skull from growing perpendicular to the ossified suture which is compensated by increased growth parallel to the fused suture. The features of craniosynostosis are determined by which sutures are closed. In some case, the resulting growth pattern only leads to abnormal head shape while leaving enough room for the brain inside the skull. In other cases, in addition to abnormal head shape, intracranial volume is decreased leading to elevated intracranial pressure. Elevated ICP can cause headache, vomiting, visual impairment (e.g., papilledema), obstructive sleep apnea and neurobehavioral impairment. Cranisynostosis affects 1/2000 infants and usually occurs as an isolated condition. In 15% - 40% of cases craniosynostosis is part of a syndrome. Craniosynostosis can be treated with calvarial vault reconstruction/remodeling (CVR) or posterior calvarial vault osteodistraction (PCVO).
General description on PCVO goes here…
General description on force measurements goes here…
Getting Started¶
These instructions will get you a copy of the project up and running on your local machine.
Hardware¶
Torque sensor¶
The craniodistractor measurements are taken with a Imada HTG2-4 digital torque gauge. The gauge features a remote torque sensor with a Jacob’s chuck.
Software¶
Prerequisites:
- OS: Windows, Linux, OS X (tested on Windows 10 and Linux)
- Python 3.6.x
- git
- FTDI USB Serial Port driver for Windows (32-bit)
Installing the software¶
Install from source:
git clone https://github.com/smomni/cranio
cd cranio
python3 -m virtualenv venv
venv/Scripts/activate
pip install -r requirements.txt
pip install -e .[test]
Building the documentation¶
Build HTML documentation:
cd docs
make html
The built documentation is located in docs/build/html.
Running the software¶
Initialize database (first time only):
cranio initdb
Start the measurement software:
cranio run
Distraction and measurement workflow¶
The distraction workflow consists of three subsequent sequences:
- Measurement sequence,
- Event detection sequence, and
- Note sequence.
Measurement sequence¶
- Select a patient from the dropdown menu
- If no patients are listed in the dropdown menu, you need to add one from the File menu in the top left corner
- Enter operator name
- (Optional) Disable / Enable changing patient from the dropdown menu by clicking
Toggle Patient Lock - Select distractor number
- Click
Startto start the measurement - Rotate the distractor slowly and steadily approximately 1/3 of a full turn and monitors the amount of performed rotation from the holes located in the Jacobs Chuck of the screw driver
- 1/3 of a full turn = distraction event
- Supports the screw driver with your free hand while repositioning the “rotating hand”
- Repeat steps 6 and 7 until 1 full turn has been performed
- Release the screw driver from the distractor
- Click
Stopto stop the measurement and start the Event detection sequence
Event detection sequence¶
- Verify that the number of distraction events (3 by default) is correct
- If not, remove redundant events by clicking
Removefor an event or remove all events by clickingRemove all - Add missing events by setting the number of events to be added in
Add/remove eventsand clickAdd
- If not, remove redundant events by clicking
- (Optional) Annotate distraction events by setting their boundaries to correct positions (i.e., beginning and end of distraction events) and
ticking
Annotation donefor the distraction events and- Boundaries can be set
- interactively by dragging the boundaries on the figure, or
- entering the boundary time values in the
Eventbox
- If distractions were performed but not measured (e.g., due to operator error), untick
Recordedfor the unrecorded distraction events- Example: Operator does the distraction and afterwards realizes that he/she forgot to record it.
The operator clicks
StartandStopto get to the event detection sequence and unticksRecordedfor the distraction events. This way the fact that the distractions were performed is stored in the database even though no data was recorded.
- Example: Operator does the distraction and afterwards realizes that he/she forgot to record it.
The operator clicks
- Click
Okto continue to the Note sequence
NOTE: If the operator does not have enough time to do the annotations during the distraction session, he/she can skip step 2. The distraction events can later be annotated as a post-processing step.
Note sequence¶
- Enter number of full turns (1 by default)
- Write any additional notes you may have regarding the distraction
- Click
Okto return to the Measurement sequence
Data¶
The distraction meta and raw data are stored locally in a SQLite database file cranio.db.
The database file shall be sent to the investigators for data analysis periodically (e.g., daily or weekly) during the treatment.
The database file contains no sensitive patient information as the patient data is pseudonymized.
Acknowledgments¶
- Ritvanen, A., et al. “Force measurements during posterior calvarial vault osteodistraction: A novel measurement method.” Journal of Cranio-Maxillofacial Surgery 45.6 (2017): 981-989.



