示例#1
0
    def fetchPcaData(self, key, cases):
        """ @rtype: PlotData """
        if key.startswith("PCA:"):
            pca_name = key
        else:
            pca_name ="PCA:%s" % key

        pca_data_fetcher = PcaDataFetcher(self.ert())
        pca_plot_data = PlotData(pca_name)

        if DataTypeKeysModel().isCustomPcaKey(key):
            obs_keys = DataTypeKeysModel().getCustomPcaKeyObsKeys(key)
        else:
            obs_keys = pca_data_fetcher.getObsKeys(key)

        for case in cases:

            pca_data = pca_data_fetcher.fetchData(obs_keys, case)

            if pca_data["x"] is not None:

                if not pca_plot_data.hasObservationData():
                    pca_observation_plot_data = ObservationPlotData(pca_name)
                    pca_observation_plot_data.setObservationData(pca_data["x"], pca_data["obs_y"], [0.0 for x in pca_data["x"]], False)
                    pca_observation_plot_data.updateBoundaries(pca_data["min_x"], pca_data["max_x"], pca_data["min_y"], pca_data["max_y"])
                    pca_plot_data.setObservationData(pca_observation_plot_data)

                pca_ensemble_plot_data = EnsemblePlotData(key, case)
                pca_ensemble_plot_data.setEnsembleData(pca_data["x"], pca_data["y"], [], [])
                pca_ensemble_plot_data.updateBoundaries(pca_data["min_x"], pca_data["max_x"], pca_data["min_y"], pca_data["max_y"])
                pca_plot_data.addEnsembleData(pca_ensemble_plot_data)

        return pca_plot_data