diff --git a/dataprocessing/readtools.py b/dataprocessing/readtools.py index 6944c6ef5f433d639c48dc9837585bda5a712b94..2bbc92f7ea3b2eb14b7a27f08104862e094afc4b 100644 --- a/dataprocessing/readtools.py +++ b/dataprocessing/readtools.py @@ -56,20 +56,47 @@ def read_timeseries_PLECS(filename, timeseries_names=None): def read_timeseries_simulink(filename, timeseries_names=None): pd_df = pd.read_csv(filename) - timeseries_list = [] + timeseries_list = {} + cmpl_result_columns = [] + real_result_columns = [] + if timeseries_names is None: - # No trajectory names specified, thus read in all - timeseries_names = list(pd_df.columns.values) - timeseries_names.remove('time') - for name in timeseries_names: - timeseries_list.append(TimeSeries(name, pd_df['time'].values, pd_df[name].values)) + # No column names specified, thus read in all and strip off spaces + pd_df.rename(columns=lambda x: x.strip(), inplace=True) + column_names = list(pd_df.columns.values) + + # Remove timestamps column name and store separately + column_names.remove('time') + timestamps = pd_df.iloc[:, 0] + + # Find real and complex variable names + real_string = '.real' + imaginary_string = '.imag' + for column in column_names: + if real_string in column: + tmp = column.replace(real_string, '') + cmpl_result_columns.append(tmp) + #print("Found complex variable: " + tmp) + elif not imaginary_string in column: + real_result_columns.append(column) + #print("Found real variable: " + column) + + for column in real_result_columns: + timeseries_list[column] = TimeSeries(column, timestamps, pd_df[column]) + + for column in cmpl_result_columns: + timeseries_list[column] = TimeSeries(column, timestamps, + np.vectorize(complex)(pd_df[column + real_string], + pd_df[column + imaginary_string])) + else: # Read in specified time series - for name in timeseries_names: - timeseries_list.append(TimeSeries(name, pd_df['time'].values, pd_df[name].values)) + print('cannot read specified columns yet') - print('Simulink results column names: ' + str(timeseries_names)) - print('Simulink results number: ' + str(len(timeseries_list))) + print('Simulink results real column names: ' + str(real_result_columns)) + print('Simulink results complex column names: ' + str(cmpl_result_columns)) + print('Simulink results variable number: ' + str(len(timeseries_list))) + print('Simulink results length: ' + str(len(timestamps))) return timeseries_list @@ -95,8 +122,8 @@ def read_timeseries_dpsim(filename, timeseries_names=None): timestamps = pd_df.iloc[:, 0] # Find real and complex variable names - real_string = '_re' - imaginary_string = '_im' + real_string = '.real' + imaginary_string = '.imag' for column in column_names: if real_string in column: tmp = column.replace(real_string, '')