Rhapso 0.1.99__py3-none-any.whl → 0.1.993__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Rhapso
3
- Version: 0.1.99
3
+ Version: 0.1.993
4
4
  Summary: A python package for aligning and stitching light sheet fluorescence microscopy images
5
5
  Author: ND
6
6
  Author-email: sean.fite@alleninstitute.org
@@ -9,13 +9,9 @@ Project-URL: Roadmap, https://github.com/AllenNeuralDynamics/Rhapso/issues
9
9
  Classifier: Development Status :: 3 - Alpha
10
10
  Classifier: Intended Audience :: Developers
11
11
  Classifier: Natural Language :: English
12
- Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.7
14
- Classifier: Programming Language :: Python :: 3.8
15
- Classifier: Programming Language :: Python :: 3.9
16
12
  Classifier: Programming Language :: Python :: 3.10
17
13
  Classifier: Operating System :: OS Independent
18
- Requires-Python: >=3.7
14
+ Requires-Python: >=3.10
19
15
  Description-Content-Type: text/markdown
20
16
  License-File: LICENSE
21
17
  Requires-Dist: pandas
@@ -33,6 +29,7 @@ Requires-Dist: matplotlib==3.10.0
33
29
  Requires-Dist: memory-profiler==0.61.0
34
30
  Requires-Dist: s3fs==2024.12.0
35
31
  Requires-Dist: scikit-learn
32
+ Requires-Dist: click==8.2.1
36
33
  Dynamic: author
37
34
  Dynamic: author-email
38
35
  Dynamic: classifier
@@ -46,7 +43,7 @@ Dynamic: summary
46
43
 
47
44
  # Rhapso
48
45
 
49
- This is the code base for **Rhapso**, a modular Python toolkit for the alignment and stitching of large-scale microscopy datasets.
46
+ This is the official code base for **Rhapso**, a modular Python toolkit for the alignment and stitching of large-scale microscopy datasets.
50
47
 
51
48
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
52
49
  [![Python Version](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3100/)
@@ -64,6 +61,8 @@ This is the code base for **Rhapso**, a modular Python toolkit for the alignment
64
61
  - [Performance](#performance)
65
62
  - [Layout](#layout)
66
63
  - [Installation](#installation)
64
+ - [How To Start](#how-to-start)
65
+ - [Try Rhapso on Sample Data](#try-rhapso-on-sample-data)
67
66
  - [Ray](#ray)
68
67
  - [Run Locally w/ Ray](#run-locally-with-ray)
69
68
  - [Run on AWS Cluster w/ Ray](#run-on-aws-cluster-with-ray)
@@ -88,13 +87,7 @@ Rhapso is still loading... and while we wrap up development, a couple things to
88
87
  ## Summary
89
88
  Rhapso is a set of Python components used to register, align, and stitch large-scale, overlapping, tile-based, multiscale microscopy datasets. Its stateless components can run on a single machine or scale out across cloud-based clusters.
90
89
 
91
- Rhapso is published on PyPI and can be installed with:
92
-
93
- ```bash
94
- pip install Rhapso
95
- ```
96
-
97
- <br>
90
+ Rhapso is published on PyPI.
98
91
 
99
92
  Rhapso was developed by the Allen Institute for Neural Dynamics.
100
93
 
@@ -213,6 +206,24 @@ A good way to get started:
213
206
 
214
207
  <br>
215
208
 
209
+ ## Try Rhapso on Sample Data
210
+
211
+ The quickest way to get familiar with Rhapso is to run it on a real dataset. We have a small (10GB) Z1 example hosted in a public S3 bucket, so you can access it without special permissions. It’s a good starting point to copy and adapt for your own alignment workflows.
212
+
213
+ XML (input)
214
+ - s3://aind-open-data/HCR_802704_2025-08-30_02-00-00_processed_2025-10-01_21-09-24/image_tile_alignment/single_channel_xmls/channel_488.xml
215
+
216
+ Image prefix (referenced by the XML)
217
+ - s3://aind-open-data/HCR_802704_2025-08-30_02-00-00_processed_2025-10-01_21-09-24/image_radial_correction/
218
+
219
+ <br>
220
+
221
+ **Note:** Occasionally we clean up our aind-open-data bucket. If you find this dataset does not exist, please create an issue and we will replace it.
222
+
223
+ ---
224
+
225
+ <br>
226
+
216
227
  ## High Level Approach to Registration, Alignment, and Fusion
217
228
 
218
229
  This process has a lot of knobs and variations, and when used correctly, can work for a broad range of datasets.
@@ -400,25 +411,26 @@ python Rhapso/pipelines/ray/aws/alignment_pipeline.py
400
411
  | Parameter | Feature / step | What it does | Typical range |
401
412
  | :---------------------------- | :------------------- | :---------------------------------------------------------------- | :------------- |
402
413
  | `model_min_matches` | RANSAC | Minimum correspondences to estimate a rigid transform | 18 – 32 |
403
- | `inlier_factor` | RANSAC | Inlier tolerance scaling; larger = looser inlier threshold | 30 – 100 |
404
- | `lambda_value` | RANSAC | Regularization strength during model fitting | 0.1 – 0.05 |
414
+ | `inlier_threshold` | RANSAC | Inlier tolerance scaling; larger = looser inlier threshold | 50 – 100 |
415
+ | `min_inlier_ratio` | RANSAC | Regularization strength during model fitting | 0.1 – 0.05 |
405
416
  | `num_iterations` | RANSAC | Number of RANSAC trials; higher = more robust, slower | 10,0000 |
406
- | `regularization_weight` | RANSAC | Weight applied to the regularization term | 1.0 |
417
+ | `regularization_weight` | RANSAC | Weight applied to the regularization term | 0.05 - 1.0 |
407
418
 
408
419
  ```
409
420
  <br>
410
421
 
411
422
  ### Solver
412
423
  ```
413
- | Parameter | Feature / step | What it does | Typical range |
414
- | :------------------- | :------------- | :----------------------------------------------------------------- | :------------------ |
415
- | `relative_threshold` | Graph pruning | Reject edges with residuals above dataset-relative cutoff | 3.5 |
416
- | `absolute_threshold` | Graph pruning | Reject edges above an absolute error bound (detection-space units) | 7.0 |
417
- | `min_matches` | Graph pruning | Minimum matches required to retain an edge between tiles | 3 |
418
- | `damp` | Optimization | Damping for iterative solver; higher can stabilize tough cases | 1.0 |
419
- | `max_iterations` | Optimization | Upper bound on solver iterations | 10,0000 |
420
- | `max_allowed_error` | Optimization | Overall error cap; `inf` disables hard stop by error | `inf` |
421
- | `max_plateauwidth` | Early stopping | Stagnation window before stopping on no improvement | 200 |
424
+ | Parameter | Feature / step | What it does | Typical range |
425
+ | :----------------------- | :------------- | :----------------------------------------------------------------- | :------------------ |
426
+ | `relative_threshold` | Graph pruning | Reject edges with residuals above dataset-relative cutoff | 3.5 |
427
+ | `absolute_threshold` | Graph pruning | Reject edges above an absolute error bound (detection-space units) | 7.0 |
428
+ | `min_matches` | Graph pruning | Minimum matches required to retain an edge between tiles | 3 |
429
+ | `damp` | Optimization | Damping for iterative solver; higher can stabilize tough cases | 1.0 |
430
+ | `max_iterations` | Optimization | Upper bound on solver iterations | 10,0000 |
431
+ | `max_allowed_error` | Optimization | Overall error cap; `inf` disables hard stop by error | `inf` |
432
+ | `max_plateauwidth` | Early stopping | Stagnation window before stopping on no improvement | 200 |
433
+ | `regularization_weight` | RANSAC | Weight applied to the regularization term | 0.05 - 1.0 |
422
434
 
423
435
  ```
424
436
 
@@ -56,29 +56,29 @@ Rhapso/fusion/neuroglancer_link_gen/utils/transfer.py,sha256=8hFBM8lmCV3TsEEVXZk
56
56
  Rhapso/fusion/neuroglancer_link_gen/utils/utils.py,sha256=Q0jKPGI39ScCHDgVEoWbrZrBrEluCjm69z28T3JScTc,7322
57
57
  Rhapso/matching/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
58
  Rhapso/matching/load_and_transform_points.py,sha256=UEV9gnWyl2z4zAUR2Z_ewX1_TWoS-IpXPL-qRB1_Ms8,16416
59
- Rhapso/matching/ransac_matching.py,sha256=PH9JpWqCrWcZoDvwG_Zs2FSk2cCdIX9be_6y2ix-3RI,20031
59
+ Rhapso/matching/ransac_matching.py,sha256=BWSRmckG2GiA49RuGnja4le-Xo5o9aY53Yawes9P-_E,20268
60
60
  Rhapso/matching/save_matches.py,sha256=OYHzzGoF9-PTVfQZBJ7HaJ9JYB_Q8ZazH-f3HljxzLQ,4720
61
61
  Rhapso/matching/xml_parser.py,sha256=nP_jA_jEfAFPzt6Al91NpwWEk-Klk8P5QzNINJYVksU,11527
62
62
  Rhapso/pipelines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
63
  Rhapso/pipelines/ray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
64
  Rhapso/pipelines/ray/evaluation.py,sha256=k05e72WKu9UkptJkjk_rkScjn1zGOhIG1rTOLkxkOLI,2610
65
65
  Rhapso/pipelines/ray/interest_point_detection.py,sha256=NZ2Egm81KPC1dFncz_6srW0TYhBTpKqy80nEk0DigEU,6595
66
- Rhapso/pipelines/ray/interest_point_matching.py,sha256=aM-83D3JJUrkiWT0hogpcyxUw7h78kKegYtUFKMQu3s,5697
66
+ Rhapso/pipelines/ray/interest_point_matching.py,sha256=0wdCxcz-PeNSrxLIZpHpUyJLOvp7tM8S6LH2k1t2woA,5746
67
67
  Rhapso/pipelines/ray/matching_stats.py,sha256=7NZ4rQPTKMwzJBrPXkVbiWkzIeH4h9PfDozqrUo8TKU,4199
68
- Rhapso/pipelines/ray/solver.py,sha256=JqNZPyd_0tliM3mu8voDNcQuhkgwMKF5fBMzfjVMCy8,6198
68
+ Rhapso/pipelines/ray/solver.py,sha256=FK02ttFOvVRHTvlsBJ_kJ4GdwLHfIa3ljZ6VhE8FxS0,6458
69
69
  Rhapso/pipelines/ray/split_dataset.py,sha256=JVMd3qYw17Em-rQDvufSAaqaPWw5kf9yWpf5ShSh97M,2943
70
70
  Rhapso/pipelines/ray/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
- Rhapso/pipelines/ray/aws/alignment_pipeline.py,sha256=JvSB08mIskgqzc-U-6vOprl5k7i9UN5yOgDOKtimIJ0,9716
71
+ Rhapso/pipelines/ray/aws/alignment_pipeline.py,sha256=c_UUw_90xnoAJ5zYuU5OD0Uzr1cPOqsZ6aXHOQauYCI,10015
72
72
  Rhapso/pipelines/ray/aws/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
73
  Rhapso/pipelines/ray/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
- Rhapso/pipelines/ray/local/alignment_pipeline.py,sha256=OFdns9kILtAQD8KNU7MoLXQeZba1q4YV9LiLVSo8fi0,6712
74
+ Rhapso/pipelines/ray/local/alignment_pipeline.py,sha256=EV2e0Kfx7uSHaIVMTKId-NG8f6B4TCWnI5yqSRrmuFE,6989
75
75
  Rhapso/pipelines/ray/param/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
76
  Rhapso/solver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
77
  Rhapso/solver/compute_tiles.py,sha256=-7QFrZZfh1iW1nDdlBORlcqOGf7urJmgjWOj6DfDdHQ,20471
78
78
  Rhapso/solver/concatenate_models.py,sha256=-763cwYyyHM6b7E5RkHMRtykFrVjeVeB1l0jFeoLfnI,4472
79
79
  Rhapso/solver/connected_graphs.py,sha256=wKxOOKRNd4MctYRX677hiFIYHLAg3GinkpqDqO0ad50,3603
80
80
  Rhapso/solver/data_prep.py,sha256=nS96_4MJ0TcHyFMsGDS82n0R-aUm8J99g8d_MrWpsik,7753
81
- Rhapso/solver/global_optimization.py,sha256=6qYXHmJRCTf-4gSwFgmy9IBUBUp7SuL1kMOER8cTx6A,13614
81
+ Rhapso/solver/global_optimization.py,sha256=Yl9_GlZDVLHtYtmlRY7qS0CX7c3c4zYxexIaGJVtsGY,13720
82
82
  Rhapso/solver/model_and_tile_setup.py,sha256=WqCK9_sSMJ5MFmvIYi1_x1Sx_9giYORpCfcirZsMNOI,4889
83
83
  Rhapso/solver/pre_align_tiles.py,sha256=BccXMr5cZILM8U0ZzhUyflQYx_WUQzvNDdX-S_u4Roo,11100
84
84
  Rhapso/solver/save_results.py,sha256=dIkQ3SiGNlKx5z-6k_o_O4WjANxKYLJQ059URnuxVJw,3985
@@ -87,15 +87,15 @@ Rhapso/solver/xml_to_dataframe_solver.py,sha256=u96DPnZNDa-TgimsPqyZlIvHk4A1e8yZ
87
87
  Rhapso/split_dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
88
  Rhapso/split_dataset/compute_grid_rules.py,sha256=dCAuNs4D7SaCfTXp54lchgttZVSgLH5f1tQWtkwr_ws,3028
89
89
  Rhapso/split_dataset/save_points.py,sha256=k-jH-slmxkbrxDl-uJvDkwOedi6cg7md3kg_a0NdL24,3713
90
- Rhapso/split_dataset/save_xml.py,sha256=Iq1UdFa8sdnWGygfIpDi4F5In-SCWggpl7lnuDTxkHE,14280
90
+ Rhapso/split_dataset/save_xml.py,sha256=55NdzfHPGAhpR1QYaDwXPZQlZlP6T9fymhJaOwTuZh0,29561
91
91
  Rhapso/split_dataset/split_images.py,sha256=2RzAi0btV1tmh4le9QotRif1IYUU6_4pLcGGpFBM9zk,22434
92
92
  Rhapso/split_dataset/xml_to_dataframe_split.py,sha256=ByaLzJ4sqT417UiCQU31_CS_V4Jms7pjMbBl0ZdSNNA,8570
93
- rhapso-0.1.99.dist-info/licenses/LICENSE,sha256=U0Y7B3gZJHXpjJVLgTQjM8e_c8w4JJpLgGhIdsoFR1Y,1092
93
+ rhapso-0.1.993.dist-info/licenses/LICENSE,sha256=U0Y7B3gZJHXpjJVLgTQjM8e_c8w4JJpLgGhIdsoFR1Y,1092
94
94
  tests/__init__.py,sha256=LYf6ZGyYRcduFFSaOLmnw3rTyfS3XLib0dsTHDWH0jo,37
95
95
  tests/test_detection.py,sha256=NtFYR_du9cbKrclQcNiJYsKzyqly6ivF61pw6_NICcM,440
96
96
  tests/test_matching.py,sha256=QX0ekSdyIkPpAsXHfSMqJUUlNZg09caSlhhUM63MduM,697
97
97
  tests/test_solving.py,sha256=t8I9XPV_4ZFM-DJpgvdYXxkG2_4DQgqs-FFyE5w8Nfg,695
98
- rhapso-0.1.99.dist-info/METADATA,sha256=kqyfZB6PEVsMDtjj-8QH_P1VxJvAQxMG4wUdmvVXeYY,18488
99
- rhapso-0.1.99.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
100
- rhapso-0.1.99.dist-info/top_level.txt,sha256=NXvsrsTfdowWbM7MxEjkDZE2Jo74lmq7ruWkp70JjSw,13
101
- rhapso-0.1.99.dist-info/RECORD,,
98
+ rhapso-0.1.993.dist-info/METADATA,sha256=U_wnul9wYKBsJqbjbs2FluO8uiAbaFTqm5ntyUxfzps,19298
99
+ rhapso-0.1.993.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
100
+ rhapso-0.1.993.dist-info/top_level.txt,sha256=NXvsrsTfdowWbM7MxEjkDZE2Jo74lmq7ruWkp70JjSw,13
101
+ rhapso-0.1.993.dist-info/RECORD,,