This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This repository contains the generation system for the PixMo-Docs, CoSyn-400K, and CoSyn-point datasets. It's a Python-based pipeline system that uses LLMs to generate synthetic multimodal data including charts, tables, documents, diagrams, and other visualizations.
Install dependencies and set up environment:
conda create --name pixmo-doc python=3.10
conda activate pixmo-doc
pip install -r requirements.txtSet required API keys:
export OPENAI_API_KEY=your-api-key
export ANTHROPIC_API_KEY=your-api-key
export HF_TOKEN=your-api-key # optional, for HuggingFace uploadsAdditional system dependencies:
- LaTeX: Required for LaTeX-based pipelines
- Mermaid CLI:
npm install -g @mermaid-js/mermaid-cli - Playwright:
pip install playwright && playwright install - Additional packages:
pip install mpl_finance<=0.10.1 mplfinance<=0.12.10b0 cairosvg<=2.7.1
python main.py -p {PIPELINE} -t {TYPE} -n {NUM_SAMPLES} -m {DATASET_NAME}# Generate 5 bar charts using Matplotlib
python main.py -p "MatplotlibChartPipeline" -n 5 -m "matplotlib_test" -t "bar chart"
# Generate multiple pipeline types
python main.py -p "MatplotlibChartPipeline,PlotlyChartPipeline" -n 10 -t "bar chart,line chart"-p, --pipelines: Pipeline names (comma-separated)-t, --types: Visualization types to generate (comma-separated)-n, --num: Number of samples per pipeline-l, --llm: LLM model (default: gpt-4o)-c, --code_llm: Code generation LLM (default: claude-sonnet)-s, --seed: Random seed (default: 42)-b, --batch_size: LLM batch size (default: 24)-m, --name: Dataset name for HuggingFace upload-f, --force: Force regeneration
main.py: Entry point with argument parsingpipeline/all_pipelines.py: Main orchestrator with DataDreamer session managementpipeline/: Individual pipeline implementations organized by category
- Charts: MatplotlibChartPipeline, PlotlyChartPipeline, VegaLiteChartPipeline, LaTeXChartPipeline, HTMLChartPipeline
- Tables: LaTeXTablePipeline, MatplotlibTablePipeline, PlotlyTablePipeline, HTMLTablePipeline
- Documents: LaTeXDocumentPipeline, HTMLDocumentPipeline, DOCXDocumentPipeline
- Diagrams: GraphvizDiagramPipeline, MermaidDiagramPipeline, LaTeXDiagramPipeline
- Circuits: SchemdrawCircuitPipeline, LaTeXCircuitPipeline
- Graphics: SVGGraphicPipeline, AsymptoteGraphicPipeline, DALLEImagePipeline, RdkitChemicalPipeline, LaTeXMathPipeline, LilyPondMusicPipeline
- Web: HTMLScreenPipeline, HTMLDocumentPointPipeline
Each pipeline follows a consistent structure:
- GenerateTopics: Create topics for the visualization type
- GenerateData: Generate synthetic data based on topics
- GenerateVisualization: Create the actual visualization code and image
- GenerateQA: Generate question-answer pairs (optional)
pipeline/utils/: Shared utilities including LLM support, rendering helpers, and instruction generators- DataDreamer framework integration for step orchestration and caching
- Support for both OpenAI (GPT-4o) and Anthropic (Claude Sonnet) models
- Built-in HuggingFace Hub publishing capabilities
- Default text LLM: GPT-4o
- Default code LLM: Claude Sonnet
- Configurable batch sizes for parallel processing
- Custom Anthropic wrapper for Claude integration
Generated datasets contain:
metadata: Pipeline and configuration informationtopic: Generated topic/descriptiondata: Synthetic data used for visualizationcode: Generated code (Python/LaTeX/HTML/etc.)image: Rendered visualizationqa: Question-answer pairs (when enabled)
Results are saved to ./session_output/ and can be published to HuggingFace Hub.