Source code for the ACM SIGMOD 2019 paper:
Chang Ge, Xi He, Ihab F. Ilyas, Ashwin Machanavajjhala: APEx: Accuracy-Aware Differentially Private Data Exploration. SIGMOD Conference 2019: 177-194
Full papper is available on arXiv. You can also watch a video for a quick introduction.
APEx was built using Python and MySQL as the backend data management. It was tested on Python 3.6 and MySQL Server 5.5. As the first step, clone this rep:
git clone https://github.com/cgebest/APEx.git
cd APEx
The dependencies are listed in the environment.yml
. If you use conda
as the package manger, dependencies can be installed using the following command:
conda env create -f=environment.yml
conda activate apex
If you do not have a native MySQL server running on your system, an easy way is to start a MySQL docker container.
docker run --name apexsql -e MYSQL_ROOT_PASSWORD=rootPass -p 3306:3306 -d mysql
We provide an US Census database image for the testing purpose. To import the image:
cd data
./importDB.sh
To run the sample queries, simply go to the test
directory, and run the following command:
cd test
python test_census.py
To run your own queries, please refer the following folders to define your data and queries:
./query/
: workload query definition. See examples ofcensus
andlocation
../privacy/
: privacy engine and many differential privacy mechanisms../conn/
: database connection.
Please reach out to Chang Ge (chang.ge AT uwaterloo.ca) for questions and comments.