piel.types
==========

.. py:module:: piel.types

.. autoapi-nested-parse::

   Top Level Types Declaration, all should be imported here.

   These types are intended to be pure static types. They can only contain parameter definitions of the data types,
   add data type validators, and the only functions that can be added in these types is overwriting the base class
   base hidden methods. No other methods can be added here. This is because these classes are intended to be pure data
   types which are operated upon purely. If we begin adding custom methods on the type definitions, not only do they become bloated,
   but functional composition complexity is increased and the "static" data types become a hell to manage.



Submodules
----------

.. toctree::
   :maxdepth: 1

   /autoapi/piel/types/analogue/index
   /autoapi/piel/types/connectivity/index
   /autoapi/piel/types/constants/index
   /autoapi/piel/types/core/index
   /autoapi/piel/types/digital/index
   /autoapi/piel/types/digital_electro_optic/index
   /autoapi/piel/types/electrical/index
   /autoapi/piel/types/electro_optic/index
   /autoapi/piel/types/electronic/index
   /autoapi/piel/types/environment/index
   /autoapi/piel/types/experimental/index
   /autoapi/piel/types/file_system/index
   /autoapi/piel/types/integration/index
   /autoapi/piel/types/materials/index
   /autoapi/piel/types/metrics/index
   /autoapi/piel/types/photonic/index
   /autoapi/piel/types/physical/index
   /autoapi/piel/types/quantity/index
   /autoapi/piel/types/radio_frequency/index
   /autoapi/piel/types/reference/index
   /autoapi/piel/types/signal/index
   /autoapi/piel/types/symbolic/index
   /autoapi/piel/types/units/index


Attributes
----------

.. autoapisummary::

   piel.types.PathTypes
   piel.types.NumericalTypes
   piel.types.ArrayTypes
   piel.types.TupleIntType
   piel.types.TupleFloatType
   piel.types.TupleNumericalType
   piel.types.PackageArrayType
   piel.types.ModuleType
   piel.types.c
   piel.types.ConnectionTypes
   piel.types.PortTypes
   piel.types.ComponentTypes
   piel.types.TimeMetricsTypes
   piel.types.ZeroTimeMetrics
   piel.types.DigitalLogicModule
   piel.types.AbstractBitsType
   piel.types.BitsType
   piel.types.BitsList
   piel.types.DigitalRunID
   piel.types.HDLSimulator
   piel.types.HDLTopLevelLanguage
   piel.types.LogicSignalsList
   piel.types.LogicImplementationType
   piel.types.TruthTableLogicType
   piel.types.DCMeasurementDataTypes
   piel.types.DCMeasurementDataCollectionTypes
   piel.types.MeasurementDataTypes
   piel.types.MeasurementDataCollectionTypes
   piel.types.FrequencyMeasurementDataTypes
   piel.types.VoltageCurrentSignalNamePair
   piel.types.FrequencyMeasurementConfigurationTypes
   piel.types.FrequencyMeasurementTypes
   piel.types.MeasurementTypes
   piel.types.MeasurementConfigurationTypes
   piel.types.MeasurementCollectionTypes
   piel.types.PhaseMapType
   piel.types.PhaseTransitionTypes
   piel.types.SwitchFunctionParameter
   piel.types.SParameterCollection
   piel.types.ElectronicCircuitComponent
   piel.types.RFAmplifierTypes
   piel.types.ProjectType
   piel.types.CircuitComponent
   piel.types.MaterialReferenceType
   piel.types.MaterialReferencesTypes
   piel.types.MaterialSpecificationType
   piel.types.PhotonicCircuitComponent
   piel.types.OpticalTransmissionCircuit
   piel.types.RecursiveNetlist
   piel.types.SParameterMatrixTuple
   piel.types.ElectricalSignalDomains
   piel.types.QuantityTypesDC
   piel.types.PhasorTypes
   piel.types.FrequencyTransmissionModel
   piel.types.FrequencyTransmissionList
   piel.types.DataTimeSignalData
   piel.types.EdgeTransitionAnalysisTypes
   piel.types.MultiTimeSignalData
   piel.types.MultiDataTimeSignal
   piel.types.MultiDataTimeSignalCollectionTypes
   piel.types.MultiDataTimeSignalAnalysisTypes
   piel.types.DataTimeSignalAnalysisTypes
   piel.types.SignalTimeSources
   piel.types.BaseSIUnitNameList
   piel.types.A
   piel.types.dB
   piel.types.dBm
   piel.types.degree
   piel.types.GHz
   piel.types.Hz
   piel.types.nm
   piel.types.ns
   piel.types.m
   piel.types.MHz
   piel.types.mm2
   piel.types.mW
   piel.types.ohm
   piel.types.ps
   piel.types.ratio
   piel.types.s
   piel.types.us
   piel.types.W
   piel.types.V


Classes
-------

.. autoapisummary::

   piel.types.PielBaseModel
   piel.types.Instance
   piel.types.Connection
   piel.types.Component
   piel.types.Port
   piel.types.ComponentCollection
   piel.types.PhysicalComponent
   piel.types.PhysicalConnection
   piel.types.PhysicalPort
   piel.types.ComponentMetrics
   piel.types.TimeMetric
   piel.types.DispersiveTimeMetrics
   piel.types.TruthTable
   piel.types.BitPhaseMap
   piel.types.Environment
   piel.types.Cryostat
   piel.types.TemperatureStage
   piel.types.Sourcemeter
   piel.types.SourcemeterConfiguration
   piel.types.Multimeter
   piel.types.MultimeterConfiguration
   piel.types.Device
   piel.types.DeviceConfiguration
   piel.types.MeasurementDevice
   piel.types.ExperimentInstance
   piel.types.Experiment
   piel.types.ExperimentCollection
   piel.types.VNA
   piel.types.VNAConfiguration
   piel.types.MeasurementConfiguration
   piel.types.Measurement
   piel.types.MeasurementCollection
   piel.types.DCSweepMeasurementDataCollection
   piel.types.DCMeasurementDataCollection
   piel.types.MeasurementData
   piel.types.MeasurementDataCollection
   piel.types.ExperimentData
   piel.types.ExperimentDataCollection
   piel.types.VNASParameterMeasurementData
   piel.types.VNASParameterMeasurementDataCollection
   piel.types.VNAPowerSweepMeasurementData
   piel.types.FrequencyMeasurementDataCollection
   piel.types.PropagationDelayMeasurementData
   piel.types.PropagationDelayMeasurementDataCollection
   piel.types.OscilloscopeMeasurementData
   piel.types.OscilloscopeMeasurementDataCollection
   piel.types.ElectroOpticDCMeasurement
   piel.types.ElectroOpticDCMeasurementCollection
   piel.types.VNASParameterMeasurementConfiguration
   piel.types.VNAPowerSweepMeasurementConfiguration
   piel.types.VNASParameterMeasurement
   piel.types.VNAPowerSweepMeasurement
   piel.types.VNAPowerSweepMeasurementCollection
   piel.types.VNASParameterMeasurementCollection
   piel.types.PropagationDelayMeasurement
   piel.types.PropagationDelayMeasurementCollection
   piel.types.PropagationDelayMeasurementConfiguration
   piel.types.OscilloscopeMeasurement
   piel.types.OscilloscopeMeasurementCollection
   piel.types.OscilloscopeMeasurementConfiguration
   piel.types.Oscilloscope
   piel.types.OscilloscopeConfiguration
   piel.types.WaveformGeneratorConfiguration
   piel.types.WaveformGenerator
   piel.types.CoaxialCableGeometryType
   piel.types.CoaxialCableHeatTransferType
   piel.types.CoaxialCableMaterialSpecificationType
   piel.types.DCCableGeometryType
   piel.types.DCCableHeatTransferType
   piel.types.DCCableMaterialSpecificationType
   piel.types.DCCable
   piel.types.CoaxialCable
   piel.types.PCB
   piel.types.Short
   piel.types.Open
   piel.types.Load
   piel.types.Through
   piel.types.PowerSplitter
   piel.types.BiasTee
   piel.types.FockStatePhaseTransition
   piel.types.OpticalStateTransitionCollection
   piel.types.ElectroOpticModulatorMetrics
   piel.types.ElectroOpticModulator
   piel.types.PulsedLaserMetrics
   piel.types.PulsedLaser
   piel.types.ElectronicCircuit
   piel.types.ElectronicChip
   piel.types.RFTwoPortAmplifier
   piel.types.RFAmplifierCollection
   piel.types.PowerAmplifierMetrics
   piel.types.PowerAmplifier
   piel.types.LNAMetrics
   piel.types.LowNoiseTwoPortAmplifier
   piel.types.ScalarMetric
   piel.types.ScalarMetricCollection
   piel.types.SignalDCCollection
   piel.types.SignalTraceDC
   piel.types.SignalDC
   piel.types.Phasor
   piel.types.PathTransmission
   piel.types.NetworkTransmission
   piel.types.FrequencyMetricCollection
   piel.types.FrequencyMetric
   piel.types.ElectroOpticDCPathTransmission
   piel.types.ElectroOpticDCNetworkTransmission
   piel.types.TimeSignalData
   piel.types.ExponentialSource
   piel.types.PulseSource
   piel.types.PiecewiseLinearSource
   piel.types.SineSource
   piel.types.SymbolicValue
   piel.types.Reference
   piel.types.Quantity
   piel.types.Unit


Package Contents
----------------

.. py:data:: PathTypes

.. py:class:: PielBaseModel(/, **data: Any)

   Bases: :py:obj:`pydantic.BaseModel`


   A base model class that serves as the foundation for other measurement in the project.
   This class extends pydantic's BaseModel and includes additional configuration
   settings for strict validation and immutability.

   .. attribute:: Config

      A nested class to configure the behavior of the model.
      arbitrary_types_allowed (bool): Allows arbitrary measurement.
      extra (str): Forbids extra attributes not defined in the model.
      validate_assignment (bool): Validates fields on assignment.
      strict (bool): Enforces strict type validation.
      allow_mutation (bool): Prevents mutation of the model's fields.

   .. method:: supplied_parameters() -> list[str]

      
      Returns a list of parameter names that have been supplied (i.e., are not None).
      


   .. py:class:: Config

      .. py:attribute:: arbitrary_types_allowed
         :value: True



      .. py:attribute:: extra
         :value: 'ignore'



      .. py:attribute:: validate_assignment
         :value: True



      .. py:attribute:: strict
         :value: True




.. py:data:: NumericalTypes

.. py:data:: ArrayTypes

.. py:data:: TupleIntType

.. py:data:: TupleFloatType

.. py:data:: TupleNumericalType

.. py:data:: PackageArrayType

.. py:data:: ModuleType

.. py:class:: Instance(/, **data: Any)

   Bases: :py:obj:`piel.types.PielBaseModel`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: name
      :type:  str
      :value: ''



   .. py:attribute:: attrs
      :type:  dict


.. py:data:: c

.. py:class:: Connection(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.core.Instance`


   This represents the fundamental data structure to identify a connection between two connection.

   Note that any connection has a


   .. py:attribute:: ports
      :type:  tuple[Port, Port] | list[Port]
      :value: ()



   .. py:attribute:: time
      :type:  piel.types.connectivity.timing.TimeMetricsTypes


.. py:class:: Component(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.core.Instance`


   This represents the fundamental data structure to identify a component with connection and internal or external connectivity.


   .. py:attribute:: ports
      :type:  list[Port]
      :value: []



   .. py:attribute:: connections
      :type:  list[Connection]
      :value: []



   .. py:attribute:: components
      :type:  list[Component]
      :value: []


      Note the recursive relationship that a component can be composed of multiple components.


   .. py:attribute:: metrics
      :type:  list[piel.types.connectivity.metrics.ComponentMetrics]
      :value: []


      Note that a given component might have a set of metrics corresponding to multiple variations of the testing conditions.


   .. py:method:: get_port(port_name: str) -> Optional[Port]

      Get a port by its name.



.. py:class:: Port(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.core.Instance`


   This represents the fundamental data structure to identify a port.


   .. py:attribute:: parent_component_name
      :type:  str
      :value: ''



.. py:data:: ConnectionTypes

.. py:data:: PortTypes

.. py:data:: ComponentTypes

.. py:class:: ComponentCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Instance`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: components
      :type:  list[ComponentTypes]
      :value: []



.. py:class:: PhysicalComponent(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Component`


   Represents the data of a physical component or device.


   .. py:attribute:: ports
      :type:  list[PhysicalPort | piel.types.connectivity.abstract.Port] | tuple[PhysicalPort | piel.types.connectivity.abstract.Port]
      :value: []



   .. py:attribute:: connections
      :type:  list[PhysicalConnection | piel.types.connectivity.abstract.Connection] | tuple[PhysicalConnection | piel.types.connectivity.abstract.Connection]
      :value: []



   .. py:attribute:: components
      :type:  list[piel.types.connectivity.abstract.Component | PhysicalComponent]
      :value: []


      Note the recursive relationship that a component can be composed of multiple components.


   .. py:attribute:: environment
      :type:  piel.types.environment.Environment


   .. py:attribute:: manufacturer
      :type:  str
      :value: ''


      The manufacturer of the device.


   .. py:attribute:: model
      :type:  str
      :value: ''


      The model of the device.


.. py:class:: PhysicalConnection(/, **data: Any)

   Bases: :py:obj:`piel.types.core.PielBaseModel`


   Describes a set of physical connection which are all connected. Represents a physical connection between interfaces.

   The components represent the physical implementation of the connections for the same connection index.


   .. py:attribute:: connections
      :type:  list[piel.types.connectivity.abstract.Connection | Any]
      :value: []



   .. py:attribute:: components
      :type:  tuple[piel.types.connectivity.abstract.Component, Ellipsis] | list[piel.types.connectivity.abstract.Component]
      :value: []



.. py:class:: PhysicalPort(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Port`


   This refers to any form of physical port which can be connected to. The socket refers to the corresponding physical location where such a port is connected to.


   .. py:attribute:: domain
      :type:  piel.types.signal.core.ElectricalSignalDomains | None
      :value: None



   .. py:attribute:: connector
      :type:  str
      :value: ''



   .. py:attribute:: manifold
      :type:  str
      :value: ''



.. py:class:: ComponentMetrics(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Instance`


   Note that a given metrics needs to be matched to a given environment in which the measurements are performed.
   For example, room temperature metrics are not equivalent to cryogenic metrics measurements, and as such
   require a collection of variables.


   .. py:attribute:: reference
      :type:  piel.types.reference.Reference


   .. py:attribute:: environment
      :type:  piel.types.environment.Environment


.. py:class:: TimeMetric(/, **data: Any)

   Bases: :py:obj:`piel.types.metrics.ScalarMetric`


   This class contains stastical timing information about a given path.

   .. rubric:: Notes

   Each component has some relevant time metrics which characterize
   the propagation of a signal across it. Now, this is more intricate in the case
   of dispersive of multi-frequency signals propagating through a device since
   propagation is dependent on signal frequency. One way to conceptualize it
   is that each frequency corresponds to an individual frequency, but this ignores
   recombination or superposition between the frequencies in a dispersive model.

   Also, timing information is in relation to the input signal that is being propagated through a component.

   We can create a higher level dispersive time metrics for multi-frequency components based on this one.

   The relevant timing we are interested in is as follows, as it has multiple definitions

   - In-to-Out Timing Propagation through a component
   - Group Delay of a signal through an interconnect
   - 10% to 90% rise time of the output waveform of an active component

   Having a shared timing definition is essential to perform correct timing analysis


   .. py:attribute:: value
      :type:  piel.types.core.NumericalTypes
      :value: 0



   .. py:attribute:: mean
      :type:  Optional[piel.types.core.NumericalTypes]
      :value: 0



   .. py:attribute:: min
      :type:  Optional[piel.types.core.NumericalTypes]
      :value: 0



   .. py:attribute:: max
      :type:  Optional[piel.types.core.NumericalTypes]
      :value: 0



   .. py:attribute:: standard_deviation
      :type:  Optional[piel.types.core.NumericalTypes]
      :value: 0



   .. py:attribute:: unit
      :type:  piel.types.units.Unit


.. py:class:: DispersiveTimeMetrics(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.core.Instance`


   A dispersive time-metrics is useful to represent multi-frequency timing information
   based on the harmonic nature of signals.


   .. py:attribute:: frequency_group
      :type:  dict[float, TimeMetric]

      Definition of a mutli-frequency component.


.. py:data:: TimeMetricsTypes

   Corresponds to all the implemented timing metrics accordingly.

.. py:data:: ZeroTimeMetrics

   Default zero-time metrics defined.

.. py:data:: DigitalLogicModule

.. py:data:: AbstractBitsType

   Alias for measurement representing digital bits.
   Can be one of:
   - str: A string representation of bits.
   - bytes: A byte representation of bits.
   - int: An integer representation of bits.

   :type: AbstractBitsType

.. py:data:: BitsType

   A type representing binary digital bits.
   It is an alias for the 'str' type.

   :type: BitsType

.. py:data:: BitsList

   An iterable collection of AbstractBitsType elements.
   Represents a sequence of digital bits.

   :type: BitsList

.. py:data:: DigitalRunID

.. py:data:: HDLSimulator

   A literal type representing supported HDL simulators.
   Can be one of:
   - "icarus": Refers to Icarus Verilog simulator.
   - "verilator": Refers to Verilator simulator.

   :type: HDLSimulator

.. py:data:: HDLTopLevelLanguage

   A literal type representing top-level hardware description languages.
   Can be one of:
   - "verilog": Refers to the Verilog HDL.
   - "vhdl": Refers to the VHDL HDL.

   :type: HDLTopLevelLanguage

.. py:data:: LogicSignalsList

   A list of strings representing the names of logic signals.

   :type: LogicSignalsList

.. py:data:: LogicImplementationType

.. py:class:: TruthTable(/, **data: Any)

   Bases: :py:obj:`piel.types.core.PielBaseModel`


   A model representing a truth table for a digital circuit, including its input and output connection.

   .. attribute:: input_ports

      List of input signal names for the truth table.

      :type: LogicSignalsList

   .. attribute:: output_ports

      List of output signal names for the truth table.

      :type: LogicSignalsList

   Properties:
       keys_list (list[str]): A combined list of input and output signal names.
       dataframe (pd.DataFrame): A pandas DataFrame representation of the truth table, excluding input and output connection.
       implementation_dictionary (dict): A dictionary including only the keys specified within input_ports and output_ports.


   .. py:attribute:: model_config

      Configuration for the model, should be a dictionary conforming to [`ConfigDict`][pydantic.config.ConfigDict].


   .. py:attribute:: input_ports
      :type:  LogicSignalsList

      List of input signal names for the truth table.

      :type: input_ports (LogicSignalsList)


   .. py:attribute:: output_ports
      :type:  LogicSignalsList

      List of output signal names for the truth table.

      :type: output_ports (LogicSignalsList)


   .. py:property:: ports_list
      :type: list[str]


      Returns a combined list of input and output signal names.

      :returns: The concatenated list of input and output connection.
      :rtype: list[str]


   .. py:property:: dataframe
      :type: pandas.DataFrame


      Returns a pandas DataFrame representation of the truth table, excluding the input and output connection.

      :returns: A DataFrame with the truth table files, excluding input and output port keys.
      :rtype: pd.DataFrame


   .. py:property:: implementation_dictionary
      :type: dict


      Returns a dictionary including only the keys specified within input_ports and output_ports.

      :returns: A dictionary with keys that are part of the input and output connection.
      :rtype: dict


.. py:data:: TruthTableLogicType

.. py:class:: BitPhaseMap(/, **data: Any)

   Bases: :py:obj:`piel.types.core.PielBaseModel`


   A model representing a mapping between digital bits and their corresponding phases.

   .. attribute:: bits

      An iterable collection of bits. Can be a list, tuple, or numpy array of elements that match the AbstractBitsType.

      :type: list[AbstractBitsType] | tuple[AbstractBitsType] | np.ndarray

   .. attribute:: phase

      An iterable collection of phases. Can be a list, tuple, or numpy array of elements that match the NumericalTypes.

      :type: list[NumericalTypes] | tuple[NumericalTypes] | np.ndarray

   Properties:
       dataframe (pd.DataFrame):
           A pandas DataFrame representation of the BitPhaseMap, combining the bits and phases into a tabular format.


   .. py:attribute:: bits
      :type:  list[piel.types.digital.BitsType] | tuple[piel.types.digital.BitsType] | numpy.ndarray

      bits (list[AbstractBitsType] | tuple[AbstractBitsType] | np.ndarray):
      An iterable collection of bits.
      Can be a list, tuple, or numpy array of elements that are of type AbstractBitsType.


   .. py:attribute:: phase
      :type:  list[piel.types.core.NumericalTypes] | tuple[piel.types.core.NumericalTypes] | numpy.ndarray

      phase (list[NumericalTypes] | tuple[NumericalTypes] | np.ndarray):
      An iterable collection of phases.
      Can be a list, tuple, or numpy array of elements that are of type NumericalTypes.


   .. py:property:: dataframe
      :type: pandas.DataFrame


      Returns a pandas DataFrame representation of the BitPhaseMap.

      :returns: A DataFrame containing the bits and their corresponding phases.
      :rtype: pd.DataFrame


.. py:class:: Environment(/, **data: Any)

   Bases: :py:obj:`piel.types.core.PielBaseModel`


   Data structure to define a corresponding environment.


   .. py:attribute:: temperature_K
      :type:  float
      :value: 293



   .. py:attribute:: region
      :type:  str
      :value: ''



.. py:class:: Cryostat(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Component`


   This represents the fundamental data structure to identify a component with connection and internal or external connectivity.


   .. py:attribute:: temperature_stages
      :type:  list[TemperatureStage]
      :value: []



.. py:class:: TemperatureStage(/, **data: Any)

   Bases: :py:obj:`piel.types.environment.Environment`, :py:obj:`piel.types.connectivity.abstract.Component`


   Standard definition for a generic temperature stage.


   .. py:attribute:: surface_area_m2
      :type:  float
      :value: None



.. py:class:: Sourcemeter(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.device.Device`


   Represents a sourcemeter.


   .. py:attribute:: configuration
      :type:  SourcemeterConfiguration
      :value: None



.. py:class:: SourcemeterConfiguration(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.device.DeviceConfiguration`


   This class corresponds to the configuration of data which is just inherent to the Sourcemeter connectivity and configuration,
   not the measurement setup connectivity.


   .. py:attribute:: voltage_set_V
      :type:  Optional[float]
      :value: None



   .. py:attribute:: voltage_range_V
      :type:  Optional[tuple]
      :value: None



   .. py:attribute:: current_limit_A
      :type:  Optional[float]
      :value: None



   .. py:attribute:: voltage_limit_V
      :type:  Optional[float]
      :value: None



.. py:class:: Multimeter(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.device.Device`


   Represents a multimeter.


.. py:class:: MultimeterConfiguration(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.device.DeviceConfiguration`


   This class corresponds to the configuration of data which is just inherent to the Multimeter connectivity and configuration,


.. py:class:: Device(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.physical.PhysicalComponent`


   Corresponds to the abstraction of a given device measurement.


   .. py:attribute:: configuration
      :type:  Optional[DeviceConfiguration]
      :value: None



   .. py:attribute:: serial_number
      :type:  str
      :value: ''



.. py:class:: DeviceConfiguration(/, **data: Any)

   Bases: :py:obj:`piel.types.core.PielBaseModel`


   A base model class that serves as the foundation for other measurement in the project.
   This class extends pydantic's BaseModel and includes additional configuration
   settings for strict validation and immutability.

   .. attribute:: Config

      A nested class to configure the behavior of the model.
      arbitrary_types_allowed (bool): Allows arbitrary measurement.
      extra (str): Forbids extra attributes not defined in the model.
      validate_assignment (bool): Validates fields on assignment.
      strict (bool): Enforces strict type validation.
      allow_mutation (bool): Prevents mutation of the model's fields.

   .. method:: supplied_parameters() -> list[str]

      
      Returns a list of parameter names that have been supplied (i.e., are not None).
      


.. py:class:: MeasurementDevice(/, **data: Any)

   Bases: :py:obj:`Device`


   Corresponds to the abstraction of a given device measurement.


   .. py:attribute:: measurement
      :type:  Optional[piel.types.experimental.measurements.core.MeasurementConfiguration]
      :value: None


      Contains the measurement information.


.. py:class:: ExperimentInstance(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.core.Instance`


   This is a specific instance of an measurement configuration. It can be the result of serialization a given
   experiment configuration. The experiment contains all devices that correspond a specific setup. Each device
   contains a particular configuration, or may have information about the environment, etc.


   .. py:attribute:: components
      :type:  list[piel.types.connectivity.generic.ComponentTypes] | tuple[piel.types.connectivity.generic.ComponentTypes]
      :value: []


      Contains all references to the instantiated devices.


   .. py:attribute:: connections
      :type:  list[piel.types.connectivity.generic.ConnectionTypes] | tuple[piel.types.connectivity.generic.ConnectionTypes]
      :value: []


      All the connectivity information is stored here.


   .. py:attribute:: goal
      :type:  str
      :value: ''


      The goal of the experiment test.


   .. py:attribute:: parameters
      :type:  dict

      A dictionary of reference parameters in this measurement instance. Does not contain all the serialised measurement data.


   .. py:attribute:: index
      :type:  int
      :value: 0


      A defined index of the experiment instance tuple.


   .. py:attribute:: date_configured
      :type:  str
      :value: ''


      The date the experiment was configured.


   .. py:attribute:: date_measured
      :type:  str
      :value: ''


      The date the experiment was measured.


   .. py:attribute:: measurement_configuration_list
      :type:  list[piel.types.experimental.measurements.generic.MeasurementConfigurationTypes]
      :value: []



.. py:class:: Experiment(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.core.Instance`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: name
      :type:  str
      :value: ''


      Every experiment is required to have a name.


   .. py:attribute:: goal
      :type:  str
      :value: ''


      The goal of the complete experiment.


   .. py:attribute:: experiment_instances
      :type:  list[ExperimentInstance]
      :value: []


      Contains all the experiment instances.


   .. py:attribute:: parameters_list
      :type:  list[dict]

      List of basic important parameters in dictionaries used to do basic metadata analysis of the experiment.


   .. py:attribute:: parent_directory
      :type:  piel.types.core.PathTypes
      :value: ''


      Optional parameter to specify the `parent_directory` of the Experiment, where the directories containing the data
      and metadata of the `ExperimentInstances` are constructed.


   .. py:attribute:: __getitem__


   .. py:property:: parameters


.. py:class:: ExperimentCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.core.Instance`


   This class contains a collection of different experiments,
   each which may contain a large set of measurements internally.


   .. py:attribute:: experiment_list
      :type:  list[Experiment]
      :value: []



.. py:class:: VNA(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.device.Device`


   Represents a vector-network analyser.


   .. py:attribute:: configuration
      :type:  Optional[VNAConfiguration]
      :value: None


      Just overwrites this section of the device definition.


   .. py:attribute:: ports
      :type:  tuple[piel.types.connectivity.physical.PhysicalPort] | list[piel.types.connectivity.physical.PhysicalPort]

      Defaults to a two-port VNA, defined as PORT1 and PORT2.


.. py:class:: VNAConfiguration(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.device.DeviceConfiguration`


   This class corresponds to the configuration of data which is just inherent to the VNA connectivity and configuration,
   not the measurement setup connectivity.


   .. py:attribute:: calibration_setting_name
      :type:  str
      :value: ''



   .. py:attribute:: measurement_configuration
      :type:  piel.types.experimental.measurements.generic.FrequencyMeasurementConfigurationTypes
      :value: None



.. py:class:: MeasurementConfiguration(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Instance`


   Standard definition for a measurement configuration.


   .. py:attribute:: name
      :type:  str
      :value: ''



   .. py:attribute:: parent_directory
      :type:  piel.types.core.PathTypes
      :value: ''



   .. py:attribute:: measurement_type
      :type:  str
      :value: ''



.. py:class:: Measurement(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Instance`


   Standard definition for a measurement. This should be the container for all the measurement files, it is not the data container.


   .. py:attribute:: name
      :type:  str
      :value: ''



   .. py:attribute:: type
      :type:  str
      :value: ''



   .. py:attribute:: parent_directory
      :type:  piel.types.core.PathTypes
      :value: ''



.. py:class:: MeasurementCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Instance`


   Generic class for MeasurementCollection


   .. py:attribute:: type
      :type:  str
      :value: ''



   .. py:attribute:: collection
      :type:  list[Measurement]
      :value: []



.. py:class:: DCSweepMeasurementDataCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.data.core.MeasurementDataCollection`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: collection
      :type:  list[piel.types.signal.dc_data.SignalDCCollection]
      :value: []



.. py:class:: DCMeasurementDataCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.data.core.MeasurementDataCollection`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: collection
      :type:  list[DCMeasurementDataTypes] | DCSweepMeasurementDataCollection
      :value: []



.. py:data:: DCMeasurementDataTypes

.. py:data:: DCMeasurementDataCollectionTypes

.. py:class:: MeasurementData(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.core.Instance`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: type
      :type:  Optional[str]
      :value: ''



.. py:class:: MeasurementDataCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.core.Instance`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: type
      :type:  str
      :value: ''



   .. py:attribute:: collection
      :type:  list[MeasurementData]
      :value: []



   .. py:attribute:: __getitem__


.. py:class:: ExperimentData(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.core.Instance`


   This is a definition of a collection of measurement data.


   .. py:attribute:: experiment
      :type:  piel.types.experimental.experiment.Experiment
      :value: None



   .. py:attribute:: data
      :type:  piel.types.experimental.measurements.data.generic.MeasurementDataCollectionTypes
      :value: None



   .. py:attribute:: __getitem__


.. py:class:: ExperimentDataCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.core.Instance`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: collection
      :type:  list[ExperimentData]
      :value: []



.. py:data:: MeasurementDataTypes

.. py:data:: MeasurementDataCollectionTypes

.. py:data:: FrequencyMeasurementDataTypes

.. py:class:: VNASParameterMeasurementData(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.data.core.MeasurementData`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: type
      :type:  str
      :value: 'VNASParameterMeasurementData'



   .. py:attribute:: network
      :type:  piel.types.signal.frequency.transmission.FrequencyTransmissionModel
      :value: None



.. py:class:: VNASParameterMeasurementDataCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.data.core.MeasurementDataCollection`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: type
      :type:  str
      :value: 'VNASParameterMeasurementDataCollection'



   .. py:attribute:: collection
      :type:  list[VNASParameterMeasurementData]
      :value: []



.. py:class:: VNAPowerSweepMeasurementData(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.data.core.MeasurementData`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: type
      :type:  str
      :value: 'VNAPowerSweepMeasurementData'



   .. py:attribute:: network
      :type:  piel.types.signal.frequency.transmission.FrequencyTransmissionModel | None
      :value: None



.. py:class:: FrequencyMeasurementDataCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.data.core.MeasurementDataCollection`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: type
      :type:  str
      :value: 'FrequencyMeasurementDataCollection'



   .. py:attribute:: collection
      :type:  list[FrequencyMeasurementDataTypes]
      :value: []



.. py:class:: PropagationDelayMeasurementData(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.data.core.MeasurementData`


   Standard definition for a collection of files that are part of a propagation delay measurement.

   The collection includes the device waveform, the measurement files and the reference waveform as per a propagation delay measurement.

   .. attribute:: measurements

      The collection of signal measurements.

      :type: Optional[SignalMetricsMeasurementCollection]

   .. attribute:: dut_waveform

      The device waveform.

      :type: Optional[TimeSignalData]

   .. attribute:: reference_waveform

      The reference waveform.

      :type: Optional[TimeSignalData]


   .. py:attribute:: type
      :type:  str
      :value: 'PropagationDelayMeasurementData'



   .. py:attribute:: measurements
      :type:  piel.types.metrics.ScalarMetricCollection | None
      :value: None



   .. py:attribute:: dut_waveform
      :type:  piel.types.signal.time_data.TimeSignalData | None
      :value: None



   .. py:attribute:: reference_waveform
      :type:  piel.types.signal.time_data.TimeSignalData | None
      :value: None



.. py:class:: PropagationDelayMeasurementDataCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.data.core.MeasurementDataCollection`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: type
      :type:  str
      :value: 'PropagationDelayMeasurementDataCollection'



   .. py:attribute:: collection
      :type:  list[PropagationDelayMeasurementData]
      :value: []



.. py:class:: OscilloscopeMeasurementData(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.data.core.MeasurementData`


   Standard definition for a collection of files that are part of a generic oscilloscope measurement

   The collection includes a list of waveform files, and a measurements file.

   .. attribute:: measurements

      The collection of signal measurements.

      :type: Optional[SignalMetricsMeasurementCollection]

   .. attribute:: waveform_list

      The collection of waveforms.

      :type: MultiTimeSignalData


   .. py:attribute:: type
      :type:  str
      :value: 'OscilloscopeMeasurementData'



   .. py:attribute:: measurements
      :type:  piel.types.metrics.ScalarMetricCollection | None
      :value: None



   .. py:attribute:: waveform_list
      :type:  piel.types.signal.time_data.MultiTimeSignalData
      :value: []



.. py:class:: OscilloscopeMeasurementDataCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.data.core.MeasurementDataCollection`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: type
      :type:  str
      :value: 'OscilloscopeMeasurementDataCollection'



   .. py:attribute:: collection
      :type:  list[OscilloscopeMeasurementData]
      :value: []



.. py:data:: VoltageCurrentSignalNamePair

.. py:class:: ElectroOpticDCMeasurement(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.core.Measurement`


   Standard definition for a measurement. This should be the container for all the measurement files, it is not the data container.


   .. py:attribute:: dc_transmission_file
      :type:  piel.types.core.PathTypes


   .. py:attribute:: connection
      :type:  piel.types.connectivity.generic.ConnectionTypes


.. py:class:: ElectroOpticDCMeasurementCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.core.MeasurementCollection`


   Generic class for MeasurementCollection


   .. py:attribute:: collection
      :type:  list[ElectroOpticDCMeasurement]


.. py:class:: VNASParameterMeasurementConfiguration(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.core.MeasurementConfiguration`


   Standard definition for a measurement configuration.


   .. py:attribute:: measurement_configuration_type
      :type:  str
      :value: 'VNASParameterMeasurementConfiguration'



   .. py:attribute:: frequency_range_Hz
      :type:  tuple[float, float] | list[float]
      :value: []



   .. py:attribute:: sweep_points
      :type:  int
      :value: 0



   .. py:attribute:: test_port_power_dBm
      :type:  float
      :value: 0.0



.. py:class:: VNAPowerSweepMeasurementConfiguration(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.core.MeasurementConfiguration`


   Standard definition for a measurement configuration.


   .. py:attribute:: measurement_configuration_type
      :type:  str
      :value: 'VNAPowerSweepMeasurementConfiguration'



   .. py:attribute:: base_frequency_Hz
      :type:  float
      :value: 0.0



   .. py:attribute:: power_range_dBm
      :type:  tuple[float, float] | list[float]
      :value: []



.. py:class:: VNASParameterMeasurement(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.core.Measurement`


   Standard definition for a collection of files that are part of a S-Parameter VNA measurement.


   .. py:attribute:: type
      :type:  str
      :value: 'VNASParameterMeasurement'



   .. py:attribute:: spectrum_file
      :type:  piel.types.core.PathTypes
      :value: ''



.. py:class:: VNAPowerSweepMeasurement(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.core.Measurement`


   Standard definition for a collection of files that are part of a VNA measurement.


   .. py:attribute:: type
      :type:  str
      :value: 'VNAPowerSweepMeasurement'



   .. py:attribute:: spectrum_file
      :type:  piel.types.core.PathTypes
      :value: ''



.. py:class:: VNAPowerSweepMeasurementCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.core.MeasurementCollection`


   Generic class for MeasurementCollection


   .. py:attribute:: type
      :type:  str
      :value: 'VNAPowerSweepMeasurementCollection'



   .. py:attribute:: collection
      :type:  list[VNAPowerSweepMeasurement]
      :value: []



.. py:class:: VNASParameterMeasurementCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.core.MeasurementCollection`


   Generic class for MeasurementCollection


   .. py:attribute:: type
      :type:  str
      :value: 'VNASParameterMeasurementCollection'



   .. py:attribute:: collection
      :type:  list[VNASParameterMeasurement]
      :value: []



.. py:class:: PropagationDelayMeasurement(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.core.Measurement`


   Standard definition for a collection of files that are part of a propagation delay measurement.
   The collection includes the device name, the measurement name and the date of the measurement.
   This configuration requires a device waveform, a measurement file and a reference waveform as per a propagation delay measurement.
   TODO add link to the documentation of the propagation delay measurement.


   .. py:attribute:: type
      :type:  str
      :value: 'PropagationDelayMeasurement'



   .. py:attribute:: dut_waveform_file
      :type:  piel.types.core.PathTypes
      :value: ''



   .. py:attribute:: reference_waveform_file
      :type:  piel.types.core.PathTypes
      :value: ''



   .. py:attribute:: measurements_file
      :type:  piel.types.core.PathTypes
      :value: ''



.. py:class:: PropagationDelayMeasurementCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.core.MeasurementCollection`


   Generic class for MeasurementCollection


   .. py:attribute:: type
      :type:  str
      :value: 'PropagationDelayMeasurementCollection'



   .. py:attribute:: collection
      :type:  list[PropagationDelayMeasurement]
      :value: []



.. py:class:: PropagationDelayMeasurementConfiguration(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.core.MeasurementConfiguration`


   Standard definition for a measurement configuration.


   .. py:attribute:: measurement_configuration_type
      :type:  str
      :value: 'PropagationDelayMeasurementConfiguration'



.. py:class:: OscilloscopeMeasurement(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.core.Measurement`


   Generic, extensible OscilloscopeMeasurement


   .. py:attribute:: type
      :type:  str
      :value: 'OscilloscopeMeasurement'



   .. py:attribute:: waveform_file_list
      :type:  list[piel.types.core.PathTypes]
      :value: []



   .. py:attribute:: measurements_file
      :type:  piel.types.core.PathTypes
      :value: ''



.. py:class:: OscilloscopeMeasurementCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.core.MeasurementCollection`


   Generic class for MeasurementCollection


   .. py:attribute:: type
      :type:  str
      :value: 'OscilloscopeMeasurementCollection'



   .. py:attribute:: collection
      :type:  list[OscilloscopeMeasurement]
      :value: []



.. py:class:: OscilloscopeMeasurementConfiguration(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.measurements.core.MeasurementConfiguration`


   Standard definition for a measurement configuration.


   .. py:attribute:: measurement_configuration_type
      :type:  str
      :value: 'OscilloscopeMeasurementConfiguration'



.. py:data:: FrequencyMeasurementConfigurationTypes

.. py:data:: FrequencyMeasurementTypes

.. py:data:: MeasurementTypes

.. py:data:: MeasurementConfigurationTypes

.. py:data:: MeasurementCollectionTypes

.. py:class:: Oscilloscope(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.device.MeasurementDevice`


   Represents an oscilloscope


   .. py:attribute:: configuration
      :type:  Optional[OscilloscopeConfiguration]
      :value: None


      Just overwrites this section of the device definition.


.. py:class:: OscilloscopeConfiguration(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.device.DeviceConfiguration`


   This class corresponds to the configuration of data which is just inherent to the Oscilloscope connectivity and configuration,
   not the measurement setup connectivity.


   .. py:attribute:: bandwidth_Hz
      :type:  piel.types.metrics.ScalarMetric
      :value: None



.. py:class:: WaveformGeneratorConfiguration(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.device.DeviceConfiguration`


   This class corresponds to the configuration of data which is just inherent to the WaveformGenerator connectivity and configuration,
   not the measurement setup connectivity.


   .. py:attribute:: signal
      :type:  piel.types.signal.time_sources.SignalTimeSources
      :value: None


      Contains an instantiation of the signal configuration applied as a reference.


.. py:class:: WaveformGenerator(/, **data: Any)

   Bases: :py:obj:`piel.types.experimental.device.Device`


   Represents a vector-network analyser.


   .. py:attribute:: configuration
      :type:  WaveformGeneratorConfiguration
      :value: None


      Just overwrites this section of the device definition.


.. py:class:: CoaxialCableGeometryType(/, **data: Any)

   Bases: :py:obj:`piel.types.quantity.Quantity`


   A base model class that serves as the foundation for other measurement in the project.
   This class extends pydantic's BaseModel and includes additional configuration
   settings for strict validation and immutability.

   .. attribute:: Config

      A nested class to configure the behavior of the model.
      arbitrary_types_allowed (bool): Allows arbitrary measurement.
      extra (str): Forbids extra attributes not defined in the model.
      validate_assignment (bool): Validates fields on assignment.
      strict (bool): Enforces strict type validation.
      allow_mutation (bool): Prevents mutation of the model's fields.

   .. method:: supplied_parameters() -> list[str]

      
      Returns a list of parameter names that have been supplied (i.e., are not None).
      


   .. py:attribute:: core_cross_sectional_area_m2
      :type:  float | None
      :value: 0


      The cross-sectional area of the core in meters squared.


   .. py:attribute:: length_m
      :type:  float
      :value: 0


      The length of the cable in meters.


   .. py:attribute:: sheath_cross_sectional_area_m2
      :type:  float | None
      :value: 0


      The cross-sectional area of the sheath in meters squared.


   .. py:attribute:: total_cross_sectional_area_m2
      :type:  float | None
      :value: 0


      The total cross-sectional area of the cable in meters squared.


.. py:class:: CoaxialCableHeatTransferType(/, **data: Any)

   Bases: :py:obj:`piel.types.quantity.Quantity`


   All units are in watts.


   .. py:attribute:: core
      :type:  float | None
      :value: 0


      The computed heat transfer in watts for the core of the cable.


   .. py:attribute:: sheath
      :type:  float | None
      :value: 0


      The computed heat transfer in watts for the sheath of the cable.


   .. py:attribute:: dielectric
      :type:  float | None
      :value: 0


      The computed heat transfer in watts for the dielectric of the cable.


   .. py:attribute:: total
      :type:  float
      :value: 0


      The total computed heat transfer in watts for the cable.


   .. py:attribute:: units
      :type:  str
      :value: 'W'



.. py:class:: CoaxialCableMaterialSpecificationType(/, **data: Any)

   Bases: :py:obj:`piel.types.quantity.Quantity`


   A base model class that serves as the foundation for other measurement in the project.
   This class extends pydantic's BaseModel and includes additional configuration
   settings for strict validation and immutability.

   .. attribute:: Config

      A nested class to configure the behavior of the model.
      arbitrary_types_allowed (bool): Allows arbitrary measurement.
      extra (str): Forbids extra attributes not defined in the model.
      validate_assignment (bool): Validates fields on assignment.
      strict (bool): Enforces strict type validation.
      allow_mutation (bool): Prevents mutation of the model's fields.

   .. method:: supplied_parameters() -> list[str]

      
      Returns a list of parameter names that have been supplied (i.e., are not None).
      


   .. py:attribute:: core
      :type:  Optional[piel.types.materials.MaterialReferenceType]
      :value: None


      The material of the core.


   .. py:attribute:: sheath
      :type:  Optional[piel.types.materials.MaterialReferenceType]
      :value: None


      The material of the sheath.


   .. py:attribute:: dielectric
      :type:  Optional[piel.types.materials.MaterialReferenceType]
      :value: None


      The material of the dielectric.


   .. py:method:: supplied_parameters()

      Returns a list of parameter names that have been supplied (i.e., are not None).

      :returns: A list of parameter names with non-None values.
      :rtype: list[str]



.. py:class:: DCCableGeometryType(/, **data: Any)

   Bases: :py:obj:`piel.types.quantity.Quantity`


   A base model class that serves as the foundation for other measurement in the project.
   This class extends pydantic's BaseModel and includes additional configuration
   settings for strict validation and immutability.

   .. attribute:: Config

      A nested class to configure the behavior of the model.
      arbitrary_types_allowed (bool): Allows arbitrary measurement.
      extra (str): Forbids extra attributes not defined in the model.
      validate_assignment (bool): Validates fields on assignment.
      strict (bool): Enforces strict type validation.
      allow_mutation (bool): Prevents mutation of the model's fields.

   .. method:: supplied_parameters() -> list[str]

      
      Returns a list of parameter names that have been supplied (i.e., are not None).
      


   .. py:attribute:: core_cross_sectional_area_m2
      :type:  float
      :value: 0


      The cross-sectional area of the core in meters squared.


   .. py:attribute:: length_m
      :type:  float
      :value: 0


      The length of the cable in meters.


   .. py:attribute:: total_cross_sectional_area_m2
      :type:  float
      :value: 0


      The total cross-sectional area of the cable in meters squared.


.. py:class:: DCCableHeatTransferType(/, **data: Any)

   Bases: :py:obj:`piel.types.quantity.Quantity`


   All units are in watts.


   .. py:attribute:: core
      :type:  Optional[float]
      :value: 0


      The computed heat transfer in watts for the core of the cable.


   .. py:attribute:: total
      :type:  float
      :value: 0


      The total computed heat transfer in watts for the cable.


   .. py:attribute:: units
      :type:  str
      :value: 'W'



.. py:class:: DCCableMaterialSpecificationType(/, **data: Any)

   Bases: :py:obj:`piel.types.quantity.Quantity`


   A base model class that serves as the foundation for other measurement in the project.
   This class extends pydantic's BaseModel and includes additional configuration
   settings for strict validation and immutability.

   .. attribute:: Config

      A nested class to configure the behavior of the model.
      arbitrary_types_allowed (bool): Allows arbitrary measurement.
      extra (str): Forbids extra attributes not defined in the model.
      validate_assignment (bool): Validates fields on assignment.
      strict (bool): Enforces strict type validation.
      allow_mutation (bool): Prevents mutation of the model's fields.

   .. method:: supplied_parameters() -> list[str]

      
      Returns a list of parameter names that have been supplied (i.e., are not None).
      


   .. py:attribute:: core
      :type:  Optional[piel.types.materials.MaterialReferenceType]
      :value: None


      The material of the core.


.. py:class:: DCCable(/, **data: Any)

   Bases: :py:obj:`Cable`


   A DC cable is a single core cable that is used to transmit direct current.


   .. py:attribute:: geometry
      :type:  DCCableGeometryType | None
      :value: None



   .. py:attribute:: heat_transfer
      :type:  DCCableHeatTransferType | None
      :value: None



   .. py:attribute:: material_specification
      :type:  DCCableMaterialSpecificationType | None
      :value: None



.. py:class:: CoaxialCable(/, **data: Any)

   Bases: :py:obj:`piel.types.radio_frequency.RFPhysicalComponent`


   A coaxial cable is a type of electrical cable that has an inner conductor surrounded by a tubular insulating layer,
   surrounded by a tubular conducting shield.


   .. py:attribute:: geometry
      :type:  CoaxialCableGeometryType | None


   .. py:attribute:: heat_transfer
      :type:  Optional[CoaxialCableHeatTransferType]
      :value: None



   .. py:attribute:: material_specification
      :type:  Optional[CoaxialCableMaterialSpecificationType]
      :value: None



.. py:class:: PCB(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.physical.PhysicalComponent`


   Represents the data of a physical component or device.


.. py:class:: Short(/, **data: Any)

   Bases: :py:obj:`piel.types.PhysicalComponent`


   Represents the data of a physical component or device.


   .. py:attribute:: ports
      :type:  list[piel.types.PhysicalPort]


.. py:class:: Open(/, **data: Any)

   Bases: :py:obj:`piel.types.PhysicalComponent`


   Represents the data of a physical component or device.


   .. py:attribute:: ports
      :type:  list[piel.types.PhysicalPort]


.. py:class:: Load(/, **data: Any)

   Bases: :py:obj:`piel.types.PhysicalComponent`


   Represents the data of a physical component or device.


   .. py:attribute:: ports
      :type:  list[piel.types.PhysicalPort]


.. py:class:: Through(/, **data: Any)

   Bases: :py:obj:`piel.types.PhysicalComponent`


   Represents the data of a physical component or device.


   .. py:attribute:: ports
      :type:  list[piel.types.PhysicalPort]


.. py:class:: PowerSplitter(/, **data: Any)

   Bases: :py:obj:`piel.types.radio_frequency.RFPhysicalComponent`


   Represents a physical RF (Radio Frequency) component with frequency-related properties.

   This class extends the PhysicalComponent class to include RF-specific attributes.

   Attributes:
   -----------
   network : FrequencyTransmissionModel | None
       A representation of the component's frequency network, typically containing
       s-parameter data. This is currently a placeholder and may be None.

   metrics : FrequencyMetricCollection
       A collection of frequency-related metrics for this RF component,
       including bandwidth and center transmission.

   Inherits all attributes from PhysicalComponent.

   Notes:
   ------
   - The 'network' attribute is currently using a placeholder type (Any | None)
     and is intended to be updated with a proper s-parameter representation in the future.
   - This class combines physical component properties with RF-specific metrics,
     making it suitable for modeling and analyzing RF devices in a physical context.


.. py:class:: BiasTee(/, **data: Any)

   Bases: :py:obj:`piel.types.radio_frequency.RFPhysicalComponent`


   Represents a physical RF (Radio Frequency) component with frequency-related properties.

   This class extends the PhysicalComponent class to include RF-specific attributes.

   Attributes:
   -----------
   network : FrequencyTransmissionModel | None
       A representation of the component's frequency network, typically containing
       s-parameter data. This is currently a placeholder and may be None.

   metrics : FrequencyMetricCollection
       A collection of frequency-related metrics for this RF component,
       including bandwidth and center transmission.

   Inherits all attributes from PhysicalComponent.

   Notes:
   ------
   - The 'network' attribute is currently using a placeholder type (Any | None)
     and is intended to be updated with a proper s-parameter representation in the future.
   - This class combines physical component properties with RF-specific metrics,
     making it suitable for modeling and analyzing RF devices in a physical context.


.. py:class:: FockStatePhaseTransition

   Bases: :py:obj:`typing_extensions.TypedDict`


   A typed dictionary representing a phase transition for Fock states in an electro-optic model.

   .. attribute:: phase

      The phase mapping for the transition.

      :type: PhaseMapType

   .. attribute:: input_fock_state

      The input Fock state as a tuple of integers.

      :type: TupleIntType

   .. attribute:: output_fock_state

      The output Fock state as a tuple of integers.

      :type: TupleIntType

   .. attribute:: target_mode_output

      Indicates whether the target mode is output (1 or True) or not (0 or False).

      :type: Optional[bool | int]


   .. py:attribute:: phase
      :type:  PhaseMapType


   .. py:attribute:: input_fock_state
      :type:  piel.types.core.TupleIntType


   .. py:attribute:: output_fock_state
      :type:  piel.types.core.TupleIntType


   .. py:attribute:: target_mode_output
      :type:  Optional[bool | int] | None


.. py:class:: OpticalStateTransitionCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.core.PielBaseModel`


   A model representing transitions between optical states, specifically for Fock states in an electro-optic system.

   .. attribute:: mode_amount

      The number of modes in the system.

      :type: int

   .. attribute:: target_mode_index

      The index of the target mode in the system.

      :type: int

   .. attribute:: transmission_data

      A list of Fock state phase transition mappings.

      :type: list[FockStatePhaseTransition]

   Properties:
       transition_dataframe (pd.DataFrame): A DataFrame representation of the transmission files.
       target_output_dataframe (pd.DataFrame): A DataFrame filtered to include only the transitions where target_mode_output is 1.


   .. py:attribute:: _ignore_keys
      :type:  list[str]
      :value: ['unitary', 'raw_output']



   .. py:attribute:: model_config

      Configuration for the model, should be a dictionary conforming to [`ConfigDict`][pydantic.config.ConfigDict].


   .. py:attribute:: mode_amount
      :type:  int | None
      :value: None


      mode_amount (int):
      The number of modes in the system.


   .. py:attribute:: target_mode_index
      :type:  int | None
      :value: None


      target_mode_index (int):
      The index of the target mode in the system.


   .. py:attribute:: transmission_data
      :type:  list[OpticalTransmission]

      transmission_data (list[FockStatePhaseTransition]):
      A list of dictionaries representing the phase transitions for Fock states.


   .. py:property:: dataframe
      :type: pandas.DataFrame


      Returns a full pandas DataFrame representation of the transmission files.

      :returns: A DataFrame containing the transmission files for the optical states.
      :rtype: pd.DataFrame


   .. py:property:: keys_list
      :type: list[str]


      Returns a list of keys from the first entry in the transmission files, excluding specified keys.

      :returns: A list of keys from the first transmission files entry, excluding the keys specified in `_ignore_keys`.
      :rtype: List[str]

      .. rubric:: Notes

      The keys specified in `_ignore_keys` will be excluded from the list of connection.


   .. py:property:: transition_dataframe
      :type: pandas.DataFrame


      Returns a pandas DataFrame representation of the transmission files, excluding specific keys.

      :returns: A DataFrame containing the transmission files for the optical states, with specified keys excluded.
      :rtype: pd.DataFrame

      .. rubric:: Notes

      The keys 'unitary' and 'raw_output' will be excluded from the transmission files.


   .. py:property:: target_output_dataframe
      :type: pandas.DataFrame


      Returns a pandas DataFrame filtered to include only the transitions where target_mode_output is 1.

      :returns: A DataFrame containing only the transitions where the target mode is an output.
      :rtype: pd.DataFrame


.. py:data:: PhaseMapType

   Alias for phase map measurement.
   Can be one of:
   - TupleFloatType: A tuple of float values.
   - TupleIntType: A tuple of integer values.

   :type: PhaseMapType

.. py:data:: PhaseTransitionTypes

   A literal type for phase transition measurement.
   Can be one of:
   - "cross": Refers to a cross-type phase transition.
   - "bar": Refers to a bar-type phase transition.

   :type: PhaseTransitionTypes

.. py:data:: SwitchFunctionParameter

.. py:data:: SParameterCollection

.. py:class:: ElectroOpticModulatorMetrics(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.metrics.ComponentMetrics`


   In this class, we define the corresponding relevant metrics to enable characterizing a modulator device.


.. py:class:: ElectroOpticModulator(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.physical.PhysicalComponent`


   This is an equivalent model of an Electro-Optical modulator.


   .. py:attribute:: metrics
      :type:  list[ElectroOpticModulatorMetrics]
      :value: []


      Note that a given component might have a set of metrics corresponding to multiple variations of the testing conditions.


.. py:class:: PulsedLaserMetrics(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.metrics.ComponentMetrics`


   In this class, we define the corresponding relevant metrics to enable characterizing a modulator device.


   .. py:attribute:: wavelength_nm
      :type:  piel.types.metrics.ScalarMetric


   .. py:attribute:: pulse_power_W
      :type:  piel.types.metrics.ScalarMetric


   .. py:attribute:: average_power_W
      :type:  piel.types.metrics.ScalarMetric


   .. py:attribute:: pulse_repetition_rate_Hz
      :type:  piel.types.metrics.ScalarMetric


   .. py:attribute:: pulse_width_s
      :type:  piel.types.metrics.ScalarMetric


.. py:class:: PulsedLaser(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.physical.PhysicalComponent`


   This is an equivalent model of an Electro-Optical modulator.


   .. py:attribute:: metrics
      :type:  list[PulsedLaserMetrics]
      :value: []


      Note that a given component might have a set of metrics corresponding to multiple variations of the testing conditions.


.. py:class:: ElectronicCircuit(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.physical.PhysicalComponent`


   Represents the data of a physical component or device.


.. py:class:: ElectronicChip(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.physical.PhysicalComponent`


   A model representing an electronic chip in a photonic circuit.


.. py:data:: ElectronicCircuitComponent

   PhotonicCircuitComponent:
   A type representing a component in a photonic circuit, as defined in the gdsfactory framework.
   This type is used to handle and manipulate photonic components in circuit designs.

.. py:class:: RFTwoPortAmplifier(/, **data: Any)

   Bases: :py:obj:`piel.types.electronic.core.RFElectronicCircuit`


   Represents a physical RF (Radio Frequency) component with frequency-related properties.

   This class extends the PhysicalComponent class to include RF-specific attributes.

   Attributes:
   -----------
   network : FrequencyTransmissionModel | None
       A representation of the component's frequency network, typically containing
       s-parameter data. This is currently a placeholder and may be None.

   metrics : FrequencyMetricCollection
       A collection of frequency-related metrics for this RF component,
       including bandwidth and center transmission.

   Inherits all attributes from PhysicalComponent.

   Notes:
   ------
   - The 'network' attribute is currently using a placeholder type (Any | None)
     and is intended to be updated with a proper s-parameter representation in the future.
   - This class combines physical component properties with RF-specific metrics,
     making it suitable for modeling and analyzing RF devices in a physical context.


.. py:class:: RFAmplifierCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.generic.ComponentCollection`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: components
      :type:  list[RFAmplifierTypes]
      :value: []



.. py:data:: RFAmplifierTypes

.. py:class:: PowerAmplifierMetrics(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.metrics.ComponentMetrics`


   A model representing the metrics for a high-voltage amplifier (HVA) or a Power Amplifier (PA).

   .. attribute:: footprint_mm2

      The physical footprint of the amplifier in square millimeters.

      :type: ScalarMetric

   .. attribute:: bandwidth_Hz

      The operational bandwidth of the amplifier in Hertz, given as a range (min, max).

      :type: ScalarMetric

   .. attribute:: power_added_efficiency

      The power added efficiency of the amplifier, given as a range (min, max).

      :type: ScalarMetric

   .. attribute:: power_consumption_mW

      The power consumption of the amplifier in milliwatts, given as a range (min, max).

      :type: ScalarMetric

   .. attribute:: power_gain_dB

      The power gain of the amplifier in decibels, given as a range (min, max).

      :type: ScalarMetric

   .. attribute:: saturated_power_output_dBm

      The saturated power output of the amplifier in dBm.

      :type: ScalarMetric

   .. attribute:: supply_voltage_V

      The supply voltage of the amplifier in volts.

      :type: ScalarMetric

   .. attribute:: technology_nm

      The technology node of the amplifier in nanometers.

      :type: ScalarMetric

   .. attribute:: technology_material

      The material technology used in the amplifier.

      :type: Optional[str]


   .. py:attribute:: footprint_mm2
      :type:  piel.types.metrics.ScalarMetric

      footprint_mm2 ( ScalarMetric ):
      The physical footprint of the amplifier in square millimeters.


   .. py:attribute:: bandwidth_Hz
      :type:  piel.types.metrics.ScalarMetric

      bandwidth_Hz ( ScalarMetric ):
      The operational bandwidth of the amplifier in Hertz, given as a range (min, max).


   .. py:attribute:: power_added_efficiency
      :type:  piel.types.metrics.ScalarMetric

      power_added_efficiency ( ScalarMetric ):
      The power added efficiency of the amplifier, given as a range (min, max).


   .. py:attribute:: power_consumption_mW
      :type:  piel.types.metrics.ScalarMetric

      power_consumption_mW ( ScalarMetric ):
      The power consumption of the amplifier in milliwatts, given as a range (min, max).


   .. py:attribute:: power_gain_dB
      :type:  piel.types.metrics.ScalarMetric

      power_gain_dB ( ScalarMetric ):
      The power gain of the amplifier in decibels, given as a range (min, max).


   .. py:attribute:: saturated_power_output_dBm
      :type:  piel.types.metrics.ScalarMetric

      saturated_power_output_dBm ( ScalarMetric ):
      The saturated power output of the amplifier in dBm.


   .. py:attribute:: supply_voltage_V
      :type:  piel.types.metrics.ScalarMetric

      supply_voltage_V ( ScalarMetric ):
      The supply voltage of the amplifier in volts.


   .. py:attribute:: technology_nm
      :type:  piel.types.metrics.ScalarMetric

      technology_nm ( ScalarMetric ):
      The technology node of the amplifier in nanometers.


   .. py:attribute:: technology_material
      :type:  str
      :value: ''


      technology_material (Optional[str]):
      The material technology used in the amplifier.


.. py:class:: PowerAmplifier(/, **data: Any)

   Bases: :py:obj:`piel.types.electronic.amplifier.RFTwoPortAmplifier`


   Represents a physical RF (Radio Frequency) component with frequency-related properties.

   This class extends the PhysicalComponent class to include RF-specific attributes.

   Attributes:
   -----------
   network : FrequencyTransmissionModel | None
       A representation of the component's frequency network, typically containing
       s-parameter data. This is currently a placeholder and may be None.

   metrics : FrequencyMetricCollection
       A collection of frequency-related metrics for this RF component,
       including bandwidth and center transmission.

   Inherits all attributes from PhysicalComponent.

   Notes:
   ------
   - The 'network' attribute is currently using a placeholder type (Any | None)
     and is intended to be updated with a proper s-parameter representation in the future.
   - This class combines physical component properties with RF-specific metrics,
     making it suitable for modeling and analyzing RF devices in a physical context.


   .. py:attribute:: metrics
      :type:  list[PowerAmplifierMetrics]
      :value: []


      Note that a given component might have a set of metrics corresponding to multiple variations of the testing conditions.


.. py:class:: LNAMetrics(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.metrics.ComponentMetrics`


   A model representing the metrics for a low-noise amplifier (LNA).

   .. attribute:: footprint_mm2

      The physical footprint of the amplifier in square millimeters.

      :type: ScalarMetric

   .. attribute:: bandwidth_Hz

      The operational bandwidth of the amplifier in Hertz, given as a range (min, max).

      :type: ScalarMetric

   .. attribute:: noise_figure

      The noise figure of the amplifier, given as a range (min, max).

      :type: ScalarMetric

   .. attribute:: power_consumption_mW

      The power consumption of the amplifier in milliwatts, given as a range (min, max).

      :type: ScalarMetric

   .. attribute:: power_gain_dB

      The power gain of the amplifier in decibels, given as a range (min, max).

      :type: ScalarMetric

   .. attribute:: supply_voltage_V

      The supply voltage of the amplifier in volts.

      :type: ScalarMetric

   .. attribute:: technology_nm

      The technology node of the amplifier in nanometers.

      :type: ScalarMetric

   .. attribute:: technology_material

      The material technology used in the amplifier.

      :type: Optional[str]


   .. py:attribute:: footprint_mm2
      :type:  piel.types.metrics.ScalarMetric

      footprint_mm2 (  ScalarMetric ):
      The physical footprint of the amplifier in square millimeters.


   .. py:attribute:: bandwidth_Hz
      :type:  piel.types.metrics.ScalarMetric

      bandwidth_Hz (  ScalarMetric ):
      The operational bandwidth of the amplifier in Hertz, given as a range (min, max).


   .. py:attribute:: noise_figure
      :type:  piel.types.metrics.ScalarMetric

      noise_figure (  ScalarMetric ):
      The noise figure of the amplifier, given as a range (min, max).


   .. py:attribute:: power_consumption_mW
      :type:  piel.types.metrics.ScalarMetric

      power_consumption_mW (  ScalarMetric ):
      The power consumption of the amplifier in milliwatts, given as a range (min, max).


   .. py:attribute:: power_gain_dB
      :type:  piel.types.metrics.ScalarMetric

      power_gain_dB (  ScalarMetric ):
      The power gain of the amplifier in decibels, given as a range (min, max).


   .. py:attribute:: supply_voltage_V
      :type:  piel.types.metrics.ScalarMetric

      supply_voltage_V (  ScalarMetric ):
      The supply voltage of the amplifier in volts.


   .. py:attribute:: technology_nm
      :type:  piel.types.metrics.ScalarMetric

      technology_nm (  ScalarMetric ):
      The technology node of the amplifier in nanometers.


   .. py:attribute:: technology_material
      :type:  str
      :value: ''


      technology_material (Optional[str]):
      The material technology used in the amplifier.


.. py:class:: LowNoiseTwoPortAmplifier(/, **data: Any)

   Bases: :py:obj:`piel.types.electronic.amplifier.RFTwoPortAmplifier`


   Represents a physical RF (Radio Frequency) component with frequency-related properties.

   This class extends the PhysicalComponent class to include RF-specific attributes.

   Attributes:
   -----------
   network : FrequencyTransmissionModel | None
       A representation of the component's frequency network, typically containing
       s-parameter data. This is currently a placeholder and may be None.

   metrics : FrequencyMetricCollection
       A collection of frequency-related metrics for this RF component,
       including bandwidth and center transmission.

   Inherits all attributes from PhysicalComponent.

   Notes:
   ------
   - The 'network' attribute is currently using a placeholder type (Any | None)
     and is intended to be updated with a proper s-parameter representation in the future.
   - This class combines physical component properties with RF-specific metrics,
     making it suitable for modeling and analyzing RF devices in a physical context.


   .. py:attribute:: metrics
      :type:  list[LNAMetrics]
      :value: []


      Note that a given component might have a set of metrics corresponding to multiple variations of the testing conditions.


.. py:data:: ProjectType

.. py:data:: CircuitComponent

.. py:data:: MaterialReferenceType

   MaterialReferenceType:
   A tuple used to reference materials, where:
   - The first element is a mandatory string, usually representing the material name or identifier.
   - The second element is an optional string, which might provide additional details or context about the material.

.. py:data:: MaterialReferencesTypes

   MaterialReferencesTypes:
   A list of material references, where each reference is a tuple as defined by MaterialReferenceType.
   This is used to handle collections of material references in applications.

.. py:data:: MaterialSpecificationType

   MaterialSpecificationType:
   A literal type used for defining material specifications.
   This is typically used to enforce specific string values in material specifications.

.. py:class:: ScalarMetric(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Instance`


   Standard definition for a scalar metrics. It includes the value, mean, min, max, standard deviation and count.


   .. py:attribute:: value
      :type:  piel.types.core.NumericalTypes | None
      :value: None



   .. py:attribute:: mean
      :type:  piel.types.core.NumericalTypes | None
      :value: None



   .. py:attribute:: min
      :type:  piel.types.core.NumericalTypes | None
      :value: None



   .. py:attribute:: max
      :type:  piel.types.core.NumericalTypes | None
      :value: None



   .. py:attribute:: standard_deviation
      :type:  piel.types.core.NumericalTypes | None
      :value: None



   .. py:attribute:: count
      :type:  piel.types.core.NumericalTypes | None
      :value: None



   .. py:attribute:: unit
      :type:  piel.types.units.Unit


   .. py:property:: data


   .. py:property:: table


.. py:class:: ScalarMetricCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Instance`


   A collection of scalar metrics useful when analyzing multiple aspects of a design.


   .. py:attribute:: metrics
      :type:  list[ScalarMetric]
      :value: []



   .. py:property:: data


   .. py:property:: table

      Composes a full table with the names and all the individual metrics that are part of this collection.

      :returns: A DataFrame containing all scalar metrics with their respective values.
      :rtype: pd.DataFrame


   .. py:method:: __getitem__(index)

      Allows for indexing and slicing of the metrics list.

      :param index: An integer or slice object for indexing.

      :returns: A new ScalarMetricCollection containing the specified slice of metrics.



.. py:data:: PhotonicCircuitComponent

   PhotonicCircuitComponent:
   A type representing a component in a photonic circuit, as defined in the gdsfactory framework.
   This type is used to handle and manipulate photonic components in circuit designs.

.. py:data:: OpticalTransmissionCircuit

   OpticalTransmissionCircuit:
   A callable type representing an optical transmission circuit in the SAX framework.
   This is used for functions that model the behavior of optical circuits.

.. py:data:: RecursiveNetlist

   RecursiveNetlist:
   A type representing a recursive netlist in the SAX framework.
   This type is used to describe the hierarchical structure of photonic circuits.

.. py:data:: SParameterMatrixTuple

   SParameterMatrixTuple:
   A tuple representing an S-parameter matrix used in circuit simulations.
   It includes:
   - ArrayTypes: A matrix (numpy or jax array) representing the S-parameters.
   - ConnectionTypes: A tuple of strings representing the corresponding port names.

.. py:data:: ElectricalSignalDomains

.. py:data:: QuantityTypesDC

.. py:class:: SignalDCCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Instance`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: inputs
      :type:  list[SignalDC]
      :value: []


      The input DC signals.


   .. py:attribute:: outputs
      :type:  list[SignalDC]
      :value: []


      The output DC signals.


   .. py:attribute:: power
      :type:  list[SignalDC]
      :value: []


      The power DC signals.


.. py:class:: SignalTraceDC(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Instance`


   Represents a DC signal with all relevant components as defined by Ohm's law but specified through a collection of data defined by a `OperatingPointContainer`

   The values are the values of the signal. The name is the name of the signal. Can be both an operating point
   or a sweep collection of data.

   A DC signal might have a current and a voltage attached to it, so it would be a collection of data.
   Current and voltage are both physical representations of electrical quantities in this case in the context of DC operation.
   These operating points can reference an array of data points that are collected from a DC sweep.


   .. py:attribute:: unit
      :type:  piel.types.units.Unit

      Intended for DC electrical types such as voltage, current, power and resistance.


   .. py:attribute:: values
      :type:  piel.types.core.ArrayTypes
      :value: []


      The values of the operating points in an array format.


.. py:class:: SignalDC(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Instance`


   This is used to define a collection of `SignalInstances` which compose a DC signal. For example,
   the voltage and current of the same signal would be `SignalInstance`s but the total signal is the collection of
   these data references.

   These DC signals may refer to a single trace, with a collection of voltage, current, resistance or power data points.
   These may still be referencing the original node.


   .. py:attribute:: trace_list
      :type:  list[SignalTraceDC]
      :value: []



.. py:class:: Phasor(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Instance`


   Contains magnitude and phase frequency response information.
   Can represent both an array or individual response. Equivalent to a single-frequency response.
   Contains a very clear notation to translate with a complex number and this term.

   .. math::

        Ae^{i(\omega t+        heta)}


   .. py:attribute:: magnitude
      :type:  piel.types.core.NumericalTypes | piel.types.core.ArrayTypes

      Should represent an absolute value real number.


   .. py:attribute:: phase
      :type:  piel.types.core.NumericalTypes | piel.types.core.ArrayTypes

      Should represent an absolute value real number.


   .. py:attribute:: frequency
      :type:  piel.types.core.NumericalTypes | piel.types.core.ArrayTypes

      Should represent an absolute value real number.


   .. py:attribute:: frequency_unit
      :type:  piel.types.units.Unit


   .. py:attribute:: phase_unit
      :type:  piel.types.units.Unit


   .. py:attribute:: magnitude_unit
      :type:  piel.types.units.Unit


   .. py:property:: data


   .. py:property:: table


   .. py:method:: check_lengths_consistency(model)

      Validates that the lengths of magnitude, phase, and frequency are exactly the same.
      All must have the same length, regardless of being scalar or arrays.



.. py:data:: PhasorTypes

   Different ways to represent frequency-domain information. In principle, both array and individual representations of
   complex numbers which can represent phasors. These could be input-arrays, as input components.

   Contains a very clear notation to translate with a complex number that is a full input-representation.

   .. math::

        Ae^{i(\omega t+    heta)}

.. py:class:: PathTransmission(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Instance`


   This represents the fundamental data structure of an element in connectivity


   .. py:attribute:: connection
      :type:  piel.types.connectivity.generic.ConnectionTypes


   .. py:attribute:: transmission
      :type:  piel.types.signal.frequency.generic.PhasorTypes

      A frequency-domain representation of transmission requires the full input response which can be represented
      as an array, an individual value, or a static-typed data structure - as per performance requirements.


.. py:class:: NetworkTransmission(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Instance`


   This corresponds to a transmission component or array collection of the power or frequency transmission.
   For example, for the reflected power (ie S11 transmission), this contains magnitude and phase information from a source.
   Instead of responding to a given input. Note that this does not contain mode information, but could
   be extended to implement this.

   This can represent frequency to single-state conversion and a sckit-rf collective model too, based on its definition.

   This implementation is flexible because making the transmission individual is kind of essential when dealing with both electronic-photonic s-parameter state
   management, or otherwise it involves writing a mapping function. This is not the fastest approach, but certainly complete.
   Maybe someone can come up with a more complete approach that is not so resource intensive or we can abstract this into
   defined base-types (but I think this is it though if any validation is to be applied?)

   This can also be equivalent to a sckit-rf Network static data container, just that it decomposes each specific transmission to a given
   frequency or power-point. It implements translation between RF models and Photonic models which are more-port specific
   as defined by SAX. This enables more specific electronic-photonic state mapping.


   .. py:attribute:: input
      :type:  piel.types.signal.frequency.generic.PhasorTypes

      The combined definition of the input state input with magnitude and phase information.
      Could be extended to a spectral input incidence. The length of the PhasorType should match the length of the
      equivalent PathTransmission for one dimension of the input representation.


   .. py:attribute:: network
      :type:  list[PathTransmission]
      :value: []


      Contains the entire frequency transmission response per component. Can be defined both per state and per full collection.

      TODO implement port mapping already.


   .. py:method:: check_length_consistency(model)


.. py:data:: FrequencyTransmissionModel

   Corresponds to a container that contains a s-parameter transmission model, for example.

   This type alias is currently a placeholder (Any | None).
   The idea is that this is a collective static data representation compatible with both a sax-translation as
   with the standard sckit-rf network models.

.. py:data:: FrequencyTransmissionList

.. py:class:: FrequencyMetricCollection(/, **data: Any)

   Bases: :py:obj:`piel.types.core.PielBaseModel`


   A base model class that serves as the foundation for other measurement in the project.
   This class extends pydantic's BaseModel and includes additional configuration
   settings for strict validation and immutability.

   .. attribute:: Config

      A nested class to configure the behavior of the model.
      arbitrary_types_allowed (bool): Allows arbitrary measurement.
      extra (str): Forbids extra attributes not defined in the model.
      validate_assignment (bool): Validates fields on assignment.
      strict (bool): Enforces strict type validation.
      allow_mutation (bool): Prevents mutation of the model's fields.

   .. method:: supplied_parameters() -> list[str]

      
      Returns a list of parameter names that have been supplied (i.e., are not None).
      


   .. py:attribute:: metrics
      :type:  list[FrequencyMetric]
      :value: []



.. py:class:: FrequencyMetric(/, **data: Any)

   Bases: :py:obj:`piel.types.core.PielBaseModel`


   Creates a mapping between a given input and a given scalar metrics response.

   This assumes the following relationships structure:
       Network(INPUT) = OUTPUT

   This means that there is a directional relationship between the input and the transmission output. This type
   of metric includes this dimensionality assuming the metric is always related to the transmission output and
   that the input can be represented in the frequency domain as input. However, for the sake of completeness the
   input will just be called input, in case there is a higher dimensionality input into a frequency network.

   This may still be valid also for other DC networks and inputs in higher-dimensional relationships as a given
   response might be a result of multiple values within a higher level system.


   .. py:attribute:: input
      :type:  piel.types.signal.frequency.core.Phasor | None
      :value: None



   .. py:attribute:: metric
      :type:  piel.types.metrics.ScalarMetric


   .. py:property:: table


.. py:class:: ElectroOpticDCPathTransmission(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Instance`


   It is not logically possible to decouple the output signal from the connection at which this is measured, due to the
   vectorial and non-scalar nature of the electro-optic network relationship.


   .. py:attribute:: input_dc
      :type:  piel.types.signal.dc_data.SignalDC


   .. py:attribute:: output
      :type:  piel.types.signal.frequency.transmission.PathTransmission


.. py:class:: ElectroOpticDCNetworkTransmission(/, **data: Any)

   Bases: :py:obj:`piel.types.connectivity.abstract.Instance`


   Applicable when you have multiple inputs and multiple paths


   .. py:attribute:: path_transmission_list
      :type:  list[ElectroOpticDCPathTransmission]
      :value: []



.. py:class:: TimeSignalData(/, **data: Any)

   Bases: :py:obj:`piel.types.core.PielBaseModel`


   Standard definition for a relationship between a relevant files signal and a time reference array.
   Sources could be both measurement and simulation.


   .. py:attribute:: time_s
      :type:  piel.types.core.ArrayTypes
      :value: []



   .. py:attribute:: data
      :type:  piel.types.core.ArrayTypes
      :value: []



   .. py:attribute:: data_name
      :type:  str
      :value: ''



   .. py:attribute:: time_s_unit
      :type:  piel.types.units.Unit


   .. py:attribute:: data_unit
      :type:  piel.types.units.Unit


.. py:data:: DataTimeSignalData

.. py:data:: EdgeTransitionAnalysisTypes

.. py:data:: MultiTimeSignalData

.. py:data:: MultiDataTimeSignal

   Collection of DataTimeSignals that can be used to analyse a set of signals together in a particular files flow.

.. py:data:: MultiDataTimeSignalCollectionTypes
   :value: ['equivalent', 'different']


.. py:data:: MultiDataTimeSignalAnalysisTypes

.. py:data:: DataTimeSignalAnalysisTypes

.. py:class:: ExponentialSource(/, **data: Any)

   Bases: :py:obj:`piel.types.core.PielBaseModel`


   A base model class that serves as the foundation for other measurement in the project.
   This class extends pydantic's BaseModel and includes additional configuration
   settings for strict validation and immutability.

   .. attribute:: Config

      A nested class to configure the behavior of the model.
      arbitrary_types_allowed (bool): Allows arbitrary measurement.
      extra (str): Forbids extra attributes not defined in the model.
      validate_assignment (bool): Validates fields on assignment.
      strict (bool): Enforces strict type validation.
      allow_mutation (bool): Prevents mutation of the model's fields.

   .. method:: supplied_parameters() -> list[str]

      
      Returns a list of parameter names that have been supplied (i.e., are not None).
      


   .. py:attribute:: voltage_1_V
      :type:  float


   .. py:attribute:: voltage_2_V
      :type:  float


   .. py:attribute:: rise_delay_time_s
      :type:  float


   .. py:attribute:: rise_time_constant_s
      :type:  float


   .. py:attribute:: fall_delay_time_s
      :type:  float


   .. py:attribute:: fall_time_constant_s
      :type:  float


.. py:class:: PulseSource(/, **data: Any)

   Bases: :py:obj:`piel.types.core.PielBaseModel`


   A base model class that serves as the foundation for other measurement in the project.
   This class extends pydantic's BaseModel and includes additional configuration
   settings for strict validation and immutability.

   .. attribute:: Config

      A nested class to configure the behavior of the model.
      arbitrary_types_allowed (bool): Allows arbitrary measurement.
      extra (str): Forbids extra attributes not defined in the model.
      validate_assignment (bool): Validates fields on assignment.
      strict (bool): Enforces strict type validation.
      allow_mutation (bool): Prevents mutation of the model's fields.

   .. method:: supplied_parameters() -> list[str]

      
      Returns a list of parameter names that have been supplied (i.e., are not None).
      


   .. py:attribute:: voltage_1_V
      :type:  float


   .. py:attribute:: voltage_2_V
      :type:  float


   .. py:attribute:: delay_time_s
      :type:  float


   .. py:attribute:: rise_time_s
      :type:  float


   .. py:attribute:: fall_time_s
      :type:  float


   .. py:attribute:: pulse_width_s
      :type:  float


   .. py:attribute:: period_s
      :type:  float


.. py:class:: PiecewiseLinearSource(/, **data: Any)

   Bases: :py:obj:`piel.types.core.PielBaseModel`


   A base model class that serves as the foundation for other measurement in the project.
   This class extends pydantic's BaseModel and includes additional configuration
   settings for strict validation and immutability.

   .. attribute:: Config

      A nested class to configure the behavior of the model.
      arbitrary_types_allowed (bool): Allows arbitrary measurement.
      extra (str): Forbids extra attributes not defined in the model.
      validate_assignment (bool): Validates fields on assignment.
      strict (bool): Enforces strict type validation.
      allow_mutation (bool): Prevents mutation of the model's fields.

   .. method:: supplied_parameters() -> list[str]

      
      Returns a list of parameter names that have been supplied (i.e., are not None).
      


   .. py:attribute:: time_voltage_pairs
      :type:  List[tuple]


.. py:class:: SineSource(/, **data: Any)

   Bases: :py:obj:`piel.types.core.PielBaseModel`


   A base model class that serves as the foundation for other measurement in the project.
   This class extends pydantic's BaseModel and includes additional configuration
   settings for strict validation and immutability.

   .. attribute:: Config

      A nested class to configure the behavior of the model.
      arbitrary_types_allowed (bool): Allows arbitrary measurement.
      extra (str): Forbids extra attributes not defined in the model.
      validate_assignment (bool): Validates fields on assignment.
      strict (bool): Enforces strict type validation.
      allow_mutation (bool): Prevents mutation of the model's fields.

   .. method:: supplied_parameters() -> list[str]

      
      Returns a list of parameter names that have been supplied (i.e., are not None).
      


   .. py:attribute:: offset_voltage_V
      :type:  float


   .. py:attribute:: amplitude_V
      :type:  float


   .. py:attribute:: frequency_Hz
      :type:  float


   .. py:attribute:: delay_time_s
      :type:  Optional[float]


   .. py:attribute:: damping_factor
      :type:  Optional[float]


.. py:data:: SignalTimeSources

.. py:class:: SymbolicValue(/, **data: Any)

   Bases: :py:obj:`piel.types.core.PielBaseModel`


   A base model class that serves as the foundation for other measurement in the project.
   This class extends pydantic's BaseModel and includes additional configuration
   settings for strict validation and immutability.

   .. attribute:: Config

      A nested class to configure the behavior of the model.
      arbitrary_types_allowed (bool): Allows arbitrary measurement.
      extra (str): Forbids extra attributes not defined in the model.
      validate_assignment (bool): Validates fields on assignment.
      strict (bool): Enforces strict type validation.
      allow_mutation (bool): Prevents mutation of the model's fields.

   .. method:: supplied_parameters() -> list[str]

      
      Returns a list of parameter names that have been supplied (i.e., are not None).
      


   .. py:attribute:: name
      :type:  str
      :value: ''



   .. py:attribute:: label
      :type:  str
      :value: ''


      Label used in plots and more.


   .. py:attribute:: shorthand
      :type:  str
      :value: ''



   .. py:attribute:: symbol
      :type:  str
      :value: ''



.. py:class:: Reference(/, **data: Any)

   Bases: :py:obj:`piel.types.PielBaseModel`


   A base model class that serves as the foundation for other measurement in the project.
   This class extends pydantic's BaseModel and includes additional configuration
   settings for strict validation and immutability.

   .. attribute:: Config

      A nested class to configure the behavior of the model.
      arbitrary_types_allowed (bool): Allows arbitrary measurement.
      extra (str): Forbids extra attributes not defined in the model.
      validate_assignment (bool): Validates fields on assignment.
      strict (bool): Enforces strict type validation.
      allow_mutation (bool): Prevents mutation of the model's fields.

   .. method:: supplied_parameters() -> list[str]

      
      Returns a list of parameter names that have been supplied (i.e., are not None).
      


   .. py:attribute:: text
      :type:  str
      :value: ''



   .. py:attribute:: bibtex_id
      :type:  str
      :value: ''



   .. py:attribute:: bibtex
      :type:  str
      :value: ''



.. py:class:: Quantity(/, **data: Any)

   Bases: :py:obj:`piel.types.symbolic.SymbolicValue`


   A base model class that serves as the foundation for other measurement in the project.
   This class extends pydantic's BaseModel and includes additional configuration
   settings for strict validation and immutability.

   .. attribute:: Config

      A nested class to configure the behavior of the model.
      arbitrary_types_allowed (bool): Allows arbitrary measurement.
      extra (str): Forbids extra attributes not defined in the model.
      validate_assignment (bool): Validates fields on assignment.
      strict (bool): Enforces strict type validation.
      allow_mutation (bool): Prevents mutation of the model's fields.

   .. method:: supplied_parameters() -> list[str]

      
      Returns a list of parameter names that have been supplied (i.e., are not None).
      


   .. py:attribute:: name
      :type:  str
      :value: ''



   .. py:attribute:: value
      :type:  piel.types.core.NumericalTypes | None
      :value: None



   .. py:attribute:: unit
      :type:  piel.types.units.Unit


   .. py:attribute:: __add__


   .. py:attribute:: __mul__


   .. py:attribute:: __sub__


   .. py:attribute:: __radd__


   .. py:attribute:: __rmul__


   .. py:attribute:: __rsub__


   .. py:attribute:: __truediv__


   .. py:attribute:: __rtruediv__


   .. py:attribute:: __iadd__


   .. py:attribute:: __imul__


   .. py:attribute:: __isub__


.. py:class:: Unit(/, **data: Any)

   Bases: :py:obj:`piel.types.symbolic.SymbolicValue`


   A base model class that serves as the foundation for other measurement in the project.
   This class extends pydantic's BaseModel and includes additional configuration
   settings for strict validation and immutability.

   .. attribute:: Config

      A nested class to configure the behavior of the model.
      arbitrary_types_allowed (bool): Allows arbitrary measurement.
      extra (str): Forbids extra attributes not defined in the model.
      validate_assignment (bool): Validates fields on assignment.
      strict (bool): Enforces strict type validation.
      allow_mutation (bool): Prevents mutation of the model's fields.

   .. method:: supplied_parameters() -> list[str]

      
      Returns a list of parameter names that have been supplied (i.e., are not None).
      


   .. py:attribute:: datum
      :type:  BaseSIUnitNameList | str


   .. py:attribute:: base
      :type:  piel.types.core.NumericalTypes
      :value: 1


      In the format 1eN


   .. py:attribute:: __mul__


   .. py:attribute:: __rmul__


   .. py:attribute:: __add__


   .. py:attribute:: __radd__


   .. py:attribute:: __truediv__


   .. py:attribute:: __rtruediv__


.. py:data:: BaseSIUnitNameList

.. py:data:: A

.. py:data:: dB

.. py:data:: dBm

.. py:data:: degree

.. py:data:: GHz

.. py:data:: Hz

.. py:data:: nm

.. py:data:: ns

.. py:data:: m

.. py:data:: MHz

.. py:data:: mm2

.. py:data:: mW

.. py:data:: ohm

.. py:data:: ps

.. py:data:: ratio

.. py:data:: s

.. py:data:: us

.. py:data:: W

.. py:data:: V

