Source code for piel.visual.experimental.propagation.experiment_data
import matplotlib.pyplot as plt
from piel.visual import save
from piel.types.experimental import ExperimentData
from typing import Optional
from . import measurement_data_collection
[docs]
def plot_propagation_signals_time(
experiment_data: ExperimentData,
measurement_section: Optional[list[str]] = None,
*args,
**kwargs,
):
# TODO Implement validation that it's a time-propagation delay measurement
fig, ax = measurement_data_collection.plot_propagation_signals_time(
data_collection=experiment_data.data,
parameters_list=experiment_data.experiment.parameters_list,
measurement_section=measurement_section,
**kwargs,
)
return fig, ax
[docs]
def plot_signal_propagation_measurements(
experiment_data: ExperimentData,
x_parameter: str = "",
measurement_name: str = "",
measurement_section: Optional[list[str]] = None,
xlabel=r"ScalarSource Frequency $GHz$",
ylabel=r"Propagation Delay $ns$",
yscale_factor=1e9,
*args,
**kwargs,
):
import pandas as pd
x_parameter_data = pd.DataFrame(experiment_data.experiment.parameters_list)[
x_parameter
]
signal_propagation_sweep_data = experiment_data.data.collection
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
if measurement_section is None:
measurement_section = ["value", "mean", "min", "max"]
for measurement_section_i in measurement_section:
x_data = list()
y_data = list()
i = 0
for signal_propagation_measurement_data_i in signal_propagation_sweep_data:
# Go through each of the files measurements to extract the relevant files
x_data.append(x_parameter_data[i])
y_data.append(
signal_propagation_measurement_data_i.measurements.data[
measurement_name
][measurement_section_i]
* yscale_factor
)
i += 1
ax.plot(x_data, y_data, "o", label=measurement_section_i)
ax.legend()
ax.set_title("Transient Propagation Delay Characterization \n RF PCB")
ax.set_xlabel(xlabel)
ax.set_ylabel(ylabel)
# Save the figure if 'path' is provided in kwargs
save(fig, **kwargs)
return fig, ax