예제 #1
0
    def setUp(self):
        # fake some real ifg data by adding nans
        self.ml_ifgs = small5_mock_ifgs()
        # 2x data of default Small mock
        self.ifgs = small5_mock_ifgs(xs=6, ys=8)

        # use different sizes to differentiate axes results
        for ifg in self.ifgs:
            ifg.X_SIZE = 90.0
            ifg.Y_SIZE = 89.5

        # add common nodata to all ifgs
        for i in self.ifgs + self.ml_ifgs:
            i.phase_data[0, :] = nan
예제 #2
0
    def setUp(self):
        self.ifgs = small5_mock_ifgs()
        _add_nodata(self.ifgs)

        for ifg in self.ifgs:
            ifg.x_size = 90.0
            ifg.y_size = 89.5
            ifg.open()
예제 #3
0
    def setup_class(cls):
        cls.ifgs = small5_mock_ifgs()
        _add_nodata(cls.ifgs)

        for ifg in cls.ifgs:
            ifg.x_size = 90.0
            ifg.y_size = 89.5
            ifg.open()
예제 #4
0
    def test_get_all_epochs(self):
        # test function to extract all dates from sequence of ifgs
        ifgs = small5_mock_ifgs()
        for i in ifgs:
            i.nodata_value = 0
        dates = [date(2006, 8, 28), date(2006, 11, 6), date(2006, 12, 11),
                 date(2007, 1, 15), date(2007, 3, 26), date(2007, 9, 17)]

        self.assertEqual(dates, sorted(set(get_all_epochs(ifgs))))
예제 #5
0
 def test_invalid_degree_arg(self):
     # test failure of a few different args for 'degree'
     ifgs = small5_mock_ifgs()
     for d in range(-5, 1):
         self.assertRaises(OrbitalError, get_network_design_matrix, ifgs, d,
                           True)
     for d in range(4, 7):
         self.assertRaises(OrbitalError, get_network_design_matrix, ifgs, d,
                           True)
예제 #6
0
 def test_invalid_method(self):
     # test failure of a few different args for 'method'
     ifgs = small5_mock_ifgs()
     params = dict()
     params[cf.ORBITAL_FIT_DEGREE] = PLANAR
     params[cf.PARALLEL] = False
     for m in [None, 5, -1, -3, 45.8]:
         params[cf.ORBITAL_FIT_METHOD] = m
         self.assertRaises(OrbitalError, _orbital_correction, ifgs, params,
                           None)
예제 #7
0
    def setup_class(cls):
        # fake some real ifg data by adding nans
        cls.ifgs = small5_mock_ifgs()
        _add_nodata(cls.ifgs)

        # use different sizes to differentiate axes results
        for ifg in cls.ifgs:
            ifg.X_SIZE = 90.0
            ifg.Y_SIZE = 89.5

        cls.nc_tol = 1e-6
예제 #8
0
    def setUp(self):
        # fake some real ifg data by adding nans
        self.ifgs = small5_mock_ifgs()
        _add_nodata(self.ifgs)

        # use different sizes to differentiate axes results
        for ifg in self.ifgs:
            ifg.X_SIZE = 90.0
            ifg.Y_SIZE = 89.5

        self.nc_tol = 1e-6
예제 #9
0
    def setUp(self):
        self.ifgs = small5_mock_ifgs()
        _add_nodata(self.ifgs)
        self.nifgs = len(self.ifgs)
        self.ncells = self.ifgs[0].num_cells
        self.date_ids = get_date_ids(self.ifgs)
        self.nepochs = len(self.date_ids)
        assert self.nepochs == 6

        for ifg in self.ifgs:
            ifg.X_SIZE = 90.0
            ifg.Y_SIZE = 89.5
예제 #10
0
    def test_vcm_basic(self):
        ifgs = small5_mock_ifgs(5, 9)
        maxvar = [8.486, 12.925, 6.313, 0.788, 0.649]

        exp = array([[8.486, 5.2364, 0.0, 0.0, 0.0],
            [5.2364, 12.925,  4.5165,  1.5957,  0.0],
            [0.0, 4.5165, 6.313, 1.1152, 0.0],
            [0.0, 1.5957, 1.1152, 0.788, -0.3576],
            [0.0, 0.0, 0.0, -0.3576, 0.649]])

        act = get_vcmt(ifgs, maxvar)
        assert_array_almost_equal(act, exp, decimal=3)
예제 #11
0
    def test_mst_matrix_as_ifgs(self):
        # ensure only ifgs are returned, not individual MST graphs
        ifgs = small5_mock_ifgs()
        nifgs = len(ifgs)
        ys, xs = ifgs[0].shape
        result = mst._mst_matrix_ifgs_only(ifgs)

        for coord in product(range(ys), range(xs)):
            stack = (i.phase_data[coord] for i in self.ifgs)
            nc = nsum([isnan(n) for n in stack])
            self.assertTrue(len(result[coord]) <= (nifgs - nc))

            # HACK: type testing here is a bit grubby
            self.assertTrue(all([isinstance(i, MockIfg) for i in ifgs]))
예제 #12
0
    def test_multilooked_ifgs_arg(self):
        # check some bad args for network method with multilooked ifgs
        ifgs = small5_mock_ifgs()
        args = [[None, None, None, None, None], ["X"] * 5]
        params = dict()
        params[cf.ORBITAL_FIT_METHOD] = NETWORK_METHOD
        params[cf.PARALLEL] = False
        params[cf.ORBITAL_FIT_DEGREE] = PLANAR
        for a in args:
            args = (ifgs, params, a)
            self.assertRaises(OrbitalError, _orbital_correction, *args)

        # ensure failure if # ifgs doesn't match # mlooked ifgs
        args = (ifgs, params, ifgs[:4])
        self.assertRaises(OrbitalError, _orbital_correction, *args)
예제 #13
0
    def test_default_mst(self):
        # default MST from full set of Ifgs shouldn't drop any nodes
        ifgs = small5_mock_ifgs()
        dates = [(i.master, i.slave) for i in ifgs]

        res = mst.mst_from_ifgs(ifgs)[0]
        num_edges = len(res)
        self.assertEqual(num_edges, len(ifgs))

        # test edges, note node order can be reversed
        for edge in res:
            self.assertTrue(edge in dates or (edge[1], edge[0]) in dates)

        # check all nodes exist in this default tree
        mst_dates = set(res)
        mst_dates = list(sum(mst_dates, ()))
        for i in ifgs:
            for node in (i.master, i.slave):
                self.assertIn(node, mst_dates)
예제 #14
0
 def test_get_epoch_count(self):
     self.assertEqual(6, len(set(get_all_epochs(small5_mock_ifgs()))))
예제 #15
0
 def setup_class(cls):
     cls.ifgs = small5_mock_ifgs()
예제 #16
0
 def setup_method(cls):
     out_dir = tempfile.mkdtemp()
     cls.params = common.min_params(out_dir)
     cls.ifgs = small5_mock_ifgs()
예제 #17
0
 def setUp(self):
     self.ifgs = small5_mock_ifgs()