def evaluate(self): """ Compute the temporal covariance between nodes in the time_series. """ cls_attr_name = self.__class__.__name__ + ".time_series" self.time_series.trait["data"].log_debug(owner=cls_attr_name) data_shape = self.time_series.data.shape #(nodes, nodes, state-variables, modes) result_shape = (data_shape[2], data_shape[2], data_shape[1], data_shape[3]) LOG.info("result shape will be: %s" % str(result_shape)) result = numpy.zeros(result_shape) #One inter-node temporal covariance matrix for each state-var & mode. for mode in range(data_shape[3]): for var in range(data_shape[1]): data = self.time_series.data[:, var, :, mode] data = data - data.mean(axis=0)[numpy.newaxis, 0] result[:, :, var, mode] = numpy.cov(data.T) util.log_debug_array(LOG, result, "result") covariance = graph.Covariance(source=self.time_series, array_data=result, use_storage=False) return covariance
def test_covariance(self): data = numpy.random.random((10, 10)) ts = time_series.TimeSeries(data=data) dt = graph.Covariance(source=ts) self.assertEqual(dt.shape, (0, )) self.assertEqual(dt.array_data.shape, (0, )) summary = dt.summary_info self.assertEqual(summary['Graph type'], "Covariance") self.assertEqual(summary['Shape'], (0, ))
def test_covariance(self): data = numpy.random.random((10, 10)) ts = time_series.TimeSeries(data=data, title="test") dt = graph.Covariance(source=ts, array_data=data) assert dt.array_data.shape == (10, 10) summary = dt.summary_info() assert summary['Graph type'] == "Covariance" assert summary['Source'] == "test"