Skip to content

Commit 34a62dd

Browse files
Merge branch 'main' into seanf-v1
2 parents 167a73e + 3aff101 commit 34a62dd

3 files changed

Lines changed: 33 additions & 18 deletions

File tree

README.md

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
This is the official code base for **Rhapso**, a modular Python toolkit for the alignment and stitching of large-scale microscopy datasets.
44

5+
Available on [PyPI](https://pypi.org/project/Rhapso/)
6+
57
[![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
68
[![Python Version](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3100/)
79
[![Documentation](https://img.shields.io/badge/docs-wiki-blue)](https://github.com/AllenNeuralDynamics/Rhapso/wiki)
@@ -42,11 +44,7 @@ Rhapso is still loading... and while we wrap up development, a couple things to
4244
<br>
4345

4446
## Summary
45-
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.
46-
47-
Rhapso is published on PyPI.
48-
49-
Rhapso was developed by the Allen Institute for Neural Dynamics.
47+
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. Rhapso was developed by the Allen Institute for Neural Dynamics.
5048

5149
<br>
5250

@@ -368,25 +366,26 @@ python Rhapso/pipelines/ray/aws/alignment_pipeline.py
368366
| Parameter | Feature / step | What it does | Typical range |
369367
| :---------------------------- | :------------------- | :---------------------------------------------------------------- | :------------- |
370368
| `model_min_matches` | RANSAC | Minimum correspondences to estimate a rigid transform | 18 – 32 |
371-
| `inlier_factor` | RANSAC | Inlier tolerance scaling; larger = looser inlier threshold | 30 – 100 |
372-
| `lambda_value` | RANSAC | Regularization strength during model fitting | 0.1 – 0.05 |
369+
| `inlier_threshold` | RANSAC | Inlier tolerance scaling; larger = looser inlier threshold | 50 – 100 |
370+
| `min_inlier_ratio` | RANSAC | Regularization strength during model fitting | 0.1 – 0.05 |
373371
| `num_iterations` | RANSAC | Number of RANSAC trials; higher = more robust, slower | 10,0000 |
374-
| `regularization_weight` | RANSAC | Weight applied to the regularization term | 1.0 |
372+
| `regularization_weight` | RANSAC | Weight applied to the regularization term | 0.05 - 1.0 |
375373
376374
```
377375
<br>
378376

379377
### Solver
380378
```
381-
| Parameter | Feature / step | What it does | Typical range |
382-
| :------------------- | :------------- | :----------------------------------------------------------------- | :------------------ |
383-
| `relative_threshold` | Graph pruning | Reject edges with residuals above dataset-relative cutoff | 3.5 |
384-
| `absolute_threshold` | Graph pruning | Reject edges above an absolute error bound (detection-space units) | 7.0 |
385-
| `min_matches` | Graph pruning | Minimum matches required to retain an edge between tiles | 3 |
386-
| `damp` | Optimization | Damping for iterative solver; higher can stabilize tough cases | 1.0 |
387-
| `max_iterations` | Optimization | Upper bound on solver iterations | 10,0000 |
388-
| `max_allowed_error` | Optimization | Overall error cap; `inf` disables hard stop by error | `inf` |
389-
| `max_plateauwidth` | Early stopping | Stagnation window before stopping on no improvement | 200 |
379+
| Parameter | Feature / step | What it does | Typical range |
380+
| :----------------------- | :------------- | :----------------------------------------------------------------- | :------------------ |
381+
| `relative_threshold` | Graph pruning | Reject edges with residuals above dataset-relative cutoff | 3.5 |
382+
| `absolute_threshold` | Graph pruning | Reject edges above an absolute error bound (detection-space units) | 7.0 |
383+
| `min_matches` | Graph pruning | Minimum matches required to retain an edge between tiles | 3 |
384+
| `damp` | Optimization | Damping for iterative solver; higher can stabilize tough cases | 1.0 |
385+
| `max_iterations` | Optimization | Upper bound on solver iterations | 10,0000 |
386+
| `max_allowed_error` | Optimization | Overall error cap; `inf` disables hard stop by error | `inf` |
387+
| `max_plateauwidth` | Early stopping | Stagnation window before stopping on no improvement | 200 |
388+
| `regularization_weight` | RANSAC | Weight applied to the regularization term | 0.05 - 1.0 |
390389
391390
```
392391

Rhapso/split_dataset/save_xml.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,19 @@ def _norm_id(raw):
601601
return ET.tostring(root, encoding='unicode')
602602

603603
def save_setup_id_definition_to_xml(self, xml):
604+
"""
605+
Create/overwrite <SetupIds> for the split views.
606+
607+
In the desired final layout, SetupIds lives inside:
608+
<SequenceDescription>
609+
<ImageLoader format="split.viewerimgloader">
610+
...
611+
<SequenceDescription> ... </SequenceDescription>
612+
<SetupIds> ... </SetupIds> <-- here
613+
</ImageLoader>
614+
...
615+
</SequenceDescription>
616+
"""
604617
root = ET.fromstring(xml)
605618

606619
def tn(el):

setup.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
setup(
99
name='Rhapso',
10-
version='0.1.991',
10+
version='0.2.1',
1111
author='ND',
1212
author_email='sean.fite@alleninstitute.org',
1313
description='A python package for aligning and stitching light sheet fluorescence microscopy images',
@@ -53,3 +53,6 @@
5353

5454

5555

56+
57+
58+

0 commit comments

Comments
 (0)