How ucla-cdl/planet-lang works
PLanet is a declarative tool for authoring and analyzing experimental designs. Researchers define variables and design constraints, optionally compose designs by nesting or crossing them, then the design’s Designer configures a solver to produce plans. The package also exposes unit assignment and analysis capabilities. The graph reflects documented features and relationships visible in the excerpts or SOURCE INDEX; unsampled implementation details are not expanded into speculative call paths.
Main entry points: design.py Design builder · __init__.py Public API · nest.py Nested designs · cross.py Crossed designs
Components 17
Design authoring
- Public API
src/planet/__init__.py - Experiment variables
src/planet/variable.py - Design builder
src/planet/design.py - Design constraints
src/planet/constraint.py - Constraint manager
src/planet/constraint_manager.py - Nested designs
src/planet/nest.py - Crossed designs
src/planet/cross.py
Plan generation
- Design evaluation
src/planet/designer.py - Constraint solver
src/planet/solver.py - Solver bitvectors
src/planet/bitvector.py - Plan generation
src/planet/plans.py - Plan randomization
src/planet/randomizer.py
Unit assignment
- Units and groups
src/planet/unit.py - Plan assignment
src/planet/assignment.py
Design analysis
- Effect analysis
src/planet/analysis.py - Output formatting
src/planet/formatter.py
Other components
- Researcher
Connections 16
- Researcher → Public API: authors designs
- Public API → Design builder: exposes
src/planet/__init__.py - Public API → Experiment variables: exposes
src/planet/__init__.py - Public API → Nested designs: exposes
src/planet/__init__.py - Public API → Crossed designs: exposes
src/planet/__init__.py - Public API → Plan assignment: exposes
src/planet/__init__.py - Design builder → Experiment variables: adds variables
src/planet/design.py - Design builder → Constraint manager: creates manager
src/planet/design.py - Design builder → Design constraints: adds constraints
src/planet/design.py - Design builder → Design evaluation: starts evaluation
src/planet/design.py - Design evaluation → Constraint solver: configures solver
src/planet/designer.py - Constraint solver → Solver bitvectors: creates bitvectors
src/planet/solver.py - Nested designs → Design builder: creates combined design
src/planet/nest.py - Crossed designs → Design builder: creates combined design
src/planet/cross.py - Researcher → Effect analysis: requests effect analysis
- Researcher → Units and groups: defines participants
src/planet/unit.py