Source code for piel.experimental.measurements.propagation
from piel.types.experimental import PropagationDelayMeasurement
from piel.types import PathTypes
from piel.file_system import return_path
[docs]
def compose_propagation_delay_measurement(
instance_directory: PathTypes,
dut_file_prefix: str = "Ch1",
reference_file_prefix: str = "Ch2",
measurement_file_prefix: str = "",
skip_missing: bool = False,
**kwargs,
) -> PropagationDelayMeasurement:
"""
This function will iterate through the instance directory and find the files that correspond to the propagation delay measurement.
The files are expected to be in the form of:
- {dut_file_prefix}_waveform.csv
- {reference_file_prefix}_waveform.csv
- {measurement_file_prefix}_measurements.csv
"""
instance_directory = return_path(instance_directory)
dut_file = None
reference_file = None
measurements_file = None
for file_i in instance_directory.iterdir():
if (dut_file_prefix in file_i.name) and (file_i.suffix == ".csv"):
dut_file = file_i
elif (reference_file_prefix in file_i.name) and file_i.suffix == ".csv":
reference_file = file_i
elif (measurement_file_prefix in file_i.name) and file_i.suffix == ".csv":
measurements_file = file_i
if (dut_file is None) or (reference_file is None) or (measurements_file is None):
missing_error = FileNotFoundError(
f"Could not find the required files in the directory {instance_directory}"
)
if skip_missing:
print(missing_error)
return PropagationDelayMeasurement()
else:
raise missing_error
return PropagationDelayMeasurement(
parent_directory=instance_directory,
dut_waveform_file=dut_file,
reference_waveform_file=reference_file,
measurements_file=measurements_file,
**kwargs,
)