Port SyntheticAssemblyGenerator to solver/datagen/generator.py #5

Closed
opened 2026-02-02 19:32:42 +00:00 by forbes · 0 comments
Owner

Summary

Move SyntheticAssemblyGenerator class from data/synthetic/pebble-game.py (L1047-1275) into solver/datagen/generator.py.

Class overview

Generates assembly graphs with known minimal constraint sets for training data. Uses the pebble game to incrementally build assemblies, tracking which constraints are independent at each step.

Methods to port

  • __init__(seed) — initializes numpy RNG
  • generate_chain_assembly(n_bodies, joint_type) — serial kinematic chain (always underconstrained)
  • generate_rigid_assembly(n_bodies) — spanning tree with fixed joints, then relaxes to weaker types while maintaining rigidity
  • generate_overconstrained_assembly(n_bodies, extra_joints) — rigid assembly + extra redundant joints
  • generate_training_batch(batch_size, n_bodies_range) — generates labeled training examples with per-joint independence/redundancy flags

Requirements

  • Import from solver.datagen.types (RigidBody, Joint, JointType)
  • Import from solver.datagen.analysis (analyze_assembly)
  • Full type annotations
  • No behavioral changes
  • __all__ = ["SyntheticAssemblyGenerator"]

Depends on

  • #1 (shared types)
  • #4 (analyze_assembly)
## Summary Move `SyntheticAssemblyGenerator` class from `data/synthetic/pebble-game.py` (L1047-1275) into `solver/datagen/generator.py`. ## Class overview Generates assembly graphs with known minimal constraint sets for training data. Uses the pebble game to incrementally build assemblies, tracking which constraints are independent at each step. ## Methods to port - `__init__(seed)` — initializes numpy RNG - `generate_chain_assembly(n_bodies, joint_type)` — serial kinematic chain (always underconstrained) - `generate_rigid_assembly(n_bodies)` — spanning tree with fixed joints, then relaxes to weaker types while maintaining rigidity - `generate_overconstrained_assembly(n_bodies, extra_joints)` — rigid assembly + extra redundant joints - `generate_training_batch(batch_size, n_bodies_range)` — generates labeled training examples with per-joint independence/redundancy flags ## Requirements - [ ] Import from `solver.datagen.types` (RigidBody, Joint, JointType) - [ ] Import from `solver.datagen.analysis` (analyze_assembly) - [ ] Full type annotations - [ ] No behavioral changes - [ ] `__all__ = ["SyntheticAssemblyGenerator"]` ## Depends on - #1 (shared types) - #4 (analyze_assembly)
forbes added the phase:1port labels 2026-02-02 19:32:42 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/solver#5