https://github.com/GeoscienceAustralia/PyRate
Tip revision: 3fd3e706522d0f4675eb006a9e9a141931668675 authored by Sudipta Basak on 17 June 2021, 05:56:54 UTC
WIP orbital correction tests
WIP orbital correction tests
Tip revision: 3fd3e70
test_system.py
# coding: utf-8
# This Python module is part of the PyRate software package.
#
# Copyright 2020 Geoscience Australia
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
pyrate basic workflow for all supported input datasets
"""
import shutil
from subprocess import check_call
from pathlib import Path
import pytest
import numpy as np
import pyrate.constants as C
from pyrate.core.mpiops import MPI_INSTALLED
from pyrate.configuration import Configuration
from tests.common import MEXICO_CROPA_CONF, PY37GDAL302
@pytest.mark.mpi
@pytest.mark.slow
@pytest.mark.skipif(not PY37GDAL302, reason="Only run in one CI env")
def test_workflow(system_conf):
"""check the handlers are working as expected"""
check_call(f"mpirun -n 3 pyrate conv2tif -f {system_conf}", shell=True)
check_call(f"mpirun -n 3 pyrate prepifg -f {system_conf}", shell=True)
check_call(f"mpirun -n 3 pyrate correct -f {system_conf}", shell=True)
check_call(f"mpirun -n 3 pyrate timeseries -f {system_conf}", shell=True)
check_call(f"mpirun -n 3 pyrate stack -f {system_conf}", shell=True)
check_call(f"mpirun -n 3 pyrate merge -f {system_conf}", shell=True)
# assert logs generated in the outdir
params = Configuration(system_conf).__dict__
for stage in ['conv2tif', 'prepifg', 'correct', 'timeseries', 'stack', 'merge']:
log_file_name = 'pyrate.log.' + stage
files = list(Path(params[C.OUT_DIR]).glob(log_file_name + '.*'))
assert len(files) == 1
shutil.rmtree(params[C.OUT_DIR])
def test_single_workflow(gamma_or_mexicoa_conf):
if MPI_INSTALLED:
check_call(f"mpirun -n 4 pyrate workflow -f {gamma_or_mexicoa_conf}", shell=True)
else:
check_call(f"pyrate workflow -f {gamma_or_mexicoa_conf}", shell=True)
params = Configuration(gamma_or_mexicoa_conf).__dict__
log_file_name = 'pyrate.log.' + 'workflow'
files = list(Path(params[C.OUT_DIR]).glob(log_file_name + '.*'))
assert len(files) == 1
# ref pixel file generated
ref_pixel_file = params[C.REF_PIXEL_FILE]
assert Path(ref_pixel_file).exists()
ref_pixel = np.load(ref_pixel_file)
if gamma_or_mexicoa_conf == MEXICO_CROPA_CONF:
np.testing.assert_array_equal(ref_pixel, [42, 2])
for f in C.GEOMETRY_OUTPUT_TYPES:
assert Path(params[C.GEOMETRY_DIR]).joinpath(f + '.tif').exists()
else:
np.testing.assert_array_equal(ref_pixel, [38, 58])
# assert orbfit exists on disc
from pyrate.core import shared
looked_files = [p.sampled_path for p in params[C.INTERFEROGRAM_FILES]]
ifgs = [shared.Ifg(ifg) for ifg in looked_files]
orbfits_on_disc = [Path(params[C.OUT_DIR], C.ORB_ERROR_DIR, Path(ifg.data_path).stem + '_orbfit.npy')
for ifg in ifgs]
assert all(orbfits_on_disc)
shutil.rmtree(params[C.OUT_DIR])