def test_transpose(self): m = Matrix(3, 2) m[0, 0] = 0 m[1, 0] = 2 m[2, 0] = 4 m[0, 1] = 1 m[1, 1] = 3 m[2, 1] = 5 mt = m.transpose() self.assertEqual(m[0, 0], 0) self.assertEqual(m[1, 0], 2) self.assertEqual(m[2, 0], 4) self.assertEqual(m[0, 1], 1) self.assertEqual(m[1, 1], 3) self.assertEqual(m[2, 1], 5) self.assertEqual(mt.rows(), m.columns()) self.assertEqual(mt.columns(), m.rows()) self.assertEqual(mt[0, 0], 0) self.assertEqual(mt[1, 0], 1) self.assertEqual(mt[0, 1], 2) self.assertEqual(mt[1, 1], 3) self.assertEqual(mt[0, 2], 4) self.assertEqual(mt[1, 2], 5) m.transpose(inplace=True) self.assertEqual(m, mt)
def test_matrix_copy_column(self): m = Matrix(10, 2) rng = RandomNumberGenerator(RngAlgTypeEnum.MZRAN, RngInitModeEnum.INIT_DEFAULT) m.randomInit(rng) with self.assertRaises(ValueError): m.copyColumn(0, 2) with self.assertRaises(ValueError): m.copyColumn(2, 0) with self.assertRaises(ValueError): m.copyColumn(-2, 0) m.copyColumn(1, 0) for i in range(m.rows()): self.assertEqual(m[i, 0], m[i, 1])
def calculatePrincipalComponent(self, fs, local_obsdata, truncation_or_ncomp=3): pc = Matrix(1, 1) pc_obs = Matrix(1, 1) singular_values = DoubleVector() state_map = fs.getStateMap() ens_mask = BoolVector(False, self.ert().getEnsembleSize()) state_map.selectMatching(ens_mask, RealizationStateEnum.STATE_HAS_DATA) active_list = ens_mask.createActiveList() if len(ens_mask) > 0: meas_data = MeasData(ens_mask) obs_data = ObsData() self.ert().getObservations().getObservationAndMeasureData( fs, local_obsdata, active_list, meas_data, obs_data) meas_data.deactivateZeroStdSamples(obs_data) active_size = len(obs_data) if active_size > 0: S = meas_data.createS() D_obs = obs_data.createDObs() truncation, ncomp = self.truncationOrNumberOfComponents( truncation_or_ncomp) obs_data.scale(S, D_obs=D_obs) EnkfLinalg.calculatePrincipalComponents( S, D_obs, truncation, ncomp, pc, pc_obs, singular_values) if self.__prior_singular_values is None: self.__prior_singular_values = singular_values else: for row in range(pc.rows()): factor = singular_values[ row] / self.__prior_singular_values[row] pc.scaleRow(row, factor) pc_obs.scaleRow(row, factor) return PcaPlotData(local_obsdata.getName(), pc, pc_obs, singular_values) return None
def test_matrix(self): m = Matrix(2, 3) self.assertEqual(m.rows(), 2) self.assertEqual(m.columns(), 3) self.assertEqual(m[(0, 0)], 0) m[(1, 1)] = 1.5 self.assertEqual(m[(1, 1)], 1.5) m[1, 0] = 5 self.assertEqual(m[1, 0], 5) with self.assertRaises(TypeError): m[5] = 5 with self.assertRaises(IndexError): m[2, 0] = 0 with self.assertRaises(IndexError): m[0, 3] = 0