FigRecipe (scitex-plt) - Reproducible Scientific Figures
FigRecipe is a framework for creating reproducible, style-editable scientific figures via YAML recipes. It wraps matplotlib with automatic recording, enabling figures to be reproduced, modified, and shared. Part of SciTeX.
FigRecipe separates data, style, and specification for fully reproducible scientific figures.
Role in SciTeX Ecosystem
FigRecipe is the first app built on the SciTeX platform – it proves the app pattern
that other apps follow. It works standalone (figrecipe gui) AND embedded in
scitex-cloud. The orchestrator re-exports it as scitex.plt.
scitex (orchestrator) -- re-exports figrecipe as scitex.plt
|-- scitex-app -- runtime SDK (FigRecipe inherits ScitexAppConfig)
|-- scitex-ui -- React/TS components (FigRecipe consumes these)
+-- figrecipe (this package) -- reference app
scitex (docs): Orchestrator that re-exports
scitex.pltscitex-app (docs): Runtime SDK providing
ScitexAppConfigscitex-ui (docs): Shared frontend components consumed by FigRecipe
Getting Started
Key Features
Automatic Recording: All matplotlib calls automatically recorded to YAML
Reproducibility: Recreate any figure from its recipe file
Style Editing: Change styles without regenerating data
Data Preservation: Plot data saved to CSV files
CSV Column Input: Reference CSV columns in declarative specs
Statistical Annotations: Add significance brackets with p-values
Multi-Panel Composition: Combine figures with fr.compose()
Diagrams: Box-and-arrow diagrams with mm-based coordinates, 9 validation rules (R1–R9), auto-fix, and flex layout
MCP Integration: AI agents can create figures via MCP server
47 Plot Types: All standard matplotlib plot types supported
Quick Example
Python API:
import figrecipe as fr
import numpy as np
# Create figure (auto-recording enabled)
fig, ax = fr.subplots()
# Standard matplotlib API
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x), label="sin(x)")
ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.legend()
# Save creates image + recipe + data CSVs
fr.save(fig, "my_plot.png")
CLI:
# Reproduce a figure from recipe
figrecipe reproduce my_plot.yaml -o reproduced.png
# Launch GUI editor
figrecipe gui my_plot.yaml
# Validate reproduction fidelity
figrecipe validate my_plot.yaml
MCP Server:
# Start MCP server for AI agent integration
figrecipe mcp start
Four Freedoms for Research
The freedom to run your research anywhere – your machine, your terms.
The freedom to study how every step works – from raw data to final manuscript.
The freedom to redistribute your workflows, not just your papers.
The freedom to modify any module and share improvements with the community.
AGPL-3.0 – because research infrastructure deserves the same freedoms as the software it runs on.