piel.tools.virtuoso.simulation.data.dc
======================================

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


Functions
---------

.. autoapisummary::

   piel.tools.virtuoso.simulation.data.dc.dataframe_to_signal_dc_collection
   piel.tools.virtuoso.simulation.data.dc.extract_signals_from_csv


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

.. py:function:: dataframe_to_signal_dc_collection(df) -> piel.types.SignalDCCollection

   Converts a DataFrame containing time and data columns into a `SignalDCCollection`.

   This function processes a DataFrame where each signal is represented by a pair of columns:
   one for input traces (time, ending with " X") and one for output traces (data, ending with " Y").
   It constructs `SignalDC` objects for each valid pair, grouping them into a `SignalDCCollection`.

   :param df: A DataFrame with columns representing input traces ('X') and output traces ('Y') pairs.
   :type df: pd.DataFrame

   :returns: A collection of DC signals representing inputs and outputs.
   :rtype: SignalDCCollection

   .. rubric:: Example

   Input DataFrame:
       /out (resistance=1000) X | /out (resistance=1000) Y | /out (resistance=2000) X | /out (resistance=2000) Y
       -------------------------|-------------------------|-------------------------|-------------------------
       0.0                      | 10.0                   | 0.0                    | 20.0
       1.0                      | 15.0                   | 1.0                    | 25.0

   Output:
       SignalDCCollection(
           inputs=[SignalDC(trace_list=[SignalTraceDC(name="out_resistance_1000_X", values=[0.0, 1.0]),
                                        SignalTraceDC(name="out_resistance_2000_X", values=[0.0, 1.0])])],
           outputs=[SignalDC(trace_list=[SignalTraceDC(name="out_resistance_1000_Y", values=[10.0, 15.0]),
                                         SignalTraceDC(name="out_resistance_2000_Y", values=[20.0, 25.0])])]
       )


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

   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")
       ]


