Precision medicine is an emerging approach for disease treatment and prevention that delivers personalized care to individual patients by considering their genetic makeups, medical histories, environments, and lifestyles. Despite the rapid advancement of precision medicine and its considerable promise, several underlying technological challenges remain unsolved. One such challenge of great importance is the security and privacy of precision health–related data, such as genomic data and electronic health records, which stifle collaboration and hamper the full potential of machine-learning (ML) algorithms. To preserve data privacy while providing ML solutions, in our article, Briguglio, et. al., we provide three contributions. First, we propose a generic machine learning with encryption (MLE) framework, which we used to build an ML model that predicts cancer from one of the most recent comprehensive genomics datasets in the field. Second, our framework’s prediction accuracy is slightly higher than that of the most recent studies conducted on the same dataset, yet it maintains the privacy of the patients’ genomic data. Third, to facilitate the validation, reproduction, and extension of this work, we provide an open-source repository that contains:
- the design and implementation of the MLE framework (folder
SystemArchitecture
). Please, read below for more information. - all the ML experiments and code (folder
ModelTraining
) - the final predictive model deployed and the MLE framework, both deployed to a free cloud service
https://mle.isot.ca
The server is meant to be deployed as a service, hence referred to as MLE.service, which is not exposed to the network. Instead, nginx (or something similar) should be used as a reverse proxy which manages incoming HTTP traffic and forwards the appropriate HTTP traffic to the MLE service. The nginx reverse proxy is also deployed as a service, nginx.service. Below is a summary for maintenance after deploying on a Ubuntu machine with nginx reverse proxy. Instructions for deployment can be found here.
You can stop or restart a service, or check a service's status (while it is running or stopped) using:
sudo systemctl [restart|stop|status] [MLE|nginx]
The MLE service can be configured by editing /etc/systemd/system/MLE.service
. After making edits,
the service will have to be reloaded with:
systemctl daemon-reload
An exmple .NET service configuration can be found here. The ExecStart
line should read:
ExecStart=/usr/bin/dotnet /var/www/MLE/CDTS_PROJECT.dll
The nginx
rules for the MLE service can be configured by editing
/etc/nginx/sites-available/default
. The global nginx
rules, for all services, can be configured
by editing /etc/nginx/nginx.conf
. Likewise, after making edits run:
sudo nginx -t
Which verifies the syntax of the configuration files, and
sudo nginx -s reload
An exmple nginx service configuration can be found here.
/Server
contains the server side applications
From the Server directory, do the following:
-
compile with:
dotnet publish --configuration Release
-
After compilation, copy the entire publishing folder into
/var/www/MLE
with:sudo rm /var/www/MLE/ -r sudo cp ./bin/Release/netcoreapp3.1/publish/ /var/www/MLE/ -r
-
Then restart the service with:
sudo systemctl restart MLE.service
/Client
contains the client application
From the Client directory, do the following:
-
clone the repo to a Windows machine with .NET install 3.1 installed, compile with:
dotnet publish --configuration Release -r win-x64 -p:PublishSingleFile=true --self-contained true
-
The compiled
exe
will be namedCDTS_Project.exe
in./Client/bin/release/netcoreapp3.1/win-x64/publish/
; rename itMLE.txt
and copy to both/home/[username]/Healthcare-Security-Analysis/Server/wwwroot/DownloadableFiles/
and/var/www/MLE/wwwroot/DownloadableFiles/
; overwrite the old files if needed with:cp /home/[username]/Healthcare-Security-Analysis/Client/bin/Release/netcoreapp3.1/win-x64/publish/CDTS_PROJECT.exe /home/[username]/Healthcare-Security-Analysis/Server/wwwroot/DownloadableFiles/MLE.txt cp /home/[username]/Healthcare-Security-Analysis/Client/bin/Release/netcoreapp3.1/win-x64/publish/CDTS_PROJECT.exe /var/www/MLE/wwwroot/DownloadableFiles/MLE.txt
-
Then restart the service with:
sudo systemctl restart MLE.service
- Briguglio, W., Moghaddam, P., Yousef, W. A., Traore, I., & Mamun, M. (2021) "Machine Learning in Precision Medicine to Preserve Privacy via Encryption". arXiv Preprint, arXiv:2102.03412.
Please, cite this work as
@Article{Briguglio2021MachineLearningPrecisionMedicine-arxiv,
author = {William Briguglio and Parisa Moghaddam and Waleed A. Yousef and Issa Traore and
Mohammad Mamun},
title = {Machine Learning in Precision Medicine to Preserve Privacy via Encryption},
journal = {arXiv Preprint, arXiv:2102.03412},
year = 2021,
url = {https://github.com/isotlaboratory/Healthcare-Security-Analysis-MLE},
primaryclass = {cs.LG}
}