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.
- Rhapso/matching/ransac_matching.py +32 -36
- Rhapso/pipelines/ray/aws/alignment_pipeline.py +17 -14
- Rhapso/pipelines/ray/interest_point_matching.py +9 -9
- Rhapso/pipelines/ray/local/alignment_pipeline.py +20 -17
- Rhapso/pipelines/ray/solver.py +7 -3
- Rhapso/solver/global_optimization.py +5 -5
- Rhapso/split_dataset/save_xml.py +490 -93
- {rhapso-0.1.99.dist-info → rhapso-0.1.993.dist-info}/METADATA +38 -26
- {rhapso-0.1.99.dist-info → rhapso-0.1.993.dist-info}/RECORD +12 -12
- {rhapso-0.1.99.dist-info → rhapso-0.1.993.dist-info}/WHEEL +0 -0
- {rhapso-0.1.99.dist-info → rhapso-0.1.993.dist-info}/licenses/LICENSE +0 -0
- {rhapso-0.1.99.dist-info → rhapso-0.1.993.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Rhapso
|
|
3
|
-
Version: 0.1.
|
|
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.
|
|
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)
|
|
52
49
|
[](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
|
|
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
|
-
| `
|
|
404
|
-
| `
|
|
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
|
|
414
|
-
|
|
|
415
|
-
| `relative_threshold`
|
|
416
|
-
| `absolute_threshold`
|
|
417
|
-
| `min_matches`
|
|
418
|
-
| `damp`
|
|
419
|
-
| `max_iterations`
|
|
420
|
-
| `max_allowed_error`
|
|
421
|
-
| `max_plateauwidth`
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
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
|
-
rhapso-0.1.
|
|
100
|
-
rhapso-0.1.
|
|
101
|
-
rhapso-0.1.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|