piel.tools.virtuoso.simulation.data.time
========================================

.. py:module:: piel.tools.virtuoso.simulation.data.time


Functions
---------

.. autoapisummary::

   piel.tools.virtuoso.simulation.data.time.dataframe_to_multi_time_signal_data
   piel.tools.virtuoso.simulation.data.time.extract_signals_from_csv


Module Contents
---------------

.. py:function:: dataframe_to_multi_time_signal_data(df) -> piel.types.MultiDataTimeSignal

   Converts a DataFrame containing time and data columns into a list of `DataTimeSignalData` objects.

   This function processes a DataFrame where each signal is represented by a pair of columns:
   one for time (ending with " X") and one for the corresponding data values (ending with " Y").
   It constructs `DataTimeSignalData` objects for each valid pair and returns them as a list.

   :param df: A DataFrame with columns representing time ('X') and data ('Y') pairs.
   :type df: pd.DataFrame

   :returns: A list of `DataTimeSignalData` objects, where each object represents a signal.
   :rtype: MultiDataTimeSignal

   .. rubric:: Example

   Input DataFrame:
       Signal1 X | Signal1 Y | Signal2 X | Signal2 Y
       --------- | --------- | --------- | ---------
       0.0       | 10.0      | 0.0       | 20.0
       1.0       | 15.0      | 1.0       | 25.0

   Output:
       [
           DataTimeSignalData(time_s=[0.0, 1.0], data=[10.0, 15.0], data_name="Signal1"),
           DataTimeSignalData(time_s=[0.0, 1.0], data=[20.0, 25.0], data_name="Signal2")
       ]


.. py:function:: extract_signals_from_csv(file_path: str) -> piel.types.MultiDataTimeSignal

   Reads a CSV file and extracts time-series signals as a list of `DataTimeSignalData` objects.

   This function reads the contents of a CSV file into a pandas DataFrame, then converts
   the DataFrame into a list of `DataTimeSignalData` objects using the `dataframe_to_multi_time_signal_data` function.

   :param file_path: The path to the CSV file.
   :type file_path: str

   :returns: A list of `DataTimeSignalData` objects, where each object represents a time-series signal.
   :rtype: MultiDataTimeSignal

   .. rubric:: Example

   If the CSV contains:
       Signal1 X,Signal1 Y,Signal2 X,Signal2 Y
       0.0,10.0,0.0,20.0
       1.0,15.0,1.0,25.0

   The output will be:
       [
           DataTimeSignalData(time_s=[0.0, 1.0], data=[10.0, 15.0], data_name="Signal1"),
           DataTimeSignalData(time_s=[0.0, 1.0], data=[20.0, 25.0], data_name="Signal2")
       ]


