Skip to main content
The component dependency graph defines the runtime call relationships between all 16 EMEP components. A directed edge from A to B means component A invokes component B during execution.

Dependency Graph

Legend

Component Grouping

Key Dependency Patterns

  1. ExperimentTracker is central: All major operations log through ExperimentTracker, which depends on ModelRegistry and ArtifactStore for persistence.
  2. MergeEngine is a hub: MergeEngine calls ModelLoader, TensorEngine, ModelCompatibilityAnalyzer, and CandidateGenerator. No other component calls all four.
  3. EvolutionEngine drives the loop: EvolutionEngine calls MergeEngine and FitnessEngine, creating the iterative search cycle.
  4. EvaluationEngine is isolated from MergeEngine: EvaluationEngine does not call MergeEngine directly. It receives candidates from CandidateGenerator via ExperimentTracker.
  5. InferenceBackend is a leaf: InferenceBackend is called by EvaluationEngine and DeploymentManager but calls only ModelLoader and QuantizationEngine.

Cycle Detection

The only intentional cycle is EvolutionEngine → MergeEngine → CandidateGenerator → (via ExperimentTracker) → EvaluationEngine → FitnessEngine → EvolutionEngine. This is the primary research loop. All other dependencies are acyclic.

Next Steps

See System Dependency Map for the executive pipeline view, or Data Flow Map for the data class flows between components.