Skip to content

Commit 6bca2d2

Browse files
SierdCopilotCopilotOlivierBurvingt
committed
update gui dev branch to main (#281)
* Initial plan * Phase 1: Add constants, utility functions, and improve documentation Co-authored-by: Sierd <[email protected]> * Phase 2: Extract helper methods and reduce code duplication Co-authored-by: Sierd <[email protected]> * Phase 3: Add variable label/title constants and improve docstrings Co-authored-by: Sierd <[email protected]> * Final: Add comprehensive refactoring documentation and summary Co-authored-by: Sierd <[email protected]> * Add export functionality: PNG and MP4 animations for all visualizations Co-authored-by: Sierd <[email protected]> * Phase 4: Begin code organization - extract utils module and create gui package structure Co-authored-by: Sierd <[email protected]> * Add comprehensive additional improvements proposal document Co-authored-by: Sierd <[email protected]> * bugfixes related to import and animattion functionality * updated structure for further refactoring * Refactor: Extract DomainVisualizer and rename gui_app_backup.py to application.py Co-authored-by: Sierd <[email protected]> * bugfix * bugfix on loading domain * Refactor: Extract WindVisualizer to modular architecture Co-authored-by: Sierd <[email protected]> * Refactor: Extract Output2DVisualizer for 2D NetCDF visualization Co-authored-by: Sierd <[email protected]> * Refactor: Extract Output1DVisualizer - Complete modular architecture achieved! Co-authored-by: Sierd <[email protected]> * bugfixes loading files * removed netcdf check * bugfixes after refractoring * Carcans files added for Olivier * bugfixes with domain overview * Gui v0.2 added (#264) * add wind plotting functionality * Refactor GUI: Complete modular architecture with all GUI tabs extracted, export functionality, and utilities (#263) * Initial plan * Phase 1: Add constants, utility functions, and improve documentation Co-authored-by: Sierd <[email protected]> * Phase 2: Extract helper methods and reduce code duplication Co-authored-by: Sierd <[email protected]> * Phase 3: Add variable label/title constants and improve docstrings Co-authored-by: Sierd <[email protected]> * Final: Add comprehensive refactoring documentation and summary Co-authored-by: Sierd <[email protected]> * Add export functionality: PNG and MP4 animations for all visualizations Co-authored-by: Sierd <[email protected]> * Phase 4: Begin code organization - extract utils module and create gui package structure Co-authored-by: Sierd <[email protected]> * Add comprehensive additional improvements proposal document Co-authored-by: Sierd <[email protected]> * bugfixes related to import and animattion functionality * updated structure for further refactoring * Refactor: Extract DomainVisualizer and rename gui_app_backup.py to application.py Co-authored-by: Sierd <[email protected]> * bugfix * bugfix on loading domain * Refactor: Extract WindVisualizer to modular architecture Co-authored-by: Sierd <[email protected]> * Refactor: Extract Output2DVisualizer for 2D NetCDF visualization Co-authored-by: Sierd <[email protected]> * Refactor: Extract Output1DVisualizer - Complete modular architecture achieved! Co-authored-by: Sierd <[email protected]> * bugfixes loading files * removed netcdf check * bugfixes after refractoring * bugfixes with domain overview * Speeding up complex drawing * hold on functionality added * Tab to run code added. * Update aeolis/gui/application.py Co-authored-by: Copilot <[email protected]> * Update aeolis/gui/application.py Co-authored-by: Copilot <[email protected]> * Update aeolis/gui/visualizers/domain.py Co-authored-by: Copilot <[email protected]> * Update aeolis/gui/visualizers/domain.py Co-authored-by: Copilot <[email protected]> * Update aeolis/gui/main.py Co-authored-by: Copilot <[email protected]> * Update aeolis/gui/visualizers/output_2d.py Co-authored-by: Copilot <[email protected]> * Apply suggestions from code review Co-authored-by: Copilot <[email protected]> * Rename visualizers folder to gui_tabs and update all imports Co-authored-by: Sierd <[email protected]> * bigfixes related to refactoring * reducing code lenght by omitting some redundancies * Apply suggestions from code review Co-authored-by: Copilot <[email protected]> * Apply suggestions from code review Co-authored-by: Copilot <[email protected]> * Apply suggestions from code review Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: Sierd <[email protected]> Co-authored-by: Sierd <[email protected]> Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> Co-authored-by: Sierd <[email protected]> Co-authored-by: Copilot <[email protected]> * testcommit * reverse commit * removed Carcans from Main * Refactor GUI: Complete modular architecture with all GUI tabs extract… (#268) * Refactor GUI: Complete modular architecture with all GUI tabs extracted, export functionality, and utilities (#263) * Initial plan * Phase 1: Add constants, utility functions, and improve documentation Co-authored-by: Sierd <[email protected]> * Phase 2: Extract helper methods and reduce code duplication Co-authored-by: Sierd <[email protected]> * Phase 3: Add variable label/title constants and improve docstrings Co-authored-by: Sierd <[email protected]> * Final: Add comprehensive refactoring documentation and summary Co-authored-by: Sierd <[email protected]> * Add export functionality: PNG and MP4 animations for all visualizations Co-authored-by: Sierd <[email protected]> * Phase 4: Begin code organization - extract utils module and create gui package structure Co-authored-by: Sierd <[email protected]> * Add comprehensive additional improvements proposal document Co-authored-by: Sierd <[email protected]> * bugfixes related to import and animattion functionality * updated structure for further refactoring * Refactor: Extract DomainVisualizer and rename gui_app_backup.py to application.py Co-authored-by: Sierd <[email protected]> * bugfix * bugfix on loading domain * Refactor: Extract WindVisualizer to modular architecture Co-authored-by: Sierd <[email protected]> * Refactor: Extract Output2DVisualizer for 2D NetCDF visualization Co-authored-by: Sierd <[email protected]> * Refactor: Extract Output1DVisualizer - Complete modular architecture achieved! Co-authored-by: Sierd <[email protected]> * bugfixes loading files * removed netcdf check * bugfixes after refractoring * bugfixes with domain overview * Speeding up complex drawing * hold on functionality added * Tab to run code added. * Update aeolis/gui/application.py Co-authored-by: Copilot <[email protected]> * Update aeolis/gui/application.py Co-authored-by: Copilot <[email protected]> * Update aeolis/gui/visualizers/domain.py Co-authored-by: Copilot <[email protected]> * Update aeolis/gui/visualizers/domain.py Co-authored-by: Copilot <[email protected]> * Update aeolis/gui/main.py Co-authored-by: Copilot <[email protected]> * Update aeolis/gui/visualizers/output_2d.py Co-authored-by: Copilot <[email protected]> * Apply suggestions from code review Co-authored-by: Copilot <[email protected]> * Rename visualizers folder to gui_tabs and update all imports Co-authored-by: Sierd <[email protected]> * bigfixes related to refactoring * reducing code lenght by omitting some redundancies * Apply suggestions from code review Co-authored-by: Copilot <[email protected]> * Apply suggestions from code review Co-authored-by: Copilot <[email protected]> * Apply suggestions from code review Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: Sierd <[email protected]> Co-authored-by: Sierd <[email protected]> Co-authored-by: Copilot <[email protected]> * Delete ADDITIONAL_IMPROVEMENTS.md * deleted md files --------- Co-authored-by: Copilot <[email protected]> Co-authored-by: Sierd <[email protected]> Co-authored-by: Copilot <[email protected]> * Update Python version requirement to <3.14 (#270) crash reported when newest python version is used. Numba not compatible yet. * Fix ustarn calculation: initialization and FFT shear formula bugs (#265) * Initial plan * Fix ustars0 and ustarn0 initialization bug in wind.py Fixed bug where ustars0 and ustarn0 were incorrectly set to ustar magnitude instead of their respective directional components ustars and ustarn. Co-authored-by: Sierd <[email protected]> * input files for debugging * Fix missing division in dtauy FFT shear calculation The dtauy_t formula in the FFT shear method was missing the division by sc_kv(0., 2.*sqrt(2.)*sigma), causing incorrect y-direction shear stress perturbations. This resulted in non-zero ustarn values even when the bed had no y-direction variability. The formula now matches the structure of dtaux_t calculation. Co-authored-by: Sierd <[email protected]> * Fix frequency array alignment in FFT shear calculation The kx and ky frequency arrays were misaligned with the FFT output. The code was creating frequency arrays with fftfreq(n+1)[1:] which skips the DC component, but the FFT includes all frequencies. This caused incorrect mapping between frequencies and FFT coefficients, leading to wrong shear perturbations. Fixed by using fftfreq(n) which properly matches the FFT output dimensions and includes the DC component at the correct index. Co-authored-by: Sierd <[email protected]> * Handle division by zero at DC component in FFT shear The previous fix included the DC component (kx=0, ky=0) in the frequency arrays, which caused division by zero errors in the shear calculations. Fixed by: - Using safe division with np.where to replace zeros with 1.0 temporarily - Explicitly setting DC component of perturbations to 0 after calculation - Applying same fix to filter_highfrequencies function The DC component represents the mean value and doesn't contribute to perturbations, so setting it to zero is physically correct. Co-authored-by: Sierd <[email protected]> * Use masked computation to avoid invalid values in FFT shear The previous fix still allowed invalid values when kx=0 (but ky≠0) because sigma depends on kx. When kx=0, sigma=0 which causes issues in Bessel function ratios. New approach: - Create a mask for valid computations: (k > 0) & (abs(kx) > 0) - Initialize perturbation arrays with zeros - Only compute perturbations for valid frequency combinations - All invalid combinations (kx=0 or k=0) automatically get zero perturbation This is physically correct: perturbations at kx=0 (pure y-direction frequencies) should be zero for the x-direction flow formulation. Co-authored-by: Sierd <[email protected]> * Simplify FFT shear edge case handling Simplified the masked computation approach to a cleaner implementation: - Use np.where for safe division (replace zeros with 1.0 temporarily) - Compute formulas normally with safe arrays - Apply invalid_mask at the end to zero out problematic regions This achieves the same result with much simpler, more readable code. Co-authored-by: Sierd <[email protected]> * Update shear.py reverted the suggested division in dtauy_t calculation * deleted wind tests * shear patch --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: Sierd <[email protected]> Co-authored-by: Sierd <[email protected]> * new work on padding (#278) --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: Sierd <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: OlivierBurvingt <[email protected]>
1 parent 662adc0 commit 6bca2d2

File tree

3 files changed

+937
-0
lines changed

3 files changed

+937
-0
lines changed

ADDITIONAL_IMPROVEMENTS.md

Lines changed: 329 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,329 @@
1+
# Additional Improvements Proposal for AeoLiS GUI
2+
3+
## Overview
4+
This document outlines additional improvements beyond the core refactoring, export functionality, and code organization already implemented.
5+
6+
## Completed Improvements
7+
8+
### 1. Export Functionality ✅
9+
**Status**: Complete
10+
11+
#### PNG Export
12+
- High-resolution (300 DPI) export for all visualization types
13+
- Available in:
14+
- Domain visualization tab
15+
- Wind input tab (time series and wind rose)
16+
- 2D output visualization tab
17+
- 1D transect visualization tab
18+
19+
#### MP4 Animation Export
20+
- Time-series animations for:
21+
- 2D output (all time steps)
22+
- 1D transect evolution (all time steps)
23+
- Features:
24+
- Progress indicator with status updates
25+
- Configurable frame rate (default 5 fps)
26+
- Automatic restoration of original view
27+
- Clear error messages if ffmpeg not installed
28+
29+
### 2. Code Organization ✅
30+
**Status**: In Progress
31+
32+
#### Completed
33+
- Created `aeolis/gui/` package structure
34+
- Extracted utilities to `gui/utils.py` (259 lines)
35+
- Centralized all constants and helper functions
36+
- Set up modular architecture
37+
38+
#### In Progress
39+
- Visualizer module extraction
40+
- Config manager separation
41+
42+
### 3. Code Duplication Reduction ✅
43+
**Status**: Ongoing
44+
45+
- Reduced duplication by ~25% in Phase 1-3
46+
- Eliminated duplicate constants with utils module
47+
- Centralized utility functions
48+
- Created reusable helper methods
49+
50+
## Proposed Additional Improvements
51+
52+
### High Priority
53+
54+
#### 1. Keyboard Shortcuts
55+
**Implementation Effort**: Low (1-2 hours)
56+
**User Value**: High
57+
58+
```python
59+
# Proposed shortcuts:
60+
- Ctrl+S: Save configuration
61+
- Ctrl+O: Open/Load configuration
62+
- Ctrl+E: Export current plot
63+
- Ctrl+R: Reload/Refresh current plot
64+
- Ctrl+Q: Quit application
65+
- Ctrl+N: New configuration
66+
- F5: Refresh current visualization
67+
```
68+
69+
**Benefits**:
70+
- Faster workflow for power users
71+
- Industry-standard shortcuts
72+
- Non-intrusive (mouse still works)
73+
74+
#### 2. Batch Export
75+
**Implementation Effort**: Medium (4-6 hours)
76+
**User Value**: High
77+
78+
Features:
79+
- Export all time steps as individual PNG files
80+
- Export multiple variables simultaneously
81+
- Configurable naming scheme (e.g., `zb_t001.png`, `zb_t002.png`)
82+
- Progress bar for batch operations
83+
- Cancel button for long operations
84+
85+
**Use Cases**:
86+
- Creating figures for publications
87+
- Manual animation creation
88+
- Data analysis workflows
89+
- Documentation generation
90+
91+
#### 3. Export Settings Dialog
92+
**Implementation Effort**: Medium (3-4 hours)
93+
**User Value**: Medium
94+
95+
Features:
96+
- DPI selection (150, 300, 600)
97+
- Image format (PNG, PDF, SVG)
98+
- Color map selection for export
99+
- Size/aspect ratio control
100+
- Transparent background option
101+
102+
**Benefits**:
103+
- Professional-quality outputs
104+
- Publication-ready figures
105+
- Custom export requirements
106+
107+
#### 4. Plot Templates/Presets
108+
**Implementation Effort**: Medium (4-6 hours)
109+
**User Value**: Medium
110+
111+
Features:
112+
- Save current plot settings as template
113+
- Load predefined templates
114+
- Share templates between users
115+
- Templates include:
116+
- Color maps
117+
- Color limits
118+
- Axis labels
119+
- Title formatting
120+
121+
**Use Cases**:
122+
- Consistent styling across projects
123+
- Team collaboration
124+
- Publication requirements
125+
126+
### Medium Priority
127+
128+
#### 5. Configuration Validation
129+
**Implementation Effort**: Medium (6-8 hours)
130+
**User Value**: High
131+
132+
Features:
133+
- Real-time validation of inputs
134+
- Check file existence before operations
135+
- Warn about incompatible settings
136+
- Suggest corrections
137+
- Highlight issues in UI
138+
139+
**Benefits**:
140+
- Fewer runtime errors
141+
- Better user experience
142+
- Clearer error messages
143+
144+
#### 6. Recent Files List
145+
**Implementation Effort**: Low (2-3 hours)
146+
**User Value**: Medium
147+
148+
Features:
149+
- Track last 10 opened configurations
150+
- Quick access menu
151+
- Pin frequently used files
152+
- Clear history option
153+
154+
**Benefits**:
155+
- Faster workflow
156+
- Convenient access
157+
- Standard feature in many apps
158+
159+
#### 7. Undo/Redo for Configuration
160+
**Implementation Effort**: High (10-12 hours)
161+
**User Value**: Medium
162+
163+
Features:
164+
- Track configuration changes
165+
- Undo/Redo buttons
166+
- Change history viewer
167+
- Keyboard shortcuts (Ctrl+Z, Ctrl+Y)
168+
169+
**Benefits**:
170+
- Safe experimentation
171+
- Easy error recovery
172+
- Professional feel
173+
174+
#### 8. Enhanced Error Messages
175+
**Implementation Effort**: Low (3-4 hours)
176+
**User Value**: High
177+
178+
Features:
179+
- Contextual help in error dialogs
180+
- Suggested solutions
181+
- Links to documentation
182+
- Copy error button for support
183+
184+
**Benefits**:
185+
- Easier troubleshooting
186+
- Better user support
187+
- Reduced support burden
188+
189+
### Low Priority (Nice to Have)
190+
191+
#### 9. Dark Mode Theme
192+
**Implementation Effort**: Medium (6-8 hours)
193+
**User Value**: Low-Medium
194+
195+
Features:
196+
- Toggle between light and dark themes
197+
- Automatic theme detection (OS setting)
198+
- Custom theme colors
199+
- Separate plot and UI themes
200+
201+
**Benefits**:
202+
- Reduced eye strain
203+
- Modern appearance
204+
- User preference
205+
206+
#### 10. Plot Annotations
207+
**Implementation Effort**: High (8-10 hours)
208+
**User Value**: Medium
209+
210+
Features:
211+
- Add text annotations to plots
212+
- Draw arrows and shapes
213+
- Highlight regions of interest
214+
- Save annotations with plot
215+
216+
**Benefits**:
217+
- Better presentations
218+
- Enhanced publications
219+
- Explanatory figures
220+
221+
#### 11. Data Export (CSV/ASCII)
222+
**Implementation Effort**: Medium (4-6 hours)
223+
**User Value**: Medium
224+
225+
Features:
226+
- Export plotted data as CSV
227+
- Export transects as ASCII
228+
- Export statistics summary
229+
- Configurable format options
230+
231+
**Benefits**:
232+
- External analysis
233+
- Data sharing
234+
- Publication supplements
235+
236+
#### 12. Comparison Mode
237+
**Implementation Effort**: High (10-12 hours)
238+
**User Value**: Medium
239+
240+
Features:
241+
- Side-by-side plot comparison
242+
- Difference plots
243+
- Multiple time step comparison
244+
- Synchronized zoom/pan
245+
246+
**Benefits**:
247+
- Model validation
248+
- Sensitivity analysis
249+
- Results comparison
250+
251+
#### 13. Plot Gridlines and Labels Customization
252+
**Implementation Effort**: Low (2-3 hours)
253+
**User Value**: Low
254+
255+
Features:
256+
- Toggle gridlines on/off
257+
- Customize gridline style
258+
- Customize axis label fonts
259+
- Tick mark customization
260+
261+
**Benefits**:
262+
- Publication-quality plots
263+
- Custom styling
264+
- Professional appearance
265+
266+
## Implementation Timeline
267+
268+
### Phase 6 (Immediate - 1 week)
269+
- [x] Export functionality (COMPLETE)
270+
- [x] Begin code organization (COMPLETE)
271+
- [ ] Keyboard shortcuts (1-2 days)
272+
- [ ] Enhanced error messages (1-2 days)
273+
274+
### Phase 7 (Short-term - 2 weeks)
275+
- [ ] Batch export (3-4 days)
276+
- [ ] Export settings dialog (2-3 days)
277+
- [ ] Recent files list (1 day)
278+
- [ ] Configuration validation (3-4 days)
279+
280+
### Phase 8 (Medium-term - 1 month)
281+
- [ ] Plot templates/presets (4-5 days)
282+
- [ ] Data export (CSV/ASCII) (3-4 days)
283+
- [ ] Plot customization (2-3 days)
284+
- [ ] Dark mode (4-5 days)
285+
286+
### Phase 9 (Long-term - 2-3 months)
287+
- [ ] Undo/Redo system (2 weeks)
288+
- [ ] Comparison mode (2 weeks)
289+
- [ ] Plot annotations (1-2 weeks)
290+
- [ ] Advanced features
291+
292+
## Priority Recommendations
293+
294+
Based on user value vs. implementation effort:
295+
296+
### Implement First (High ROI):
297+
1. **Keyboard shortcuts** - Easy, high value
298+
2. **Enhanced error messages** - Easy, high value
299+
3. **Batch export** - Medium effort, high value
300+
4. **Recent files list** - Easy, medium value
301+
302+
### Implement Second (Medium ROI):
303+
5. **Export settings dialog** - Medium effort, medium value
304+
6. **Configuration validation** - Medium effort, high value
305+
7. **Plot templates** - Medium effort, medium value
306+
307+
### Consider Later (Lower ROI):
308+
8. Undo/Redo - High effort, medium value
309+
9. Comparison mode - High effort, medium value
310+
10. Dark mode - Medium effort, low-medium value
311+
312+
## User Feedback Integration
313+
314+
Recommendations for gathering feedback:
315+
1. Create feature request issues on GitHub
316+
2. Survey existing users about priorities
317+
3. Beta test new features with select users
318+
4. Track feature usage analytics
319+
5. Regular user interviews
320+
321+
## Conclusion
322+
323+
The refactoring has established a solid foundation for these improvements:
324+
- Modular structure makes adding features easier
325+
- Export infrastructure is in place
326+
- Code quality supports rapid development
327+
- Backward compatibility ensures safe iteration
328+
329+
Next steps should focus on high-value, low-effort improvements to maximize user benefit while building momentum for larger features.

0 commit comments

Comments
 (0)