Changelogο
All notable changes to InSARLite will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.3.0] - 2024-12-10 - βVisualization Revolution + Optimizationsβο
π Added - Documentationο
Master Selection Methodologyο
Comprehensive Explanation: Added detailed documentation of average baseline ranking methodology in
masterselection.pyScientific Context: Clear explanation suitable for academic manuscripts and peer review
Key Concepts Documented:
What average baseline represents (mean distance from candidate to all other images)
Reference scene bias problem and how it arises
Mathematical elimination of bias through pairwise baseline differences
Physical interpretation as network centrality (center of mass analogy)
Real-World Example: Concrete numerical example showing bias elimination
β‘ Optimized - GMTSAR Installationο
Streamlined Installation Checkο
Projects File Optimization: Checks
~/.projs.jsonexistence before running subprocessImproves startup time from 10-50ms β 1-2ms for existing users
Only runs
which gmtsar.cshcheck when projects file missing (first-time users)
Installation Strategy Documentation: Added comprehensive module docstring explaining optimization approach
Smart First-Time Detection: Leverages project configuration file as installation indicator
GUI-Only Installation Modeο
Removed Console Installation: Eliminated
install_gmtsar_console()function (~100 lines)Simplified Availability Check: Only uses
which gmtsar.cshfor GMTSAR detectionRemoved directory-based checking (more reliable, portable)
Cleaner code with single source of truth
Dual Installation Modes: FULL (requires sudo) and MINIMAL (no sudo, shows dependency guide)
Enhanced User Guidance: Comprehensive dependency installation guide with 3 options:
Admin/sudo commands for full installation
Conda alternative for non-admin users
Manual installation instructions
π οΈ Changed - Configuration Flowο
Main Application Startupο
Optimized GMTSAR Check: Modified
_check_gmtsar_installation()to passconfig_manager.projects_fileSmarter Verification: Projects file serves dual purpose:
Stores project history (existing functionality)
Indicates GMTSAR installation status (new optimization)
Backward Compatible: First-time users still get full GMTSAR verification
π§ Technical Detailsο
Performance Metricsο
Startup Improvement: ~10-50ms subprocess call β ~1-2ms file existence check
Impact: More responsive application launch for returning users
Trade-off: None - first-time users still get complete verification
Code Qualityο
Removed: ~100 lines of console installation code
Simplified: Availability check reduced to single
whichcommandAdded: Comprehensive dependency guide shown only when configuration fails
Documentation: Module-level docstrings explain optimization strategy
[1.3.0] - 2025-11-25 - βVisualization Revolutionβο
π¨ Enhanced - Interactive Visualizationο
Interactive Time Series Visualizerο
Hover Functionality: Real-time coordinate and velocity tooltips on mouse hover
Intelligent Pixel Selection: Nearest-pixel detection with 0.001Β° search radius
Visual Feedback: Red pin markers show exact selected locations
Mode System: Clear separation between Normal (single-pixel) and Polygon modes
Simplified Click Behavior: Single-click selection with automatic pixel detection
True Vector Outputο
Publication-Quality Exports: PDF, SVG, EPS with fully editable text and elements
Matplotlib Configuration: Module-level settings ensure true vector output
Format Support: PNG (300 DPI), PDF, SVG, EPS, PS, CSV
Quality Verification: Text selectability, zoom testing, element separation
Polygon Multi-Pixel Analysisο
Drawing Interface: Click to add vertices, right-click to complete polygon
Processing Options:
Process All Pixels: Bulk export of individual time series
Process Average: Mean displacement with error bars
Comprehensive Export: All formats (PNG, PDF, SVG, EPS, PS, CSV) for each pixel
Progress Tracking: Visual progress bar for bulk operations
Auto-Clear: Streamlined workflow with automatic polygon cleanup
Context Mapsο
Automatic Generation: 3x zoomed context map for each time series
Location Markers: Red pin shows exact pixel location
Coordinate Labels: Latitude/longitude clearly marked
Velocity Overlay: Consistent colormap with main map
π§ Technical Improvementsο
Enhanced Validationο
Time Series Quality Scoring: Statistical quality assessment (0-1 range)
Outlier Detection: Automatic detection and filtering
Sufficient Data Check: Validation of minimum data points
Clean Data Return: Filtered, validated time series data
Coordinate Transformationο
Robust Conversion: Accurate pixel-to-geographic transformation
xarray Support: Handles 1D and 2D coordinate arrays
Edge Case Handling: Comprehensive error handling
Search Radius: Configurable nearest-pixel detection radius
Memory Managementο
Lazy Loading: Efficient displacement array handling
Memory Cleanup: Automatic cleanup after bulk operations
Large Dataset Support: Efficient handling of extensive polygon selections
π Bug Fixesο
Fixed: Polygon mode interference with normal click selection
Fixed: Vector file rasterization despite proper extensions
Fixed: Coordinate accuracy issues with pixel selection
Fixed: UI state inconsistencies between operations
Fixed: Mode isolation and state management
ποΈ Removedο
Pin Dragging: Simplified to click-only selection
Polygon Save/Load: Removed unnecessary complexity (draw fresh each time)
[1.2.6] - 2025-11-20ο
π Bug Fixesο
Critical Data Structure Fixο
Fixed: Alignment status data structure mismatch
Issue: Progress window showed 0/0 instead of 59/59, blocking workflow
Root Cause: Code expected
all_imageslist, but function returneddetailsdictSolution: Extract image date lists from
detailsfield correctlyImpact: Progress window now displays accurate completion (59/59 = 100%)
[1.2.5] - 2025-11-18ο
π§ Technical Improvementsο
Comprehensive Debugging Systemο
Added: Extensive test prints throughout alignment process
Tracking: Code version, status changes, network filtering, completion logic
Verification: Confirms correct code version is running (not cached)
Debugging Output: Step-by-step execution trace for troubleshooting
Code Cleanupο
Improved: Moved all imports to top of file
Removed: Redundant inline imports from multiple functions
Enhanced: Cleaner code structure and better maintainability
[1.2.4] - 2025-11-15ο
π Bug Fixesο
Progress Window Advancementο
Fixed: Progress window stuck at 59/60, wouldnβt advance to next step
Root Cause: Network filtering happened after progress reporting
Solution: Immediate network-aware status calculation before progress reporting
Impact: Workflow now properly advances when alignment complete
Technical: Updated status from
total_images=60tototal_images=59(connected only)
Automatic Completion Detectionο
Added: Status auto-updates to βcompleteβ when all missing images are unconnected
Behavior: Early exit when completion detected
Result: Accurate progress percentages (59/59 instead of 59/60)
[1.2.3] - 2025-11-12ο
π§ Technical Improvementsο
Subswath Detectionο
Fixed: Subswath detection to only report actual F1/F2/F3 folders
Prevented: Processing of non-existent subswath directories
Cleaned: UI parameters show only valid existing subswaths
Network-Aware Progressο
Enhanced: Progress calculations based only on connected images
Filtered: Unconnected images excluded from total counts
Accurate: True completion percentages (e.g., 59/59 instead of 59/60)
Enhanced Messagingο
Improved: Clear messaging about network connectivity status
Distinguished: Connected vs unconnected images in output
Example: β59/59 connected images aligned - All missing images are unconnectedβ
Validation and Safetyο
Added: Early exit checks for non-existent directories
Prevention: No wasted processing on impossible tasks
Logging: Clear skip messages for invalid subswaths
[1.2.2] - 2025-11-10ο
π‘οΈ Security & Data Safetyο
Critical Data Protectionο
ELIMINATED: All data loss vulnerabilities in alignment system
Risk Level: Changed from π΄ CRITICAL to π’ MINIMAL
Dangerous Function Removalο
DELETED:
backup_slc_files_for_realignment()functionReason: Was deleting original SLC files (primary data loss source)
Backup System Redesignο
OLD:
_backup_all_alignment_files()- deleted originals after backupNEW:
_backup_alignment_files_with_permission()- copy only, never deletePermission: User explicit consent required before any backup
Messaging: Clear statement that originals are preserved
User Controlο
Dialog: Shows exactly what will be backed up
Choice: User decides whether to backup
Safety: Explicitly states originals will be preserved
Trigger: Only when alignment method actually changes
Safety Guaranteesο
β 100% Data Safety: Original files NEVER deleted
β User Control: Permission required for all operations
β Clear Communication: User understands whatβs happening
β Intelligent Backup: Only when method changes detected
[1.2.1] - 2025-11-08ο
π Bug Fixesο
Data Loss Preventionο
Fixed: File deletion issue during alignment reruns
Changed:
shutil.move()toshutil.copy2()in backup operationsAdded: Verification before file removal
Enhanced: Comprehensive error handling
Network Connectivity Validationο
Added: Validation against
intf.inbefore alignmentImplemented: Parse interferogram network to extract connected images
Filtered:
data.into only include connected imagesLogging: Clear skip messages for unconnected images
Benefitsο
β No original file loss during backups
β Only connected images processed
β Smart partial alignment for missing files only
β Verification before all file operations
[1.2.0] - 2025-11-05ο
β¨ Addedο
Enhanced Logging Systemο
New:
process_logger()with UI parameter trackingFeature: Comprehensive logging of all user inputs
Format: Structured parameter output in log files
Location:
utils/utils.py
Configuration Managementο
Function:
save_config_to_json()for persistent settingsOrganization: Step-wise configuration structure
Timestamps: Automatic timestamp addition
Merging: Intelligent merge with existing configurations
File Pattern Detectionο
Advanced: SAR file naming pattern utilities
Parser:
parse_data_in_line()for metadata extractionGenerator:
generate_expected_filenames()for validationSupport: S1A/S1B naming conventions
Alignment Status Analysisο
Function:
check_alignment_completion_status()comprehensive checkerDetection: Complete/Partial/None status
Validation: Detailed file-by-file checking
Cross-reference: data.in entries vs existing files
Data Validationο
Pre-processing: Validation of
data.invs actual filesSmart Baseline: File checking before LED/PRM generation
Prevention: Stops processing errors from missing files
π§ Technical Improvementsο
Intelligent Alignmentο
Capability: Partial skip (only process missing images)
Backup: Comprehensive backup before realignment
Network-Aware: Processing based on connectivity
Backward Compatibilityο
Maintained: All existing functionality preserved
Graceful: Degradation if parameters missing
No Breaking: Changes to existing workflows
[1.0.0] - 2025-10-27ο
π First Major Releaseο
This is the first stable release of InSARLite, marking a significant milestone in making InSAR processing accessible through an intuitive GUI interface.
β¨ Addedο
Core Featuresο
Complete GUI Application: Full-featured Tkinter-based interface for InSAR processing
GMTSAR Integration: Seamless integration with GMTSAR workflow
Interactive Baseline Planning: Advanced matplotlib-based baseline network design
Automated Data Management: Sentinel-1 data search, download, and organization
Unified Authentication: Centralized EarthData authentication system
DEM Management: Automated DEM download and processing
Data Processingο
Sentinel-1 Support: Complete Sentinel-1 data processing pipeline
Orbit Processing: Automatic orbit file download and integration
Interferometry: Interferogram generation with coherence calculation
Phase Unwrapping: Advanced unwrapping with mask and reference point definition
Time Series Analysis: SBAS processing for deformation time series
Atmospheric Correction: GACOS atmospheric correction integration
User Interfaceο
Step-by-Step Workflow: Intuitive sequential processing steps
Interactive Map: Visual AOI selection with map integration
Progress Tracking: Real-time progress monitoring with detailed statistics
Configuration Management: Persistent settings and project management
Error Handling: Comprehensive error reporting and recovery
Visualizationο
Interactive Plotting: Advanced baseline network visualization
Result Viewing: Built-in interferogram and time series viewers
Export Capabilities: Multiple output formats (PNG, PDF, CSV, NetCDF)
Animation Tools: Time series animation generation
Advanced Featuresο
Parallel Processing: Multi-threaded download and processing
Flight Direction Detection: Automatic detection from manifest files
Subswath Selection: Flexible subswath processing options
Quality Control: Built-in validation and quality assessment
Pause/Resume: Pausable operations for long-running tasks
π§ Technical Infrastructureο
Architectureο
Modular Design: Clean separation of GUI, processing, and utilities
Plugin System: Extensible architecture for future enhancements
Configuration System: JSON-based configuration management
Logging System: Comprehensive logging for debugging and monitoring
Dependenciesο
Python 3.8+: Modern Python support with type hints
Scientific Stack: NumPy, SciPy, matplotlib, xarray integration
Geospatial Libraries: Rasterio, Shapely, Cartopy support
GUI Framework: Native Tkinter with custom enhancements
Performanceο
Memory Management: Efficient handling of large datasets
Parallel Downloads: Concurrent data acquisition
Chunked Processing: Memory-efficient processing of large files
Caching: Smart caching of expensive operations
π Documentationο
Comprehensive Documentationο
Installation Guide: Detailed installation instructions for all platforms
User Guide: Complete user documentation with tutorials
API Reference: Auto-generated API documentation
Developer Guide: Architecture and contribution guidelines
Educational Contentο
Quick Start Tutorial: Get up and running in minutes
Processing Workflows: Step-by-step processing guides
Best Practices: Recommendations for optimal results
Troubleshooting: Common issues and solutions
π‘οΈ Quality Assuranceο
Testingο
Unit Tests: Comprehensive test coverage for core functionality
Integration Tests: End-to-end workflow testing
GUI Tests: User interface testing and validation
Cross-Platform: Testing on Linux, macOS, and Windows
Code Qualityο
Type Hints: Full type annotation for better IDE support
Code Style: Consistent formatting with Black and flake8
Documentation: Comprehensive docstrings and comments
Error Handling: Robust error handling throughout
π Key Improvements Since Betaο
User Experienceο
Enhanced Interface: Improved layout and visual design
Better Error Messages: More informative error reporting
Progress Feedback: Detailed progress information
Configuration Persistence: Automatic saving of user preferences
Processing Enhancementsο
Improved Baseline Plotter: Advanced interactive plotting capabilities
Better Authentication: More reliable EarthData authentication
Enhanced Extraction: Improved ZIP file extraction with proper progress
Flight Direction Detection: Automatic detection from metadata
Bug Fixesο
Authentication Issues: Resolved EarthData authentication problems
Progress Tracking: Fixed progress reporting for file extraction
Memory Management: Improved memory usage for large datasets
Cross-Platform: Better compatibility across different operating systems
π Migration from Betaο
For users upgrading from beta versions:
Configuration: Settings will be automatically migrated
Projects: Existing projects remain compatible
Data: No changes to data organization or formats
Authentication: May need to re-authenticate with EarthData
π― Future Roadmapο
Version 1.1 (Planned)ο
Enhanced visualization capabilities
Additional atmospheric correction methods
Performance optimizations
Extended format support
Version 1.2 (Planned)ο
Machine learning integration
Advanced time series analysis
Real-time processing capabilities
Cloud processing support
π Acknowledgmentsο
Contributorsο
Muhammad Badar Munir - Lead Developer and Maintainer
Community Contributors - Bug reports, feature requests, and testing
Dependenciesο
GMTSAR team for the core processing engine
NASA and ESA for open satellite data
Python scientific computing community
Open source library maintainers
Supportο
Academic institutions providing computational resources
Research community feedback and validation
Beta testers and early adopters
π Statisticsο
Lines of Code: ~15,000 lines of Python
Test Coverage: >80% code coverage
Documentation: >100 pages of documentation
Dependencies: 25+ scientific Python packages
Platforms: Linux, macOS, Windows support
Previous Versionsο
[0.0.3] - 2024-12-XX (Beta)ο
Initial beta release
Basic GUI functionality
Core processing capabilities
Limited documentation
[0.0.2] - 2024-11-XX (Alpha)ο
Early alpha version
Command-line interface
Experimental features
[0.0.1] - 2024-10-XX (Development)ο
Initial development version
Proof of concept
Basic GMTSAR integration
Version Numberingο
InSARLite follows Semantic Versioning:
MAJOR version: Incompatible API changes
MINOR version: New functionality in a backward compatible manner
PATCH version: Backward compatible bug fixes
Release Typesο
Stable (x.y.z): Production-ready releases
Release Candidate (x.y.z-rc.n): Pre-release testing versions
Beta (x.y.z-beta.n): Feature-complete preview versions
Alpha (x.y.z-alpha.n): Early development versions
For the complete version history and detailed changes, see our GitHub Releases page.