Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
654c813
add initial family code to tobac
freemansw1 Jan 16, 2024
429ee42
add family finding
freemansw1 Jan 17, 2024
043e5d1
formatting and documentation
freemansw1 Jan 17, 2024
d650c55
Merge remote-tracking branch 'upstream/main' into family_id
freemansw1 Aug 14, 2025
0837aa4
fixes post merging
freemansw1 Aug 14, 2025
30f3fe7
refactor: move merge_split into a new directory
freemansw1 Aug 14, 2025
f62d69d
refactor: move PBC labeling to a new file
freemansw1 Aug 18, 2025
6d60413
update to PBC labeling to include connectivity options.
freemansw1 Sep 4, 2025
d8fb2f2
first cut at adding feature family ID. Need to add tests
freemansw1 Oct 8, 2025
b97f2f4
Merge remote-tracking branch 'upstream/RC_v1.6.x' into family_id
freemansw1 Dec 23, 2025
f34dd6b
add test for ID from data
freemansw1 Jan 19, 2026
e6edefc
added basic test for segmentation pathway for feature family ID
freemansw1 Jan 19, 2026
d0c3379
add tests (and code for) what to do if the feature can't be linked to…
freemansw1 Jan 19, 2026
f448a7b
refactor of segmentation feature families code
freemansw1 Jan 19, 2026
29e3661
add documentation of family detection
freemansw1 Jan 19, 2026
2215b1e
update examples
freemansw1 Jan 20, 2026
fab3488
fix formatting
freemansw1 Jan 20, 2026
7f1526b
fix blank notebook
freemansw1 Jan 26, 2026
3c1d662
Merge branch 'refs/heads/RC_v1.7.0' into family_id
freemansw1 Feb 4, 2026
27ab006
Merge branch 'refs/heads/RC_v1.7.0' into family_id
freemansw1 Feb 9, 2026
3af3f28
fixes for multi-time, include tests for multi-time
freemansw1 Mar 10, 2026
fb8c673
added early family detection info to user guide
freemansw1 Mar 11, 2026
9f12f17
fix a bug around 0 points not being identified.
freemansw1 Mar 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions doc/api/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@ Documentation is broken down by directory and module.
tracking
segmentation
merge_split
merge_split.families
utils.bulk_statistics
utils.general
plotting
analysis.cell_analysis
analysis.feature_analysis
analysis.spatial

1 change: 1 addition & 0 deletions doc/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ def setup(app):
"examples/Basics/Methods-and-Parameters-for-Feature-Detection_Part_2": "_static/thumbnails/Basics_Methods-and-Parameters-for-Feature-Detection_Part_2_Thumbnail.png",
"examples/Basics/Methods-and-Parameters-for-Linking": "_static/thumbnails/Basics_Methods-and-Parameters-for-Linking_Thumbnail.png",
"examples/Basics/Methods-and-Parameters-for-Segmentation": "_static/thumbnails/Basics_Methods-and-Parameters-for-Segmentation_Thumbnail.png",
"examples/Basics/Idealized-Family-Detection": "_static/thumbnails/Idealized-Family-Detection_Thumbnail.png",
"examples/Example_OLR_Tracking_model/Example_OLR_Tracking_model": "_static/thumbnails/Example_OLR_Tracking_model_Thumbnail.png",
"examples/Example_OLR_Tracking_satellite/Example_OLR_Tracking_satellite": "_static/thumbnails/Example_OLR_Tracking_satellite_Thumbnail.png",
"examples/Example_Precip_Tracking/Example_Precip_Tracking": "_static/thumbnails/Example_Precip_Tracking_Thumbnail.png",
Expand Down
21 changes: 21 additions & 0 deletions doc/getting_started/family_detection.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Families

Features ({doc}`/userguide/feature_detection/index`) are the *base unit* of *tobac*. However, sometimes you want to identify how features interact together. **Families** are the way to do this. Families aggregate features, allowing one to link features together spatially.

## Family Examples
- Identifying individual convective cores (features) within a broader MCS (family)
- Identifying individual updrafts (features) within a single cloud (family)

## Algorithm Basics
You can either detect families from data ({py:func}`tobac.merge_split.families.identify_feature_families_from_data`) or from segmentation output ({py:func}`tobac.merge_split.families.identify_feature_families_from_segmentation`). Similar to segmentation, families are identified based on a single threshold when detected from data (defined by {py:code}`threshold`), but it does *not* need to be the same field that you detect the features on[^3dcaveat].

## Family Example Notebooks

```{nblinkgallery}
:caption: Jupyter Notebook Examples

../examples/Basics/Idealized-Family-Detection.ipynb
```


[^3dcaveat]: Although, you cannot currently project 2D features to 3D families.
1 change: 1 addition & 0 deletions doc/getting_started/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ feature_detection_overview
tracking_basics
segmentation
merge_split
family_detection
plotting
get_help
```
Expand Down
23 changes: 23 additions & 0 deletions doc/userguide/families/family_detection.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Families

As described in Getting Started ({doc}`/getting_started/family_detection`), features ({doc}`/userguide/feature_detection/index`) are the *base unit* of *tobac*, whereas **families** stitch multiple *features* together. Families aggregate features, allowing one to link features together spatially.

One can think about *families* as a kind of spatial clustering, although at the moment not using any preexisting clustering methods. As with every other method in *tobac*, family detection is modular, meaning that you can choose to use it or not.

## Family Examples
- Identifying individual convective cores (features) within a broader MCS (family)
- Identifying individual updrafts (features) within a single cloud (family)

## Algorithm Basics
You can either detect families from data ({py:func}`tobac.merge_split.families.identify_feature_families_from_data`) or from segmentation output ({py:func}`tobac.merge_split.families.identify_feature_families_from_segmentation`). Similar to segmentation, families are identified based on a single threshold when detected from data (defined by {py:code}`threshold`), but it does *not* need to be the same field that you detect the features on[^3dcaveat].

## Family Example Notebooks

```{nblinkgallery}
:caption: Jupyter Notebook Examples

../examples/Basics/Idealized-Family-Detection.ipynb
```


[^3dcaveat]: Although, you cannot currently project 2D features to 3D families.
Loading
Loading