https://github.com/justinlubin/honeybee
Analyze experimental data with Programming by Navigation
https://github.com/justinlubin/honeybee
program-synthesis programming-languages
Last synced: 5 months ago
JSON representation
Analyze experimental data with Programming by Navigation
- Host: GitHub
- URL: https://github.com/justinlubin/honeybee
- Owner: justinlubin
- License: bsd-3-clause
- Created: 2024-04-18T05:19:49.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2026-01-23T20:48:00.000Z (5 months ago)
- Last Synced: 2026-01-23T20:55:42.709Z (5 months ago)
- Topics: program-synthesis, programming-languages
- Language: Rust
- Homepage: https://honeybee-lang.org/
- Size: 8.13 MB
- Stars: 12
- Watchers: 3
- Forks: 2
- Open Issues: 24
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Honeybee
Honeybee is a programming tool scientists can use to help them write Python
code to analyze experimental data. Its goal is to enable scientists to write
the programs they need with _only_ domain expertise, _not_ programming
expertise.
The frontend for Honeybee—which currently targets experimental biology—can be
accessed via the
[Honeybee Editor](https://editor.honeybee-lang.org).
Honeybee is based on our recent work on
[Programming by Navigation](https://dl.acm.org/doi/10.1145/3729264)
appearing in PLDI 2025.
## Honeybee Editor video demo
https://github.com/user-attachments/assets/e75636f7-d6ea-4498-9753-a0bf89e3447f
## Repository structure
The main directories are:
- `engine`: Programming by Navigation synthesis (all the algorithms behind
Honeybee). Written in Rust.
- `editor`: Frontend code for the Honeybee Editor. Written in Elm.
- `honey_lang`: An ergonomic Python API to define building blocks for
Honeybee. Written in Python.
- `honey_libs`: Honeybee libraries (for now, just experimental biology).
The `pldi25` directory contains materials for the PLDI 2025 artifact evaluation,
including the benchmarks we used (in the `benchmark` subdirectory). The easiest
way to run the artifact evaluation is to follow the steps on the pre-packaged
[Zenodo archive](https://zenodo.org/records/15259161) for the project.
## Beyond Honeybee
Honeybee is part of a broader project we’re working on called SciInterop to
enable scientists across a variety of scientific domains to write code with
only domain expertise, not programming expertise. Honeybee and SciInterop are
based on our recent work on
[Programming by Navigation](https://dl.acm.org/doi/10.1145/3729264),
which is agnostic to the underlying scientific domain. SciInterop can therefore
support domains that look very different from biology, like geospatial data
analysis. For example, for geospatial data analysis, we’re incorporating
bread-and-butter computational analyses such as the normalized difference
vegetation index (NDVI). Beyond additional domains, we are also working on
capabilities for SciInterop to help debug experimental design issues before
time-consuming and costly experiments get run as well as functionality to
import existing scientific publications into a Honeybee-like navigation
interface. Stay tuned to our website
[honeybee-lang.org](https://honeybee-lang.org)
and our
[GitHub repository](https://github.com/justinlubin/honeybee)
to stay up-to-date on our project!