SYMBOL INDEX (3132 symbols across 162 files) FILE: .claude/skills/qt-testing/scripts/qt_capture.py function init_qt (line 19) | def init_qt() -> QApplication: function timestamp (line 27) | def timestamp() -> str: function capture_widget (line 32) | def capture_widget( function capture_and_click (line 75) | def capture_and_click( FILE: hooks/copy_source_markdown.py function on_page_content (line 16) | def on_page_content(html: str, page, config, files) -> str: # noqa: ARG001 function on_post_build (line 64) | def on_post_build(config, **kwargs): # noqa: ARG001 FILE: scripts/gen_changelog.py function fetch_release_notes (line 23) | def fetch_release_notes(owner, repo, github_token=None): FILE: scripts/get_changed_docs_urls.py function file_to_docs_url (line 24) | def file_to_docs_url(file_path: str, base_url: str) -> dict | None: function categorize_changes (line 73) | def categorize_changes(files: list[str], base_url: str) -> dict: function format_markdown_links (line 110) | def format_markdown_links(result: dict, base_url: str) -> str: function main (line 147) | def main(): FILE: sleap/cli.py class DefaultGroup (line 86) | class DefaultGroup(click.RichGroup): method __init__ (line 100) | def __init__( method parse_args (line 111) | def parse_args(self, ctx: click.Context, args: list[str]) -> list[str]: method get_command (line 127) | def get_command(self, ctx: click.Context, cmd_name: str) -> Optional[c... method resolve_command (line 135) | def resolve_command( function wrap_sio_command (line 214) | def wrap_sio_command(sio_cmd: click.Command) -> click.Command: function wrap_nn_command (line 246) | def wrap_nn_command(nn_cmd: click.Command) -> click.Command: function cli (line 294) | def cli(ctx: click.Context) -> None: function label (line 352) | def label( function doctor (line 425) | def doctor(output_json: bool, output_file: Optional[str]) -> None: function _doctor_json (line 823) | def _doctor_json() -> None: function _format_doctor_plain (line 912) | def _format_doctor_plain(data: dict) -> str: function _make_nn_stub (line 1138) | def _make_nn_stub(command_name: str) -> click.Command: FILE: sleap/diagnostic.py function print_ (line 9) | def print_(text=""): function header (line 17) | def header(text): function label (line 21) | def label(text, obj): function call (line 25) | def call(command): function call_self (line 40) | def call_self(call_args): function system_section (line 48) | def system_section(): function imports_section (line 65) | def imports_section(): function tensorflow_section (line 109) | def tensorflow_section(): function pytorch_section (line 115) | def pytorch_section(): function package_section (line 132) | def package_section(): function nvidia_section (line 140) | def nvidia_section(): function git_section (line 145) | def git_section(): function get_diagnostics (line 151) | def get_diagnostics(output_path=None): function gui_check (line 167) | def gui_check(): function main (line 174) | def main(): FILE: sleap/gui/app.py class MainWindow (line 136) | class MainWindow(QMainWindow): method __init__ (line 149) | def __init__( method setWindowTitle (line 235) | def setWindowTitle(self, value): method event (line 242) | def event(self, e: QEvent) -> bool: method closeEvent (line 258) | def closeEvent(self, event): method dragEnterEvent (line 315) | def dragEnterEvent(self, event): method dropEvent (line 323) | def dropEvent(self, event): method labels (line 349) | def labels(self) -> Labels: method labels (line 353) | def labels(self, value): method _initialize_gui (line 356) | def _initialize_gui(self): method _create_video_player (line 373) | def _create_video_player(self): method _create_color_manager (line 418) | def _create_color_manager(self): method _create_menus (line 422) | def _create_menus(self): method process_events_then (line 1093) | def process_events_then(self, action: Callable): method _create_dock_windows (line 1102) | def _create_dock_windows(self): method _create_qc_dock (line 1116) | def _create_qc_dock(self): method _load_overlays (line 1147) | def _load_overlays(self): method _update_gui_state (line 1197) | def _update_gui_state(self): method on_data_update (line 1273) | def on_data_update(self, what: List[UpdateTopic]): method plotFrame (line 1358) | def plotFrame(self, *args, **kwargs): method _after_plot_update (line 1365) | def _after_plot_update(self, frame_idx): method _after_plot_change (line 1370) | def _after_plot_change(self, player, frame_idx, selected_inst): method updateStatusMessage (line 1403) | def updateStatusMessage(self, message: Optional[str] = None): method resetPrefs (line 1476) | def resetPrefs(self): method openPrefs (line 1485) | def openPrefs(self): method _update_track_menu (line 1499) | def _update_track_menu(self): method _update_seekbar_marks (line 1533) | def _update_seekbar_marks(self): method _set_seekbar_header (line 1539) | def _set_seekbar_header(self, graph_name: str): method _get_frames_for_prediction (line 1574) | def _get_frames_for_prediction(self): method apply_frame_exclusions (line 1645) | def apply_frame_exclusions( method _show_learning_dialog (line 1694) | def _show_learning_dialog(self, mode: str): method _handle_learning_finished (line 1751) | def _handle_learning_finished(self, new_count: int): method _handle_navigate_to_instance (line 1764) | def _handle_navigate_to_instance( method _show_metrics_dialog (line 1772) | def _show_metrics_dialog(self): method _handle_instance_double_click (line 1776) | def _handle_instance_double_click( method _show_keyboard_shortcuts_window (line 1804) | def _show_keyboard_shortcuts_window(self): method _show_update_checker_dialog (line 1808) | def _show_update_checker_dialog(self): method _goto_next_suggestion_or_flag (line 1815) | def _goto_next_suggestion_or_flag(self): method _goto_prev_suggestion_or_flag (line 1826) | def _goto_prev_suggestion_or_flag(self): method _open_size_distribution (line 1837) | def _open_size_distribution(self): method _open_label_qc (line 1864) | def _open_label_qc(self): function create_sleap_label_parser (line 1884) | def create_sleap_label_parser(): function create_app (line 1946) | def create_app(): function main (line 1956) | def main(args: Optional[list] = None, labels: Optional[Labels] = None): FILE: sleap/gui/color.py class ColorManager (line 32) | class ColorManager: method __init__ (line 44) | def __init__(self, labels: Labels = None, palette: str = "standard"): method labels (line 72) | def labels(self): method labels (line 77) | def labels(self, val): method palette (line 81) | def palette(self): method palette (line 86) | def palette(self, palette: Union[Text, Iterable[ColorTupleStringType]]): method palette_names (line 103) | def palette_names(self) -> Iterable[Text]: method tracks (line 108) | def tracks(self) -> Iterable[Track]: method set_palette (line 114) | def set_palette(self, palette: Union[Text, Iterable[ColorTupleStringTy... method fix_index (line 118) | def fix_index(self, idx: int) -> int: method get_color_by_idx (line 122) | def get_color_by_idx(self, idx: int) -> ColorTupleType: method color_to_tuple (line 128) | def color_to_tuple(color: Union[Text, Iterable[int]]) -> ColorTupleType: method get_pseudo_track_index (line 149) | def get_pseudo_track_index( method get_track_color (line 171) | def get_track_color(self, track: Union[Track, int]) -> ColorTupleType: method is_sequence (line 188) | def is_sequence(cls, item) -> bool: method is_edge (line 193) | def is_edge(cls, item) -> bool: method is_node (line 203) | def is_node(item) -> bool: method is_predicted (line 208) | def is_predicted(instance) -> bool: method get_item_pen_width (line 212) | def get_item_pen_width( method get_item_type_pen_width (line 233) | def get_item_type_pen_width(self, item_type: str) -> float: method get_item_color (line 246) | def get_item_color( FILE: sleap/gui/commands.py class UpdateTopic (line 135) | class UpdateTopic(Enum): class AppCommand (line 150) | class AppCommand: method execute (line 171) | def execute(self, context: "CommandContext", params: dict = None): method ask (line 205) | def ask(context: "CommandContext", params: dict) -> bool: method do_action (line 216) | def do_action(context: "CommandContext", params: dict): method do_with_signal (line 221) | def do_with_signal(cls, context: "CommandContext", params: dict): class FakeApp (line 234) | class FakeApp: class CommandContext (line 241) | class CommandContext: method from_labels (line 264) | def from_labels(cls, labels: Labels) -> "CommandContext": method labels (line 272) | def labels(self) -> Labels: method signal_update (line 276) | def signal_update(self, what: List[UpdateTopic]): method changestack_push (line 281) | def changestack_push(self, change: str = ""): method changestack_savepoint (line 290) | def changestack_savepoint(self): method changestack_clear (line 295) | def changestack_clear(self): method has_any_changes (line 301) | def has_any_changes(self): method execute (line 304) | def execute(self, command: Type[AppCommand], **kwargs): method newProject (line 310) | def newProject(self): method loadLabelsObject (line 314) | def loadLabelsObject(self, labels: Labels, filename: Optional[str] = N... method loadProjectFile (line 327) | def loadProjectFile(self, filename: Union[str, Labels]): method openProject (line 339) | def openProject(self, filename: Optional[str] = None, first_open: bool... method importNWB (line 354) | def importNWB(self): method importCoco (line 358) | def importCoco(self): method importDLC (line 362) | def importDLC(self): method importDLCFolder (line 366) | def importDLCFolder(self): method importAnalysisFile (line 370) | def importAnalysisFile(self): method saveProject (line 374) | def saveProject(self): method saveProjectAs (line 378) | def saveProjectAs(self): method exportAnalysisFile (line 382) | def exportAnalysisFile(self, all_videos: bool = False): method exportCSVFile (line 386) | def exportCSVFile(self, all_videos: bool = False): method exportNWB (line 390) | def exportNWB(self): method exportLabeledClip (line 394) | def exportLabeledClip(self): method exportUserLabelsPackage (line 398) | def exportUserLabelsPackage(self): method exportTrainingPackage (line 402) | def exportTrainingPackage(self): method exportFullPackage (line 406) | def exportFullPackage(self): method previousLabeledFrame (line 412) | def previousLabeledFrame(self): method nextLabeledFrame (line 416) | def nextLabeledFrame(self): method nextUserLabeledFrame (line 420) | def nextUserLabeledFrame(self): method lastInteractedFrame (line 424) | def lastInteractedFrame(self): method nextSuggestedFrame (line 428) | def nextSuggestedFrame(self): method prevSuggestedFrame (line 432) | def prevSuggestedFrame(self): method addCurrentFrameAsSuggestion (line 436) | def addCurrentFrameAsSuggestion(self): method removeSuggestion (line 440) | def removeSuggestion(self): method clearSuggestions (line 444) | def clearSuggestions(self): method nextTrackFrame (line 448) | def nextTrackFrame(self): method gotoFrame (line 452) | def gotoFrame(self): method selectToFrame (line 456) | def selectToFrame(self): method gotoVideoAndFrame (line 460) | def gotoVideoAndFrame(self, video: Video, frame_idx: int): method gotoVideoAndFrameAndInstance (line 464) | def gotoVideoAndFrameAndInstance( method toggleGrayscale (line 508) | def toggleGrayscale(self): method addVideo (line 512) | def addVideo(self): method showImportVideos (line 516) | def showImportVideos(self, filenames: List[str]): method replaceVideo (line 520) | def replaceVideo(self): method removeVideo (line 524) | def removeVideo(self): method openSkeletonTemplate (line 528) | def openSkeletonTemplate(self): method openSkeleton (line 532) | def openSkeleton(self): method saveSkeleton (line 536) | def saveSkeleton(self): method newNode (line 540) | def newNode(self): method deleteNode (line 544) | def deleteNode(self): method setNodeName (line 548) | def setNodeName(self, skeleton, node, name): method setNodeSymmetry (line 552) | def setNodeSymmetry(self, skeleton, node, symmetry: str): method updateEdges (line 556) | def updateEdges(self): method newEdge (line 560) | def newEdge(self, src_node, dst_node): method deleteEdge (line 564) | def deleteEdge(self): method deletePredictions (line 568) | def deletePredictions(self): method deleteFramePredictions (line 572) | def deleteFramePredictions(self): method deleteClipPredictions (line 576) | def deleteClipPredictions(self): method deleteAreaPredictions (line 580) | def deleteAreaPredictions(self): method deleteLowScorePredictions (line 584) | def deleteLowScorePredictions(self): method deleteInstanceLimitPredictions (line 588) | def deleteInstanceLimitPredictions(self): method deleteFrameLimitPredictions (line 592) | def deleteFrameLimitPredictions(self): method deleteUserFramePredictions (line 596) | def deleteUserFramePredictions(self): method completeInstanceNodes (line 600) | def completeInstanceNodes(self, instance: Instance): method newInstance (line 604) | def newInstance( method setPointLocations (line 632) | def setPointLocations( method setInstancePointVisibility (line 642) | def setInstancePointVisibility(self, instance: Instance, node: Node, v... method addUserInstancesFromPredictions (line 648) | def addUserInstancesFromPredictions(self): method copyInstance (line 652) | def copyInstance(self): method pasteInstance (line 656) | def pasteInstance(self): method deleteSelectedInstance (line 660) | def deleteSelectedInstance(self): method deleteSelectedInstanceTrack (line 664) | def deleteSelectedInstanceTrack(self): method deleteDialog (line 668) | def deleteDialog(self): method addTrack (line 672) | def addTrack(self): method setInstanceTrack (line 676) | def setInstanceTrack(self, new_track: "Track"): method deleteTrack (line 680) | def deleteTrack(self, track: "Track"): method deleteMultipleTracks (line 684) | def deleteMultipleTracks(self, delete_all: bool = False): method copyInstanceTrack (line 688) | def copyInstanceTrack(self): method pasteInstanceTrack (line 692) | def pasteInstanceTrack(self): method setTrackName (line 696) | def setTrackName(self, track: "Track", name: str): method transposeInstance (line 700) | def transposeInstance(self): method mergeProject (line 709) | def mergeProject(self, filenames: Optional[List[str]] = None): method generateSuggestions (line 713) | def generateSuggestions(self, params: Dict): method openWebsite (line 717) | def openWebsite(self, url): method exportLabelsSubset (line 721) | def exportLabelsSubset( class NewProject (line 738) | class NewProject(AppCommand): method do_action (line 740) | def do_action(context: CommandContext, params: dict): class LoadLabelsObject (line 745) | class LoadLabelsObject(AppCommand): method do_action (line 747) | def do_action(context: "CommandContext", params: dict): class LoadProjectFile (line 785) | class LoadProjectFile(LoadLabelsObject): method ask (line 787) | def ask(context: "CommandContext", params: dict): class OpenProject (line 818) | class OpenProject(AppCommand): method do_action (line 820) | def do_action(context: "CommandContext", params: dict): method ask (line 839) | def ask(context: "CommandContext", params: dict) -> bool: class ImportNWB (line 857) | class ImportNWB(AppCommand): method do_action (line 859) | def do_action(context: "CommandContext", params: dict): method ask (line 869) | def ask(context: "CommandContext", params: dict) -> bool: class ImportCoco (line 891) | class ImportCoco(AppCommand): method do_action (line 893) | def do_action(context: "CommandContext", params: dict): method ask (line 906) | def ask(context: "CommandContext", params: dict) -> bool: class ImportDeepLabCut (line 925) | class ImportDeepLabCut(AppCommand): method do_action (line 927) | def do_action(context: "CommandContext", params: dict): method ask (line 937) | def ask(context: "CommandContext", params: dict) -> bool: class ImportDeepLabCutFolder (line 955) | class ImportDeepLabCutFolder(AppCommand): method do_action (line 957) | def do_action(context: "CommandContext", params: dict): method ask (line 975) | def ask(context: "CommandContext", params: dict) -> bool: method find_dlc_files_in_folder (line 988) | def find_dlc_files_in_folder(folder_name: str) -> List[str]: method import_labels_from_dlc_files (line 992) | def import_labels_from_dlc_files(csv_files: List[str]) -> Labels: class ImportAnalysisFile (line 1005) | class ImportAnalysisFile(AppCommand): method do_action (line 1007) | def do_action(context: "CommandContext", params: dict): method ask (line 1021) | def ask(context: "CommandContext", params: dict) -> bool: function get_new_version_filename (line 1045) | def get_new_version_filename(filename: str) -> str: class SaveProjectAs (line 1061) | class SaveProjectAs(AppCommand): method _try_save (line 1063) | def _try_save(context, labels: Labels, filename: str): method do_action (line 1093) | def do_action(cls, context: CommandContext, params: dict): method ask (line 1099) | def ask(context: CommandContext, params: dict) -> bool: class ExportAnalysisFile (line 1126) | class ExportAnalysisFile(AppCommand): method do_action (line 1138) | def do_action(cls, context: CommandContext, params: dict): method ask (line 1155) | def ask(context: CommandContext, params: dict) -> bool: class SaveProject (line 1261) | class SaveProject(SaveProjectAs): method ask (line 1263) | def ask(cls, context: CommandContext, params: dict) -> bool: function open_file (line 1272) | def open_file(filename: str): class ExportVideoClip (line 1288) | class ExportVideoClip(AppCommand): method ask (line 1296) | def ask(cls, context: CommandContext, params: dict) -> bool: method do_action (line 1329) | def do_action(cls, context: CommandContext, params: dict): method write_new_video (line 1344) | def write_new_video( method get_export_options (line 1373) | def get_export_options(cls, context: CommandContext, params: dict) -> ... method get_video_save_params (line 1425) | def get_video_save_params(cls, params: dict, export_options: dict) -> ... method get_frame_range_params (line 1444) | def get_frame_range_params(cls, context: CommandContext, params: dict)... method get_video_augmentation_params (line 1466) | def get_video_augmentation_params( method get_video_markup_params (line 1505) | def get_video_markup_params( class ExportLabeledClip (line 1536) | class ExportLabeledClip(AppCommand): method ask (line 1544) | def ask(cls, context: CommandContext, params: dict) -> bool: method do_action (line 1603) | def do_action(cls, context: CommandContext, params: dict): method write_new_video (line 1643) | def write_new_video(cls, context: CommandContext, params: dict): class ExportPackageThread (line 1702) | class ExportPackageThread(QtCore.QThread): method __init__ (line 1710) | def __init__( method cancel (line 1723) | def cancel(self): method _needs_temp_file (line 1727) | def _needs_temp_file(self) -> bool: method run (line 1743) | def run(self): class RenderVideoThread (line 1808) | class RenderVideoThread(QtCore.QThread): method __init__ (line 1819) | def __init__( method cancel (line 1846) | def cancel(self): method run (line 1850) | def run(self): function _labels_with_visible_instances (line 1892) | def _labels_with_visible_instances(labels, video): function render_video_gui (line 1917) | def render_video_gui( function export_dataset_gui (line 2044) | def export_dataset_gui( function _show_export_complete_dialog (line 2169) | def _show_export_complete_dialog(filepath: str): function reveal_file (line 2196) | def reveal_file(filepath: str): class ExportDatasetWithImages (line 2219) | class ExportDatasetWithImages(AppCommand): method do_action (line 2224) | def do_action(cls, context: CommandContext, params: dict): method ask (line 2236) | def ask(cls, context: CommandContext, params: dict) -> bool: class ExportUserLabelsPackage (line 2262) | class ExportUserLabelsPackage(ExportDatasetWithImages): class ExportTrainingPackage (line 2267) | class ExportTrainingPackage(ExportDatasetWithImages): class ExportFullPackage (line 2272) | class ExportFullPackage(ExportDatasetWithImages): class ExportLabelsSubset (line 2277) | class ExportLabelsSubset(ExportFullPackage): method ask (line 2287) | def ask(cls, context: CommandContext, params: dict) -> bool: method do_action (line 2303) | def do_action(cls, context: CommandContext, params: dict): method get_or_create_video_subset (line 2345) | def get_or_create_video_subset(cls, context: CommandContext, params: d... method get_labels_subset_unshifted (line 2382) | def get_labels_subset_unshifted( method get_lfs_subset (line 2407) | def get_lfs_subset( method get_suggestions_subset (line 2442) | def get_suggestions_subset( class GoIteratorCommand (line 2484) | class GoIteratorCommand(AppCommand): method _plot_if_next (line 2486) | def _plot_if_next(context, frame_iterator: Iterator) -> bool: method _get_frame_iterator (line 2505) | def _get_frame_iterator(context: CommandContext): method do_action (line 2509) | def do_action(cls, context: CommandContext, params: dict): class GoPreviousLabeledFrame (line 2514) | class GoPreviousLabeledFrame(GoIteratorCommand): method _get_frame_iterator (line 2516) | def _get_frame_iterator(context: CommandContext): class GoNextLabeledFrame (line 2525) | class GoNextLabeledFrame(GoIteratorCommand): method _get_frame_iterator (line 2527) | def _get_frame_iterator(context: CommandContext): class GoNextUserLabeledFrame (line 2535) | class GoNextUserLabeledFrame(GoIteratorCommand): method _get_frame_iterator (line 2537) | def _get_frame_iterator(context: CommandContext): class NavCommand (line 2552) | class NavCommand(AppCommand): method go_to (line 2554) | def go_to(context, frame_idx: int, video: Optional[Video] = None): class GoLastInteractedFrame (line 2560) | class GoLastInteractedFrame(NavCommand): method do_action (line 2562) | def do_action(cls, context: CommandContext, params: dict): class GoNextSuggestedFrame (line 2571) | class GoNextSuggestedFrame(NavCommand): method do_action (line 2575) | def do_action(cls, context: CommandContext, params: dict): class GoPrevSuggestedFrame (line 2590) | class GoPrevSuggestedFrame(GoNextSuggestedFrame): class GoNextTrackFrame (line 2594) | class GoNextTrackFrame(NavCommand): method do_action (line 2596) | def do_action(cls, context: CommandContext, params: dict): class GoFrameGui (line 2622) | class GoFrameGui(NavCommand): method do_action (line 2624) | def do_action(cls, context: "CommandContext", params: dict): method ask (line 2628) | def ask(cls, context: "CommandContext", params: dict) -> bool: class SelectToFrameGui (line 2642) | class SelectToFrameGui(NavCommand): method do_action (line 2644) | def do_action(cls, context: "CommandContext", params: dict): method ask (line 2650) | def ask(cls, context: "CommandContext", params: dict) -> bool: class EditCommand (line 2668) | class EditCommand(AppCommand): class ToggleGrayscale (line 2674) | class ToggleGrayscale(EditCommand): method do_action (line 2678) | def do_action(context: CommandContext, params: dict): class AddVideo (line 2713) | class AddVideo(EditCommand): method do_action (line 2717) | def do_action(context: CommandContext, params: dict): method ask (line 2733) | def ask(context: CommandContext, params: dict) -> bool: class ShowImportVideos (line 2740) | class ShowImportVideos(EditCommand): method do_action (line 2744) | def do_action(context: CommandContext, params: dict): class ReplaceVideo (line 2759) | class ReplaceVideo(EditCommand): method do_action (line 2763) | def do_action(context: CommandContext, params: dict) -> bool: method ask (line 2795) | def ask(context: CommandContext, params: dict) -> bool: class RemoveVideo (line 2880) | class RemoveVideo(EditCommand): method do_action (line 2884) | def do_action(context: CommandContext, params: dict): method ask (line 2904) | def ask(context: CommandContext, params: dict) -> bool: class OpenSkeleton (line 2939) | class OpenSkeleton(EditCommand): method load_skeleton (line 2943) | def load_skeleton(filename: str): method compare_skeletons (line 2959) | def compare_skeletons( method delete_extra_skeletons (line 2979) | def delete_extra_skeletons(labels: Labels): method get_template_skeleton_filename (line 2998) | def get_template_skeleton_filename(context: CommandContext) -> str: method ask (line 3013) | def ask(context: CommandContext, params: dict) -> bool: method do_action (line 3066) | def do_action(context: CommandContext, params: dict): class SaveSkeleton (line 3165) | class SaveSkeleton(AppCommand): method ask (line 3167) | def ask(context: CommandContext, params: dict) -> bool: method do_action (line 3184) | def do_action(context: CommandContext, params: dict): class NewNode (line 3199) | class NewNode(EditCommand): method do_action (line 3203) | def do_action(context: CommandContext, params: dict): class DeleteNode (line 3224) | class DeleteNode(EditCommand): method do_action (line 3228) | def do_action(context: CommandContext, params: dict): class SetNodeName (line 3240) | class SetNodeName(EditCommand): method do_action (line 3244) | def do_action(context: CommandContext, params: dict): class SetNodeSymmetry (line 3258) | class SetNodeSymmetry(EditCommand): method do_action (line 3262) | def do_action(context: CommandContext, params: dict): class NewEdge (line 3275) | class NewEdge(EditCommand): method do_action (line 3279) | def do_action(context: CommandContext, params: dict): class DeleteEdge (line 3303) | class DeleteEdge(EditCommand): method ask (line 3307) | def ask(context: "CommandContext", params: dict) -> bool: method do_action (line 3312) | def do_action(context: CommandContext, params: dict): class InstanceDeleteCommand (line 3320) | class InstanceDeleteCommand(EditCommand): method get_frame_instance_list (line 3324) | def get_frame_instance_list(context: CommandContext, params: dict): method _confirm_deletion (line 3328) | def _confirm_deletion(context: CommandContext, lf_inst_list: List) -> ... method _do_deletion (line 3356) | def _do_deletion(context: CommandContext, lf_inst_list: List[int]): method do_action (line 3375) | def do_action(cls, context: CommandContext, params: dict): method ask (line 3379) | def ask(cls, context: CommandContext, params: dict) -> bool: class DeleteAllPredictions (line 3386) | class DeleteAllPredictions(InstanceDeleteCommand): method get_frame_instance_list (line 3388) | def get_frame_instance_list( method do_action (line 3399) | def do_action(cls, context: CommandContext, params: dict): class DeleteFramePredictions (line 3412) | class DeleteFramePredictions(InstanceDeleteCommand): method _confirm_deletion (line 3414) | def _confirm_deletion(self, *args, **kwargs): method get_frame_instance_list (line 3419) | def get_frame_instance_list(context: CommandContext, params: dict): class DeleteClipPredictions (line 3432) | class DeleteClipPredictions(InstanceDeleteCommand): method get_frame_instance_list (line 3434) | def get_frame_instance_list(context: CommandContext, params: dict): class DeleteAreaPredictions (line 3446) | class DeleteAreaPredictions(InstanceDeleteCommand): method get_frame_instance_list (line 3448) | def get_frame_instance_list(context: CommandContext, params: dict): method ask_and_do (line 3471) | def ask_and_do(cls, context: CommandContext, params: dict): class DeleteLowScorePredictions (line 3497) | class DeleteLowScorePredictions(InstanceDeleteCommand): method get_frame_instance_list (line 3499) | def get_frame_instance_list(context: CommandContext, params: dict): method ask (line 3510) | def ask(cls, context: CommandContext, params: dict) -> bool: class DeleteInstanceLimitPredictions (line 3519) | class DeleteInstanceLimitPredictions(InstanceDeleteCommand): method get_frame_instance_list (line 3521) | def get_frame_instance_list(context: CommandContext, params: dict): method ask (line 3535) | def ask(cls, context: CommandContext, params: dict) -> bool: class DeleteFrameLimitPredictions (line 3549) | class DeleteFrameLimitPredictions(InstanceDeleteCommand): method get_frame_instance_list (line 3551) | def get_frame_instance_list(context: CommandContext, params: Dict): method ask (line 3567) | def ask(cls, context: CommandContext, params: Dict) -> bool: class DeleteUserFramePredictions (line 3579) | class DeleteUserFramePredictions(InstanceDeleteCommand): method get_frame_instance_list (line 3592) | def get_frame_instance_list(context: CommandContext, params: dict): method ask (line 3605) | def ask(cls, context: CommandContext, params: dict) -> bool: class TransposeInstances (line 3629) | class TransposeInstances(EditCommand): method do_action (line 3633) | def do_action(cls, context: CommandContext, params: dict): method ask_and_do (line 3661) | def ask_and_do(cls, context: CommandContext, params: dict): class DeleteSelectedInstance (line 3688) | class DeleteSelectedInstance(EditCommand): method do_action (line 3692) | def do_action(context: CommandContext, params: dict): class DeleteSelectedInstanceTrack (line 3703) | class DeleteSelectedInstanceTrack(EditCommand): method do_action (line 3711) | def do_action(context: CommandContext, params: dict): class DeleteDialogCommand (line 3730) | class DeleteDialogCommand(EditCommand): method ask_and_do (line 3736) | def ask_and_do(context: CommandContext, params: dict): class AddTrack (line 3741) | class AddTrack(EditCommand): method do_action (line 3745) | def do_action(context: CommandContext, params: dict): class SetSelectedInstanceTrack (line 3757) | class SetSelectedInstanceTrack(EditCommand): method do_action (line 3761) | def do_action(context: CommandContext, params: dict): class DeleteTrack (line 3825) | class DeleteTrack(EditCommand): method do_action (line 3829) | def do_action(context: CommandContext, params: dict): class DeleteMultipleTracks (line 3834) | class DeleteMultipleTracks(EditCommand): method do_action (line 3838) | def do_action(context: CommandContext, params: dict): class CopyInstanceTrack (line 3854) | class CopyInstanceTrack(EditCommand): method do_action (line 3856) | def do_action(context: CommandContext, params: dict): class PasteInstanceTrack (line 3863) | class PasteInstanceTrack(EditCommand): method do_action (line 3867) | def do_action(context: CommandContext, params: dict): class SetTrackName (line 3887) | class SetTrackName(EditCommand): method do_action (line 3891) | def do_action(context: CommandContext, params: dict): class GenerateSuggestions (line 3897) | class GenerateSuggestions(EditCommand): method do_action (line 3901) | def do_action(cls, context: CommandContext, params: dict): class AddSuggestion (line 3942) | class AddSuggestion(EditCommand): method do_action (line 3946) | def do_action(cls, context: CommandContext, params: dict): class RemoveSuggestion (line 3952) | class RemoveSuggestion(EditCommand): method do_action (line 3956) | def do_action(cls, context: CommandContext, params: dict): class ClearSuggestions (line 3969) | class ClearSuggestions(EditCommand): method ask (line 3973) | def ask(context: CommandContext, params: dict) -> bool: method do_action (line 3992) | def do_action(cls, context: CommandContext, params: dict): class MergeProject (line 3996) | class MergeProject(EditCommand): method ask_and_do (line 4000) | def ask_and_do(cls, context: CommandContext, params: dict): class AddInstance (line 4030) | class AddInstance(EditCommand): method do_action (line 4034) | def do_action(cls, context: CommandContext, params: dict): method create_new_instance (line 4083) | def create_new_instance( method fill_missing_nodes (line 4128) | def fill_missing_nodes( method set_visible_nodes (line 4176) | def set_visible_nodes( method find_instance_to_copy_from (line 4291) | def find_instance_to_copy_from( method get_previous_frame_index (line 4366) | def get_previous_frame_index(context: CommandContext) -> Optional[int]: class SetInstancePointLocations (line 4385) | class SetInstancePointLocations(EditCommand): method do_action (line 4402) | def do_action(cls, context: "CommandContext", params: dict): class SetInstancePointVisibility (line 4411) | class SetInstancePointVisibility(EditCommand): method do_action (line 4427) | def do_action(cls, context: "CommandContext", params: dict): class AddMissingInstanceNodes (line 4436) | class AddMissingInstanceNodes(EditCommand): method do_action (line 4440) | def do_action(cls, context: CommandContext, params: dict): method add_best_nodes (line 4447) | def add_best_nodes(cls, context, instance, visible): method add_random_nodes (line 4458) | def add_random_nodes(cls, context, instance, visible): method get_xy_in_rect (line 4505) | def get_xy_in_rect(rect: QtCore.QRectF): method get_rect_center_xy (line 4512) | def get_rect_center_xy(rect: QtCore.QRectF): method add_nodes_from_template (line 4516) | def add_nodes_from_template( method add_force_directed_nodes (line 4568) | def add_force_directed_nodes( class AddUserInstancesFromPredictions (line 4589) | class AddUserInstancesFromPredictions(EditCommand): method make_instance_from_predicted_instance (line 4593) | def make_instance_from_predicted_instance( method do_action (line 4630) | def do_action(cls, context: CommandContext, params: dict): class CopyInstance (line 4659) | class CopyInstance(EditCommand): method do_action (line 4661) | def do_action(cls, context: CommandContext, params: dict): class PasteInstance (line 4668) | class PasteInstance(EditCommand): method do_action (line 4672) | def do_action(cls, context: CommandContext, params: dict): function open_website (line 4708) | def open_website(url: str): class OpenWebsite (line 4717) | class OpenWebsite(AppCommand): method do_action (line 4719) | def do_action(context: CommandContext, params: dict): function copy_to_clipboard (line 4723) | def copy_to_clipboard(text: str): FILE: sleap/gui/config_utils.py function filter_cfg (line 6) | def filter_cfg(cfg): function get_keyval_dict_from_omegaconf (line 16) | def get_keyval_dict_from_omegaconf(cfg, parent_key="", sep="."): function get_omegaconf_from_gui_form (line 28) | def get_omegaconf_from_gui_form(flat_dict): function get_backbone_from_omegaconf (line 43) | def get_backbone_from_omegaconf(cfg: OmegaConf): function get_head_from_omegaconf (line 51) | def get_head_from_omegaconf(cfg: OmegaConf): function find_backbone_name_from_key_val_dict (line 59) | def find_backbone_name_from_key_val_dict(key_val_dict: dict): function resolve_strides_from_key_val_dict (line 74) | def resolve_strides_from_key_val_dict( function apply_cfg_transforms_to_key_val_dict (line 112) | def apply_cfg_transforms_to_key_val_dict(key_val_dict): function get_skeleton_from_config (line 292) | def get_skeleton_from_config(skeleton_config: OmegaConf): FILE: sleap/gui/dataviews.py class GenericTableModel (line 37) | class GenericTableModel(QtCore.QAbstractTableModel): method __init__ (line 70) | def __init__( method object_to_items (line 81) | def object_to_items(self, item_list): method items (line 86) | def items(self): method items (line 91) | def items(self, obj): method original_items (line 113) | def original_items(self): method get_item_color (line 122) | def get_item_color(self, item: Any, key: str): method data (line 126) | def data(self, index: QtCore.QModelIndex, role=QtCore.Qt.DisplayRole): method setData (line 157) | def setData(self, index: QtCore.QModelIndex, value: str, role=QtCore.Q... method rowCount (line 181) | def rowCount(self, parent=None): method columnCount (line 185) | def columnCount(self, parent=None): method headerData (line 189) | def headerData( method sort (line 209) | def sort( method get_from_idx (line 242) | def get_from_idx(self, index: QtCore.QModelIndex): method can_set (line 250) | def can_set(self, item, key): method set_item (line 254) | def set_item(self, item, key, value): method flags (line 258) | def flags(self, index: QtCore.QModelIndex): class GenericTableView (line 268) | class GenericTableView(QtWidgets.QTableView): method __init__ (line 297) | def __init__( method selectionChanged (line 334) | def selectionChanged(self, new, old): method activateSelected (line 342) | def activateSelected(self, *args): method selectRowItem (line 351) | def selectRowItem(self, item: Any): method selectRow (line 368) | def selectRow(self, idx: int): method getSelectedRowItem (line 372) | def getSelectedRowItem(self) -> Any: class VideosTableModel (line 390) | class VideosTableModel(GenericTableModel): method item_to_data (line 400) | def item_to_data(self, obj, item: "VideoBackend"): class SkeletonNodesTableModel (line 429) | class SkeletonNodesTableModel(GenericTableModel): method object_to_items (line 432) | def object_to_items(self, skeleton: Skeleton): method item_to_data (line 438) | def item_to_data(self, obj, item): method can_set (line 441) | def can_set(self, item, key): method set_item (line 444) | def set_item(self, item, key, value): class SkeletonEdgesTableModel (line 451) | class SkeletonEdgesTableModel(GenericTableModel): method object_to_items (line 456) | def object_to_items(self, skeleton: Skeleton): class LabeledFrameTableModel (line 467) | class LabeledFrameTableModel(GenericTableModel): method object_to_items (line 479) | def object_to_items(self, labeled_frame: LabeledFrame): method item_to_data (line 484) | def item_to_data(self, obj, item): method get_item_color (line 502) | def get_item_color(self, item: Any, key: str): method can_set (line 508) | def can_set(self, item, key): method set_item (line 512) | def set_item(self, item, key, value): class SuggestionsTableModel (line 517) | class SuggestionsTableModel(GenericTableModel): method item_to_data (line 520) | def item_to_data(self, obj, item): method sort (line 554) | def sort(self, column_idx: int, order: QtCore.Qt.SortOrder): class SkeletonNodeModel (line 601) | class SkeletonNodeModel(QtCore.QStringListModel): method __init__ (line 614) | def __init__(self, skeleton: Skeleton, src_node: Callable = None): method skeleton (line 620) | def skeleton(self): method skeleton (line 625) | def skeleton(self, val): method _valid_dst (line 638) | def _valid_dst(self): method data (line 656) | def data(self, index: QtCore.QModelIndex, role=QtCore.Qt.DisplayRole): method rowCount (line 664) | def rowCount(self, parent): method columnCount (line 668) | def columnCount(self, parent): method flags (line 672) | def flags(self, index: QtCore.QModelIndex): FILE: sleap/gui/dialogs/delete.py class DeleteDialog (line 14) | class DeleteDialog(QtWidgets.QDialog): method __init__ (line 27) | def __init__( method _make_form_widget (line 50) | def _make_form_widget(self): method _make_button_widget (line 101) | def _make_button_widget(self): method get_selected_track (line 121) | def get_selected_track(self): method get_frames_instances (line 130) | def get_frames_instances( method delete (line 197) | def delete(self): method _delete (line 214) | def _delete(self, lf_inst_list: List[Tuple[LabeledFrame, Instance]]): class DeleteUserFramePredictionsDialog (line 228) | class DeleteUserFramePredictionsDialog(QtWidgets.QDialog): method __init__ (line 238) | def __init__(self, context: "CommandContext", *args, **kwargs): method current_video_only (line 305) | def current_video_only(self) -> bool: method unlinked_only (line 310) | def unlinked_only(self) -> bool: FILE: sleap/gui/dialogs/export_clip.py class ExportClipDialog (line 8) | class ExportClipDialog(FormBuilderModalDialog): method __init__ (line 9) | def __init__(self, form_name=None): FILE: sleap/gui/dialogs/filedialog.py function os_specific_method (line 19) | def os_specific_method(func) -> Callable: class FileDialog (line 46) | class FileDialog: method open (line 53) | def open(cls, *args, **kwargs): method openMultiple (line 65) | def openMultiple(cls, *args, **kwargs): method save (line 77) | def save(cls, *args, **kwargs): method openDir (line 114) | def openDir(cls, *args, **kwargs): FILE: sleap/gui/dialogs/formbuilder.py class YamlFormWidget (line 40) | class YamlFormWidget(QtWidgets.QGroupBox): method __init__ (line 59) | def __init__( method __getitem__ (line 89) | def __getitem__(self, key): method __setitem__ (line 93) | def __setitem__(self, key, val): method from_name (line 98) | def from_name(cls, form_name: Text, *args, **kwargs) -> "YamlFormWidget": method buttons (line 117) | def buttons(self): method fields (line 122) | def fields(self): method set_form_data (line 126) | def set_form_data(self, data): method get_form_data (line 130) | def get_form_data(self): method set_field_options (line 134) | def set_field_options(self, field_name: Text, options_list: List[Text]... method set_field_enabled (line 138) | def set_field_enabled(self, field_name: Text, is_enabled: bool): method set_enabled (line 141) | def set_enabled(self, enabled: bool): method trigger_main_action (line 144) | def trigger_main_action(self): class FormBuilderModalDialog (line 149) | class FormBuilderModalDialog(QtWidgets.QDialog): method __init__ (line 158) | def __init__( method add_message (line 201) | def add_message(self, message: Text): method set_message (line 210) | def set_message(self, message: Text): method on_accept (line 217) | def on_accept(self): method get_results (line 221) | def get_results(self) -> Optional[Dict[Text, Any]]: class FormBuilderLayout (line 228) | class FormBuilderLayout(QtWidgets.QFormLayout): method __init__ (line 247) | def __init__( method stacked (line 267) | def stacked(self) -> list: method setEnabled (line 271) | def setEnabled(self, enabled: bool): method get_form_data (line 278) | def get_form_data(self) -> dict: method set_form_data (line 297) | def set_form_data(self, data: Dict[Text, Any]): method set_field_options (line 311) | def set_field_options(self, field_name: Text, options_list: List[Text]): method update_field_options (line 320) | def update_field_options(self): method set_field_enabled (line 326) | def set_field_enabled(self, field_name: Text, is_enabled: bool): method find_field (line 333) | def find_field(self, field_name: Text): method set_widget_value (line 356) | def set_widget_value(widget: QtWidgets.QWidget, val): method get_widget_value (line 373) | def get_widget_value(widget: QtWidgets.QWidget) -> Any: method build_form (line 405) | def build_form(self, items_to_create: List[Dict[Text, Any]]): method add_item (line 429) | def add_item(self, item: Dict[Text, Any]): method _make_file_button (line 577) | def _make_file_button( class StackBuilderWidget (line 611) | class StackBuilderWidget(QtWidgets.QWidget): method __init__ (line 627) | def __init__(self, stack_data, field_options_lists=None, *args, **kwar... method switch_to_idx (line 679) | def switch_to_idx(self, idx): method value (line 689) | def value(self): method setValue (line 693) | def setValue(self, value): method setEnabled (line 701) | def setEnabled(self, val): method set_fields_enabled (line 704) | def set_fields_enabled(self, val): method get_data (line 708) | def get_data(self): method find_field (line 712) | def find_field(self, *args, **kwargs): method set_field_options (line 716) | def set_field_options(self, *args, **kwargs): method set_form_data (line 721) | def set_form_data(self, data): class OptionalSpinWidget (line 726) | class OptionalSpinWidget(QtWidgets.QWidget): method __init__ (line 741) | def __init__( method updateState (line 770) | def updateState(self, valueChanged=True): method isNoneVal (line 778) | def isNoneVal(self, val) -> bool: method noneVal (line 791) | def noneVal(self): method setToNone (line 797) | def setToNone(self): method value (line 800) | def value(self): method setValue (line 805) | def setValue(self, val): method setRange (line 830) | def setRange(self, min, max): method setSingleStep (line 833) | def setSingleStep(self, step): class FieldComboWidget (line 837) | class FieldComboWidget(QtWidgets.QComboBox): method __init__ (line 849) | def __init__( method set_options (line 863) | def set_options(self, options_list: List[Text], select_item: Optional[... method value (line 887) | def value(self): method setValue (line 897) | def setValue(self, val): class StringListWidget (line 903) | class StringListWidget(QtWidgets.QLineEdit): method __init__ (line 913) | def __init__(self, delim=" ", *args, **kwargs): method setValue (line 917) | def setValue(self, val): method getValue (line 923) | def getValue(self): class TextOrListWidget (line 927) | class TextOrListWidget(QtWidgets.QWidget): method __init__ (line 946) | def __init__(self, result_as_idx=False, add_blank_option=False, *args,... method emitValueChanged (line 968) | def emitValueChanged(self, *args): method setMode (line 971) | def setMode(self, mode): method value (line 976) | def value(self): method setValue (line 982) | def setValue(self, val): method set_options (line 986) | def set_options(self, *args, **kwargs): class ResizingStackedWidget (line 991) | class ResizingStackedWidget(QtWidgets.QStackedWidget): method __init__ (line 996) | def __init__(self, *args, **kwargs): method sizeHint (line 999) | def sizeHint(self): method minimumSizeHint (line 1003) | def minimumSizeHint(self): FILE: sleap/gui/dialogs/frame_range.py class FrameRangeDialog (line 8) | class FrameRangeDialog(FormBuilderModalDialog): method __init__ (line 9) | def __init__(self, max_frame_idx: Optional[int] = None, title: str = "... method _update_max_frame_range (line 26) | def _update_max_frame_range(self, value): method _update_min_frame_range (line 32) | def _update_min_frame_range(self, value): FILE: sleap/gui/dialogs/importvideos.py class ImportVideos (line 53) | class ImportVideos: method __init__ (line 56) | def __init__(self): method ask (line 59) | def ask( method create_videos (line 105) | def create_videos(cls, import_param_list: List[Dict[str, Any]]) -> Lis... method create_video (line 109) | def create_video(import_item: Dict[str, Any]) -> Video: method ask_and_return_videos (line 112) | def ask_and_return_videos(self) -> List[Video]: class ImportParamDialog (line 116) | class ImportParamDialog(QDialog): method __init__ (line 123) | def __init__( method get_data (line 259) | def get_data(self, import_result=None): method set_all_grayscale (line 276) | def set_all_grayscale(self): method set_all_rgb (line 282) | def set_all_rgb(self): method set_all_channels_last (line 288) | def set_all_channels_last(self): method set_all_channels_first (line 298) | def set_all_channels_first(self): class ImportItemWidget (line 309) | class ImportItemWidget(QFrame): method __init__ (line 317) | def __init__( method is_enabled (line 363) | def is_enabled(self): method get_data (line 374) | def get_data(self) -> dict: method update_video (line 388) | def update_video(self, initial: bool = False): method boundingRect (line 417) | def boundingRect(self) -> QRectF: method paint (line 421) | def paint(self, painter, option, widget=None): class ImportParamWidget (line 426) | class ImportParamWidget(QWidget): method __init__ (line 439) | def __init__(self, file_path: str, import_type: Dict[str, Any], *args,... method make_layout (line 452) | def make_layout(self) -> QLayout: method get_values (line 491) | def get_values(self, only_required=False): method set_values_from_video (line 524) | def set_values_from_video(self, video): method _get_h5_dataset_options (line 544) | def _get_h5_dataset_options(self) -> list: method _find_h5_datasets (line 563) | def _find_h5_datasets(self, data_path, data_object) -> list: class MessageWidget (line 577) | class MessageWidget(QWidget): method __init__ (line 580) | def __init__(self, message: str = str(), *args, **kwargs): class VideoPreviewWidget (line 589) | class VideoPreviewWidget(QWidget): method __init__ (line 600) | def __init__( method clear_video (line 618) | def clear_video(self): method load_video (line 622) | def load_video(self, video: Video, initial_frame=0, plot=True): method plot (line 637) | def plot(self, idx=0): FILE: sleap/gui/dialogs/merge.py class MergeDialog (line 21) | class MergeDialog(QtWidgets.QDialog): method __init__ (line 29) | def __init__(self, base_labels: Labels, new_labels: Labels, *args, **k... method _add_skeleton_warning (line 61) | def _add_skeleton_warning(self, layout): method _perform_merge_analysis (line 79) | def _perform_merge_analysis(self): method _analyze_merge_result (line 99) | def _analyze_merge_result(self, merge_result): method _detect_conflicts (line 112) | def _detect_conflicts(self): method _has_instance_conflicts (line 138) | def _has_instance_conflicts(self, base_frame, new_frame): method _are_instances_compatible (line 150) | def _are_instances_compatible(self, base_instances, new_instances): method _fallback_conflict_detection (line 165) | def _fallback_conflict_detection(self): method _build_merge_ui (line 170) | def _build_merge_ui(self, layout): method finishMerge (line 214) | def finishMerge(self): method _merge_with_strategy (line 244) | def _merge_with_strategy(self, strategy): method _remove_conflicting_instances (line 260) | def _remove_conflicting_instances(self, labels): method _perform_final_merge (line 277) | def _perform_final_merge(self): class ConflictTable (line 286) | class ConflictTable(QtWidgets.QTableView): method __init__ (line 291) | def __init__(self, conflicts: List[Dict]): class ConflictTableModel (line 296) | class ConflictTableModel(QtCore.QAbstractTableModel): method __init__ (line 301) | def __init__(self, conflicts: List[Dict]): method data (line 305) | def data(self, index: QtCore.QModelIndex, role=QtCore.Qt.DisplayRole): method rowCount (line 324) | def rowCount(self, *args): method columnCount (line 328) | def columnCount(self, *args): method headerData (line 332) | def headerData( class MergeTable (line 344) | class MergeTable(QtWidgets.QTableView): method __init__ (line 349) | def __init__(self, merge_result): class MergeTableModel (line 354) | class MergeTableModel(QtCore.QAbstractTableModel): method __init__ (line 364) | def __init__(self, merge_result): method _extract_merge_data (line 369) | def _extract_merge_data(self): method data (line 390) | def data(self, index: QtCore.QModelIndex, role=QtCore.Qt.DisplayRole): method rowCount (line 408) | def rowCount(self, *args): method columnCount (line 412) | def columnCount(self, *args): method headerData (line 416) | def headerData( class ReplaceSkeletonTableDialog (line 428) | class ReplaceSkeletonTableDialog(QtWidgets.QDialog): method __init__ (line 458) | def __init__( method create_table (line 528) | def create_table(self: "ReplaceSkeletonTableDialog") -> QtWidgets.QTab... method add_combo_boxes_to_table (line 556) | def add_combo_boxes_to_table( method find_unused_nodes (line 587) | def find_unused_nodes(self: "ReplaceSkeletonTableDialog"): method create_combo_box (line 605) | def create_combo_box( method get_table_data (line 635) | def get_table_data(self: "ReplaceSkeletonTableDialog"): method accept (line 667) | def accept(self): method result (line 676) | def result(self): function show_instance_type_counts (line 681) | def show_instance_type_counts(instance_list: List["Instance"]) -> str: FILE: sleap/gui/dialogs/message.py class MessageDialog (line 8) | class MessageDialog(QtWidgets.QDialog): method __init__ (line 9) | def __init__(self, message, *args, **kwargs): FILE: sleap/gui/dialogs/metrics.py class MetricsTableDialog (line 21) | class MetricsTableDialog(QtWidgets.QWidget): method __init__ (line 35) | def __init__(self, labels_filename: Text = ""): method _update_gui (line 82) | def _update_gui(self, *args): method _update_cfgs (line 88) | def _update_cfgs(self): method _add_model_action (line 95) | def _add_model_action(self): method _show_model (line 103) | def _show_model(self, cfg_info: Optional[ConfigFileInfo] = None): method _show_model_params (line 108) | def _show_model_params( method _show_metric_details (line 134) | def _show_metric_details( class MetricsTableModel (line 158) | class MetricsTableModel(GenericTableModel): method item_to_data (line 180) | def item_to_data(self, obj, cfg: ConfigFileInfo): class DetailedMetricsDialog (line 259) | class DetailedMetricsDialog(QtWidgets.QWidget): method __init__ (line 268) | def __init__(self, cfg_info: ConfigFileInfo): method _plot_distances (line 317) | def _plot_distances(self): method _plot_oks (line 340) | def _plot_oks(self): FILE: sleap/gui/dialogs/missingfiles.py class MissingFilesDialog (line 16) | class MissingFilesDialog(QtWidgets.QDialog): method __init__ (line 17) | def __init__( method locateFile (line 98) | def locateFile(self, idx: int): method setFilename (line 144) | def setFilename(self, idx: int, filename: str, confirm: bool = True): method confirmAutoReplace (line 179) | def confirmAutoReplace(self, old, new): method finish (line 195) | def finish(self): function _qt_row_index_call (line 199) | def _qt_row_index_call(funct: Callable): class MissingFileTable (line 208) | class MissingFileTable(QtWidgets.QTableView): method __init__ (line 215) | def __init__(self, *args, **kwargs): method reset (line 220) | def reset(self): class MissingFileTableModel (line 225) | class MissingFileTableModel(QtCore.QAbstractTableModel): method __init__ (line 235) | def __init__(self, filenames: List[str], missing: List[bool]): method data (line 240) | def data(self, index: QtCore.QModelIndex, role=QtCore.Qt.DisplayRole): method rowCount (line 260) | def rowCount(self, *args): method columnCount (line 264) | def columnCount(self, *args): method headerData (line 268) | def headerData( FILE: sleap/gui/dialogs/qc.py class QCDockWidget (line 21) | class QCDockWidget(QtWidgets.QDockWidget): method __init__ (line 36) | def __init__( method _setup_dock (line 62) | def _setup_dock(self): method _setup_ui (line 84) | def _setup_ui(self): method _connect_signals (line 133) | def _connect_signals(self): method _on_visibility_changed (line 155) | def _on_visibility_changed(self, visible: bool): method _on_navigate (line 178) | def _on_navigate(self, video_idx: int, frame_idx: int, instance_idx: i... method _toggle_dock (line 183) | def _toggle_dock(self): method _update_dock_button (line 194) | def _update_dock_button(self, floating: bool): method _on_add_to_suggestions (line 209) | def _on_add_to_suggestions(self): method _on_fit_selection_changed (line 220) | def _on_fit_selection_changed(self, state: int): method _on_fit_selection_state_changed (line 236) | def _on_fit_selection_state_changed(self, value: bool): method _apply_fit_selection_zoom (line 244) | def _apply_fit_selection_zoom(self, enabled: bool): method _sync_fit_selection_checkbox (line 262) | def _sync_fit_selection_checkbox(self, value=None): method update_labels (line 280) | def update_labels(self, labels: "sio.Labels"): method is_active_for_navigation (line 290) | def is_active_for_navigation(self) -> bool: method has_flags (line 315) | def has_flags(self) -> bool: method goto_next_flag (line 319) | def goto_next_flag(self) -> bool: method goto_prev_flag (line 327) | def goto_prev_flag(self) -> bool: method closeEvent (line 335) | def closeEvent(self, event): FILE: sleap/gui/dialogs/query.py class QueryDialog (line 13) | class QueryDialog(QDialog): method __init__ (line 21) | def __init__(self, title: str, message: str, *args, **kwargs): FILE: sleap/gui/dialogs/render_clip.py class RenderClipDialog (line 21) | class RenderClipDialog(QtWidgets.QDialog): method __init__ (line 51) | def __init__( method _set_frame_range (line 91) | def _set_frame_range(self, frame_range: tuple[int, int]): method _jump_to_frame (line 104) | def _jump_to_frame(self, frame_idx: int): method _setup_ui (line 108) | def _setup_ui(self): method _create_options_panel (line 124) | def _create_options_panel(self) -> QtWidgets.QWidget: method _create_video_selector_group (line 169) | def _create_video_selector_group(self) -> QtWidgets.QGroupBox: method _on_video_changed (line 196) | def _on_video_changed(self, index: int): method _update_frame_range_limits (line 214) | def _update_frame_range_limits(self): method _create_frame_range_group (line 227) | def _create_frame_range_group(self) -> QtWidgets.QGroupBox: method _create_appearance_group (line 279) | def _create_appearance_group(self) -> QtWidgets.QGroupBox: method _create_quality_group (line 372) | def _create_quality_group(self) -> QtWidgets.QGroupBox: method _create_output_group (line 417) | def _create_output_group(self) -> QtWidgets.QGroupBox: method _source_fps (line 452) | def _source_fps(self) -> float | None: method _refresh_match_source_fps (line 470) | def _refresh_match_source_fps(self): method _on_match_source_fps_toggled (line 494) | def _on_match_source_fps_toggled(self, checked: bool): method _create_buttons (line 509) | def _create_buttons(self) -> QtWidgets.QWidget: method _connect_signals (line 528) | def _connect_signals(self): method _on_preset_changed (line 545) | def _on_preset_changed(self, preset_text: str): method _get_render_params (line 559) | def _get_render_params(self, for_preview: bool = True) -> dict: method _update_preview (line 591) | def _update_preview(self): method _on_render (line 596) | def _on_render(self): method get_output_path (line 624) | def get_output_path(self) -> str | None: method get_export_params (line 628) | def get_export_params(self) -> dict: method get_frame_indices (line 647) | def get_frame_indices(self) -> list[int]: FILE: sleap/gui/dialogs/shortcuts.py class ShortcutDialog (line 12) | class ShortcutDialog(QtWidgets.QDialog): method __init__ (line 19) | def __init__(self, *args, **kwargs): method accept (line 26) | def accept(self): method info_msg (line 34) | def info_msg(self): method reset (line 43) | def reset(self): method load_shortcuts (line 49) | def load_shortcuts(self): method make_form (line 53) | def make_form(self): method make_buttons_widget (line 62) | def make_buttons_widget(self) -> QtWidgets.QDialogButtonBox: method make_shortcuts_widget (line 79) | def make_shortcuts_widget(self) -> QtWidgets.QWidget: method make_column_widget (line 94) | def make_column_widget(self, shortcuts: List) -> QtWidgets.QWidget: FILE: sleap/gui/dialogs/size_distribution.py class SizeDistributionDialog (line 20) | class SizeDistributionDialog(QtWidgets.QDialog): method __init__ (line 34) | def __init__( method _setup_ui (line 62) | def _setup_ui(self): method _connect_signals (line 77) | def _connect_signals(self): method _on_navigate (line 82) | def _on_navigate(self, video_idx: int, frame_idx: int, instance_idx: i... method set_rotation_preset (line 87) | def set_rotation_preset(self, preset: str): method set_custom_angle (line 95) | def set_custom_angle(self, angle: int): FILE: sleap/gui/dialogs/update_checker.py class UpdateFetchWorker (line 35) | class UpdateFetchWorker(QtCore.QThread): method __init__ (line 45) | def __init__(self, packages: Dict[str, tuple], parent=None): method run (line 49) | def run(self): class UpdateCheckerDialog (line 148) | class UpdateCheckerDialog(QtWidgets.QDialog): method __init__ (line 151) | def __init__(self, parent=None): method _setup_ui (line 169) | def _setup_ui(self): method _populate_installed_versions (line 215) | def _populate_installed_versions(self): method _populate_from_cache (line 243) | def _populate_from_cache(self): method _fetch_latest_versions (line 251) | def _fetch_latest_versions(self): method _on_version_fetched (line 275) | def _on_version_fetched( method _on_branch_fetched (line 361) | def _on_branch_fetched( method _on_all_fetches_finished (line 404) | def _on_all_fetches_finished(self): method _on_cell_double_clicked (line 408) | def _on_cell_double_clicked(self, row: int, col: int): method closeEvent (line 422) | def closeEvent(self, event): FILE: sleap/gui/learning/configs.py function _quick_scan_yaml_metadata (line 37) | def _quick_scan_yaml_metadata(path: Text) -> Tuple[Optional[Text], Optio... class ConfigFileInfo (line 99) | class ConfigFileInfo: method config (line 134) | def config(self) -> OmegaConf: method config (line 141) | def config(self, value: OmegaConf): method _load_full_config (line 145) | def _load_full_config(self): method is_loaded (line 165) | def is_loaded(self) -> bool: method has_trained_model (line 170) | def has_trained_model(self) -> bool: method path_dir (line 196) | def path_dir(self): method _get_file_path (line 207) | def _get_file_path(self, shortname) -> Optional[Text]: method metrics (line 227) | def metrics(self): method skeleton (line 231) | def skeleton(self): method training_instance_count (line 258) | def training_instance_count(self): method validation_instance_count (line 263) | def validation_instance_count(self): method training_frame_count (line 268) | def training_frame_count(self): method validation_frame_count (line 273) | def validation_frame_count(self): method timestamp (line 278) | def timestamp(self): method _get_dataset_len (line 318) | def _get_dataset_len(self, dset_name: Text, split_name: Text): method _get_metrics (line 336) | def _get_metrics(self, split_name: Text): method from_config_file (line 401) | def from_config_file(cls, path: Text) -> "ConfigFileInfo": class TrainingConfigFilesWidget (line 445) | class TrainingConfigFilesWidget(FieldComboWidget): method __init__ (line 467) | def __init__( method update (line 484) | def update(self, select: Optional[ConfigFileInfo] = None): method _menu_cfg_idx_offset (line 552) | def _menu_cfg_idx_offset(self): method getConfigInfoByMenuIdx (line 561) | def getConfigInfoByMenuIdx(self, menu_idx: int) -> Optional[ConfigFile... method getSelectedConfigInfo (line 566) | def getSelectedConfigInfo(self) -> Optional[ConfigFileInfo]: method onSelectionIdxChange (line 572) | def onSelectionIdxChange(self, menu_idx: int): method setUserConfigData (line 588) | def setUserConfigData(self, cfg_data_dict: Dict[Text, Any]): method doFileSelection (line 596) | def doFileSelection(self): method _add_file_selection_to_menu (line 611) | def _add_file_selection_to_menu(self, cfg_info: Optional[ConfigFileInf... class TrainingConfigsGetter (line 635) | class TrainingConfigsGetter: method __attrs_post_init__ (line 652) | def __attrs_post_init__(self): method update (line 655) | def update(self): method _find_config_file_paths (line 672) | def _find_config_file_paths(self) -> set: method find_configs (line 690) | def find_configs(self) -> List[ConfigFileInfo]: method get_filtered_configs (line 739) | def get_filtered_configs( method get_first (line 773) | def get_first(self) -> Optional[ConfigFileInfo]: method insert_first (line 777) | def insert_first(self, cfg_info: ConfigFileInfo): method try_loading_path (line 781) | def try_loading_path( method make_from_labels_filename (line 863) | def make_from_labels_filename( FILE: sleap/gui/learning/dialog.py class LearningDialog (line 49) | class LearningDialog(QtWidgets.QDialog): method __init__ (line 79) | def __init__( method adjust_initial_size (line 211) | def adjust_initial_size(self): method _update_minimum_width (line 239) | def _update_minimum_width(self): method showEvent (line 260) | def showEvent(self, event): method closeEvent (line 271) | def closeEvent(self, event): method update_file_lists (line 285) | def update_file_lists(self): method count_total_frames_for_selection_option (line 299) | def count_total_frames_for_selection_option( method frame_selection (line 316) | def frame_selection(self) -> Dict[str, Dict[Video, List[int]]]: method frame_selection (line 323) | def frame_selection(self, frame_selection: Dict[str, Dict[Video, List[... method _update_frame_target_selector (line 330) | def _update_frame_target_selector(self): method _set_frame_target_default (line 467) | def _set_frame_target_default(self, options: Dict[str, FrameTargetOpti... method _on_target_selection_changed (line 502) | def _on_target_selection_changed(self): method _get_user_labeled_frame_indices (line 511) | def _get_user_labeled_frame_indices(self, video: Video) -> Set[int]: method _sample_frames_from_pool (line 517) | def _sample_frames_from_pool( method _update_random_sample_frame_counts (line 556) | def _update_random_sample_frame_counts(self): method connect_signals (line 583) | def connect_signals(self): method disconnect_signals (line 595) | def disconnect_signals(self): method make_tabs (line 618) | def make_tabs(self): method _ensure_tab_initialized (line 636) | def _ensure_tab_initialized(self, head_name: str) -> "TrainingEditorWi... method adjust_data_to_update_other_tabs (line 675) | def adjust_data_to_update_other_tabs(self, source_data, updated_data=N... method update_tabs_from_pipeline (line 728) | def update_tabs_from_pipeline(self, source_data): method update_tabs_from_tab (line 734) | def update_tabs_from_tab(self, source_data): method on_tab_data_change (line 742) | def on_tab_data_change(self, tab_name=None): method get_most_recent_pipeline_trained (line 767) | def get_most_recent_pipeline_trained(self) -> Text: method _get_head_names_for_pipeline (line 783) | def _get_head_names_for_pipeline(self, pipeline: str) -> List[str]: method _get_trained_config_for_pipeline (line 801) | def _get_trained_config_for_pipeline( method _get_video_channels_default (line 821) | def _get_video_channels_default(self) -> str: method _apply_pipeline_defaults (line 851) | def _apply_pipeline_defaults(self, pipeline: str): method set_default_pipeline_tab (line 938) | def set_default_pipeline_tab(self): method add_tab (line 953) | def add_tab(self, tab_name): method remove_tabs (line 978) | def remove_tabs(self): method set_pipeline (line 983) | def set_pipeline(self, pipeline: str): method change_tab (line 1011) | def change_tab(self, tab_idx: int): method merge_pipeline_and_head_config_data (line 1014) | def merge_pipeline_and_head_config_data(self, head_name, head_data, pi... method update_loaded_config (line 1035) | def update_loaded_config( method get_every_head_config_data (line 1056) | def get_every_head_config_data( method get_selected_frames_to_predict (line 1142) | def get_selected_frames_to_predict( method get_items_for_inference (line 1213) | def get_items_for_inference(self, pipeline_form_data) -> runners.Items... method _validate_id_model (line 1261) | def _validate_id_model(self) -> bool: method _validate_pipeline (line 1274) | def _validate_pipeline(self): method run (line 1348) | def run(self): method copy (line 1378) | def copy(self): method save (line 1411) | def save( method export_package (line 1443) | def export_package(self, output_path: Optional[str] = None, gui: bool ... class TrainingEditorWidget (line 1536) | class TrainingEditorWidget(QtWidgets.QWidget): method __init__ (line 1555) | def __init__( method from_trained_config (line 1754) | def from_trained_config( method _layout_widget (line 1765) | def _layout_widget(layout): method emitValueChanged (line 1770) | def emitValueChanged(self): method _setup_overfit_mode_toggle (line 1778) | def _setup_overfit_mode_toggle(self): method _setup_rotation_preset_toggle (line 1798) | def _setup_rotation_preset_toggle(self): method _setup_augmentation_param_toggles (line 1822) | def _setup_augmentation_param_toggles(self): method _setup_optimization_param_toggles (line 1887) | def _setup_optimization_param_toggles(self): method _setup_crop_size_visibility (line 1942) | def _setup_crop_size_visibility(self): method _setup_ohkm_visibility (line 1963) | def _setup_ohkm_visibility(self): method acceptSelectedConfigInfo (line 1990) | def acceptSelectedConfigInfo(self, cfg_info: configs.ConfigFileInfo): method update_receptive_field (line 2007) | def update_receptive_field(self): method update_file_list (line 2056) | def update_file_list(self): method _load_config_or_key_val_dict (line 2059) | def _load_config_or_key_val_dict(self, cfg_data): method _load_config (line 2065) | def _load_config(self, cfg_info: configs.ConfigFileInfo): method _update_use_trained (line 2146) | def _update_use_trained(self, button=None): method _set_head (line 2195) | def _set_head(self): method set_fields_from_key_val_dict (line 2205) | def set_fields_from_key_val_dict(self, cfg_key_val_dict): method _set_backbone_from_key_val_dict (line 2211) | def _set_backbone_from_key_val_dict(self, cfg_key_val_dict): method use_trained (line 2222) | def use_trained(self) -> bool: method resume_training (line 2238) | def resume_training(self) -> bool: method trained_config_info_to_use (line 2248) | def trained_config_info_to_use(self) -> Optional[configs.ConfigFileInfo]: method has_trained_config_selected (line 2311) | def has_trained_config_selected(self) -> bool: method get_all_form_data (line 2321) | def get_all_form_data(self) -> dict: method _open_size_distribution (line 2327) | def _open_size_distribution(self): function demo_training_dialog (line 2378) | def demo_training_dialog(): FILE: sleap/gui/learning/load_legacy_metrics.py class MockSLEAPArray (line 7) | class MockSLEAPArray(np.ndarray): method __new__ (line 15) | def __new__(cls, shape=(0,), dtype=float): method __array_finalize__ (line 18) | def __array_finalize__(self, obj): class MockSLEAPObject (line 22) | class MockSLEAPObject: class CustomUnpickler (line 28) | class CustomUnpickler(pickle.Unpickler): method find_class (line 36) | def find_class(self, module, name): function extract_arrays_from_object (line 45) | def extract_arrays_from_object(obj, prefix="", arrays=None): function load_npz_extract_arrays (line 90) | def load_npz_extract_arrays(npz_file): FILE: sleap/gui/learning/main_tab.py class PipelineOption (line 53) | class PipelineOption: method __post_init__ (line 61) | def __post_init__(self): class MainTabWidget (line 220) | class MainTabWidget(QWidget): method __init__ (line 237) | def __init__( method _setup_ui (line 271) | def _setup_ui(self): method _connect_signals (line 326) | def _connect_signals(self): method _connect_field_signal (line 348) | def _connect_field_signal(self, widget: QWidget): method _on_pipeline_changed (line 359) | def _on_pipeline_changed(self, index: int): method _create_pipeline_section (line 371) | def _create_pipeline_section(self) -> QGroupBox: method _create_pipeline_page (line 407) | def _create_pipeline_page(self, opt: PipelineOption) -> QWidget: method _create_field_widget (line 453) | def _create_field_widget(self, key: str, default_value: Any) -> QWidget: method _create_preprocessing_section (line 481) | def _create_preprocessing_section(self) -> QGroupBox: method _create_tracker_section (line 596) | def _create_tracker_section(self) -> QGroupBox: method _create_tracker_options_page (line 653) | def _create_tracker_options_page(self, tracker_type: str) -> QWidget: method _create_performance_section (line 783) | def _create_performance_section(self) -> QGroupBox: method _create_wandb_section (line 906) | def _create_wandb_section(self) -> QGroupBox: method _create_evaluation_section (line 1031) | def _create_evaluation_section(self) -> QGroupBox: method _create_output_section (line 1071) | def _create_output_section(self) -> QGroupBox: method fields (line 1145) | def fields(self) -> Dict[str, QWidget]: method current_pipeline_key (line 1150) | def current_pipeline_key(self) -> str: method current_pipeline (line 1159) | def current_pipeline(self) -> str: method current_pipeline (line 1182) | def current_pipeline(self, val: str): method get_form_data (line 1204) | def get_form_data(self) -> Dict[str, Any]: method set_form_data (line 1270) | def set_form_data(self, data: Dict[str, Any]): method _get_widget_value (line 1291) | def _get_widget_value(self, widget: QWidget) -> Any: method _set_widget_value (line 1307) | def _set_widget_value(self, widget: QWidget, value: Any): method set_node_options (line 1327) | def set_node_options(self, node_names: List[str]): method emitPipeline (line 1342) | def emitPipeline(self): method _update_wandb_status (line 1350) | def _update_wandb_status(self): method _copy_wandb_login_command (line 1435) | def _copy_wandb_login_command(self): method _init_training_settings (line 1440) | def _init_training_settings(self): method _save_training_preferences (line 1462) | def _save_training_preferences(self, form_data: dict): FILE: sleap/gui/learning/receptivefield.py function compute_rf (line 17) | def compute_rf(down_blocks: int, convs_per_block: int = 2, kernel_size: ... function receptive_field_info_from_model_cfg (line 45) | def receptive_field_info_from_model_cfg(cfg: OmegaConf) -> dict: function find_max_instance_bbox_size (line 223) | def find_max_instance_bbox_size(labels: sio.Labels) -> float: function find_instance_crop_size (line 250) | def find_instance_crop_size( function compute_crop_size_from_cfg (line 306) | def compute_crop_size_from_cfg( function get_first_labeled_frame_and_instance (line 338) | def get_first_labeled_frame_and_instance( function compute_anchor_point (line 372) | def compute_anchor_point( class ReceptiveFieldWidget (line 405) | class ReceptiveFieldWidget(QtWidgets.QWidget): method __init__ (line 420) | def __init__( method _get_legend_text (line 459) | def _get_legend_text(self) -> Text: method _get_explanation_text (line 489) | def _get_explanation_text( method addButtonWidget (line 505) | def addButtonWidget(self, widget: QtWidgets.QWidget): method _get_head_output_channels (line 513) | def _get_head_output_channels(self, head_name: str) -> Optional[int]: method _get_arch_info_text (line 541) | def _get_arch_info_text( method setModelConfig (line 618) | def setModelConfig(self, model_cfg: OmegaConf, scale: float): method setImage (line 651) | def setImage(self, *args, **kwargs): method setLabels (line 655) | def setLabels(self, labels: Optional[sio.Labels], fallback_video=None): method setCropConfig (line 679) | def setCropConfig( class ReceptiveFieldImageWidget (line 709) | class ReceptiveFieldImageWidget(GraphicsView): method __init__ (line 712) | def __init__(self, *args, **kwargs): method viewportEvent (line 742) | def viewportEvent(self, event): method _set_field_size (line 752) | def _set_field_size(self, size: Optional[int] = None, scale: float = 1... method _set_crop_size (line 780) | def _set_crop_size( FILE: sleap/gui/learning/runners.py class InferenceProgressDialog (line 33) | class InferenceProgressDialog(QtWidgets.QDialog): method __init__ (line 45) | def __init__(self, parent=None): method _on_cancel (line 101) | def _on_cancel(self): method wasCanceled (line 107) | def wasCanceled(self) -> bool: method setLabelText (line 111) | def setLabelText(self, text: str): method setMaximum (line 115) | def setMaximum(self, maximum: int): method setValue (line 119) | def setValue(self, value: int): method appendLog (line 123) | def appendLog(self, text: str): method setFinished (line 132) | def setFinished( class InferenceWorker (line 162) | class InferenceWorker(QtCore.QThread): method __init__ (line 172) | def __init__( method cancel (line 186) | def cancel(self): method run (line 194) | def run(self): method _run_inference_item (line 223) | def _run_inference_item( function get_timestamp (line 309) | def get_timestamp() -> Text: function setup_new_run_folder (line 314) | def setup_new_run_folder( function kill_process (line 350) | def kill_process(pid: int): class ItemForInference (line 377) | class ItemForInference(abc.ABC): method path (line 385) | def path(self) -> Text: method cli_args (line 390) | def cli_args(self) -> List[Text]: class VideoItemForInference (line 395) | class VideoItemForInference(ItemForInference): method path (line 418) | def path(self): method cli_args (line 426) | def cli_args(self): class DatasetItemForInference (line 458) | class DatasetItemForInference(ItemForInference): method path (line 475) | def path(self): method cli_args (line 481) | def cli_args(self): class ItemsForInference (line 493) | class ItemsForInference: method __len__ (line 499) | def __len__(self): method from_video_frames_dict (line 503) | def from_video_frames_dict( class InferenceTask (line 525) | class InferenceTask: method make_predict_cli_call (line 534) | def make_predict_cli_call( method predict_subprocess (line 678) | def predict_subprocess( method merge_results (line 737) | def merge_results(self) -> int: function write_pipeline_files (line 774) | def write_pipeline_files( function run_learning_pipeline (line 971) | def run_learning_pipeline( function run_gui_training (line 1025) | def run_gui_training( function run_gui_inference (line 1182) | def run_gui_inference( function _run_inference_sync (line 1248) | def _run_inference_sync( function train_subprocess (line 1270) | def train_subprocess( FILE: sleap/gui/learning/size.py class InstanceSizeInfo (line 23) | class InstanceSizeInfo: method get_rotated_size (line 42) | def get_rotated_size(self, max_angle_degrees: float) -> float: function compute_instance_sizes (line 96) | def compute_instance_sizes( FILE: sleap/gui/learning/unet_utils.py function compute_unet_channels (line 16) | def compute_unet_channels( function _conv2d_params (line 92) | def _conv2d_params( function compute_unet_params (line 102) | def compute_unet_params( function format_params (line 300) | def format_params(params: int) -> str: FILE: sleap/gui/learning/wandb_utils.py function check_wandb_login_status (line 8) | def check_wandb_login_status() -> Tuple[bool, Optional[str], Optional[st... function get_wandb_api_key_help_text (line 42) | def get_wandb_api_key_help_text(is_logged_in: bool, auth_source: Optiona... FILE: sleap/gui/overlays/base.py class BaseOverlay (line 26) | class BaseOverlay(abc.ABC): method add_to_scene (line 45) | def add_to_scene(self, video: Video, frame_idx: int): method remove_from_scene (line 58) | def remove_from_scene(self): method redraw (line 77) | def redraw(self, video, frame_idx, *args, **kwargs): FILE: sleap/gui/overlays/confmaps.py class ConfMapsPlot (line 22) | class ConfMapsPlot(QtWidgets.QGraphicsObject): method __init__ (line 39) | def __init__( method boundingRect (line 62) | def boundingRect(self) -> QtCore.QRectF: method paint (line 66) | def paint(self, painter, option, widget=None): class ConfMapPlot (line 71) | class ConfMapPlot(QtWidgets.QGraphicsPixmapItem): method __init__ (line 87) | def __init__( method get_conf_image (line 99) | def get_conf_image(self) -> QtGui.QImage: function show_confmaps_from_h5 (line 131) | def show_confmaps_from_h5(filename, input_format="channels_last", standa... function demo_confmaps (line 146) | def demo_confmaps(confmaps, video, scale=None, standalone=False, callbac... FILE: sleap/gui/overlays/instance.py class InstanceOverlay (line 13) | class InstanceOverlay(BaseOverlay): method __attrs_post_init__ (line 27) | def __attrs_post_init__(self): method add_to_scene (line 33) | def add_to_scene(self, video, frame_idx): FILE: sleap/gui/overlays/pafs.py class MultiQuiverPlot (line 20) | class MultiQuiverPlot(QtWidgets.QGraphicsObject): method __init__ (line 39) | def __init__( method boundingRect (line 75) | def boundingRect(self) -> QtCore.QRectF: method paint (line 79) | def paint(self, painter, option, widget=None): class QuiverPlot (line 84) | class QuiverPlot(QtWidgets.QGraphicsObject): method __init__ (line 97) | def __init__( method _add_arrows (line 128) | def _add_arrows(self, min_length=0.01): method _decimate (line 192) | def _decimate(self, image: np.array, box: int): method boundingRect (line 220) | def boundingRect(self) -> QtCore.QRectF: method paint (line 225) | def paint(self, painter, option, widget=None): function show_pafs_from_h5 (line 233) | def show_pafs_from_h5(filename, input_format="channels_last", standalone... function demo_pafs (line 245) | def demo_pafs(pafs, video, decimation=4, scale=None, standalone=False): FILE: sleap/gui/overlays/tracks.py class TrackTrailOverlay (line 18) | class TrackTrailOverlay(BaseOverlay): method __attrs_post_init__ (line 44) | def __attrs_post_init__(self): method get_length_options (line 50) | def get_length_options(cls): method get_shade_options (line 56) | def get_shade_options(cls): method get_track_trails (line 61) | def get_track_trails( method get_frame_selection (line 115) | def get_frame_selection(self, video: Video, frame_idx: int): method get_tracks_in_frame (line 123) | def get_tracks_in_frame( method add_to_scene (line 148) | def add_to_scene(self, video: Video, frame_idx: int): method map_to_qt_path (line 208) | def map_to_qt_path(point_list): class TrackListOverlay (line 220) | class TrackListOverlay(BaseOverlay): method add_to_scene (line 225) | def add_to_scene(self, video: Video, frame_idx: int): method visible (line 254) | def visible(self): method visible (line 261) | def visible(self, val): FILE: sleap/gui/shortcuts.py class Shortcuts (line 16) | class Shortcuts(object): method __init__ (line 70) | def __init__(self): method _process_shortcut_dict (line 90) | def _process_shortcut_dict(self, shortcuts: dict) -> dict: method save (line 110) | def save(self): method reset_to_default (line 123) | def reset_to_default(self): method __getitem__ (line 130) | def __getitem__(self, idx: Union[slice, int, str]) -> Union[str, Dict[... method __setitem__ (line 155) | def __setitem__(self, idx: Union[str, int], val: str): method __len__ (line 166) | def __len__(self): FILE: sleap/gui/state.py class GuiState (line 31) | class GuiState(object): method __init__ (line 42) | def __init__(self): method __repr__ (line 46) | def __repr__(self) -> str: method __getitem__ (line 52) | def __getitem__(self, key: GSVarType) -> Any: method __setitem__ (line 56) | def __setitem__(self, key: GSVarType, value): method __contains__ (line 63) | def __contains__(self, key) -> bool: method __delitem__ (line 67) | def __delitem__(self, key: GSVarType): method get (line 72) | def get(self, key: GSVarType, default=NO_ARG) -> Any: method set (line 78) | def set(self, key: GSVarType, value: Any): method toggle (line 82) | def toggle(self, key: GSVarType, default: bool = False): method increment (line 86) | def increment( method increment_in_list (line 112) | def increment_in_list( method connect (line 138) | def connect(self, key: GSVarType, callbacks: Union[Callable, List[Call... method _connect_callback (line 157) | def _connect_callback(self, key: GSVarType, callback: Callable): method emit (line 165) | def emit(self, key: GSVarType): FILE: sleap/gui/suggestions.py class VideoFrameSuggestions (line 20) | class VideoFrameSuggestions(object): method suggest (line 34) | def suggest(cls, params: dict, labels: "Labels" = None) -> List[Sugges... method basic_sample_suggestion_method (line 70) | def basic_sample_suggestion_method( method image_feature_based_method (line 114) | def image_feature_based_method( method prediction_score (line 165) | def prediction_score( method _prediction_score_video (line 198) | def _prediction_score_video( method velocity (line 235) | def velocity( method _velocity_video (line 266) | def _velocity_video( method max_point_displacement (line 289) | def max_point_displacement( method _max_point_displacement_video (line 311) | def _max_point_displacement_video( method frame_chunk (line 339) | def frame_chunk( method idx_list_to_frame_list (line 373) | def idx_list_to_frame_list( method filter_unique_suggestions (line 379) | def filter_unique_suggestions( function demo_gui (line 399) | def demo_gui(): FILE: sleap/gui/utils.py function is_port_free (line 8) | def is_port_free(port: int, zmq_context: Optional[zmq.Context] = None) -... function select_zmq_port (line 24) | def select_zmq_port(zmq_context: Optional[zmq.Context] = None) -> int: function find_free_port (line 33) | def find_free_port(port: int, zmq_context: zmq.Context): FILE: sleap/gui/web.py function get_analytics_data (line 11) | def get_analytics_data() -> Dict[str, Any]: function ping_analytics (line 27) | def ping_analytics(): FILE: sleap/gui/widgets/docks.py class DockWidget (line 44) | class DockWidget(QDockWidget): method __init__ (line 47) | def __init__( method wgt_layout (line 76) | def wgt_layout(self) -> QVBoxLayout: method setup_dock (line 79) | def setup_dock(self, widgets, tab_with): method add_to_window (line 103) | def add_to_window(self, main_window: QMainWindow, tab_with: QVBoxLayout): method add_button (line 116) | def add_button(self, to: QLayout, label: str, action: Callable, key=No... method create_models (line 124) | def create_models(self) -> GenericTableModel: method create_tables (line 136) | def create_tables(self) -> GenericTableView: method lay_everything_out (line 152) | def lay_everything_out(self) -> None: class VideosDock (line 160) | class VideosDock(DockWidget): method __init__ (line 163) | def __init__( method create_models (line 171) | def create_models(self) -> VideosTableModel: method create_tables (line 177) | def create_tables(self) -> GenericTableView: method create_video_edit_and_nav_buttons (line 193) | def create_video_edit_and_nav_buttons(self) -> QWidget: method lay_everything_out (line 206) | def lay_everything_out(self): class SkeletonDock (line 214) | class SkeletonDock(DockWidget): method __init__ (line 217) | def __init__( method create_models (line 231) | def create_models(self) -> GenericTableModel: method create_tables (line 241) | def create_tables(self) -> GenericTableView: method create_project_skeleton_groupbox (line 260) | def create_project_skeleton_groupbox(self) -> QGroupBox: method create_templates_groupbox (line 332) | def create_templates_groupbox(self) -> QGroupBox: method lay_everything_out (line 429) | def lay_everything_out(self): class SuggestionsDock (line 438) | class SuggestionsDock(DockWidget): method __init__ (line 441) | def __init__(self, main_window: QMainWindow, tab_with: Optional[QLayou... method create_models (line 449) | def create_models(self) -> SuggestionsTableModel: method create_tables (line 455) | def create_tables(self) -> GenericTableView: method lay_everything_out (line 474) | def lay_everything_out(self) -> None: method create_table_nav_buttons (line 486) | def create_table_nav_buttons(self) -> QWidget: method create_suggestions_form (line 511) | def create_suggestions_form(self) -> QWidget: method create_table_edit_buttons (line 522) | def create_table_edit_buttons(self) -> QWidget: class InstancesDock (line 554) | class InstancesDock(DockWidget): method __init__ (line 557) | def __init__(self, main_window: QMainWindow, tab_with: Optional[QLayou... method create_models (line 565) | def create_models(self) -> LabeledFrameTableModel: method create_tables (line 572) | def create_tables(self) -> GenericTableView: method lay_everything_out (line 581) | def lay_everything_out(self) -> None: method create_table_edit_buttons (line 587) | def create_table_edit_buttons(self) -> QWidget: FILE: sleap/gui/widgets/frame_target_selector.py class FrameTargetOption (line 33) | class FrameTargetOption: class FrameTargetSelection (line 54) | class FrameTargetSelection: class FrameTargetSelector (line 77) | class FrameTargetSelector(QWidget): method __init__ (line 158) | def __init__(self, mode: str = "inference", parent: Optional[QWidget] ... method _setup_ui (line 176) | def _setup_ui(self): method _connect_signals (line 262) | def _connect_signals(self): method _on_skip_user_labeled_changed (line 273) | def _on_skip_user_labeled_changed(self, state): method _on_sample_count_changed (line 278) | def _on_sample_count_changed(self, value): method _build_options_from_list (line 283) | def _build_options_from_list(self, options: List[FrameTargetOption]): method _on_target_changed (line 321) | def _on_target_changed(self, index: int): method _apply_target_auto_configuration (line 329) | def _apply_target_auto_configuration(self): method _on_predictions_changed (line 379) | def _on_predictions_changed(self, button): method _update_description (line 383) | def _update_description(self): method set_options (line 404) | def set_options(self, options: Dict[str, FrameTargetOption]): method update_option_frame_count (line 415) | def update_option_frame_count(self, key: str, frame_count: int): method get_selection (line 428) | def get_selection(self) -> FrameTargetSelection: method set_selection (line 454) | def set_selection(self, selection: FrameTargetSelection): method get_form_data (line 483) | def get_form_data(self) -> Dict[str, Any]: method get_mode (line 502) | def get_mode(self) -> str: method set_mode (line 506) | def set_mode(self, mode: str): method set_title (line 522) | def set_title(self, title: str): method set_compact_mode (line 530) | def set_compact_mode(self, compact: bool): method apply_compact_styling (line 538) | def apply_compact_styling(self): method setup_for_side_panel (line 545) | def setup_for_side_panel(self, min_height: Optional[int] = None): FILE: sleap/gui/widgets/imagedir.py class QtImageDirectoryWidget (line 22) | class QtImageDirectoryWidget(QtVideoPlayer): method __init__ (line 34) | def __init__( method _get_win_title_for_frame (line 61) | def _get_win_title_for_frame(self, frame_idx: int) -> Text: method setFilter (line 69) | def setFilter(self, filter_idx: int): method _current_filter_mask (line 75) | def _current_filter_mask(self) -> Text: method poll (line 80) | def poll(self): method make_training_vizualizer (line 116) | def make_training_vizualizer(cls, run_path: Text) -> "QtImageDirectory... FILE: sleap/gui/widgets/monitor.py class LossPlot (line 22) | class LossPlot(MplCanvas): method __init__ (line 25) | def __init__( method log_scale (line 122) | def log_scale(self): method log_scale (line 128) | def log_scale(self, val): method set_data_on_scatter (line 138) | def set_data_on_scatter(self, xs, ys, which): method add_data_to_plot (line 154) | def add_data_to_plot(self, x, y, which): method resize_axes (line 170) | def resize_axes(self, x, y): method redraw_plot (line 195) | def redraw_plot(self): method set_title (line 200) | def set_title(self, title, color=None): method update_runtime_title (line 214) | def update_runtime_title( method _get_training_epoch_and_runtime_text (line 264) | def _get_training_epoch_and_runtime_text(epoch: int, dt_min: int, dt_s... method _get_eta_text (line 281) | def _get_eta_text(mean_epoch_time_min, mean_epoch_time_sec, eta_ten_ep... method _get_epochs_in_plateau_text (line 300) | def _get_epochs_in_plateau_text(epochs_in_plateau, plateau_patience): method _get_last_validation_loss_text (line 316) | def _get_last_validation_loss_text(last_epoch_val_loss): method _get_best_validation_loss_text (line 331) | def _get_best_validation_loss_text(best_val_y, best_epoch): method _add_with_newline (line 350) | def _add_with_newline(old_text: str, new_text: str): method _calculate_xlim (line 361) | def _calculate_xlim(x: np.ndarray, dx: float = 0.5): method _calculate_ylim (line 378) | def _calculate_ylim(self, y: np.ndarray, dy: float = 0.02): method _set_title_space (line 412) | def _set_title_space(self): method _setup_x_axis (line 445) | def _setup_x_axis(self): method _set_up_y_axis (line 462) | def _set_up_y_axis(self): method _setup_legend (line 484) | def _setup_legend(self): method _setup_major_gridlines (line 511) | def _setup_major_gridlines(self): method _add_midpoint_gridlines (line 528) | def _add_midpoint_gridlines(self): method _init_series (line 545) | def _init_series( class LossViewer (line 584) | class LossViewer(QtWidgets.QMainWindow): method __init__ (line 589) | def __init__( method __del__ (line 624) | def __del__(self): method is_timer_running (line 628) | def is_timer_running(self) -> bool: method log_scale (line 633) | def log_scale(self): method log_scale (line 639) | def log_scale(self, val): method ignore_outliers (line 649) | def ignore_outliers(self): method ignore_outliers (line 655) | def ignore_outliers(self, val): method reset (line 664) | def reset( method set_message (line 777) | def set_message(self, text: str): method close (line 781) | def close(self): method _setup_zmq (line 786) | def _setup_zmq(self, zmq_context: Optional[zmq.Context] = None): method _set_batches_to_show (line 827) | def _set_batches_to_show(self, batches: str): method _set_start_time (line 840) | def _set_start_time(self, t0: float): method _update_runtime (line 849) | def _update_runtime(self): method _check_messages (line 873) | def _check_messages( method _add_datapoint (line 999) | def _add_datapoint(self, x: int, y: float, which: str): method _set_data_on_scatter (line 1047) | def _set_data_on_scatter(self, xs, ys, which): method _add_data_to_plot (line 1062) | def _add_data_to_plot(self, x, y, which): method _redraw_plot (line 1077) | def _redraw_plot(self): method _resize_axes (line 1082) | def _resize_axes(self, x, y): method _toggle_ignore_outliers (line 1093) | def _toggle_ignore_outliers(self): method _toggle_log_scale (line 1098) | def _toggle_log_scale(self): method _stop (line 1103) | def _stop(self): method _cancel (line 1115) | def _cancel(self): method _unbind (line 1122) | def _unbind(self): method _on_wandb_url_received (line 1140) | def _on_wandb_url_received(self, url: str): method _set_end (line 1160) | def _set_end(self): FILE: sleap/gui/widgets/mpl.py class MplCanvas (line 25) | class MplCanvas(Canvas): method __init__ (line 28) | def __init__(self, width=5, height=4, dpi=100): FILE: sleap/gui/widgets/multicheck.py class MultiCheckWidget (line 18) | class MultiCheckWidget(QGroupBox): method __init__ (line 28) | def __init__( method getSelected (line 68) | def getSelected(self) -> list: method setSelected (line 80) | def setSelected(self, selected: list): method boundingRect (line 95) | def boundingRect(self) -> QRectF: method paint (line 99) | def paint(self, painter, option, widget=None): FILE: sleap/gui/widgets/qc.py class QCScoreCanvas (line 37) | class QCScoreCanvas(Canvas): method __init__ (line 50) | def __init__(self, width: int = 6, height: int = 3, dpi: int = 100): method _setup_axes (line 79) | def _setup_axes(self): method set_scores (line 86) | def set_scores(self, scores: np.ndarray): method set_threshold (line 95) | def set_threshold(self, threshold: float): method update_plot (line 104) | def update_plot(self): method _on_click (line 170) | def _on_click(self, event): class QCBreakdownCanvas (line 181) | class QCBreakdownCanvas(Canvas): method __init__ (line 187) | def __init__(self, width: int = 6, height: int = 2.5, dpi: int = 100): method set_issue_counts (line 202) | def set_issue_counts(self, issue_counts: dict): method update_plot (line 211) | def update_plot(self): class QCFeatureCanvas (line 284) | class QCFeatureCanvas(Canvas): method __init__ (line 291) | def __init__(self, width: int = 6, height: int = 2.5, dpi: int = 100): method set_feature_data (line 307) | def set_feature_data( method update_plot (line 367) | def update_plot(self): class QCFlagTableModel (line 464) | class QCFlagTableModel(QtCore.QAbstractTableModel): method __init__ (line 469) | def __init__(self, parent=None): method items (line 474) | def items(self) -> List["QCFlag"]: method items (line 479) | def items(self, value: List["QCFlag"]): method rowCount (line 485) | def rowCount(self, parent=None) -> int: method columnCount (line 488) | def columnCount(self, parent=None) -> int: method headerData (line 491) | def headerData(self, section, orientation, role=QtCore.Qt.DisplayRole): method data (line 496) | def data(self, index, role=QtCore.Qt.DisplayRole): method sort (line 531) | def sort(self, column: int, order: QtCore.Qt.SortOrder = QtCore.Qt.Asc... class QCAnalysisWorker (line 561) | class QCAnalysisWorker(QThread): method __init__ (line 574) | def __init__(self, labels, parent=None): method cancel (line 580) | def cancel(self): method run (line 584) | def run(self): class QCWidget (line 623) | class QCWidget(QtWidgets.QWidget): method __init__ (line 636) | def __init__(self, parent: Optional[QtWidgets.QWidget] = None): method _setup_ui (line 654) | def _setup_ui(self): method _connect_signals (line 806) | def _connect_signals(self): method _update_spinner (line 817) | def _update_spinner(self): method _on_cancel_analysis (line 831) | def _on_cancel_analysis(self): method set_labels (line 838) | def set_labels(self, labels: "sio.Labels"): method _on_run_analysis (line 856) | def _on_run_analysis(self): method _on_analysis_progress (line 898) | def _on_analysis_progress(self, step_name: str, progress: int, detail:... method _on_analysis_finished (line 908) | def _on_analysis_finished(self, results): method _on_analysis_error (line 922) | def _on_analysis_error(self, error_msg: str): method _on_threshold_changed (line 935) | def _on_threshold_changed(self, value: int): method _on_canvas_threshold_changed (line 944) | def _on_canvas_threshold_changed(self, threshold: float): method _update_all_displays (line 951) | def _update_all_displays(self): method _update_flagged_display (line 966) | def _update_flagged_display(self): method _update_statistics (line 992) | def _update_statistics(self): method _on_selection_changed (line 1036) | def _on_selection_changed(self, selected, deselected): method _on_row_double_clicked (line 1057) | def _on_row_double_clicked(self, index): method _update_selected_details (line 1068) | def _update_selected_details(self): method has_results (line 1096) | def has_results(self) -> bool: method has_flags (line 1101) | def has_flags(self) -> bool: method goto_next_flag (line 1105) | def goto_next_flag(self) -> bool: method goto_prev_flag (line 1125) | def goto_prev_flag(self) -> bool: method export_results (line 1146) | def export_results(self): method export_to_suggestions (line 1193) | def export_to_suggestions(self) -> int: method cleanup (line 1274) | def cleanup(self): method closeEvent (line 1292) | def closeEvent(self, event): FILE: sleap/gui/widgets/rendering_preview.py class RenderingPreviewWidget (line 19) | class RenderingPreviewWidget(QtWidgets.QWidget): method __init__ (line 34) | def __init__( method _get_labeled_frame_indices (line 67) | def _get_labeled_frame_indices(self) -> list[int]: method _setup_ui (line 75) | def _setup_ui(self): method _update_slider_range (line 127) | def _update_slider_range(self): method _on_slider_changed (line 134) | def _on_slider_changed(self, slider_idx: int): method _go_prev_frame (line 142) | def _go_prev_frame(self): method _go_next_frame (line 148) | def _go_next_frame(self): method set_render_params (line 154) | def set_render_params(self, **params): method set_frame (line 163) | def set_frame(self, frame_idx: int): method _schedule_render (line 173) | def _schedule_render(self, delay_ms: int = 100): method _do_render (line 181) | def _do_render(self): method _display_image (line 204) | def _display_image(self, img: np.ndarray): method _show_no_frames_message (line 237) | def _show_no_frames_message(self): method _show_error_message (line 242) | def _show_error_message(self, error: str): method resizeEvent (line 251) | def resizeEvent(self, event): FILE: sleap/gui/widgets/size_distribution.py class SizeHistogramCanvas (line 37) | class SizeHistogramCanvas(Canvas): method __init__ (line 50) | def __init__(self, width: int = 7, height: int = 5, dpi: int = 100): method _setup_axes (line 90) | def _setup_axes(self): method set_data (line 97) | def set_data(self, data: List["InstanceSizeInfo"]): method set_rotation_angle (line 110) | def set_rotation_angle(self, angle: float): method set_view_mode (line 121) | def set_view_mode(self, mode: str): method set_histogram_bins (line 133) | def set_histogram_bins(self, bins: int): method set_histogram_range (line 143) | def set_histogram_range( method update_plot (line 158) | def update_plot(self): method _draw_scatter (line 188) | def _draw_scatter(self, sizes: np.ndarray): method _draw_histogram (line 281) | def _draw_histogram(self, sizes: np.ndarray): method _on_pick (line 355) | def _on_pick(self, event): class SizeDistributionWidget (line 375) | class SizeDistributionWidget(QtWidgets.QWidget): method __init__ (line 389) | def __init__(self, parent: Optional[QtWidgets.QWidget] = None): method _setup_ui (line 404) | def _setup_ui(self): method _connect_signals (line 521) | def _connect_signals(self): method _get_rotation_angle (line 534) | def _get_rotation_angle(self) -> float: method _on_rotation_changed (line 550) | def _on_rotation_changed(self, text: str): method _on_custom_angle_changed (line 557) | def _on_custom_angle_changed(self, value: int): method _on_view_mode_changed (line 564) | def _on_view_mode_changed(self, checked: bool): method _on_bins_changed (line 576) | def _on_bins_changed(self, value: int): method _on_xrange_changed (line 580) | def _on_xrange_changed(self): method _on_point_clicked (line 586) | def _on_point_clicked(self, video_idx: int, frame_idx: int, instance_i... method _update_selected_info (line 608) | def _update_selected_info(self): method _on_recompute (line 629) | def _on_recompute(self): method _compute_and_update (line 634) | def _compute_and_update(self): method _update_statistics (line 649) | def _update_statistics(self): method set_labels (line 685) | def set_labels(self, labels: "sio.Labels"): method set_rotation_preset (line 694) | def set_rotation_preset(self, preset: str): method set_custom_angle (line 704) | def set_custom_angle(self, angle: int): FILE: sleap/gui/widgets/slider.py class SliderMark (line 28) | class SliderMark: method color (line 57) | def color(self): method color (line 75) | def color(self, val): method QColor (line 80) | def QColor(self): method filled (line 89) | def filled(self): method top_pad (line 97) | def top_pad(self): method bottom_pad (line 105) | def bottom_pad(self): method visual_width (line 113) | def visual_width(self): method get_height (line 120) | def get_height(self, container_height): class VideoSlider (line 130) | class VideoSlider(QtWidgets.QGraphicsView): method __init__ (line 163) | def __init__( method value (line 253) | def value(self) -> float: method setValue (line 257) | def setValue(self, val: Optional[float]): method setMinimum (line 266) | def setMinimum(self, min: float) -> float: method setMaximum (line 270) | def setMaximum(self, max: float) -> float: method setEnabled (line 274) | def setEnabled(self, val: float) -> float: method enabled (line 278) | def enabled(self): method _update_visual_positions (line 284) | def _update_visual_positions(self): method _get_min_max_slider_heights (line 316) | def _get_min_max_slider_heights(self): method _update_slider_height (line 337) | def _update_slider_height(self): method _toPos (line 356) | def _toPos(self, val: float, center=False) -> float: method _toVal (line 376) | def _toVal(self, x: float, center=False) -> float: method _slider_width (line 386) | def _slider_width(self) -> float: method slider_visible_value_range (line 391) | def slider_visible_value_range(self) -> float: method _mark_area_height (line 396) | def _mark_area_height(self) -> float: method value_range (line 401) | def value_range(self) -> float: method box_rect (line 405) | def box_rect(self) -> QtCore.QRectF: method box_rect (line 409) | def box_rect(self, rect: QtCore.QRectF): method clearSelection (line 419) | def clearSelection(self): method startSelection (line 424) | def startSelection(self, val): method endSelection (line 434) | def endSelection(self, val, update: bool = False): method setSelection (line 456) | def setSelection(self, start_val, end_val): method hasSelection (line 461) | def hasSelection(self) -> bool: method getSelection (line 466) | def getSelection(self): method _draw_selection (line 475) | def _draw_selection(self, a: float, b: float): method _draw_zoom_box (line 478) | def _draw_zoom_box(self, a: float, b: float): method _update_selection_box_positions (line 481) | def _update_selection_box_positions(self, box_object, a: float, b: flo... method _update_selection_boxes_on_resize (line 506) | def _update_selection_boxes_on_resize(self): method moveSelectionAnchor (line 515) | def moveSelectionAnchor(self, x: float, y: float): method releaseSelectionAnchor (line 535) | def releaseSelectionAnchor(self, x, y): method moveZoomDrag (line 551) | def moveZoomDrag(self, x: float, y: float): method releaseZoomDrag (line 559) | def releaseZoomDrag(self, x, y): method setZoomRange (line 577) | def setZoomRange(self, start_val: float, end_val: float): method setNumberOfTracks (line 593) | def setNumberOfTracks(self, track_rows): method clearMarks (line 602) | def clearMarks(self): method setMarks (line 616) | def setMarks(self, marks: Iterable[Union[SliderMark, int]]): method setTickMarks (line 638) | def setTickMarks(self): method _clear_tick_marks (line 643) | def _clear_tick_marks(self): method _add_tick_marks (line 650) | def _add_tick_marks(self): method removeMark (line 670) | def removeMark(self, mark: SliderMark): method getMarks (line 681) | def getMarks(self, type: str = ""): method addMark (line 688) | def addMark(self, new_mark: SliderMark, update: bool = True): method _get_track_column_row (line 752) | def _get_track_column_row(self, raw_row: int) -> Tuple[int, int]: method _get_track_vertical_pos (line 774) | def _get_track_vertical_pos(self, col: int, row: int) -> int: method _is_track_in_new_column (line 787) | def _is_track_in_new_column(self, row: int) -> bool: method setHeaderSeries (line 794) | def setHeaderSeries(self, series: Optional[Dict[int, float]] = None): method clearHeader (line 807) | def clearHeader(self): method _get_header_series_len (line 813) | def _get_header_series_len(self): method _header_series_items (line 821) | def _header_series_items(self): method _draw_header (line 831) | def _draw_header(self): method _pointsToPath (line 875) | def _pointsToPath(self, points: List[QtCore.QPointF]) -> QPainterPath: method mapMouseXToHandleX (line 883) | def mapMouseXToHandleX(self, x) -> float: method moveHandle (line 889) | def moveHandle(self, x, y): method _handle_top (line 920) | def _handle_top(self) -> float: method _handle_height (line 925) | def _handle_height(self, outline_rect=None) -> float: method contiguousSelectionMarksAroundVal (line 941) | def contiguousSelectionMarksAroundVal(self, val): method getStartContiguousMark (line 951) | def getStartContiguousMark(self, val: int) -> int: method getEndContiguousMark (line 963) | def getEndContiguousMark(self, val: int) -> int: method getMarksAtVal (line 975) | def getMarksAtVal(self, val: int) -> List[SliderMark]: method isMarkedVal (line 986) | def isMarkedVal(self, val: int) -> bool: method _dec_contiguous_marked_val (line 992) | def _dec_contiguous_marked_val(self, val): method _inc_contiguous_marked_val (line 1011) | def _inc_contiguous_marked_val(self, val): method setTooltipCallable (line 1032) | def setTooltipCallable(self, tooltip_callable: Callable): method _update_cursor_for_event (line 1042) | def _update_cursor_for_event(self, event): method resizeEvent (line 1052) | def resizeEvent(self, event=None): method mousePressEvent (line 1086) | def mousePressEvent(self, event): method mouseMoveEvent (line 1144) | def mouseMoveEvent(self, event): method mouseReleaseEvent (line 1159) | def mouseReleaseEvent(self, event): method mouseDoubleClickEvent (line 1165) | def mouseDoubleClickEvent(self, event): method leaveEvent (line 1183) | def leaveEvent(self, event): method keyPressEvent (line 1186) | def keyPressEvent(self, event): method keyReleaseEvent (line 1192) | def keyReleaseEvent(self, event): method boundingRect (line 1198) | def boundingRect(self) -> QtCore.QRectF: method paint (line 1202) | def paint(self, *args, **kwargs): class SemanticMarkType (line 1208) | class SemanticMarkType(Enum): function set_slider_marks_from_labels (line 1216) | def set_slider_marks_from_labels( FILE: sleap/gui/widgets/video.py function ndarray_to_qimage (line 76) | def ndarray_to_qimage( class QtVideoPlayer (line 177) | class QtVideoPlayer(QWidget): method __init__ (line 195) | def __init__( method _setup_worker_thread (line 282) | def _setup_worker_thread(self): method _on_frame_ready (line 304) | def _on_frame_ready(self, frame_idx: int, qimage: QImage): method _on_worker_ready (line 308) | def _on_worker_ready(self): method cleanup (line 317) | def cleanup(self): method dragEnterEvent (line 322) | def dragEnterEvent(self, event): method dropEvent (line 326) | def dropEvent(self, event): method _register_shortcuts (line 330) | def _register_shortcuts(self): method setSeekbarSelection (line 372) | def setSeekbarSelection(self, a: int, b: int): method create_contextual_menu (line 375) | def create_contextual_menu(self, scene_pos: QtCore.QPointF) -> QtWidge... method show_contextual_menu (line 407) | def show_contextual_menu(self, where: QtCore.QPoint): method load_video (line 425) | def load_video(self, video: Video, plot=True): method reset (line 451) | def reset(self): method instances (line 468) | def instances(self): method selectable_instances (line 473) | def selectable_instances(self): method predicted_instances (line 478) | def predicted_instances(self): method scene (line 483) | def scene(self): method addInstance (line 487) | def addInstance(self, instance, frame: Optional[LabeledFrame] = None, ... method plot (line 508) | def plot(self, *args): method update_plot (line 536) | def update_plot(self): method showInstances (line 540) | def showInstances(self, show): method showLabels (line 551) | def showLabels(self, show): method showEdges (line 560) | def showEdges(self, show): method highlightPredictions (line 569) | def highlightPredictions(self, highlight_text: str = ""): method highlightNavigatedInstance (line 574) | def highlightNavigatedInstance(self, instance: Optional["Instance"]): method clearNavigateHighlight (line 585) | def clearNavigateHighlight(self): method zoomToFit (line 589) | def zoomToFit(self): method zoomToSelection (line 595) | def zoomToSelection(self) -> bool: method setFitZoom (line 623) | def setFitZoom(self, value): method getVisibleRect (line 632) | def getVisibleRect(self): method onSequenceSelect (line 636) | def onSequenceSelect( method _signal_once (line 707) | def _signal_once(signal: QtCore.Signal, callback: Callable): method onPointSelection (line 726) | def onPointSelection(self, callback: Callable): method onAreaSelection (line 741) | def onAreaSelection(self, callback: Callable): method keyReleaseEvent (line 756) | def keyReleaseEvent(self, event: QKeyEvent): method keyPressEvent (line 764) | def keyPressEvent(self, event: QKeyEvent): method _select_on_possible_frame_movement (line 806) | def _select_on_possible_frame_movement(self, before_frame_idx: int): class GraphicsView (line 816) | class GraphicsView(QGraphicsView): method __init__ (line 854) | def __init__(self, state=None, player=None, *args, **kwargs): method dragEnterEvent (line 893) | def dragEnterEvent(self, event): method dropEvent (line 897) | def dropEvent(self, event): method hasImage (line 901) | def hasImage(self) -> bool: method clear (line 905) | def clear(self): method _add_pixmap (line 918) | def _add_pixmap(self, pixmap): method setImage (line 928) | def setImage(self, image: Union[QImage, QPixmap, np.ndarray]): method updateViewer (line 969) | def updateViewer(self): method instances (line 984) | def instances(self) -> List["QtInstance"]: method predicted_instances (line 993) | def predicted_instances(self) -> List["QtInstance"]: method selectable_instances (line 1002) | def selectable_instances(self) -> List["QtInstance"]: method all_instances (line 1011) | def all_instances(self) -> List["QtInstance"]: method selectInstance (line 1020) | def selectInstance(self, select: Union[Instance, int]): method getSelectionIndex (line 1034) | def getSelectionIndex(self) -> Optional[int]: method getSelectionInstance (line 1045) | def getSelectionInstance(self) -> Optional[Instance]: method getTopInstanceAt (line 1056) | def getTopInstanceAt(self, scenePos) -> Optional[Instance]: method highlightNavigatedInstance (line 1072) | def highlightNavigatedInstance(self, instance: Optional["Instance"]): method clearNavigateHighlight (line 1086) | def clearNavigateHighlight(self): method resizeEvent (line 1091) | def resizeEvent(self, event): method mousePressEvent (line 1095) | def mousePressEvent(self, event): method mouseReleaseEvent (line 1121) | def mouseReleaseEvent(self, event): method mouseMoveEvent (line 1164) | def mouseMoveEvent(self, event): method zoomToRect (line 1170) | def zoomToRect(self, zoom_rect: QRectF): method clearZoom (line 1193) | def clearZoom(self): method getInstancesBoundingRect (line 1198) | def getInstancesBoundingRect( method instancesBoundingRect (line 1221) | def instancesBoundingRect(self, margin: float = 0) -> QRectF: method mouseDoubleClickEvent (line 1232) | def mouseDoubleClickEvent(self, event: QMouseEvent): method wheelEvent (line 1246) | def wheelEvent(self, event): method keyPressEvent (line 1266) | def keyPressEvent(self, event): method keyReleaseEvent (line 1270) | def keyReleaseEvent(self, event): method event (line 1274) | def event(self, event): method handleGestureEvent (line 1279) | def handleGestureEvent(self, event): method handlePinchGesture (line 1285) | def handlePinchGesture(self, gesture: QPinchGesture): class QtNodeLabel (line 1292) | class QtNodeLabel(QGraphicsTextItem): method __init__ (line 1303) | def __init__( method __repr__ (line 1340) | def __repr__(self) -> str: method adjustPos (line 1343) | def adjustPos(self, *args, **kwargs): method adjustStyle (line 1397) | def adjustStyle(self): method paint (line 1425) | def paint(self, painter, option, widget): method mousePressEvent (line 1435) | def mousePressEvent(self, event): method mouseMoveEvent (line 1440) | def mouseMoveEvent(self, event): method mouseReleaseEvent (line 1444) | def mouseReleaseEvent(self, event): method wheelEvent (line 1449) | def wheelEvent(self, event): class QtNode (line 1454) | class QtNode(QGraphicsEllipseItem): method __init__ (line 1470) | def __init__( method __repr__ (line 1552) | def __repr__(self): method calls (line 1555) | def calls(self): method visible_radius (line 1562) | def visible_radius(self): method updatePoint (line 1569) | def updatePoint(self, user_change: bool = False): method toggleVisibility (line 1620) | def toggleVisibility(self): method mousePressEvent (line 1630) | def mousePressEvent(self, event): method mouseMoveEvent (line 1679) | def mouseMoveEvent(self, event): method mouseReleaseEvent (line 1689) | def mouseReleaseEvent(self, event): method wheelEvent (line 1703) | def wheelEvent(self, event): method mouseDoubleClickEvent (line 1712) | def mouseDoubleClickEvent(self, event: QMouseEvent): method hoverEnterEvent (line 1719) | def hoverEnterEvent(self, event): class QtEdge (line 1724) | class QtEdge(QGraphicsPolygonItem): method __init__ (line 1735) | def __init__( method __repr__ (line 1782) | def __repr__(self) -> str: method line (line 1785) | def line(self): method setLine (line 1788) | def setLine(self, line): method connected_to (line 1827) | def connected_to(self, node: QtNode): method angle_to (line 1844) | def angle_to(self, node: QtNode) -> float: method updateEdge (line 1859) | def updateEdge(self, node: QtNode): class QtInstance (line 1890) | class QtInstance(QGraphicsObject): method __init__ (line 1911) | def __init__( method __repr__ (line 2062) | def __repr__(self) -> str: method updatePoints (line 2065) | def updatePoints(self, complete: bool = False, user_change: bool = Fal... method getPointsBoundingRect (line 2114) | def getPointsBoundingRect(self) -> QRectF: method updateBox (line 2139) | def updateBox(self, *args, **kwargs): method highlight (line 2165) | def highlight(self): method highlight (line 2169) | def highlight(self, val): method highlight_text (line 2187) | def highlight_text(self): method highlight_text (line 2191) | def highlight_text(self, val): method navigate_highlight (line 2195) | def navigate_highlight(self): method navigate_highlight (line 2200) | def navigate_highlight(self, val): method selected (line 2216) | def selected(self): method selected (line 2221) | def selected(self, selected: bool): method showInstances (line 2227) | def showInstances(self, show: bool): method showLabels (line 2236) | def showLabels(self, show: bool): method showEdges (line 2248) | def showEdges(self, show: bool): method boundingRect (line 2260) | def boundingRect(self): method paint (line 2264) | def paint(self, painter, option, widget=None): method hoverEnterEvent (line 2268) | def hoverEnterEvent(self, event): method hoverLeaveEvent (line 2273) | def hoverLeaveEvent(self, event): method mousePressEvent (line 2278) | def mousePressEvent(self, event): method duplicate_instance (line 2287) | def duplicate_instance(self): method mouseMoveEvent (line 2334) | def mouseMoveEvent(self, event): method mouseReleaseEvent (line 2344) | def mouseReleaseEvent(self, event): class VisibleBoundingBox (line 2355) | class VisibleBoundingBox(QtWidgets.QGraphicsRectItem): method __init__ (line 2372) | def __init__( method setRect (line 2416) | def setRect(self, rect: QRectF): method mousePressEvent (line 2426) | def mousePressEvent(self, event): method mouseMoveEvent (line 2452) | def mouseMoveEvent(self, event): method mouseReleaseEvent (line 2520) | def mouseReleaseEvent(self, event): class QtTextWithBackground (line 2549) | class QtTextWithBackground(QGraphicsTextItem): method __init__ (line 2556) | def __init__(self, *args, **kwargs): method boundingRect (line 2560) | def boundingRect(self): method getBackgroundColor (line 2564) | def getBackgroundColor(self): method paint (line 2572) | def paint(self, painter, option, *args, **kwargs): function video_demo (line 2582) | def video_demo(video=None, labels=None, standalone=False): function plot_instances (line 2609) | def plot_instances(scene, frame_idx, labels, video=None, fixed=True): FILE: sleap/gui/widgets/video_worker.py class FrameLoaderThread (line 20) | class FrameLoaderThread(QThread): method __init__ (line 30) | def __init__(self): method set_debug_mode (line 44) | def set_debug_mode(self, value: bool): method run (line 47) | def run(self): method _process_frame (line 90) | def _process_frame(self, video, frame_idx: int): method request_frame (line 136) | def request_frame(self, video: sio.Video, frame_idx: int): method stop (line 174) | def stop(self): FILE: sleap/gui/widgets/views.py class CollapsibleWidget (line 17) | class CollapsibleWidget(QWidget): method __init__ (line 23) | def __init__(self, title: str, parent: QWidget = None): method create_toggle_button (line 36) | def create_toggle_button(self, title="") -> QToolButton: method create_header_widget (line 52) | def create_header_widget(self, title="") -> Tuple[QWidget, QToolButton]: method create_main_layout (line 77) | def create_main_layout(self) -> QVBoxLayout: method toggle_button_callback (line 87) | def toggle_button_callback(self, checked: bool): method set_content_layout (line 101) | def set_content_layout(self, content_layout): FILE: sleap/info/align.py function get_stable_node_pairs (line 38) | def get_stable_node_pairs( function get_most_stable_node_pair (line 85) | def get_most_stable_node_pair( function align_instances (line 93) | def align_instances( function align_instances_on_most_stable (line 133) | def align_instances_on_most_stable( function get_mean_and_std_for_points (line 146) | def get_mean_and_std_for_points( function make_mean_instance (line 158) | def make_mean_instance( function align_instance_points (line 209) | def align_instance_points(source_points_array, target_points_array): function get_instances_points (line 246) | def get_instances_points(instances: List[Instance]) -> np.ndarray: function get_template_points_array (line 260) | def get_template_points_array(instances: List[Instance]) -> np.ndarray: FILE: sleap/info/feature_suggestions.py class BriskVec (line 29) | class BriskVec: method __attrs_post_init__ (line 34) | def __attrs_post_init__(self): method get_vecs (line 37) | def get_vecs(self, imgs): method clusters_to_vecs (line 76) | def clusters_to_vecs(self, cluster_labels, ownership, img_count): class HogVec (line 90) | class HogVec: method __attrs_post_init__ (line 95) | def __attrs_post_init__(self): method get_vecs (line 113) | def get_vecs(self, imgs): method clusters_to_vecs (line 141) | def clusters_to_vecs(self, cluster_labels, ownership, img_count): method get_hogs (line 153) | def get_hogs(self, imgs): method get_image_hog (line 171) | def get_image_hog(self, img): method get_image_crops (line 194) | def get_image_crops(self, img, points): method get_brisk_keypoints_as_points (line 211) | def get_brisk_keypoints_as_points(self, img): method keypoints_to_points_matrix (line 217) | def keypoints_to_points_matrix(self, kps): class FrameItem (line 226) | class FrameItem(object): method get_raw_image (line 232) | def get_raw_image(self, scale: float = 1.0): class FrameGroupSet (line 247) | class FrameGroupSet(object): method append_to_group (line 266) | def append_to_group(self, group: int, item: FrameItem): method extend_group_items (line 272) | def extend_group_items(self, group: int, item_list: List[FrameItem]): method get_item_group (line 277) | def get_item_group(self, item: FrameItem): method groups (line 282) | def groups(self): method all_items (line 293) | def all_items(self): method sample (line 297) | def sample(self, per_group: int, unique_samples: bool = True): class ItemStack (line 338) | class ItemStack(object): method current_groupset (line 359) | def current_groupset(self): method get_item_data_idxs (line 365) | def get_item_data_idxs(self, item): method get_item_data (line 374) | def get_item_data(self, item): method get_item_by_data_row (line 379) | def get_item_by_data_row(self, row_idx): method extend_ownership (line 390) | def extend_ownership(self, ownership, row_count): method get_raw_images (line 400) | def get_raw_images(self, scale=0.5): method flatten (line 430) | def flatten(self): method brisk_bag_of_features (line 439) | def brisk_bag_of_features(self, brisk_threshold=40, vocab_size=20): method hog_bag_of_features (line 444) | def hog_bag_of_features(self, brisk_threshold=40, vocab_size=20): method pca (line 449) | def pca(self, n_components: int): method kmeans (line 462) | def kmeans(self, n_clusters: int): method make_sample_group (line 481) | def make_sample_group( method get_all_items_from_group (line 512) | def get_all_items_from_group(self): method sample_groups (line 518) | def sample_groups(self, samples_per_group: int): method to_suggestion_tuples (line 526) | def to_suggestion_tuples( method to_suggestion_frames (line 538) | def to_suggestion_frames(self, group_offset: int = 0) -> List["Suggest... class FeatureSuggestionPipeline (line 551) | class FeatureSuggestionPipeline(object): method run_disk_stage (line 563) | def run_disk_stage(self, videos): method run_processing_state (line 575) | def run_processing_state(self): method run (line 612) | def run(self, videos): method reset (line 620) | def reset(self): method get_suggestion_frames (line 623) | def get_suggestion_frames(self, videos, group_offset=0): method get_suggestion_tuples (line 626) | def get_suggestion_tuples(self, videos, group_offset=0, video_offset=0): class ParallelFeaturePipeline (line 631) | class ParallelFeaturePipeline(object): method get (line 645) | def get(self, video_idx): method make (line 666) | def make(cls, pipeline, videos): method tuples_to_suggestions (line 684) | def tuples_to_suggestions(cls, tuples, videos): method run (line 695) | def run(cls, pipeline, videos, parallel=True): function demo_pipeline (line 715) | def demo_pipeline(): FILE: sleap/info/labels.py function describe_labels (line 13) | def describe_labels(data_path, verbose=False): function describe_model (line 78) | def describe_model(model_path, verbose=False): function main (line 226) | def main(): FILE: sleap/info/metrics.py function match_instance_lists (line 14) | def match_instance_lists( function calculate_pairwise_cost (line 34) | def calculate_pairwise_cost( function match_instance_lists_nodewise (line 58) | def match_instance_lists_nodewise( function matched_instance_distances (line 97) | def matched_instance_distances( function point_dist (line 165) | def point_dist( function nodeless_point_dist (line 179) | def nodeless_point_dist( function compare_instance_lists (line 212) | def compare_instance_lists( function list_points_array (line 226) | def list_points_array( function point_match_count (line 236) | def point_match_count(dist_array: np.ndarray, thresh: float = 5) -> int: function point_nonmatch_count (line 241) | def point_nonmatch_count(dist_array: np.ndarray, thresh: float = 5) -> int: FILE: sleap/info/summary.py class StatisticSeries (line 21) | class StatisticSeries: method get_point_count_series (line 34) | def get_point_count_series(self, video: Video) -> Dict[int, float]: method get_point_score_series (line 43) | def get_point_score_series( method get_instance_score_series (line 71) | def get_instance_score_series(self, video, reduction="sum") -> Dict[in... method get_point_displacement_series (line 92) | def get_point_displacement_series(self, video, reduction="sum") -> Dic... method get_primary_point_displacement_series (line 122) | def get_primary_point_displacement_series( method get_min_centroid_proximity_series (line 207) | def get_min_centroid_proximity_series(self, video): method _calculate_frame_velocity (line 231) | def _calculate_frame_velocity( method get_tracking_score_series (line 265) | def get_tracking_score_series( FILE: sleap/info/write_tracking_h5.py function get_tracks_as_np_strings (line 44) | def get_tracks_as_np_strings(labels: Labels) -> List[bytes]: function get_nodes_as_np_strings (line 49) | def get_nodes_as_np_strings(labels: Labels) -> List[bytes]: function get_edges_as_np_strings (line 54) | def get_edges_as_np_strings(labels: Labels) -> List[Tuple[bytes, bytes]]: function get_occupancy_and_points_matrices (line 62) | def get_occupancy_and_points_matrices( function remove_empty_tracks_from_matrices (line 204) | def remove_empty_tracks_from_matrices( function write_occupancy_file (line 252) | def write_occupancy_file( function write_csv_file (line 299) | def write_csv_file(output_path, data_dict): function main (line 362) | def main( FILE: sleap/io/convert.py function create_parser (line 51) | def create_parser(): function default_analysis_filename (line 81) | def default_analysis_filename( function main (line 99) | def main(args: list = None): FILE: sleap/io/format/adaptor.py class SleapObjectType (line 11) | class SleapObjectType(Enum): class Adaptor (line 19) | class Adaptor: method handles (line 29) | def handles(self) -> SleapObjectType: method default_ext (line 39) | def default_ext(self) -> str: method all_exts (line 44) | def all_exts(self) -> List[str]: method name (line 49) | def name(self) -> str: method can_read_file (line 53) | def can_read_file(self, file) -> bool: method can_write_filename (line 57) | def can_write_filename(self, filename: str) -> bool: method does_read (line 61) | def does_read(self) -> bool: method does_write (line 65) | def does_write(self) -> bool: method read (line 69) | def read(self, file) -> object: method write (line 73) | def write(self, filename: str, source_object: object): method does_match_ext (line 79) | def does_match_ext(self, filename: str) -> bool: method formatted_ext_options (line 88) | def formatted_ext_options(self): FILE: sleap/io/format/csv.py class CSVAdaptor (line 13) | class CSVAdaptor(format.adaptor.Adaptor): method handles (line 19) | def handles(self): method default_ext (line 23) | def default_ext(self): method all_exts (line 27) | def all_exts(self): method name (line 31) | def name(self): method can_read_file (line 34) | def can_read_file(self, file: format.filehandle.FileHandle): method can_write_filename (line 37) | def can_write_filename(self, filename: str): method does_read (line 40) | def does_read(self) -> bool: method does_write (line 43) | def does_write(self) -> bool: method write (line 47) | def write( FILE: sleap/io/format/filehandle.py class FileHandle (line 19) | class FileHandle(object): method __enter__ (line 30) | def __enter__(self): method __exit__ (line 34) | def __exit__(self, exc_type, exc_value, exc_traceback): method open (line 37) | def open(self): method close (line 54) | def close(self): method file (line 60) | def file(self): method text (line 66) | def text(self): method json (line 73) | def json(self): method is_json (line 80) | def is_json(self): method is_hdf5 (line 91) | def is_hdf5(self): method format_id (line 97) | def format_id(self): FILE: sleap/io/format/genericjson.py class GenericJsonAdaptor (line 13) | class GenericJsonAdaptor(Adaptor): method handles (line 15) | def handles(self): method default_ext (line 19) | def default_ext(self): method all_exts (line 23) | def all_exts(self): method name (line 27) | def name(self): method can_read_file (line 30) | def can_read_file(self, file: FileHandle): method can_write_filename (line 35) | def can_write_filename(self, filename: str) -> bool: method does_read (line 38) | def does_read(self) -> bool: method does_write (line 41) | def does_write(self) -> bool: method read (line 44) | def read(self, file: FileHandle, *args, **kwargs): method write (line 47) | def write(self, filename: str, source_object: dict): FILE: sleap/io/format/sleap_analysis.py class SleapAnalysisAdaptor (line 23) | class SleapAnalysisAdaptor(Adaptor): method handles (line 25) | def handles(self): method default_ext (line 29) | def default_ext(self): method all_exts (line 33) | def all_exts(self): method name (line 37) | def name(self): method can_read_file (line 40) | def can_read_file(self, file: FileHandle): method can_write_filename (line 49) | def can_write_filename(self, filename: str): method does_read (line 52) | def does_read(self) -> bool: method does_write (line 55) | def does_write(self) -> bool: method read (line 59) | def read( method write (line 80) | def write( FILE: sleap/io/pathutils.py function list_file_missing (line 11) | def list_file_missing(filenames): function filenames_prefix_change (line 16) | def filenames_prefix_change( function fix_path_separator (line 106) | def fix_path_separator(path: str): function find_changed_subpath (line 110) | def find_changed_subpath(old_path: str, new_path: str) -> Tuple[str, str]: function fix_paths_with_saved_prefix (line 142) | def fix_paths_with_saved_prefix( function save_path_prefix_replacement (line 172) | def save_path_prefix_replacement(old_prefix: str, new_prefix: str): FILE: sleap/io/visuals.py class VideoMarkerThread (line 41) | class VideoMarkerThread(Thread): method __init__ (line 59) | def __init__( method run (line 120) | def run(self): method marker (line 125) | def marker(self): method _mark_images (line 162) | def _mark_images(self, frame_indices, frame_images): method _mark_single_frame (line 172) | def _mark_single_frame(self, video_frame: np.ndarray, frame_idx: int) ... method _plot_instances_cv (line 203) | def _plot_instances_cv( method _get_crop_center (line 236) | def _get_crop_center( method _crop_frame (line 258) | def _crop_frame( method _crop_img (line 264) | def _crop_img( method _plot_instance_cv (line 292) | def _plot_instance_cv( class VideoReaderThread (line 401) | class VideoReaderThread(Thread): method __init__ (line 411) | def __init__( method run (line 425) | def run(self): function save_labeled_video (line 438) | def save_labeled_video( function has_nans (line 637) | def has_nans(*vals): function img_to_cv (line 641) | def img_to_cv(img: np.ndarray) -> np.ndarray: function main (line 652) | def main(args: list = None): FILE: sleap/legacy_cli_adaptors.py function _warn_deprecated (line 23) | def _warn_deprecated(old_cmd: str, new_cmd: str) -> None: function train_command (line 132) | def train_command( function frame_list (line 327) | def frame_list(frame_str: str) -> Optional[List[int]]: function track_command (line 638) | def track_command( FILE: sleap/message.py class BaseMessageParticipant (line 22) | class BaseMessageParticipant: method __attrs_post_init__ (line 29) | def __attrs_post_init__(self): method __del__ (line 36) | def __del__(self): class Receiver (line 42) | class Receiver(BaseMessageParticipant): method setup (line 47) | def setup(self): method __del__ (line 52) | def __del__(self): method push_back_message (line 58) | def push_back_message(self, message): method _recv (line 62) | def _recv(self, flags=0, copy=True, track=False): method check_message (line 75) | def check_message(self, timeout: int = 10, fresh: bool = False) -> Any: method check_messages (line 88) | def check_messages(self, timeout: int = 10, times_to_check: int = 10) ... class Sender (line 119) | class Sender(BaseMessageParticipant): method setup (line 122) | def setup(self): method __del__ (line 126) | def __del__(self): method send_dict (line 131) | def send_dict(self, data: dict): method send_array (line 137) | def send_array( class PairedMessageParticipant (line 152) | class PairedMessageParticipant: method from_tcp_ports (line 158) | def from_tcp_ports(cls, send_port, rec_port): method setup (line 164) | def setup(self): method close (line 170) | def close(self): class PairedSender (line 178) | class PairedSender(PairedMessageParticipant): method from_defaults (line 182) | def from_defaults(cls): method send_handshake (line 185) | def send_handshake(self, timeout_sec=30): method _is_handshake_reply (line 199) | def _is_handshake_reply(self, message: Any) -> bool: method send_dict (line 204) | def send_dict(self, *args, **kwargs): method send_array (line 207) | def send_array(self, *args, **kwargs): class PairedReceiver (line 212) | class PairedReceiver(PairedMessageParticipant): method from_defaults (line 216) | def from_defaults(cls): method receive_handshake (line 219) | def receive_handshake(self, timeout_sec=30): method _respond_to_handshake (line 235) | def _respond_to_handshake(self): method _is_handshake (line 239) | def _is_handshake(self, message: Any): method check_messages (line 244) | def check_messages(self, ack_handshakes: bool = True, *args, **kwargs): FILE: sleap/nn_cli.py function _warn_deprecated (line 19) | def _warn_deprecated(old_cmd: str, new_cmd: str) -> None: class TrainCommand (line 31) | class TrainCommand(Command): method format_help (line 34) | def format_help(self, ctx, formatter): function show_training_help (line 39) | def show_training_help(): function train (line 70) | def train(config_name, config_dir, overrides): function track (line 537) | def track(**kwargs): function export (line 613) | def export( function predict (line 755) | def predict( FILE: sleap/prefs.py class Preferences (line 17) | class Preferences(object): method __init__ (line 50) | def __init__(self): method _get_file_path (line 53) | def _get_file_path(self) -> Path: method _load_or_create (line 57) | def _load_or_create(self): method load (line 96) | def load(self): method load_ (line 101) | def load_(self): method save (line 106) | def save(self): method reset_to_default (line 111) | def reset_to_default(self): method _validate_key (line 116) | def _validate_key(self, key): method __contains__ (line 120) | def __contains__(self, item) -> bool: method __getitem__ (line 123) | def __getitem__(self, key): method __setitem__ (line 128) | def __setitem__(self, key, value): FILE: sleap/qc/config.py class QCConfig (line 10) | class QCConfig: method should_use_curvature (line 55) | def should_use_curvature(self, max_chain_length: int) -> bool: method should_use_symmetry (line 62) | def should_use_symmetry(self, has_symmetry: bool) -> bool: FILE: sleap/qc/detector.py class LabelQCDetector (line 40) | class LabelQCDetector: method __init__ (line 65) | def __init__(self, config: Optional[QCConfig] = None): method fit (line 88) | def fit( method score (line 192) | def score( method flag (line 260) | def flag(self, labels: "sio.Labels", threshold: Optional[float] = None... method _collect_instances (line 274) | def _collect_instances(self, labels: "sio.Labels") -> list[np.ndarray]: method _instance_to_array (line 283) | def _instance_to_array(self, instance: "sio.Instance") -> np.ndarray: method _get_visibility_masks (line 291) | def _get_visibility_masks(self, instances: list[np.ndarray]) -> np.nda... method _extract_features (line 299) | def _extract_features( method _extract_all_features (line 346) | def _extract_all_features( method _compute_loo_nn_distances_fast (line 390) | def _compute_loo_nn_distances_fast( method _compute_loo_nn_distances (line 431) | def _compute_loo_nn_distances(self, instances: list[np.ndarray]) -> li... method _get_feature_names (line 457) | def _get_feature_names(self) -> list[str]: method _score_instance (line 461) | def _score_instance(self, features: np.ndarray) -> tuple[float, dict[s... method _check_frame (line 480) | def _check_frame(self, instances: list[np.ndarray], video_id: str) -> ... method _collect_frame_counts (line 504) | def _collect_frame_counts( FILE: sleap/qc/features/baseline.py class DatasetStats (line 29) | class DatasetStats: class BaselineFeatureExtractor (line 42) | class BaselineFeatureExtractor: method __init__ (line 55) | def __init__( method fit (line 74) | def fit(self, instances: list[np.ndarray]) -> "BaselineFeatureExtractor": method extract (line 182) | def extract(self, points: np.ndarray) -> np.ndarray: method _compute_edge_zscores (line 260) | def _compute_edge_zscores(self, points: np.ndarray) -> np.ndarray: method _compute_angle_zscores (line 276) | def _compute_angle_zscores(self, points: np.ndarray) -> np.ndarray: method _compute_pairwise_zscores (line 312) | def _compute_pairwise_zscores(self, points: np.ndarray) -> np.ndarray: method _compute_bbox_zscore (line 331) | def _compute_bbox_zscore(self, points: np.ndarray) -> float: method _compute_centroid_distances (line 342) | def _compute_centroid_distances(self, points: np.ndarray) -> np.ndarray: method _compute_symmetry_consistency (line 358) | def _compute_symmetry_consistency(self, points: np.ndarray) -> float: method _compute_visibility_features (line 396) | def _compute_visibility_features(self, points: np.ndarray) -> tuple[fl... FILE: sleap/qc/features/reference.py function normalize_pose (line 10) | def normalize_pose(points: np.ndarray) -> np.ndarray: function pose_distance (line 39) | def pose_distance( class NearestNeighborScorer (line 81) | class NearestNeighborScorer: method __init__ (line 92) | def __init__(self, normalize: bool = True, method: str = "euclidean"): method fit (line 105) | def fit(self, poses: np.ndarray) -> "NearestNeighborScorer": method score (line 134) | def score(self, pose: np.ndarray) -> dict[str, float]: method score_batch (line 189) | def score_batch(self, poses: np.ndarray) -> np.ndarray: FILE: sleap/qc/features/skeleton.py class SkeletonAnalyzer (line 13) | class SkeletonAnalyzer: method __init__ (line 34) | def __init__(self, skeleton: "sio.Skeleton"): method _build_graph (line 69) | def _build_graph(self) -> nx.Graph: method _analyze_structure (line 78) | def _analyze_structure(self) -> None: method _find_longest_path (line 96) | def _find_longest_path(self) -> list[int]: method _find_all_chains (line 114) | def _find_all_chains(self, min_length: int = 3) -> list[list[int]]: method _count_triplets (line 152) | def _count_triplets(self) -> int: method get_curvature_chains (line 163) | def get_curvature_chains(self, min_length: int = 3) -> list[list[int]]: method has_symmetry (line 184) | def has_symmetry(self) -> bool: method get_adjacency (line 188) | def get_adjacency(self) -> dict[int, list[int]]: FILE: sleap/qc/features/structural.py function compute_curvature (line 8) | def compute_curvature( function compute_convex_hull (line 103) | def compute_convex_hull( FILE: sleap/qc/features/visibility.py class VisibilityModel (line 10) | class VisibilityModel: method __init__ (line 24) | def __init__(self): method fit (line 31) | def fit(self, visibility_masks: np.ndarray) -> "VisibilityModel": method score (line 62) | def score(self, visibility_mask: np.ndarray) -> dict[str, float]: method get_expected_visibility (line 105) | def get_expected_visibility(self, partial_mask: np.ndarray) -> np.ndar... function compute_isolated_invisible (line 132) | def compute_isolated_invisible( FILE: sleap/qc/frame_level.py class InstanceCountChecker (line 11) | class InstanceCountChecker: method __init__ (line 20) | def __init__(self, per_video: bool = True): method fit (line 30) | def fit( method check (line 57) | def check( function compute_instance_iou (line 91) | def compute_instance_iou( function compute_node_overlap (line 135) | def compute_node_overlap( function detect_duplicates (line 187) | def detect_duplicates( FILE: sleap/qc/gmm.py class GMMDetector (line 12) | class GMMDetector: method __init__ (line 27) | def __init__( method fit (line 50) | def fit( method score (line 98) | def score(self, feature_vector: np.ndarray) -> dict[str, float]: method score_batch (line 143) | def score_batch(self, feature_matrix: np.ndarray) -> np.ndarray: class ZScoreDetector (line 181) | class ZScoreDetector: method __init__ (line 187) | def __init__(self, threshold: float = 3.0): method fit (line 197) | def fit(self, feature_matrix: np.ndarray) -> "ZScoreDetector": method score_batch (line 216) | def score_batch(self, feature_matrix: np.ndarray) -> np.ndarray: FILE: sleap/qc/results.py class InstanceKey (line 13) | class InstanceKey(NamedTuple): class FrameKey (line 21) | class FrameKey(NamedTuple): class FrameQC (line 29) | class FrameQC: class QCFlag (line 40) | class QCFlag: method video_idx (line 51) | def video_idx(self) -> int: method frame_idx (line 56) | def frame_idx(self) -> int: method instance_idx (line 61) | def instance_idx(self) -> int: class QCResults (line 67) | class QCResults: method get_flagged (line 84) | def get_flagged(self, threshold: float = 0.7) -> list[QCFlag]: method get_frame_issues (line 119) | def get_frame_issues(self) -> list[tuple[FrameKey, FrameQC]]: method get_explanation (line 127) | def get_explanation(self, instance_key: InstanceKey) -> str: method to_dataframe (line 137) | def to_dataframe(self) -> "pd.DataFrame": method _infer_top_issue (line 162) | def _infer_top_issue(self, contributions: dict[str, float]) -> str: method _get_confidence (line 225) | def _get_confidence(self, score: float, contributions: dict[str, float... method _generate_explanation (line 233) | def _generate_explanation( FILE: sleap/rangelist.py class RangeList (line 11) | class RangeList: method __init__ (line 17) | def __init__(self, range_list: List[Tuple[int]] = None): method __repr__ (line 20) | def __repr__(self): method list (line 24) | def list(self): method list (line 29) | def list(self, val): method is_empty (line 34) | def is_empty(self): method start (line 39) | def start(self): method end (line 46) | def end(self): method add (line 52) | def add(self, val, tolerance=0): method insert (line 59) | def insert(self, new_range: tuple): method insert_list (line 67) | def insert_list(self, range_list: List[Tuple[int]]): method remove (line 73) | def remove(self, remove: tuple): method cut (line 78) | def cut(self, cut: int): method cut_range (line 82) | def cut_range(self, cut: tuple): method _as_tuple (line 94) | def _as_tuple(x): method cut_ (line 101) | def cut_(range_list: List[Tuple[int]], cut: int): method join_ (line 126) | def join_(cls, list_list: List[List[Tuple[int]]]): method join_pair_ (line 141) | def join_pair_(list_a: List[Tuple[int]], list_b: List[Tuple[int]]): FILE: sleap/sleap_io_adaptors/instance_utils.py function node_points (line 14) | def node_points(instance) -> List[Tuple[Node, np.ndarray]]: function get_nodes_from_instance (line 46) | def get_nodes_from_instance(instance: Instance) -> Tuple[Node, ...]: function bounding_box (line 61) | def bounding_box(instance: Instance): function fill_missing (line 72) | def fill_missing( function instance_get_points_array (line 172) | def instance_get_points_array(instance): function instance_get_scores (line 186) | def instance_get_scores(instance): function predicted_instance_from_numpy_compat (line 205) | def predicted_instance_from_numpy_compat( function instance_same_pose_as_compat (line 266) | def instance_same_pose_as_compat(instance1, instance2): function get_centroid (line 288) | def get_centroid(instance: Instance) -> np.ndarray: FILE: sleap/sleap_io_adaptors/lf_labels_utils.py class SimpleRange (line 32) | class SimpleRange: method __init__ (line 33) | def __init__(self, ranges_list): method is_empty (line 38) | def is_empty(self): function find_path_using_paths (line 42) | def find_path_using_paths( function remove_track (line 72) | def remove_track(labels: Labels, track: Track): function remove_all_tracks (line 100) | def remove_all_tracks(labels: Labels): function remove_frames (line 109) | def remove_frames(labels: Labels, frames: List[LabeledFrame]): function remove_instance (line 121) | def remove_instance(labels: Labels, instance: Instance, lf: LabeledFrame): function remove_unused_tracks (line 147) | def remove_unused_tracks(labels: Labels): function remove_video (line 168) | def remove_video(labels: Labels, video: Video): function get_track_occupancy (line 189) | def get_track_occupancy(labels, video): function add_suggestion (line 243) | def add_suggestion(labels, video, frame_idx): function get_video_suggestions (line 248) | def get_video_suggestions(labels, video, user_labeled: bool = True) -> L... function get_unused_predictions (line 290) | def get_unused_predictions(labeled_frame) -> List: function get_instances_to_show (line 350) | def get_instances_to_show(labeled_frame) -> List: function get_labeled_frame_count (line 383) | def get_labeled_frame_count(labels, video=None, filter: str = "") -> int: function find_first (line 447) | def find_first(labels, video, frame_idx=None, use_cache: bool = False): function find_last (line 488) | def find_last(labels, video, frame_idx=None): function iterate_labeled_frames (line 520) | def iterate_labeled_frames( function get_template_instance_points (line 607) | def get_template_instance_points(labels: Labels, skeleton: Skeleton): function fix_paths_with_saved_prefix (line 691) | def fix_paths_with_saved_prefix( function make_video_callback (line 755) | def make_video_callback( function load_labels_video_search (line 917) | def load_labels_video_search(filename, video_search): function find_suggestion (line 963) | def find_suggestion(labels: Labels, video, frame_idx): function get_next_suggestion (line 976) | def get_next_suggestion(labels: Labels, video, frame_idx, seek_direction... function instances (line 1031) | def instances( function merge_nodes_data (line 1043) | def merge_nodes_data( function merge_nodes (line 1082) | def merge_nodes( function find_track_occupancy (line 1122) | def find_track_occupancy( function track_swap (line 1162) | def track_swap( function track_set_instance (line 1202) | def track_set_instance( function clear_suggestion (line 1216) | def clear_suggestion(labels: Labels): function labels_get_suggestions (line 1225) | def labels_get_suggestions(labels: Labels): function labels_get (line 1240) | def labels_get(labels: Labels, video_and_frame_or_video, frame_idx=None,... function labels_all_instances (line 1274) | def labels_all_instances(labels: Labels): function labels_clear_suggestions (line 1290) | def labels_clear_suggestions(labels: Labels): function labels_copy (line 1302) | def labels_copy(labels: Labels) -> Labels: function labels_add_video (line 1311) | def labels_add_video(labels: Labels, video: Video): function labels_pop (line 1320) | def labels_pop(labels: Labels, index: int) -> LabeledFrame: function labels_remove_frame (line 1334) | def labels_remove_frame(labels: Labels, labeled_frame: LabeledFrame): function labels_load_file (line 1343) | def labels_load_file(filename: str, **kwargs) -> Labels: function labels_get_nodes (line 1361) | def labels_get_nodes(labels: Labels): function labels_get_labels_attr (line 1371) | def labels_get_labels_attr(labels: Labels): function labels_frames (line 1379) | def labels_frames(labels: Labels, video: Video = None): function labeled_frame_find (line 1390) | def labeled_frame_find(labeled_frame: LabeledFrame, track: Track = None): function labels_append_suggestions (line 1414) | def labels_append_suggestions(labels: Labels, suggestions): function labels_add_instance (line 1430) | def labels_add_instance(labels: Labels, frame: LabeledFrame, instance): function get_predictions_on_user_frames (line 1449) | def get_predictions_on_user_frames( FILE: sleap/sleap_io_adaptors/skeleton_utils.py function find_node (line 12) | def find_node(skeleton: Skeleton, node_name: str) -> Node: function node_to_index (line 20) | def node_to_index(skeleton: Skeleton, node: NodeOrIndex) -> int: function edge_to_index (line 38) | def edge_to_index( function get_symmetry_node (line 50) | def get_symmetry_node(skeleton: Skeleton, node_name: str) -> str: function delete_symmetry (line 59) | def delete_symmetry(skeleton: Skeleton, node1: str, node2: str): function delete_edge (line 68) | def delete_edge(skeleton: Skeleton, source: str, destination: str): function to_graph (line 104) | def to_graph(skeleton: Skeleton): function to_subgraph_view (line 125) | def to_subgraph_view(graph: nx.MultiDiGraph): function is_arborescence (line 135) | def is_arborescence(skeleton: Skeleton) -> bool: function in_degree_over_one (line 142) | def in_degree_over_one(skeleton: Skeleton) -> List[Node]: function root_nodes (line 149) | def root_nodes(skeleton: Skeleton) -> List[Node]: function cycles (line 155) | def cycles(skeleton: Skeleton) -> List[List[Node]]: FILE: sleap/sleap_io_adaptors/video_utils.py function can_use_ffmpeg (line 11) | def can_use_ffmpeg(): function available_video_exts (line 29) | def available_video_exts() -> Tuple[str]: function video_util_reset (line 38) | def video_util_reset(video: Video, filename: str = None, grayscale: bool... function get_last_frame_idx (line 62) | def get_last_frame_idx(video=None): function video_get_frames (line 76) | def video_get_frames(video: Video) -> int: function video_get_height (line 88) | def video_get_height(video: Video) -> int: function video_get_width (line 100) | def video_get_width(video: Video) -> int: function video_get_channels (line 112) | def video_get_channels(video: Video) -> int: function video_get_frame (line 124) | def video_get_frame(video: Video, idx: int): FILE: sleap/system_info.py class PackageInfoData (line 103) | class PackageInfoData: class UVInfo (line 119) | class UVInfo: class CondaInfo (line 139) | class CondaInfo: class BinaryInfo (line 151) | class BinaryInfo: class GPUInfo (line 162) | class GPUInfo: function _interpolate_color (line 171) | def _interpolate_color(color1: tuple, color2: tuple, t: float) -> tuple: function _multi_gradient (line 180) | def _multi_gradient(colors: list, t: float) -> tuple: function _create_gradient_text (line 192) | def _create_gradient_text(text: str, colors: list) -> Text: function _shorten_path (line 204) | def _shorten_path(path: str, max_len: int = 40) -> str: function get_package_info (line 213) | def get_package_info(name: str) -> Dict: function get_all_package_info (line 287) | def get_all_package_info() -> Dict: function _get_nvidia_driver_version (line 303) | def _get_nvidia_driver_version() -> Optional[str]: function get_pytorch_info (line 321) | def get_pytorch_info() -> Dict: function _get_platform_name (line 387) | def _get_platform_name() -> str: function _build_version_line (line 415) | def _build_version_line() -> Text: function _build_system_line (line 448) | def _build_system_line() -> Text: function _build_pytorch_line (line 472) | def _build_pytorch_line() -> Optional[Text]: function print_startup_banner (line 508) | def print_startup_banner(verbose: bool = False, console: Optional[Consol... function _print_package_table (line 617) | def _print_package_table(console: Console): function run_command (line 643) | def run_command(cmd: list[str], timeout: int = 5) -> tuple[int, str, str]: function get_git_info (line 652) | def get_git_info(path: str) -> dict: function get_detailed_package_info (line 689) | def get_detailed_package_info(name: str) -> Optional[PackageInfoData]: function get_uv_config_value (line 767) | def get_uv_config_value(key: str) -> str: function get_default_python_version (line 809) | def get_default_python_version() -> str: function get_uv_info_data (line 841) | def get_uv_info_data() -> Optional[UVInfo]: function get_conda_info_data (line 902) | def get_conda_info_data() -> Optional[CondaInfo]: function get_binary_info (line 944) | def get_binary_info(name: str) -> Optional[BinaryInfo]: function get_nvidia_info (line 984) | def get_nvidia_info() -> tuple[str, str, list[GPUInfo]]: function get_pytorch_info_detailed (line 1032) | def get_pytorch_info_detailed() -> tuple[str, str, str]: function get_memory_info (line 1057) | def get_memory_info() -> tuple[str, str, str]: function get_disk_info (line 1147) | def get_disk_info(path: str) -> tuple[str, str, str]: function get_ffmpeg_info (line 1166) | def get_ffmpeg_info() -> list[BinaryInfo]: function analyze_path (line 1229) | def analyze_path() -> tuple[list[str], list[str]]: FILE: sleap/util.py class RateColumn (line 50) | class RateColumn(rich.progress.ProgressColumn): method render (line 53) | def render(self, task: Task) -> rich.progress.Text: function json_loads (line 61) | def json_loads(json_str: str) -> Dict: function json_dumps (line 76) | def json_dumps(d: Dict, filename: str = None): function attr_to_dtype (line 96) | def attr_to_dtype(cls: Any): function usable_cpu_count (line 125) | def usable_cpu_count() -> int: function save_dict_to_hdf5 (line 143) | def save_dict_to_hdf5(h5file: h5.File, path: str, dic: dict): function frame_list (line 190) | def frame_list(frame_str: str) -> Optional[List[int]]: function resize_image (line 210) | def resize_image(img: np.ndarray, scale: float) -> np.ndarray: function resize_images (line 226) | def resize_images(images: np.ndarray, scale: float) -> np.ndarray: function uniquify (line 232) | def uniquify(seq: Iterable[Hashable]) -> List: function weak_filename_match (line 251) | def weak_filename_match(filename_a: str, filename_b: str) -> bool: function dict_cut (line 275) | def dict_cut(d: Dict, a: int, b: int) -> Dict: function get_package_file (line 291) | def get_package_file(filename: str) -> str: function get_config_file (line 298) | def get_config_file( function get_config_yaml (line 352) | def get_config_yaml(shortname: str, get_defaults: bool = False) -> dict: function save_config_yaml (line 358) | def save_config_yaml(shortname: str, data: Any) -> dict: function make_scoped_dictionary (line 365) | def make_scoped_dictionary( function find_files_by_suffix (line 390) | def find_files_by_suffix( function parse_uri_path (line 426) | def parse_uri_path(uri: str) -> str: function imgfig (line 431) | def imgfig( function plot_img (line 461) | def plot_img( function plot_instance (line 500) | def plot_instance( function plot_instances (line 569) | def plot_instances( function show_sleap_nn_installation_message (line 610) | def show_sleap_nn_installation_message(): FILE: sleap/version.py function versions (line 17) | def versions(): FILE: tests/conftest.py function cleanup_qt_video_players (line 19) | def cleanup_qt_video_players(): function cleanup_all_threads (line 44) | def cleanup_all_threads(): FILE: tests/fixtures/datasets.py function centered_pair_labels (line 31) | def centered_pair_labels(): function centered_pair_predictions (line 38) | def centered_pair_predictions(): function centered_pair_predictions_sorted (line 45) | def centered_pair_predictions_sorted(centered_pair_predictions): function min_labels (line 52) | def min_labels(): function min_labels_slp (line 59) | def min_labels_slp(): function min_labels_slp_path (line 64) | def min_labels_slp_path(): function min_labels_robot (line 69) | def min_labels_robot(): function siv_robot (line 74) | def siv_robot(): function min_tracks_2node_labels (line 80) | def min_tracks_2node_labels(): function min_tracks_2node_predictions (line 85) | def min_tracks_2node_predictions(): function min_tracks_13node_labels (line 97) | def min_tracks_13node_labels(): function mat_labels (line 102) | def mat_labels(): function legacy_grid_labels_path (line 111) | def legacy_grid_labels_path(): function legacy_grid_labels (line 116) | def legacy_grid_labels(): function midpoint_grid_labels_path (line 121) | def midpoint_grid_labels_path(): function midpoint_grid_labels (line 126) | def midpoint_grid_labels(): function simple_predictions (line 131) | def simple_predictions(): function multi_skel_vid_labels (line 193) | def multi_skel_vid_labels(hdf5_vid, small_robot_mp4_vid, skeleton, stick... function centered_pair_predictions_hdf5_path (line 255) | def centered_pair_predictions_hdf5_path(): function minimal_instance_predictions_csv_path (line 260) | def minimal_instance_predictions_csv_path(): function centered_pair_predictions_slp_path (line 265) | def centered_pair_predictions_slp_path(): function min_dance_labels (line 270) | def min_dance_labels(): function movenet_video (line 275) | def movenet_video(): FILE: tests/fixtures/instances.py function instances (line 7) | def instances(skeleton, centered_pair_vid): function predicted_instances (line 33) | def predicted_instances(instances): function multi_skel_instances (line 41) | def multi_skel_instances(skeleton, stickman): FILE: tests/fixtures/models.py function min_centroid_model_path (line 5) | def min_centroid_model_path(): function min_centered_instance_model_path (line 10) | def min_centered_instance_model_path(): function min_centered_instance_with_scaling_model_path (line 15) | def min_centered_instance_with_scaling_model_path(): function min_bottomup_model_path (line 20) | def min_bottomup_model_path(): function min_single_instance_robot_model_path (line 25) | def min_single_instance_robot_model_path(): function min_bottomup_multiclass_model_path (line 30) | def min_bottomup_multiclass_model_path(): function min_topdown_multiclass_model_path (line 35) | def min_topdown_multiclass_model_path(): FILE: tests/fixtures/skeletons.py function fly_legs_skeleton_json (line 10) | def fly_legs_skeleton_json(): function fly_legs_skeleton_dict_json (line 19) | def fly_legs_skeleton_dict_json(): function stickman (line 28) | def stickman(): function skeleton (line 58) | def skeleton(): function flies13_skeleton (line 76) | def flies13_skeleton(): FILE: tests/fixtures/videos.py function small_robot_3_frame_hdf5 (line 17) | def small_robot_3_frame_hdf5(): function hdf5_file_path (line 22) | def hdf5_file_path(): function hdf5_vid (line 27) | def hdf5_vid(): function hdf5_confmaps (line 32) | def hdf5_confmaps(): function hdf5_affinity (line 41) | def hdf5_affinity(): function small_robot_mp4_path (line 54) | def small_robot_mp4_path(): function small_robot_mp4_vid (line 59) | def small_robot_mp4_vid() -> Video: function centered_pair_vid_path (line 64) | def centered_pair_vid_path(): function centered_pair_vid (line 69) | def centered_pair_vid() -> Video: function small_robot_single_image_vid (line 80) | def small_robot_single_image_vid(): function small_robot_3_frame_vid (line 90) | def small_robot_3_frame_vid(): FILE: tests/gui/learning/test_cli_construction.py function mock_video (line 29) | def mock_video(): function mock_video_with_backend (line 40) | def mock_video_with_backend(): function mock_labels (line 51) | def mock_labels(mock_video): class TestVideoItemForInferenceCLI (line 63) | class TestVideoItemForInferenceCLI: method test_basic_cli_args (line 66) | def test_basic_cli_args(self, mock_video): method test_cli_args_with_video_index (line 84) | def test_cli_args_with_video_index(self, mock_video): method test_cli_args_with_hdf5_backend (line 99) | def test_cli_args_with_hdf5_backend(self, mock_video_with_backend): method test_cli_args_frame_range (line 118) | def test_cli_args_frame_range(self, mock_video): method test_path_property_with_labels (line 135) | def test_path_property_with_labels(self, mock_video): method test_path_property_without_labels (line 146) | def test_path_property_without_labels(self, mock_video): class TestDatasetItemForInferenceCLI (line 163) | class TestDatasetItemForInferenceCLI: method test_user_labeled_frames_cli_args (line 166) | def test_user_labeled_frames_cli_args(self): method test_suggested_frames_cli_args (line 180) | def test_suggested_frames_cli_args(self): method test_path_property (line 193) | def test_path_property(self): method test_absolute_path (line 202) | def test_absolute_path(self): class TestItemsForInference (line 221) | class TestItemsForInference: method test_from_video_frames_dict (line 224) | def test_from_video_frames_dict(self, mock_video, mock_labels): method test_from_video_frames_dict_multiple_videos (line 239) | def test_from_video_frames_dict_multiple_videos(self, mock_labels): method test_from_video_frames_dict_skips_empty (line 269) | def test_from_video_frames_dict_skips_empty(self, mock_video, mock_lab... class TestInferenceTaskCLI (line 288) | class TestInferenceTaskCLI: method inference_task (line 292) | def inference_task(self, mock_labels): method video_item (line 302) | def video_item(self, mock_video): method test_basic_cli_call (line 311) | def test_basic_cli_call(self, inference_task, video_item): method test_batch_size_in_cli (line 327) | def test_batch_size_in_cli(self, inference_task, video_item): method test_max_instances_in_cli (line 339) | def test_max_instances_in_cli(self, inference_task, video_item): method test_max_instances_none_not_in_cli (line 351) | def test_max_instances_none_not_in_cli(self, inference_task, video_item): class TestTrackerCLI (line 367) | class TestTrackerCLI: method inference_task_with_tracker (line 371) | def inference_task_with_tracker(self, mock_labels): method video_item (line 389) | def video_item(self, mock_video): method test_tracker_none_no_tracking_args (line 398) | def test_tracker_none_no_tracking_args(self, mock_labels, video_item): method test_flow_tracker_cli_args (line 411) | def test_flow_tracker_cli_args(self, inference_task_with_tracker, vide... method test_simple_tracker_no_flow (line 426) | def test_simple_tracker_no_flow(self, mock_labels, video_item): method test_max_tracks_in_cli (line 448) | def test_max_tracks_in_cli(self, mock_labels, video_item): method test_post_connect_single_breaks_cli (line 474) | def test_post_connect_single_breaks_cli(self, mock_labels, video_item): method test_similarity_oks_cli (line 498) | def test_similarity_oks_cli(self, inference_task_with_tracker, video_i... method test_similarity_centroids_cli (line 511) | def test_similarity_centroids_cli(self, mock_labels, video_item): method test_similarity_iou_cli (line 537) | def test_similarity_iou_cli(self, mock_labels, video_item): method test_robust_quantile_cli (line 563) | def test_robust_quantile_cli(self, mock_labels, video_item): class TestModelPathHandling (line 595) | class TestModelPathHandling: method video_item (line 599) | def video_item(self, mock_video): method test_yaml_path_stripped_to_parent (line 608) | def test_yaml_path_stripped_to_parent(self, mock_labels, video_item): method test_json_path_stripped_to_parent (line 624) | def test_json_path_stripped_to_parent(self, mock_labels, video_item): method test_directory_path_unchanged (line 639) | def test_directory_path_unchanged(self, mock_labels, video_item): method test_multiple_model_paths (line 653) | def test_multiple_model_paths(self, mock_labels, video_item): class TestWritePipelineFiles (line 681) | class TestWritePipelineFiles: method test_train_script_does_not_contain_zmq (line 684) | def test_train_script_does_not_contain_zmq(self, tmp_path, mock_labels): class TestOutputPathGeneration (line 777) | class TestOutputPathGeneration: method video_item (line 781) | def video_item(self, mock_video): method test_explicit_output_path (line 790) | def test_explicit_output_path(self, mock_labels, video_item): method test_auto_output_path_includes_timestamp (line 808) | def test_auto_output_path_includes_timestamp(self, mock_labels, video_... class TestFullCLIIntegration (line 830) | class TestFullCLIIntegration: method test_full_inference_cli_with_all_options (line 833) | def test_full_inference_cli_with_all_options(self, mock_labels, mock_v... FILE: tests/gui/learning/test_config_bindings.py function training_widget (line 36) | def training_widget(qtbot): function inference_widget (line 49) | def inference_widget(qtbot): class TestPipelineFieldMapping (line 61) | class TestPipelineFieldMapping: method test_bottom_up_sigma_fields_mapping (line 64) | def test_bottom_up_sigma_fields_mapping(self, training_widget): method test_top_down_sigma_fields_mapping (line 81) | def test_top_down_sigma_fields_mapping(self, training_widget): method test_top_down_anchor_part_mapping (line 98) | def test_top_down_anchor_part_mapping(self, training_widget): method test_single_instance_sigma_mapping (line 119) | def test_single_instance_sigma_mapping(self, training_widget): method test_bottom_up_id_sigma_fields_mapping (line 131) | def test_bottom_up_id_sigma_fields_mapping(self, training_widget): method test_top_down_id_sigma_fields_mapping (line 152) | def test_top_down_id_sigma_fields_mapping(self, training_widget): class TestPerformanceFieldMapping (line 176) | class TestPerformanceFieldMapping: method test_accelerator_mapping (line 179) | def test_accelerator_mapping(self, training_widget): method test_devices_mapping (line 189) | def test_devices_mapping(self, training_widget): method test_devices_auto_mapping (line 199) | def test_devices_auto_mapping(self, training_widget): method test_num_workers_mapping (line 207) | def test_num_workers_mapping(self, training_widget): method test_data_pipeline_mapping (line 217) | def test_data_pipeline_mapping(self, training_widget): class TestWandBFieldMapping (line 233) | class TestWandBFieldMapping: method test_wandb_enable_mapping (line 236) | def test_wandb_enable_mapping(self, training_widget): method test_wandb_upload_viz_mapping (line 244) | def test_wandb_upload_viz_mapping(self, training_widget): method test_wandb_entity_mapping (line 254) | def test_wandb_entity_mapping(self, training_widget): method test_wandb_project_mapping (line 262) | def test_wandb_project_mapping(self, training_widget): method test_wandb_api_key_mapping (line 270) | def test_wandb_api_key_mapping(self, training_widget): method test_wandb_prv_runid_mapping (line 278) | def test_wandb_prv_runid_mapping(self, training_widget): method test_wandb_group_mapping (line 286) | def test_wandb_group_mapping(self, training_widget): class TestOutputFieldMapping (line 300) | class TestOutputFieldMapping: method test_run_name_mapping (line 303) | def test_run_name_mapping(self, training_widget): method test_ckpt_dir_mapping (line 311) | def test_ckpt_dir_mapping(self, training_widget): method test_save_best_mapping (line 319) | def test_save_best_mapping(self, training_widget): method test_save_latest_mapping (line 327) | def test_save_latest_mapping(self, training_widget): method test_visualize_mapping (line 335) | def test_visualize_mapping(self, training_widget): method test_keep_viz_mapping (line 345) | def test_keep_viz_mapping(self, training_widget): class TestPreprocessingFieldMapping (line 359) | class TestPreprocessingFieldMapping: method test_ensure_channels_mapping (line 362) | def test_ensure_channels_mapping(self, training_widget): method test_max_instances_mapping (line 372) | def test_max_instances_mapping(self, training_widget): method test_max_instances_disabled_mapping (line 381) | def test_max_instances_disabled_mapping(self, training_widget): class TestTrackerFieldMapping (line 395) | class TestTrackerFieldMapping: method test_tracker_type_mapping (line 398) | def test_tracker_type_mapping(self, inference_widget): method test_flow_tracker_max_tracks_mapping (line 408) | def test_flow_tracker_max_tracks_mapping(self, inference_widget): method test_flow_tracker_similarity_mapping (line 418) | def test_flow_tracker_similarity_mapping(self, inference_widget): method test_flow_tracker_match_mapping (line 435) | def test_flow_tracker_match_mapping(self, inference_widget): method test_flow_tracker_track_window_mapping (line 445) | def test_flow_tracker_track_window_mapping(self, inference_widget): method test_simple_tracker_fields_mapping (line 453) | def test_simple_tracker_fields_mapping(self, inference_widget): class TestFrameTargetFieldMapping (line 473) | class TestFrameTargetFieldMapping: method test_predict_target_mapping (line 476) | def test_predict_target_mapping(self, training_widget): method test_exclude_user_labeled_mapping (line 486) | def test_exclude_user_labeled_mapping(self, training_widget): method test_prediction_mode_mapping (line 496) | def test_prediction_mode_mapping(self, training_widget): method test_clear_all_first_mapping (line 506) | def test_clear_all_first_mapping(self, training_widget): class TestConfigTransforms (line 522) | class TestConfigTransforms: method _make_data (line 535) | def _make_data(self, **kwargs): method test_ensure_channels_rgb_transform (line 541) | def test_ensure_channels_rgb_transform(self): method test_ensure_channels_grayscale_transform (line 549) | def test_ensure_channels_grayscale_transform(self): method test_ensure_channels_none_transform (line 557) | def test_ensure_channels_none_transform(self): method test_data_pipeline_stream_transform (line 565) | def test_data_pipeline_stream_transform(self): method test_data_pipeline_cache_memory_transform (line 572) | def test_data_pipeline_cache_memory_transform(self): method test_data_pipeline_cache_disk_transform (line 579) | def test_data_pipeline_cache_disk_transform(self): method test_trainer_devices_auto_checked_sets_none (line 586) | def test_trainer_devices_auto_checked_sets_none(self): method test_trainer_devices_auto_unchecked_preserves_value (line 598) | def test_trainer_devices_auto_unchecked_preserves_value(self): method test_trainer_devices_auto_not_present_preserves_value (line 610) | def test_trainer_devices_auto_not_present_preserves_value(self): method test_rotation_preset_off_transform (line 617) | def test_rotation_preset_off_transform(self): method test_rotation_preset_15_transform (line 624) | def test_rotation_preset_15_transform(self): method test_rotation_preset_180_transform (line 633) | def test_rotation_preset_180_transform(self): method test_rotation_preset_custom_transform (line 642) | def test_rotation_preset_custom_transform(self): method test_scale_enabled_transform (line 651) | def test_scale_enabled_transform(self): method test_scale_disabled_transform (line 658) | def test_scale_disabled_transform(self): method test_uniform_noise_enabled_transform (line 665) | def test_uniform_noise_enabled_transform(self): method test_uniform_noise_disabled_transform (line 672) | def test_uniform_noise_disabled_transform(self): method test_gaussian_noise_enabled_transform (line 679) | def test_gaussian_noise_enabled_transform(self): method test_contrast_enabled_transform (line 686) | def test_contrast_enabled_transform(self): method test_brightness_enabled_transform (line 693) | def test_brightness_enabled_transform(self): method test_batch_size_synced_to_val (line 700) | def test_batch_size_synced_to_val(self): class TestFilterConfig (line 717) | class TestFilterConfig: method test_filter_removes_underscore_keys (line 720) | def test_filter_removes_underscore_keys(self): method test_filter_preserves_non_underscore_keys (line 742) | def test_filter_preserves_non_underscore_keys(self): class TestOmegaConfConversion (line 766) | class TestOmegaConfConversion: method test_flat_dict_to_omegaconf (line 769) | def test_flat_dict_to_omegaconf(self): method test_omegaconf_to_flat_dict (line 783) | def test_omegaconf_to_flat_dict(self): method test_roundtrip_conversion (line 803) | def test_roundtrip_conversion(self): class TestFullConfigPipeline (line 823) | class TestFullConfigPipeline: method test_training_widget_to_config (line 837) | def test_training_widget_to_config(self, training_widget): method test_inference_widget_to_config (line 864) | def test_inference_widget_to_config(self, inference_widget): method test_filtered_config_ready_for_sleap_nn (line 886) | def test_filtered_config_ready_for_sleap_nn(self, training_widget): class TestConfigLoadingReverseMapping (line 922) | class TestConfigLoadingReverseMapping: method test_rotation_preset_from_rotation_p (line 930) | def test_rotation_preset_from_rotation_p(self): method test_rotation_preset_fallback_to_affine_p (line 955) | def test_rotation_preset_fallback_to_affine_p(self): method test_scale_enabled_from_scale_p (line 1000) | def test_scale_enabled_from_scale_p(self): method test_scale_enabled_fallback_to_affine_p (line 1031) | def test_scale_enabled_fallback_to_affine_p(self): method test_scale_disabled_when_min_equals_max (line 1070) | def test_scale_disabled_when_min_equals_max(self): method test_rotation_off_when_affine_p_zero (line 1102) | def test_rotation_off_when_affine_p_zero(self): FILE: tests/gui/learning/test_edge_cases.py class TestSkeletonValidation (line 31) | class TestSkeletonValidation: method valid_arborescence_skeleton (line 35) | def valid_arborescence_skeleton(self): method skeleton_with_multiple_roots (line 44) | def skeleton_with_multiple_roots(self): method skeleton_with_cycle (line 53) | def skeleton_with_cycle(self): method skeleton_with_high_in_degree (line 63) | def skeleton_with_high_in_degree(self): method test_valid_arborescence (line 71) | def test_valid_arborescence(self, valid_arborescence_skeleton): method test_multiple_roots_not_arborescence (line 75) | def test_multiple_roots_not_arborescence(self, skeleton_with_multiple_... method test_cycle_not_arborescence (line 79) | def test_cycle_not_arborescence(self, skeleton_with_cycle): method test_high_in_degree_not_arborescence (line 83) | def test_high_in_degree_not_arborescence(self, skeleton_with_high_in_d... method test_root_nodes_single_root (line 87) | def test_root_nodes_single_root(self, valid_arborescence_skeleton): method test_root_nodes_multiple_roots (line 94) | def test_root_nodes_multiple_roots(self, skeleton_with_multiple_roots): method test_in_degree_over_one_valid (line 102) | def test_in_degree_over_one_valid(self, valid_arborescence_skeleton): method test_in_degree_over_one_invalid (line 107) | def test_in_degree_over_one_invalid(self, skeleton_with_high_in_degree): method test_cycles_none (line 114) | def test_cycles_none(self, valid_arborescence_skeleton): method test_cycles_found (line 119) | def test_cycles_found(self, skeleton_with_cycle): class TestBottomUpValidationInDialog (line 127) | class TestBottomUpValidationInDialog: method mock_cfg_getter (line 131) | def mock_cfg_getter(self): method test_validate_pipeline_bottom_up_invalid_skeleton (line 139) | def test_validate_pipeline_bottom_up_invalid_skeleton( method test_validate_pipeline_bottom_up_valid_skeleton (line 179) | def test_validate_pipeline_bottom_up_valid_skeleton( class TestConfigFileLoadingErrors (line 222) | class TestConfigFileLoadingErrors: method test_load_nonexistent_config_file (line 225) | def test_load_nonexistent_config_file(self): method test_load_malformed_yaml_config (line 235) | def test_load_malformed_yaml_config(self, tmp_path): method test_load_empty_config_file (line 249) | def test_load_empty_config_file(self, tmp_path): method test_config_info_is_loaded_property (line 261) | def test_config_info_is_loaded_property(self, tmp_path): method test_config_info_path_none (line 277) | def test_config_info_path_none(self): method test_quick_scan_yaml_invalid_file (line 285) | def test_quick_scan_yaml_invalid_file(self, tmp_path): method test_quick_scan_yaml_nonexistent_file (line 295) | def test_quick_scan_yaml_nonexistent_file(self): method test_quick_scan_yaml_valid_file (line 302) | def test_quick_scan_yaml_valid_file(self, tmp_path): method test_has_trained_model_no_checkpoint (line 322) | def test_has_trained_model_no_checkpoint(self, tmp_path): method test_has_trained_model_with_checkpoint (line 331) | def test_has_trained_model_with_checkpoint(self, tmp_path): class TestSubprocessErrorHandling (line 349) | class TestSubprocessErrorHandling: method mock_labels (line 353) | def mock_labels(self): method test_predict_subprocess_success (line 359) | def test_predict_subprocess_success(self, mock_labels, tmp_path): method test_predict_subprocess_failure (line 390) | def test_predict_subprocess_failure(self, mock_labels, tmp_path): method test_predict_subprocess_canceled (line 425) | def test_predict_subprocess_canceled(self, mock_labels, tmp_path): method test_train_subprocess_sleap_nn_not_installed (line 461) | def test_train_subprocess_sleap_nn_not_installed(self, mock_labels): method test_inference_task_json_parsing_error_handled (line 491) | def test_inference_task_json_parsing_error_handled(self, mock_labels, ... class TestAdditionalEdgeCases (line 534) | class TestAdditionalEdgeCases: method test_config_info_path_dir_yaml (line 537) | def test_config_info_path_dir_yaml(self, tmp_path): method test_config_info_path_dir_directory (line 547) | def test_config_info_path_dir_directory(self, tmp_path): method test_has_trained_model_cached (line 556) | def test_has_trained_model_cached(self, tmp_path): FILE: tests/gui/learning/test_integration.py function minimal_skeleton (line 26) | def minimal_skeleton(): function minimal_labels (line 35) | def minimal_labels(minimal_skeleton): function mock_cfg_getter (line 41) | def mock_cfg_getter(): function mock_prefs (line 51) | def mock_prefs(): function training_dialog (line 81) | def training_dialog(qtbot, minimal_labels, minimal_skeleton, tmp_path, m... class TestConfigAssembly (line 105) | class TestConfigAssembly: method test_merge_pipeline_and_head_config_data (line 108) | def test_merge_pipeline_and_head_config_data(self, training_dialog): method test_adjust_data_syncs_anchor_parts (line 135) | def test_adjust_data_syncs_anchor_parts(self, training_dialog): method test_adjust_data_centroid_anchor_syncs (line 162) | def test_adjust_data_centroid_anchor_syncs(self, training_dialog): method test_update_loaded_config (line 178) | def test_update_loaded_config(self, training_dialog): class TestConfigAssemblyWithTabs (line 198) | class TestConfigAssemblyWithTabs: method dialog_with_tabs (line 202) | def dialog_with_tabs( method test_tabs_initialized_for_pipeline (line 224) | def test_tabs_initialized_for_pipeline(self, dialog_with_tabs): method test_on_tab_data_change_updates_tabs (line 229) | def test_on_tab_data_change_updates_tabs(self, dialog_with_tabs): class TestTrainingPreferences (line 250) | class TestTrainingPreferences: method test_init_training_settings_loads_prefs (line 253) | def test_init_training_settings_loads_prefs(self, qtbot, mock_prefs): method test_save_training_preferences (line 278) | def test_save_training_preferences(self, qtbot, mock_prefs): method test_training_prefs_not_in_inference_mode (line 306) | def test_training_prefs_not_in_inference_mode(self, qtbot, mock_prefs): class TestFullWorkflow (line 322) | class TestFullWorkflow: method test_training_workflow_form_data_complete (line 325) | def test_training_workflow_form_data_complete(self, training_dialog): method test_inference_workflow_form_data_complete (line 346) | def test_inference_workflow_form_data_complete( method test_pipeline_switch_updates_form_data (line 377) | def test_pipeline_switch_updates_form_data(self, training_dialog): method test_frame_selection_to_items_for_inference (line 389) | def test_frame_selection_to_items_for_inference(self, training_dialog): class TestCrossComponentSignals (line 417) | class TestCrossComponentSignals: method test_pipeline_change_triggers_tab_update (line 420) | def test_pipeline_change_triggers_tab_update(self, training_dialog): method test_value_change_triggers_validation (line 435) | def test_value_change_triggers_validation(self, training_dialog): class TestDataPipelinePreferences (line 450) | class TestDataPipelinePreferences: method test_data_pipeline_values (line 453) | def test_data_pipeline_values(self, qtbot, mock_prefs): method test_data_pipeline_preference_loaded (line 470) | def test_data_pipeline_preference_loaded(self, qtbot, mock_prefs): class TestColorConversionIntegration (line 490) | class TestColorConversionIntegration: method test_ensure_channels_in_form_data (line 493) | def test_ensure_channels_in_form_data(self, qtbot, mock_prefs): FILE: tests/gui/learning/test_learning_dialog.py function minimal_skeleton (line 29) | def minimal_skeleton(): function minimal_labels (line 37) | def minimal_labels(minimal_skeleton): function mock_cfg_getter (line 43) | def mock_cfg_getter(): function training_dialog (line 53) | def training_dialog(qtbot, minimal_labels, minimal_skeleton, tmp_path, m... function inference_dialog (line 74) | def inference_dialog( class TestLearningDialogInstantiation (line 101) | class TestLearningDialogInstantiation: method test_training_mode_instantiation (line 104) | def test_training_mode_instantiation(self, training_dialog): method test_inference_mode_instantiation (line 111) | def test_inference_mode_instantiation(self, inference_dialog): method test_training_dialog_window_title (line 117) | def test_training_dialog_window_title(self, training_dialog): method test_inference_dialog_window_title (line 123) | def test_inference_dialog_window_title(self, inference_dialog): method test_pipeline_form_widget_is_main_tab (line 129) | def test_pipeline_form_widget_is_main_tab(self, training_dialog): method test_tab_widget_has_pipeline_tab (line 133) | def test_tab_widget_has_pipeline_tab(self, training_dialog): method test_training_dialog_has_buttons (line 140) | def test_training_dialog_has_buttons(self, training_dialog): method test_frame_target_selector_from_main_tab (line 148) | def test_frame_target_selector_from_main_tab(self, training_dialog): class TestPipelineSwitching (line 161) | class TestPipelineSwitching: method test_set_pipeline_top_down (line 164) | def test_set_pipeline_top_down(self, training_dialog): method test_set_pipeline_bottom_up (line 171) | def test_set_pipeline_bottom_up(self, training_dialog): method test_set_pipeline_single (line 177) | def test_set_pipeline_single(self, training_dialog): method test_set_pipeline_top_down_id (line 183) | def test_set_pipeline_top_down_id(self, training_dialog): method test_set_pipeline_bottom_up_id (line 190) | def test_set_pipeline_bottom_up_id(self, training_dialog): method test_pipeline_switch_removes_old_tabs (line 196) | def test_pipeline_switch_removes_old_tabs(self, training_dialog): method test_remove_tabs_keeps_first_tab (line 207) | def test_remove_tabs_keeps_first_tab(self, training_dialog): class TestTabManagement (line 226) | class TestTabManagement: method test_tabs_dict_initially_empty (line 229) | def test_tabs_dict_initially_empty(self, training_dialog): method test_add_tab_creates_widget (line 234) | def test_add_tab_creates_widget(self, training_dialog): method test_add_tab_is_idempotent (line 244) | def test_add_tab_is_idempotent(self, training_dialog): method test_ensure_tab_initialized_caches_widget (line 254) | def test_ensure_tab_initialized_caches_widget(self, training_dialog): class TestFrameSelection (line 269) | class TestFrameSelection: method test_frame_selection_initially_none (line 272) | def test_frame_selection_initially_none(self, training_dialog): method test_set_frame_selection_updates_selector (line 278) | def test_set_frame_selection_updates_selector(self, training_dialog): method test_count_total_frames_simple (line 288) | def test_count_total_frames_simple(self, training_dialog): method test_count_total_frames_range (line 295) | def test_count_total_frames_range(self, training_dialog): method test_count_total_frames_empty (line 303) | def test_count_total_frames_empty(self, training_dialog): method test_count_total_frames_none (line 308) | def test_count_total_frames_none(self, training_dialog): class TestValidation (line 319) | class TestValidation: method test_validate_pipeline_enables_run_button (line 322) | def test_validate_pipeline_enables_run_button(self, training_dialog): method test_validate_id_model_no_tracks (line 331) | def test_validate_id_model_no_tracks(self, training_dialog): method test_message_widget_exists (line 336) | def test_message_widget_exists(self, training_dialog): class TestSignalConnections (line 346) | class TestSignalConnections: method test_pipeline_update_signal_connected (line 349) | def test_pipeline_update_signal_connected(self, training_dialog): method test_disconnect_signals_no_error (line 355) | def test_disconnect_signals_no_error(self, training_dialog): method test_connect_signals_no_error (line 360) | def test_connect_signals_no_error(self, training_dialog): class TestGetFormData (line 371) | class TestGetFormData: method test_pipeline_form_data_available (line 374) | def test_pipeline_form_data_available(self, training_dialog): method test_get_selected_frames_to_predict_nothing (line 380) | def test_get_selected_frames_to_predict_nothing(self, training_dialog): method test_get_selected_frames_to_predict_with_selection (line 389) | def test_get_selected_frames_to_predict_with_selection(self, training_... class TestDefaultPipeline (line 408) | class TestDefaultPipeline: method test_get_most_recent_pipeline_trained_none (line 411) | def test_get_most_recent_pipeline_trained_none( method test_set_default_pipeline_single_instance (line 419) | def test_set_default_pipeline_single_instance(self, training_dialog): class TestModeDifferences (line 437) | class TestModeDifferences: method test_training_mode_pipeline_tab_label (line 440) | def test_training_mode_pipeline_tab_label(self, training_dialog): method test_inference_mode_pipeline_tab_label (line 446) | def test_inference_mode_pipeline_tab_label(self, inference_dialog): class TestTargetSelectionPreference (line 457) | class TestTargetSelectionPreference: method test_target_selection_user_changed_tracking (line 460) | def test_target_selection_user_changed_tracking(self, training_dialog): class TestTrainingEditorWidget (line 474) | class TestTrainingEditorWidget: method editor_widget (line 478) | def editor_widget(self, qtbot, minimal_skeleton, mock_cfg_getter): method test_editor_widget_instantiation (line 489) | def test_editor_widget_instantiation(self, editor_widget): method test_editor_widget_has_form_widgets (line 494) | def test_editor_widget_has_form_widgets(self, editor_widget): method test_editor_widget_training_mode_radios (line 500) | def test_editor_widget_training_mode_radios(self, editor_widget): method test_editor_widget_train_scratch_default (line 506) | def test_editor_widget_train_scratch_default(self, editor_widget): method test_editor_widget_resume_disabled_initially (line 510) | def test_editor_widget_resume_disabled_initially(self, editor_widget): method test_editor_widget_value_changed_signal (line 515) | def test_editor_widget_value_changed_signal(self, editor_widget, qtbot): method inference_editor_widget (line 521) | def inference_editor_widget(self, qtbot, minimal_skeleton, mock_cfg_ge... method test_inference_editor_no_training_radios (line 532) | def test_inference_editor_no_training_radios(self, inference_editor_wi... class TestAnchorPartSync (line 545) | class TestAnchorPartSync: method test_adjust_data_to_update_other_tabs_anchor (line 548) | def test_adjust_data_to_update_other_tabs_anchor(self, training_dialog): method test_adjust_data_empty_anchor_becomes_none (line 574) | def test_adjust_data_empty_anchor_becomes_none(self, training_dialog): class TestSigmaSync (line 595) | class TestSigmaSync: method test_centroid_sigma_reads_from_current_pipeline (line 604) | def test_centroid_sigma_reads_from_current_pipeline(self, training_dia... method test_pipeline_fields_stored_separately (line 634) | def test_pipeline_fields_stored_separately(self, training_dialog): method test_set_form_data_updates_all_pipelines (line 656) | def test_set_form_data_updates_all_pipelines(self, training_dialog): class TestButtonStates (line 678) | class TestButtonStates: method test_run_button_initial_state (line 681) | def test_run_button_initial_state(self, training_dialog): method test_buttons_have_tooltips (line 686) | def test_buttons_have_tooltips(self, training_dialog): class TestDialogSize (line 699) | class TestDialogSize: method test_training_dialog_size (line 702) | def test_training_dialog_size(self, training_dialog): method test_inference_dialog_size (line 708) | def test_inference_dialog_size(self, inference_dialog): FILE: tests/gui/learning/test_main_tab.py function training_widget (line 37) | def training_widget(qtbot): function training_widget_clean (line 45) | def training_widget_clean(qtbot): function inference_widget (line 58) | def inference_widget(qtbot): function training_widget_with_skeleton (line 66) | def training_widget_with_skeleton(qtbot, skeleton): class TestMainTabWidgetInstantiation (line 78) | class TestMainTabWidgetInstantiation: method test_training_mode_instantiation (line 81) | def test_training_mode_instantiation(self, training_widget): method test_inference_mode_instantiation (line 88) | def test_inference_mode_instantiation(self, inference_widget): method test_training_mode_has_correct_pipeline_count (line 95) | def test_training_mode_has_correct_pipeline_count(self, training_widget): method test_inference_mode_has_correct_pipeline_count (line 100) | def test_inference_mode_has_correct_pipeline_count(self, inference_wid... method test_training_mode_has_wandb_section (line 105) | def test_training_mode_has_wandb_section(self, training_widget): method test_inference_mode_no_wandb_section (line 111) | def test_inference_mode_no_wandb_section(self, inference_widget): method test_training_mode_has_output_section (line 116) | def test_training_mode_has_output_section(self, training_widget): method test_inference_mode_no_output_section (line 122) | def test_inference_mode_no_output_section(self, inference_widget): method test_training_mode_has_data_pipeline (line 127) | def test_training_mode_has_data_pipeline(self, training_widget): method test_inference_mode_no_data_pipeline (line 132) | def test_inference_mode_no_data_pipeline(self, inference_widget): method test_inference_mode_has_tracker_section (line 140) | def test_inference_mode_has_tracker_section(self, inference_widget): method test_training_mode_no_tracker_section (line 144) | def test_training_mode_no_tracker_section(self, training_widget): class TestPipelineSelection (line 154) | class TestPipelineSelection: method test_default_pipeline_is_bottom_up (line 157) | def test_default_pipeline_is_bottom_up(self, training_widget): method test_set_pipeline_by_short_name (line 162) | def test_set_pipeline_by_short_name(self, training_widget): method test_set_pipeline_single_animal (line 168) | def test_set_pipeline_single_animal(self, training_widget): method test_set_pipeline_id_variants (line 174) | def test_set_pipeline_id_variants(self, training_widget): method test_stacked_widget_follows_dropdown (line 182) | def test_stacked_widget_follows_dropdown(self, training_widget): method test_pipeline_change_emits_signal (line 193) | def test_pipeline_change_emits_signal(self, training_widget, qtbot): method test_invalid_pipeline_name_ignored (line 200) | def test_invalid_pipeline_name_ignored(self, training_widget): class TestPipelineSpecificFields (line 212) | class TestPipelineSpecificFields: method test_bottom_up_has_sigma_fields (line 215) | def test_bottom_up_has_sigma_fields(self, training_widget): method test_top_down_has_anchor_and_sigma_fields (line 225) | def test_top_down_has_anchor_and_sigma_fields(self, training_widget): method test_single_animal_has_sigma_field (line 240) | def test_single_animal_has_sigma_field(self, training_widget): method test_sigma_field_is_double_spinbox (line 247) | def test_sigma_field_is_double_spinbox(self, training_widget): method test_sigma_field_default_value (line 254) | def test_sigma_field_default_value(self, training_widget): method test_anchor_part_is_combobox (line 265) | def test_anchor_part_is_combobox(self, training_widget): method test_anchor_part_has_empty_option (line 272) | def test_anchor_part_has_empty_option(self, training_widget): method test_anchor_part_populated_from_skeleton (line 281) | def test_anchor_part_populated_from_skeleton( class TestFormData (line 300) | class TestFormData: method test_get_form_data_returns_dict (line 303) | def test_get_form_data_returns_dict(self, training_widget): method test_get_form_data_includes_pipeline (line 308) | def test_get_form_data_includes_pipeline(self, training_widget): method test_get_form_data_includes_all_fields (line 314) | def test_get_form_data_includes_all_fields(self, training_widget): method test_get_form_data_includes_frame_target (line 320) | def test_get_form_data_includes_frame_target(self, training_widget): method test_set_form_data_pipeline (line 327) | def test_set_form_data_pipeline(self, training_widget): method test_set_form_data_checkbox (line 332) | def test_set_form_data_checkbox(self, training_widget): method test_set_form_data_spinbox (line 341) | def test_set_form_data_spinbox(self, training_widget): method test_set_form_data_double_spinbox (line 351) | def test_set_form_data_double_spinbox(self, training_widget): method test_set_form_data_combobox (line 361) | def test_set_form_data_combobox(self, training_widget): method test_set_form_data_lineedit (line 367) | def test_set_form_data_lineedit(self, training_widget): method test_form_data_roundtrip (line 373) | def test_form_data_roundtrip(self, training_widget): class TestWidgetValues (line 394) | class TestWidgetValues: method test_get_checkbox_value (line 397) | def test_get_checkbox_value(self, training_widget): method test_get_spinbox_value (line 406) | def test_get_spinbox_value(self, training_widget): method test_get_double_spinbox_value (line 412) | def test_get_double_spinbox_value(self, training_widget): method test_get_combobox_value_with_data (line 420) | def test_get_combobox_value_with_data(self, training_widget): method test_get_lineedit_value (line 426) | def test_get_lineedit_value(self, training_widget): method test_get_lineedit_empty_returns_none (line 432) | def test_get_lineedit_empty_returns_none(self, training_widget): method test_get_lineedit_whitespace_returns_none (line 438) | def test_get_lineedit_whitespace_returns_none(self, training_widget): class TestCoupledFields (line 450) | class TestCoupledFields: method test_max_instances_disabled_by_default (line 453) | def test_max_instances_disabled_by_default(self, training_widget): method test_max_instances_enabled_when_unchecked (line 462) | def test_max_instances_enabled_when_unchecked(self, training_widget): method test_devices_auto_disabled_by_default (line 470) | def test_devices_auto_disabled_by_default(self, training_widget_clean): method test_devices_enabled_when_auto_unchecked (line 479) | def test_devices_enabled_when_auto_unchecked(self, training_widget): class TestTrackerSection (line 493) | class TestTrackerSection: method test_tracker_dropdown_options (line 496) | def test_tracker_dropdown_options(self, inference_widget): method test_tracker_default_is_none (line 504) | def test_tracker_default_is_none(self, inference_widget): method test_flow_tracker_fields_exist (line 509) | def test_flow_tracker_fields_exist(self, inference_widget): method test_simple_tracker_fields_exist (line 517) | def test_simple_tracker_fields_exist(self, inference_widget): method test_tracker_stack_switches_with_dropdown (line 525) | def test_tracker_stack_switches_with_dropdown(self, inference_widget): method test_tracker_max_tracks_disabled_by_default (line 538) | def test_tracker_max_tracks_disabled_by_default(self, inference_widget): method test_robust_fields_exist (line 548) | def test_robust_fields_exist(self, inference_widget): method test_robust_disabled_by_default (line 556) | def test_robust_disabled_by_default(self, inference_widget): method test_robust_default_value (line 566) | def test_robust_default_value(self, inference_widget): method test_robust_consolidation_in_form_data (line 572) | def test_robust_consolidation_in_form_data(self, inference_widget): method test_robust_disabled_sets_value_to_1 (line 585) | def test_robust_disabled_sets_value_to_1(self, inference_widget): class TestPerformanceSection (line 601) | class TestPerformanceSection: method test_accelerator_options (line 604) | def test_accelerator_options(self, training_widget): method test_accelerator_default_is_auto (line 613) | def test_accelerator_default_is_auto(self, training_widget_clean): method test_data_pipeline_options (line 618) | def test_data_pipeline_options(self, training_widget): method test_data_pipeline_default_is_cache_memory (line 626) | def test_data_pipeline_default_is_cache_memory(self, training_widget): method test_batch_size_exists_in_inference (line 631) | def test_batch_size_exists_in_inference(self, inference_widget): method test_batch_size_not_in_training (line 636) | def test_batch_size_not_in_training(self, training_widget): method test_batch_size_default_checkbox_checked (line 641) | def test_batch_size_default_checkbox_checked(self, inference_widget): method test_batch_size_spinbox_disabled_when_default (line 646) | def test_batch_size_spinbox_disabled_when_default(self, inference_widg... method test_batch_size_spinbox_enabled_when_unchecked (line 651) | def test_batch_size_spinbox_enabled_when_unchecked(self, inference_wid... method test_batch_size_not_in_form_data_when_default (line 659) | def test_batch_size_not_in_form_data_when_default(self, inference_widg... method test_batch_size_in_form_data_when_specified (line 664) | def test_batch_size_in_form_data_when_specified(self, inference_widget): class TestWandBSection (line 682) | class TestWandBSection: method test_wandb_enable_checkbox_exists (line 685) | def test_wandb_enable_checkbox_exists(self, training_widget): method test_wandb_fields_exist (line 691) | def test_wandb_fields_exist(self, training_widget): class TestOutputSection (line 711) | class TestOutputSection: method test_output_fields_exist (line 714) | def test_output_fields_exist(self, training_widget): method test_save_best_checked_by_default (line 727) | def test_save_best_checked_by_default(self, training_widget): method test_visualize_checked_by_default (line 732) | def test_visualize_checked_by_default(self, training_widget): method test_runs_folder_default_value (line 739) | def test_runs_folder_default_value(self, training_widget): class TestPreprocessingSection (line 750) | class TestPreprocessingSection: method test_max_instances_exists (line 753) | def test_max_instances_exists(self, training_widget): method test_ensure_channels_exists_in_training (line 758) | def test_ensure_channels_exists_in_training(self, training_widget): method test_ensure_channels_not_in_inference (line 762) | def test_ensure_channels_not_in_inference(self, inference_widget): method test_ensure_channels_options (line 767) | def test_ensure_channels_options(self, training_widget): class TestSignals (line 781) | class TestSignals: method test_value_changed_on_checkbox_toggle (line 784) | def test_value_changed_on_checkbox_toggle(self, training_widget, qtbot): method test_value_changed_on_spinbox_change (line 790) | def test_value_changed_on_spinbox_change(self, training_widget, qtbot): method test_value_changed_on_combobox_change (line 796) | def test_value_changed_on_combobox_change(self, training_widget, qtbot): method test_value_changed_on_lineedit_change (line 802) | def test_value_changed_on_lineedit_change(self, training_widget, qtbot): method test_update_pipeline_emits_on_change (line 808) | def test_update_pipeline_emits_on_change(self, training_widget, qtbot): class TestNodeOptions (line 819) | class TestNodeOptions: method test_set_node_options_populates_anchor_dropdowns (line 822) | def test_set_node_options_populates_anchor_dropdowns(self, training_wi... method test_set_node_options_preserves_selection (line 835) | def test_set_node_options_preserves_selection(self, training_widget): class TestFrameTargetSelectorIntegration (line 860) | class TestFrameTargetSelectorIntegration: method test_frame_target_selector_exists (line 863) | def test_frame_target_selector_exists(self, training_widget): method test_frame_target_in_training_mode (line 867) | def test_frame_target_in_training_mode(self, training_widget): method test_frame_target_in_inference_mode (line 871) | def test_frame_target_in_inference_mode(self, inference_widget): method test_frame_target_data_in_form_data (line 875) | def test_frame_target_data_in_form_data(self, training_widget): method test_frame_target_value_change_emits_signal (line 883) | def test_frame_target_value_change_emits_signal(self, training_widget,... FILE: tests/gui/learning/test_size.py class TestInstanceSizeInfo (line 10) | class TestInstanceSizeInfo: method test_no_rotation (line 13) | def test_no_rotation(self): method test_rotation_15_square (line 25) | def test_rotation_15_square(self): method test_rotation_45_square (line 42) | def test_rotation_45_square(self): method test_rotation_180_square (line 59) | def test_rotation_180_square(self): method test_rotation_90_square (line 76) | def test_rotation_90_square(self): method test_rotation_rectangular (line 92) | def test_rotation_rectangular(self): method test_negative_angle (line 112) | def test_negative_angle(self): method test_zero_size_instance (line 128) | def test_zero_size_instance(self): class TestComputeInstanceSizes (line 141) | class TestComputeInstanceSizes: method test_empty_labels (line 144) | def test_empty_labels(self, centered_pair_labels): method test_basic_computation (line 153) | def test_basic_computation(self, centered_pair_labels): method test_user_instances_only (line 166) | def test_user_instances_only(self, centered_pair_labels): method test_frame_idx_preserved (line 183) | def test_frame_idx_preserved(self, centered_pair_labels): FILE: tests/gui/test_app.py function test_app_workflow (line 16) | def test_app_workflow( function test_app_new_window (line 338) | def test_app_new_window(qtbot, min_labels_slp_path, centered_pair_predic... function test_menu_actions (line 397) | def test_menu_actions(qtbot, centered_pair_predictions: Labels): FILE: tests/gui/test_color.py function test_color_manager (line 4) | def test_color_manager(): function test_track_color (line 23) | def test_track_color(centered_pair_predictions): FILE: tests/gui/test_commands.py function test_delete_user_dialog (line 59) | def test_delete_user_dialog(centered_pair_predictions): function test_import_labels_from_dlc_folder (line 75) | def test_import_labels_from_dlc_folder(): function test_get_new_version_filename (line 118) | def test_get_new_version_filename(): function test_RemoveVideo (line 132) | def test_RemoveVideo( function test_ExportAnalysisFile (line 165) | def test_ExportAnalysisFile( function assert_video_params (line 356) | def assert_video_params( function test_ToggleGrayscale (line 383) | def test_ToggleGrayscale(centered_pair_predictions: Labels): function test_ReplaceVideo (line 402) | def test_ReplaceVideo( function test_exportNWB (line 454) | def test_exportNWB(centered_pair_predictions, tmpdir): function test_OpenSkeleton (line 508) | def test_OpenSkeleton( function test_DeleteNode_updates_instances (line 617) | def test_DeleteNode_updates_instances(centered_pair_predictions: Labels,... function test_DeleteNode_without_labels (line 686) | def test_DeleteNode_without_labels(): function test_NewNode_attaches_skeleton_to_labels (line 715) | def test_NewNode_attaches_skeleton_to_labels(): function test_NewNode_does_not_duplicate_skeleton (line 732) | def test_NewNode_does_not_duplicate_skeleton(): function test_NewNode_persists_skeleton_across_save_reload (line 746) | def test_NewNode_persists_skeleton_across_save_reload(tmpdir): function test_NewNode_without_labels (line 767) | def test_NewNode_without_labels(): function test_NewEdge_attaches_skeleton_to_labels (line 779) | def test_NewEdge_attaches_skeleton_to_labels(): function test_SaveProjectAs (line 798) | def test_SaveProjectAs(centered_pair_predictions: Labels, tmpdir): function test_SetSelectedInstanceTrack (line 813) | def test_SetSelectedInstanceTrack(centered_pair_predictions: Labels): function test_DeleteMultipleTracks (line 846) | def test_DeleteMultipleTracks(min_tracks_2node_labels: Labels): function test_CopyInstance (line 868) | def test_CopyInstance(min_tracks_2node_labels: Labels): function test_PasteInstance (line 887) | def test_PasteInstance(min_tracks_2node_labels: Labels): function test_CopyInstanceTrack (line 1008) | def test_CopyInstanceTrack(min_tracks_2node_labels: Labels): function test_PasteInstanceTrack (line 1031) | def test_PasteInstanceTrack(min_tracks_2node_labels: Labels): function test_LoadProjectFile (line 1074) | def test_LoadProjectFile( function test_DeleteFrameLimitPredictions (line 1131) | def test_DeleteFrameLimitPredictions( function test_exportLabelsPackage (line 1152) | def test_exportLabelsPackage(export_extension, centered_pair_labels: Lab... function test_newInstance (line 1239) | def test_newInstance(qtbot, centered_pair_predictions: Labels): function test_ExportLabelsSubset (line 1339) | def test_ExportLabelsSubset( function test_remove_video_uses_identity_not_content_matching (line 1482) | def test_remove_video_uses_identity_not_content_matching(centered_pair_p... FILE: tests/gui/test_conf_maps_view.py function test_gui_conf_maps (line 5) | def test_gui_conf_maps(qtbot, hdf5_confmaps): FILE: tests/gui/test_dataviews.py function test_skeleton_nodes (line 4) | def test_skeleton_nodes(qtbot, centered_pair_predictions): function test_table_sort (line 41) | def test_table_sort(qtbot, centered_pair_predictions): function test_table_sort_string (line 77) | def test_table_sort_string(qtbot): FILE: tests/gui/test_delete.py function test_delete_user_dialog (line 5) | def test_delete_user_dialog(centered_pair_labels, qtbot): function test_delete_predictions_dialog (line 25) | def test_delete_predictions_dialog(centered_pair_predictions, qtbot): function test_delete_all (line 50) | def test_delete_all(centered_pair_predictions, qtbot): FILE: tests/gui/test_dialogs.py function test_ReplaceSkeletonTableDialog (line 11) | def test_ReplaceSkeletonTableDialog( FILE: tests/gui/test_filedialog.py function test_non_native_dialog (line 9) | def test_non_native_dialog(): FILE: tests/gui/test_formbuilder.py function test_formbuilder_dialog (line 6) | def test_formbuilder_dialog(qtbot): function test_formbuilder (line 16) | def test_formbuilder(qtbot): function test_optional_spin_widget (line 70) | def test_optional_spin_widget(qtbot): function test_auto_double_widget (line 86) | def test_auto_double_widget(qtbot): function test_text_or_list_widget (line 108) | def test_text_or_list_widget(qtbot): function test_string_list_widget (line 125) | def test_string_list_widget(qtbot): FILE: tests/gui/test_grid_system.py function test_grid_system_midpoint_gui (line 6) | def test_grid_system_midpoint_gui(qtbot, midpoint_grid_labels): function test_grid_system_legacy_gui (line 42) | def test_grid_system_legacy_gui(qtbot, legacy_grid_labels): function test_grid_system_midpoint_labels (line 83) | def test_grid_system_midpoint_labels(midpoint_grid_labels): function test_grid_system_legacy_labels (line 90) | def test_grid_system_legacy_labels(legacy_grid_labels): FILE: tests/gui/test_imagedir_widget.py function test_imagedir_widget (line 4) | def test_imagedir_widget(qtbot): FILE: tests/gui/test_import.py function test_gui_import (line 6) | def test_gui_import(qtbot): function test_video_import_detect_grayscale (line 39) | def test_video_import_detect_grayscale(): function test_video_import_detect_h5_shape (line 52) | def test_video_import_detect_h5_shape(): FILE: tests/gui/test_merge.py function test_count_string (line 14) | def test_count_string(simple_predictions): class TestLabelsMergeAPI (line 19) | class TestLabelsMergeAPI: method base_labels (line 23) | def base_labels(self): method new_labels_same_video (line 39) | def new_labels_same_video(self, base_labels): method test_merge_frame_keep_both (line 57) | def test_merge_frame_keep_both(self, base_labels, new_labels_same_video): method test_merge_frame_replace_predictions (line 76) | def test_merge_frame_replace_predictions(self, base_labels, new_labels... method test_merge_frame_auto (line 94) | def test_merge_frame_auto(self, base_labels, new_labels_same_video): class TestInferenceResultMerging (line 105) | class TestInferenceResultMerging: method labels_with_predictions (line 109) | def labels_with_predictions(self, centered_pair_predictions): method test_merge_results_add_mode (line 115) | def test_merge_results_add_mode(self, labels_with_predictions): method test_merge_results_replace_mode (line 155) | def test_merge_results_replace_mode(self, labels_with_predictions): method test_merge_results_clear_all_first (line 186) | def test_merge_results_clear_all_first(self, labels_with_predictions): method test_merge_results_removes_empty_instances (line 221) | def test_merge_results_removes_empty_instances(self, labels_with_predi... class TestImportDLCFolderMerge (line 259) | class TestImportDLCFolderMerge: method test_import_multiple_dlc_files_merges_correctly (line 262) | def test_import_multiple_dlc_files_merges_correctly(self): method test_import_single_dlc_file_no_merge (line 281) | def test_import_single_dlc_file_no_merge(self): FILE: tests/gui/test_missingfiles.py function test_missing_gui (line 4) | def test_missing_gui(qtbot): FILE: tests/gui/test_missingfiles_sequences.py class TestFindPathUsingPaths (line 9) | class TestFindPathUsingPaths: method test_find_path_with_list_returns_unchanged (line 12) | def test_find_path_with_list_returns_unchanged(self): method test_find_path_with_string_searches_directories (line 25) | def test_find_path_with_string_searches_directories(self): method test_find_path_returns_original_if_not_found (line 39) | def test_find_path_returns_original_if_not_found(self): class TestFixPathsWithSavedPrefixSequences (line 52) | class TestFixPathsWithSavedPrefixSequences: method test_fix_paths_with_image_sequence (line 55) | def test_fix_paths_with_image_sequence(self): method test_fix_paths_with_empty_sequence (line 82) | def test_fix_paths_with_empty_sequence(self): method test_fix_paths_with_empty_first_frame (line 98) | def test_fix_paths_with_empty_first_frame(self): method test_fix_paths_sequence_not_missing (line 113) | def test_fix_paths_sequence_not_missing(self): method test_fix_paths_regular_video_not_missing_no_missing_list (line 128) | def test_fix_paths_regular_video_not_missing_no_missing_list(self): method test_fix_paths_none_conversions (line 142) | def test_fix_paths_none_conversions(self): class TestVideoCallbackSequences (line 157) | class TestVideoCallbackSequences: method test_video_callback_detects_image_sequences (line 160) | def test_video_callback_detects_image_sequences(self): method test_video_callback_search_path_finds_file (line 189) | def test_video_callback_search_path_finds_file(self): method test_video_callback_only_replaces_changed_filenames (line 210) | def test_video_callback_only_replaces_changed_filenames(self): method test_video_callback_empty_sequence (line 228) | def test_video_callback_empty_sequence(self): method test_video_callback_path_object_in_sequence (line 244) | def test_video_callback_path_object_in_sequence(self): class TestFilenamesPrefixChangeSequences (line 266) | class TestFilenamesPrefixChangeSequences: method test_prefix_change_with_sequence (line 269) | def test_prefix_change_with_sequence(self): method test_prefix_change_sequence_first_frame_not_found (line 293) | def test_prefix_change_sequence_first_frame_not_found(self): method test_prefix_change_handles_non_list_original_filename (line 315) | def test_prefix_change_handles_non_list_original_filename(self): method test_prefix_change_no_original_filenames (line 336) | def test_prefix_change_no_original_filenames(self): method test_prefix_change_empty_filenames (line 350) | def test_prefix_change_empty_filenames(self): method test_prefix_change_empty_old_prefix (line 358) | def test_prefix_change_empty_old_prefix(self): method test_prefix_change_empty_new_prefix (line 366) | def test_prefix_change_empty_new_prefix(self): class TestMissingFilesDialogSequences (line 375) | class TestMissingFilesDialogSequences: method test_dialog_init_with_sequences (line 378) | def test_dialog_init_with_sequences(self, qtbot): method test_dialog_init_defaults (line 396) | def test_dialog_init_defaults(self, qtbot): method test_set_filename_calls_prefix_change_with_sequence_params (line 410) | def test_set_filename_calls_prefix_change_with_sequence_params(self, q... method test_locate_file_sequence_caption (line 433) | def test_locate_file_sequence_caption(self, qtbot): method test_locate_file_regular_video_caption (line 453) | def test_locate_file_regular_video_caption(self, qtbot): method test_locate_file_with_new_file_selection (line 472) | def test_locate_file_with_new_file_selection(self, qtbot): method test_locate_file_duplicate_prevention (line 494) | def test_locate_file_duplicate_prevention(self, qtbot): method test_locate_file_sequence_allows_duplicates (line 523) | def test_locate_file_sequence_allows_duplicates(self, qtbot): class TestIntegration (line 547) | class TestIntegration: method test_real_image_video_loading (line 550) | def test_real_image_video_loading(self, small_robot_single_image_vid): FILE: tests/gui/test_monitor.py function test_monitor_release (line 4) | def test_monitor_release(qtbot, min_centroid_model_path): FILE: tests/gui/test_multicheck.py function test_gui_video (line 6) | def test_gui_video(qtbot): FILE: tests/gui/test_quiver.py function test_gui_quiver (line 5) | def test_gui_quiver(qtbot, hdf5_affinity): FILE: tests/gui/test_render_clip.py function _skeleton (line 19) | def _skeleton() -> sio.Skeleton: function _pred (line 23) | def _pred(skel: sio.Skeleton, xy: tuple[float, float]) -> sio.PredictedI... function _user (line 28) | def _user( function test_labels_with_visible_instances_hides_used_predictions (line 40) | def test_labels_with_visible_instances_hides_used_predictions(): function test_labels_with_visible_instances_uses_track_when_present (line 107) | def test_labels_with_visible_instances_uses_track_when_present(): function test_labels_with_visible_instances_preserves_top_level_state (line 134) | def test_labels_with_visible_instances_preserves_top_level_state(): function test_get_frame_indices_sorts_output (line 158) | def test_get_frame_indices_sorts_output(centered_pair_predictions): function test_match_source_fps_checkbox (line 196) | def test_match_source_fps_checkbox(centered_pair_predictions): FILE: tests/gui/test_shortcuts.py function test_shortcuts (line 6) | def test_shortcuts(): FILE: tests/gui/test_slider.py function test_slider (line 4) | def test_slider(qtbot, centered_pair_predictions): FILE: tests/gui/test_state.py function test_gui_state (line 6) | def test_gui_state(): function test_gui_state_bool (line 63) | def test_gui_state_bool(): function test_gui_state_delete (line 75) | def test_gui_state_delete(): function test_gui_state_get_default (line 87) | def test_gui_state_get_default(): function test_gui_state_inc_default (line 94) | def test_gui_state_inc_default(): function test_gui_state_list (line 104) | def test_gui_state_list(): function test_gui_state_callbacks (line 132) | def test_gui_state_callbacks(): FILE: tests/gui/test_suggestions.py function test_velocity_suggestions (line 11) | def test_velocity_suggestions(centered_pair_predictions): function test_max_point_displacement_suggestions (line 26) | def test_max_point_displacement_suggestions(centered_pair_predictions): function test_frame_increment (line 40) | def test_frame_increment(centered_pair_predictions: Labels): function test_video_selection (line 98) | def test_video_selection( function assert_suggestions_unique (line 259) | def assert_suggestions_unique(labels: Labels, new_suggestions: List[Sugg... function test_append_suggestions (line 265) | def test_append_suggestions(small_robot_3_frame_vid: Video, stickman: Sk... function test_limits_prediction_score (line 493) | def test_limits_prediction_score(centered_pair_predictions: Labels): FILE: tests/gui/test_tracks.py function test_track_trails (line 4) | def test_track_trails(centered_pair_predictions): FILE: tests/gui/test_update_checker.py function clear_cache (line 22) | def clear_cache(): class TestPackagesConfig (line 29) | class TestPackagesConfig: method test_packages_contains_expected_packages (line 32) | def test_packages_contains_expected_packages(self): method test_packages_have_valid_structure (line 38) | def test_packages_have_valid_structure(self): class TestVersionComparison (line 49) | class TestVersionComparison: method test_version_comparison (line 66) | def test_version_comparison( class TestUpdateFetchWorker (line 80) | class TestUpdateFetchWorker: method test_worker_initialization (line 83) | def test_worker_initialization(self): method test_worker_fetches_versions_and_branches (line 89) | def test_worker_fetches_versions_and_branches(self, mock_get, qtbot): method test_worker_handles_api_error (line 151) | def test_worker_handles_api_error(self, mock_get, qtbot): function mock_dialog_fetch (line 176) | def mock_dialog_fetch(): class TestUpdateCheckerDialog (line 235) | class TestUpdateCheckerDialog: method test_dialog_creation (line 238) | def test_dialog_creation(self, qtbot, mock_dialog_fetch): method test_dialog_table_structure (line 245) | def test_dialog_table_structure(self, qtbot, mock_dialog_fetch): method test_dialog_has_buttons (line 264) | def test_dialog_has_buttons(self, qtbot, mock_dialog_fetch): method test_dialog_has_tip_label (line 274) | def test_dialog_has_tip_label(self, qtbot, mock_dialog_fetch): method test_dialog_populates_installed_versions (line 282) | def test_dialog_populates_installed_versions(self, qtbot, mock_dialog_... method test_dialog_handles_missing_package (line 297) | def test_dialog_handles_missing_package(self, qtbot, mock_dialog_fetch): method test_on_version_fetched_shows_upgrade_available (line 316) | def test_on_version_fetched_shows_upgrade_available(self, qtbot, mock_... method test_on_version_fetched_shows_up_to_date (line 335) | def test_on_version_fetched_shows_up_to_date(self, qtbot, mock_dialog_... method test_on_version_fetched_shows_bleeding_edge (line 353) | def test_on_version_fetched_shows_bleeding_edge(self, qtbot, mock_dial... method test_on_branch_fetched_shows_commits_ahead (line 371) | def test_on_branch_fetched_shows_commits_ahead(self, qtbot, mock_dialo... method test_on_branch_fetched_shows_dash_when_no_commits (line 385) | def test_on_branch_fetched_shows_dash_when_no_commits( method test_on_all_fetches_finished_enables_refresh (line 399) | def test_on_all_fetches_finished_enables_refresh(self, qtbot, mock_dia... method test_refresh_button_triggers_fetch (line 409) | def test_refresh_button_triggers_fetch(self, qtbot, mock_dialog_fetch): method test_double_click_stores_url_data (line 419) | def test_double_click_stores_url_data(self, qtbot, mock_dialog_fetch): FILE: tests/gui/test_video_player.py function test_gui_video (line 14) | def test_gui_video(qtbot): function test_gui_video_instances (line 22) | def test_gui_video_instances(qtbot, small_robot_mp4_vid, centered_pair_l... function test_getInstancesBoundingRect (line 86) | def test_getInstancesBoundingRect(): function test_QtTextWithBackground (line 91) | def test_QtTextWithBackground(qtbot): function test_VisibleBoundingBox (line 110) | def test_VisibleBoundingBox(qtbot, centered_pair_labels): function test_wheelEvent (line 143) | def test_wheelEvent(qtbot): function test_nan_coordinates_bounding_rect (line 178) | def test_nan_coordinates_bounding_rect(qtbot, centered_pair_labels): function test_navigate_highlight (line 232) | def test_navigate_highlight(qtbot, small_robot_mp4_vid, centered_pair_la... FILE: tests/gui/test_web.py function test_get_analytics_data (line 4) | def test_get_analytics_data(): FILE: tests/gui/widgets/test_docks.py function test_videos_dock (line 19) | def test_videos_dock( function test_skeleton_dock (line 78) | def test_skeleton_dock(qtbot): function test_suggestions_dock (line 95) | def test_suggestions_dock(qtbot): function test_instances_dock (line 105) | def test_instances_dock(qtbot, centered_pair_predictions: Labels): FILE: tests/gui/widgets/test_frame_target_selector.py function training_selector (line 21) | def training_selector(qtbot): function inference_selector (line 29) | def inference_selector(qtbot): class TestFrameTargetSelectorInstantiation (line 41) | class TestFrameTargetSelectorInstantiation: method test_training_mode_instantiation (line 44) | def test_training_mode_instantiation(self, training_selector): method test_inference_mode_instantiation (line 51) | def test_inference_mode_instantiation(self, inference_selector): method test_training_mode_has_10_options (line 56) | def test_training_mode_has_10_options(self, training_selector): method test_inference_mode_has_9_options (line 60) | def test_inference_mode_has_9_options(self, inference_selector): method test_training_mode_includes_nothing (line 64) | def test_training_mode_includes_nothing(self, training_selector): method test_inference_mode_excludes_nothing (line 72) | def test_inference_mode_excludes_nothing(self, inference_selector): method test_default_target_is_frame (line 80) | def test_default_target_is_frame(self, training_selector): method test_group_box_title (line 85) | def test_group_box_title(self, inference_selector): class TestTargetOptions (line 95) | class TestTargetOptions: method test_all_training_options_present (line 98) | def test_all_training_options_present(self, training_selector): method test_all_inference_options_present (line 118) | def test_all_inference_options_present(self, inference_selector): method test_options_have_labels (line 137) | def test_options_have_labels(self, training_selector): method test_option_labels_match_keys (line 143) | def test_option_labels_match_keys(self, training_selector): class TestSelection (line 168) | class TestSelection: method test_get_selection_returns_dataclass (line 171) | def test_get_selection_returns_dataclass(self, training_selector): method test_get_selection_default_values (line 176) | def test_get_selection_default_values(self, inference_selector): method test_set_selection_target_key (line 185) | def test_set_selection_target_key(self, training_selector): method test_set_selection_exclude_user_labeled (line 192) | def test_set_selection_exclude_user_labeled(self, training_selector): method test_set_selection_clear_all_first (line 198) | def test_set_selection_clear_all_first(self, training_selector): method test_set_selection_replace_mode (line 204) | def test_set_selection_replace_mode(self, training_selector): method test_set_selection_keep_mode (line 210) | def test_set_selection_keep_mode(self, training_selector): method test_selection_roundtrip (line 216) | def test_selection_roundtrip(self, training_selector): class TestPredictionModeRadios (line 237) | class TestPredictionModeRadios: method test_default_is_replace (line 240) | def test_default_is_replace(self, training_selector): method test_clear_all_selection (line 246) | def test_clear_all_selection(self, training_selector): method test_replace_selection (line 253) | def test_replace_selection(self, training_selector): method test_keep_selection (line 260) | def test_keep_selection(self, training_selector): method test_radios_are_mutually_exclusive (line 270) | def test_radios_are_mutually_exclusive(self, training_selector): class TestSkipCheckbox (line 286) | class TestSkipCheckbox: method test_skip_checkbox_default_unchecked (line 289) | def test_skip_checkbox_default_unchecked(self, training_selector): method test_skip_checkbox_affects_selection (line 293) | def test_skip_checkbox_affects_selection(self, training_selector): class TestFormData (line 309) | class TestFormData: method test_get_form_data_returns_dict (line 312) | def test_get_form_data_returns_dict(self, training_selector): method test_get_form_data_has_all_keys (line 317) | def test_get_form_data_has_all_keys(self, training_selector): method test_get_form_data_keys_have_underscore_prefix (line 330) | def test_get_form_data_keys_have_underscore_prefix(self, training_sele... method test_get_form_data_default_values (line 336) | def test_get_form_data_default_values(self, inference_selector): method test_get_form_data_after_changes (line 345) | def test_get_form_data_after_changes(self, training_selector): class TestFrameCount (line 367) | class TestFrameCount: method test_update_option_frame_count (line 370) | def test_update_option_frame_count(self, training_selector): method test_frame_count_in_description_singular (line 375) | def test_frame_count_in_description_singular(self, training_selector): method test_frame_count_in_description_plural (line 384) | def test_frame_count_in_description_plural(self, training_selector): method test_frame_count_formatted_with_commas (line 393) | def test_frame_count_formatted_with_commas(self, training_selector): method test_nothing_option_no_frame_count (line 402) | def test_nothing_option_no_frame_count(self, training_selector): class TestSignals (line 416) | class TestSignals: method test_value_changed_on_target_change (line 419) | def test_value_changed_on_target_change(self, training_selector, qtbot): method test_value_changed_on_skip_checkbox_toggle (line 424) | def test_value_changed_on_skip_checkbox_toggle(self, training_selector... method test_value_changed_on_prediction_mode_change (line 429) | def test_value_changed_on_prediction_mode_change(self, training_select... class TestModeSwitching (line 442) | class TestModeSwitching: method test_get_mode (line 445) | def test_get_mode(self, training_selector, inference_selector): method test_set_mode_training_to_inference (line 450) | def test_set_mode_training_to_inference(self, training_selector): method test_set_mode_inference_to_training (line 462) | def test_set_mode_inference_to_training(self, inference_selector): method test_set_mode_same_mode_no_change (line 478) | def test_set_mode_same_mode_no_change(self, training_selector): class TestCustomOptions (line 490) | class TestCustomOptions: method test_set_options_replaces_dropdown (line 493) | def test_set_options_replaces_dropdown(self, training_selector): method test_set_options_with_frame_counts (line 506) | def test_set_options_with_frame_counts(self, training_selector): method test_set_options_respects_training_only (line 521) | def test_set_options_respects_training_only(self, inference_selector): class TestUIConfiguration (line 548) | class TestUIConfiguration: method test_set_title (line 551) | def test_set_title(self, training_selector): method test_set_compact_mode_no_error (line 556) | def test_set_compact_mode_no_error(self, training_selector): method test_apply_compact_styling_no_error (line 562) | def test_apply_compact_styling_no_error(self, training_selector): method test_setup_for_side_panel_no_error (line 567) | def test_setup_for_side_panel_no_error(self, training_selector): class TestEdgeCases (line 578) | class TestEdgeCases: method test_set_selection_invalid_target_key (line 581) | def test_set_selection_invalid_target_key(self, training_selector): method test_update_frame_count_invalid_key (line 589) | def test_update_frame_count_invalid_key(self, training_selector): method test_empty_options_dict (line 594) | def test_empty_options_dict(self, training_selector): method test_description_updates_on_selection_change (line 599) | def test_description_updates_on_selection_change(self, training_select... method test_suggestions_auto_configures_replace_and_skip (line 615) | def test_suggestions_auto_configures_replace_and_skip(self, inference_... method test_user_labeled_auto_unchecks_skip (line 631) | def test_user_labeled_auto_unchecks_skip(self, inference_selector): class TestFrameTargetOption (line 650) | class TestFrameTargetOption: method test_option_default_values (line 653) | def test_option_default_values(self): method test_option_custom_values (line 660) | def test_option_custom_values(self): class TestFrameTargetSelection (line 680) | class TestFrameTargetSelection: method test_selection_default_values (line 683) | def test_selection_default_values(self): method test_selection_custom_values (line 692) | def test_selection_custom_values(self): FILE: tests/gui/widgets/test_qc.py class MockQCFlag (line 10) | class MockQCFlag: method __init__ (line 13) | def __init__( class TestQCFlagTableModel (line 26) | class TestQCFlagTableModel: method test_columns (line 29) | def test_columns(self): method test_empty_model (line 38) | def test_empty_model(self): method test_data_display_role (line 44) | def test_data_display_role(self): method test_items_setter (line 79) | def test_items_setter(self): method test_header_data (line 89) | def test_header_data(self): method test_sort_by_frame (line 96) | def test_sort_by_frame(self): method test_sort_by_score (line 118) | def test_sort_by_score(self): method test_sort_by_confidence (line 140) | def test_sort_by_confidence(self): class TestQCWidget (line 163) | class TestQCWidget: method test_widget_creation (line 166) | def test_widget_creation(self, qtbot): method test_widget_has_controls (line 173) | def test_widget_has_controls(self, qtbot): method test_threshold_slider_default (line 184) | def test_threshold_slider_default(self, qtbot): method test_threshold_slider_range (line 190) | def test_threshold_slider_range(self, qtbot): method test_threshold_label_updates (line 197) | def test_threshold_label_updates(self, qtbot): method test_set_labels (line 204) | def test_set_labels(self, qtbot): method test_run_analysis_no_labels (line 216) | def test_run_analysis_no_labels(self, qtbot): method test_stats_no_labels (line 226) | def test_stats_no_labels(self, qtbot): method test_stats_with_labels_before_analysis (line 234) | def test_stats_with_labels_before_analysis(self, qtbot): method test_navigate_signal_emitted (line 255) | def test_navigate_signal_emitted(self, qtbot): method test_has_results_property (line 282) | def test_has_results_property(self, qtbot): class TestQCDialog (line 289) | class TestQCDialog: method test_dialog_creation (line 292) | def test_dialog_creation(self, qtbot): method test_dialog_has_widget (line 304) | def test_dialog_has_widget(self, qtbot): method test_dialog_navigate_callback (line 317) | def test_dialog_navigate_callback(self, qtbot): method test_dialog_is_non_modal (line 340) | def test_dialog_is_non_modal(self, qtbot): class TestQCDockWidget (line 353) | class TestQCDockWidget: method test_dock_widget_is_dockable (line 356) | def test_dock_widget_is_dockable(self, qtbot): method test_dock_widget_starts_docked (line 369) | def test_dock_widget_starts_docked(self, qtbot): method test_dock_widget_allowed_areas (line 390) | def test_dock_widget_allowed_areas(self, qtbot): method test_dock_widget_has_suggestions_button (line 405) | def test_dock_widget_has_suggestions_button(self, qtbot): method test_dock_widget_has_dock_button (line 418) | def test_dock_widget_has_dock_button(self, qtbot): method test_dock_button_toggles_state (line 432) | def test_dock_button_toggles_state(self, qtbot): class TestExportToSuggestions (line 467) | class TestExportToSuggestions: method test_export_no_results (line 470) | def test_export_no_results(self, qtbot): method test_export_no_labels (line 480) | def test_export_no_labels(self, qtbot): method test_export_no_flagged_instances (line 494) | def test_export_no_flagged_instances(self, qtbot): method test_export_creates_suggestions (line 510) | def test_export_creates_suggestions(self, qtbot): method test_export_skips_existing_suggestions (line 540) | def test_export_skips_existing_suggestions(self, qtbot): class TestQCNavigation (line 574) | class TestQCNavigation: method test_has_flags_property_no_items (line 577) | def test_has_flags_property_no_items(self, qtbot): method test_has_flags_property_with_items (line 583) | def test_has_flags_property_with_items(self, qtbot): method test_goto_next_flag_no_items (line 591) | def test_goto_next_flag_no_items(self, qtbot): method test_goto_next_flag_advances_selection (line 597) | def test_goto_next_flag_advances_selection(self, qtbot): method test_goto_prev_flag_no_items (line 630) | def test_goto_prev_flag_no_items(self, qtbot): method test_goto_prev_flag_goes_backward (line 636) | def test_goto_prev_flag_goes_backward(self, qtbot): class TestQCDockNavigation (line 663) | class TestQCDockNavigation: method test_dock_has_flags_property (line 666) | def test_dock_has_flags_property(self, qtbot): method test_dock_goto_methods (line 685) | def test_dock_goto_methods(self, qtbot): method test_is_active_for_navigation_not_visible (line 713) | def test_is_active_for_navigation_not_visible(self, qtbot): method test_is_active_for_navigation_no_flags (line 731) | def test_is_active_for_navigation_no_flags(self, qtbot): method test_is_active_for_navigation_floating (line 746) | def test_is_active_for_navigation_floating(self, qtbot): method test_visibility_changed_updates_labels (line 773) | def test_visibility_changed_updates_labels(self, qtbot): method test_fit_selection_checkbox_exists (line 806) | def test_fit_selection_checkbox_exists(self, qtbot): method test_fit_selection_checkbox_syncs_with_parent_state (line 816) | def test_fit_selection_checkbox_syncs_with_parent_state(self, qtbot): FILE: tests/gui/widgets/test_size_distribution.py function sample_size_data (line 13) | def sample_size_data(): class TestSizeHistogramCanvas (line 43) | class TestSizeHistogramCanvas: method test_canvas_creation (line 46) | def test_canvas_creation(self, qtbot): method test_set_data (line 55) | def test_set_data(self, qtbot, sample_size_data): method test_set_rotation_angle (line 63) | def test_set_rotation_angle(self, qtbot, sample_size_data): method test_set_view_mode (line 72) | def test_set_view_mode(self, qtbot, sample_size_data): method test_set_histogram_bins (line 85) | def test_set_histogram_bins(self, qtbot, sample_size_data): method test_set_histogram_range (line 94) | def test_set_histogram_range(self, qtbot, sample_size_data): method test_point_clicked_signal (line 104) | def test_point_clicked_signal(self, qtbot, sample_size_data): class TestSizeDistributionWidget (line 115) | class TestSizeDistributionWidget: method test_widget_creation (line 118) | def test_widget_creation(self, qtbot): method test_rotation_presets (line 128) | def test_rotation_presets(self, qtbot): method test_custom_angle (line 143) | def test_custom_angle(self, qtbot): method test_navigate_signal (line 153) | def test_navigate_signal(self, qtbot): method test_set_labels (line 160) | def test_set_labels(self, qtbot, centered_pair_labels): method test_view_mode_toggle (line 170) | def test_view_mode_toggle(self, qtbot, centered_pair_labels): method test_histogram_controls_enabled (line 185) | def test_histogram_controls_enabled(self, qtbot, centered_pair_labels): method test_statistics_update (line 205) | def test_statistics_update(self, qtbot, centered_pair_labels): method test_empty_data_handling (line 218) | def test_empty_data_handling(self, qtbot, centered_pair_labels): FILE: tests/info/test_align.py function test_get_instances_points (line 6) | def test_get_instances_points(centered_pair_labels): function test_align_points (line 15) | def test_align_points(): FILE: tests/info/test_feature_suggestions.py function test_frame_item (line 11) | def test_frame_item(small_robot_mp4_vid): function test_frame_group_set (line 37) | def test_frame_group_set(small_robot_mp4_vid): function test_item_stack (line 63) | def test_item_stack(centered_pair_vid, small_robot_mp4_vid): function test_brisk_suggestions (line 138) | def test_brisk_suggestions(centered_pair_vid): function test_feature_suggestion_pipeline (line 143) | def test_feature_suggestion_pipeline(centered_pair_vid): FILE: tests/info/test_h5.py function test_output_matrices (line 29) | def test_output_matrices(centered_pair_predictions: Labels, min_labels_r... function test_hdf5_saving (line 214) | def test_hdf5_saving(tmpdir): function test_hdf5_tranposed_saving (line 226) | def test_hdf5_tranposed_saving(tmpdir): function read_lens_and_meta_hdf5 (line 238) | def read_lens_and_meta_hdf5(filename): function read_scalar_dataset (line 264) | def read_scalar_dataset(f, dset_name): function extract_meta_hdf5 (line 269) | def extract_meta_hdf5(filename, dset_names_in: List): function assert_dset_lens (line 282) | def assert_dset_lens(dset_lens: dict, num_tracks: int, num_frames: int, ... function assert_dset_metadata (line 294) | def assert_dset_metadata(dset_metadata: dict, labels: Labels, video: Vid... function test_hdf5_video_arg (line 302) | def test_hdf5_video_arg( FILE: tests/info/test_metrics.py function test_matched_instance_distances (line 9) | def test_matched_instance_distances(centered_pair_labels, centered_pair_... FILE: tests/info/test_summary.py function test_frame_statistics (line 5) | def test_frame_statistics(simple_predictions): function test_get_tracking_score_series (line 45) | def test_get_tracking_score_series(min_tracks_2node_predictions): FILE: tests/io/test_convert.py function test_analysis_format (line 16) | def test_analysis_format( function test_sleap_format (line 96) | def test_sleap_format( function test_auto_slp_h5_json_format (line 116) | def test_auto_slp_h5_json_format( FILE: tests/io/test_pathutils.py function test_find_missing (line 4) | def test_find_missing(): function test_prefix_change_no_filenames (line 11) | def test_prefix_change_no_filenames(): function test_filenames_prefix_change (line 15) | def test_filenames_prefix_change(): function test_partial_missing_list (line 25) | def test_partial_missing_list(): function test_filename_fix_from_saved_prefix (line 35) | def test_filename_fix_from_saved_prefix(): function test_changed_subpath (line 49) | def test_changed_subpath(): FILE: tests/io/test_visuals.py function test_serial_pipeline (line 13) | def test_serial_pipeline(centered_pair_predictions, tmpdir): function test_sleap_render (line 55) | def test_sleap_render(centered_pair_predictions_slp_path, tmp_path): function test_write_visuals (line 66) | def test_write_visuals(tmpdir, centered_pair_predictions: Labels, crop: ... FILE: tests/qc/test_config.py class TestQCConfig (line 6) | class TestQCConfig: method test_default_values (line 9) | def test_default_values(self): method test_custom_values (line 19) | def test_custom_values(self): method test_should_use_curvature_auto (line 31) | def test_should_use_curvature_auto(self): method test_should_use_curvature_explicit (line 43) | def test_should_use_curvature_explicit(self): method test_should_use_symmetry_auto (line 51) | def test_should_use_symmetry_auto(self): method test_should_use_symmetry_explicit (line 58) | def test_should_use_symmetry_explicit(self): FILE: tests/qc/test_detector.py class TestLabelQCDetector (line 13) | class TestLabelQCDetector: method simple_labels (line 17) | def simple_labels(self, skeleton): method labels_with_anomaly (line 50) | def labels_with_anomaly(self, skeleton): method test_init_default_config (line 93) | def test_init_default_config(self): method test_init_custom_config (line 100) | def test_init_custom_config(self): method test_fit_simple_labels (line 108) | def test_fit_simple_labels(self, simple_labels): method test_fit_enables_gmm_for_large_dataset (line 117) | def test_fit_enables_gmm_for_large_dataset(self, simple_labels): method test_fit_falls_back_to_zscore (line 126) | def test_fit_falls_back_to_zscore(self, skeleton): method test_score_returns_results (line 148) | def test_score_returns_results(self, simple_labels): method test_score_without_fit_raises (line 157) | def test_score_without_fit_raises(self, simple_labels): method test_flag_returns_list (line 164) | def test_flag_returns_list(self, simple_labels): method test_anomaly_detection (line 172) | def test_anomaly_detection(self, labels_with_anomaly): method test_flag_threshold (line 201) | def test_flag_threshold(self, labels_with_anomaly): method test_frame_level_checks (line 214) | def test_frame_level_checks(self, skeleton): method test_duplicate_detection (line 255) | def test_duplicate_detection(self, skeleton): method test_results_to_dataframe (line 298) | def test_results_to_dataframe(self, simple_labels): method test_feature_names (line 311) | def test_feature_names(self, simple_labels): method test_skeleton_analyzer_properties (line 320) | def test_skeleton_analyzer_properties(self, simple_labels): class TestLabelQCDetectorWithRealData (line 331) | class TestLabelQCDetectorWithRealData: method test_centered_pair_labels (line 334) | def test_centered_pair_labels(self, centered_pair_labels): method test_min_labels (line 350) | def test_min_labels(self, min_labels): FILE: tests/qc/test_features.py class TestBaselineFeatureExtractor (line 16) | class TestBaselineFeatureExtractor: method simple_skeleton (line 20) | def simple_skeleton(self): method extractor (line 28) | def extractor(self, simple_skeleton): method test_fit_creates_stats (line 44) | def test_fit_creates_stats(self, extractor): method test_extract_returns_correct_shape (line 50) | def test_extract_returns_correct_shape(self, extractor): method test_extract_handles_nan (line 57) | def test_extract_handles_nan(self, extractor): method test_extract_detects_anomaly (line 68) | def test_extract_detects_anomaly(self, extractor): method test_symmetry_consistency (line 81) | def test_symmetry_consistency(self, simple_skeleton): class TestCurvature (line 117) | class TestCurvature: method test_straight_line_zero_curvature (line 120) | def test_straight_line_zero_curvature(self): method test_bent_line_has_curvature (line 130) | def test_bent_line_has_curvature(self): method test_short_chain_returns_empty (line 139) | def test_short_chain_returns_empty(self): method test_handles_nan (line 149) | def test_handles_nan(self): class TestConvexHull (line 162) | class TestConvexHull: method test_square_hull (line 165) | def test_square_hull(self): method test_handles_nan (line 174) | def test_handles_nan(self): method test_too_few_points (line 185) | def test_too_few_points(self): class TestVisibilityModel (line 196) | class TestVisibilityModel: method visibility_model (line 200) | def visibility_model(self): method test_fit_creates_matrices (line 215) | def test_fit_creates_matrices(self, visibility_model): method test_normal_pattern_low_score (line 221) | def test_normal_pattern_low_score(self, visibility_model): method test_unusual_pattern_high_score (line 229) | def test_unusual_pattern_high_score(self, visibility_model): class TestIsolatedInvisible (line 239) | class TestIsolatedInvisible: method test_no_isolated_invisible (line 242) | def test_no_isolated_invisible(self): method test_detects_isolated_invisible (line 251) | def test_detects_isolated_invisible(self): class TestNearestNeighborScorer (line 263) | class TestNearestNeighborScorer: method nn_scorer (line 267) | def nn_scorer(self): method test_similar_pose_low_distance (line 280) | def test_similar_pose_low_distance(self, nn_scorer): method test_different_pose_high_distance (line 287) | def test_different_pose_high_distance(self, nn_scorer): method test_handles_nan (line 294) | def test_handles_nan(self, nn_scorer): class TestNormalizePose (line 303) | class TestNormalizePose: method test_centers_pose (line 306) | def test_centers_pose(self): method test_scales_to_unit (line 314) | def test_scales_to_unit(self): method test_preserves_nan (line 325) | def test_preserves_nan(self): class TestPoseDistance (line 333) | class TestPoseDistance: method test_identical_poses_zero_distance (line 336) | def test_identical_poses_zero_distance(self): method test_different_poses_nonzero_distance (line 343) | def test_different_poses_nonzero_distance(self): method test_handles_partial_visibility (line 351) | def test_handles_partial_visibility(self): method test_no_common_nodes_returns_inf (line 359) | def test_no_common_nodes_returns_inf(self): FILE: tests/qc/test_frame_level.py class TestInstanceCountChecker (line 14) | class TestInstanceCountChecker: method count_checker (line 18) | def count_checker(self): method test_fit_computes_expected (line 28) | def test_fit_computes_expected(self, count_checker): method test_normal_count_not_incomplete (line 34) | def test_normal_count_not_incomplete(self, count_checker): method test_low_count_is_incomplete (line 42) | def test_low_count_is_incomplete(self, count_checker): method test_high_count_not_incomplete (line 49) | def test_high_count_not_incomplete(self, count_checker): method test_uses_global_for_unknown_video (line 56) | def test_uses_global_for_unknown_video(self, count_checker): method test_per_video_counts (line 63) | def test_per_video_counts(self): class TestComputeInstanceIOU (line 83) | class TestComputeInstanceIOU: method test_identical_instances_iou_one (line 86) | def test_identical_instances_iou_one(self): method test_non_overlapping_iou_zero (line 94) | def test_non_overlapping_iou_zero(self): method test_partial_overlap_intermediate_iou (line 105) | def test_partial_overlap_intermediate_iou(self): method test_handles_nan (line 114) | def test_handles_nan(self): method test_too_few_visible_points (line 124) | def test_too_few_visible_points(self): class TestComputeNodeOverlap (line 134) | class TestComputeNodeOverlap: method test_identical_instances_full_overlap (line 137) | def test_identical_instances_full_overlap(self): method test_close_instances_high_overlap (line 146) | def test_close_instances_high_overlap(self): method test_far_instances_low_overlap (line 156) | def test_far_instances_low_overlap(self): method test_handles_nan (line 165) | def test_handles_nan(self): method test_no_common_nodes (line 177) | def test_no_common_nodes(self): class TestDetectDuplicates (line 188) | class TestDetectDuplicates: method test_no_duplicates_in_distinct_instances (line 191) | def test_no_duplicates_in_distinct_instances(self): method test_detects_identical_duplicates (line 202) | def test_detects_identical_duplicates(self): method test_detects_by_iou (line 213) | def test_detects_by_iou(self): method test_detects_by_node_overlap (line 226) | def test_detects_by_node_overlap(self): method test_multiple_duplicates (line 243) | def test_multiple_duplicates(self): method test_handles_nan (line 253) | def test_handles_nan(self): FILE: tests/qc/test_gmm.py class TestGMMDetector (line 9) | class TestGMMDetector: method gmm_detector (line 13) | def gmm_detector(self): method test_fit_creates_model (line 26) | def test_fit_creates_model(self, gmm_detector): method test_score_returns_dict (line 32) | def test_score_returns_dict(self, gmm_detector): method test_normal_sample_low_score (line 42) | def test_normal_sample_low_score(self, gmm_detector): method test_outlier_high_score (line 52) | def test_outlier_high_score(self, gmm_detector): method test_score_batch_returns_array (line 60) | def test_score_batch_returns_array(self, gmm_detector): method test_handles_nan_in_score (line 68) | def test_handles_nan_in_score(self, gmm_detector): method test_handles_nan_in_batch (line 76) | def test_handles_nan_in_batch(self, gmm_detector): method test_small_sample_reduces_components (line 86) | def test_small_sample_reduces_components(self): method test_normalized_score_range (line 97) | def test_normalized_score_range(self, gmm_detector): class TestZScoreDetector (line 107) | class TestZScoreDetector: method zscore_detector (line 111) | def zscore_detector(self): method test_fit_computes_stats (line 119) | def test_fit_computes_stats(self, zscore_detector): method test_normal_sample_low_score (line 125) | def test_normal_sample_low_score(self, zscore_detector): method test_outlier_high_score (line 133) | def test_outlier_high_score(self, zscore_detector): method test_score_batch_shape (line 141) | def test_score_batch_shape(self, zscore_detector): method test_handles_nan (line 148) | def test_handles_nan(self, zscore_detector): method test_prevents_division_by_zero (line 155) | def test_prevents_division_by_zero(self): FILE: tests/qc/test_results.py class TestInstanceKey (line 8) | class TestInstanceKey: method test_creation (line 11) | def test_creation(self): method test_hashable (line 19) | def test_hashable(self): class TestFrameKey (line 30) | class TestFrameKey: method test_creation (line 33) | def test_creation(self): class TestFrameQC (line 41) | class TestFrameQC: method test_default_values (line 44) | def test_default_values(self): method test_with_values (line 53) | def test_with_values(self): class TestQCFlag (line 68) | class TestQCFlag: method test_creation (line 71) | def test_creation(self): class TestQCResults (line 90) | class TestQCResults: method results (line 94) | def results(self): method test_get_flagged_returns_list (line 124) | def test_get_flagged_returns_list(self, results): method test_get_flagged_sorted_by_score (line 132) | def test_get_flagged_sorted_by_score(self, results): method test_get_flagged_threshold (line 139) | def test_get_flagged_threshold(self, results): method test_get_flagged_includes_explanation (line 149) | def test_get_flagged_includes_explanation(self, results): method test_get_frame_issues (line 157) | def test_get_frame_issues(self, results): method test_get_explanation (line 173) | def test_get_explanation(self, results): method test_get_explanation_unknown_instance (line 181) | def test_get_explanation_unknown_instance(self, results): method test_to_dataframe (line 188) | def test_to_dataframe(self, results): method test_confidence_levels (line 201) | def test_confidence_levels(self, results): method test_infer_top_issue (line 214) | def test_infer_top_issue(self, results): FILE: tests/sleap_io_adaptors/test_lf_labels_utils.py function labels_with_frames (line 10) | def labels_with_frames(): class TestIterateLabeledFrames (line 24) | class TestIterateLabeledFrames: method test_forward_iteration_basic (line 27) | def test_forward_iteration_basic(self, labels_with_frames): method test_forward_iteration_from_frame (line 36) | def test_forward_iteration_from_frame(self, labels_with_frames): method test_forward_iteration_from_unlabeled_frame (line 47) | def test_forward_iteration_from_unlabeled_frame(self, labels_with_fram... method test_reverse_iteration_basic (line 57) | def test_reverse_iteration_basic(self, labels_with_frames): method test_reverse_iteration_from_frame (line 66) | def test_reverse_iteration_from_frame(self, labels_with_frames): method test_reverse_iteration_from_unlabeled_frame (line 85) | def test_reverse_iteration_from_unlabeled_frame(self, labels_with_fram... method test_reverse_iteration_wraps_at_beginning (line 103) | def test_reverse_iteration_wraps_at_beginning(self, labels_with_frames): method test_forward_iteration_wraps_at_end (line 115) | def test_forward_iteration_wraps_at_end(self, labels_with_frames): method test_empty_labels (line 125) | def test_empty_labels(self): method test_single_frame (line 133) | def test_single_frame(self): FILE: tests/test_cli.py class TestCLIBasics (line 11) | class TestCLIBasics: method test_cli_help (line 14) | def test_cli_help(self): method test_cli_version (line 23) | def test_cli_version(self): method test_label_help (line 30) | def test_label_help(self): method test_doctor_help (line 37) | def test_doctor_help(self): method test_doctor_runs (line 44) | def test_doctor_runs(self): method test_doctor_json (line 55) | def test_doctor_json(self): method test_doctor_json_has_new_fields (line 69) | def test_doctor_json_has_new_fields(self): method test_doctor_has_new_sections (line 86) | def test_doctor_has_new_sections(self): method test_doctor_output_to_file (line 100) | def test_doctor_output_to_file(self, tmp_path): method test_doctor_output_auto_filename (line 115) | def test_doctor_output_auto_filename(self, tmp_path, monkeypatch): method test_doctor_file_content_has_all_sections (line 134) | def test_doctor_file_content_has_all_sections(self, tmp_path): method test_doctor_shows_tip_when_not_saving (line 149) | def test_doctor_shows_tip_when_not_saving(self): class TestSleapIoIntegration (line 158) | class TestSleapIoIntegration: method test_sleap_io_commands_are_registered (line 164) | def test_sleap_io_commands_are_registered(self): method test_show_command_registered (line 189) | def test_show_command_registered(self): method test_show_help_has_sleap_branding (line 196) | def test_show_help_has_sleap_branding(self): method test_convert_command_registered (line 203) | def test_convert_command_registered(self): method test_convert_help_has_sleap_branding (line 210) | def test_convert_help_has_sleap_branding(self): method test_split_command_registered (line 217) | def test_split_command_registered(self): method test_filenames_command_registered (line 224) | def test_filenames_command_registered(self): method test_render_command_registered (line 231) | def test_render_command_registered(self): method test_main_help_shows_all_commands (line 238) | def test_main_help_shows_all_commands(self): method test_unsplit_command_registered (line 262) | def test_unsplit_command_registered(self): method test_merge_command_registered (line 270) | def test_merge_command_registered(self): method test_fix_command_registered (line 278) | def test_fix_command_registered(self): method test_embed_command_registered (line 286) | def test_embed_command_registered(self): method test_unembed_command_registered (line 294) | def test_unembed_command_registered(self): method test_trim_command_registered (line 302) | def test_trim_command_registered(self): method test_reencode_command_registered (line 310) | def test_reencode_command_registered(self): method test_transform_command_registered (line 318) | def test_transform_command_registered(self): method test_show_with_file (line 326) | def test_show_with_file(self, tmp_path): class TestDefaultGroupBehavior (line 342) | class TestDefaultGroupBehavior: method test_unrecognized_command_falls_back_to_label (line 345) | def test_unrecognized_command_falls_back_to_label(self): class TestSleapNNCLICommands (line 357) | class TestSleapNNCLICommands: method test_train_command_importable (line 364) | def test_train_command_importable(self): method test_track_command_importable (line 371) | def test_track_command_importable(self): method test_export_command_importable (line 378) | def test_export_command_importable(self): method test_predict_command_importable (line 385) | def test_predict_command_importable(self): method test_train_help (line 392) | def test_train_help(self): method test_track_help (line 401) | def test_track_help(self): method test_track_has_filter_overlapping_options (line 411) | def test_track_has_filter_overlapping_options(self): method test_export_help (line 426) | def test_export_help(self): method test_export_has_all_options (line 437) | def test_export_has_all_options(self): method test_predict_help (line 450) | def test_predict_help(self): method test_predict_has_all_options (line 461) | def test_predict_has_all_options(self): FILE: tests/test_predictions_to_instances.py function simple_skeleton (line 37) | def simple_skeleton(): function simple_video (line 49) | def simple_video(): function prediction_with_track (line 55) | def prediction_with_track(simple_skeleton): function prediction_without_track (line 71) | def prediction_without_track(simple_skeleton): function user_instance_from_prediction (line 84) | def user_instance_from_prediction(simple_skeleton, prediction_with_track): class TestGetUnusedPredictionsBug (line 98) | class TestGetUnusedPredictionsBug: method test_returns_only_predicted_instances_with_tracks (line 106) | def test_returns_only_predicted_instances_with_tracks( method test_returns_only_predicted_instances_without_tracks (line 142) | def test_returns_only_predicted_instances_without_tracks( method test_only_returns_predicted_instance_type (line 173) | def test_only_returns_predicted_instance_type(self, simple_skeleton, s... class TestGetInstancesToShowBug (line 200) | class TestGetInstancesToShowBug: method test_shows_user_instances_after_predictions_deleted (line 208) | def test_shows_user_instances_after_predictions_deleted( method test_shows_user_instances_alongside_predictions (line 240) | def test_shows_user_instances_alongside_predictions( method test_all_user_instances_always_shown (line 263) | def test_all_user_instances_always_shown(self, simple_skeleton, simple... class TestMakeInstanceFromPredictedInstanceBug (line 290) | class TestMakeInstanceFromPredictedInstanceBug: method test_resulting_instance_has_correct_points_type (line 298) | def test_resulting_instance_has_correct_points_type( method test_resulting_instance_points_have_no_score_field (line 313) | def test_resulting_instance_points_have_no_score_field( method test_resulting_instance_is_not_predicted_instance (line 329) | def test_resulting_instance_is_not_predicted_instance( method test_resulting_instance_preserves_coordinates (line 346) | def test_resulting_instance_preserves_coordinates( method test_resulting_instance_has_from_predicted_set (line 366) | def test_resulting_instance_has_from_predicted_set( class TestNaNPredictedNodeVisibilityBug (line 381) | class TestNaNPredictedNodeVisibilityBug: method prediction_with_nan_node (line 396) | def prediction_with_nan_node(self, simple_skeleton): method test_make_instance_nan_node_is_invisible (line 408) | def test_make_instance_nan_node_is_invisible(self, prediction_with_nan... method test_set_visible_nodes_initializes_nan_node_with_dirty_heap (line 429) | def test_set_visible_nodes_initializes_nan_node_with_dirty_heap( method test_set_visible_nodes_preserves_valid_node_visibility (line 485) | def test_set_visible_nodes_preserves_valid_node_visibility( method test_add_random_nodes_does_not_leak_visible_across_iterations (line 519) | def test_add_random_nodes_does_not_leak_visible_across_iterations( class TestOriginalPredictionNotRemovedBug (line 590) | class TestOriginalPredictionNotRemovedBug: method test_sleap_io_unused_predictions_excludes_used (line 598) | def test_sleap_io_unused_predictions_excludes_used( method test_delete_predictions_only_deletes_predicted_instances (line 627) | def test_delete_predictions_only_deletes_predicted_instances( class TestFullWorkflowIntegration (line 665) | class TestFullWorkflowIntegration: method test_add_all_predictions_then_delete_predictions_preserves_user_instances (line 668) | def test_add_all_predictions_then_delete_predictions_preserves_user_in... method test_double_click_workflow_preserves_instance (line 734) | def test_double_click_workflow_preserves_instance( FILE: tests/test_prefs.py function test_prefs (line 5) | def test_prefs(): FILE: tests/test_rangelist.py function test_rangelist (line 4) | def test_rangelist(): FILE: tests/test_sleap_io_adaptor.py function test_arborescence (line 10) | def test_arborescence(): FILE: tests/test_system_info.py class TestPackageInfo (line 36) | class TestPackageInfo: method test_get_package_info_installed (line 39) | def test_get_package_info_installed(self): method test_get_package_info_not_installed (line 45) | def test_get_package_info_not_installed(self): method test_get_all_package_info (line 50) | def test_get_all_package_info(self): class TestPackageTable (line 57) | class TestPackageTable: method test_print_package_table (line 60) | def test_print_package_table(self): method test_print_package_table_shows_full_paths (line 77) | def test_print_package_table_shows_full_paths(self): class TestDataClasses (line 96) | class TestDataClasses: method test_package_info_data (line 99) | def test_package_info_data(self): method test_package_info_data_with_git (line 114) | def test_package_info_data_with_git(self): method test_uv_info (line 131) | def test_uv_info(self): method test_conda_info (line 142) | def test_conda_info(self): method test_binary_info (line 154) | def test_binary_info(self): method test_gpu_info (line 165) | def test_gpu_info(self): class TestDiagnosticFunctions (line 177) | class TestDiagnosticFunctions: method test_run_command_success (line 180) | def test_run_command_success(self): method test_run_command_failure (line 186) | def test_run_command_failure(self): method test_run_command_timeout (line 192) | def test_run_command_timeout(self): method test_get_git_info_valid_repo (line 198) | def test_get_git_info_valid_repo(self, tmp_path): method test_get_git_info_not_a_repo (line 223) | def test_get_git_info_not_a_repo(self, tmp_path): method test_get_git_info_nonexistent_path (line 228) | def test_get_git_info_nonexistent_path(self): method test_get_detailed_package_info_installed (line 233) | def test_get_detailed_package_info_installed(self): method test_get_detailed_package_info_not_installed (line 240) | def test_get_detailed_package_info_not_installed(self): method test_get_uv_config_value_env_var (line 245) | def test_get_uv_config_value_env_var(self): method test_get_uv_config_value_not_set (line 251) | def test_get_uv_config_value_not_set(self): method test_get_default_python_version_from_env (line 256) | def test_get_default_python_version_from_env(self): method test_get_uv_info_data (line 263) | def test_get_uv_info_data(self): method test_get_conda_info_data_not_activated (line 275) | def test_get_conda_info_data_not_activated(self): method test_get_binary_info_existing (line 288) | def test_get_binary_info_existing(self): method test_get_binary_info_nonexistent (line 295) | def test_get_binary_info_nonexistent(self): method test_get_nvidia_info_tuple (line 300) | def test_get_nvidia_info_tuple(self): method test_get_pytorch_info_detailed_tuple (line 308) | def test_get_pytorch_info_detailed_tuple(self): method test_get_memory_info_tuple (line 315) | def test_get_memory_info_tuple(self): method test_get_disk_info_valid_path (line 323) | def test_get_disk_info_valid_path(self): method test_get_disk_info_invalid_path (line 329) | def test_get_disk_info_invalid_path(self): method test_get_ffmpeg_info_list (line 335) | def test_get_ffmpeg_info_list(self): method test_analyze_path_tuple (line 340) | def test_analyze_path_tuple(self): method test_analyze_path_detects_conda_conflict (line 348) | def test_analyze_path_detects_conda_conflict(self): class TestFormattingHelpers (line 369) | class TestFormattingHelpers: method test_memory_info_returns_tuple_always (line 372) | def test_memory_info_returns_tuple_always(self): method test_disk_info_handles_permission_error (line 380) | def test_disk_info_handles_permission_error(self, tmp_path): method test_get_uv_config_value_from_toml (line 387) | def test_get_uv_config_value_from_toml(self, tmp_path): class TestEdgeCases (line 406) | class TestEdgeCases: method test_get_git_info_empty_path (line 409) | def test_get_git_info_empty_path(self): method test_get_binary_info_with_symlink (line 414) | def test_get_binary_info_with_symlink(self, tmp_path): method test_run_command_with_stderr (line 431) | def test_run_command_with_stderr(self): method test_get_ffmpeg_info_with_no_ffmpeg (line 438) | def test_get_ffmpeg_info_with_no_ffmpeg(self): FILE: tests/test_util.py function test_json (line 6) | def test_json(): function test_attr_to_dtype (line 11) | def test_attr_to_dtype(): function test_frame_list (line 48) | def test_frame_list(): function test_weak_match (line 54) | def test_weak_match(): function test_config (line 63) | def test_config(): function test_scoped_dict (line 70) | def test_scoped_dict(): function test_find_files_by_suffix (line 92) | def test_find_files_by_suffix(): function test_uniquify (line 100) | def test_uniquify(): function test_dict_cut (line 106) | def test_dict_cut(): function test_save_dict_to_hdf5 (line 125) | def test_save_dict_to_hdf5(tmpdir): FILE: tests/test_version.py function test_version (line 6) | def test_version():