def build(): ts_index = time_series_factory() ts_h5 = h5_file_for_index(ts_index) ts = TimeSeries() ts_h5.load_into(ts) ts_h5.close() data_shape = ts.data.shape result_shape = (data_shape[2], data_shape[2], data_shape[1], data_shape[3]) result = numpy.zeros(result_shape) for mode in range(data_shape[3]): for var in range(data_shape[1]): data = ts_h5.data[:, var, :, mode] data = data - data.mean(axis=0)[numpy.newaxis, 0] result[:, :, var, mode] = numpy.cov(data.T) covariance = Covariance(source=ts, array_data=result) op = operation_factory() covariance_db = CovarianceIndex() covariance_db.fk_from_operation = op.id covariance_db.fill_from_has_traits(covariance) covariance_h5_path = h5.path_for_stored_index(covariance_db) with TimeSeriesH5(covariance_h5_path) as f: f.store(ts) session.add(covariance_db) session.commit() return covariance_db
def build(): time_series_index = time_series_index_factory() time_series = h5.load_from_index(time_series_index) data = numpy.random.random((10, 10)) covariance = graph.Covariance(source=time_series, array_data=data) op = operation_factory() covariance_index = CovarianceIndex() covariance_index.fk_from_operation = op.id covariance_index.fill_from_has_traits(covariance) covariance_h5_path = h5.path_for_stored_index(covariance_index) with CovarianceH5(covariance_h5_path) as f: f.store(covariance) covariance_index = dao.store_entity(covariance_index) return covariance_index
def launch(self, view_model): # type: (NodeCovarianceAdapterModel) -> [CovarianceIndex] """ Launch algorithm and build results. :param view_model: the ViewModel keeping the algorithm inputs :return: the `CovarianceIndex` built with the given time_series index as source """ # -------------------- Prepare result entities ---------------------## covariance_index = CovarianceIndex() covariance_h5_path = h5.path_for(self.storage_path, CovarianceH5, covariance_index.gid) covariance_h5 = CovarianceH5(covariance_h5_path) # ------------ NOTE: Assumes 4D, Simulator timeSeries -------------## node_slice = [ slice(self.input_shape[0]), None, slice(self.input_shape[2]), None ] ts_h5 = h5.h5_file_for_index(self.input_time_series_index) for mode in range(self.input_shape[3]): for var in range(self.input_shape[1]): small_ts = TimeSeries() node_slice[1] = slice(var, var + 1) node_slice[3] = slice(mode, mode + 1) small_ts.data = ts_h5.read_data_slice(tuple(node_slice)) partial_cov = self._compute_node_covariance(small_ts, ts_h5) covariance_h5.write_data_slice(partial_cov.array_data) ts_h5.close() partial_cov.source.gid = view_model.time_series partial_cov.gid = uuid.UUID(covariance_index.gid) covariance_index.fill_from_has_traits(partial_cov) self.fill_index_from_h5(covariance_index, covariance_h5) covariance_h5.store(partial_cov, scalars_only=True) covariance_h5.close() return covariance_index
def launch(self, view_model): # type: (NodeCovarianceAdapterModel) -> [CovarianceIndex] """ Launch algorithm and build results. :returns: the `CovarianceIndex` built with the given time_series index as source """ # Create an index for the computed covariance. covariance_index = CovarianceIndex() covariance_h5_path = h5.path_for(self.storage_path, CovarianceH5, covariance_index.gid) covariance_h5 = CovarianceH5(covariance_h5_path) # NOTE: Assumes 4D, Simulator timeSeries. node_slice = [ slice(self.input_shape[0]), None, slice(self.input_shape[2]), None ] with h5.h5_file_for_index(self.input_time_series_index) as ts_h5: for mode in range(self.input_shape[3]): for var in range(self.input_shape[1]): small_ts = TimeSeries() node_slice[1] = slice(var, var + 1) node_slice[3] = slice(mode, mode + 1) small_ts.data = ts_h5.read_data_slice(tuple(node_slice)) partial_cov = self._compute_node_covariance( small_ts, ts_h5) covariance_h5.write_data_slice(partial_cov.array_data) ts_array_metadata = covariance_h5.array_data.get_cached_metadata() covariance_index.source_gid = self.input_time_series_index.gid covariance_index.subtype = type(covariance_index).__name__ covariance_index.array_data_min = ts_array_metadata.min covariance_index.array_data_max = ts_array_metadata.max covariance_index.array_data_mean = ts_array_metadata.mean covariance_index.ndim = len(covariance_h5.array_data.shape) covariance_h5.gid.store(uuid.UUID(covariance_index.gid)) covariance_h5.source.store(view_model.time_series) covariance_h5.close() return covariance_index