Skip to content

Add splitting functionality to curation and SortingAnalyzer #3817

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 17 commits into
base: main
Choose a base branch
from

Conversation

alejoe91
Copy link
Member

Depends on #3760

Implements splitting functionality in:

@alejoe91 alejoe91 added the curation Related to curation module label Mar 28, 2025
Comment on lines +597 to +599
old_template = arr[self.sorting_analyzer.sorting.ids_to_indices([split_unit_id])[0], ...]
new_indices = np.array([new_unit_ids.index(unit_id) for unit_id in new_splits])
new_array[new_indices, ...] = np.tile(old_template, (len(new_splits), 1, 1))
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@samuelgarcia this needs to be discussed. What should we do if the waveforms extension is not there? The current behavior is copying, but we mught want to force recompute here

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe add warning here!

@samuelgarcia
Copy link
Member

This is amazing camarade.

I would do first a PR to focus only on the format. And then merge this one.
What do you think ?

@alejoe91
Copy link
Member Author

I did camarade! #3760

@alejoe91 alejoe91 added this to the 0.103.0 milestone Jun 11, 2025
new_unit_ids : list | None, default: None
Optional new unit_ids for merged units. If given, it needs to have the same length as `merge_unit_groups`.
If None, new ids will be generated.
new_id_strategy : "append" | "take_first" | "join", default: "append"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
new_id_strategy : "append" | "take_first" | "join", default: "append"
new_id_strategy : "append" | "split", default: "append"

self,
split_units: dict[list[str | int], list[int] | list[list[int]]],
new_unit_ids: list[list[int | str]] | None = None,
new_id_strategy: str = "append",
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add splitting_mode to deal with templates recomputation

Comment on lines +71 to +74
full_spike_indices = []
for label in np.unique(self.labels):
label_indices = np.where(self.labels == label)[0]
full_spike_indices.append(label_indices)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe make a helper function that returns a dict of indices given an array

# we propagate random spikes to avoid random spikes to be recomputed
extension_dict_ = extension_dict_split.copy()
extension_dict_.pop("random_spikes")
analyzer_hard.extensions["random_spikes"] = analyzer_split.extensions["random_spikes"]
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do a copy and ref to the analyzer here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
curation Related to curation module
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants