Foofah
Foofah: programming-by-example data transformation program synthesizer
Install / Use
/learn @umich-dbgroup/FoofahREADME
Foofah
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.
Requirements
- 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.
Foofah on Docker
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.
Installation
$ cd foofah
$ python setup.py install
User Guide
Foofah Console
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
Foofah Web Server
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.
Acknowledgements
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
References
Related Skills
node-connect
345.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
104.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
345.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
345.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
