Skip to content

Commit 95e4532

Browse files
author
Rajeev Jain
committed
o paper: add remap and performance figures; expand architecture/cross-section sections; update both drafts
1 parent f0d013f commit 95e4532

4 files changed

Lines changed: 68 additions & 0 deletions

File tree

paper/images/performance.svg

Lines changed: 16 additions & 0 deletions
Loading

paper/images/remap_pipeline.svg

Lines changed: 31 additions & 0 deletions
Loading

paper/paper.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,19 @@ We compare UXarray to adjacent tools and libraries (e.g., generic mesh readers,
6767

6868
# Implementation
6969

70+
## Architecture and design
71+
72+
We organize UXarray around a core Grid abstraction paired with Xarray-backed UxDataArray/UxDataset containers. Accessors (subset, remap, cross_section, plot) provide mesh-aware operations that preserve dimensions and coordinate semantics while normalizing disparate I/O formats into a minimal UGRID-consistent contract. Figures above depict the architecture and data flow.
73+
74+
## Cross-sections
75+
76+
Great-circle sampling uses pyproj.Geod on WGS84 to compute intermediate lon/lat along the geodesic, which are then mapped to unit-sphere Cartesian coordinates for face lookup. Constant latitude/longitude modes sample uniform steps along parallels/meridians. Values are gathered via nearest-face selection and returned with a new steps dimension plus along-track lat/lon coordinates.
77+
78+
Caveats and design notes:
79+
- For integer-typed inputs, NaN representation requires upcasting to float when samples fall outside the mesh.
80+
- Current implementation materializes the backing array; future work will preserve dask laziness where supported.
81+
- Face selection depends on get_faces_containing_point behavior and grid coverage.
82+
7083
- Core abstractions: Grid and UxDataArray, with UncachedAccessor-based extensions.
7184
- I/O across multiple formats with normalization to a common topology representation.
7285
- Cross-sections via geodesic and constant-lat/lon sampling with nearest-neighbor face selection.
@@ -87,6 +100,8 @@ cs = uxds["psi"].cross_section(start=(-45, -45), end=(45, 45), steps=200)
87100

88101
![Cross-section modes](images/cross_section_modes.svg)
89102

103+
![Remap pipeline](images/remap_pipeline.svg)
104+
90105
# Use cases
91106

92107
- Cross-section analysis along great-circle arcs and along constant parallels/meridians, including event-centric slices (e.g., cyclones, fronts).
@@ -98,6 +113,8 @@ cs = uxds["psi"].cross_section(start=(-45, -45), end=(45, 45), steps=200)
98113

99114
# Quality control
100115

116+
![Illustrative performance](images/performance.svg)
117+
101118
Continuous integration, unit tests, style and linting (pre-commit, ruff), and multi-platform testing. Target Python 3.10+.
102119

103120
# Acknowledgements

paper/uxarray_joss_paper.doc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ examples of UXarray usage (with attribution) once gathered.
103103
<img src="images/cross_section_modes.svg" alt="Cross-section modes" width="800" />
104104
<figcaption>Figure 4: Cross-section modes supported: geodesic (great-circle), constant latitude, constant longitude.</figcaption>
105105
</figure>
106+
<figure>
107+
<img src="images/remap_pipeline.svg" alt="Remap pipeline" width="800" />
108+
<figcaption>Figure 5: Remapping pipeline and diagnostics.</figcaption>
109+
</figure>
106110

107111
<h3>Conclusions</h3>
108112
<p>

0 commit comments

Comments
 (0)