swcstudio 0.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. swcstudio/__init__.py +19 -0
  2. swcstudio/api.py +130 -0
  3. swcstudio/cli/__init__.py +3 -0
  4. swcstudio/cli/cli.py +1482 -0
  5. swcstudio/core/__init__.py +32 -0
  6. swcstudio/core/api.py +84 -0
  7. swcstudio/core/auto_typing/__init__.py +88 -0
  8. swcstudio/core/auto_typing/branch_features.py +995 -0
  9. swcstudio/core/auto_typing/cell_type_detector.py +325 -0
  10. swcstudio/core/auto_typing/config.py +51 -0
  11. swcstudio/core/auto_typing/features.py +516 -0
  12. swcstudio/core/auto_typing/gnn_apical_basal.py +690 -0
  13. swcstudio/core/auto_typing/gnn_dataset.py +400 -0
  14. swcstudio/core/auto_typing/gnn_inference.py +138 -0
  15. swcstudio/core/auto_typing/pipeline.py +545 -0
  16. swcstudio/core/auto_typing/runner.py +694 -0
  17. swcstudio/core/auto_typing/stage3_refine.py +856 -0
  18. swcstudio/core/auto_typing/subtree_features.py +281 -0
  19. swcstudio/core/auto_typing/train_stage1.py +227 -0
  20. swcstudio/core/auto_typing/train_stage2.py +773 -0
  21. swcstudio/core/auto_typing/types.py +65 -0
  22. swcstudio/core/auto_typing_results.py +42 -0
  23. swcstudio/core/auto_typing_train.py +233 -0
  24. swcstudio/core/config.py +52 -0
  25. swcstudio/core/custom_types.py +145 -0
  26. swcstudio/core/geometry_editing.py +572 -0
  27. swcstudio/core/issues.py +587 -0
  28. swcstudio/core/model_paths.py +190 -0
  29. swcstudio/core/models.py +34 -0
  30. swcstudio/core/radii_cleaning.py +880 -0
  31. swcstudio/core/reporting.py +916 -0
  32. swcstudio/core/simplification.py +227 -0
  33. swcstudio/core/subtree_editing.py +68 -0
  34. swcstudio/core/swc_io.py +113 -0
  35. swcstudio/core/updater.py +382 -0
  36. swcstudio/core/validation.py +119 -0
  37. swcstudio/core/validation_catalog.py +252 -0
  38. swcstudio/core/validation_checks/__init__.py +7 -0
  39. swcstudio/core/validation_checks/native_checks.py +790 -0
  40. swcstudio/core/validation_checks/neuron_morphology_checks.py +265 -0
  41. swcstudio/core/validation_engine.py +446 -0
  42. swcstudio/core/validation_impl.py +508 -0
  43. swcstudio/core/validation_registry.py +80 -0
  44. swcstudio/core/validation_results.py +129 -0
  45. swcstudio/core/visualization.py +52 -0
  46. swcstudio/gui/__init__.py +3 -0
  47. swcstudio/gui/auto_typing_guide.py +76 -0
  48. swcstudio/gui/auto_typing_workers.py +143 -0
  49. swcstudio/gui/batch_tab.py +686 -0
  50. swcstudio/gui/constants.py +33 -0
  51. swcstudio/gui/context_inspector.py +283 -0
  52. swcstudio/gui/custom_type_dialog.py +250 -0
  53. swcstudio/gui/dendrogram_widget.py +945 -0
  54. swcstudio/gui/editor_tab.py +479 -0
  55. swcstudio/gui/font_utils.py +28 -0
  56. swcstudio/gui/geometry_editing_panel.py +989 -0
  57. swcstudio/gui/graph_utils.py +319 -0
  58. swcstudio/gui/issue_panel.py +248 -0
  59. swcstudio/gui/main.py +158 -0
  60. swcstudio/gui/main_window.py +4568 -0
  61. swcstudio/gui/manual_radii_panel.py +269 -0
  62. swcstudio/gui/neuron_3d_widget.py +767 -0
  63. swcstudio/gui/radii_cleaning_panel.py +678 -0
  64. swcstudio/gui/report_popup.py +56 -0
  65. swcstudio/gui/rule_batch_processor.py +22 -0
  66. swcstudio/gui/simplification_panel.py +369 -0
  67. swcstudio/gui/swc_table_widget.py +191 -0
  68. swcstudio/gui/validation_auto_label_panel.py +271 -0
  69. swcstudio/gui/validation_core.py +19 -0
  70. swcstudio/gui/validation_tab.py +518 -0
  71. swcstudio/plugins/__init__.py +58 -0
  72. swcstudio/plugins/contracts.py +93 -0
  73. swcstudio/plugins/loader.py +154 -0
  74. swcstudio/plugins/registry.py +176 -0
  75. swcstudio/tools/__init__.py +14 -0
  76. swcstudio/tools/batch_processing/__init__.py +13 -0
  77. swcstudio/tools/batch_processing/features/__init__.py +23 -0
  78. swcstudio/tools/batch_processing/features/auto_typing.py +88 -0
  79. swcstudio/tools/batch_processing/features/batch_validation.py +95 -0
  80. swcstudio/tools/batch_processing/features/index_clean.py +129 -0
  81. swcstudio/tools/batch_processing/features/radii_cleaning.py +350 -0
  82. swcstudio/tools/batch_processing/features/simplification.py +140 -0
  83. swcstudio/tools/batch_processing/features/split.py +5 -0
  84. swcstudio/tools/batch_processing/features/swc_splitter.py +122 -0
  85. swcstudio/tools/batch_processing/features/validation.py +5 -0
  86. swcstudio/tools/geometry_editing/__init__.py +5 -0
  87. swcstudio/tools/geometry_editing/features/__init__.py +5 -0
  88. swcstudio/tools/geometry_editing/features/operations.py +100 -0
  89. swcstudio/tools/morphology_editing/__init__.py +5 -0
  90. swcstudio/tools/morphology_editing/features/__init__.py +5 -0
  91. swcstudio/tools/morphology_editing/features/dendrogram_editing.py +104 -0
  92. swcstudio/tools/morphology_editing/features/manual_label.py +92 -0
  93. swcstudio/tools/morphology_editing/features/manual_radii.py +93 -0
  94. swcstudio/tools/morphology_editing/features/simplification.py +126 -0
  95. swcstudio/tools/validation/__init__.py +37 -0
  96. swcstudio/tools/validation/features/__init__.py +5 -0
  97. swcstudio/tools/validation/features/auto_fix.py +89 -0
  98. swcstudio/tools/validation/features/auto_typing.py +138 -0
  99. swcstudio/tools/validation/features/core.py +31 -0
  100. swcstudio/tools/validation/features/index_clean.py +103 -0
  101. swcstudio/tools/validation/features/radii_cleaning.py +87 -0
  102. swcstudio/tools/validation/features/run_checks.py +64 -0
  103. swcstudio/tools/visualization/__init__.py +5 -0
  104. swcstudio/tools/visualization/features/__init__.py +5 -0
  105. swcstudio/tools/visualization/features/mesh_editing.py +55 -0
  106. swcstudio-0.2.0.dist-info/METADATA +172 -0
  107. swcstudio-0.2.0.dist-info/RECORD +111 -0
  108. swcstudio-0.2.0.dist-info/WHEEL +5 -0
  109. swcstudio-0.2.0.dist-info/entry_points.txt +3 -0
  110. swcstudio-0.2.0.dist-info/licenses/LICENSE +21 -0
  111. swcstudio-0.2.0.dist-info/top_level.txt +1 -0
swcstudio/__init__.py ADDED
@@ -0,0 +1,19 @@
1
+ """swcstudio package entrypoint.
2
+
3
+ Layers:
4
+ - swcstudio.core: shared algorithm/data logic
5
+ - swcstudio.tools: tool + feature modules
6
+ - swcstudio.api: public Python API
7
+ - swcstudio.cli: terminal interface
8
+ - swcstudio.gui: desktop GUI interface
9
+ """
10
+
11
+ from importlib.metadata import PackageNotFoundError, version as _pkg_version
12
+
13
+ try:
14
+ __version__ = _pkg_version("swcstudio")
15
+ except PackageNotFoundError:
16
+ # Local source checkout before installation.
17
+ __version__ = "0.1.0"
18
+
19
+ __all__ = ["api", "core", "tools", "plugins", "cli", "gui", "__version__"]
swcstudio/api.py ADDED
@@ -0,0 +1,130 @@
1
+ """Public library API for swcstudio.
2
+
3
+ All interfaces (GUI, CLI, and external Python callers) should import these
4
+ functions or the corresponding tool/feature modules.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from swcstudio.core.auto_typing import BatchOptions
10
+ from swcstudio.plugins import (
11
+ autoload_plugins_from_environment,
12
+ get_plugin,
13
+ list_all_feature_methods,
14
+ list_feature_methods,
15
+ list_plugins,
16
+ load_plugin_module,
17
+ load_plugins,
18
+ register_method,
19
+ register_plugin_manifest,
20
+ register_plugin_method,
21
+ unregister_method,
22
+ unregister_plugin,
23
+ )
24
+ from swcstudio.tools.batch_processing.features.auto_typing import run_folder as batch_auto_typing
25
+ from swcstudio.tools.batch_processing.features.index_clean import run_folder as batch_index_clean_folder
26
+ from swcstudio.tools.batch_processing.features.simplification import (
27
+ run_folder as batch_simplify_folder,
28
+ )
29
+ from swcstudio.tools.batch_processing.features.batch_validation import (
30
+ validate_folder as batch_validate_folder,
31
+ )
32
+ from swcstudio.tools.batch_processing.features.radii_cleaning import (
33
+ clean_folder as batch_radii_cleaning,
34
+ clean_path as radii_clean_path,
35
+ )
36
+ from swcstudio.tools.batch_processing.features.swc_splitter import (
37
+ split_folder as batch_split_folder,
38
+ )
39
+ from swcstudio.tools.geometry_editing.features.operations import (
40
+ disconnect_branch as geometry_disconnect_branch,
41
+ delete_node as geometry_delete_node,
42
+ delete_subtree as geometry_delete_subtree,
43
+ insert_node_between as geometry_insert_node_between,
44
+ move_node_absolute as geometry_move_node_absolute,
45
+ move_subtree_absolute as geometry_move_subtree_absolute,
46
+ reconnect_branch as geometry_reconnect_branch,
47
+ reindex_dataframe_with_map as geometry_reindex_dataframe_with_map,
48
+ )
49
+ from swcstudio.tools.morphology_editing.features.dendrogram_editing import (
50
+ reassign_subtree_types,
51
+ reassign_subtree_types_in_file,
52
+ )
53
+ from swcstudio.tools.morphology_editing.features.manual_label import (
54
+ set_node_type_file as morphology_set_node_type_file,
55
+ set_node_type_text as morphology_set_node_type_text,
56
+ )
57
+ from swcstudio.tools.morphology_editing.features.manual_radii import (
58
+ set_node_radius_file as morphology_set_node_radius_file,
59
+ set_node_radius_text as morphology_set_node_radius_text,
60
+ )
61
+ from swcstudio.tools.morphology_editing.features.simplification import (
62
+ simplify_file as morphology_smart_decimation_file,
63
+ simplify_swc_text as morphology_smart_decimation_text,
64
+ )
65
+ from swcstudio.tools.validation.features.auto_fix import auto_fix_file, auto_fix_text
66
+ from swcstudio.tools.validation.features.index_clean import (
67
+ index_clean_file as validation_index_clean_file,
68
+ index_clean_text as validation_index_clean_text,
69
+ )
70
+ from swcstudio.tools.validation.features.auto_typing import (
71
+ auto_label_file as validation_auto_label_file,
72
+ run_file as validation_auto_typing_file,
73
+ )
74
+ from swcstudio.tools.validation.features.run_checks import (
75
+ validate_file as validation_run_file,
76
+ validate_text as validation_run_text,
77
+ )
78
+ from swcstudio.tools.visualization.features.mesh_editing import (
79
+ build_mesh_from_file,
80
+ build_mesh_from_text,
81
+ )
82
+
83
+ __all__ = [
84
+ "BatchOptions",
85
+ "batch_validate_folder",
86
+ "batch_split_folder",
87
+ "batch_auto_typing",
88
+ "batch_simplify_folder",
89
+ "batch_index_clean_folder",
90
+ "batch_radii_cleaning",
91
+ "radii_clean_path",
92
+ "auto_fix_text",
93
+ "auto_fix_file",
94
+ "validation_index_clean_text",
95
+ "validation_index_clean_file",
96
+ "validation_auto_typing_file",
97
+ "validation_run_text",
98
+ "validation_run_file",
99
+ "build_mesh_from_text",
100
+ "build_mesh_from_file",
101
+ "reassign_subtree_types",
102
+ "reassign_subtree_types_in_file",
103
+ "morphology_set_node_type_text",
104
+ "morphology_set_node_type_file",
105
+ "morphology_set_node_radius_text",
106
+ "morphology_set_node_radius_file",
107
+ "validation_auto_label_file",
108
+ "morphology_smart_decimation_text",
109
+ "morphology_smart_decimation_file",
110
+ "geometry_move_node_absolute",
111
+ "geometry_move_subtree_absolute",
112
+ "geometry_reconnect_branch",
113
+ "geometry_disconnect_branch",
114
+ "geometry_delete_node",
115
+ "geometry_delete_subtree",
116
+ "geometry_insert_node_between",
117
+ "geometry_reindex_dataframe_with_map",
118
+ "load_plugin_module",
119
+ "load_plugins",
120
+ "autoload_plugins_from_environment",
121
+ "register_plugin_manifest",
122
+ "register_plugin_method",
123
+ "unregister_plugin",
124
+ "list_plugins",
125
+ "get_plugin",
126
+ "register_method",
127
+ "unregister_method",
128
+ "list_feature_methods",
129
+ "list_all_feature_methods",
130
+ ]
@@ -0,0 +1,3 @@
1
+ """CLI package for swcstudio."""
2
+
3
+ __all__ = ["cli"]