Synner is a tool that helps users generate real-looking synthetic data by visually and declaratively specifying the properties of the dataset such as each field’s statistical distribution, its domain, and its relationship to other fields. It provides instant feedback on every user interaction by updating multiple visualizations of the generated dataset and even suggests data generation specifications from a few user examples and interactions. Synner visually communicates the inherent randomness of statistical data generation.
Is this Real? Generating Synthetic Data that Looks Real
Miro Mannino, Azza Abouzied - UIST'19
Synner: Generating Realistic Synthetic Data
Miro Mannino, Azza Abouzied - SIGMOD'20
This repository contains:
Synner's source code and the datasets we used for our publications.
Synner can be run as a server, which also provides the user interface, or as a command line interface application.
Synner server can be run by launching the main static method in edu.nyu.dtl.synner.SynnerServerApplication
.
This method will run Synner's server as a Spring Boot application in port 5042.
To build the image execute:
./build-docker-image.sh
To run the image:
./run-docker-image.sh
Synner can be launched from the command line interface with Java by using the main static method in
class edu.nyu.dtl.synner.core.Main
This method accepts a path of a JSON file as a console argument, where the generation specification script is saved.
For example:
java -classpath "..." edu.nyu.dtl.synner.core.Main my-specifications.json
This generation specification script can be saved from the User Interface with "Script -> Save"
To build the back end:
cd /path/to/synner
mvn clean package
To build the front-end:
cd /path/to/synner/synner-server/src/main/resources/static
bower install
npx sass main.scss main.css
This can either be launched directly from the src/main/
with:
cd /path/to/synner/synner-server/src/main/resources/static
npm run live-server
Or it can be run using the Synner server running with Spring Boot.