Deep learning models for predicting fetal distress from electronic fetal monitoring.
If you use this repo, please cite:
Jennifer A. McCoy, Lisa D. Levine, Guangya Wan, Corey Chivers, Joseph Teel, William G. La Cava (2024). Intrapartum electronic fetal heart rate monitoring to predict acidemia at birth with the use of deep learning. American Journal of Obstetrics and Gynecology (AJOG) sciencedirect.com | PubMed | pdf
- Developed by William La Cava (@lacava), Jennifery McCoy, and Corey Chivers
- contact [email protected]
This project uses tensorflow within a Docker container to train the models.
For the data preprocessing and result postprocessing, the conda environment is provided in environment.yml
.
The conda environment can be installed by running conda env create
from the repo root directory.
The model training setup needs the following:
- docker
- docker-compose
- Tensorflow Docker: https://www.tensorflow.org/install/docker
- Nvidia docker: https://github.com/NVIDIA/nvidia-docker/blob/master/README.md#quickstart
- Clone the repo
- Copy and change
mfm.env.template
tomfm.env
and change the UID to match your user id. You can see your user id by typing
id
- Run
docker-compose build
To build the docker container. You should only have to do this once.
- To start the container, run
docker-compose up -d
To start a terminal in the docker container, type ./start_terminal.sh
.
Preprocessing scripts for CTU-UHB and Penn cohorts are in preprocessing/
.
To generate the CTU-UHB training and test sets, first download the database from physionet.
Then navigate to preprocessing/CTU
and run
python preprocess_data.py --data_dir {path-to-ctu-data}
Models are defined in the methods/
folder and trained using train_models.py
.
Type python train_models.py -h
to see how it is used.
As an example, the following would train and test a CNN multiscale classifier on the CTU data in data/CTU
, using a random seed of 42, training on GPU 0, with a classification pH threshold of 7.05, batch size of 128, using data samples preprocessed (see above) to have one hour of tracings with up to 30% missingness and a sample rate of 0.25 Hz and lab order results available within 30 minutes of the end of the trace:
python train_models.py run \
--datadir data/CTU \
--ml CNN_multiscale_classification_maxpool \
--random_state 42 \
--gpu 0 \
--savedir results \
--threshold 7.05 \
--window 60 \
--missingness 0.3 \
--batch_size 128 \
--sample_rate 0.25 \
--lab_order_delay 30
Financial support: Women’s Reproductive Health Research grant 5 K12 HD 1265-22; T32- HD007440 Funding sources had no role in study design; in the collection, analysis, and interpretation of data; in the writing of the report; or in the decision to submit the article for publication.