diff --git a/README.md b/README.md index 5f714e3..cf16187 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ conda install --override-channels \ -c conda-forge \ snap13=13.0.0=3 -python -m pip install -e . +python -m pip install -e ".[io,viz]" ``` Verify the installation: diff --git a/sarpyx/pipelines/double_product/s1_insar.py b/sarpyx/pipelines/double_product/s1_insar.py index 5febc25..0ec0073 100644 --- a/sarpyx/pipelines/double_product/s1_insar.py +++ b/sarpyx/pipelines/double_product/s1_insar.py @@ -30,16 +30,69 @@ def steps( "first_burst_index": DEFAULT_FIRST_BURST, "last_burst_index": DEFAULT_LAST_BURST, } - orbit_params = {"orbit_type": orbit_type, "continue_on_fail": orbit_continue_on_fail} + orbit_params = { + "orbit_type": orbit_type, + "continue_on_fail": orbit_continue_on_fail, + } return [ - PipelineStep("TopsarSplit", {"source_ref": "master", "outdir": "master", **split_params}, "master_split"), - PipelineStep("ApplyOrbitFile", {"source_ref": "master_split", "outdir": "master", **orbit_params}, "master_orbit"), - PipelineStep("TopsarSplit", {"source_ref": "slave", "outdir": "slave", **split_params}, "slave_split"), - PipelineStep("ApplyOrbitFile", {"source_ref": "slave_split", "outdir": "slave", **orbit_params}, "slave_orbit"), - PipelineStep("TopsarCoregistration", {"master_ref": "master_orbit", "slave_ref": "slave_orbit", "outdir": "pair", "use_esd": use_esd, "dem_name": dem_name}, "coreg"), + PipelineStep( + "TopsarSplit", + {"source_ref": "master", "outdir": "master", **split_params}, + "master_split", + ), + PipelineStep( + "ApplyOrbitFile", + {"source_ref": "master_split", "outdir": "master", **orbit_params}, + "master_orbit", + ), + PipelineStep( + "TopsarSplit", + {"source_ref": "slave", "outdir": "slave", **split_params}, + "slave_split", + ), + PipelineStep( + "ApplyOrbitFile", + {"source_ref": "slave_split", "outdir": "slave", **orbit_params}, + "slave_orbit", + ), + PipelineStep( + "TopsarCoregistration", + { + "master_ref": "master_orbit", + "slave_ref": "slave_orbit", + "outdir": "pair", + "use_esd": use_esd, + "dem_name": dem_name, + }, + "coreg", + ), PipelineStep("Deburst", {"source_ref": "coreg", "outdir": "pair"}, "coreg_deb"), - PipelineStep("Interferogram", {"source_ref": "coreg_deb", "outdir": "pair", "subtract_flat_earth_phase": True}, "ifg"), - PipelineStep("TopoPhaseRemoval", {"source_ref": "ifg", "outdir": "pair", "dem_name": dem_name}, "topo"), - PipelineStep("TerrainCorrection", {"source_ref": "subset", "outdir": "pair", "dem_name": dem_name, "pixel_spacing_in_meter": pixel_spacing_in_meter, "map_projection": map_projection}, "terrain_corrected"), - PipelineStep("WorldSARTiling", {"intermediate_ref": "terrain_corrected"}, "tiling"), + PipelineStep( + "Interferogram", + { + "source_ref": "coreg_deb", + "outdir": "pair", + "subtract_flat_earth_phase": True, + }, + "ifg", + ), + PipelineStep( + "TopoPhaseRemoval", + {"source_ref": "ifg", "outdir": "pair", "dem_name": dem_name}, + "topo", + ), + PipelineStep( + "TerrainCorrection", + { + "source_ref": "topo", + "outdir": "pair", + "dem_name": dem_name, + "pixel_spacing_in_meter": pixel_spacing_in_meter, + "map_projection": map_projection, + }, + "terrain_corrected", + ), + PipelineStep( + "WorldSARTiling", {"intermediate_ref": "terrain_corrected"}, "tiling" + ), ] diff --git a/sarpyx/snapflow/engine.py b/sarpyx/snapflow/engine.py index b2eaf49..f80351d 100755 --- a/sarpyx/snapflow/engine.py +++ b/sarpyx/snapflow/engine.py @@ -368,7 +368,12 @@ def last_error_summary(self, max_chars: int = 800) -> str: if self.last_returncode is not None: parts.append(f'returncode={self.last_returncode}') if self.last_stderr: - parts.append(f'stderr={self.last_stderr.strip()}') + stderr = self.last_stderr.strip() + prefix = '; '.join(parts + ['stderr=']) + if len(prefix) + len(stderr) > max_chars: + marker = '[...truncated...] ' + stderr = marker + stderr[-(max_chars - len(prefix) - len(marker)):] + return (prefix + stderr)[:max_chars] if not parts and self.last_stdout: parts.append(f'stdout={self.last_stdout.strip()}') summary = '; '.join(parts) if parts else 'unknown error'