def filter_data_set(complete_data_set, filter_indices):
    """
    filter a dataset given in the 'standard' form by specifying the relevant indices
    :param complete_data_set:
    :param filter_indices: indices that determine the elements to keep
    :return: a filter dataset, i.e. a subset of the input complete_data_set
    """
    complete_data_set_copy = complete_data_set.copy()
    complete_data_set_copy.update(time=complete_data_set_copy['time'][filter_indices],
                                  external_voltage=complete_data_set_copy['external_voltage'][filter_indices, :],
                                  disturbance_strength_Delta_V=complete_data_set_copy['disturbance_strength_Delta_V'][
                                                               filter_indices, :],
                                  disturbance_length_Delta_t=complete_data_set_copy['disturbance_length_Delta_t'][
                                                             filter_indices, :],
                                  states_initial=complete_data_set_copy['states_initial'][filter_indices, :],
                                  states_results=complete_data_set_copy['states_results'][filter_indices, :],
                                  states_prediction=complete_data_set_copy['states_prediction'][filter_indices, :],
                                  data_type=complete_data_set_copy['data_type'][filter_indices, :],
                                  simulation_id=complete_data_set_copy['simulation_id'][filter_indices, :],
                                  )

    return complete_data_set_copy