copick-utils 0.6.1__py3-none-any.whl → 1.0.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 (67) hide show
  1. copick_utils/__init__.py +1 -1
  2. copick_utils/cli/__init__.py +33 -0
  3. copick_utils/cli/clipmesh.py +161 -0
  4. copick_utils/cli/clippicks.py +154 -0
  5. copick_utils/cli/clipseg.py +163 -0
  6. copick_utils/cli/conversion_commands.py +32 -0
  7. copick_utils/cli/enclosed.py +191 -0
  8. copick_utils/cli/filter_components.py +166 -0
  9. copick_utils/cli/fit_spline.py +191 -0
  10. copick_utils/cli/hull.py +138 -0
  11. copick_utils/cli/input_output_selection.py +76 -0
  12. copick_utils/cli/logical_commands.py +29 -0
  13. copick_utils/cli/mesh2picks.py +170 -0
  14. copick_utils/cli/mesh2seg.py +167 -0
  15. copick_utils/cli/meshop.py +262 -0
  16. copick_utils/cli/picks2ellipsoid.py +171 -0
  17. copick_utils/cli/picks2mesh.py +181 -0
  18. copick_utils/cli/picks2plane.py +156 -0
  19. copick_utils/cli/picks2seg.py +134 -0
  20. copick_utils/cli/picks2sphere.py +170 -0
  21. copick_utils/cli/picks2surface.py +164 -0
  22. copick_utils/cli/picksin.py +146 -0
  23. copick_utils/cli/picksout.py +148 -0
  24. copick_utils/cli/processing_commands.py +18 -0
  25. copick_utils/cli/seg2mesh.py +135 -0
  26. copick_utils/cli/seg2picks.py +128 -0
  27. copick_utils/cli/segop.py +248 -0
  28. copick_utils/cli/separate_components.py +155 -0
  29. copick_utils/cli/skeletonize.py +164 -0
  30. copick_utils/cli/util.py +580 -0
  31. copick_utils/cli/validbox.py +155 -0
  32. copick_utils/converters/__init__.py +35 -0
  33. copick_utils/converters/converter_common.py +543 -0
  34. copick_utils/converters/ellipsoid_from_picks.py +335 -0
  35. copick_utils/converters/lazy_converter.py +576 -0
  36. copick_utils/converters/mesh_from_picks.py +209 -0
  37. copick_utils/converters/mesh_from_segmentation.py +119 -0
  38. copick_utils/converters/picks_from_mesh.py +542 -0
  39. copick_utils/converters/picks_from_segmentation.py +168 -0
  40. copick_utils/converters/plane_from_picks.py +251 -0
  41. copick_utils/converters/segmentation_from_mesh.py +291 -0
  42. copick_utils/{segmentation → converters}/segmentation_from_picks.py +123 -13
  43. copick_utils/converters/sphere_from_picks.py +306 -0
  44. copick_utils/converters/surface_from_picks.py +337 -0
  45. copick_utils/logical/__init__.py +43 -0
  46. copick_utils/logical/distance_operations.py +604 -0
  47. copick_utils/logical/enclosed_operations.py +222 -0
  48. copick_utils/logical/mesh_operations.py +443 -0
  49. copick_utils/logical/point_operations.py +303 -0
  50. copick_utils/logical/segmentation_operations.py +399 -0
  51. copick_utils/process/__init__.py +47 -0
  52. copick_utils/process/connected_components.py +360 -0
  53. copick_utils/process/filter_components.py +306 -0
  54. copick_utils/process/hull.py +106 -0
  55. copick_utils/process/skeletonize.py +326 -0
  56. copick_utils/process/spline_fitting.py +648 -0
  57. copick_utils/process/validbox.py +333 -0
  58. copick_utils/util/__init__.py +6 -0
  59. copick_utils/util/config_models.py +614 -0
  60. {copick_utils-0.6.1.dist-info → copick_utils-1.0.0.dist-info}/METADATA +15 -2
  61. copick_utils-1.0.0.dist-info/RECORD +71 -0
  62. copick_utils-1.0.0.dist-info/entry_points.txt +29 -0
  63. copick_utils/segmentation/picks_from_segmentation.py +0 -81
  64. copick_utils-0.6.1.dist-info/RECORD +0 -14
  65. /copick_utils/{segmentation → io}/__init__.py +0 -0
  66. {copick_utils-0.6.1.dist-info → copick_utils-1.0.0.dist-info}/WHEEL +0 -0
  67. {copick_utils-0.6.1.dist-info → copick_utils-1.0.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,71 @@
1
+ copick_utils/__init__.py,sha256=kFQ8LThoKCfUlzlQkmifSsrvL9z0Wamtr7jQ_MLQWA8,135
2
+ copick_utils/cli/__init__.py,sha256=51i1xC-N2laWLdZLdpsKMSB9LdO3BEdqDdWIbyxJ8f0,634
3
+ copick_utils/cli/clipmesh.py,sha256=M1MP8lw16diGHajipFXbZDQ4ZrsTvFiqAaHji0Smmtc,6172
4
+ copick_utils/cli/clippicks.py,sha256=7lmEZj8GDyVqc9l_rvGhAFTYWUhSEnwZcWu8w9LStBU,5857
5
+ copick_utils/cli/clipseg.py,sha256=atx01VUBdk5xLSwEHh43bN7HEKV2bjVgDmaNaLwJQ5E,6437
6
+ copick_utils/cli/conversion_commands.py,sha256=7I729S_9R7l67NzwfKaEWZAxcq0NbBhflZHKxTXaZhk,1045
7
+ copick_utils/cli/enclosed.py,sha256=gsJxapWCqH4IOMDyTTd_akv4L1qzuBfbRJEDBES6Wik,7209
8
+ copick_utils/cli/filter_components.py,sha256=hOs8h0648Ws-rzVxTh7w8Futjk4aEOpavoqrJMvr-2Q,6163
9
+ copick_utils/cli/fit_spline.py,sha256=BdLujzR9sen6IGlmZ9pGbhqs6Kjzk5MuAgmq3ewyMhk,6491
10
+ copick_utils/cli/hull.py,sha256=EpcgQB1-BM0iIyDE7Hj8Gpws8qgjsozSuoIFxCNog80,4666
11
+ copick_utils/cli/input_output_selection.py,sha256=DFsV52h9D6Y8fi7eIkULPAW5NQOfX8ssymU25gBMP34,2537
12
+ copick_utils/cli/logical_commands.py,sha256=Cdt9tFVTXmJZIdqORQgrfYqFLUxN-xiC1bRETs0s32k,861
13
+ copick_utils/cli/mesh2picks.py,sha256=BXCGvc9C1G71O6j15IhMj9EH279blBZh4zC_wbEbKBE,5604
14
+ copick_utils/cli/mesh2seg.py,sha256=cViBvsvrwBpIkTUZudB0IuM869FILQi1n7AmydN6mRs,6118
15
+ copick_utils/cli/meshop.py,sha256=E9PMMu6ueTPH9NudsRYTJIy5mBnmJNulS6C-GlqIqLc,9575
16
+ copick_utils/cli/picks2ellipsoid.py,sha256=A28VjDQsQPfCR8jNrmSkMemPQce4dGSn_bH9QqLsamk,6025
17
+ copick_utils/cli/picks2mesh.py,sha256=SsCURExY2NvtPlHncnWj5QKWd0mRNpve6YEqCHXUKVo,6316
18
+ copick_utils/cli/picks2plane.py,sha256=09IXCQUoiLPKCFH6LQ3uaDsFY9bzj1i0C_jbcxvRx-g,5428
19
+ copick_utils/cli/picks2seg.py,sha256=94Up--yLJ-2G9jW61pTfpbMrggcLEPIQ4bUbCJ2_dzk,4682
20
+ copick_utils/cli/picks2sphere.py,sha256=P-xFFDJdEowxHF20aLMO2Xymv7VHAaP4paBbgPWeqCE,5924
21
+ copick_utils/cli/picks2surface.py,sha256=vXprZa3tHndSE3Sp1yPOEqyv2kRkAbV7QlHjF8oE1zg,5712
22
+ copick_utils/cli/picksin.py,sha256=SD32-BJoxB2dGQU54ksuq2rCmcGjnQLldE0hrnV8pLA,5485
23
+ copick_utils/cli/picksout.py,sha256=odm2JeTyDzBrXkr2SCsbE3REGj589bCgPOq3ldj8soA,5568
24
+ copick_utils/cli/processing_commands.py,sha256=s9Mn0mvKQ60XQN6o6eyO2x7qZX_Hpq0K3kPwMuLHlKY,576
25
+ copick_utils/cli/seg2mesh.py,sha256=9fv3zaVHxAS4VhhlvU6qJ7W7wWjAYDedzDNeiaMZxTk,4732
26
+ copick_utils/cli/seg2picks.py,sha256=05RUsOJETnOc9zMmW_x3DVr1t2F01w2e2R8sAaJrHg8,4549
27
+ copick_utils/cli/segop.py,sha256=K_ju0MB4n-k5-wkOI7gOvkHCUslgHZCZUOFn-k2ta9M,9372
28
+ copick_utils/cli/separate_components.py,sha256=m0c5v4ZXSeoUURcVoY7jCE6I_jGbTdZXqEoLUiURIHs,5670
29
+ copick_utils/cli/skeletonize.py,sha256=CV_J9nibqLpKmckNRG6-7zlq6ROqPBLk166yDzhxJ5w,5646
30
+ copick_utils/cli/util.py,sha256=tne45hU9dL0AepQhV9KKqkKjAMAfweR9_GLGHJnisnc,18011
31
+ copick_utils/cli/validbox.py,sha256=Z-HY73QnWwxL-cLHLiIWNnYz4t-4jf63ho8pfk38xXU,5364
32
+ copick_utils/converters/__init__.py,sha256=f3_UJJ2jJqkOAaEy6y4i3x1baFZEem9aTrGGdBQgXFQ,1701
33
+ copick_utils/converters/converter_common.py,sha256=DVcneXPrrjdsQtshDKLHVr1oHT8lG4yl-3h0_0UBSoo,21475
34
+ copick_utils/converters/ellipsoid_from_picks.py,sha256=UKfF0CUWVDiqR4KWo1KSNgn6YW2460zIMGifVdJjUMc,12717
35
+ copick_utils/converters/lazy_converter.py,sha256=pyoxnXqaSNE8KWMe8_XHfswm996TjUqj1sTucDMv8u4,20037
36
+ copick_utils/converters/mesh_from_picks.py,sha256=5fPYVnij18p-6y0MuZLNWO7AFOSGEY3iBpR18nst0ZY,7614
37
+ copick_utils/converters/mesh_from_segmentation.py,sha256=KeLdk909fXLodwnqf-x1NAe9ghvbPEjilaWLURB_J_g,3626
38
+ copick_utils/converters/picks_from_mesh.py,sha256=PkYIz09FMQGos1Ab1IjzJkaqHGtx11Sw7vKYyXkTISA,18422
39
+ copick_utils/converters/picks_from_segmentation.py,sha256=fRPOFtFzKZ12kfYHT5yLXSTw8DitlXmaPlbtHXtY2-E,5807
40
+ copick_utils/converters/plane_from_picks.py,sha256=a2DV5PtH0mWsrZZIjzB9SuMeToh_fH1nU9BSS_KuNRU,9041
41
+ copick_utils/converters/segmentation_from_mesh.py,sha256=IPrvtSaFT8QNOGidWHDeaeJa7g78G6aAzhUgvDISsrs,10145
42
+ copick_utils/converters/segmentation_from_picks.py,sha256=OtA5GAePcKc3k1_oQXY7-H1vA515GWLONqVJmC_LdN0,10709
43
+ copick_utils/converters/sphere_from_picks.py,sha256=jwoXYV00hNR1Qjw0id9hVf9R2EmNzzQVSA7iAAsEHBw,11431
44
+ copick_utils/converters/surface_from_picks.py,sha256=PHRVtdaDikygT3kmTJKUnw2Gvj_QPsRI6sxMlye9nKY,11886
45
+ copick_utils/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
+ copick_utils/features/skimage.py,sha256=Sz-348tTT44lLS825z14iIOM3L_tALXQctUF1HbnWnw,4209
47
+ copick_utils/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
+ copick_utils/io/readers.py,sha256=bE7IBPohNjsFgD6HRPTrWte6OjaJ0NrF4RS8Dwgf3nA,5435
49
+ copick_utils/io/writers.py,sha256=iYyNkpBgrD0_N0N-LoyCOfIrk46WHWocKvkUUQYXMRg,2985
50
+ copick_utils/logical/__init__.py,sha256=coOdLd7vH6TCsoHj9T1Hj5hqnfiGM5CrVkmjVB-HdbM,1181
51
+ copick_utils/logical/distance_operations.py,sha256=cVn8YywwrgNEaKJxnZ6KbsJwwx7fJ2VDDaUEgat0b9A,24071
52
+ copick_utils/logical/enclosed_operations.py,sha256=f388K37vS4wCN5D0FL5lnvO29pd23pmC0LlXhNuNsS0,8583
53
+ copick_utils/logical/mesh_operations.py,sha256=hra0SiA0tsvEYbY4ldCl-e0nUUpND2dSdGkAIdJhXPY,14041
54
+ copick_utils/logical/point_operations.py,sha256=a2KrTqSuXeb-GNvFywN7iDuATkTDsSz0CsLSWhJeG80,10848
55
+ copick_utils/logical/segmentation_operations.py,sha256=AlPHq3t7Hw46svW6qBnr3i1PPulcNvDNikoYD7_RnrI,12090
56
+ copick_utils/pickers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ copick_utils/pickers/grid_picker.py,sha256=KKfdv3fDmeY7XwqiVADRQJibr1eyjYoG9ZpaihcrgHw,2345
58
+ copick_utils/process/__init__.py,sha256=ERh5Ka4vU0_ub4_UZFDWOXbr-my79s3RekfS9dV41wE,1227
59
+ copick_utils/process/connected_components.py,sha256=9h_Feu3wxYWW84evaUmW73_UY0fGmTszS55R8oljjEo,13601
60
+ copick_utils/process/filter_components.py,sha256=dU0l0PJ6ZejY6ANqsrDRtQ1RevdKWn6Txl4nr0sBq14,10587
61
+ copick_utils/process/hull.py,sha256=tLah4_fcwIuiy9Kaly5sVVDHltGBh6euyO3i9W99pms,3191
62
+ copick_utils/process/skeletonize.py,sha256=gLQgQdYlyuqFHyC19vzx8-gna15UiAM_1i85hF-mkMg,11713
63
+ copick_utils/process/spline_fitting.py,sha256=6pBr4w7cKZb5xaKaU3b1R5A6cIVDrCTRKTVVUL4vDSI,25025
64
+ copick_utils/process/validbox.py,sha256=5uEbVjmyNJxp__2XJal1jP7Ecpqv2uZsBkAy26zpxx8,9494
65
+ copick_utils/util/__init__.py,sha256=V76KYVdhERpiXkCsaap4WQBbvfXG04x3vGvdSayzpmk,190
66
+ copick_utils/util/config_models.py,sha256=vzih8OsmvKQk8rULYyY6f6yiRHUnk48KKrCES5Pvq4w,21964
67
+ copick_utils-1.0.0.dist-info/METADATA,sha256=dd7zA7C50YZXDF2qOOwlffYrh93CTSNK_Dokse4Uti4,4562
68
+ copick_utils-1.0.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
69
+ copick_utils-1.0.0.dist-info/entry_points.txt,sha256=qDi4JAAncjmkB86tEivSpc9QVr6YbdFC3T0SwIabNaM,1504
70
+ copick_utils-1.0.0.dist-info/licenses/LICENSE,sha256=3UHKsYd99Gh_qf1a9s8G5sdKqafgbGs5WIMoeX0OcdY,1105
71
+ copick_utils-1.0.0.dist-info/RECORD,,
@@ -0,0 +1,29 @@
1
+ [copick.convert.commands]
2
+ mesh2picks = copick_utils.cli.conversion_commands:mesh2picks
3
+ mesh2seg = copick_utils.cli.conversion_commands:mesh2seg
4
+ picks2ellipsoid = copick_utils.cli.conversion_commands:picks2ellipsoid
5
+ picks2mesh = copick_utils.cli.conversion_commands:picks2mesh
6
+ picks2plane = copick_utils.cli.conversion_commands:picks2plane
7
+ picks2seg = copick_utils.cli.conversion_commands:picks2seg
8
+ picks2sphere = copick_utils.cli.conversion_commands:picks2sphere
9
+ picks2surface = copick_utils.cli.conversion_commands:picks2surface
10
+ seg2mesh = copick_utils.cli.conversion_commands:seg2mesh
11
+ seg2picks = copick_utils.cli.conversion_commands:seg2picks
12
+
13
+ [copick.logical.commands]
14
+ clipmesh = copick_utils.cli.logical_commands:clipmesh
15
+ clippicks = copick_utils.cli.logical_commands:clippicks
16
+ clipseg = copick_utils.cli.logical_commands:clipseg
17
+ enclosed = copick_utils.cli.logical_commands:enclosed
18
+ meshop = copick_utils.cli.logical_commands:meshop
19
+ picksin = copick_utils.cli.logical_commands:picksin
20
+ picksout = copick_utils.cli.logical_commands:picksout
21
+ segop = copick_utils.cli.logical_commands:segop
22
+
23
+ [copick.process.commands]
24
+ filter_components = copick_utils.cli.processing_commands:filter_components
25
+ fit_spline = copick_utils.cli.processing_commands:fit_spline
26
+ hull = copick_utils.cli.processing_commands:hull
27
+ separate_components = copick_utils.cli.processing_commands:separate_components
28
+ skeletonize = copick_utils.cli.processing_commands:skeletonize
29
+ validbox = copick_utils.cli.processing_commands:validbox
@@ -1,81 +0,0 @@
1
- import numpy as np
2
- import scipy.ndimage as ndi
3
- from skimage.measure import regionprops
4
- from skimage.morphology import ball, binary_dilation, binary_erosion
5
- from skimage.segmentation import watershed
6
-
7
-
8
- def picks_from_segmentation(
9
- segmentation,
10
- segmentation_idx,
11
- maxima_filter_size,
12
- min_particle_size,
13
- max_particle_size,
14
- session_id,
15
- user_id,
16
- pickable_object,
17
- run,
18
- voxel_spacing=1,
19
- ):
20
- """
21
- Process a specific label in the segmentation, extract centroids, and save them as picks.
22
-
23
- Args:
24
- segmentation (np.ndarray): Multilabel segmentation array.
25
- segmentation_idx (int): The specific label from the segmentation to process.
26
- maxima_filter_size (int): Size of the maximum detection filter.
27
- min_particle_size (int): Minimum size threshold for particles.
28
- max_particle_size (int): Maximum size threshold for particles.
29
- session_id (str): Session ID for pick saving.
30
- user_id (str): User ID for pick saving.
31
- pickable_object (str): The name of the object to save picks for.
32
- run: A Copick run object that manages pick saving.
33
- voxel_spacing (int): The voxel spacing used to scale pick locations (default 1).
34
- """
35
- # Create a binary mask for the specific segmentation label
36
- binary_mask = (segmentation == segmentation_idx).astype(int)
37
-
38
- # Skip if the segmentation label is not present
39
- if np.sum(binary_mask) == 0:
40
- print(f"No segmentation with label {segmentation_idx} found.")
41
- return
42
-
43
- # Structuring element for erosion and dilation
44
- struct_elem = ball(1)
45
- eroded = binary_erosion(binary_mask, struct_elem)
46
- dilated = binary_dilation(eroded, struct_elem)
47
-
48
- # Distance transform and local maxima detection
49
- distance = ndi.distance_transform_edt(dilated)
50
- local_max = distance == ndi.maximum_filter(
51
- distance,
52
- footprint=np.ones((maxima_filter_size, maxima_filter_size, maxima_filter_size)),
53
- )
54
-
55
- # Watershed segmentation
56
- markers, _ = ndi.label(local_max)
57
- watershed_labels = watershed(-distance, markers, mask=dilated)
58
-
59
- # Extract region properties and filter based on particle size
60
- all_centroids = []
61
- for region in regionprops(watershed_labels):
62
- if min_particle_size <= region.area <= max_particle_size:
63
- all_centroids.append(region.centroid)
64
-
65
- # Save centroids as picks
66
- if all_centroids:
67
- pick_set = run.new_picks(pickable_object, session_id, user_id)
68
-
69
- positions = np.array(all_centroids)[:, [2, 1, 0]] * voxel_spacing
70
- pick_set.from_numpy(positions=positions)
71
- pick_set.store()
72
-
73
- print(f"Centroids for label {segmentation_idx} saved successfully.")
74
- return pick_set
75
- else:
76
- print(f"No valid centroids found for label {segmentation_idx}.")
77
- return None
78
-
79
-
80
- # Example call to the function
81
- # picks_from_segmentation(segmentation_array, label_id, 9, 1000, 50000, session_id, user_id, pickable_object_name, run_object)
@@ -1,14 +0,0 @@
1
- copick_utils/__init__.py,sha256=FqcMzBIYexR9TCNHvUyjKXblBOdEaa9-pt1fv8TNEcA,135
2
- copick_utils/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- copick_utils/features/skimage.py,sha256=Sz-348tTT44lLS825z14iIOM3L_tALXQctUF1HbnWnw,4209
4
- copick_utils/io/readers.py,sha256=bE7IBPohNjsFgD6HRPTrWte6OjaJ0NrF4RS8Dwgf3nA,5435
5
- copick_utils/io/writers.py,sha256=iYyNkpBgrD0_N0N-LoyCOfIrk46WHWocKvkUUQYXMRg,2985
6
- copick_utils/pickers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- copick_utils/pickers/grid_picker.py,sha256=KKfdv3fDmeY7XwqiVADRQJibr1eyjYoG9ZpaihcrgHw,2345
8
- copick_utils/segmentation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- copick_utils/segmentation/picks_from_segmentation.py,sha256=Pu3079P4LNJPQAEwsYdrJ3K_X_i1zmo_xxbu16goKAo,3007
10
- copick_utils/segmentation/segmentation_from_picks.py,sha256=oeP9NdOYcRATbpeKf3SkbdqbRuUEZCOPArl-KBseYc0,6991
11
- copick_utils-0.6.1.dist-info/METADATA,sha256=GXk4KjbVjumU8HK6nCwUuWjqR9AMrV4Vc_32S2GR5IQ,4246
12
- copick_utils-0.6.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
13
- copick_utils-0.6.1.dist-info/licenses/LICENSE,sha256=3UHKsYd99Gh_qf1a9s8G5sdKqafgbGs5WIMoeX0OcdY,1105
14
- copick_utils-0.6.1.dist-info/RECORD,,
File without changes