Eyemap Archive
Pre-computed maps between the hexagonal lattice of the Drosophila compound eye and the 3D viewing direction of each ommatidium/optic-lobe column — ready to browse, inspect in 3D, and download.
What is an "eyemap"?
Each ommatidium (facet) of the fly's compound eye corresponds to a column
of neurons running through the optic lobe. An eyemap
records, for every column, its position in a hexagonal lattice (
p, q) alongside the 3D direction that column
looks out into the world — a unit vector (x,
y, z) on the sphere of gaze directions,
equivalently given as spherical angles (theta,
phi). Some datasets also link each column to a specific
identified neuron (rootid) in a connectome reconstruction.
| Column | Meaning |
|---|---|
p, q | Hexagonal lattice coordinates of the column (oblique axes) |
x, y, z | Unit viewing-direction vector — a point on the unit sphere (+x forward, +y left, +z up/dorsal) |
theta, phi | The same direction as spherical angles, in degrees |
rootid | Connectome neuron ID at that column (only present for some datasets) |
This archive currently hosts eyemaps registered to the FAFB/FlyWire and male CNS (maleCNS) connectomes, including a Dorsal Rim Area (DRA) variant for the polarized-light-sensing region of the eye. See Browse for the full list with per-dataset details.
Using the site
Browse lists every available
eyemap with its source connectome, date, hemisphere coverage, and point
count. From there, open the 3D
Viewer to rotate a dataset as a 3D scatter of viewing
directions, or switch to a flattened Mollweide or Mercator projection
(the same views used in downstream analysis code). Each dataset card also
links directly to its raw .xlsx/.rda files plus
plain CSV/JSON exports.
Programmatic download
manifest.json is a
machine-readable index of every dataset and its stable download URLs —
fetch it first, then pull whichever files you need without scraping the
site.
# Python
import requests, pandas as pd
manifest = requests.get(
"https://artxz.github.io/eyemap-archive/manifest.json"
).json()
ds = next(d for d in manifest["datasets"] if d["id"] == "eyemap_783_20240701")
url = ds["hemispheres"]["left"]["files"]["csv"]
df = pd.read_csv("https://artxz.github.io/eyemap-archive/" + url)
# R
manifest <- jsonlite::fromJSON("https://artxz.github.io/eyemap-archive/manifest.json")
ds <- manifest$datasets[manifest$datasets$id == "eyemap_783_20240701", ]
df <- read.csv(paste0("https://artxz.github.io/eyemap-archive/", ds$hemispheres$left$files$csv))