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
示例#2
0
 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, ))
示例#3
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"