def write_sorting(sorting: SortingExtractor, save_path: PathType):
        assert save_path.suffixes == [
            ".spikes",
            ".cellinfo",
            ".mat",
        ], "The save_path must correspond to the CellExplorer format of sorting_id.spikes.cellinfo.mat!"

        base_path = save_path.parent
        sorting_id = save_path.name.split(".")[0]
        session_info_save_path = base_path / f"{sorting_id}.sessionInfo.mat"
        spikes_save_path = save_path
        base_path.mkdir(parents=True, exist_ok=True)

        sampling_frequency = sorting.get_sampling_frequency()
        session_info_mat_dict = dict(sessionInfo=dict(rates=dict(
            wideband=sampling_frequency)))

        scipy.io.savemat(file_name=session_info_save_path,
                         mdict=session_info_mat_dict)

        spikes_mat_dict = dict(spikes=dict(
            UID=sorting.get_unit_ids(),
            times=[[[y / sampling_frequency] for y in x]
                   for x in sorting.get_units_spike_train()],
        ))
        # If, in the future, it is ever desired to allow this to write unit properties, they must conform
        # to the format here: https://cellexplorer.org/datastructure/data-structure-and-format/
        scipy.io.savemat(file_name=spikes_save_path, mdict=spikes_mat_dict)
def _get_spike_train(*, sorting: se.SortingExtractor, unit_id):
    if type(unit_id) == list:
        x = sorting.get_units_spike_train(unit_ids=unit_id)
        return np.sort(np.concatenate(x))
    else:
        return sorting.get_unit_spike_train(unit_id=unit_id)