piel.types

Contents

piel.types#

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#

Attributes#

PathTypes

NumericalTypes

ArrayTypes

TupleIntType

TupleFloatType

TupleNumericalType

PackageArrayType

ModuleType

c

ConnectionTypes

PortTypes

ComponentTypes

TimeMetricsTypes

Corresponds to all the implemented timing metrics accordingly.

ZeroTimeMetrics

Default zero-time metrics defined.

DigitalLogicModule

AbstractBitsType

Alias for measurement representing digital bits.

BitsType

A type representing binary digital bits.

BitsList

An iterable collection of AbstractBitsType elements.

DigitalRunID

HDLSimulator

A literal type representing supported HDL simulators.

HDLTopLevelLanguage

A literal type representing top-level hardware description languages.

LogicSignalsList

A list of strings representing the names of logic signals.

LogicImplementationType

TruthTableLogicType

DCMeasurementDataTypes

DCMeasurementDataCollectionTypes

MeasurementDataTypes

MeasurementDataCollectionTypes

FrequencyMeasurementDataTypes

VoltageCurrentSignalNamePair

FrequencyMeasurementConfigurationTypes

FrequencyMeasurementTypes

MeasurementTypes

MeasurementConfigurationTypes

MeasurementCollectionTypes

PhaseMapType

Alias for phase map measurement.

PhaseTransitionTypes

A literal type for phase transition measurement.

SwitchFunctionParameter

SParameterCollection

ElectronicCircuitComponent

PhotonicCircuitComponent:

RFAmplifierTypes

ProjectType

CircuitComponent

MaterialReferenceType

MaterialReferenceType:

MaterialReferencesTypes

MaterialReferencesTypes:

MaterialSpecificationType

MaterialSpecificationType:

PhotonicCircuitComponent

PhotonicCircuitComponent:

OpticalTransmissionCircuit

OpticalTransmissionCircuit:

RecursiveNetlist

RecursiveNetlist:

SParameterMatrixTuple

SParameterMatrixTuple:

ElectricalSignalDomains

QuantityTypesDC

PhasorTypes

Different ways to represent frequency-domain information. In principle, both array and individual representations of

FrequencyTransmissionModel

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

FrequencyTransmissionList

DataTimeSignalData

EdgeTransitionAnalysisTypes

MultiTimeSignalData

MultiDataTimeSignal

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

MultiDataTimeSignalCollectionTypes

MultiDataTimeSignalAnalysisTypes

DataTimeSignalAnalysisTypes

SignalTimeSources

BaseSIUnitNameList

A

dB

dBm

degree

GHz

Hz

nm

ns

m

MHz

mm2

mW

ohm

ps

ratio

s

us

W

V

Classes#

PielBaseModel

A base model class that serves as the foundation for other measurement in the project.

Instance

This represents the fundamental data structure of an element in connectivity

Connection

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

Component

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

Port

This represents the fundamental data structure to identify a port.

ComponentCollection

This represents the fundamental data structure of an element in connectivity

PhysicalComponent

Represents the data of a physical component or device.

PhysicalConnection

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

PhysicalPort

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.

ComponentMetrics

Note that a given metrics needs to be matched to a given environment in which the measurements are performed.

TimeMetric

This class contains stastical timing information about a given path.

DispersiveTimeMetrics

A dispersive time-metrics is useful to represent multi-frequency timing information

TruthTable

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

BitPhaseMap

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

Environment

Data structure to define a corresponding environment.

Cryostat

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

TemperatureStage

Standard definition for a generic temperature stage.

Sourcemeter

Represents a sourcemeter.

SourcemeterConfiguration

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

Multimeter

Represents a multimeter.

MultimeterConfiguration

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

Device

Corresponds to the abstraction of a given device measurement.

DeviceConfiguration

A base model class that serves as the foundation for other measurement in the project.

MeasurementDevice

Corresponds to the abstraction of a given device measurement.

ExperimentInstance

This is a specific instance of an measurement configuration. It can be the result of serialization a given

Experiment

This represents the fundamental data structure of an element in connectivity

ExperimentCollection

This class contains a collection of different experiments,

VNA

Represents a vector-network analyser.

VNAConfiguration

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

MeasurementConfiguration

Standard definition for a measurement configuration.

Measurement

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

MeasurementCollection

Generic class for MeasurementCollection

DCSweepMeasurementDataCollection

This represents the fundamental data structure of an element in connectivity

DCMeasurementDataCollection

This represents the fundamental data structure of an element in connectivity

MeasurementData

This represents the fundamental data structure of an element in connectivity

MeasurementDataCollection

This represents the fundamental data structure of an element in connectivity

ExperimentData

This is a definition of a collection of measurement data.

ExperimentDataCollection

This represents the fundamental data structure of an element in connectivity

VNASParameterMeasurementData

This represents the fundamental data structure of an element in connectivity

VNASParameterMeasurementDataCollection

This represents the fundamental data structure of an element in connectivity

VNAPowerSweepMeasurementData

This represents the fundamental data structure of an element in connectivity

FrequencyMeasurementDataCollection

This represents the fundamental data structure of an element in connectivity

PropagationDelayMeasurementData

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

PropagationDelayMeasurementDataCollection

This represents the fundamental data structure of an element in connectivity

OscilloscopeMeasurementData

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

OscilloscopeMeasurementDataCollection

This represents the fundamental data structure of an element in connectivity

ElectroOpticDCMeasurement

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

ElectroOpticDCMeasurementCollection

Generic class for MeasurementCollection

VNASParameterMeasurementConfiguration

Standard definition for a measurement configuration.

VNAPowerSweepMeasurementConfiguration

Standard definition for a measurement configuration.

VNASParameterMeasurement

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

VNAPowerSweepMeasurement

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

VNAPowerSweepMeasurementCollection

Generic class for MeasurementCollection

VNASParameterMeasurementCollection

Generic class for MeasurementCollection

PropagationDelayMeasurement

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

PropagationDelayMeasurementCollection

Generic class for MeasurementCollection

PropagationDelayMeasurementConfiguration

Standard definition for a measurement configuration.

OscilloscopeMeasurement

Generic, extensible OscilloscopeMeasurement

OscilloscopeMeasurementCollection

Generic class for MeasurementCollection

OscilloscopeMeasurementConfiguration

Standard definition for a measurement configuration.

Oscilloscope

Represents an oscilloscope

OscilloscopeConfiguration

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

WaveformGeneratorConfiguration

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

WaveformGenerator

Represents a vector-network analyser.

CoaxialCableGeometryType

A base model class that serves as the foundation for other measurement in the project.

CoaxialCableHeatTransferType

All units are in watts.

CoaxialCableMaterialSpecificationType

A base model class that serves as the foundation for other measurement in the project.

DCCableGeometryType

A base model class that serves as the foundation for other measurement in the project.

DCCableHeatTransferType

All units are in watts.

DCCableMaterialSpecificationType

A base model class that serves as the foundation for other measurement in the project.

DCCable

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

CoaxialCable

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

PCB

Represents the data of a physical component or device.

Short

Represents the data of a physical component or device.

Open

Represents the data of a physical component or device.

Load

Represents the data of a physical component or device.

Through

Represents the data of a physical component or device.

PowerSplitter

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

BiasTee

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

FockStatePhaseTransition

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

OpticalStateTransitionCollection

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

ElectroOpticModulatorMetrics

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

ElectroOpticModulator

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

PulsedLaserMetrics

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

PulsedLaser

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

ElectronicCircuit

Represents the data of a physical component or device.

ElectronicChip

A model representing an electronic chip in a photonic circuit.

RFTwoPortAmplifier

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

RFAmplifierCollection

This represents the fundamental data structure of an element in connectivity

PowerAmplifierMetrics

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

PowerAmplifier

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

LNAMetrics

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

LowNoiseTwoPortAmplifier

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

ScalarMetric

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

ScalarMetricCollection

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

SignalDCCollection

This represents the fundamental data structure of an element in connectivity

SignalTraceDC

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

SignalDC

This is used to define a collection of SignalInstances which compose a DC signal. For example,

Phasor

Contains magnitude and phase frequency response information.

PathTransmission

This represents the fundamental data structure of an element in connectivity

NetworkTransmission

This corresponds to a transmission component or array collection of the power or frequency transmission.

FrequencyMetricCollection

A base model class that serves as the foundation for other measurement in the project.

FrequencyMetric

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

ElectroOpticDCPathTransmission

It is not logically possible to decouple the output signal from the connection at which this is measured, due to the

ElectroOpticDCNetworkTransmission

Applicable when you have multiple inputs and multiple paths

TimeSignalData

Standard definition for a relationship between a relevant files signal and a time reference array.

ExponentialSource

A base model class that serves as the foundation for other measurement in the project.

PulseSource

A base model class that serves as the foundation for other measurement in the project.

PiecewiseLinearSource

A base model class that serves as the foundation for other measurement in the project.

SineSource

A base model class that serves as the foundation for other measurement in the project.

SymbolicValue

A base model class that serves as the foundation for other measurement in the project.

Reference

A base model class that serves as the foundation for other measurement in the project.

Quantity

A base model class that serves as the foundation for other measurement in the project.

Unit

A base model class that serves as the foundation for other measurement in the project.

Package Contents#

PathTypes#
class PielBaseModel(/, **data: Any)[source]#

Bases: 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.

Config[source]#

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.

supplied_parameters() list[str]#

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

class Config[source]#
arbitrary_types_allowed = True#
extra = 'ignore'#
validate_assignment = True#
strict = True#
NumericalTypes#
ArrayTypes#
TupleIntType#
TupleFloatType#
TupleNumericalType#
PackageArrayType#
ModuleType#
class Instance(/, **data: Any)[source]#

Bases: piel.types.PielBaseModel

This represents the fundamental data structure of an element in connectivity

name: str = ''#
attrs: dict#
c#
class Connection(/, **data: Any)[source]#

Bases: piel.types.connectivity.core.Instance

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

Note that any connection has a

ports: tuple[Port, Port] | list[Port] = ()#
time: piel.types.connectivity.timing.TimeMetricsTypes#
class Component(/, **data: Any)[source]#

Bases: piel.types.connectivity.core.Instance

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

ports: list[Port] = []#
connections: list[Connection] = []#
components: list[Component] = []#

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

metrics: list[piel.types.connectivity.metrics.ComponentMetrics] = []#

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

get_port(port_name: str) Port | None[source]#

Get a port by its name.

class Port(/, **data: Any)[source]#

Bases: piel.types.connectivity.core.Instance

This represents the fundamental data structure to identify a port.

parent_component_name: str = ''#
ConnectionTypes#
PortTypes#
ComponentTypes#
class ComponentCollection(/, **data: Any)[source]#

Bases: piel.types.connectivity.abstract.Instance

This represents the fundamental data structure of an element in connectivity

components: list[ComponentTypes] = []#
class PhysicalComponent(/, **data: Any)[source]#

Bases: piel.types.connectivity.abstract.Component

Represents the data of a physical component or device.

ports: list[PhysicalPort | piel.types.connectivity.abstract.Port] | tuple[PhysicalPort | piel.types.connectivity.abstract.Port] = []#
connections: list[PhysicalConnection | piel.types.connectivity.abstract.Connection] | tuple[PhysicalConnection | piel.types.connectivity.abstract.Connection] = []#
components: list[piel.types.connectivity.abstract.Component | PhysicalComponent] = []#

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

environment: piel.types.environment.Environment#
manufacturer: str = ''#

The manufacturer of the device.

model: str = ''#

The model of the device.

class PhysicalConnection(/, **data: Any)[source]#

Bases: 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.

connections: list[piel.types.connectivity.abstract.Connection | Any] = []#
components: tuple[piel.types.connectivity.abstract.Component, Ellipsis] | list[piel.types.connectivity.abstract.Component] = []#
class PhysicalPort(/, **data: Any)[source]#

Bases: 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.

domain: piel.types.signal.core.ElectricalSignalDomains | None = None#
connector: str = ''#
manifold: str = ''#
class ComponentMetrics(/, **data: Any)[source]#

Bases: 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.

reference: piel.types.reference.Reference#
environment: piel.types.environment.Environment#
class TimeMetric(/, **data: Any)[source]#

Bases: piel.types.metrics.ScalarMetric

This class contains stastical timing information about a given path.

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

value: piel.types.core.NumericalTypes = 0#
mean: piel.types.core.NumericalTypes | None = 0#
min: piel.types.core.NumericalTypes | None = 0#
max: piel.types.core.NumericalTypes | None = 0#
standard_deviation: piel.types.core.NumericalTypes | None = 0#
unit: piel.types.units.Unit#
class DispersiveTimeMetrics(/, **data: Any)[source]#

Bases: piel.types.connectivity.core.Instance

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

frequency_group: dict[float, TimeMetric]#

Definition of a mutli-frequency component.

TimeMetricsTypes#

Corresponds to all the implemented timing metrics accordingly.

ZeroTimeMetrics#

Default zero-time metrics defined.

DigitalLogicModule#
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

BitsType#

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

Type:

BitsType

BitsList#

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

Type:

BitsList

DigitalRunID#
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

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

LogicSignalsList#

A list of strings representing the names of logic signals.

Type:

LogicSignalsList

LogicImplementationType#
class TruthTable(/, **data: Any)[source]#

Bases: piel.types.core.PielBaseModel

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

input_ports#

List of input signal names for the truth table.

Type:

LogicSignalsList

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.

model_config#

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

input_ports: LogicSignalsList#

List of input signal names for the truth table.

Type:

input_ports (LogicSignalsList)

output_ports: LogicSignalsList#

List of output signal names for the truth table.

Type:

output_ports (LogicSignalsList)

property ports_list: list[str]#

Returns a combined list of input and output signal names.

Returns:

The concatenated list of input and output connection.

Return type:

list[str]

property dataframe: 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.

Return type:

pd.DataFrame

property implementation_dictionary: 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.

Return type:

dict

TruthTableLogicType#
class BitPhaseMap(/, **data: Any)[source]#

Bases: piel.types.core.PielBaseModel

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

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

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.

bits: 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.

phase: 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.

property dataframe: pandas.DataFrame#

Returns a pandas DataFrame representation of the BitPhaseMap.

Returns:

A DataFrame containing the bits and their corresponding phases.

Return type:

pd.DataFrame

class Environment(/, **data: Any)[source]#

Bases: piel.types.core.PielBaseModel

Data structure to define a corresponding environment.

temperature_K: float = 293#
region: str = ''#
class Cryostat(/, **data: Any)[source]#

Bases: piel.types.connectivity.abstract.Component

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

temperature_stages: list[TemperatureStage] = []#
class TemperatureStage(/, **data: Any)[source]#

Bases: piel.types.environment.Environment, piel.types.connectivity.abstract.Component

Standard definition for a generic temperature stage.

surface_area_m2: float = None#
class Sourcemeter(/, **data: Any)[source]#

Bases: piel.types.experimental.device.Device

Represents a sourcemeter.

configuration: SourcemeterConfiguration = None#
class SourcemeterConfiguration(/, **data: Any)[source]#

Bases: 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.

voltage_set_V: float | None = None#
voltage_range_V: tuple | None = None#
current_limit_A: float | None = None#
voltage_limit_V: float | None = None#
class Multimeter(/, **data: Any)[source]#

Bases: piel.types.experimental.device.Device

Represents a multimeter.

class MultimeterConfiguration(/, **data: Any)[source]#

Bases: piel.types.experimental.device.DeviceConfiguration

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

class Device(/, **data: Any)[source]#

Bases: piel.types.connectivity.physical.PhysicalComponent

Corresponds to the abstraction of a given device measurement.

configuration: DeviceConfiguration | None = None#
serial_number: str = ''#
class DeviceConfiguration(/, **data: Any)[source]#

Bases: 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.

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.

supplied_parameters() list[str]#

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

class MeasurementDevice(/, **data: Any)[source]#

Bases: Device

Corresponds to the abstraction of a given device measurement.

measurement: piel.types.experimental.measurements.core.MeasurementConfiguration | None = None#

Contains the measurement information.

class ExperimentInstance(/, **data: Any)[source]#

Bases: 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.

components: list[piel.types.connectivity.generic.ComponentTypes] | tuple[piel.types.connectivity.generic.ComponentTypes] = []#

Contains all references to the instantiated devices.

connections: list[piel.types.connectivity.generic.ConnectionTypes] | tuple[piel.types.connectivity.generic.ConnectionTypes] = []#

All the connectivity information is stored here.

goal: str = ''#

The goal of the experiment test.

parameters: dict#

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

index: int = 0#

A defined index of the experiment instance tuple.

date_configured: str = ''#

The date the experiment was configured.

date_measured: str = ''#

The date the experiment was measured.

measurement_configuration_list: list[piel.types.experimental.measurements.generic.MeasurementConfigurationTypes] = []#
class Experiment(/, **data: Any)[source]#

Bases: piel.types.connectivity.core.Instance

This represents the fundamental data structure of an element in connectivity

name: str = ''#

Every experiment is required to have a name.

goal: str = ''#

The goal of the complete experiment.

experiment_instances: list[ExperimentInstance] = []#

Contains all the experiment instances.

parameters_list: list[dict]#

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

parent_directory: piel.types.core.PathTypes = ''#

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

__getitem__#
property parameters#
class ExperimentCollection(/, **data: Any)[source]#

Bases: piel.types.connectivity.core.Instance

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

experiment_list: list[Experiment] = []#
class VNA(/, **data: Any)[source]#

Bases: piel.types.experimental.device.Device

Represents a vector-network analyser.

configuration: VNAConfiguration | None = None#

Just overwrites this section of the device definition.

ports: tuple[piel.types.connectivity.physical.PhysicalPort] | list[piel.types.connectivity.physical.PhysicalPort]#

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

class VNAConfiguration(/, **data: Any)[source]#

Bases: 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.

calibration_setting_name: str = ''#
measurement_configuration: piel.types.experimental.measurements.generic.FrequencyMeasurementConfigurationTypes = None#
class MeasurementConfiguration(/, **data: Any)[source]#

Bases: piel.types.connectivity.abstract.Instance

Standard definition for a measurement configuration.

name: str = ''#
parent_directory: piel.types.core.PathTypes = ''#
measurement_type: str = ''#
class Measurement(/, **data: Any)[source]#

Bases: 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.

name: str = ''#
type: str = ''#
parent_directory: piel.types.core.PathTypes = ''#
class MeasurementCollection(/, **data: Any)[source]#

Bases: piel.types.connectivity.abstract.Instance

Generic class for MeasurementCollection

type: str = ''#
collection: list[Measurement] = []#
class DCSweepMeasurementDataCollection(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.data.core.MeasurementDataCollection

This represents the fundamental data structure of an element in connectivity

collection: list[piel.types.signal.dc_data.SignalDCCollection] = []#
class DCMeasurementDataCollection(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.data.core.MeasurementDataCollection

This represents the fundamental data structure of an element in connectivity

collection: list[DCMeasurementDataTypes] | DCSweepMeasurementDataCollection = []#
DCMeasurementDataTypes#
DCMeasurementDataCollectionTypes#
class MeasurementData(/, **data: Any)[source]#

Bases: piel.types.connectivity.core.Instance

This represents the fundamental data structure of an element in connectivity

type: str | None = ''#
class MeasurementDataCollection(/, **data: Any)[source]#

Bases: piel.types.connectivity.core.Instance

This represents the fundamental data structure of an element in connectivity

type: str = ''#
collection: list[MeasurementData] = []#
__getitem__#
class ExperimentData(/, **data: Any)[source]#

Bases: piel.types.connectivity.core.Instance

This is a definition of a collection of measurement data.

experiment: piel.types.experimental.experiment.Experiment = None#
data: piel.types.experimental.measurements.data.generic.MeasurementDataCollectionTypes = None#
__getitem__#
class ExperimentDataCollection(/, **data: Any)[source]#

Bases: piel.types.connectivity.core.Instance

This represents the fundamental data structure of an element in connectivity

collection: list[ExperimentData] = []#
MeasurementDataTypes#
MeasurementDataCollectionTypes#
FrequencyMeasurementDataTypes#
class VNASParameterMeasurementData(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.data.core.MeasurementData

This represents the fundamental data structure of an element in connectivity

type: str = 'VNASParameterMeasurementData'#
network: piel.types.signal.frequency.transmission.FrequencyTransmissionModel = None#
class VNASParameterMeasurementDataCollection(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.data.core.MeasurementDataCollection

This represents the fundamental data structure of an element in connectivity

type: str = 'VNASParameterMeasurementDataCollection'#
collection: list[VNASParameterMeasurementData] = []#
class VNAPowerSweepMeasurementData(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.data.core.MeasurementData

This represents the fundamental data structure of an element in connectivity

type: str = 'VNAPowerSweepMeasurementData'#
network: piel.types.signal.frequency.transmission.FrequencyTransmissionModel | None = None#
class FrequencyMeasurementDataCollection(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.data.core.MeasurementDataCollection

This represents the fundamental data structure of an element in connectivity

type: str = 'FrequencyMeasurementDataCollection'#
collection: list[FrequencyMeasurementDataTypes] = []#
class PropagationDelayMeasurementData(/, **data: Any)[source]#

Bases: 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.

measurements#

The collection of signal measurements.

Type:

Optional[SignalMetricsMeasurementCollection]

dut_waveform#

The device waveform.

Type:

Optional[TimeSignalData]

reference_waveform#

The reference waveform.

Type:

Optional[TimeSignalData]

type: str = 'PropagationDelayMeasurementData'#
measurements: piel.types.metrics.ScalarMetricCollection | None = None#
dut_waveform: piel.types.signal.time_data.TimeSignalData | None = None#
reference_waveform: piel.types.signal.time_data.TimeSignalData | None = None#
class PropagationDelayMeasurementDataCollection(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.data.core.MeasurementDataCollection

This represents the fundamental data structure of an element in connectivity

type: str = 'PropagationDelayMeasurementDataCollection'#
collection: list[PropagationDelayMeasurementData] = []#
class OscilloscopeMeasurementData(/, **data: Any)[source]#

Bases: 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.

measurements#

The collection of signal measurements.

Type:

Optional[SignalMetricsMeasurementCollection]

waveform_list#

The collection of waveforms.

Type:

MultiTimeSignalData

type: str = 'OscilloscopeMeasurementData'#
measurements: piel.types.metrics.ScalarMetricCollection | None = None#
waveform_list: piel.types.signal.time_data.MultiTimeSignalData = []#
class OscilloscopeMeasurementDataCollection(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.data.core.MeasurementDataCollection

This represents the fundamental data structure of an element in connectivity

type: str = 'OscilloscopeMeasurementDataCollection'#
collection: list[OscilloscopeMeasurementData] = []#
VoltageCurrentSignalNamePair#
class ElectroOpticDCMeasurement(/, **data: Any)[source]#

Bases: 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.

dc_transmission_file: piel.types.core.PathTypes#
connection: piel.types.connectivity.generic.ConnectionTypes#
class ElectroOpticDCMeasurementCollection(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.core.MeasurementCollection

Generic class for MeasurementCollection

collection: list[ElectroOpticDCMeasurement]#
class VNASParameterMeasurementConfiguration(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.core.MeasurementConfiguration

Standard definition for a measurement configuration.

measurement_configuration_type: str = 'VNASParameterMeasurementConfiguration'#
frequency_range_Hz: tuple[float, float] | list[float] = []#
sweep_points: int = 0#
test_port_power_dBm: float = 0.0#
class VNAPowerSweepMeasurementConfiguration(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.core.MeasurementConfiguration

Standard definition for a measurement configuration.

measurement_configuration_type: str = 'VNAPowerSweepMeasurementConfiguration'#
base_frequency_Hz: float = 0.0#
power_range_dBm: tuple[float, float] | list[float] = []#
class VNASParameterMeasurement(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.core.Measurement

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

type: str = 'VNASParameterMeasurement'#
spectrum_file: piel.types.core.PathTypes = ''#
class VNAPowerSweepMeasurement(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.core.Measurement

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

type: str = 'VNAPowerSweepMeasurement'#
spectrum_file: piel.types.core.PathTypes = ''#
class VNAPowerSweepMeasurementCollection(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.core.MeasurementCollection

Generic class for MeasurementCollection

type: str = 'VNAPowerSweepMeasurementCollection'#
collection: list[VNAPowerSweepMeasurement] = []#
class VNASParameterMeasurementCollection(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.core.MeasurementCollection

Generic class for MeasurementCollection

type: str = 'VNASParameterMeasurementCollection'#
collection: list[VNASParameterMeasurement] = []#
class PropagationDelayMeasurement(/, **data: Any)[source]#

Bases: 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.

type: str = 'PropagationDelayMeasurement'#
dut_waveform_file: piel.types.core.PathTypes = ''#
reference_waveform_file: piel.types.core.PathTypes = ''#
measurements_file: piel.types.core.PathTypes = ''#
class PropagationDelayMeasurementCollection(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.core.MeasurementCollection

Generic class for MeasurementCollection

type: str = 'PropagationDelayMeasurementCollection'#
collection: list[PropagationDelayMeasurement] = []#
class PropagationDelayMeasurementConfiguration(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.core.MeasurementConfiguration

Standard definition for a measurement configuration.

measurement_configuration_type: str = 'PropagationDelayMeasurementConfiguration'#
class OscilloscopeMeasurement(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.core.Measurement

Generic, extensible OscilloscopeMeasurement

type: str = 'OscilloscopeMeasurement'#
waveform_file_list: list[piel.types.core.PathTypes] = []#
measurements_file: piel.types.core.PathTypes = ''#
class OscilloscopeMeasurementCollection(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.core.MeasurementCollection

Generic class for MeasurementCollection

type: str = 'OscilloscopeMeasurementCollection'#
collection: list[OscilloscopeMeasurement] = []#
class OscilloscopeMeasurementConfiguration(/, **data: Any)[source]#

Bases: piel.types.experimental.measurements.core.MeasurementConfiguration

Standard definition for a measurement configuration.

measurement_configuration_type: str = 'OscilloscopeMeasurementConfiguration'#
FrequencyMeasurementConfigurationTypes#
FrequencyMeasurementTypes#
MeasurementTypes#
MeasurementConfigurationTypes#
MeasurementCollectionTypes#
class Oscilloscope(/, **data: Any)[source]#

Bases: piel.types.experimental.device.MeasurementDevice

Represents an oscilloscope

configuration: OscilloscopeConfiguration | None = None#

Just overwrites this section of the device definition.

class OscilloscopeConfiguration(/, **data: Any)[source]#

Bases: 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.

bandwidth_Hz: piel.types.metrics.ScalarMetric = None#
class WaveformGeneratorConfiguration(/, **data: Any)[source]#

Bases: 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.

signal: piel.types.signal.time_sources.SignalTimeSources = None#

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

class WaveformGenerator(/, **data: Any)[source]#

Bases: piel.types.experimental.device.Device

Represents a vector-network analyser.

configuration: WaveformGeneratorConfiguration = None#

Just overwrites this section of the device definition.

class CoaxialCableGeometryType(/, **data: Any)[source]#

Bases: 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.

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.

supplied_parameters() list[str]#

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

core_cross_sectional_area_m2: float | None = 0#

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

length_m: float = 0#

The length of the cable in meters.

sheath_cross_sectional_area_m2: float | None = 0#

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

total_cross_sectional_area_m2: float | None = 0#

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

class CoaxialCableHeatTransferType(/, **data: Any)[source]#

Bases: piel.types.quantity.Quantity

All units are in watts.

core: float | None = 0#

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

sheath: float | None = 0#

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

dielectric: float | None = 0#

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

total: float = 0#

The total computed heat transfer in watts for the cable.

units: str = 'W'#
class CoaxialCableMaterialSpecificationType(/, **data: Any)[source]#

Bases: 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.

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.

supplied_parameters() list[str][source]#

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

core: piel.types.materials.MaterialReferenceType | None = None#

The material of the core.

sheath: piel.types.materials.MaterialReferenceType | None = None#

The material of the sheath.

dielectric: piel.types.materials.MaterialReferenceType | None = None#

The material of the dielectric.

supplied_parameters()[source]#

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.

Return type:

list[str]

class DCCableGeometryType(/, **data: Any)[source]#

Bases: 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.

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.

supplied_parameters() list[str]#

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

core_cross_sectional_area_m2: float = 0#

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

length_m: float = 0#

The length of the cable in meters.

total_cross_sectional_area_m2: float = 0#

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

class DCCableHeatTransferType(/, **data: Any)[source]#

Bases: piel.types.quantity.Quantity

All units are in watts.

core: float | None = 0#

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

total: float = 0#

The total computed heat transfer in watts for the cable.

units: str = 'W'#
class DCCableMaterialSpecificationType(/, **data: Any)[source]#

Bases: 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.

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.

supplied_parameters() list[str]#

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

core: piel.types.materials.MaterialReferenceType | None = None#

The material of the core.

class DCCable(/, **data: Any)[source]#

Bases: Cable

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

geometry: DCCableGeometryType | None = None#
heat_transfer: DCCableHeatTransferType | None = None#
material_specification: DCCableMaterialSpecificationType | None = None#
class CoaxialCable(/, **data: Any)[source]#

Bases: 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.

geometry: CoaxialCableGeometryType | None#
heat_transfer: CoaxialCableHeatTransferType | None = None#
material_specification: CoaxialCableMaterialSpecificationType | None = None#
class PCB(/, **data: Any)[source]#

Bases: piel.types.connectivity.physical.PhysicalComponent

Represents the data of a physical component or device.

class Short(/, **data: Any)[source]#

Bases: piel.types.PhysicalComponent

Represents the data of a physical component or device.

ports: list[piel.types.PhysicalPort]#
class Open(/, **data: Any)[source]#

Bases: piel.types.PhysicalComponent

Represents the data of a physical component or device.

ports: list[piel.types.PhysicalPort]#
class Load(/, **data: Any)[source]#

Bases: piel.types.PhysicalComponent

Represents the data of a physical component or device.

ports: list[piel.types.PhysicalPort]#
class Through(/, **data: Any)[source]#

Bases: piel.types.PhysicalComponent

Represents the data of a physical component or device.

ports: list[piel.types.PhysicalPort]#
class PowerSplitter(/, **data: Any)[source]#

Bases: 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:#

networkFrequencyTransmissionModel | None

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

metricsFrequencyMetricCollection

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.

class BiasTee(/, **data: Any)[source]#

Bases: 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:#

networkFrequencyTransmissionModel | None

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

metricsFrequencyMetricCollection

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.

class FockStatePhaseTransition[source]#

Bases: typing_extensions.TypedDict

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

phase#

The phase mapping for the transition.

Type:

PhaseMapType

input_fock_state#

The input Fock state as a tuple of integers.

Type:

TupleIntType

output_fock_state#

The output Fock state as a tuple of integers.

Type:

TupleIntType

target_mode_output#

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

Type:

Optional[bool | int]

phase: PhaseMapType#
input_fock_state: piel.types.core.TupleIntType#
output_fock_state: piel.types.core.TupleIntType#
target_mode_output: bool | int | None | None#
class OpticalStateTransitionCollection(/, **data: Any)[source]#

Bases: piel.types.core.PielBaseModel

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

mode_amount#

The number of modes in the system.

Type:

int

target_mode_index#

The index of the target mode in the system.

Type:

int

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.

_ignore_keys: list[str] = ['unitary', 'raw_output']#
model_config#

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

mode_amount: int | None = None#

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

target_mode_index: int | None = None#

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

transmission_data: list[OpticalTransmission]#

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

property dataframe: pandas.DataFrame#

Returns a full pandas DataFrame representation of the transmission files.

Returns:

A DataFrame containing the transmission files for the optical states.

Return type:

pd.DataFrame

property keys_list: 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.

Return type:

List[str]

Notes

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

property transition_dataframe: 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.

Return type:

pd.DataFrame

Notes

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

property target_output_dataframe: 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.

Return type:

pd.DataFrame

PhaseMapType#

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

Type:

PhaseMapType

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

SwitchFunctionParameter#
SParameterCollection#
class ElectroOpticModulatorMetrics(/, **data: Any)[source]#

Bases: piel.types.connectivity.metrics.ComponentMetrics

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

class ElectroOpticModulator(/, **data: Any)[source]#

Bases: piel.types.connectivity.physical.PhysicalComponent

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

metrics: list[ElectroOpticModulatorMetrics] = []#

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

class PulsedLaserMetrics(/, **data: Any)[source]#

Bases: piel.types.connectivity.metrics.ComponentMetrics

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

wavelength_nm: piel.types.metrics.ScalarMetric#
pulse_power_W: piel.types.metrics.ScalarMetric#
average_power_W: piel.types.metrics.ScalarMetric#
pulse_repetition_rate_Hz: piel.types.metrics.ScalarMetric#
pulse_width_s: piel.types.metrics.ScalarMetric#
class PulsedLaser(/, **data: Any)[source]#

Bases: piel.types.connectivity.physical.PhysicalComponent

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

metrics: list[PulsedLaserMetrics] = []#

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

class ElectronicCircuit(/, **data: Any)[source]#

Bases: piel.types.connectivity.physical.PhysicalComponent

Represents the data of a physical component or device.

class ElectronicChip(/, **data: Any)[source]#

Bases: piel.types.connectivity.physical.PhysicalComponent

A model representing an electronic chip in a photonic circuit.

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.

class RFTwoPortAmplifier(/, **data: Any)[source]#

Bases: 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:#

networkFrequencyTransmissionModel | None

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

metricsFrequencyMetricCollection

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.

class RFAmplifierCollection(/, **data: Any)[source]#

Bases: piel.types.connectivity.generic.ComponentCollection

This represents the fundamental data structure of an element in connectivity

components: list[RFAmplifierTypes] = []#
RFAmplifierTypes#
class PowerAmplifierMetrics(/, **data: Any)[source]#

Bases: piel.types.connectivity.metrics.ComponentMetrics

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

footprint_mm2#

The physical footprint of the amplifier in square millimeters.

Type:

ScalarMetric

bandwidth_Hz#

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

Type:

ScalarMetric

power_added_efficiency#

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

Type:

ScalarMetric

power_consumption_mW#

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

Type:

ScalarMetric

power_gain_dB#

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

Type:

ScalarMetric

saturated_power_output_dBm#

The saturated power output of the amplifier in dBm.

Type:

ScalarMetric

supply_voltage_V#

The supply voltage of the amplifier in volts.

Type:

ScalarMetric

technology_nm#

The technology node of the amplifier in nanometers.

Type:

ScalarMetric

technology_material#

The material technology used in the amplifier.

Type:

Optional[str]

footprint_mm2: piel.types.metrics.ScalarMetric#

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

bandwidth_Hz: piel.types.metrics.ScalarMetric#

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

power_added_efficiency: piel.types.metrics.ScalarMetric#

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

power_consumption_mW: piel.types.metrics.ScalarMetric#

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

power_gain_dB: piel.types.metrics.ScalarMetric#

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

saturated_power_output_dBm: piel.types.metrics.ScalarMetric#

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

supply_voltage_V: piel.types.metrics.ScalarMetric#

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

technology_nm: piel.types.metrics.ScalarMetric#

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

technology_material: str = ''#

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

class PowerAmplifier(/, **data: Any)[source]#

Bases: 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:#

networkFrequencyTransmissionModel | None

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

metricsFrequencyMetricCollection

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.

metrics: list[PowerAmplifierMetrics] = []#

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

class LNAMetrics(/, **data: Any)[source]#

Bases: piel.types.connectivity.metrics.ComponentMetrics

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

footprint_mm2#

The physical footprint of the amplifier in square millimeters.

Type:

ScalarMetric

bandwidth_Hz#

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

Type:

ScalarMetric

noise_figure#

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

Type:

ScalarMetric

power_consumption_mW#

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

Type:

ScalarMetric

power_gain_dB#

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

Type:

ScalarMetric

supply_voltage_V#

The supply voltage of the amplifier in volts.

Type:

ScalarMetric

technology_nm#

The technology node of the amplifier in nanometers.

Type:

ScalarMetric

technology_material#

The material technology used in the amplifier.

Type:

Optional[str]

footprint_mm2: piel.types.metrics.ScalarMetric#

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

bandwidth_Hz: piel.types.metrics.ScalarMetric#

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

noise_figure: piel.types.metrics.ScalarMetric#

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

power_consumption_mW: piel.types.metrics.ScalarMetric#

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

power_gain_dB: piel.types.metrics.ScalarMetric#

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

supply_voltage_V: piel.types.metrics.ScalarMetric#

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

technology_nm: piel.types.metrics.ScalarMetric#

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

technology_material: str = ''#

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

class LowNoiseTwoPortAmplifier(/, **data: Any)[source]#

Bases: 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:#

networkFrequencyTransmissionModel | None

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

metricsFrequencyMetricCollection

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.

metrics: list[LNAMetrics] = []#

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

ProjectType#
CircuitComponent#
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.

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.

MaterialSpecificationType#

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

class ScalarMetric(/, **data: Any)[source]#

Bases: piel.types.connectivity.abstract.Instance

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

value: piel.types.core.NumericalTypes | None = None#
mean: piel.types.core.NumericalTypes | None = None#
min: piel.types.core.NumericalTypes | None = None#
max: piel.types.core.NumericalTypes | None = None#
standard_deviation: piel.types.core.NumericalTypes | None = None#
count: piel.types.core.NumericalTypes | None = None#
unit: piel.types.units.Unit#
property data#
property table#
class ScalarMetricCollection(/, **data: Any)[source]#

Bases: piel.types.connectivity.abstract.Instance

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

metrics: list[ScalarMetric] = []#
property data#
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.

Return type:

pd.DataFrame

__getitem__(index)[source]#

Allows for indexing and slicing of the metrics list.

Parameters:

index – An integer or slice object for indexing.

Returns:

A new ScalarMetricCollection containing the specified slice of metrics.

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.

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.

RecursiveNetlist#

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

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.

ElectricalSignalDomains#
QuantityTypesDC#
class SignalDCCollection(/, **data: Any)[source]#

Bases: piel.types.connectivity.abstract.Instance

This represents the fundamental data structure of an element in connectivity

inputs: list[SignalDC] = []#

The input DC signals.

outputs: list[SignalDC] = []#

The output DC signals.

power: list[SignalDC] = []#

The power DC signals.

class SignalTraceDC(/, **data: Any)[source]#

Bases: 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.

unit: piel.types.units.Unit#

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

values: piel.types.core.ArrayTypes = []#

The values of the operating points in an array format.

class SignalDC(/, **data: Any)[source]#

Bases: 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.

trace_list: list[SignalTraceDC] = []#
class Phasor(/, **data: Any)[source]#

Bases: 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.

\[Ae^{i(\omega t+ heta)}\]
magnitude: piel.types.core.NumericalTypes | piel.types.core.ArrayTypes#

Should represent an absolute value real number.

phase: piel.types.core.NumericalTypes | piel.types.core.ArrayTypes#

Should represent an absolute value real number.

frequency: piel.types.core.NumericalTypes | piel.types.core.ArrayTypes#

Should represent an absolute value real number.

frequency_unit: piel.types.units.Unit#
phase_unit: piel.types.units.Unit#
magnitude_unit: piel.types.units.Unit#
property data#
property table#
check_lengths_consistency(model)[source]#

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.

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.

\[Ae^{i(\omega t+ heta)}\]
class PathTransmission(/, **data: Any)[source]#

Bases: piel.types.connectivity.abstract.Instance

This represents the fundamental data structure of an element in connectivity

connection: piel.types.connectivity.generic.ConnectionTypes#
transmission: 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.

class NetworkTransmission(/, **data: Any)[source]#

Bases: 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.

input: 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.

network: list[PathTransmission] = []#

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

TODO implement port mapping already.

check_length_consistency(model)[source]#
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.

FrequencyTransmissionList#
class FrequencyMetricCollection(/, **data: Any)[source]#

Bases: 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.

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.

supplied_parameters() list[str]#

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

metrics: list[FrequencyMetric] = []#
class FrequencyMetric(/, **data: Any)[source]#

Bases: 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.

input: piel.types.signal.frequency.core.Phasor | None = None#
metric: piel.types.metrics.ScalarMetric#
property table#
class ElectroOpticDCPathTransmission(/, **data: Any)[source]#

Bases: 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.

input_dc: piel.types.signal.dc_data.SignalDC#
output: piel.types.signal.frequency.transmission.PathTransmission#
class ElectroOpticDCNetworkTransmission(/, **data: Any)[source]#

Bases: piel.types.connectivity.abstract.Instance

Applicable when you have multiple inputs and multiple paths

path_transmission_list: list[ElectroOpticDCPathTransmission] = []#
class TimeSignalData(/, **data: Any)[source]#

Bases: 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.

time_s: piel.types.core.ArrayTypes = []#
data: piel.types.core.ArrayTypes = []#
data_name: str = ''#
time_s_unit: piel.types.units.Unit#
data_unit: piel.types.units.Unit#
DataTimeSignalData#
EdgeTransitionAnalysisTypes#
MultiTimeSignalData#
MultiDataTimeSignal#

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

MultiDataTimeSignalCollectionTypes = ['equivalent', 'different']#
MultiDataTimeSignalAnalysisTypes#
DataTimeSignalAnalysisTypes#
class ExponentialSource(/, **data: Any)[source]#

Bases: 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.

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.

supplied_parameters() list[str]#

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

voltage_1_V: float#
voltage_2_V: float#
rise_delay_time_s: float#
rise_time_constant_s: float#
fall_delay_time_s: float#
fall_time_constant_s: float#
class PulseSource(/, **data: Any)[source]#

Bases: 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.

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.

supplied_parameters() list[str]#

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

voltage_1_V: float#
voltage_2_V: float#
delay_time_s: float#
rise_time_s: float#
fall_time_s: float#
pulse_width_s: float#
period_s: float#
class PiecewiseLinearSource(/, **data: Any)[source]#

Bases: 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.

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.

supplied_parameters() list[str]#

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

time_voltage_pairs: List[tuple]#
class SineSource(/, **data: Any)[source]#

Bases: 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.

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.

supplied_parameters() list[str]#

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

offset_voltage_V: float#
amplitude_V: float#
frequency_Hz: float#
delay_time_s: float | None#
damping_factor: float | None#
SignalTimeSources#
class SymbolicValue(/, **data: Any)[source]#

Bases: 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.

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.

supplied_parameters() list[str]#

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

name: str = ''#
label: str = ''#

Label used in plots and more.

shorthand: str = ''#
symbol: str = ''#
class Reference(/, **data: Any)[source]#

Bases: 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.

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.

supplied_parameters() list[str]#

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

text: str = ''#
bibtex_id: str = ''#
bibtex: str = ''#
class Quantity(/, **data: Any)[source]#

Bases: 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.

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.

supplied_parameters() list[str]#

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

name: str = ''#
value: piel.types.core.NumericalTypes | None = None#
unit: piel.types.units.Unit#
__add__#
__mul__#
__sub__#
__radd__#
__rmul__#
__rsub__#
__truediv__#
__rtruediv__#
__iadd__#
__imul__#
__isub__#
class Unit(/, **data: Any)[source]#

Bases: 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.

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.

supplied_parameters() list[str]#

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

datum: BaseSIUnitNameList | str#
base: piel.types.core.NumericalTypes = 1#

In the format 1eN

__mul__#
__rmul__#
__add__#
__radd__#
__truediv__#
__rtruediv__#
BaseSIUnitNameList#
A#
dB#
dBm#
degree#
GHz#
Hz#
nm#
ns#
m#
MHz#
mm2#
mW#
ohm#
ps#
ratio#
s#
us#
W#
V#