Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-12 08:24:57

0001 """
0002 ePIC software stack configurations. Narrows/extends StackLayerConfig, StackJobDefintion,
0003 and StackStageDefinition from the configurations module to be ePIC-specific.
0004 
0005 Project: AID2E v0.0.0 - AI assisted Detector Design for EIC
0006 Homepage: https://aid2e.github.io/aid2e-framework
0007 Repository: https://github.com/aid2e/AID2E-framework.git
0008 """
0009 
0010 from pydantic import Field, model_validator
0011 from typing import List, Optional
0012 
0013 from aid2e.utilities.configurations.experimental_stack_config import (
0014     StackLayerConfig,
0015     StackJobDefinition,
0016     StackStageDefinition,
0017     StackBranchDefinition,
0018     StackWorkflowDefinition,
0019     StackWorkflowsConfiguration,
0020 )
0021 
0022 
0023 class EpicLayerConfig(StackLayerConfig):
0024     """Configuration of a layer of ePIC stack"""
0025     pass
0026 
0027 
0028 class EpicJobDefinition(StackJobDefinition):
0029     """
0030     Definition a job to run 1 or more ePIC stack
0031     layers. If no command provided, will set
0032     default based on specified evaluator_type.
0033     """
0034     layers: List[EpicLayerConfig] = Field(default_factory=list, description="Software stack layer configurations")
0035 
0036 
0037 class EpicStageDefinition(StackStageDefinition):
0038     """
0039     Definition of an ePIC stage in a workflow.
0040     Jobs are restricted to ePIC jobs.
0041     """
0042     jobs: List[EpicJobDefinition] = Field(default_factory = list, description="ePIC stack job definitions")
0043 
0044 
0045 class EpicBranchDefinition(StackBranchDefinition):
0046     """
0047     Definition of an ePIC branch in a workflow.
0048     Stages are restricted to ePIC stages.
0049     """
0050     stages: List[EpicStageDefinition] = Field(default_factory = list, description="ePIC stack branch definitions")
0051 
0052 
0053 class EpicWorkflowDefinition(StackWorkflowDefinition):
0054     """
0055     Definition of an ePIC workflow.
0056     """
0057     stack_type: Optional[str] = Field(default="epic", description="Experimental stack type for workflow-level geometry prep")
0058     branches: List[EpicBranchDefinition] = Field(default_factory=list, description="Software stack workflow branches (optional)")
0059 
0060     def get_implicit_branch(self) -> StackBranchDefinition:
0061         """
0062         Get or create single implicit branch if branches list is empty.
0063         Overrides StackWorkflowDefinition.get_implicit_branch to return
0064         EpicBranchDefinition.
0065         """
0066         if self.branches:
0067             raise ValueError("Branches already defined; cannot use implicit branch")
0068         return EpicBranchDefinition(name="implicit")
0069 
0070 
0071 class EpicWorkflowsConfiguration(StackWorkflowsConfiguration):
0072     """
0073     Container for ePIC workflows.
0074     """
0075     workflows: List[EpicWorkflowDefinition] = Field(..., min_items=1, description="List of workflows")