Source code for ska_oso_pdm.project

from pydantic import Field

from ska_oso_pdm._shared import Metadata, PdmObject, ProjectID, TerseStrEnum
from ska_oso_pdm._shared.target import Target
from ska_oso_pdm.proposal.calibration import CalibrationStrategy
from ska_oso_pdm.proposal.data_product_sdp import DataProductSDP
from ska_oso_pdm.proposal.data_product_src import DataProductSRC
from ska_oso_pdm.proposal.observation_set import ObservationSets
from ska_oso_pdm.proposal.result import Result


[docs] class Purpose(TerseStrEnum): """ A set of "purpose" categories associated with a project """ SCIENCE = "Science" ENGINEERING = "Engineering" COMMISSIONING = "Commissioning" CALIBRATION = "Calibration"
[docs] class Author(PdmObject): """ The author of a Proposal """ pis: list[str] = Field(default_factory=list) cois: list[str] = Field(default_factory=list)
[docs] class ScienceProgramme(PdmObject): # This is the primary thing for the ObservingBlock. This list will be the same size as the group in the Proposal observation_sets: list[ObservationSets] = Field( default_factory=list, description="List of observations associated with the proposal", ) # The other fields are all required to get bits of data - when generating the SBDs we will link things from the observation sets targets: list[Target] = Field( default_factory=list, description="List of targets associated with the proposal" ) calibration_strategies: list[CalibrationStrategy] = Field( default_factory=list, description="List of calibration strategies associated with the proposal", ) data_product_sdps: list[DataProductSDP] = Field( default_factory=list, description="List of data products associated with the SDP", ) data_product_src_nets: list[DataProductSRC] = Field( default_factory=list, description="List of data products associated with the SRC-Net", ) result_details: list[Result] | None = Field( default_factory=list, description="List of target/observation set combinations with SensCalc results", )
[docs] class ObservingBlock(PdmObject): obs_block_id: str name: str | None = None sbd_ids: list[str] = Field(default_factory=list) science_programmes: list[ScienceProgramme] = Field(default_factory=list)
[docs] class Project(PdmObject): interface: str | None = None prj_id: ProjectID | None = None name: str | None = None metadata: Metadata | None = None prsl_ref: str | None = None author: Author | None = None purpose: Purpose | None = None obs_blocks: list[ObservingBlock] = Field(default_factory=list)