Foofah [1][2] is a programming-by-example data transformation program synthesis system. It is able to generate a data transformation program defined in Professor Joe Hellerstein's Potter's Wheel paper [3] using an input-output example from the end user.
- Linux
- Python 2.7
- g++
- Boost.Python (Mac, Linux)
- setuptools
$ python -m pip install -U pip setuptools
In fact, other Python modules numpy
, tabulate
, cherrypy
, editdistance
, python-Levenshtein
, matplotlib
are also required. But they could be installed using setuptools in next section.
Build Foofah container
$ docker build -t foofah .
Run Foofah contrainer
$ docker run -p 8080:8080 foofah
Foofah web service will be available at localhost:8080.
$ cd foofah
$ python setup.py install
To test Foofah against individual test case from the console:
$ cd foofah
$ python foofah.py --input <test_file>
Note that each test case must be a json file that contains one json object with two members, InputTable
and OutputTable
, both of which are 2d array of strings, representing the user-provided input-output example.
To learn other command-line argument options:
$ python foofah.py --help
To interact with Foofah through a web interface (as shown in video):
$ python foofah_server.py
By default, the service will be available at localhost:8080.
Foofah is being developed in the University of Michigan. This work in part supported by National Science Foundation grants IIS-1250880, IIS-1054913, NSF IGERT grant 0903629, a Sloan Research Fellowship and a CSE Department Fellowship